diff options
Diffstat (limited to 'win32/win32.c')
-rw-r--r-- | win32/win32.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/win32/win32.c b/win32/win32.c index 2e025ce152..5efca7c711 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -41,8 +41,15 @@ char szShellPath[MAX_PATH+1]; char szPerlLibRoot[MAX_PATH+1]; HANDLE PerlDllHandle = INVALID_HANDLE_VALUE; -#define IsWin95() (Win32System == VER_PLATFORM_WIN32_WINDOWS) -#define IsWinNT() (Win32System == VER_PLATFORM_WIN32_NT) +int +IsWin95(void) { + return (Win32System == VER_PLATFORM_WIN32_WINDOWS); +} + +int +IsWinNT(void) { + return (Win32System == VER_PLATFORM_WIN32_NT); +} void * SetIOSubSystem(void *p) @@ -344,7 +351,8 @@ do_aspawn(void* really, void** mark, void** arglast) cmd = SvPV(sv, length); } else { - cmd = GetShell(); + argv[index++] = cmd = GetShell(); + argv[index++] = "/x"; /* always enable command extensions */ argv[index++] = "/c"; } @@ -410,6 +418,7 @@ do_spawn(char *cmd) status = win32_spawnle(P_WAIT, shell, shell, + "/x", "/c", cmd, (char*)0, environ); } @@ -1039,8 +1048,9 @@ win32_spawnle(int mode, const char *cmdname, const char *arglist,...) argp = &arglist; while (*argp++) ; + envp = (const char* const*)*argp; - return pIOSubSystem->pfnspawnvpe(mode, cmdname, &arglist, argp); + return pIOSubSystem->pfnspawnvpe(mode, cmdname, &arglist, envp); } int |