summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rdiff-backup/CHANGELOG3
-rw-r--r--rdiff-backup/rdiff_backup/fs_abilities.py20
2 files changed, 15 insertions, 8 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG
index 21302dd..f6c2631 100644
--- a/rdiff-backup/CHANGELOG
+++ b/rdiff-backup/CHANGELOG
@@ -1,6 +1,9 @@
New in v1.1.11 (????/??/??)
---------------------------
+Fix for bug #19896 -- symlink() doesn't work on a CIFS-mounted Windows
+share. (Jonathan Hankins)
+
Fix for bug #19895 -- eliminate traceback for special file detection
on CIFS mounts. (Jonathan Hankins)
diff --git a/rdiff-backup/rdiff_backup/fs_abilities.py b/rdiff-backup/rdiff_backup/fs_abilities.py
index 25c1226..d9772d5 100644
--- a/rdiff-backup/rdiff_backup/fs_abilities.py
+++ b/rdiff-backup/rdiff_backup/fs_abilities.py
@@ -408,14 +408,18 @@ class FSAbilities:
sym_source = dir_rp.append("symlinked_file1")
sym_source.touch()
sym_dest = dir_rp.append("symlinked_file2")
- sym_dest.symlink(sym_source.path)
- sym_dest.setdata()
- assert sym_dest.issym()
- orig_umask = os.umask(077)
- if sym_dest.getperms() == 0700: self.symlink_perms = 1
- else: self.symlink_perms = 0
- os.umask(orig_umask)
- sym_dest.delete()
+ try:
+ sym_dest.symlink(sym_source.path)
+ except (OSError):
+ self.symlink_perms = 0
+ else:
+ sym_dest.setdata()
+ assert sym_dest.issym()
+ orig_umask = os.umask(077)
+ if sym_dest.getperms() == 0700: self.symlink_perms = 1
+ else: self.symlink_perms = 0
+ os.umask(orig_umask)
+ sym_dest.delete()
sym_source.delete()
def set_escape_dos_devices(self, subdir):