]> git.sur5r.net Git - openldap/commitdiff
ITS#2807: version option support (-V[V]) based on patch submitted
authorKurt Zeilenga <kurt@openldap.org>
Tue, 2 Dec 2003 16:57:34 +0000 (16:57 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Tue, 2 Dec 2003 16:57:34 +0000 (16:57 +0000)
by <luca.scamoni@sys-net.it>.

servers/slapd/main.c
servers/slurpd/Makefile.in
servers/slurpd/args.c
servers/slurpd/globals.c
servers/slurpd/globals.h
servers/slurpd/main.c
servers/slurpd/proto-slurp.h

index 2304208e90a137ba7faf9f28b7346673ed0d0725..ce0d07dce72edb2c2f9f5c01cb241f5bb65d6946 100644 (file)
@@ -103,6 +103,7 @@ static int   cnvt_str2int( char *, STRDISP_P, int );
 #endif /* LOG_LOCAL4 */
 
 static int check_config = 0;
+static int version = 0;
 
 static void
 usage( char *name )
@@ -130,6 +131,7 @@ usage( char *name )
                "\t-t\t\tCheck configuration file and exit\n"
 #if defined(HAVE_SETUID) && defined(HAVE_SETGID)
                "\t-u user\t\tUser (id or name) to run as\n"
+               "\t-V\t\tprint version info (-VV only)\n"
 #endif
     );
 }
@@ -239,7 +241,7 @@ int main( int argc, char **argv )
 #endif
 
        while ( (i = getopt( argc, argv,
-                            "c:d:f:h:s:n:t"
+                            "c:d:f:h:s:n:t:V"
 #if LDAP_PF_INET6
                                "46"
 #endif
@@ -346,6 +348,9 @@ int main( int argc, char **argv )
                case 't':
                        check_config++;
                        break;
+               case 'V':
+                       version++;
+                       break;
 
                default:
                        usage( argv[0] );
@@ -364,11 +369,10 @@ int main( int argc, char **argv )
        ldif_debug = slap_debug;
 #endif
 
-#ifdef NEW_LOGGING
-       LDAP_LOG( SLAPD, INFO, "%s", Versionstr, 0, 0 );
-#else
-       Debug( LDAP_DEBUG_TRACE, "%s", Versionstr, 0, 0 );
-#endif
+       if ( version ) {
+               fprintf( stderr, "%s\n", Versionstr );
+               if ( version > 1 ) goto stop;
+       }
 
        if( serverName == NULL ) {
                if ( (serverName = strrchr( argv[0], *LDAP_DIRSEP )) == NULL ) {
@@ -384,6 +388,12 @@ int main( int argc, char **argv )
        openlog( serverName, OPENLOG_OPTIONS );
 #endif
 
+#ifdef NEW_LOGGING
+       LDAP_LOG( SLAPD, INFO, "%s", Versionstr, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_ANY, "%s", Versionstr, 0, 0 );
+#endif
+
        if( !check_config && slapd_daemon_init( urls ) != 0 ) {
                rc = 1;
                SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 16 );
index d505a436845d8fa68b1692045b4ffd74753d7abc..18e1087dcdcd638feedc21def67bdb0b4a318123 100644 (file)
@@ -51,7 +51,7 @@ sslurpd:      version.o
 
 version.c: Makefile
        @-$(RM) $@
-       $(MKVERSION) slurpd > $@
+       $(MKVERSION) -s -n Versionstr slurpd > $@
 
 version.o: version.c $(OBJS) $(SLURPD_L)
 
index b764001012afd666d5175bd590df3ac0b40ea7ab..380deeab19040980bcdf5ca296a2f2dc96b1175d 100644 (file)
@@ -80,7 +80,7 @@ doargs(
        g->myname = strdup( g->myname + 1 );
     }
 
-    while ( (i = getopt( argc, argv, "d:f:n: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 */
            g->no_detach = 1;
@@ -140,6 +140,9 @@ doargs(
            snprintf(g->slurpd_rdir, sz,
                        "%s" LDAP_DIRSEP "replica", optarg);
            } break;
+       case 'V':
+           (g->version)++;
+           break;
        default:
            usage( g->myname );
            return( -1 );
index f6a7b97afee8e2fa75a3fe4e6f16d9b9ec40e10f..1f7cba70880d82cf2dd19c74ea6801b890d4b3b9 100644 (file)
@@ -84,6 +84,7 @@ init_globals( void )
     g->myname = NULL;
     g->serverName = NULL;
     g->srpos = 0L;
+    g->version = 0;
     if ( St_init( &(g->st)) < 0 ) {
        fprintf( stderr, "Cannot initialize status data\n" );
        exit( EXIT_FAILURE );
index 8f6e4feb60434f5a0dd70aae9b286a8d1648fff9..1f9595f70b2b7def700fec9a6a933c075d126c0b 100644 (file)
@@ -81,6 +81,8 @@ typedef struct globals {
     /* Default name of kerberos srvtab file */
     char *default_srvtab;
 #endif /* LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND */
+    /* Non-zero if we shall print the version */
+    int version;
 } Globals;
 
 
index 5418ef79d105342ef05cfff0f7d93613350ade42..1e4a53ffcb2d322734d56b1477f043015a3e1301 100644 (file)
 #define        MAIN_RETURN(x)  return(x)
 #endif
 
+#ifndef HAVE_MKVERSION
+const char Versionstr[] =
+       OPENLDAP_PACKAGE " " OPENLDAP_VERSION " Standalone LDAP Replicator (slurpd)";
+#endif
+
 #ifdef HAVE_NT_SERVICE_MANAGER
 void WINAPI ServiceMain( DWORD argc, LPTSTR *argv )
 #else
@@ -139,6 +144,20 @@ int main( int argc, char **argv )
        goto stop;
     }
 
+    if ( sglob->version ) {
+               fprintf(stderr, "%s\n", Versionstr);
+               if (sglob->version > 1 ) {
+                       rc = 1;
+                       goto stop;
+               }
+    }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( SLURPD, INFO, "%s\n", Versionstr, 0, 0 );
+#else
+       Debug ( LDAP_DEBUG_ANY, "%s\n", Versionstr, 0, 0 );
+#endif
+    
     /*
      * Read slapd config file and initialize Re (per-replica) structs.
      */
index 70261951e46e1c15deda25b4ab6d55114259756a..fa01c987c1c0ee11a039028db97d6d2b98ae352c 100644 (file)
@@ -107,4 +107,7 @@ int tsleep  LDAP_P((time_t interval));
 void start_lwp_scheduler LDAP_P(( void ));
 #endif
 
+/*main.c */
+extern const char Versionstr[];
+
 #endif /* _PROTO_SLURP */