[CRT] spawn: define a unicode environment when needed
[reactos.git] / sdk / lib / crt / process / _cwait.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/sdk/crt/process/_cwait.c
5 * PURPOSE: Waits for a process to exit
6 */
7
8 #include <precomp.h>
9
10 /* Taken from Wine msvcrt/process.c */
11
12 /*
13 * @implemented
14 */
15 intptr_t CDECL _cwait(int *status, intptr_t pid, int action)
16 {
17 HANDLE hPid = (HANDLE)pid;
18 int doserrno;
19
20 if (!WaitForSingleObject(hPid, INFINITE))
21 {
22 if (status)
23 {
24 DWORD stat;
25 GetExitCodeProcess(hPid, &stat);
26 *status = (int)stat;
27 }
28 return pid;
29 }
30 doserrno = GetLastError();
31
32 if (doserrno == ERROR_INVALID_HANDLE)
33 {
34 *_errno() = ECHILD;
35 *__doserrno() = doserrno;
36 }
37 else
38 _dosmaperr(doserrno);
39
40 return status ? *status = -1 : -1;
41 }