int sizelimit )
{
char *filter;
- int rc;
+ int rc, rc2 = LDAP_OTHER;
int nresponses;
int nentries;
int nreferences;
}
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 );
}
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 ) {
/* 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;
}
}
done:
- if ( tvp == NULL && rc == 0 ) {
- ldap_get_option( ld, LDAP_OPT_RESULT_CODE, (void *)&rc );
- }
-
- switch ( rc ) {
- case LDAP_SUCCESS:
- case LDAP_REFERRAL:
- break;
-
- default:
- 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 );
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.