summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordgaudet <dgaudet@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2007-05-19 18:45:50 +0000
committerdgaudet <dgaudet@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2007-05-19 18:45:50 +0000
commit49d9d7d8479486aa2a0a6421da82da84909d8e3c (patch)
tree7c8c094f4a9864a5cacde1a2250380a4eeb6cd48
parent249d258b7b5db9d13692e49181ea28eae462889a (diff)
downloadrdiff-backup-49d9d7d8479486aa2a0a6421da82da84909d8e3c.tar.gz
Fix for bug #19896 -- symlink() doesn't work on a CIFS-mounted Windows
share. (Jonathan Hankins) git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@802 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
-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):