diff --git a/clients/tools/ldapdelete.c b/clients/tools/ldapdelete.c index 5095d9d424..b46e38791e 100644 --- a/clients/tools/ldapdelete.c +++ b/clients/tools/ldapdelete.c @@ -99,7 +99,8 @@ main( int argc, char **argv ) { char buf[ 4096 ]; FILE *fp; - int i, rc, authmethod, referrals, want_bindpw, version, debug, manageDSAit, noop, crit; + int i, rc, retval, authmethod, referrals, want_bindpw; + int version, debug, manageDSAit, noop, crit; char *pw_file; char *control, *cvalue; char *authzid = NULL; @@ -770,14 +771,17 @@ main( int argc, char **argv ) } } - rc = 0; + retval = rc = 0; if ( fp == NULL ) { for ( ; optind < argc; ++optind ) { rc = dodelete( ld, argv[ optind ] ); /* Stop on error and no -c option */ - if( rc != 0 && contoper == 0) break; + if( rc != 0 ) { + retval = rc; + if( contoper == 0 ) break; + } } } else { while ((rc == 0 || contoper) && fgets(buf, sizeof(buf), fp) != NULL) { @@ -785,13 +789,15 @@ main( int argc, char **argv ) if ( *buf != '\0' ) { rc = dodelete( ld, buf ); + if ( rc != 0 ) + retval = rc; } } } ldap_unbind( ld ); - return( rc ); + return( retval ); } diff --git a/clients/tools/ldapmodrdn.c b/clients/tools/ldapmodrdn.c index 6f09348f73..eeedfee48a 100644 --- a/clients/tools/ldapmodrdn.c +++ b/clients/tools/ldapmodrdn.c @@ -112,7 +112,8 @@ main(int argc, char **argv) { char *infile, *entrydn = NULL, *rdn = NULL, buf[ 4096 ]; FILE *fp; - int rc, i, remove, havedn, authmethod, version, want_bindpw, debug, manageDSAit, noop, crit; + int rc, retval, i, remove, havedn, authmethod, version; + int want_bindpw, debug, manageDSAit, noop, crit; int referrals; char *newSuperior=NULL; char *pw_file = NULL; @@ -805,9 +806,9 @@ main(int argc, char **argv) } } - rc = 0; + retval = rc = 0; if (havedn) - rc = domodrdn( ld, entrydn, rdn, newSuperior, remove ); + retval = domodrdn( ld, entrydn, rdn, newSuperior, remove ); else while ((rc == 0 || contoper) && fgets(buf, sizeof(buf), fp) != NULL) { if ( *buf != '\0' ) { /* blank lines optional, skip */ buf[ strlen( buf ) - 1 ] = '\0'; /* remove nl */ @@ -818,6 +819,8 @@ main(int argc, char **argv) return( EXIT_FAILURE ); } rc = domodrdn(ld, entrydn, rdn, newSuperior, remove ); + if ( rc != 0 ) + retval = rc; havedn = 0; } else if ( !havedn ) { /* don't have DN yet */ if (( entrydn = strdup( buf )) == NULL ) { @@ -831,8 +834,7 @@ main(int argc, char **argv) ldap_unbind( ld ); - /* UNREACHABLE */ - return( rc ); + return( retval ); } static int domodrdn(