consecutive lines. Groups are formed by inserting a line that begins with a
space. The text on that line will be output after an empty line.
"""
+
+from __future__ import absolute_import
import sys, os, textwrap, getopt, re, struct
+try:
+ import fcntl
+except ImportError:
+ fcntl = None
+
+try:
+ import termios
+except ImportError:
+ termios = None
+
def _invert(v, invert):
if invert:
return 0
-def _tty_width():
- s = struct.pack("HHHH", 0, 0, 0, 0)
- try:
- import fcntl, termios
- s = fcntl.ioctl(sys.stderr.fileno(), termios.TIOCGWINSZ, s)
- except (IOError, ImportError):
- return _atoi(os.environ.get('WIDTH')) or 70
- (ysize,xsize,ypix,xpix) = struct.unpack('HHHH', s)
- return xsize or 70
+if not fcntl and termios:
+ def _tty_width():
+ return 70
+else:
+ def _tty_width():
+ s = struct.pack("HHHH", 0, 0, 0, 0)
+ try:
+ s = fcntl.ioctl(sys.stderr.fileno(), termios.TIOCGWINSZ, s)
+ except IOError:
+ return 70
+ ysize, xsize, ypix, xpix = struct.unpack('HHHH', s)
+ return xsize or 70
class Options:
"""
try:
(flags,extra) = self.optfunc(args, self._shortopts, self._longopts)
- except getopt.GetoptError, e:
+ except getopt.GetoptError as e:
self.fatal(e)
opt = OptDict(aliases=self._aliases)
- for k,v in self._defaults.iteritems():
+ for k,v in self._defaults.items():
opt[k] = v
for (k,v) in flags: