diff options
Diffstat (limited to 'lib/impure/rdstdin.nim')
-rw-r--r-- | lib/impure/rdstdin.nim | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/lib/impure/rdstdin.nim b/lib/impure/rdstdin.nim index c580b89d1..f4fc26380 100644 --- a/lib/impure/rdstdin.nim +++ b/lib/impure/rdstdin.nim @@ -22,11 +22,16 @@ runnableExamples("-r:off"): if line.len > 0: echo line echo "exiting" + when defined(windows): + when defined(nimPreviewSlimSystem): + import std/syncio + proc readLineFromStdin*(prompt: string): string {. tags: [ReadIOEffect, WriteIOEffect].} = ## Reads a line from stdin. stdout.write(prompt) + stdout.flushFile() result = readLine(stdin) proc readLineFromStdin*(prompt: string, line: var string): bool {. @@ -50,17 +55,7 @@ elif defined(genode): stdin.readLine(line) else: - import linenoise - - proc readLineFromStdin*(prompt: string): string {. - tags: [ReadIOEffect, WriteIOEffect].} = - var buffer = linenoise.readLine(prompt) - if isNil(buffer): - raise newException(IOError, "Linenoise returned nil") - result = $buffer - if result.len > 0: - historyAdd(buffer) - linenoise.free(buffer) + import std/linenoise proc readLineFromStdin*(prompt: string, line: var string): bool {. tags: [ReadIOEffect, WriteIOEffect].} = @@ -73,3 +68,7 @@ else: historyAdd(buffer) linenoise.free(buffer) result = true + + proc readLineFromStdin*(prompt: string): string {.inline.} = + if not readLineFromStdin(prompt, result): + raise newException(IOError, "Linenoise returned nil") |