diff options
Diffstat (limited to 'rdiff-backup')
-rw-r--r-- | rdiff-backup/CHANGELOG | 3 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/eas_acls.py | 9 |
2 files changed, 9 insertions, 3 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG index 2a8231f..64ead05 100644 --- a/rdiff-backup/CHANGELOG +++ b/rdiff-backup/CHANGELOG @@ -1,6 +1,9 @@ New in v1.2.3 (????/??/??) --------------------------- +Handle ELOOP ("Too many levels of symbolic links") error when reading extended +attributes from symlinks. Closes Savannah bug #24790. (Andrew Ferguson) + Inform the user of which file has failed if an exception occurs during a rename operation. (Andrew Ferguson) diff --git a/rdiff-backup/rdiff_backup/eas_acls.py b/rdiff-backup/rdiff_backup/eas_acls.py index 82b0190..8fa4035 100644 --- a/rdiff-backup/rdiff_backup/eas_acls.py +++ b/rdiff-backup/rdiff_backup/eas_acls.py @@ -56,11 +56,12 @@ class ExtendedAttributes: def read_from_rp(self, rp): """Set the extended attributes from an rpath""" - try: attr_list = rp.conn.xattr.listxattr(rp.path, rp.issym()) + try: + attr_list = rp.conn.xattr.listxattr(rp.path, rp.issym()) except IOError, exc: if exc[0] in (errno.EOPNOTSUPP, errno.EPERM, errno.ETXTBSY): return # if not supported, consider empty - if exc[0] == errno.EACCES or exc[0] == errno.ENOENT: + if exc[0] in (errno.EACCES, errno.ENOENT, errno.ELOOP): log.Log("Warning: listattr(%s): %s" % (repr(rp.path), exc), 3) return raise @@ -71,7 +72,9 @@ class ExtendedAttributes: if not rp.isdir() and attr == 'com.apple.ResourceFork': # Resource Fork handled elsewhere, except for directories continue - try: self.attr_dict[attr] = rp.conn.xattr.getxattr(rp.path, attr, rp.issym()) + try: + self.attr_dict[attr] = \ + rp.conn.xattr.getxattr(rp.path, attr, rp.issym()) except IOError, exc: # File probably modified while reading, just continue if exc[0] == errno.ENODATA: continue |