# HG changeset patch # User Paul Boddie # Date 1445987568 -3600 # Node ID 23c1f8a2f08ac667a9f1025438568b017c63ecb3 # Parent 415c72ac473323185a922480c151ca15f6f8834a Ensure that the store directory is an absolute path. Provide an exception if the lock location cannot be computed for some reason. diff -r 415c72ac4733 -r 23c1f8a2f08a imiptools/filesys.py --- a/imiptools/filesys.py Tue Oct 27 23:53:51 2015 +0100 +++ b/imiptools/filesys.py Wed Oct 28 00:12:48 2015 +0100 @@ -85,7 +85,7 @@ old_lock_name = "__unlock__" def __init__(self, store_dir): - self.store_dir = store_dir + self.store_dir = abspath(store_dir) if not exists(self.store_dir): makedirs(self.store_dir) fix_permissions(self.store_dir, True) @@ -119,7 +119,7 @@ for part in parts: filename = self.get_file_object(expected, part) if not filename: - return False + return None parent = expected expected = filename @@ -157,9 +157,13 @@ parts = parts and list(parts) or [] parts.append(self.lock_name) - mkdir(self.get_object_in_store(*parts)) + d = self.get_object_in_store(*parts) + if not d: raise OSError(errno.ENOENT, "Could not get lock in store: %r in %r" % (parts, self.store_dir)) + mkdir(d) parts.append(str(getpid())) - mkdir(self.get_object_in_store(*parts)) + d = self.get_object_in_store(*parts) + if not d: raise OSError(errno.ENOENT, "Could not get lock in store: %r in %r" % (parts, self.store_dir)) + mkdir(d) def remove_lock_dir(self, *parts):