Mercurial > hg
view mercurial/util.py @ 545:721bfca3a9dc
Work-around failing tests/test-bad-pull with slow bg process.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Work-around failing tests/test-bad-pull with slow bg process.
Without the 'sleep 2' python dumb.py often appeared after hg clone.
manifest hash: b32381ac46a7691f2a92595b650b2406853644c2
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFCxOM+W7P1GVgWeRoRAjgTAJ9OqrikdK043Eiyyx9dG8DR1XZ7tgCggdmM
AVYvAZO3P+WlaWDu3MaxEXY=
=0XN5
-----END PGP SIGNATURE-----
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 01 Jul 2005 07:31:26 +0100 |
parents | 0fb8ade0f756 |
children | f6c6fa15ff70 |
line wrap: on
line source
# util.py - utility functions and platform specfic implementations # # Copyright 2005 K. Thananchayan <thananck@yahoo.com> # # This software may be used and distributed according to the terms # of the GNU General Public License, incorporated herein by reference. import os class CommandError(Exception): pass def explain_exit(code): """return a 2-tuple (desc, code) describing a process's status""" if os.WIFEXITED(code): val = os.WEXITSTATUS(code) return "exited with status %d" % val, val elif os.WIFSIGNALED(code): val = os.WTERMSIG(code) return "killed by signal %d" % val, val elif os.WIFSTOPPED(code): val = os.STOPSIG(code) return "stopped by signal %d" % val, val raise ValueError("invalid exit code") def system(cmd, errprefix=None): """execute a shell command that must succeed""" rc = os.system(cmd) if rc: errmsg = "%s %s" % (os.path.basename(cmd.split(None, 1)[0]), explain_exit(rc)[0]) if errprefix: errmsg = "%s: %s" % (errprefix, errmsg) raise CommandError(errmsg) def rename(src, dst): try: os.rename(src, dst) except: os.unlink(dst) os.rename(src, dst) # Platfor specific varients if os.name == 'nt': nulldev = 'NUL:' def is_exec(f, last): return last def set_exec(f, mode): pass def pconvert(path): return path.replace("\\", "/") def makelock(info, pathname): ld = os.open(pathname, os.O_CREAT | os.O_WRONLY | os.O_EXCL) os.write(ld, info) os.close(ld) def readlock(pathname): return file(pathname).read() else: nulldev = '/dev/null' def is_exec(f, last): return (os.stat(f).st_mode & 0100 != 0) def set_exec(f, mode): s = os.stat(f).st_mode if (s & 0100 != 0) == mode: return if mode: # Turn on +x for every +r bit when making a file executable # and obey umask. umask = os.umask(0) os.umask(umask) os.chmod(f, s | (s & 0444) >> 2 & ~umask) else: os.chmod(f, s & 0666) def pconvert(path): return path def makelock(info, pathname): os.symlink(info, pathname) def readlock(pathname): return os.readlink(pathname)