Import Upstream version 20180207
[hcoop/debian/mlton.git] / runtime / basis / MLton / Process / spawnp.c
CommitLineData
7f918cf1
CE
1#include "platform.h"
2
3#if HAS_SPAWN
4
5C_Errno_t(C_PId_t) MLton_Process_spawnp (NullString8_t pNStr,
6 Array(NullString8_t) aStr) {
7 const char *path;
8 char **args;
9 int aLen;
10 char *aSaved;
11 C_PId_t res;
12
13 path = (const char *) pNStr;
14 args = (char **) aStr;
15 aLen = GC_getArrayLength((pointer)aStr);
16 aSaved = args[aLen - 1];
17 args[aLen - 1] = NULL;
18 res = spawnvp (SPAWN_MODE, path,
19 (const char * const *)args);
20 /* spawnvp failed */
21 args[aLen - 1] = aSaved;
22 return (C_Errno_t(C_PId_t))res;
23}
24
25#else
26
27__attribute__ ((noreturn))
28C_Errno_t(C_PId_t) MLton_Process_spawnp (__attribute__ ((unused)) NullString8_t pNStr,
29 __attribute__ ((unused)) Array(NullString8_t) aStr) {
30 die ("MLton_Process_spawnp not implemented");
31}
32
33#endif