]> git.sur5r.net Git - openldap/blobdiff - servers/slurpd/args.c
Listener commit broke test048, skip listener check on Hidden DBs
[openldap] / servers / slurpd / args.c
index fc6ccc2493b8627e3d622c3fd525a9a894fc4eec..c5685817efc9587dac665a5ad150da4c991c5d40 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2004 The OpenLDAP Foundation.
+ * Copyright 1998-2007 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -41,6 +41,7 @@
 #include <ac/unistd.h>
 
 #include <ldap.h>
+#include <lutil.h>
 
 #include "slurp.h"
 #include "globals.h"
@@ -51,11 +52,7 @@ usage( char *name )
 {
     fprintf( stderr, "usage: %s\t[-d debug-level] [-s syslog-level]\n", name );
     fprintf( stderr, "\t\t[-f slapd-config-file] [-r replication-log-file]\n" );
-#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
-    fprintf( stderr, "\t\t[-t tmp-dir] [-o] [-k srvtab-file]\n" );
-#else /* LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND */
     fprintf( stderr, "\t\t[-t tmp-dir] [-o]\n" );
-#endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND */
     fprintf( stderr, "\t\t[-n service-name]\n" );
 }
 
@@ -74,15 +71,12 @@ doargs(
     int                i;
     int                rflag = 0;
 
-    if ( (g->myname = strrchr( argv[0], LDAP_DIRSEP[0] )) == NULL ) {
-       g->myname = strdup( argv[0] );
-    } else {
-       g->myname = strdup( g->myname + 1 );
-    }
+    g->myname = strdup( lutil_progname( "slurpd", argc, argv ));
 
     while ( (i = getopt( argc, argv, "d:f:n:or:t:V" )) != EOF ) {
        switch ( i ) {
-       case 'd':       /* set debug level and 'do not detach' flag */
+       case 'd': {     /* set debug level and 'do not detach' flag */
+           int level;
            g->no_detach = 1;
            if ( optarg[0] == '?' ) {
 #ifdef LDAP_DEBUG
@@ -111,15 +105,21 @@ doargs(
                return( -1 );
            }
 #ifdef LDAP_DEBUG
-           ldap_debug |= atoi( optarg );
+           if ( lutil_atoix( &level, optarg, 0 ) != 0 ) {
+               fprintf( stderr, "unable to parse debug flag \"%s\".\n", optarg );
+               usage( g->myname );
+               return( -1 );
+           }
+           ldap_debug |= level;
 #else /* !LDAP_DEBUG */
-           if ( atoi( optarg ) != 0 )
+           if ( lutil_atoi( &level, optarg ) != 0 || level != 0 )
                /* can't enable debugging - not built with debug code */
                fputs( "must compile with LDAP_DEBUG for debugging\n",
                       stderr );
 #endif /* LDAP_DEBUG */
-           break;
+           break;
        case 'f':       /* slapd config file */
+           LUTIL_SLASHPATH( optarg );
            g->slapd_configfile = strdup( optarg );
            break;
        case 'n':       /* NT service name */
@@ -130,13 +130,15 @@ doargs(
            g->one_shot_mode = 1;
            break;
        case 'r':       /* slapd replog file */
+           LUTIL_SLASHPATH( optarg );
                snprintf( g->slapd_replogfile, sizeof g->slapd_replogfile,
                        "%s", optarg );
            rflag++;
            break;
        case 't': {     /* dir to use for our copies of replogs */
                size_t sz;
-           g->slurpd_rdir = (char *)malloc (sz = (strlen(optarg) + sizeof("/replica")));
+           LUTIL_SLASHPATH( optarg );
+           g->slurpd_rdir = (char *)malloc (sz = (strlen(optarg) + sizeof(LDAP_DIRSEP "replica")));
            snprintf(g->slurpd_rdir, sz,
                        "%s" LDAP_DIRSEP "replica", optarg);
            } break;