]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/charray.c
Merge remote branch 'origin/mdb.master'
[openldap] / libraries / libldap / charray.c
index b40e232f62c6afef4458d1777f4f706adbf83022..7e71b529a521e2d1fbc03fe577911d661a515ed0 100644 (file)
@@ -1,9 +1,18 @@
+/* charray.c - routines for dealing with char * arrays */
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2011 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
+ * <http://www.OpenLDAP.org/license.html>.
  */
-/* charray.c - routines for dealing with char * arrays */
 
 #include "portable.h"
 
@@ -17,7 +26,7 @@
 int
 ldap_charray_add(
     char       ***a,
-    char       *s
+    const char *s
 )
 {
        int     n;
@@ -120,18 +129,20 @@ ldap_charray_free( char **a )
 int
 ldap_charray_inlist(
     char       **a,
-    char       *s
+    const char *s
 )
 {
        int     i;
 
-       for ( i = 0; a[i] != NULL; i++ ) {
+       if( a == NULL ) return 0;
+
+       for ( i=0; a[i] != NULL; i++ ) {
                if ( strcasecmp( s, a[i] ) == 0 ) {
-                       return( 1 );
+                       return 1;
                }
        }
 
-       return( 0 );
+       return 0;
 }
 
 char **
@@ -180,10 +191,10 @@ ldap_str2charray( const char *str_in, const char *brkstr )
        }
 
        i = 1;
-       for ( s = str; *s; s++ ) {
-               if ( ldap_utf8_strchr( brkstr, s ) != NULL ) {
-                       i++;
-               }
+       for ( s = str; ; LDAP_UTF8_INCR(s) ) {
+               s = ldap_utf8_strpbrk( s, brkstr );
+               if ( !s ) break;
+               i++;
        }
 
        res = (char **) LDAP_MALLOC( (i + 1) * sizeof(char *) );