]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/getfilter.c
Avoid locale specific ctype routines.
[openldap] / libraries / libldap / getfilter.c
index c085d146ae06ce20b00772881fa06a89c3dcb0cb..c837631e6d65f3acd36ea3b4dfca7f73a62cc223 100644 (file)
@@ -1,5 +1,6 @@
+/* $OpenLDAP$ */
 /*
- * Copyright 1998-1999 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -12,9 +13,9 @@
 #include "portable.h"
 
 #include <stdio.h>
-#include <stdlib.h>
 
-#include <ac/ctype.h>
+#include <ac/stdlib.h>
+
 #include <ac/errno.h>
 #include <ac/regex.h>
 #include <ac/string.h>
@@ -82,7 +83,7 @@ ldap_init_getfilter( LDAP_CONST char *fname )
 
 
 LDAPFiltDesc *
-ldap_init_getfilter_buf( char *buf, long buflen )
+ldap_init_getfilter_buf( char *buf, ber_len_t buflen )
 {
     LDAPFiltDesc       *lfdp;
     LDAPFiltList       *flp, *nextflp;
@@ -100,7 +101,7 @@ ldap_init_getfilter_buf( char *buf, long buflen )
     fip = NULL;
     tag = NULL;
 
-    while ( buflen > 0 && ( tokcnt = next_line_tokens( &buf, &buflen, &tok ))
+    while ( buflen > 0 && ( tokcnt = ldap_int_next_line_tokens( &buf, &buflen, &tok ))
            > 0 ) {
 
        switch( tokcnt ) {
@@ -118,7 +119,7 @@ ldap_init_getfilter_buf( char *buf, long buflen )
                ldap_getfilter_free( lfdp );
                return( NULL );
            }
-           nextflp->lfl_tag = strdup( tag );
+           nextflp->lfl_tag = LDAP_STRDUP( tag );
            nextflp->lfl_pattern = tok[ 0 ];
            if ( (rc = regcomp( &re, nextflp->lfl_pattern, 0 )) != 0 ) {
 #ifdef LDAP_LIBUI
@@ -129,7 +130,7 @@ ldap_init_getfilter_buf( char *buf, long buflen )
                        nextflp->lfl_pattern, error );
                errno = EINVAL;
 #endif /* LDAP_LIBUI */
-               free_strarray( tok );
+               LDAP_VFREE( tok );
                return( NULL );
            }
                regfree(&re);
@@ -155,7 +156,7 @@ ldap_init_getfilter_buf( char *buf, long buflen )
                if (( nextfip = (LDAPFiltInfo *)LDAP_CALLOC( 1,
                        sizeof( LDAPFiltInfo ))) == NULL ) {
                    ldap_getfilter_free( lfdp );
-                   free_strarray( tok );
+                   LDAP_VFREE( tok );
                    return( NULL );
                }
                if ( fip == NULL ) {    /* first one */
@@ -175,7 +176,7 @@ ldap_init_getfilter_buf( char *buf, long buflen )
                    } else if ( strcasecmp( tok[ 2 ], "base" ) == 0 ) {
                        nextfip->lfi_scope = LDAP_SCOPE_BASE;
                    } else {
-                       free_strarray( tok );
+                       LDAP_VFREE( tok );
                        ldap_getfilter_free( lfdp );
                        errno = EINVAL;
                        return( NULL );
@@ -192,7 +193,7 @@ ldap_init_getfilter_buf( char *buf, long buflen )
            break;
 
        default:
-           free_strarray( tok );
+           LDAP_VFREE( tok );
            ldap_getfilter_free( lfdp );
            errno = EINVAL;
            return( NULL );
@@ -213,12 +214,12 @@ ldap_setfilteraffixes( LDAPFiltDesc *lfdp, LDAP_CONST char *prefix, LDAP_CONST c
     if ( lfdp->lfd_filtprefix != NULL ) {
        LDAP_FREE( lfdp->lfd_filtprefix );
     }
-    lfdp->lfd_filtprefix = ( prefix == NULL ) ? NULL : strdup( prefix );
+    lfdp->lfd_filtprefix = ( prefix == NULL ) ? NULL : LDAP_STRDUP( prefix );
 
     if ( lfdp->lfd_filtsuffix != NULL ) {
        LDAP_FREE( lfdp->lfd_filtsuffix );
     }
-    lfdp->lfd_filtsuffix = ( suffix == NULL ) ? NULL : strdup( suffix );
+    lfdp->lfd_filtsuffix = ( suffix == NULL ) ? NULL : LDAP_STRDUP( suffix );
 }
 
 
@@ -242,17 +243,17 @@ ldap_getfirstfilter(
 
        for ( flp = lfdp->lfd_filtlist; flp != NULL; flp = flp->lfl_next ) {
                /* compile tagpat, continue if we fail */
-               if (regcomp(&re, tagpat, 0) != 0)
+               if (regcomp(&re, tagpat, REG_EXTENDED|REG_NOSUB) != 0)
                        continue;
 
-               /* match tagpatern and tag, continue if we fail */
+               /* match tagpattern and tag, continue if we fail */
                rc = regexec(&re, flp->lfl_tag, 0, NULL, 0);
                regfree(&re);
                if (rc != 0)
                        continue;
 
                /* compile flp->ifl_pattern, continue if we fail */
-               if (regcomp(&re, flp->lfl_pattern, 0) != 0)
+               if (regcomp(&re, flp->lfl_pattern, REG_EXTENDED|REG_NOSUB) != 0)
                        continue;
 
                /* match ifl_pattern and lfd_curval, continue if we fail */
@@ -270,7 +271,7 @@ ldap_getfirstfilter(
        return( NULL );
     }
 
-    if (( lfdp->lfd_curvalcopy = strdup( value )) == NULL ) {
+    if (( lfdp->lfd_curvalcopy = LDAP_STRDUP( value )) == NULL ) {
        return( NULL );
     }
 
@@ -313,7 +314,7 @@ ldap_getnextfilter( LDAPFiltDesc *lfdp )
 void
 ldap_build_filter(
        char *filtbuf,
-       unsigned long buflen,
+       ber_len_t buflen,
        LDAP_CONST char *pattern,
        LDAP_CONST char *prefix,
        LDAP_CONST char *suffix,
@@ -345,12 +346,12 @@ ldap_build_filter(
            if ( *p == '%' ) {
                ++p;
                if ( *p == 'v' ) {
-                   if ( isdigit( (unsigned char) p[1] )) {
+                   if ( LDAP_DIGIT( (unsigned char) p[1] )) {
                        ++p;
                        wordnum = *p - '1';
                        if ( *(p+1) == '-' ) {
                            ++p;
-                           if ( isdigit( (unsigned char) p[1] )) {
+                           if ( LDAP_DIGIT( (unsigned char) p[1] )) {
                                ++p;
                                endwordnum = *p - '1';  /* e.g., "%v2-4" */
                                if ( endwordnum > wordcount - 1 ) {
@@ -397,15 +398,14 @@ ldap_build_filter(
                *f++ = *p;
            }
                
-           if ( (unsigned long) (f - filtbuf) > buflen ) {
+           if ( (size_t) (f - filtbuf) > buflen ) {
                /* sanity check */
                --f;
                break;
            }
        }
 
-       if ( suffix != NULL && (
-               (unsigned long) ( f - filtbuf ) < buflen ) )
+       if ( suffix != NULL && ( (size_t) (f - filtbuf) < buflen ) )
        {
            strcpy( f, suffix );
        } else {