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.
--- 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