]> git.sur5r.net Git - openldap/blobdiff - servers/slurpd/args.c
ITS#4210 don't setup indexing threads if no indexing is defined.
[openldap] / servers / slurpd / args.c
index b7147ab22f5afab1b3a943591b5dd1b08323bf8b..9d9a6baa2e3ac7edc4f5ab6fa380319a13dd76b5 100644 (file)
@@ -1,10 +1,18 @@
 /* $OpenLDAP$ */
-/*
- * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2005 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
  */
-/*
- * Copyright (c) 1996 Regents of the University of Michigan.
+/* Portions Copyright (c) 1996 Regents of the University of Michigan.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms are permitted
  * software without specific prior written permission. This software
  * is provided ``as is'' without express or implied warranty.
  */
+/* ACKNOWLEDGEMENTS:
+ * This work was originally developed by the University of Michigan
+ * (as part of U-MICH LDAP).
+ */
 
 /*
  * args.c - process command-line arguments, and set appropriate globals.
@@ -29,6 +41,7 @@
 #include <ac/unistd.h>
 
 #include <ldap.h>
+#include <lutil.h>
 
 #include "slurp.h"
 #include "globals.h"
@@ -44,6 +57,7 @@ usage( char *name )
 #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" );
 }
 
 
@@ -61,15 +75,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:or:t:" )) != EOF ) {
+    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
@@ -98,31 +109,46 @@ doargs(
                return( -1 );
            }
 #ifdef LDAP_DEBUG
-           ldap_debug |= atoi( optarg );
+           if ( lutil_atoi( &level, optarg ) != 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 */
+           if ( g->serverName ) free( g->serverName );
+           g->serverName = strdup( optarg );
+           break;
        case 'o':
            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;
+       case 'V':
+           (g->version)++;
+           break;
        default:
            usage( g->myname );
            return( -1 );