Author: mturk Date: Sun Mar 18 03:44:16 2007 New Revision: 519586 URL: http://svn.apache.org/viewvc?view=rev&rev=519586 Log: Added --Type <interactive> parameter
Modified: jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c Modified: jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c URL: http://svn.apache.org/viewvc/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c?view=diff&rev=519586&r1=519585&r2=519586 ============================================================================== --- jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c (original) +++ jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c Sun Mar 18 03:44:16 2007 @@ -56,6 +56,8 @@ static LPCWSTR PRSRV_JBIN = L"\\bin\\java.exe"; static LPCWSTR PRSRV_SIGNAL = L"SIGNAL"; +static LPCWSTR STYPE_INTERACTIVE = L"interactive"; + static LPWSTR _service_name = NULL; /* Allowed procrun commands */ static LPCWSTR _commands[] = { @@ -77,39 +79,41 @@ /* 3 */ { L"ServiceUser", L"ServiceUser", NULL, APXCMDOPT_STR | APXCMDOPT_SRV, NULL, 0}, /* 4 */ { L"ServicePassword", L"ServicePassword", NULL, APXCMDOPT_STR | APXCMDOPT_SRV, NULL, 0}, /* 5 */ { L"Startup", L"Startup", NULL, APXCMDOPT_STR | APXCMDOPT_SRV, NULL, 0}, -/* 6 */ { L"DependsOn", L"DependsOn", NULL, APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 7 */ { L"Environment", L"Environment", NULL, APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 8 */ { L"User", L"User", NULL, APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 9 */ { L"Password", L"Password", NULL, APXCMDOPT_BIN | APXCMDOPT_REG, NULL, 0}, - -/* 10 */ { L"JavaHome", L"JavaHome", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 11 */ { L"Jvm", L"Jvm", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 12 */ { L"JvmOptions", L"Options", L"Java", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 13 */ { L"Classpath", L"Classpath", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 14 */ { L"JvmMs", L"JvmMs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, -/* 15 */ { L"JvmMx", L"JvmMx", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, -/* 16 */ { L"JvmSs", L"JvmSs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, - -/* 17 */ { L"StopImage", L"Image", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 18 */ { L"StopPath", L"WorkingPath", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 19 */ { L"StopClass", L"Class", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 20 */ { L"StopParams", L"Params", L"Stop", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 21 */ { L"StopMethod", L"Method", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 22 */ { L"StopMode", L"Mode", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 23 */ { L"StopTimeout", L"Timeout", L"Stop", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, - -/* 24 */ { L"StartImage", L"Image", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 25 */ { L"StartPath", L"WorkingPath", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 26 */ { L"StartClass", L"Class", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 27 */ { L"StartParams", L"Params", L"Start", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, -/* 28 */ { L"StartMethod", L"Method", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 29 */ { L"StartMode", L"Mode", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, - -/* 30 */ { L"LogPath", L"Path", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 31 */ { L"LogPrefix", L"Prefix", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 32 */ { L"LogLevel", L"Level", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, -/* 33 */ { L"StdError", L"StdError", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, -/* 34 */ { L"StdOutput", L"StdOutput", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 6 */ { L"Type", L"Type", NULL, APXCMDOPT_STR | APXCMDOPT_SRV, NULL, 0}, + +/* 7 */ { L"DependsOn", L"DependsOn", NULL, APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 8 */ { L"Environment", L"Environment", NULL, APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 9 */ { L"User", L"User", NULL, APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 10 */ { L"Password", L"Password", NULL, APXCMDOPT_BIN | APXCMDOPT_REG, NULL, 0}, + +/* 11 */ { L"JavaHome", L"JavaHome", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 12 */ { L"Jvm", L"Jvm", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 13 */ { L"JvmOptions", L"Options", L"Java", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 14 */ { L"Classpath", L"Classpath", L"Java", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 15 */ { L"JvmMs", L"JvmMs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, +/* 16 */ { L"JvmMx", L"JvmMx", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, +/* 17 */ { L"JvmSs", L"JvmSs", L"Java", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, + +/* 18 */ { L"StopImage", L"Image", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 19 */ { L"StopPath", L"WorkingPath", L"Stop", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 20 */ { L"StopClass", L"Class", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 21 */ { L"StopParams", L"Params", L"Stop", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 22 */ { L"StopMethod", L"Method", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 23 */ { L"StopMode", L"Mode", L"Stop", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 24 */ { L"StopTimeout", L"Timeout", L"Stop", APXCMDOPT_INT | APXCMDOPT_REG, NULL, 0}, + +/* 25 */ { L"StartImage", L"Image", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 26 */ { L"StartPath", L"WorkingPath", L"Start", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 27 */ { L"StartClass", L"Class", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 28 */ { L"StartParams", L"Params", L"Start", APXCMDOPT_MSZ | APXCMDOPT_REG, NULL, 0}, +/* 29 */ { L"StartMethod", L"Method", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 30 */ { L"StartMode", L"Mode", L"Start", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, + +/* 31 */ { L"LogPath", L"Path", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 32 */ { L"LogPrefix", L"Prefix", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 33 */ { L"LogLevel", L"Level", L"Log", APXCMDOPT_STR | APXCMDOPT_REG, NULL, 0}, +/* 34 */ { L"StdError", L"StdError", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, +/* 35 */ { L"StdOutput", L"StdOutput", L"Log", APXCMDOPT_STE | APXCMDOPT_REG, NULL, 0}, /* NULL terminate the array */ { NULL } }; @@ -124,49 +128,51 @@ #define ST_SUSER GET_OPT_T(3) #define ST_SPASSWORD GET_OPT_T(4) #define ST_STARTUP GET_OPT_T(5) +#define ST_TYPE GET_OPT_T(6) #define SO_DESCRIPTION GET_OPT_V(0) #define SO_DISPLAYNAME GET_OPT_V(1) #define SO_INSTALL GET_OPT_V(2) #define SO_SUSER GET_OPT_V(3) #define SO_SPASSWORD GET_OPT_V(4) - #define SO_STARTUP GET_OPT_V(5) -#define SO_DEPENDSON GET_OPT_V(6) -#define SO_ENVIRONMENT GET_OPT_V(7) +#define SO_TYPE GET_OPT_V(6) + +#define SO_DEPENDSON GET_OPT_V(7) +#define SO_ENVIRONMENT GET_OPT_V(8) -#define SO_USER GET_OPT_V(8) -#define SO_PASSWORD GET_OPT_V(9) +#define SO_USER GET_OPT_V(9) +#define SO_PASSWORD GET_OPT_V(10) -#define SO_JAVAHOME GET_OPT_V(10) -#define SO_JVM GET_OPT_V(11) -#define SO_JVMOPTIONS GET_OPT_V(12) -#define SO_CLASSPATH GET_OPT_V(13) -#define SO_JVMMS GET_OPT_I(14) -#define SO_JVMMX GET_OPT_I(15) -#define SO_JVMSS GET_OPT_I(16) - -#define SO_STOPIMAGE GET_OPT_V(17) -#define SO_STOPPATH GET_OPT_V(18) -#define SO_STOPCLASS GET_OPT_V(19) -#define SO_STOPPARAMS GET_OPT_V(20) -#define SO_STOPMETHOD GET_OPT_V(21) -#define SO_STOPMODE GET_OPT_V(22) -#define SO_STOPTIMEOUT GET_OPT_I(23) - -#define SO_STARTIMAGE GET_OPT_V(24) -#define SO_STARTPATH GET_OPT_V(25) -#define SO_STARTCLASS GET_OPT_V(26) -#define SO_STARTPARAMS GET_OPT_V(27) -#define SO_STARTMETHOD GET_OPT_V(28) -#define SO_STARTMODE GET_OPT_V(29) - -#define SO_LOGPATH GET_OPT_V(30) -#define SO_LOGPREFIX GET_OPT_V(31) -#define SO_LOGLEVEL GET_OPT_V(32) +#define SO_JAVAHOME GET_OPT_V(11) +#define SO_JVM GET_OPT_V(12) +#define SO_JVMOPTIONS GET_OPT_V(13) +#define SO_CLASSPATH GET_OPT_V(14) +#define SO_JVMMS GET_OPT_I(15) +#define SO_JVMMX GET_OPT_I(16) +#define SO_JVMSS GET_OPT_I(17) + +#define SO_STOPIMAGE GET_OPT_V(18) +#define SO_STOPPATH GET_OPT_V(19) +#define SO_STOPCLASS GET_OPT_V(20) +#define SO_STOPPARAMS GET_OPT_V(21) +#define SO_STOPMETHOD GET_OPT_V(22) +#define SO_STOPMODE GET_OPT_V(23) +#define SO_STOPTIMEOUT GET_OPT_I(24) + +#define SO_STARTIMAGE GET_OPT_V(25) +#define SO_STARTPATH GET_OPT_V(26) +#define SO_STARTCLASS GET_OPT_V(27) +#define SO_STARTPARAMS GET_OPT_V(28) +#define SO_STARTMETHOD GET_OPT_V(29) +#define SO_STARTMODE GET_OPT_V(30) + +#define SO_LOGPATH GET_OPT_V(31) +#define SO_LOGPREFIX GET_OPT_V(32) +#define SO_LOGLEVEL GET_OPT_V(33) -#define SO_STDERROR GET_OPT_V(33) -#define SO_STDOUTPUT GET_OPT_V(34) +#define SO_STDERROR GET_OPT_V(34) +#define SO_STDOUTPUT GET_OPT_V(35) /* Main servic table entry * filled at run-time @@ -516,6 +522,7 @@ APXHANDLE hService; BOOL rv; DWORD dwStart = SERVICE_DEMAND_START; + DWORD dwType = SERVICE_WIN32_OWN_PROCESS; WCHAR szImage[SIZ_HUGLEN]; apxLogWrite(APXLOG_MARK_DEBUG "Installing service..."); @@ -528,6 +535,11 @@ if ((ST_STARTUP & APXCMDOPT_FOUND) && lstrcmpiW(SO_STARTUP, PRSRV_AUTO) == 0) dwStart = SERVICE_AUTO_START; + /* Check the service type */ + if ((ST_TYPE & APXCMDOPT_FOUND) && + lstrcmpiW(SO_TYPE, STYPE_INTERACTIVE) == 0) + dwType |= SERVICE_INTERACTIVE_PROCESS; + /* Check if --Install is provided */ if (!SO_INSTALL) { lstrcpyW(szImage, lpCmdline->szExePath); @@ -556,7 +568,7 @@ SO_DISPLAYNAME, /* --DisplayName */ SO_INSTALL, SO_DEPENDSON, /* --DependendsOn */ - SERVICE_WIN32_OWN_PROCESS, + dwType, dwStart); /* Set the --Description */ if (rv) { @@ -683,6 +695,8 @@ SetLastError(0); /* Open the service */ if (apxServiceOpen(hService, lpCmdline->szApplication, SERVICE_ALL_ACCESS)) { + DWORD dwStart = SERVICE_NO_CHANGE; + DWORD dwType = SERVICE_NO_CHANGE; apxServiceSetNames(hService, NULL, /* Never update the ImagePath */ SO_DISPLAYNAME, @@ -691,17 +705,20 @@ NULL); /* Update the --Startup mode */ if (ST_STARTUP & APXCMDOPT_FOUND) { - DWORD dwStart = SERVICE_NO_CHANGE; if (!lstrcmpiW(SO_STARTUP, PRSRV_AUTO)) dwStart = SERVICE_AUTO_START; else if (!lstrcmpiW(SO_STARTUP, PRSRV_MANUAL)) dwStart = SERVICE_DEMAND_START; - apxServiceSetOptions(hService, - SERVICE_NO_CHANGE, - dwStart, - SERVICE_NO_CHANGE); - } + if (ST_TYPE & APXCMDOPT_FOUND) { + if (!lstrcmpiW(SO_TYPE, STYPE_INTERACTIVE)) + dwType = SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS; + } + apxServiceSetOptions(hService, + dwType, + dwStart, + SERVICE_NO_CHANGE); + apxLogWrite(APXLOG_MARK_INFO "Service %S updated", lpCmdline->szApplication); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]