diff options
author | Charles Blake <cb@cblake.net> | 2016-09-01 08:49:07 -0400 |
---|---|---|
committer | Charles Blake <cb@cblake.net> | 2016-09-01 08:49:07 -0400 |
commit | d65589fe27c68e7e928c027898acd01cbed58d89 (patch) | |
tree | ed5a6970b9a07c9a84aa1e2339a586462b241fed /lib/pure | |
parent | 8df2078f08ad0abf3f50632ae783a997eb64b3be (diff) | |
download | Nim-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.nim | 15 |
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 |