mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-25 09:09:54 -05:00
Allow passing string arguments to arbitrary extended operation
This commit is contained in:
parent
88c3a5a5b6
commit
074b1fa409
1 changed files with 17 additions and 5 deletions
|
|
@ -42,7 +42,7 @@ void
|
|||
usage( void )
|
||||
{
|
||||
fprintf( stderr, _("Issue LDAP extended operations\n\n"));
|
||||
fprintf( stderr, _("usage: %s [options]\n"), prog);
|
||||
fprintf( stderr, _("usage: %s [options] [oid [data]]\n"), prog);
|
||||
tool_common_usage();
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
|
|
@ -183,7 +183,19 @@ main( int argc, char *argv[] )
|
|||
}
|
||||
|
||||
} else if ( tool_is_oid( argv[ 0 ] ) ) {
|
||||
rc = ldap_extended_operation( ld, argv[ 0 ], NULL, NULL, NULL, &id );
|
||||
struct berval reqdata;
|
||||
struct berval *reqdatap;
|
||||
|
||||
if ( argc > 2 ) {
|
||||
usage();
|
||||
} else if ( argc == 2 ) {
|
||||
reqdata.bv_val = argv[ 1 ];
|
||||
reqdata.bv_len = strlen( argv[ 1 ] );
|
||||
reqdatap = &reqdata;
|
||||
} else
|
||||
reqdatap = NULL;
|
||||
|
||||
rc = ldap_extended_operation( ld, argv[ 0 ], reqdatap, NULL, NULL, &id );
|
||||
if ( rc != LDAP_SUCCESS ) {
|
||||
tool_perror( "ldap_extended_operation", rc, NULL, NULL, NULL, NULL );
|
||||
rc = EXIT_FAILURE;
|
||||
|
|
@ -286,14 +298,14 @@ main( int argc, char *argv[] )
|
|||
goto skip;
|
||||
}
|
||||
|
||||
if ( ldif < 2 ) {
|
||||
if ( ldif < 2 && retoid != NULL ) {
|
||||
tool_write_ldif( ldif ? LDIF_PUT_COMMENT : LDIF_PUT_VALUE,
|
||||
"oid", retoid, retoid ? strlen(retoid) : 0 );
|
||||
"oid", retoid, strlen(retoid) );
|
||||
}
|
||||
|
||||
ber_memfree( retoid );
|
||||
|
||||
if( retdata ) {
|
||||
if( retdata != NULL ) {
|
||||
if ( ldif < 2 ) {
|
||||
tool_write_ldif( ldif ? LDIF_PUT_COMMENT : LDIF_PUT_BINARY,
|
||||
"data", retdata->bv_val, retdata->bv_len );
|
||||
|
|
|
|||
Loading…
Reference in a new issue