~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Jelmer Vernooij
  • Date: 2011-01-13 01:32:26 UTC
  • mfrom: (5606 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5607.
  • Revision ID: jelmer@samba.org-20110113013226-1d41bwtmps9y68wm
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
1461
1461
    # a similar effect.
1462
1462
 
1463
1463
    # If BZR_COLUMNS is set, take it, user is always right
 
1464
    # Except if they specified 0 in which case, impose no limit here
1464
1465
    try:
1465
 
        return int(os.environ['BZR_COLUMNS'])
 
1466
        width = int(os.environ['BZR_COLUMNS'])
1466
1467
    except (KeyError, ValueError):
1467
 
        pass
 
1468
        width = None
 
1469
    if width is not None:
 
1470
        if width > 0:
 
1471
            return width
 
1472
        else:
 
1473
            return None
1468
1474
 
1469
1475
    isatty = getattr(sys.stdout, 'isatty', None)
1470
1476
    if isatty is None or not isatty():
1995
2001
# data at once.
1996
2002
MAX_SOCKET_CHUNK = 64 * 1024
1997
2003
 
 
2004
_end_of_stream_errors = [errno.ECONNRESET]
 
2005
for _eno in ['WSAECONNRESET', 'WSAECONNABORTED']:
 
2006
    _eno = getattr(errno, _eno, None)
 
2007
    if _eno is not None:
 
2008
        _end_of_stream_errors.append(_eno)
 
2009
del _eno
 
2010
 
 
2011
 
1998
2012
def read_bytes_from_socket(sock, report_activity=None,
1999
2013
        max_read_size=MAX_SOCKET_CHUNK):
2000
2014
    """Read up to max_read_size of bytes from sock and notify of progress.
2008
2022
            bytes = sock.recv(max_read_size)
2009
2023
        except socket.error, e:
2010
2024
            eno = e.args[0]
2011
 
            if eno == getattr(errno, "WSAECONNRESET", errno.ECONNRESET):
 
2025
            if eno in _end_of_stream_errors:
2012
2026
                # The connection was closed by the other side.  Callers expect
2013
2027
                # an empty string to signal end-of-stream.
2014
2028
                return ""
2376
2390
        counter += 1
2377
2391
        name = "%s.~%d~" % (base, counter)
2378
2392
    return name
 
2393
 
 
2394
 
 
2395
def set_fd_cloexec(fd):
 
2396
    """Set a Unix file descriptor's FD_CLOEXEC flag.  Do nothing if platform
 
2397
    support for this is not available.
 
2398
    """
 
2399
    try:
 
2400
        import fcntl
 
2401
        old = fcntl.fcntl(fd, fcntl.F_GETFD)
 
2402
        fcntl.fcntl(fd, fcntl.F_SETFD, old | fcntl.FD_CLOEXEC)
 
2403
    except (ImportError, AttributeError):
 
2404
        # Either the fcntl module or specific constants are not present
 
2405
        pass