https://issues.shibboleth.net/jira/browse/SSPCPP-505
authorScott Cantor <cantor.2@osu.edu>
Mon, 29 Oct 2012 18:35:14 +0000 (18:35 +0000)
committerScott Cantor <cantor.2@osu.edu>
Mon, 29 Oct 2012 18:35:14 +0000 (18:35 +0000)
shibd/shibd.cpp
shibd/shibd_win32.cpp

index 36beace..c79e1dc 100644 (file)
@@ -110,9 +110,14 @@ int MyAllocHook(int nAllocType, void *pvData,
 
 int real_main(int preinit)
 {
-    SPConfig& conf=SPConfig::getConfig();
-    if (preinit) {
+    if (shar_version) {
+        if (preinit)
+            fprintf(stdout, PACKAGE_STRING"\n");
+        return 0;
+    }
 
+    SPConfig& conf = SPConfig::getConfig();
+    if (preinit) {
         // Initialize the SP library.
         conf.setFeatures(
             SPConfig::Listener |
index 57e29e5..ae8ff46 100644 (file)
@@ -38,6 +38,7 @@ extern const char* shar_schemadir;
 extern const char* shar_config;
 extern const char* shar_prefix;
 extern bool shar_checkonly;
+extern bool shar_version;
 
 // internal variables
 SERVICE_STATUS          ssStatus;       // current status of the service
@@ -122,7 +123,13 @@ int main(int argc, char *argv[])
         {
             i++;
             bConsole = TRUE;
-            shar_checkonly=true;
+            shar_checkonly = true;
+        }
+        else if (_stricmp( "version", argv[i]+1) == 0)
+        {
+            i++;
+            bConsole = TRUE;
+            shar_version = true;
         }
         else if (_stricmp( "config", argv[i]+1) == 0)
         {
@@ -177,6 +184,7 @@ int main(int argc, char *argv[])
         printf("%s -remove <name>    to remove the named service\n", argv[0]);
         printf("%s -console          to run as a console app for debugging\n", argv[0]);
         printf("%s -check            to run as a console app and check configuration\n", argv[0]);
+        printf("%s -version          to run as a console app and print the version\n", argv[0]);
         printf("\t-stdout <path> to redirect stdout stream\n");
         printf("\t-stderr <path> to redirect stderr stream\n");
         printf("\t-prefix <dir> to specify the installation directory\n");