1 #pragma ident "%Z%%M% %I% %E% SMI"
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
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
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
34 static char copyright
[] = "@(#) Copyright (c) 1994 The Regents of the University of Michigan.\nAll rights reserved.\n";
41 ldap_getfilter_free( LDAPFiltDesc
*lfdp
)
43 LDAPFiltList
*flp
, *nextflp
;
44 LDAPFiltInfo
*fip
, *nextfip
;
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
);
57 nextflp
= flp
->lfl_next
;
58 NSLDAPI_FREE( flp
->lfl_pattern
);
59 NSLDAPI_FREE( flp
->lfl_delims
);
60 NSLDAPI_FREE( flp
->lfl_tag
);
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
);
82 * free a null-terminated array of pointers to mod structures. the
83 * structures are freed, not the array itself, unless the freemods
88 ldap_mods_free( LDAPMod
**mods
, int freemods
)
92 if ( !NSLDAPI_VALID_LDAPMOD_ARRAY( mods
)) {
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
] );
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.
121 ldap_memfree( void *s
)
130 * ldap_ber_free() is just a cover for ber_free()
131 * ber_free() checks for ber == NULL, so we don't bother.
135 ldap_ber_free( BerElement
*ber
, int freebuf
)
137 ber_free( ber
, freebuf
);