]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-shell/search.c
Don't reeval expression
[openldap] / servers / slapd / back-shell / search.c
index 05de6df7af576b44794bd175af205bbf76b0b6ec..cc9e4dcca642dbec2775e3e4b9f22a43be7fd6a4 100644 (file)
@@ -1,5 +1,9 @@
 /* search.c - shell backend search function */
 /* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 
 #include "portable.h"
 
@@ -16,21 +20,21 @@ shell_back_search(
     Backend    *be,
     Connection *conn,
     Operation  *op,
-    char       *base,
-    char       *nbase,
+    struct berval *base,
+    struct berval *nbase,
     int                scope,
     int                deref,
     int                size,
     int                time,
     Filter     *filter,
-    char       *filterstr,
-    char       **attrs,
+    struct berval      *filterstr,
+    AttributeName      *attrs,
     int                attrsonly
 )
 {
        struct shellinfo        *si = (struct shellinfo *) be->be_private;
-       int                     i;
        FILE                    *rfp, *wfp;
+       AttributeName           *an;
 
        if ( si->si_search == NULL ) {
                send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM, NULL,
@@ -40,7 +44,7 @@ shell_back_search(
 
        if ( (op->o_private = (void *) forkandexec( si->si_search, &rfp, &wfp ))
            == (void *) -1 ) {
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, NULL,
+               send_ldap_result( conn, op, LDAP_OTHER, NULL,
                    "could not fork/exec", NULL, NULL );
                return( -1 );
        }
@@ -49,16 +53,16 @@ shell_back_search(
        fprintf( wfp, "SEARCH\n" );
        fprintf( wfp, "msgid: %ld\n", (long) op->o_msgid );
        print_suffixes( wfp, be );
-       fprintf( wfp, "base: %s\n", base );
+       fprintf( wfp, "base: %s\n", base->bv_val );
        fprintf( wfp, "scope: %d\n", scope );
        fprintf( wfp, "deref: %d\n", deref );
        fprintf( wfp, "sizelimit: %d\n", size );
        fprintf( wfp, "timelimit: %d\n", time );
-       fprintf( wfp, "filter: %s\n", filterstr );
+       fprintf( wfp, "filter: %s\n", filterstr->bv_val );
        fprintf( wfp, "attrsonly: %d\n", attrsonly ? 1 : 0 );
        fprintf( wfp, "attrs:%s", attrs == NULL ? " all" : "" );
-       for ( i = 0; attrs != NULL && attrs[i] != NULL; i++ ) {
-               fprintf( wfp, " %s", attrs[i] );
+       for ( an = attrs; an && an->an_name.bv_val; an++ ) {
+               fprintf( wfp, " %s", an->an_name.bv_val );
        }
        fprintf( wfp, "\n" );
        fclose( wfp );