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 */ _cwait(int * status,intptr_t pid,int action)15intptr_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 } 42