Now passing event with --use-event to let programs starting with

digits being run.
This commit is contained in:
Eric Pouech 2001-11-25 00:49:36 +00:00 committed by Alexandre Julliard
parent 3f089a1962
commit 1ac2b1e3c7
2 changed files with 16 additions and 9 deletions

View File

@ -443,11 +443,18 @@ static BOOL WINECON_Spawn(struct inner_data* data, LPCSTR lpCmdLine)
return done; return done;
} }
static BOOL WINECON_HasEvent(LPCSTR ptr, unsigned *evt)
{
while (*ptr == ' ' || *ptr == '\t') ptr++;
if (strncmp(ptr, "--use-event=", 12)) return FALSE;
return sscanf(ptr + 12, "%d", evt) == 1;
}
/****************************************************************** /******************************************************************
* WINECON_WinMain * WINECON_WinMain
* *
* wineconsole can either be started as: * wineconsole can either be started as:
* wineconsole <int> used when a new console is created (AllocConsole) * wineconsole --use-event=<int> used when a new console is created (AllocConsole)
* wineconsole <pgm> <arguments> used to start the program <pgm> from the command line in * wineconsole <pgm> <arguments> used to start the program <pgm> from the command line in
* a freshly created console * a freshly created console
*/ */
@ -458,7 +465,7 @@ int PASCAL WINECON_WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPCSTR lpCmdLine, U
unsigned evt; unsigned evt;
/* case of wineconsole <evt>, signal process that created us that we're up and running */ /* case of wineconsole <evt>, signal process that created us that we're up and running */
if (sscanf(lpCmdLine, "%d", &evt) == 1) if (WINECON_HasEvent(lpCmdLine, &evt))
{ {
if (!(data = WINECON_Init(hInst, 0))) return 0; if (!(data = WINECON_Init(hInst, 0))) return 0;
ret = SetEvent((HANDLE)evt); ret = SetEvent((HANDLE)evt);

View File

@ -85,14 +85,14 @@ static BOOL start_console_renderer(void)
/* first try environment variable */ /* first try environment variable */
if ((p = getenv("WINECONSOLE")) != NULL) if ((p = getenv("WINECONSOLE")) != NULL)
{ {
if (snprintf(buffer, sizeof(buffer), "%s %d", p, hEvent) > 0 && if (snprintf(buffer, sizeof(buffer), "%s -- --use-event=%d", p, hEvent) > 0 &&
CreateProcessA(NULL, buffer, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) CreateProcessA(NULL, buffer, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;
ERR("Couldn't launch Wine console from WINECONSOLE env var... trying default access\n"); ERR("Couldn't launch Wine console from WINECONSOLE env var... trying default access\n");
} }
/* then the regular installation dir */ /* then the regular installation dir */
if (snprintf(buffer, sizeof(buffer), "%s %d", BINDIR "/wineconsole", hEvent) > 0 && if (snprintf(buffer, sizeof(buffer), "%s -- --use-event=%d", BINDIR "/wineconsole", hEvent) > 0 &&
CreateProcessA(NULL, buffer, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) CreateProcessA(NULL, buffer, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;
@ -104,10 +104,10 @@ static BOOL start_console_renderer(void)
if ((p = strrchr(strcpy( path, full_argv0 ), '/'))) if ((p = strrchr(strcpy( path, full_argv0 ), '/')))
{ {
p++; p++;
sprintf(p, "wineconsole %d", hEvent); sprintf(p, "wineconsole -- --use-event=%d", hEvent);
if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;
sprintf(p, "programs/wineconsole/wineconsole %d", hEvent); sprintf(p, "programs/wineconsole/wineconsole -- --use-event=%d", hEvent);
if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;
} }
@ -127,10 +127,10 @@ static BOOL start_console_renderer(void)
if ((p = strrchr(path, '/'))) if ((p = strrchr(path, '/')))
{ {
p++; p++;
sprintf(p, "wineconsole %d", hEvent); sprintf(p, "wineconsole -- --use-event=%d", hEvent);
if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;
sprintf(p, "programs/wineconsole/wineconsole %d", hEvent); sprintf(p, "programs/wineconsole/wineconsole -- --use-event=%d", hEvent);
if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) if (CreateProcessA(NULL, path, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;
} }
@ -140,7 +140,7 @@ static BOOL start_console_renderer(void)
} }
/* then try the regular PATH */ /* then try the regular PATH */
sprintf(buffer, "wineconsole %d\n", hEvent); sprintf(buffer, "wineconsole -- --use-event=%d\n", hEvent);
if (CreateProcessA(NULL, buffer, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi)) if (CreateProcessA(NULL, buffer, NULL, NULL, TRUE, DETACHED_PROCESS, NULL, NULL, &si, &pi))
goto succeed; goto succeed;