From 832ba815d1cf7ec0846cdade49f697228bb04d22 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Wed, 21 Aug 2024 20:53:38 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"Fixed=20an=20issue=20where=20`errorCo?= =?UTF-8?q?de`=20was=20always=200=20when=20`startProcess`=20did=E2=80=A6"?= =?UTF-8?q?=20(#23995)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts nim-lang/Nim#23992 --- lib/pure/osproc.nim | 11 ++++------- tests/osproc/tnoexe.nim | 18 ------------------ 2 files changed, 4 insertions(+), 25 deletions(-) delete mode 100644 tests/osproc/tnoexe.nim diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim index c304ecca64..bd6bcde2be 100644 --- a/lib/pure/osproc.nim +++ b/lib/pure/osproc.nim @@ -1123,13 +1123,14 @@ elif not defined(useNimRtl): var error: cint let sizeRead = read(data.pErrorPipe[readIdx], addr error, sizeof(error)) if sizeRead == sizeof(error): - raiseOSError(OSErrorCode(error), + raiseOSError(osLastError(), "Could not find command: '" & $data.sysCommand & "'. OS error: " & $strerror(error)) return pid {.push stacktrace: off, profiler: off.} - proc startProcessFail(data: ptr StartProcessData, error: cint = errno) = + proc startProcessFail(data: ptr StartProcessData) = + var error: cint = errno discard write(data.pErrorPipe[writeIdx], addr error, sizeof(error)) exitnow(1) @@ -1166,11 +1167,7 @@ elif not defined(useNimRtl): if (poUsePath in data.options): when defined(uClibc) or defined(linux) or defined(haiku): # uClibc environment (OpenWrt included) doesn't have the full execvpe - var exe: string - try: - exe = findExe(data.sysCommand) - except OSError as e: - startProcessFail(data, e.errorCode) + let exe = findExe(data.sysCommand) discard execve(exe.cstring, data.sysArgs, data.sysEnv) else: # MacOSX doesn't have execvpe, so we need workaround. diff --git a/tests/osproc/tnoexe.nim b/tests/osproc/tnoexe.nim deleted file mode 100644 index 56edd0f878..0000000000 --- a/tests/osproc/tnoexe.nim +++ /dev/null @@ -1,18 +0,0 @@ -discard """ - output: '''true -true''' -""" - -import std/osproc - -const command = "lsaaa -lah" - -try: - let process = startProcess(command, options = {poUsePath}) - discard process.waitForExit() -except OSError as e: - echo e.errorCode != 0 - -let process = startProcess(command, options = {poUsePath, poEvalCommand}) -let exitCode = process.waitForExit() -echo exitCode != 0