dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / libldap5 / sources / ldap / common / free.c
blobab31aa6e2937da84a6d9d32f85ee31e9bccc2202
1 #pragma ident "%Z%%M% %I% %E% SMI"
3 /*
4 * The contents of this file are subject to the Netscape Public
5 * License Version 1.1 (the "License"); you may not use this file
6 * except in compliance with the License. You may obtain a copy of
7 * the License at http://www.mozilla.org/NPL/
9 * Software distributed under the License is distributed on an "AS
10 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
11 * implied. See the License for the specific language governing
12 * rights and limitations under the License.
14 * The Original Code is Mozilla Communicator client code, released
15 * March 31, 1998.
17 * The Initial Developer of the Original Code is Netscape
18 * Communications Corporation. Portions created by Netscape are
19 * Copyright (C) 1998-1999 Netscape Communications Corporation. All
20 * Rights Reserved.
22 * Contributor(s):
25 * Copyright (c) 1994 The Regents of the University of Michigan.
26 * All rights reserved.
29 * free.c - some free routines are included here to avoid having to
30 * link in lots of extra code when not using certain features
33 #if 0
34 static char copyright[] = "@(#) Copyright (c) 1994 The Regents of the University of Michigan.\nAll rights reserved.\n";
35 #endif
37 #include "ldap-int.h"
39 void
40 LDAP_CALL
41 ldap_getfilter_free( LDAPFiltDesc *lfdp )
43 LDAPFiltList *flp, *nextflp;
44 LDAPFiltInfo *fip, *nextfip;
46 if ( lfdp == NULL ) {
47 return;
50 for ( flp = lfdp->lfd_filtlist; flp != NULL; flp = nextflp ) {
51 for ( fip = flp->lfl_ilist; fip != NULL; fip = nextfip ) {
52 nextfip = fip->lfi_next;
53 NSLDAPI_FREE( fip->lfi_filter );
54 NSLDAPI_FREE( fip->lfi_desc );
55 NSLDAPI_FREE( fip );
57 nextflp = flp->lfl_next;
58 NSLDAPI_FREE( flp->lfl_pattern );
59 NSLDAPI_FREE( flp->lfl_delims );
60 NSLDAPI_FREE( flp->lfl_tag );
61 NSLDAPI_FREE( flp );
64 if ( lfdp->lfd_curvalcopy != NULL ) {
65 NSLDAPI_FREE( lfdp->lfd_curvalcopy );
67 if ( lfdp->lfd_curvalwords != NULL ) {
68 NSLDAPI_FREE( lfdp->lfd_curvalwords );
70 if ( lfdp->lfd_filtprefix != NULL ) {
71 NSLDAPI_FREE( lfdp->lfd_filtprefix );
73 if ( lfdp->lfd_filtsuffix != NULL ) {
74 NSLDAPI_FREE( lfdp->lfd_filtsuffix );
77 NSLDAPI_FREE( lfdp );
82 * free a null-terminated array of pointers to mod structures. the
83 * structures are freed, not the array itself, unless the freemods
84 * flag is set.
86 void
87 LDAP_CALL
88 ldap_mods_free( LDAPMod **mods, int freemods )
90 int i;
92 if ( !NSLDAPI_VALID_LDAPMOD_ARRAY( mods )) {
93 return;
96 for ( i = 0; mods[i] != NULL; i++ ) {
97 if ( mods[i]->mod_op & LDAP_MOD_BVALUES ) {
98 if ( mods[i]->mod_bvalues != NULL ) {
99 ber_bvecfree( mods[i]->mod_bvalues );
101 } else if ( mods[i]->mod_values != NULL ) {
102 ldap_value_free( mods[i]->mod_values );
104 if ( mods[i]->mod_type != NULL ) {
105 NSLDAPI_FREE( mods[i]->mod_type );
107 NSLDAPI_FREE( (char *) mods[i] );
110 if ( freemods )
111 NSLDAPI_FREE( (char *) mods );
116 * ldap_memfree() is needed to ensure that memory allocated by the C runtime
117 * assocated with libldap is freed by the same runtime code.
119 void
120 LDAP_CALL
121 ldap_memfree( void *s )
123 if ( s != NULL ) {
124 NSLDAPI_FREE( s );
130 * ldap_ber_free() is just a cover for ber_free()
131 * ber_free() checks for ber == NULL, so we don't bother.
133 void
134 LDAP_CALL
135 ldap_ber_free( BerElement *ber, int freebuf )
137 ber_free( ber, freebuf );