1
0
Fork 0
mirror of https://github.com/borgbackup/borg.git synced 2025-02-01 12:09:10 +00:00

macOS: fix mtime timestamp extraction if ResourceFork xattr is present, fixes #7234

setting the timestamps after xattrs helps for correct mtime,
but atime is still broken in this case.
This commit is contained in:
Thomas Waldmann 2022-12-29 23:53:10 +01:00
parent 6a27c6b763
commit 5d8801e72c
No known key found for this signature in database
GPG key ID: 243ACFA951F78E01

View file

@ -951,6 +951,15 @@ def restore_attrs(self, path, item, symlink=False, fd=None):
except NotImplementedError:
if not symlink:
os.chmod(path, item.mode)
if not self.noacls:
acl_set(path, item, self.numeric_ids, fd=fd)
if not self.noxattrs and "xattrs" in item:
# chown removes Linux capabilities, so set the extended attributes at the end, after chown, since they include
# the Linux capabilities in the "security.capability" attribute.
warning = xattr.set_all(fd or path, item.xattrs, follow_symlinks=False)
if warning:
set_ec(EXIT_WARNING)
# set timestamps rather late
mtime = item.mtime
atime = item.atime if "atime" in item else mtime
if "birthtime" in item:
@ -973,14 +982,6 @@ def restore_attrs(self, path, item, symlink=False, fd=None):
except OSError:
# some systems don't support calling utime on a symlink
pass
if not self.noacls:
acl_set(path, item, self.numeric_ids, fd=fd)
if not self.noxattrs and "xattrs" in item:
# chown removes Linux capabilities, so set the extended attributes at the end, after chown, since they include
# the Linux capabilities in the "security.capability" attribute.
warning = xattr.set_all(fd or path, item.xattrs, follow_symlinks=False)
if warning:
set_ec(EXIT_WARNING)
# bsdflags include the immutable flag and need to be set last:
if not self.noflags and "bsdflags" in item:
try: