1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
/* $OpenLDAP: pkg/ldap/libraries/libldap/free.c,v 1.12.6.4 2002/01/04 20:38:20 kurt Exp $ */
/*
* Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
* COPYING RESTRICTIONS APPLY, see COPYRIGHT file
*/
/* Portions
* Copyright (c) 1994 The Regents of the University of Michigan.
* All rights reserved.
*
* free.c - some free routines are included here to avoid having to
* link in lots of extra code when not using certain features
*/
#include "portable.h"
#include <stdio.h>
#include <ac/stdlib.h>
#include <ac/string.h>
#include <ac/time.h>
#include "ldap-int.h"
/*
* C-API deallocator
*/
void
ldap_memfree( void *p )
{
LDAP_FREE( p );
}
void
ldap_memvfree( void **v )
{
LDAP_VFREE( v );
}
void *
ldap_memalloc( ber_len_t s )
{
return LDAP_MALLOC( s );
}
void *
ldap_memcalloc( ber_len_t n, ber_len_t s )
{
return LDAP_CALLOC( n, s );
}
void *
ldap_memrealloc( void* p, ber_len_t s )
{
return LDAP_REALLOC( p, s );
}
char *
ldap_strdup( LDAP_CONST char *p )
{
return LDAP_STRDUP( p );
}
void
ldap_getfilter_free( LDAPFiltDesc *lfdp )
{
LDAPFiltList *flp, *nextflp;
LDAPFiltInfo *fip, *nextfip;
for ( flp = lfdp->lfd_filtlist; flp != NULL; flp = nextflp ) {
for ( fip = flp->lfl_ilist; fip != NULL; fip = nextfip ) {
nextfip = fip->lfi_next;
LDAP_FREE( fip->lfi_filter );
LDAP_FREE( fip->lfi_desc );
LDAP_FREE( fip );
}
nextflp = flp->lfl_next;
LDAP_FREE( flp->lfl_pattern );
LDAP_FREE( flp->lfl_delims );
LDAP_FREE( flp->lfl_tag );
LDAP_FREE( flp );
}
if ( lfdp->lfd_curvalcopy != NULL ) {
LDAP_FREE( lfdp->lfd_curvalcopy );
}
if ( lfdp->lfd_curvalwords != NULL ) {
LDAP_FREE( lfdp->lfd_curvalwords );
}
if ( lfdp->lfd_filtprefix != NULL ) {
LDAP_FREE( lfdp->lfd_filtprefix );
}
if ( lfdp->lfd_filtsuffix != NULL ) {
LDAP_FREE( lfdp->lfd_filtsuffix );
}
LDAP_FREE( lfdp );
}
/*
* free a null-terminated array of pointers to mod structures. the
* structures are freed, not the array itself, unless the freemods
* flag is set.
*/
void
ldap_mods_free( LDAPMod **mods, int freemods )
{
int i;
if ( mods == NULL )
return;
for ( i = 0; mods[i] != NULL; i++ ) {
if ( mods[i]->mod_op & LDAP_MOD_BVALUES ) {
if( mods[i]->mod_bvalues != NULL )
ber_bvecfree( mods[i]->mod_bvalues );
} else if( mods[i]->mod_values != NULL ) {
LDAP_VFREE( mods[i]->mod_values );
}
if ( mods[i]->mod_type != NULL ) {
LDAP_FREE( mods[i]->mod_type );
}
LDAP_FREE( (char *) mods[i] );
}
if ( freemods ) {
LDAP_FREE( (char *) mods );
}
}
|