~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Ross Lagerwall
  • Date: 2012-08-07 06:32:51 UTC
  • mto: (6437.63.5 2.5)
  • mto: This revision was merged to the branch mainline in revision 6558.
  • Revision ID: rosslagerwall@gmail.com-20120807063251-x9p03ghg2ws8oqjc
Add bzrlib/locale to .bzrignore

bzrlib/locale is generated with ./setup.py build_mo which is in turn called
by ./setup.py build

Show diffs side-by-side

added added

removed removed

Lines of Context:
450
450
    return unicodedata.normalize('NFC', os.getcwdu())
451
451
 
452
452
 
453
 
def _rename_wrap_exception(rename_func):
454
 
    """Adds extra information to any exceptions that come from rename().
455
 
 
456
 
    The exception has an updated message and 'old_filename' and 'new_filename'
457
 
    attributes.
458
 
    """
459
 
 
460
 
    def _rename_wrapper(old, new):
461
 
        try:
462
 
            rename_func(old, new)
463
 
        except OSError, e:
464
 
            detailed_error = OSError(e.errno, e.strerror +
465
 
                                " [occurred when renaming '%s' to '%s']" %
466
 
                                (old, new))
467
 
            detailed_error.old_filename = old
468
 
            detailed_error.new_filename = new
469
 
            raise detailed_error
470
 
 
471
 
    return _rename_wrapper
472
 
 
473
 
# Default rename wraps os.rename()
474
 
rename = _rename_wrap_exception(os.rename)
475
 
 
476
453
# Default is to just use the python builtins, but these can be rebound on
477
454
# particular platforms.
478
455
abspath = _posix_abspath
483
460
_get_home_dir = _posix_get_home_dir
484
461
getuser_unicode = _posix_getuser_unicode
485
462
getcwd = os.getcwdu
 
463
rename = os.rename
486
464
dirname = os.path.dirname
487
465
basename = os.path.basename
488
466
split = os.path.split
510
488
    normpath = _win32_normpath
511
489
    getcwd = _win32_getcwd
512
490
    mkdtemp = _win32_mkdtemp
513
 
    rename = _rename_wrap_exception(_win32_rename)
 
491
    rename = _win32_rename
514
492
    try:
515
493
        from bzrlib import _walkdirs_win32
516
494
    except ImportError:
2086
2064
# data at once.
2087
2065
MAX_SOCKET_CHUNK = 64 * 1024
2088
2066
 
2089
 
_end_of_stream_errors = [errno.ECONNRESET, errno.EPIPE, errno.EINVAL]
 
2067
_end_of_stream_errors = [errno.ECONNRESET]
2090
2068
for _eno in ['WSAECONNRESET', 'WSAECONNABORTED']:
2091
2069
    _eno = getattr(errno, _eno, None)
2092
2070
    if _eno is not None:
2158
2136
    while sent_total < byte_count:
2159
2137
        try:
2160
2138
            sent = sock.send(buffer(bytes, sent_total, MAX_SOCKET_CHUNK))
2161
 
        except (socket.error, IOError), e:
2162
 
            if e.args[0] in _end_of_stream_errors:
2163
 
                raise errors.ConnectionReset(
2164
 
                    "Error trying to write to socket", e)
 
2139
        except socket.error, e:
2165
2140
            if e.args[0] != errno.EINTR:
2166
2141
                raise
2167
2142
        else:
2168
 
            if sent == 0:
2169
 
                raise errors.ConnectionReset('Sending to %s returned 0 bytes'
2170
 
                                             % (sock,))
2171
2143
            sent_total += sent
2172
 
            if report_activity is not None:
2173
 
                report_activity(sent, 'write')
 
2144
            report_activity(sent, 'write')
2174
2145
 
2175
2146
 
2176
2147
def connect_socket(address):
2554
2525
else:
2555
2526
    is_local_pid_dead = _posix_is_local_pid_dead
2556
2527
 
2557
 
_maybe_ignored = ['EAGAIN', 'EINTR', 'ENOTSUP', 'EOPNOTSUPP', 'EACCES']
2558
 
_fdatasync_ignored = [getattr(errno, name) for name in _maybe_ignored
2559
 
                      if getattr(errno, name, None) is not None]
2560
 
 
2561
2528
 
2562
2529
def fdatasync(fileno):
2563
2530
    """Flush file contents to disk if possible.
2567
2534
    """
2568
2535
    fn = getattr(os, 'fdatasync', getattr(os, 'fsync', None))
2569
2536
    if fn is not None:
2570
 
        try:
2571
 
            fn(fileno)
2572
 
        except IOError, e:
2573
 
            # See bug #1075108, on some platforms fdatasync exists, but can
2574
 
            # raise ENOTSUP. However, we are calling fdatasync to be helpful
2575
 
            # and reduce the chance of corruption-on-powerloss situations. It
2576
 
            # is not a mandatory call, so it is ok to suppress failures.
2577
 
            trace.mutter("ignoring error calling fdatasync: %s" % (e,))
2578
 
            if getattr(e, 'errno', None) not in _fdatasync_ignored:
2579
 
                raise
 
2537
        fn(fileno)
2580
2538
 
2581
2539
 
2582
2540
def ensure_empty_directory_exists(path, exception_class):