From 52b4e8f661c9db57677d4236a1f39c3cc028147b Mon Sep 17 00:00:00 2001 From: "A. S. Budden" Date: Sun, 12 Jun 2016 07:40:28 +0100 Subject: [PATCH] Added setStdIoUnbuffered for unbuffered stdio (fixes #2146). --- lib/system.nim | 3 +++ lib/system/sysio.nim | 5 +++++ web/news/version_0_15_released.rst | 1 + 3 files changed, 9 insertions(+) diff --git a/lib/system.nim b/lib/system.nim index d58d00ae9f37..504d215eaa1a 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2708,6 +2708,9 @@ when not defined(JS): #and not defined(nimscript): ## ## Default mode is readonly. Returns true iff the file could be reopened. + proc setStdIoUnbuffered() {.tags: [], benign.} + ## Configures `stdin`, `stdout` and `stderr` to be unbuffered. + proc close*(f: File) {.importc: "fclose", header: "", tags: [].} ## Closes the file. diff --git a/lib/system/sysio.nim b/lib/system/sysio.nim index 2fcfd69d8eed..bf3be955dc59 100644 --- a/lib/system/sysio.nim +++ b/lib/system/sysio.nim @@ -354,4 +354,9 @@ proc writeFile(filename, content: string) = else: sysFatal(IOError, "cannot open: ", filename) +proc setStdIoUnbuffered() = + discard setvbuf(stdout, nil, IONBF, 0) + discard setvbuf(stderr, nil, IONBF, 0) + discard setvbuf(stdin, nil, IONBF, 0) + {.pop.} diff --git a/web/news/version_0_15_released.rst b/web/news/version_0_15_released.rst index 4cc5fb2a72f0..9ca8c3ec5707 100644 --- a/web/news/version_0_15_released.rst +++ b/web/news/version_0_15_released.rst @@ -14,6 +14,7 @@ Changes affecting backwards compatibility Library Additions ----------------- +- Added ``setStdIoUnbuffered`` proc to ``system.nim`` to enable unbuffered I/O. Compiler Additions ------------------