]> git.sur5r.net Git - openldap/blobdiff - libraries/libldap/getfilter.c
Added LDAP_LOG messages
[openldap] / libraries / libldap / getfilter.c
index c837631e6d65f3acd36ea3b4dfca7f73a62cc223..fcd27166bfe9c4960e78a8520e852d8cac5e3fde 100644 (file)
@@ -1,6 +1,6 @@
 /* $OpenLDAP$ */
 /*
- * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*  Portions
@@ -35,54 +35,7 @@ static int break_into_words LDAP_P((
 
 #define FILT_MAX_LINE_LEN      1024
 
-LDAPFiltDesc *
-ldap_init_getfilter( LDAP_CONST char *fname )
-{
-    FILE               *fp;
-    char               *buf;
-    long               rlen, len;
-    int                eof;
-    LDAPFiltDesc       *lfdp;
-
-    if (( fp = fopen( fname, "r" )) == NULL ) {
-       return( NULL );
-    }
-
-    if ( fseek( fp, 0L, SEEK_END ) != 0 ) {    /* move to end to get len */
-       fclose( fp );
-       return( NULL );
-    }
-
-    len = ftell( fp );
-
-    if ( fseek( fp, 0L, SEEK_SET ) != 0 ) {    /* back to start of file */
-       fclose( fp );
-       return( NULL );
-    }
-
-    if (( buf = LDAP_MALLOC( (size_t)len )) == NULL ) {
-       fclose( fp );
-       return( NULL );
-    }
-
-    rlen = fread( buf, 1, (size_t)len, fp );
-    eof = feof( fp );
-    fclose( fp );
-
-    if ( rlen != len && !eof ) {       /* error:  didn't get the whole file */
-       LDAP_FREE( buf );
-       return( NULL );
-    }
-
-
-    lfdp = ldap_init_getfilter_buf( buf, rlen );
-    LDAP_FREE( buf );
-
-    return( lfdp );
-}
-
-
-LDAPFiltDesc *
+static LDAPFiltDesc *
 ldap_init_getfilter_buf( char *buf, ber_len_t buflen )
 {
     LDAPFiltDesc       *lfdp;
@@ -122,14 +75,13 @@ ldap_init_getfilter_buf( char *buf, ber_len_t buflen )
            nextflp->lfl_tag = LDAP_STRDUP( tag );
            nextflp->lfl_pattern = tok[ 0 ];
            if ( (rc = regcomp( &re, nextflp->lfl_pattern, 0 )) != 0 ) {
-#ifdef LDAP_LIBUI
                char error[512];
                regerror(rc, &re, error, sizeof(error));
                ldap_getfilter_free( lfdp );
-               fprintf( stderr, "bad regular expression %s, %s\n",
-                       nextflp->lfl_pattern, error );
+               Debug( LDAP_DEBUG_ANY, "ldap_init_get_filter_buf: "
+                       "bad regular expression %s, %s\n",
+                       nextflp->lfl_pattern, error, 0 );
                errno = EINVAL;
-#endif /* LDAP_LIBUI */
                LDAP_VFREE( tok );
                return( NULL );
            }
@@ -207,21 +159,51 @@ ldap_init_getfilter_buf( char *buf, ber_len_t buflen )
     return( lfdp );
 }
 
-
-void
-ldap_setfilteraffixes( LDAPFiltDesc *lfdp, LDAP_CONST char *prefix, LDAP_CONST char *suffix )
+LDAPFiltDesc *
+ldap_init_getfilter( LDAP_CONST char *fname )
 {
-    if ( lfdp->lfd_filtprefix != NULL ) {
-       LDAP_FREE( lfdp->lfd_filtprefix );
+    FILE               *fp;
+    char               *buf;
+    long               rlen, len;
+    int                eof;
+    LDAPFiltDesc       *lfdp;
+
+    if (( fp = fopen( fname, "r" )) == NULL ) {
+       return( NULL );
     }
-    lfdp->lfd_filtprefix = ( prefix == NULL ) ? NULL : LDAP_STRDUP( prefix );
 
-    if ( lfdp->lfd_filtsuffix != NULL ) {
-       LDAP_FREE( lfdp->lfd_filtsuffix );
+    if ( fseek( fp, 0L, SEEK_END ) != 0 ) {    /* move to end to get len */
+       fclose( fp );
+       return( NULL );
+    }
+
+    len = ftell( fp );
+
+    if ( fseek( fp, 0L, SEEK_SET ) != 0 ) {    /* back to start of file */
+       fclose( fp );
+       return( NULL );
+    }
+
+    if (( buf = LDAP_MALLOC( (size_t)len )) == NULL ) {
+       fclose( fp );
+       return( NULL );
     }
-    lfdp->lfd_filtsuffix = ( suffix == NULL ) ? NULL : LDAP_STRDUP( suffix );
-}
 
+    rlen = fread( buf, 1, (size_t)len, fp );
+    eof = feof( fp );
+    fclose( fp );
+
+    if ( rlen != len && !eof ) {       /* error:  didn't get the whole file */
+       LDAP_FREE( buf );
+       return( NULL );
+    }
+
+
+    lfdp = ldap_init_getfilter_buf( buf, rlen );
+    LDAP_FREE( buf );
+
+    return( lfdp );
+}
 
 LDAPFiltInfo *
 ldap_getfirstfilter(
@@ -285,6 +267,16 @@ ldap_getfirstfilter(
     return( ldap_getnextfilter( lfdp ));
 }
 
+static void
+ldap_build_filter(
+       char *filtbuf,
+       ber_len_t buflen,
+       LDAP_CONST char *pattern,
+       LDAP_CONST char *prefix,
+       LDAP_CONST char *suffix,
+       LDAP_CONST char *attr,
+       LDAP_CONST char *value,
+       char **valwords );
 
 LDAPFiltInfo *
 ldap_getnextfilter( LDAPFiltDesc *lfdp )
@@ -310,8 +302,7 @@ ldap_getnextfilter( LDAPFiltDesc *lfdp )
     return( &lfdp->lfd_retfi );
 }
 
-
-void
+static void
 ldap_build_filter(
        char *filtbuf,
        ber_len_t buflen,
@@ -370,7 +361,7 @@ ldap_build_filter(
                                    *f++ = ' ';
                                }
                                slen = strlen( valwords[ i ] );
-                               SAFEMEMCPY( f, valwords[ i ], slen );
+                               AC_MEMCPY( f, valwords[ i ], slen );
                                f += slen;
                            }
                        }
@@ -379,17 +370,17 @@ ldap_build_filter(
                        if ( wordcount > 0 ) {
                            wordnum = wordcount - 1;
                            slen = strlen( valwords[ wordnum ] );
-                           SAFEMEMCPY( f, valwords[ wordnum ], slen );
+                           AC_MEMCPY( f, valwords[ wordnum ], slen );
                            f += slen;
                        }
                    } else if ( value != NULL ) {
                        slen = strlen( value );
-                       SAFEMEMCPY( f, value, slen );
+                       AC_MEMCPY( f, value, slen );
                        f += slen;
                    }
                } else if ( *p == 'a' && attr != NULL ) {
                    slen = strlen( attr );
-                   SAFEMEMCPY( f, attr, slen );
+                   AC_MEMCPY( f, attr, slen );
                    f += slen;
                } else {
                    *f++ = *p;
@@ -413,7 +404,6 @@ ldap_build_filter(
        }
 }
 
-
 static int
 break_into_words( /* LDAP_CONST */ char *str, LDAP_CONST char *delims, char ***wordsp )
 {