]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/main.c
As an overlay, always return SLAP_CB_CONTINUE
[openldap] / servers / slapd / main.c
index 2fc052369b640d1a44e4c9b8223b97f07027689b..1d4f2aa427e7e0c0e99cec77ddb720a685bef701 100644 (file)
@@ -1,7 +1,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2009 The OpenLDAP Foundation.
+ * Copyright 1998-2011 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -99,6 +99,9 @@ const char Versionstr[] =
        OPENLDAP_PACKAGE " " OPENLDAP_VERSION " Standalone LDAP Server (slapd)";
 #endif
 
+extern OverlayInit slap_oinfo[];
+extern BackendInfo slap_binfo[];
+
 #define        CHECK_NONE      0x00
 #define        CHECK_CONFIG    0x01
 #define        CHECK_LOGLEVEL  0x02
@@ -340,7 +343,8 @@ usage( char *name )
 #if defined(HAVE_SETUID) && defined(HAVE_SETGID)
                "\t-u user\t\tUser (id or name) to run as\n"
 #endif
-               "\t-V\t\tprint version info (-VV only)\n"
+               "\t-V\t\tprint version info (-VV exit afterwards, -VVV print\n"
+               "\t\t\tinfo about static overlays and backends)\n"
     );
 }
 
@@ -439,13 +443,13 @@ int main( int argc, char **argv )
 
                newConfigFile = (char*)lutil_getRegParam( regService, "ConfigFile" );
                if ( newConfigFile != NULL ) {
-                       configfile = newConfigFile;
+                       configfile = ch_strdup(newConfigFile);
                        Debug ( LDAP_DEBUG_ANY, "new config file from registry is: %s\n", configfile, 0, 0 );
                }
 
                newConfigDir = (char*)lutil_getRegParam( regService, "ConfigDir" );
                if ( newConfigDir != NULL ) {
-                       configdir = newConfigDir;
+                       configdir = ch_strdup(newConfigDir);
                        Debug ( LDAP_DEBUG_ANY, "new config dir from registry is: %s\n", configdir, 0, 0 );
                }
        }
@@ -678,12 +682,30 @@ unhandled_option:;
                }
        }
 
+       if ( optind != argc )
+               goto unhandled_option;
+
        ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug);
        ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug);
        ldif_debug = slap_debug;
 
        if ( version ) {
                fprintf( stderr, "%s\n", Versionstr );
+               if ( version > 2 ) {
+                       if ( slap_oinfo[0].ov_type ) {
+                               fprintf( stderr, "Included static overlays:\n");
+                               for ( i= 0 ; slap_oinfo[i].ov_type; i++ ) {
+                                       fprintf( stderr, "    %s\n", slap_oinfo[i].ov_type );
+                               }
+                       }
+                       if ( slap_binfo[0].bi_type ) {
+                               fprintf( stderr, "Included static backends:\n");
+                               for ( i= 0 ; slap_binfo[i].bi_type; i++ ) {
+                                       fprintf( stderr, "    %s\n", slap_binfo[i].bi_type );
+                               }
+                       }
+               }
+
                if ( version > 1 ) goto stop;
        }