From dee402652fde5d92957b03ee50d80b3aacf7e27e Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Sun, 14 Jun 2020 15:36:22 +0200 Subject: [PATCH] --read-special: .part files also should be regular files, fixes #5217 --- src/borg/archive.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/borg/archive.py b/src/borg/archive.py index ef3de303b..ae0ca55a0 100644 --- a/src/borg/archive.py +++ b/src/borg/archive.py @@ -1249,6 +1249,11 @@ class FilesystemObjectProcessors: st = stat_update_check(st, os.fstat(fd)) item.update(self.metadata_collector.stat_simple_attrs(st)) is_special_file = is_special(st.st_mode) + if is_special_file: + # we process a special file like a regular file. reflect that in mode, + # so it can be extracted / accessed in FUSE mount like a regular file. + # this needs to be done early, so that part files also get the patched mode. + item.mode = stat.S_IFREG | stat.S_IMODE(item.mode) if not hardlinked or hardlink_master: if not is_special_file: path_hash = self.key.id_hash(safe_encode(os.path.join(self.cwd, path))) @@ -1298,10 +1303,6 @@ class FilesystemObjectProcessors: self.stats.nfiles += 1 item.update(self.metadata_collector.stat_ext_attrs(st, path, fd=fd)) item.get_size(memorize=True) - if is_special_file: - # we processed a special file like a regular file. reflect that in mode, - # so it can be extracted / accessed in FUSE mount like a regular file: - item.mode = stat.S_IFREG | stat.S_IMODE(item.mode) return status