Commit 1ac2b1e3 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

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

digits being run.
parent 3f089a19
...@@ -443,11 +443,18 @@ static BOOL WINECON_Spawn(struct inner_data* data, LPCSTR lpCmdLine) ...@@ -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 ...@@ -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);
......
...@@ -85,14 +85,14 @@ static BOOL start_console_renderer(void) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment