[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-----
--- 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)
+
+