--- a/mercurial/scmposix.py Sun Nov 06 00:37:50 2016 -0700
+++ b/mercurial/scmposix.py Thu Oct 20 21:38:44 2016 +0900
@@ -1,5 +1,7 @@
from __future__ import absolute_import
+import errno
+import fcntl
import os
import sys
@@ -38,3 +40,33 @@
return [encoding.environ['home'] + '/lib/hgrc']
else:
return [os.path.expanduser('~/.hgrc')]
+
+def termwidth():
+ try:
+ import array
+ import termios
+ for dev in (sys.stderr, sys.stdout, sys.stdin):
+ try:
+ try:
+ fd = dev.fileno()
+ except AttributeError:
+ continue
+ if not os.isatty(fd):
+ continue
+ try:
+ arri = fcntl.ioctl(fd, termios.TIOCGWINSZ, '\0' * 8)
+ width = array.array('h', arri)[1]
+ if width > 0:
+ return width
+ except AttributeError:
+ pass
+ except ValueError:
+ pass
+ except IOError as e:
+ if e[0] == errno.EINVAL:
+ pass
+ else:
+ raise
+ except ImportError:
+ pass
+ return 80