Mercurial > hg > mercurial-crew-with-dirclash
view mercurial/util.py @ 520:12b4b5612fe4
Add some TODO items
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Add some TODO items
manifest hash: d188abf3c84b6ca98279b4bf053ce2844da83a03
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCwvKyywK+sNU5EO8RAh9ZAJ9kYA0a/R7XynWqZGGr6JqUvXa37wCfd2a2
F9fCY85bSZgErvdrklP29bQ=
=FtlU
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Wed, 29 Jun 2005 11:12:50 -0800 |
parents | 03f27b1381f9 |
children | 0fb8ade0f756 |
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 = "abort"): """execute a shell command that must succeed""" rc = os.system(cmd) if rc: errmsg = "%s: %s %s" % (errprefix, os.path.basename(cmd.split(None, 1)[0]), explain_exit(rc)[0]) 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)