Mercurial > hg
changeset 422:10c43444a38e
[PATCH] Enables lock work under the other 'OS'
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[PATCH] Enables lock work under the other 'OS'
From: K Thananchayan <thananck@yahoo.com>
os.symlink is not supported under Windows. This patch
introduces util.mklockf, util.getlowner that use
regular files under Winodws but symlink under unix.
tweaked by mpm:
- changed function names
- fixed to work on UNIX
manifest hash: 6f650a78a3b203dcad2f861582500b6b4036599a
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCuN5sywK+sNU5EO8RAva8AJ9L9z/JHRAJS1bix48ZzSpn9ZUyPwCffhmg
UfLSFBmd5tPDDi3mgsrdDEA=
=ZYS9
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Tue, 21 Jun 2005 19:43:40 -0800 |
parents | 43b8da7420a9 |
children | 183c87d4e1a0 |
files | mercurial/lock.py mercurial/util.py |
diffstat | 2 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/lock.py Tue Jun 21 19:36:35 2005 -0800 +++ b/mercurial/lock.py Tue Jun 21 19:43:40 2005 -0800 @@ -6,6 +6,7 @@ # of the GNU General Public License, incorporated herein by reference. import os, time +import util class LockHeld(Exception): pass @@ -34,10 +35,10 @@ def trylock(self): pid = os.getpid() try: - os.symlink(str(pid), self.f) + util.makelock(str(pid), self.f) self.held = 1 except: - raise LockHeld(os.readlink(self.f)) + raise LockHeld(util.readlock(self.f)) def release(self): if self.held:
--- a/mercurial/util.py Tue Jun 21 19:36:35 2005 -0800 +++ b/mercurial/util.py Tue Jun 21 19:43:40 2005 -0800 @@ -18,7 +18,22 @@ if os.name == 'nt': 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: def pconvert(path): return path + def makelock(info, pathname): + os.symlink(info, pathname) + + def readlock(pathname): + return os.readlink(pathname) + +