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
35 static char copyright
[] = "@(#) Copyright (c) 1994 The Regents of the University of Michigan.\nAll rights reserved.\n";
43 ldap_getfilter_free( LDAPFiltDesc
*lfdp
)
45 LDAPFiltList
*flp
, *nextflp
;
46 LDAPFiltInfo
*fip
, *nextfip
;
52 for ( flp
= lfdp
->lfd_filtlist
; flp
!= NULL
; flp
= nextflp
) {
53 for ( fip
= flp
->lfl_ilist
; fip
!= NULL
; fip
= nextfip
) {
54 nextfip
= fip
->lfi_next
;
55 NSLDAPI_FREE( fip
->lfi_filter
);
56 NSLDAPI_FREE( fip
->lfi_desc
);
59 nextflp
= flp
->lfl_next
;
60 NSLDAPI_FREE( flp
->lfl_pattern
);
61 NSLDAPI_FREE( flp
->lfl_delims
);
62 NSLDAPI_FREE( flp
->lfl_tag
);
66 if ( lfdp
->lfd_curvalcopy
!= NULL
) {
67 NSLDAPI_FREE( lfdp
->lfd_curvalcopy
);
69 if ( lfdp
->lfd_curvalwords
!= NULL
) {
70 NSLDAPI_FREE( lfdp
->lfd_curvalwords
);
72 if ( lfdp
->lfd_filtprefix
!= NULL
) {
73 NSLDAPI_FREE( lfdp
->lfd_filtprefix
);
75 if ( lfdp
->lfd_filtsuffix
!= NULL
) {
76 NSLDAPI_FREE( lfdp
->lfd_filtsuffix
);
84 * free a null-terminated array of pointers to mod structures. the
85 * structures are freed, not the array itself, unless the freemods
90 ldap_mods_free( LDAPMod
**mods
, int freemods
)
94 if ( !NSLDAPI_VALID_LDAPMOD_ARRAY( mods
)) {
98 for ( i
= 0; mods
[i
] != NULL
; i
++ ) {
99 if ( mods
[i
]->mod_op
& LDAP_MOD_BVALUES
) {
100 if ( mods
[i
]->mod_bvalues
!= NULL
) {
101 ber_bvecfree( mods
[i
]->mod_bvalues
);
103 } else if ( mods
[i
]->mod_values
!= NULL
) {
104 ldap_value_free( mods
[i
]->mod_values
);
106 if ( mods
[i
]->mod_type
!= NULL
) {
107 NSLDAPI_FREE( mods
[i
]->mod_type
);
109 NSLDAPI_FREE( (char *) mods
[i
] );
113 NSLDAPI_FREE( (char *) mods
);
118 * ldap_memfree() is needed to ensure that memory allocated by the C runtime
119 * assocated with libldap is freed by the same runtime code.
123 ldap_memfree( void *s
)
132 * ldap_ber_free() is just a cover for ber_free()
133 * ber_free() checks for ber == NULL, so we don't bother.
137 ldap_ber_free( BerElement
*ber
, int freebuf
)
139 ber_free( ber
, freebuf
);