Author: mturk
Date: Mon Mar 15 16:38:33 2010
New Revision: 923332

URL: http://svn.apache.org/viewvc?rev=923332&view=rev
Log:
Implement DAEMON-141 by adding //? option for displaying the procrun help with 
version

Modified:
    commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c
    commons/proper/daemon/trunk/src/native/nt/procrun/src/cmdline.c

Modified: 
commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c
URL: 
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c?rev=923332&r1=923331&r2=923332&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c 
(original)
+++ commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c 
Mon Mar 15 16:38:33 2010
@@ -74,6 +74,7 @@ static LPCWSTR _commands[] = {
     L"US",      /* 4 Update Service parameters */
     L"IS",      /* 5 Install Service */
     L"DS",      /* 6 Delete Service */
+    L"?",       /* 7 Help */
     NULL
 };
 
@@ -303,23 +304,27 @@ static BOOL redirectStdStreams(APX_STDWR
 }
 
 /* Debugging functions */
-static void printUsage(LPAPXCMDLINE lpCmdline)
+static void printUsage(LPAPXCMDLINE lpCmdline, BOOL isHelp)
 {
     int i = 0;
     fwprintf(stderr, L"Usage: %s //CMD//Servce [--options]\n",
              lpCmdline->szExecutable);
     fwprintf(stderr, L"  Commands:\n");
-    fwprintf(stderr, L"  //IS//ServiceName  Install Service\n");
-    fwprintf(stderr, L"  //US//ServiceName  Update Service parameters\n");
-    fwprintf(stderr, L"  //DS//ServiceName  Delete Service\n");
-    fwprintf(stderr, L"  //RS//ServiceName  Run Service\n");
-    fwprintf(stderr, L"  //SS//ServiceName  Stop Service\n");
-    fwprintf(stderr, L"  //TS//ServiceName  Run Service as console 
application\n");
+    if (isHelp)
+        fwprintf(stderr, L"  //?                  This page\n");        
+    fwprintf(stderr, L"  //IS[//ServiceName]  Install Service\n");
+    fwprintf(stderr, L"  //US[//ServiceName]  Update Service parameters\n");
+    fwprintf(stderr, L"  //DS[//ServiceName]  Delete Service\n");
+    fwprintf(stderr, L"  //RS[//ServiceName]  Run Service\n");
+    fwprintf(stderr, L"  //SS[//ServiceName]  Stop Service\n");
+    fwprintf(stderr, L"  //TS[//ServiceName]  Run Service as console 
application\n");
     fwprintf(stderr, L"  Options:\n");
     while (_options[i].szName) {
         fwprintf(stderr, L"  --%s\n", _options[i].szName);
         ++i;
     }
+    fwprintf(stderr, L"\nCommons Daemon Service Runner version %S\n", 
PRG_VERSION);    
+    fwprintf(stderr, L"Copyright (c) 2000-2010 The Apache Software 
Foundation.\n");
 }
 
 /* Display configuration parameters */
@@ -1425,10 +1430,13 @@ void __cdecl main(int argc, char **argv)
             if (!docmdDeleteService(lpCmdline))
                 rv = 8;
         break;
+        case 7: /* Help. Print version and exit */
+            printUsage(lpCmdline, TRUE);            
+        break;
         default:
             /* Unknown command option */
             apxLogWrite(APXLOG_MARK_ERROR "Unknown command line option");
-            printUsage(lpCmdline);
+            printUsage(lpCmdline, FALSE);
             rv = 99;
         break;
     }

Modified: commons/proper/daemon/trunk/src/native/nt/procrun/src/cmdline.c
URL: 
http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/nt/procrun/src/cmdline.c?rev=923332&r1=923331&r2=923332&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/nt/procrun/src/cmdline.c (original)
+++ commons/proper/daemon/trunk/src/native/nt/procrun/src/cmdline.c Mon Mar 15 
16:38:33 2010
@@ -102,34 +102,37 @@ LPAPXCMDLINE apxCmdlineParse(
             *p = L'\0';
         }
     }
-    if (lpszCommands && _st_sys_argc > 1 && lstrlenW(_st_sys_argvw[1]) > 5) {
-        if (_st_sys_argvw[1][0] == L'/' &&
-            _st_sys_argvw[1][1] == L'/' &&
-            _st_sys_argvw[1][5] == L'/') { /* allow max tree char command */
-            l = 2;
-            while (_st_sys_argvw[1][l] != L'/') {
-                cmd[l - 2] = _st_sys_argvw[1][l];
+    if (lpszCommands && _st_sys_argc > 1 && lstrlenW(_st_sys_argvw[1]) > 2) {
+        LPWSTR ca = _st_sys_argvw[1];
+        if (ca[0] == L'/' && ca[1] == L'/') {
+            l   = 0;
+            ca += 2;
+            while (*ca && *ca != L'/') {
+                cmd[l] = *ca;
                 if (l++ > 3)
                     break;
+                ca++;
             }
-            cmd[l - 2] = L'\0';
+            cmd[l] = L'\0';
             while (lpszCommands[i]) {
                 if (lstrcmpW(lpszCommands[i++], cmd) == 0) {
                     lpCmdline->dwCmdIndex = i;
-                    s = 2;
                     break;
                 }
             }
             if (lpCmdline->dwCmdIndex) {
-                _st_sys_argvw[1][l+1] = L'\0';
-                lpCmdline->szApplication = &(_st_sys_argvw[1][l+2]);
-                if (!lstrlenW(lpCmdline->szApplication))
+                while (*ca == '/')
+                    *(ca++) = L'\0';
+                if (*ca == '\0')
                     lpCmdline->szApplication = _st_sys_argvw[0];
+                else
+                    lpCmdline->szApplication = ca;
             }
             else {
-                apxLogWrite(APXLOG_MARK_ERROR "Unrecognized cmd option %s", 
cmd);
-                s = 2;
+                apxLogWrite(APXLOG_MARK_ERROR "Unrecognized cmd option %S",
+                            _st_sys_argvw[1]);
             }
+            s = 2;
         }
     }
     else {


Reply via email to