handle out of range value for COLUMNS / LINES (#21968)

* handle out of range value for `COLUMNS` / `LINES`

Querying terminal size may fail with a `ValueError` if size is too big.
Return highest possible value instead. Note that `ValueError` is also
reported on underflow (negative size) but that is out of POSIX specs.

* `parseSaturatedNatural`
This commit is contained in:
Etan Kissling
2023-05-31 19:10:58 +02:00
committed by GitHub
parent 0e5c18a73a
commit b880cdff49

View File

@@ -305,7 +305,7 @@ else:
var w: int
var s = getEnv("COLUMNS") # Try standard env var
if len(s) > 0 and parseInt(s, w) > 0 and w > 0:
if len(s) > 0 and parseSaturatedNatural(s, w) > 0 and w > 0:
return w
w = terminalWidthIoctl([0, 1, 2]) # Try standard file descriptors
if w > 0: return w
@@ -339,7 +339,7 @@ else:
var h: int
var s = getEnv("LINES") # Try standard env var
if len(s) > 0 and parseInt(s, h) > 0 and h > 0:
if len(s) > 0 and parseSaturatedNatural(s, h) > 0 and h > 0:
return h
h = terminalHeightIoctl([0, 1, 2]) # Try standard file descriptors
if h > 0: return h