diff options
author | def <dennis@felsin9.de> | 2016-01-24 19:18:16 +0100 |
---|---|---|
committer | def <dennis@felsin9.de> | 2016-01-24 19:18:16 +0100 |
commit | 4246f660ea4ba7bab05811662eb53a87cc0cc049 (patch) | |
tree | 71452f1a810fb4eef18c7d65b0c0079767616296 | |
parent | 4e0f8cf595338ac2bd87eca5e3c2cbaacada5736 (diff) | |
download | Nim-4246f660ea4ba7bab05811662eb53a87cc0cc049.tar.gz |
Only use execvpe on linux, execvp elsewhere (fixes #3759)
-rw-r--r-- | lib/pure/osproc.nim | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim index 8560c3ee4..34fb81520 100644 --- a/lib/pure/osproc.nim +++ b/lib/pure/osproc.nim @@ -886,7 +886,7 @@ elif not defined(useNimRtl): discard write(data.pErrorPipe[writeIdx], addr error, sizeof(error)) exitnow(1) - when defined(macosx) or defined(freebsd) or defined(netbsd) or defined(android): + when not defined(uClibc) and (not defined(linux) or defined(android)): var environ {.importc.}: cstringArray proc startProcessAfterFork(data: ptr StartProcessData) = @@ -916,17 +916,16 @@ elif not defined(useNimRtl): discard fcntl(data.pErrorPipe[writeIdx], F_SETFD, FD_CLOEXEC) if data.optionPoUsePath: - when defined(macosx) or defined(freebsd) or defined(netbsd) or defined(android): + when defined(uClibc): + # uClibc environment (OpenWrt included) doesn't have the full execvpe + discard execve(data.sysCommand, data.sysArgs, data.sysEnv) + elif defined(linux) and not defined(android): + discard execvpe(data.sysCommand, data.sysArgs, data.sysEnv) + else: # MacOSX doesn't have execvpe, so we need workaround. # On MacOSX we can arrive here only from fork, so this is safe: environ = data.sysEnv discard execvp(data.sysCommand, data.sysArgs) - else: - when defined(uClibc): - # uClibc environment (OpenWrt included) doesn't have the full execvpe - discard execve(data.sysCommand, data.sysArgs, data.sysEnv) - else: - discard execvpe(data.sysCommand, data.sysArgs, data.sysEnv) else: discard execve(data.sysCommand, data.sysArgs, data.sysEnv) |