|
@@ -416,7 +416,7 @@ if hasattr(shutil, 'get_terminal_size'): # Python >= 3.3
|
|
|
else:
|
|
|
_terminal_size = collections.namedtuple('terminal_size', ['columns', 'lines'])
|
|
|
|
|
|
- def compat_get_terminal_size():
|
|
|
+ def compat_get_terminal_size(fallback=(80, 24)):
|
|
|
columns = compat_getenv('COLUMNS', None)
|
|
|
if columns:
|
|
|
columns = int(columns)
|
|
@@ -428,14 +428,20 @@ else:
|
|
|
else:
|
|
|
lines = None
|
|
|
|
|
|
- try:
|
|
|
- sp = subprocess.Popen(
|
|
|
- ['stty', 'size'],
|
|
|
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
|
- out, err = sp.communicate()
|
|
|
- lines, columns = map(int, out.split())
|
|
|
- except Exception:
|
|
|
- pass
|
|
|
+ if columns <= 0 or lines <= 0:
|
|
|
+ try:
|
|
|
+ sp = subprocess.Popen(
|
|
|
+ ['stty', 'size'],
|
|
|
+ stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
|
+ out, err = sp.communicate()
|
|
|
+ _columns, _lines = map(int, out.split())
|
|
|
+ except Exception:
|
|
|
+ _columns, _lines = _terminal_size(*fallback)
|
|
|
+
|
|
|
+ if columns <= 0:
|
|
|
+ columns = _columns
|
|
|
+ if lines <= 0:
|
|
|
+ lines = _lines
|
|
|
return _terminal_size(columns, lines)
|
|
|
|
|
|
try:
|