X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foidm.c;h=f8976077c0362f186c045d99e5cb1af482b1d913;hb=12d5c6bba210de4a03363567be1c19a37f8e806b;hp=b24df9ee1660505bd4a4ea1869843935e688d93d;hpb=6939c531700652491f4be4688c6a1f35a1ab8a18;p=openldap diff --git a/servers/slapd/oidm.c b/servers/slapd/oidm.c index b24df9ee16..f8976077c0 100644 --- a/servers/slapd/oidm.c +++ b/servers/slapd/oidm.c @@ -1,8 +1,17 @@ -/* schemaparse.c - routines to parse config file objectclass definitions */ +/* oidm.c - object identifier macro routines */ /* $OpenLDAP$ */ -/* - * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved. - * COPYING RESTRICTIONS APPLY, see COPYRIGHT file +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2003 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . */ #include "portable.h" @@ -15,7 +24,8 @@ #include "slap.h" -static OidMacro *om_list = NULL; +static LDAP_SLIST_HEAD(OidMacroList, slap_oid_macro) om_list + = LDAP_SLIST_HEAD_INITIALIZER(om_list); /* Replace an OID Macro invocation with its full numeric OID. * If the macro is used with "macroname:suffix" append ".suffix" @@ -31,7 +41,7 @@ oidm_find(char *oid) return oid; } - for (om = om_list; om; om=om->som_next) { + LDAP_SLIST_FOREACH( om, &om_list, som_next ) { char **names = om->som_names; if( names == NULL ) { @@ -71,13 +81,15 @@ oidm_find(char *oid) void oidm_destroy() { - OidMacro *om, *n; + OidMacro *om; + while( !LDAP_SLIST_EMPTY( &om_list )) { + om = LDAP_SLIST_FIRST( &om_list ); + LDAP_SLIST_REMOVE_HEAD( &om_list, som_next ); - for (om = om_list; om; om = n) { - n = om->som_next; ldap_charray_free(om->som_names); free(om->som_oid.bv_val); free(om); + } } @@ -86,8 +98,7 @@ parse_oidm( const char *fname, int lineno, int argc, - char **argv -) + char **argv ) { char *oid; OidMacro *om; @@ -118,6 +129,7 @@ usage: fprintf( stderr, "\tObjectIdentifier \n"); return 1; } + LDAP_SLIST_NEXT( om, som_next ) = NULL; om->som_names = NULL; ldap_charray_add( &om->som_names, argv[1] ); om->som_oid.bv_val = oidm_find( argv[2] ); @@ -133,8 +145,7 @@ usage: fprintf( stderr, "\tObjectIdentifier \n"); } om->som_oid.bv_len = strlen( om->som_oid.bv_val ); - om->som_next = om_list; - om_list = om; + LDAP_SLIST_INSERT_HEAD( &om_list, om, som_next ); return 0; }