cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c
billbarker2004/03/28 15:58:51 Modified:daemon/src/native/nt/procrun procrun.c Log: Refactor the JAVA_HOME auto-detection logic. This will make it easier to extend to non-Sun JVMs later. Also, adding in additional second-try at guessing that will allow procrun to recover from at least some of the common JVM installation errors. Finally, adding in support to specify JAVA_HOME via the --Environment configuration option, so that it is possible to configure different services to use different JVM installs. Revision ChangesPath 1.16 +110 -84 jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- procrun.c 18 Mar 2004 04:20:19 - 1.15 +++ procrun.c 28 Mar 2004 23:58:51 - 1.16 @@ -61,6 +61,7 @@ int report_service_status(DWORD, DWORD, DWORD, process_t *); int procrun_redirect(char *program, char **envp, procrun_t *env, int starting); +static char *procrun_find_java(process_t *proc, char *jhome); static int g_proc_stderr_file = 0; int g_proc_mode = 0; @@ -685,6 +686,103 @@ return rv; } +/* Locate the default JAVA_HOME from the registry only. + */ +static char *procrun_guess_reg_jhome(process_t *proc) +{ +HKEY hkjs; +char jbin[MAX_PATH+1]; +char reg[MAX_PATH+1]; +char *cver; +unsigned long err, klen = MAX_PATH; +strcpy(reg, JAVASOFT_REGKEY); +cver = reg[sizeof(JAVASOFT_REGKEY)-1]; + +if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, +0, KEY_READ, hkjs)) != ERROR_SUCCESS) { + /* No JRE key, so try the JDK */ + strcpy(reg, JAVAHOME_REGKEY); + cver = reg[STRN_SIZE(JAVAHOME_REGKEY)]; + if((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, +0, KEY_READ, hkjs)) != ERROR_SUCCESS) { +DBPRINTF0(procrun_guess_reg_jhome() failed to open Registry key\n); +return NULL; + } +} +if ((err = RegQueryValueEx(hkjs, CurrentVersion, NULL, NULL, + (unsigned char *)cver, + klen)) != ERROR_SUCCESS) { + DBPRINTF0(procrun_guess_jvm() failed obtaining Current Java Version\n); + RegCloseKey(hkjs); + return NULL; +} +RegCloseKey(hkjs); + +if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, +0, KEY_READ, hkjs) ) != ERROR_SUCCESS) { + DBPRINTF1(procrun_guess_jvm() failed to open Registry key %s\n, reg); + return NULL; +} +klen = MAX_PATH; +if ((err = RegQueryValueEx(hkjs, JavaHome, NULL, NULL, + (unsigned char *)jbin, + klen)) != ERROR_SUCCESS) { + DBPRINTF0(procrun_guess_jvm() failed obtaining Java path\n); + RegCloseKey(hkjs); + return NULL; +} +RegCloseKey(hkjs); +return pool_strdup(proc-pool, jbin); +} + +/* Find the value for JAVA_HOME. + */ +static char *procrun_guess_javahome(process_t *proc, int *inenv) +{ +char *cver = NULL; + +if(proc-service.environment != NULL) { +char *env = proc-service.environment; +while(*env) { + if(STRNI_COMPARE(env, JAVA_HOME=)) { + cver = pool_strdup(proc-pool,env + STRN_SIZE(JAVA_HOME=)); + if(inenv != NULL) + *inenv = 1; + break; + } + env += strlen(env)+1; +} +} +if(cver == NULL) { +cver = getenv(JAVA_HOME); +if(cver != NULL) { + cver = pool_strdup(proc-pool, cver); + if(inenv != NULL) +*inenv = 1; +} +} +if(cver == NULL) { +cver = procrun_guess_reg_jhome(proc); +if(inenv != NULL) + *inenv = 0; +} +return cver; +} + +/* Find the default jvm.dll + * This function is the fall-back to try well-known locations if + * the registry search fails to find it. + */ +static char *procrun_guess_jvm2(process_t *proc) +{ +char *jhome = procrun_guess_javahome(proc, NULL); + +if(jhome == NULL) +return NULL; +return procrun_find_java(proc, jhome); +} + + /* Find the default jvm.dll * The function scans through registry and finds * default JRE jvm.dll. @@ -703,21 +801,21 @@ if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, 0, KEY_READ, hkjs)) != ERROR_SUCCESS) { DBPRINTF0(procrun_guess_jvm() failed to open Registry key\n); - return NULL; + return procrun_guess_jvm2(proc); } if ((err =
cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c
billbarker2004/02/10 22:52:24 Modified:daemon/src/native/nt/procrun procrun.c Log: Add support for --WorkingPath when using the in-proc option. Fix for bug #26806. Reported By: Robert Herold [EMAIL PROTECTED] Revision ChangesPath 1.14 +3 -1 jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- procrun.c 11 Feb 2004 05:11:48 - 1.13 +++ procrun.c 11 Feb 2004 06:52:24 - 1.14 @@ -1326,7 +1326,9 @@ DBPRINTF1(Found: %X expecting 1.2 Java Version\n, jvm_version); return -1; } - +if(proc-service.path != NULL) { + SetCurrentDirectory(proc-service.path); +} optn = make_array(proc-java.opts, opts, 30, proc); for (i = 0; i optn; i++) options[i].optionString = remove_quotes(opts[i]); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c
billbarker2004/01/03 18:34:09 Modified:daemon/src/native/nt/procrun procrun.c Log: Allow spaces in the service-name. Yes, pretty silly, but Windows users love spaces :). Fix for bug #24936 Reported By: Patrick Samson [EMAIL PROTECTED] Revision ChangesPath 1.12 +22 -2 jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- procrun.c 31 Dec 2003 04:43:15 - 1.11 +++ procrun.c 4 Jan 2004 02:34:09 - 1.12 @@ -1991,7 +1991,7 @@ { int arglen = 0; char *argp; -int i,n; +int i,n, sp; /* parse command line */ *java = NULL; @@ -2001,7 +2001,14 @@ return -1; } strcat(path, PROC_ARG_RUN_SERVICE); +sp = strchr(proc-service.name, ' ') != NULL; +if(sp) { +strcat(path,\); +} strcat(path, proc-service.name); +if(sp) { +strcat(path,\); +} for (i = 2; i argc; i++) { DBPRINTF2(Parsing %d [%s]\n, i, argv[i]); if (strlen(argv[i]) 2 argv[i][0] == '-' argv[i][1] == '-') { @@ -2044,7 +2051,13 @@ else if (STRNI_COMPARE(argp, PROCRUN_PARAMS_INSTALL)) { strcpy(path, argv[++i]); strcat(path, PROC_ARG_RUN_SERVICE); +if(sp) { +strcat(path,\); +} strcat(path, proc-service.name); +if(sp) { +strcat(path, \); +} } else if (STRNI_COMPARE(argp, PROCRUN_PARAMS_ENVIRONMENT)) { proc-service.environment = pool_strdup(proc-pool, argv[++i]); @@ -2332,7 +2345,7 @@ char *argp; char path[MAX_PATH+1]; char *java = NULL; -int arglen = 0; +int arglen = 0, sp; int i, n; if (!proc-service.name) { @@ -2343,8 +2356,15 @@ DBPRINTF0(NULL); return -1; } +sp = strchr(proc-service.name, ' ') != NULL; strcat(path, PROC_ARG_RUN_SERVICE); +if(sp) { +strcat(path,\); +} strcat(path, proc-service.name); +if(sp) { +strcat(path, \); +} DBPRINTF1(Updating service %s\n, path); manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c
billbarker2003/12/30 20:43:15 Modified:daemon/src/native/nt/procrun procrun.c Log: 1) Allow the --Java to simply be where java is installed, instead of the full path to the jvm.dll. 2) When running --Java=java, use the JVM specified in JAVA_HOME over the one specified in the registry. Fix for Bug #25789 Revision ChangesPath 1.11 +79 -25jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- procrun.c 6 Dec 2003 18:10:53 - 1.10 +++ procrun.c 31 Dec 2003 04:43:15 - 1.11 @@ -787,37 +787,41 @@ char *cver; unsigned long err, klen = MAX_PATH; -strcpy(reg, JAVASOFT_REGKEY); -cver = reg[sizeof(JAVASOFT_REGKEY)-1]; +if((cver = getenv(JAVA_HOME)) != NULL) { +strcpy(jbin,cver); +} else { +strcpy(reg, JAVASOFT_REGKEY); +cver = reg[sizeof(JAVASOFT_REGKEY)-1]; -if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, +if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, 0, KEY_READ, hkjs)) != ERROR_SUCCESS) { - DBPRINTF0(procrun_guess_jvm() failed to open Registry key\n); - return NULL; -} -if ((err = RegQueryValueEx(hkjs, CurrentVersion, NULL, NULL, + DBPRINTF0(procrun_guess_jvm() failed to open Registry key\n); + return NULL; +} +if ((err = RegQueryValueEx(hkjs, CurrentVersion, NULL, NULL, (unsigned char *)cver, klen)) != ERROR_SUCCESS) { -DBPRINTF0(procrun_guess_jvm() failed obtaining Current Java Version\n); +DBPRINTF0(procrun_guess_jvm() failed obtaining Current Java Version\n); +RegCloseKey(hkjs); +return NULL; +} RegCloseKey(hkjs); -return NULL; -} -RegCloseKey(hkjs); -if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, +if ((err = RegOpenKeyEx(HKEY_LOCAL_MACHINE, reg, 0, KEY_READ, hkjs) ) != ERROR_SUCCESS) { -DBPRINTF1(procrun_guess_jvm() failed to open Registry key %s\n, reg); -return NULL; -} -klen = MAX_PATH; -if ((err = RegQueryValueEx(hkjs, JavaHome, NULL, NULL, +DBPRINTF1(procrun_guess_jvm() failed to open Registry key %s\n, reg); +return NULL; +} +klen = MAX_PATH; +if ((err = RegQueryValueEx(hkjs, JavaHome, NULL, NULL, (unsigned char *)jbin, klen)) != ERROR_SUCCESS) { -DBPRINTF0(procrun_guess_jvm() failed obtaining Java path\n); +DBPRINTF0(procrun_guess_jvm() failed obtaining Java path\n); +RegCloseKey(hkjs); +return NULL; +} RegCloseKey(hkjs); -return NULL; } -RegCloseKey(hkjs); strcat(jbin, \\bin\\); strcat(jbin, image); strcat(jbin, .exe); @@ -1950,7 +1954,35 @@ RegCloseKey(key); return (err != ERROR_SUCCESS); } - +static const char *location_jvm_default[] = { +\\jre\\bin\\classic\\jvm.dll, /* Sun JDK 1.3 */ +\\bin\\classic\\jvm.dll,/* Sun JRE 1.3 */ +\\jre\\bin\\client\\jvm.dll,/* Sun JDK 1.4 */ +\\bin\\client\\jvm.dll, /* Sun JRE 1.4 */ +NULL, +}; + +/* + * Attempt to locate the jvm from the installation. + */ +static char *procrun_find_java(process_t *proc, char *jhome) +{ + char path[MAX_PATH+1]; + int x = 0; + HMODULE hm; + for(x=0; location_jvm_default[x] != NULL; x++) { + strcpy(path,jhome); + strcat(path,location_jvm_default[x]); + hm = LoadLibraryEx(path, NULL, 0); + if(hm != NULL) { + DBPRINTF1(Found library at %s\n,path); + FreeLibrary(hm); + return pool_strdup(proc-pool, path); + } + } + return NULL; +} + /* * Process the arguments and fill the process_t stuct. */ @@ -2027,9 +2059,19 @@ break; } } -if (*java !strnicmp(*java, java, 4)) +if (*java !strnicmp(*java, java, 4)) { arglen = strlen(*java) + 1; -else if (proc-service.name) +} else if(*java) { +int jlen = strlen(*java) +1; +if(stricmp(*java+(jlen-5),.dll)) { +/* Assume it is the java installation */ +char *njava = procrun_find_java(proc, *java); +DBPRINTF1(Attempting to locate jvm from %s\n,*java); +if(njava != NULL) { + *java = njava; +}
cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c procrun.h procrun.rc
mturk 2003/10/02 00:22:16 Modified:daemon/src/native/nt/procrun procrun.c procrun.h procrun.rc Log: Add the Registry key for selecting the console display type. Revision ChangesPath 1.7 +11 -3 jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- procrun.c 1 Oct 2003 18:06:20 - 1.6 +++ procrun.c 2 Oct 2003 07:22:16 - 1.7 @@ -111,7 +111,7 @@ static int g_is_windows_nt = 0; #ifdef PROCRUN_WINAPP - + #endif @@ -998,7 +998,15 @@ sscanf(kval, %d %d %d %d, ac_winpos.left, ac_winpos.right, ac_winpos.top, ac_winpos.bottom); } + +klen = MAX_PATH; +if ((err = RegQueryValueEx(key, PROCRUN_PARAMS_USELVIEW, NULL, NULL, + (unsigned char *)kval, + klen)) == ERROR_SUCCESS) { +ac_use_lview = atoi(kval); +} #endif +klen = MAX_PATH; if ((err = RegQueryValueEx(key, PROCRUN_PARAMS_ENVIRONMENT, NULL, NULL, NULL, klen)) == ERROR_SUCCESS) { @@ -1395,7 +1403,7 @@ if (ch == '\n' || n = MAX_PATH) { buff[n] = '\0'; DBPRINTF1(RD %s, buff); -ac_add_list_string(buff, n); +ac_add_list_string(buff, n, 0); n = 0; } else if (ch == '\t' n (MAX_PATH - 4)) { @@ -1440,7 +1448,7 @@ if (ch == '\n' || n = MAX_PATH) { buff[n] = '\0'; DBPRINTF1(RD %s, buff); -ac_add_list_string(buff, n); +ac_add_list_string(buff, n, 1); n = 0; } else if (ch == '\t' n (MAX_PATH - 4)) { 1.6 +4 -3 jakarta-commons/daemon/src/native/nt/procrun/procrun.h Index: procrun.h === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- procrun.h 1 Oct 2003 18:06:20 - 1.5 +++ procrun.h 2 Oct 2003 07:22:16 - 1.6 @@ -213,6 +213,7 @@ #define PROCRUN_PARAMS_WINPOS WindowPosition #define PROCRUN_PARAMS_WINCLR WindowColor #define PROCRUN_PARAMS_WINBACK WindowBackground +#define PROCRUN_PARAMS_USELVIEW WindowListView #define PROCRUN_DEFAULT_CLASS Main @@ -359,13 +360,14 @@ extern DWORD WINAPI gui_thread(LPVOID param); -extern void ac_add_list_string(const char *str, int len); +extern void ac_add_list_string(const char *str, int len, int from); extern int ac_use_try; extern int ac_use_dlg; extern int ac_use_show; extern int ac_use_props; extern int ac_use_lview; extern int ac_lview_current; +extern int ac_splash_timeout; extern RECTac_winpos; extern HINSTANCE ac_instance; @@ -378,13 +380,12 @@ voidac_show_try_icon(HWND hwnd, DWORD message, const char *tip, int stop); voidac_center_window(HWND hwnd); -typedef void (*lv_parse_cb_t)(const char *data); +typedef void (*lv_parse_cb_t)(const char *data, int from); extern lv_parse_cb_tlv_parser; #if defined(PROCRUN_EXTENDED) -void acx_parse_list_string(const char *str); void acx_init_extended(); 1.5 +2 -2 jakarta-commons/daemon/src/native/nt/procrun/procrun.rc Index: procrun.rc === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.rc,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- procrun.rc1 Oct 2003 18:06:20 - 1.4 +++ procrun.rc2 Oct 2003 07:22:16 - 1.5 @@ -139,7 +139,7 @@ CONTROL ,IDC_RICHEDIT21,RichEdit20A,ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL,0,31,335,115 CONTROL 117,IDC_STATIC,Static,SS_BITMAP,0,0,337,30 -LTEXT Apache Process Runner ver. 1.0.0,IDC_STATIC,2,150,270,12 +LTEXT Apache Process Runner ver. 1.1.0,IDC_STATIC,2,150,270,12 END #else IDD_ABOUTBOX DIALOGEX 0, 0, 337, 167 @@ -150,7 +150,7 @@ DEFPUSHBUTTON OK,IDOK,285,150,50,14 CONTROL ,IDC_RICHEDIT21,RichEdit20A,ES_MULTILINE | ES_READONLY | WS_BORDER | WS_VSCROLL,0,0,335,145 -
cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c
mturk 2003/09/27 23:53:10 Modified:daemon/src/native/nt/procrun procrun.c Log: Remove the unused dll functions. The DLL mode will became the Control Panel Applet. Revision ChangesPath 1.2 +20 -100 jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- procrun.c 4 Sep 2003 23:28:20 - 1.1 +++ procrun.c 28 Sep 2003 06:53:10 - 1.2 @@ -57,7 +57,7 @@ */ /* - * procrun. + * procrun (Tomcat Service Manager) * * Contributed by Mladen Turk [EMAIL PROTECTED] * @@ -2987,106 +2987,26 @@ free_environment(env); } #elif defined(PROCRUN_WINDLL) -#pragma message(Compiling DLL Application mode) - - -BOOL WINAPI DllMain(HINSTANCE hInst, -ULONG ulReason, -LPVOID lpReserved) -{ - -switch (ulReason) { -case DLL_PROCESS_ATTACH: -g_env = NULL; -break; -case DLL_PROCESS_DETACH: -free_environment(g_env); -break; -default: -break; -} -return TRUE; -} - -__declspec(dllexport) void InstallService(const char *service_name, - const char *install, - const char *image_path, - const char *display_name, - const char *description) -{ -int argc = 0; -char *argv[12]; -char b[MAX_PATH]; - -procrun_t *env = alloc_environment(); -g_proc_mode = PROCRUN_MODE_WINDLL; -g_env = env; - -argv[argc++] = PROCRUN.DLL; -strcpy(b, PROC_ARG_INSTALL_SERVICE); -strcat(b, service_name); -argv[argc++] = b; -argv[argc++] = -- PROCRUN_PARAMS_IMAGE; -argv[argc++] = (char *)image_path; -argv[argc++] = -- PROCRUN_PARAMS_INSTALL; -argv[argc++] = (char *)install; -argv[argc++] = -- PROCRUN_PARAMS_DISPLAY; -argv[argc++] = (char *)display_name; -argv[argc++] = -- PROCRUN_PARAMS_DESCRIPTION; -argv[argc++] = (char *)description; - -procrun_main(argc, argv, _environ, env); - -free_environment(env); -g_env = NULL; -} - -__declspec(dllexport) void UpdateService(const char *service_name, - const char *param, - const char *value) -{ -int argc = 0; -char *argv[4]; -char b[MAX_PATH], p[MAX_PATH]; - -procrun_t *env = alloc_environment(); -g_proc_mode = PROCRUN_MODE_WINDLL; -g_env = env; - -argv[argc++] = PROCRUN.DLL; -strcpy(b, PROC_ARG_UPDATE_SERVICE); -strcat(b, service_name); -strcpy(p, --); -strcat(p, param); -argv[argc++] = b; -argv[argc++] = p; -argv[argc++] = (char *)value; - -procrun_main(argc, argv, _environ, env); - -free_environment(env); -g_env = NULL; -} - -__declspec(dllexport) void RemoveService(const char *service_name) -{ -int argc = 0; -char *argv[4]; -char b[MAX_PATH]; - -procrun_t *env = alloc_environment(); -g_proc_mode = PROCRUN_MODE_WINDLL; -g_env = env; - -argv[argc++] = PROCRUN.DLL; -strcpy(b, PROC_ARG_DELETE_SERVICE); -strcat(b, service_name); -argv[argc++] = b; -procrun_main(argc, argv, _environ, env); +#pragma message(Compiling Control Panel Application mode) + +/* XXX: Work in progress */ +/* + * Allows that all the installed TC services + * can be managed from Windows Control Panel + */ + +LONG APIENTRY CPlApplet(HWND hwndCPL, +UINT uMsg, +LONG lParam1, +LONG lParam2) +{ + + + + +return 1; +} -free_environment(env); -g_env = NULL; -} #else #error Unknown application mode #endif - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: jakarta-commons/daemon/src/native/nt/procrun procrun.c
mturk 2003/09/28 00:04:35 Modified:daemon/src/native/nt/procrun procrun.c Log: Bljax... Remove those CRLF's. Revision ChangesPath 1.3 +19 -19jakarta-commons/daemon/src/native/nt/procrun/procrun.c Index: procrun.c === RCS file: /home/cvs/jakarta-commons/daemon/src/native/nt/procrun/procrun.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- procrun.c 28 Sep 2003 06:53:10 - 1.2 +++ procrun.c 28 Sep 2003 07:04:35 - 1.3 @@ -2409,7 +2409,7 @@ static LRESULT CALLBACK ttyConsoleCtrlWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { - + if (msg == WM_CREATE) { DBPRINTF0(ttyConsoleCtrlWndProc WM_CREATE\n); return 0; @@ -2988,24 +2988,24 @@ } #elif defined(PROCRUN_WINDLL) #pragma message(Compiling Control Panel Application mode) - -/* XXX: Work in progress */ -/* - * Allows that all the installed TC services - * can be managed from Windows Control Panel - */ - -LONG APIENTRY CPlApplet(HWND hwndCPL, -UINT uMsg, -LONG lParam1, -LONG lParam2) -{ - - - - -return 1; -} + +/* XXX: Work in progress */ +/* + * Allows that all the installed TC services + * can be managed from Windows Control Panel + */ + +LONG APIENTRY CPlApplet(HWND hwndCPL, +UINT uMsg, +LONG lParam1, +LONG lParam2) +{ + + + + +return 1; +} #else #error Unknown application mode - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]