diff options
author | Steve Bennett <steveb@workware.net.au> | 2011-12-15 11:56:20 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2011-12-16 13:10:13 +1000 |
commit | 55129bef0a4cacdd0a16eec6140cac3558ffc271 (patch) | |
tree | ace190d9b05798721b17ae717733bb8415947f12 /jim-exec.c | |
parent | 1209055595c76e7faae95cb22e683215654f91cc (diff) | |
download | jimtcl-55129bef0a4cacdd0a16eec6140cac3558ffc271.zip jimtcl-55129bef0a4cacdd0a16eec6140cac3558ffc271.tar.gz jimtcl-55129bef0a4cacdd0a16eec6140cac3558ffc271.tar.bz2 |
use execvpe if available in [exec]
On cygwin, setting environ before execvp() doesn't work,
but execvpe() does exist and works, so use that in preference
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-exec.c')
-rw-r--r-- | jim-exec.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -139,6 +139,10 @@ int Jim_execInit(Jim_Interp *interp) #define JimDupFd dup #define JimFdOpenForRead(FD) fdopen((FD), "r") #define JimOpenForRead(NAME) open((NAME), O_RDONLY, 0) + + #ifndef HAVE_EXECVPE + #define execvpe(ARG0, ARGV, ENV) execvp(ARG0, ARGV) + #endif #endif static const char *JimStrError(void); @@ -983,7 +987,7 @@ badargs: close(i); } - execvp(arg_array[firstArg], &arg_array[firstArg]); + execvpe(arg_array[firstArg], &arg_array[firstArg], Jim_GetEnviron()); /* Need to prep an error message before vfork(), just in case */ fprintf(stderr, "couldn't exec \"%s\"", arg_array[firstArg]); |