diff options
Diffstat (limited to 'blessings/__init__.py')
-rw-r--r-- | blessings/__init__.py | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/blessings/__init__.py b/blessings/__init__.py index 8183265..4506869 100644 --- a/blessings/__init__.py +++ b/blessings/__init__.py @@ -217,10 +217,13 @@ class Terminal(object): return self._height_and_width()[1] def _height_and_width(self): - """Return a tuple of (terminal height, terminal width), - using TIOCGWINSZ (Terminal I/O-Control: Get Window Size), - falling back to environment variables (LINES, COLUMNS), - and 24 x 80 when otherwise unavailable.""" + """Return a tuple of (terminal height, terminal width). + + Start by trying TIOCGWINSZ (Terminal I/O-Control: Get Window Size), + falling back to environment variables (LINES, COLUMNS), and returning + (None, None) if those are unavailable or invalid. + + """ # tigetnum('lines') and tigetnum('cols') update only if we call # setupterm() again. for descriptor in self._init_descriptor, sys.__stdout__: @@ -232,9 +235,10 @@ class Terminal(object): # as when when stdout is piped to another program, fe. tee(1), # these ioctls will raise IOError pass - lines, cols = (int(environ.get('LINES', '24')), - int(environ.get('COLUMNS', '80'))) - return lines, cols + try: + return int(environ.get('LINES')), int(environ.get('COLUMNS')) + except TypeError: + return None, None @contextmanager def location(self, x=None, y=None): |