X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fbup%2Foptions.py;h=394b71daed2311e9417cd97353e9b12975b7b288;hb=c40b3dd5fd74e72024fbaad3daf5a958aefa1c54;hp=a15220a92da5680d66bde2b854c8dc4696ecfaf5;hpb=7f943240f5a54976b94c189f2a991c9c5ef22865;p=bup.git diff --git a/lib/bup/options.py b/lib/bup/options.py index a15220a..394b71d 100644 --- a/lib/bup/options.py +++ b/lib/bup/options.py @@ -60,8 +60,20 @@ Options can be put in different groups. Options in the same group must be on 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: @@ -123,15 +135,18 @@ def _atoi(v): 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: @@ -247,12 +262,12 @@ 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: