diff --git a/src/calibre/db/restore.py b/src/calibre/db/restore.py index 1440bd444b..3f513de100 100644 --- a/src/calibre/db/restore.py +++ b/src/calibre/db/restore.py @@ -99,7 +99,16 @@ class Restore(Thread): def run(self): try: - with TemporaryDirectory('relib') as tdir: + basedir = os.path.dirname(self.src_library_path) + try: + tdir = TemporaryDirectory('_rlib', dir=basedir) + tdir.__enter__() + except EnvironmentError: + # Incase we dont have permissions to create directories in the + # parent folder of the src library + tdir = TemporaryDirectory('_rlib') + + with tdir as tdir: self.library_path = tdir self.scan_library() if not self.load_preferences(): diff --git a/src/calibre/ptempfile.py b/src/calibre/ptempfile.py index f3816f766b..83c39d6b34 100644 --- a/src/calibre/ptempfile.py +++ b/src/calibre/ptempfile.py @@ -170,7 +170,8 @@ class TemporaryDirectory(object): self.keep = keep def __enter__(self): - self.tdir = _make_dir(self.suffix, self.prefix, self.dir) + if not hasattr(self, 'tdir'): + self.tdir = _make_dir(self.suffix, self.prefix, self.dir) return self.tdir def __exit__(self, *args):