aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYen Chi Hsuan <yan12125@gmail.com>2015-09-13 20:04:27 +0800
committerJaime Marquínez Ferrándiz <jaime.marquinez.ferrandiz@gmail.com>2015-10-03 00:00:33 +0200
commit13118a50b88c26fe5d932eccf77e297249a78634 (patch)
tree61c81e2a63393e3adbd9b58e9763f477c0f09897
parent5495937f461268a850a6a54d3fe19ed1f0f01eef (diff)
[compat] Allow overriding by only COLUMNS or LINES in compat_get_terminal_size
Now the semantic of this function is identical to shutil.get_terminal_size() in Python 3.3+. The new behavior also corresponds to the old get_term_width(), which is removed in 003c69a84b68cadb46aeb8e03115848a722fd675
-rw-r--r--youtube_dl/compat.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/youtube_dl/compat.py b/youtube_dl/compat.py
index 1ff42d94b..c36c9c23f 100644
--- a/youtube_dl/compat.py
+++ b/youtube_dl/compat.py
@@ -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: