~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Patch Queue Manager
  • Date: 2012-03-04 18:21:04 UTC
  • mfrom: (6468.4.3 509275-lp-fixes)
  • Revision ID: pqm@pqm.ubuntu.com-20120304182104-8y1tdavoblrrhflc
(jelmer) Add --link-bug option to 'bzr lp-propose'. (Ross Lagerwall)

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:
2495
2473
    :param name: The base name of the executable.
2496
2474
    :return: The path to the executable found or None.
2497
2475
    """
 
2476
    path = os.environ.get('PATH')
 
2477
    if path is None:
 
2478
        return None
 
2479
    path = path.split(os.pathsep)
2498
2480
    if sys.platform == 'win32':
2499
2481
        exts = os.environ.get('PATHEXT', '').split(os.pathsep)
2500
2482
        exts = [ext.lower() for ext in exts]
2506
2488
            exts = [ext]
2507
2489
    else:
2508
2490
        exts = ['']
2509
 
    path = os.environ.get('PATH')
2510
 
    if path is not None:
2511
 
        path = path.split(os.pathsep)
2512
 
        for ext in exts:
2513
 
            for d in path:
2514
 
                f = os.path.join(d, name) + ext
2515
 
                if os.access(f, os.X_OK):
2516
 
                    return f
2517
 
    if sys.platform == 'win32':
2518
 
        app_path = win32utils.get_app_path(name)
2519
 
        if app_path != name:
2520
 
            return app_path
 
2491
    for ext in exts:
 
2492
        for d in path:
 
2493
            f = os.path.join(d, name) + ext
 
2494
            if os.access(f, os.X_OK):
 
2495
                return f
2521
2496
    return None
2522
2497
 
2523
2498