X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=clients%2Ftools%2Fldapsearch.c;h=068acb3e1b5e30485409e7ef5dffaef49fd518a9;hb=8917b774f71562cdfaaddd7641889ab79ef95273;hp=64568a70d29ca3634aec6dad7efb679e4612b558;hpb=72e8a15068e1353c34dc9c115722843afbf4eea8;p=openldap diff --git a/clients/tools/ldapsearch.c b/clients/tools/ldapsearch.c index 64568a70d2..068acb3e1b 100644 --- a/clients/tools/ldapsearch.c +++ b/clients/tools/ldapsearch.c @@ -1376,7 +1376,7 @@ static int dosearch( int sizelimit ) { char *filter; - int rc; + int rc, rc2 = LDAP_OTHER; int nresponses; int nentries; int nreferences; @@ -1439,8 +1439,7 @@ static int dosearch( } if( rc != LDAP_SUCCESS ) { - fprintf( stderr, _("%s: ldap_search_ext: %s (%d)\n"), - prog, ldap_err2string( rc ), rc ); + tool_perror( "ldap_search_ext", rc, NULL, NULL, NULL, NULL ); return( rc ); } @@ -1459,9 +1458,8 @@ static int dosearch( sortattr ? LDAP_MSG_ALL : LDAP_MSG_ONE, tvp, &res )) > 0 ) { - rc = tool_check_abandon( ld, msgid ); - if ( rc ) { - return rc; + if ( tool_check_abandon( ld, msgid ) ) { + return -1; } if( sortattr ) { @@ -1509,7 +1507,7 @@ static int dosearch( /* pagedResults stuff is dealt with * in tool_print_ctrls(), called by * print_results(). */ - rc = print_result( ld, msg, 1 ); + rc2 = print_result( ld, msg, 1 ); if ( ldapsync == LDAP_SYNC_REFRESH_AND_PERSIST ) { break; } @@ -1553,13 +1551,8 @@ static int dosearch( } done: - if ( tvp == NULL && rc == 0 ) { - ldap_get_option( ld, LDAP_OPT_RESULT_CODE, (void *)&rc ); - } - - if ( rc != 0 ) { - tool_perror( "ldap_result", rc, NULL, NULL, NULL, NULL ); - return( rc ); + if ( tvp == NULL && rc != LDAP_RES_SEARCH_RESULT ) { + ldap_get_option( ld, LDAP_OPT_RESULT_CODE, (void *)&rc2 ); } ldap_msgfree( res ); @@ -1593,7 +1586,11 @@ done: if( nreferences ) printf( _("# numReferences: %d\n"), nreferences ); } - return( rc ); + if ( rc != LDAP_RES_SEARCH_RESULT ) { + tool_perror( "ldap_result", rc2, NULL, NULL, NULL, NULL ); + } + + return( rc2 ); } /* This is the proposed new way of doing things.