From 49d9d7d8479486aa2a0a6421da82da84909d8e3c Mon Sep 17 00:00:00 2001 From: dgaudet Date: Sat, 19 May 2007 18:45:50 +0000 Subject: 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 --- rdiff-backup/CHANGELOG | 3 +++ rdiff-backup/rdiff_backup/fs_abilities.py | 20 ++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) (limited to 'rdiff-backup') 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): -- cgit v1.2.1