From 2297a1aa6048fcbcffca4e2c2e4ede275261e83d Mon Sep 17 00:00:00 2001 From: Araq Date: Sat, 27 Jun 2015 23:35:02 +0200 Subject: [PATCH] much better error message if an exe cannot be found --- lib/pure/os.nim | 7 +++++-- lib/pure/osproc.nim | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/pure/os.nim b/lib/pure/os.nim index f295055906..6f8d923e3f 100644 --- a/lib/pure/os.nim +++ b/lib/pure/os.nim @@ -261,7 +261,7 @@ proc osErrorMsg*(errorCode: OSErrorCode): string = if errorCode != OSErrorCode(0'i32): result = $os.strerror(errorCode.int32) -proc raiseOSError*(errorCode: OSErrorCode) = +proc raiseOSError*(errorCode: OSErrorCode; additionalInfo = "") {.noinline.} = ## Raises an ``OSError`` exception. The ``errorCode`` will determine the ## message, ``osErrorMsg`` will be used to get this message. ## @@ -271,7 +271,10 @@ proc raiseOSError*(errorCode: OSErrorCode) = ## the message ``unknown OS error`` will be used. var e: ref OSError; new(e) e.errorCode = errorCode.int32 - e.msg = osErrorMsg(errorCode) + if additionalInfo.len == 0: + e.msg = osErrorMsg(errorCode) + else: + e.msg = additionalInfo & " " & osErrorMsg(errorCode) if e.msg == "": e.msg = "unknown OS error" raise e diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim index 33f5419d56..add4bc0a84 100644 --- a/lib/pure/osproc.nim +++ b/lib/pure/osproc.nim @@ -468,7 +468,7 @@ when defined(Windows) and not defined(useNimRtl): fileClose(si.hStdError) if e != nil: dealloc(e) - if success == 0: raiseOSError(lastError) + if success == 0: raiseOSError(lastError, command) # Close the handle now so anyone waiting is woken: discard closeHandle(procInfo.hThread) result.fProcessHandle = procInfo.hProcess