#include "slapcommon.h"
#include "lutil.h"
+#include "ldif.h"
tool_vars tool_globals;
static FILE *leakfile;
#endif
+static LDIFFP dummy;
+
static void
usage( int tool, const char *progname )
{
char *options = NULL;
fprintf( stderr,
- "usage: %s [-v] [-c] [-d debuglevel] [-f configfile]",
+ "usage: %s [-v] [-d debuglevel] [-f configfile] [-F configdir]",
progname );
switch( tool ) {
case SLAPACL:
- options = "\n\t[-U authcID | -D authcDN]"
- " -b DN -o <var>[=<val>]"
- "\n\t[attr[/access][:value]] [...]\n";
+ options = "\n\t[-U authcID | -D authcDN] [-X authzID | -o authzDN=<DN>]"
+ "\n\t-b DN -o <var>[=<val>] [-u] [attr[/access][:value]] [...]\n";
break;
case SLAPADD:
- options = "\n\t[-n databasenumber | -b suffix]\n"
+ options = " [-c]\n\t[-n databasenumber | -b suffix]\n"
"\t[-l ldiffile] [-q] [-u] [-w]\n";
break;
break;
case SLAPCAT:
- options = "\n\t[-n databasenumber | -b suffix]"
+ options = " [-c]\n\t[-n databasenumber | -b suffix]"
" [-l ldiffile] [-a filter]\n";
break;
case SLAPDN:
- options = " DN [...]\n";
+ options = "\n\t[-N | -P] DN [...]\n";
break;
case SLAPINDEX:
- options = "\n\t[-n databasenumber | -b suffix] [-q]\n";
+ options = " [-c]\n\t[-n databasenumber | -b suffix] [-q]\n";
break;
case SLAPTEST:
} else if ( strncasecmp( optarg, "sasl_ssf", len ) == 0 ) {
sasl_ssf = atoi( p );
+ } else if ( strncasecmp( optarg, "authzDN", len ) == 0 ) {
+ ber_str2bv( p, 0, 1, &authzDN );
+
} else {
return -1;
}
int argc, char **argv )
{
char *options;
- char *conffile = SLAPD_DEFAULT_CONFIGFILE;
- char *confdir = SLAPD_DEFAULT_CONFIGDIR;
+ char *conffile = NULL;
+ char *confdir = NULL;
struct berval base = BER_BVNULL;
char *filterstr = NULL;
char *subtree = NULL;
break;
case SLAPDN:
- options = "d:f:F:v";
+ options = "d:f:F:NPv";
mode |= SLAP_TOOL_READMAIN | SLAP_TOOL_READONLY;
break;
break;
case SLAPACL:
- options = "b:D:d:f:F:o:U:v";
+ options = "b:D:d:f:F:o:uU:vX:";
mode |= SLAP_TOOL_READMAIN | SLAP_TOOL_READONLY;
break;
ber_str2bv( optarg, 0, 0, &mech );
break;
+ case 'N':
+ if ( dn_mode && dn_mode != SLAP_TOOL_LDAPDN_NORMAL ) {
+ usage( tool, progname );
+ }
+ dn_mode = SLAP_TOOL_LDAPDN_NORMAL;
+ break;
+
case 'n': /* which config file db to index */
dbnum = atoi( optarg );
break;
}
break;
+ case 'P':
+ if ( dn_mode && dn_mode != SLAP_TOOL_LDAPDN_PRETTY ) {
+ usage( tool, progname );
+ }
+ dn_mode = SLAP_TOOL_LDAPDN_PRETTY;
+ break;
+
case 'q': /* turn on quick */
mode |= SLAP_TOOL_QUICK;
break;
ldap_syslog = 0;
if ( ldiffile == NULL ) {
- ldiffp = tool == SLAPCAT ? stdout : stdin;
+ dummy.fp = tool == SLAPCAT ? stdout : stdin;
+ ldiffp = &dummy;
- } else if ((ldiffp = fopen( ldiffile, tool == SLAPCAT ? "w" : "r" ))
+ } else if ((ldiffp = ldif_open( ldiffile, tool == SLAPCAT ? "w" : "r" ))
== NULL )
{
perror( ldiffile );
/* If the named base is a glue master, operate on the
* entire context
*/
- if (SLAP_GLUE_INSTANCE(be)) {
+ if ( SLAP_GLUE_INSTANCE( be ) ) {
nosubordinates = 1;
}
mal_leaktrace(1);
#endif
- if ( !dryrun && slap_startup( be ) ) {
-
+ if ( !dryrun && be && slap_startup( be ) ) {
switch ( tool ) {
case SLAPTEST:
fprintf( stderr, "slap_startup failed "
{
if ( !dryrun ) {
slap_shutdown( be );
+ slap_destroy();
}
- slap_destroy();
#ifdef SLAPD_MODULES
if ( slapMode == SLAP_SERVER_MODE ) {
/* always false. just pulls in necessary symbol references. */