~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/osutils.py

  • Committer: Vincent Ladeuil
  • Date: 2011-06-27 15:42:09 UTC
  • mfrom: (5993 +trunk)
  • mto: (5993.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 5994.
  • Revision ID: v.ladeuil+lp@free.fr-20110627154209-azubuhbuxsz109hq
Merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
2381
2381
    except UnicodeDecodeError:
2382
2382
        raise errors.BzrError("Can't decode username as %s." % \
2383
2383
                user_encoding)
 
2384
    except ImportError, e:
 
2385
        if sys.platform != 'win32':
 
2386
            raise
 
2387
        if str(e) != 'No module named pwd':
 
2388
            raise
 
2389
        # https://bugs.launchpad.net/bzr/+bug/660174
 
2390
        # getpass.getuser() is unable to return username on Windows
 
2391
        # if there is no USERNAME environment variable set.
 
2392
        # That could be true if bzr is running as a service,
 
2393
        # e.g. running `bzr serve` as a service on Windows.
 
2394
        # We should not fail with traceback in this case.
 
2395
        username = u'UNKNOWN'
2384
2396
    return username
2385
2397
 
2386
2398
 
2448
2460
            if os.access(f, os.X_OK):
2449
2461
                return f
2450
2462
    return None
 
2463
 
 
2464
 
 
2465
def _posix_is_local_pid_dead(pid):
 
2466
    """True if pid doesn't correspond to live process on this machine"""
 
2467
    try:
 
2468
        # Special meaning of unix kill: just check if it's there.
 
2469
        os.kill(pid, 0)
 
2470
    except OSError, e:
 
2471
        if e.errno == errno.ESRCH:
 
2472
            # On this machine, and really not found: as sure as we can be
 
2473
            # that it's dead.
 
2474
            return True
 
2475
        elif e.errno == errno.EPERM:
 
2476
            # exists, though not ours
 
2477
            return False
 
2478
        else:
 
2479
            mutter("os.kill(%d, 0) failed: %s" % (pid, e))
 
2480
            # Don't really know.
 
2481
            return False
 
2482
    else:
 
2483
        # Exists and our process: not dead.
 
2484
        return False
 
2485
 
 
2486
if sys.platform == "win32":
 
2487
    is_local_pid_dead = win32utils.is_local_pid_dead
 
2488
else:
 
2489
    is_local_pid_dead = _posix_is_local_pid_dead