You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2011/11/05 09:41:00 UTC

svn commit: r1197900 - in /commons/proper/daemon/trunk/src/native/windows: apps/prunmgr/prunmgr.c apps/prunsrv/prunsrv.c include/cmdline.h src/cmdline.c

Author: mturk
Date: Sat Nov  5 08:40:59 2011
New Revision: 1197900

URL: http://svn.apache.org/viewvc?rev=1197900&view=rev
Log:
Instead awkward procxxx.exe //CMD[//ServiceName ..., allow procxx.exe CMD ServiceName ...

Modified:
    commons/proper/daemon/trunk/src/native/windows/apps/prunmgr/prunmgr.c
    commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c
    commons/proper/daemon/trunk/src/native/windows/include/cmdline.h
    commons/proper/daemon/trunk/src/native/windows/src/cmdline.c

Modified: commons/proper/daemon/trunk/src/native/windows/apps/prunmgr/prunmgr.c
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/apps/prunmgr/prunmgr.c?rev=1197900&r1=1197899&r2=1197900&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/apps/prunmgr/prunmgr.c (original)
+++ commons/proper/daemon/trunk/src/native/windows/apps/prunmgr/prunmgr.c Sat Nov  5 08:40:59 2011
@@ -89,6 +89,15 @@ static LPCWSTR _commands[] = {
     NULL
 };
 
+static LPCWSTR _altcmds[] = {
+    L"manage",      /* 1 Manage Service (default)*/
+    L"monitor",     /* 2 Monitor Service */
+    L"start",       /* 3 Monitor Service and start if not runing */
+    L"quit",        /* 4 Quit all running Monitor applications */
+    NULL
+};
+
+
 /* Allowed procrun parameters */
 static APXCMDLINEOPT _options[] = {
 /* 0  */    { L"AllowMultiInstances", NULL, NULL,   APXCMDOPT_INT, NULL, 0},
@@ -1622,7 +1631,7 @@ int WINAPI WinMain(HINSTANCE hInstance,
     hPool     = apxPoolCreate(NULL, 0);
 
     /* Parse the command line */
-    if ((lpCmdline = apxCmdlineParse(hPool, _options, _commands)) == NULL) {
+    if ((lpCmdline = apxCmdlineParse(hPool, _options, _commands, _altcmds)) == NULL) {
         /* TODO: dispalay error message */
         apxDisplayError(TRUE, NULL, 0, "Error parsing command line");
         goto cleanup;

Modified: commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c?rev=1197900&r1=1197899&r2=1197900&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c (original)
+++ commons/proper/daemon/trunk/src/native/windows/apps/prunsrv/prunsrv.c Sat Nov  5 08:40:59 2011
@@ -84,6 +84,18 @@ static LPCWSTR _commands[] = {
     NULL
 };
 
+static LPCWSTR _altcmds[] = {
+    L"run",         /* 1 Run Service as console application (default)*/
+    L"start",       /* 2 Run Service */
+    L"stop",        /* 3 Stop Service */
+    L"update",      /* 4 Update Service parameters */
+    L"install",     /* 5 Install Service */
+    L"delete",      /* 6 Delete Service */
+    L"help",        /* 7 Help */
+    L"version",     /* 8 Version */
+    NULL
+};
+
 /* Allowed procrun parameters */
 static APXCMDLINEOPT _options[] = {
 
@@ -1537,7 +1549,7 @@ void __cdecl main(int argc, char **argv)
     gPool = apxPoolCreate(NULL, 0);
 
     /* Parse the command line */
-    if ((lpCmdline = apxCmdlineParse(gPool, _options, _commands)) == NULL) {
+    if ((lpCmdline = apxCmdlineParse(gPool, _options, _commands, _altcmds)) == NULL) {
         apxLogWrite(APXLOG_MARK_ERROR "Invalid command line arguments");
         rv = 1;
         goto cleanup;

Modified: commons/proper/daemon/trunk/src/native/windows/include/cmdline.h
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/include/cmdline.h?rev=1197900&r1=1197899&r2=1197900&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/include/cmdline.h (original)
+++ commons/proper/daemon/trunk/src/native/windows/include/cmdline.h Sat Nov  5 08:40:59 2011
@@ -60,7 +60,8 @@ typedef struct APXCMDLINE {
 LPAPXCMDLINE apxCmdlineParse(
     APXHANDLE hPool,
     APXCMDLINEOPT   *lpOptions,
-    LPCWSTR         *lpszCommands
+    LPCWSTR         *lpszCommands,
+    LPCWSTR         *lpszAltcmds
 );
 
 void apxCmdlineLoadEnvVars(

Modified: commons/proper/daemon/trunk/src/native/windows/src/cmdline.c
URL: http://svn.apache.org/viewvc/commons/proper/daemon/trunk/src/native/windows/src/cmdline.c?rev=1197900&r1=1197899&r2=1197900&view=diff
==============================================================================
--- commons/proper/daemon/trunk/src/native/windows/src/cmdline.c (original)
+++ commons/proper/daemon/trunk/src/native/windows/src/cmdline.c Sat Nov  5 08:40:59 2011
@@ -40,11 +40,12 @@ static WCHAR    _st_sys_appexe[MAX_PATH]
 LPAPXCMDLINE apxCmdlineParse(
     APXHANDLE hPool,
     APXCMDLINEOPT   *lpOptions,
-    LPCWSTR         *lpszCommands)
+    LPCWSTR         *lpszCommands,
+    LPCWSTR         *lpszAltcmds)
 {
 
     LPAPXCMDLINE lpCmdline = NULL;
-    DWORD l, i = 0, s = 1;
+    DWORD l, i, s = 1;
     LPWSTR p;
     WCHAR  cmd[4];
     DWORD  match;
@@ -105,6 +106,7 @@ LPAPXCMDLINE apxCmdlineParse(
     }
     if (lpszCommands && _st_sys_argc > 1 && lstrlenW(_st_sys_argvw[1]) > 2) {
         LPWSTR ca = _st_sys_argvw[1];
+        i = 0;
         if (ca[0] == L'/' && ca[1] == L'/') {
             l   = 0;
             ca += 2;
@@ -130,13 +132,38 @@ LPAPXCMDLINE apxCmdlineParse(
                     lpCmdline->szApplication = _st_sys_argvw[0];
                 else
                     lpCmdline->szApplication = ca;
+                s = 2;
             }
-            else {
+            else if (!lpszAltcmds) {
                 apxLogWrite(APXLOG_MARK_ERROR "Unrecognized cmd option %S",
                             _st_sys_argvw[1]);
                 return NULL;
             }
+        }
+    }
+    if (lpszAltcmds && _st_sys_argc > 1 && lstrlenW(_st_sys_argvw[1]) > 2 &&
+        _st_sys_argvw[1][0] != L'-') {
+        LPWSTR ca = _st_sys_argvw[1];
+        i = 0;
+        while (lpszAltcmds[i]) {
+            if (lstrcmpW(lpszAltcmds[i++], ca) == 0) {
+                lpCmdline->dwCmdIndex = i;
+                break;
+            }
+        }
+        if (lpCmdline->dwCmdIndex) {
             s = 2;
+            if (_st_sys_argc > 2 && _st_sys_argvw[2][0] != L'-') {
+                s++;
+                lpCmdline->szApplication = _st_sys_argvw[2];
+            }
+            else
+                lpCmdline->szApplication = _st_sys_argvw[0];
+        }
+        else {
+            apxLogWrite(APXLOG_MARK_ERROR "Unrecognized cmd option %S",
+                        _st_sys_argvw[1]);
+            return NULL;
         }
     }
     else {