From e9cf3b3bf56646e94df9189bfe8d6449b79ca0fb Mon Sep 17 00:00:00 2001 From: eban Date: Mon, 13 Nov 2000 10:11:31 +0000 Subject: eban git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1038 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- win32/win32.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'win32') diff --git a/win32/win32.c b/win32/win32.c index a2b256d74d..7a2dea8848 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -653,7 +653,7 @@ mypclose(FILE *fp) MyPopenRecord[i].pipe = NULL; MyPopenRecord[i].pid = 0; - return exitcode; + return (int)((exitcode & 0xff) << 8); } #endif @@ -673,7 +673,7 @@ char *cmd; register char **a; register char *s; char **argv; - int status; + int status = -1; char *shell, *cmd2; int mode = NtSyncProcess ? P_WAIT : P_NOWAIT; @@ -703,13 +703,13 @@ char *cmd; status = spawnvpe(mode, argv[0], argv, environ); /* return spawnle(mode, shell, shell, "-c", cmd, (char*)0, environ); */ free(cmdline); - return status; + return (int)((status & 0xff) << 8); } } else if ((shell = getenv("COMSPEC")) != 0) { if (NtHasRedirection(cmd) /* || isInternalCmd(cmd) */) { - do_comspec_shell: - return spawnle(mode, shell, shell, "/c", cmd, (char*)0, environ); + status = spawnle(mode, shell, shell, "/c", cmd, (char*)0, environ); + return (int)((status & 0xff) << 8); } } @@ -735,7 +735,7 @@ char *cmd; } free(cmd2); free(argv); - return status; + return (int)((status & 0xff) << 8); } #endif @@ -2344,6 +2344,9 @@ waitpid (pid_t pid, int *stat_loc, int options) } if (WaitForSingleObject((HANDLE) pid, timeout) == WAIT_OBJECT_0) { pid = _cwait(stat_loc, pid, 0); +#if !defined __BORLANDC__ + *stat_loc <<= 8; +#endif return pid; } return 0; -- cgit v1.2.3