# HG changeset patch # User Siddharth Agarwal # Date 2015-09-17 02:26:59 # Node ID 9664d32bd6cb98ed2112a97307ef234b33266d4a # Parent c4b667a7a51ddb2d2e728d4b708718af8ff5aa68 lock: factor code to read lock into a separate function This is going to be needed for upcoming work with lock inheritance. diff --git a/mercurial/lock.py b/mercurial/lock.py --- a/mercurial/lock.py +++ b/mercurial/lock.py @@ -100,6 +100,19 @@ class lock(object): raise error.LockUnavailable(why.errno, why.strerror, why.filename, self.desc) + def _readlock(self): + """read lock and return its value + + Returns None if no lock exists, pid for old-style locks, and host:pid + for new-style locks. + """ + try: + return self.vfs.readlock(self.f) + except (OSError, IOError) as why: + if why.errno == errno.ENOENT: + return None + raise + def testlock(self): """return id of locker if lock is valid, else None. @@ -111,12 +124,9 @@ class lock(object): The lock file is only deleted when None is returned. """ - try: - locker = self.vfs.readlock(self.f) - except (OSError, IOError) as why: - if why.errno == errno.ENOENT: - return None - raise + locker = self._readlock() + if locker is None: + return None try: host, pid = locker.split(":", 1) except ValueError: