Import Upstream version 20180207
[hcoop/debian/mlton.git] / runtime / basis / Posix / Process / execp.c
1 #include "platform.h"
2
3 C_Errno_t(C_Int_t) Posix_Process_execp (NullString8_t fNStr,
4 Array(NullString8_t) aStr) {
5 const char *file;
6 char **args;
7 uintmax_t aLen;
8 char *aSaved;
9 int res;
10
11 file = (const char *) fNStr;
12 args = (char **) aStr;
13 aLen = GC_getArrayLength((pointer)aStr);
14 aSaved = args[aLen - 1];
15 args[aLen - 1] = NULL;
16 res = EXECVP (file,
17 (char * const *)args);
18 /* execp failed */
19 args[aLen - 1] = aSaved;
20 return (C_Errno_t(C_Int_t))res;
21 }