mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-05 13:40:08 +08:00
ITS#7256 Consolidate cleanup code at one location.
This commit is contained in:
parent
07c563b8a5
commit
d3a5ab824d
@ -135,7 +135,7 @@ slapmodify( int argc, char **argv )
|
||||
Entry *e_orig = NULL, *e = NULL;
|
||||
struct berval rbuf;
|
||||
LDIFRecord lr;
|
||||
struct berval ndn;
|
||||
struct berval ndn = BER_BVNULL;
|
||||
int n;
|
||||
int is_oc = 0;
|
||||
int local_rc;
|
||||
@ -191,12 +191,11 @@ slapmodify( int argc, char **argv )
|
||||
fprintf( stderr, "%s: request 0x%lx not supported (line=%lu)\n",
|
||||
progname, (unsigned long)lr.lr_op, lineno );
|
||||
rc = EXIT_FAILURE;
|
||||
if( continuemode ) continue;
|
||||
goto done;
|
||||
goto cleanup;
|
||||
|
||||
default:
|
||||
/* record skipped e.g. version: or comment or something we don't handle yet */
|
||||
continue;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
local_rc = dnNormalize( 0, NULL, NULL, &lr.lr_dn, &ndn, NULL );
|
||||
@ -204,8 +203,7 @@ slapmodify( int argc, char **argv )
|
||||
fprintf( stderr, "%s: DN=\"%s\" normalization failed (line=%lu)\n",
|
||||
progname, lr.lr_dn.bv_val, lineno );
|
||||
rc = EXIT_FAILURE;
|
||||
if( continuemode ) continue;
|
||||
break;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* make sure the DN is not empty */
|
||||
@ -233,10 +231,7 @@ slapmodify( int argc, char **argv )
|
||||
}
|
||||
fprintf( stderr, "\n" );
|
||||
rc = EXIT_FAILURE;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
if( continuemode ) continue;
|
||||
break;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* check backend */
|
||||
@ -267,10 +262,7 @@ slapmodify( int argc, char **argv )
|
||||
}
|
||||
fprintf( stderr, "\n" );
|
||||
rc = EXIT_FAILURE;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
if( continuemode ) continue;
|
||||
break;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
/* get id and/or entry */
|
||||
@ -297,9 +289,7 @@ slapmodify( int argc, char **argv )
|
||||
fprintf( stderr, "%s: no such entry \"%s\" in database (lineno=%d)\n",
|
||||
progname, ndn.bv_val, lineno );
|
||||
rc = EXIT_FAILURE;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
if( continuemode ) continue;
|
||||
goto done;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ( lr.lrop_mods ) {
|
||||
@ -316,13 +306,7 @@ slapmodify( int argc, char **argv )
|
||||
fprintf( stderr, "%s: slap_str2ad(\"%s\") failed for entry \"%s\" (%d: %s, lineno=%lu)\n",
|
||||
progname, mod->mod_type, lr.lr_dn.bv_val, local_rc, text, lineno );
|
||||
rc = EXIT_FAILURE;
|
||||
mod_err = 1;
|
||||
if( continuemode ) continue;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
entry_free( e );
|
||||
be_entry_release_w( op, e_orig );
|
||||
goto done;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
mods.sm_type = mods.sm_desc->ad_cname;
|
||||
@ -383,16 +367,10 @@ slapmodify( int argc, char **argv )
|
||||
progname, e->e_dn, pretty ? "prettify" : "validate",
|
||||
mods.sm_desc->ad_cname.bv_val, i );
|
||||
/* handle error */
|
||||
mod_err = 1;
|
||||
rc = EXIT_FAILURE;
|
||||
ber_bvarray_free( mods.sm_values );
|
||||
ber_bvarray_free( mods.sm_nvalues );
|
||||
if( continuemode ) continue;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
entry_free( e );
|
||||
be_entry_release_w( op, e_orig );
|
||||
goto done;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if ( !pretty ) {
|
||||
@ -410,16 +388,10 @@ slapmodify( int argc, char **argv )
|
||||
fprintf( stderr, "%s: DN=\"%s\": unable to normalize attr=%s value #%d\n",
|
||||
progname, e->e_dn, mods.sm_desc->ad_cname.bv_val, i );
|
||||
/* handle error */
|
||||
mod_err = 1;
|
||||
rc = EXIT_FAILURE;
|
||||
ber_bvarray_free( mods.sm_values );
|
||||
ber_bvarray_free( mods.sm_nvalues );
|
||||
if( continuemode ) continue;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
entry_free( e );
|
||||
be_entry_release_w( op, e_orig );
|
||||
goto done;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -459,23 +431,14 @@ slapmodify( int argc, char **argv )
|
||||
rc = EXIT_FAILURE;
|
||||
ber_bvarray_free( mods.sm_values );
|
||||
ber_bvarray_free( mods.sm_nvalues );
|
||||
if( continuemode ) continue;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
entry_free( e );
|
||||
be_entry_release_w( op, e_orig );
|
||||
goto done;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
rc = slap_tool_entry_check( progname, op, e, lineno, &text, textbuf, textlen );
|
||||
if ( rc != LDAP_SUCCESS ) {
|
||||
rc = EXIT_FAILURE;
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
ldap_ldif_record_done( &lr );
|
||||
if( continuemode ) continue;
|
||||
entry_free( e );
|
||||
break;
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
|
||||
@ -580,8 +543,6 @@ slapmodify( int argc, char **argv )
|
||||
}
|
||||
}
|
||||
|
||||
if ( mod_err ) break;
|
||||
|
||||
/* check schema, objectClass etc */
|
||||
|
||||
if ( !dryrun ) {
|
||||
@ -608,9 +569,7 @@ slapmodify( int argc, char **argv )
|
||||
"(line=%lu): %s\n", progname, request, e->e_dn,
|
||||
lineno, bvtext.bv_val );
|
||||
rc = EXIT_FAILURE;
|
||||
entry_free( e );
|
||||
if( continuemode ) continue;
|
||||
break;
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
sid = slap_tool_update_ctxcsn_check( progname, e );
|
||||
@ -624,13 +583,14 @@ slapmodify( int argc, char **argv )
|
||||
request, e->e_dn );
|
||||
}
|
||||
|
||||
cleanup:;
|
||||
ldap_ldif_record_done( &lr );
|
||||
SLAP_FREE( ndn.bv_val );
|
||||
if ( e ) entry_free( e );
|
||||
if ( e_orig ) be_entry_release_w( op, e_orig );
|
||||
if ( rc != LDAP_SUCCESS && !continuemode ) break;
|
||||
}
|
||||
|
||||
done:;
|
||||
if ( ldifrc < 0 )
|
||||
rc = EXIT_FAILURE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user