scmutil: narrow ImportError handling in termwidth()
authorYuya Nishihara <yuya@tcha.org>
Thu, 20 Oct 2016 21:50:29 +0900
changeset 30311 80708959161a
parent 30310 5c379b1f56c7
child 30312 1ad1c5017043
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.
mercurial/scmposix.py
--- 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