rdiff-backup-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/eas_acls.py..


From: dean gaudet
Subject: [Rdiff-backup-commits] rdiff-backup CHANGELOG rdiff_backup/eas_acls.py...
Date: Sun, 05 Nov 2006 01:30:03 +0000

CVSROOT:        /cvsroot/rdiff-backup
Module name:    rdiff-backup
Changes by:     dean gaudet <dgaudet>   06/11/05 01:30:02

Modified files:
        .              : CHANGELOG 
        rdiff_backup   : eas_acls.py rpath.py 

Log message:
        Mac OS X Extended Attributes support.  (Patch from Andrew Ferguson.)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/CHANGELOG?cvsroot=rdiff-backup&r1=1.184&r2=1.185
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/eas_acls.py?cvsroot=rdiff-backup&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/rpath.py?cvsroot=rdiff-backup&r1=1.101&r2=1.102

Patches:
Index: CHANGELOG
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/CHANGELOG,v
retrieving revision 1.184
retrieving revision 1.185
diff -u -b -r1.184 -r1.185
--- CHANGELOG   5 Nov 2006 01:24:52 -0000       1.184
+++ CHANGELOG   5 Nov 2006 01:30:02 -0000       1.185
@@ -1,6 +1,8 @@
 New in v1.1.6 (????/??/??)
 --------------------------
 
+Mac OS X Extended Attributes support.  (Patch from Andrew Ferguson.)
+
 Preserve Mac OS X 'Creation Date' field across backups.  (Patch from Andrew
 Ferguson.)
 

Index: rdiff_backup/eas_acls.py
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/rdiff_backup/eas_acls.py,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- rdiff_backup/eas_acls.py    12 Dec 2005 01:15:22 -0000      1.17
+++ rdiff_backup/eas_acls.py    5 Nov 2006 01:30:02 -0000       1.18
@@ -64,8 +64,11 @@
                                return
                        raise
                for attr in attr_list:
-                       if not attr.startswith('user.'):
-                               # Only preserve user extended attributes
+                       if attr.startswith('system.'):
+                               # Do not preserve system extended attributes
+                               continue
+                       if attr == 'com.apple.FinderInfo' or attr == 
'come.apple.ResourceFork':
+                               # FinderInfo and Resource Fork handled elsewhere
                                continue
                        try: self.attr_dict[attr] = 
rp.conn.xattr.getxattr(rp.path, attr)
                        except IOError, exc:
@@ -92,7 +95,14 @@
                """Write extended attributes to rpath rp"""
                self.clear_rp(rp)
                for (name, value) in self.attr_dict.iteritems():
+                       try:
                        rp.conn.xattr.setxattr(rp.path, name, value)
+                       except IOError, exc:
+                               # Mac and Linux attributes have different 
namespaces, so
+                               # fail gracefully if can't call setxattr
+                               if exc[0] == errno.EOPNOTSUPP or exc[0] == 
errno.EACCES:
+                                       continue
+                               else: raise
 
        def get(self, name):
                """Return attribute attached to given name"""

Index: rdiff_backup/rpath.py
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/rdiff_backup/rpath.py,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -b -r1.101 -r1.102
--- rdiff_backup/rpath.py       5 Nov 2006 01:24:52 -0000       1.101
+++ rdiff_backup/rpath.py       5 Nov 2006 01:30:02 -0000       1.102
@@ -165,13 +165,13 @@
        if Globals.change_ownership:
                rpout.chown(*rpout.conn.user_group.map_rpath(rpin))
        if rpin.issym(): return # symlinks don't have times or perms
+       if Globals.eas_write: rpout.write_ea(rpin.get_ea())
        if (Globals.resource_forks_write and rpin.isreg() and
                rpin.has_resource_fork()):
                rpout.write_resource_fork(rpin.get_resource_fork())
        if (Globals.carbonfile_write and rpin.isreg() and
                rpin.has_carbonfile()):
                rpout.write_carbonfile(rpin.get_carbonfile())
-       if Globals.eas_write: rpout.write_ea(rpin.get_ea())
        rpout.chmod(rpin.getperms())
        if Globals.acls_write: rpout.write_acl(rpin.get_acl())
        if not rpin.isdev(): rpout.setmtime(rpin.getmtime())
@@ -188,13 +188,13 @@
        check_for_files(rpin, rpout)
        if Globals.change_ownership: apply(rpout.chown, rpin.getuidgid())
        if rpin.issym(): return # symlinks don't have times or perms
+       if Globals.eas_write: rpout.write_ea(rpin.get_ea())
        if (Globals.resource_forks_write and rpin.isreg() and
                rpin.has_resource_fork() and rpout.isreg()):
                rpout.write_resource_fork(rpin.get_resource_fork())
        if (Globals.carbonfile_write and rpin.isreg() and
                rpin.has_carbonfile() and rpout.isreg()):
                rpout.write_carbonfile(rpin.get_carbonfile())
-       if Globals.eas_write: rpout.write_ea(rpin.get_ea())
        if rpin.isdir() and not rpout.isdir():
                rpout.chmod(rpin.getperms() & 0777)
        else: rpout.chmod(rpin.getperms())




reply via email to

[Prev in Thread] Current Thread [Next in Thread]