blob: 00b59424200d56b314fdf4fec44b4692ac775e57 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include "libbb.h"
int mingw_system(const char *cmd)
{
const char *argv[4] = { "sh", "-c", cmd, NULL };
intptr_t proc;
HANDLE h;
DWORD ret = 0;
int sig;
if (cmd == NULL)
return 1;
if ((proc=mingw_spawn_proc(argv)) == -1)
return -1;
h = (HANDLE)proc;
WaitForSingleObject(h, INFINITE);
GetExitCodeProcess(h, &ret);
CloseHandle(h);
// Was process terminated as if by a signal?
sig = ret >> 24;
if (sig != 0 && ret == sig << 24 && is_valid_signal(sig))
return sig;
return ret << 8;
}
|