changeset 30311:80708959161a

scmutil: narrow ImportError handling in termwidth() The array module must exist. It's sufficient to suppress the ImportError of termios. Also salvaged the comment why we have to handle AttributeError, from 7002bb17cc5e.
author Yuya Nishihara <yuya@tcha.org>
date Thu, 20 Oct 2016 21:50:29 +0900
parents 5c379b1f56c7
children 1ad1c5017043
files mercurial/scmposix.py
diffstat 1 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/scmposix.py	Thu Oct 20 21:42:11 2016 +0900
+++ b/mercurial/scmposix.py	Thu Oct 20 21:50:29 2016 +0900
@@ -1,5 +1,6 @@
 from __future__ import absolute_import
 
+import array
 import errno
 import fcntl
 import os
@@ -43,8 +44,11 @@
 
 def termwidth(ui):
     try:
-        import array
         import termios
+        TIOCGWINSZ = termios.TIOCGWINSZ  # unavailable on IRIX (issue3449)
+    except (AttributeError, ImportError):
+        return 80
+    if True:
         for dev in (ui.ferr, ui.fout, ui.fin):
             try:
                 try:
@@ -53,13 +57,11 @@
                     continue
                 if not os.isatty(fd):
                     continue
-                try:
-                    arri = fcntl.ioctl(fd, termios.TIOCGWINSZ, '\0' * 8)
+                if True:
+                    arri = fcntl.ioctl(fd, TIOCGWINSZ, '\0' * 8)
                     width = array.array('h', arri)[1]
                     if width > 0:
                         return width
-                except AttributeError:
-                    pass
             except ValueError:
                 pass
             except IOError as e:
@@ -67,6 +69,4 @@
                     pass
                 else:
                     raise
-    except ImportError:
-        pass
     return 80