summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorCharles Blake <cb@cblake.net>2016-09-01 08:49:07 -0400
committerCharles Blake <cb@cblake.net>2016-09-01 08:49:07 -0400
commitd65589fe27c68e7e928c027898acd01cbed58d89 (patch)
treeed5a6970b9a07c9a84aa1e2339a586462b241fed /lib/pure
parent8df2078f08ad0abf3f50632ae783a997eb64b3be (diff)
downloadNim-d65589fe27c68e7e928c027898acd01cbed58d89.tar.gz
Make Windows part match Unix part more closely per Araq request.
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/terminal.nim15
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/pure/terminal.nim b/lib/pure/terminal.nim
index 4fdb04e4f..15c7f7323 100644
--- a/lib/pure/terminal.nim
+++ b/lib/pure/terminal.nim
@@ -60,19 +60,18 @@ when defined(windows):
     lpConsoleScreenBufferInfo: ptr CONSOLE_SCREEN_BUFFER_INFO): WINBOOL{.stdcall,
     dynlib: "kernel32", importc: "GetConsoleScreenBufferInfo".}
 
-  proc terminalWidth*(h: Handle): int =
+  proc terminalWidthIoctl*(handles: openArray[Handle]): int =
     var csbi: CONSOLE_SCREEN_BUFFER_INFO
-    if getConsoleScreenBufferInfo(h, addr csbi) != 0:
-      return int(csbi.srWindow.Right - csbi.srWindow.Left + 1)
+    for h in handles:
+      if getConsoleScreenBufferInfo(h, addr csbi) != 0:
+        return int(csbi.srWindow.Right - csbi.srWindow.Left + 1)
     return 0
 
   proc terminalWidth*(): int =
     var w: int = 0
-    w = terminalWidth(getStdHandle(STD_INPUT_HANDLE))
-    if w > 0: return w
-    w = terminalWidth(getStdHandle(STD_OUTPUT_HANDLE))
-    if w > 0: return w
-    w = terminalWidth(getStdHandle(STD_ERROR_HANDLE))
+    w = terminalWidth([ getStdHandle(STD_INPUT_HANDLE),
+                        getStdHandle(STD_OUTPUT_HANDLE),
+                        getStdHandle(STD_ERROR_HANDLE) ] )
     if w > 0: return w
     return 80