Make Windows part match Unix part more closely per Araq request.

This commit is contained in:
Charles Blake
2016-09-01 08:49:07 -04:00
parent 8df2078f08
commit d65589fe27

View File

@@ -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