diff --git a/borg/archiver.py b/borg/archiver.py index e595715ba..98f2a0e41 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -137,14 +137,14 @@ def create_inner(archive, cache): try: st = os.stat(get_cache_dir()) skip_inodes.add((st.st_ino, st.st_dev)) - except IOError: + except OSError: pass # Add local repository dir to inode_skip list if not args.location.host: try: st = os.stat(args.location.path) skip_inodes.add((st.st_ino, st.st_dev)) - except IOError: + except OSError: pass for path in args.paths: if path == '-': # stdin @@ -152,7 +152,7 @@ def create_inner(archive, cache): if not dry_run: try: status = archive.process_stdin(path, cache) - except IOError as e: + except OSError as e: status = 'E' self.print_warning('%s: %s', path, e) else: @@ -229,7 +229,7 @@ def _process(self, archive, cache, matcher, exclude_caches, exclude_if_present, if not dry_run: try: status = archive.process_file(path, st, cache) - except IOError as e: + except OSError as e: status = 'E' self.print_warning('%s: %s', path, e) elif stat.S_ISDIR(st.st_mode): @@ -326,7 +326,7 @@ def do_extract(self, args): archive.extract_item(item, restore_attrs=False) else: archive.extract_item(item, stdout=stdout, sparse=sparse) - except IOError as e: + except OSError as e: self.print_warning('%s: %s', remove_surrogates(orig_path), e) if not args.dry_run: diff --git a/borg/locking.py b/borg/locking.py index af17d8bcf..dd7f96ffc 100644 --- a/borg/locking.py +++ b/borg/locking.py @@ -132,14 +132,13 @@ def acquire(self, timeout=None, sleep=None): while True: try: os.mkdir(self.path) + except FileExistsError: # already locked + if self.by_me(): + return self + if timer.timed_out_or_sleep(): + raise LockTimeout(self.path) except OSError as err: - if err.errno == errno.EEXIST: # already locked - if self.by_me(): - return self - if timer.timed_out_or_sleep(): - raise LockTimeout(self.path) - else: - raise LockFailed(self.path, str(err)) + raise LockFailed(self.path, str(err)) else: with open(self.unique_name, "wb"): pass @@ -181,12 +180,8 @@ def load(self): try: with open(self.path) as f: data = json.load(f) - except IOError as err: - if err.errno != errno.ENOENT: - raise - data = {} - except ValueError: - # corrupt/empty roster file? + except (FileNotFoundError, ValueError): + # no or corrupt/empty roster file? data = {} return data @@ -197,9 +192,8 @@ def save(self, data): def remove(self): try: os.unlink(self.path) - except OSError as e: - if e.errno != errno.ENOENT: - raise + except FileNotFoundError: + pass def get(self, key): roster = self.load() diff --git a/borg/repository.py b/borg/repository.py index 1e5902f2f..0cf0d934b 100644 --- a/borg/repository.py +++ b/borg/repository.py @@ -567,7 +567,7 @@ def delete_segment(self, segment): del self.fds[segment] try: os.unlink(self.segment_filename(segment)) - except OSError: + except FileNotFoundError: pass def segment_exists(self, segment): diff --git a/borg/testsuite/archiver.py b/borg/testsuite/archiver.py index 3192d60d8..6bf2f635b 100644 --- a/borg/testsuite/archiver.py +++ b/borg/testsuite/archiver.py @@ -70,9 +70,7 @@ def exec_cmd(*args, archiver=None, fork=False, exe=None, **kw): try: exec_cmd('help', exe='borg.exe', fork=True) BORG_EXES = ['python', 'binary', ] -except (IOError, OSError) as err: - if err.errno != errno.ENOENT: - raise +except FileNotFoundError: BORG_EXES = ['python', ]