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/metadata.py..


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

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

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

Log message:
        Preserve Mac OS X 'Creation Date' field across backups.  (Patch from 
Andrew
        Ferguson.)

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/CHANGELOG?cvsroot=rdiff-backup&r1=1.183&r2=1.184
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/metadata.py?cvsroot=rdiff-backup&r1=1.25&r2=1.26
http://cvs.savannah.gnu.org/viewcvs/rdiff-backup/rdiff_backup/rpath.py?cvsroot=rdiff-backup&r1=1.100&r2=1.101

Patches:
Index: CHANGELOG
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/CHANGELOG,v
retrieving revision 1.183
retrieving revision 1.184
diff -u -b -r1.183 -r1.184
--- CHANGELOG   5 Nov 2006 01:19:01 -0000       1.183
+++ CHANGELOG   5 Nov 2006 01:24:52 -0000       1.184
@@ -1,6 +1,9 @@
 New in v1.1.6 (????/??/??)
 --------------------------
 
+Preserve Mac OS X 'Creation Date' field across backups.  (Patch from Andrew
+Ferguson.)
+
 Set symlink permissions properly.  (Patch from Andrew Ferguson.)
 
 Selection fix: empty directories could sometimes be improperly

Index: rdiff_backup/metadata.py
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/rdiff_backup/metadata.py,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -b -r1.25 -r1.26
--- rdiff_backup/metadata.py    29 Jan 2006 22:16:05 -0000      1.25
+++ rdiff_backup/metadata.py    5 Nov 2006 01:24:52 -0000       1.26
@@ -70,6 +70,7 @@
        retvalparts.append('type:%s' % binascii.hexlify(cfile['type']))
        retvalparts.append('location:%d,%d' % cfile['location'])
        retvalparts.append('flags:%d' % cfile['flags'])
+       retvalparts.append('createDate:%d' % cfile['createDate'])
        return '|'.join(retvalparts)
 
 def string2carbonfile(data):
@@ -87,6 +88,8 @@
                        retval['location'] = (int(a), int(b))
                elif key == 'flags':
                        retval['flags'] = int(value)
+               elif key == 'createDate':
+                       retval['createDate'] = int(value)
        return retval
 
 def RORP2Record(rorpath):

Index: rdiff_backup/rpath.py
===================================================================
RCS file: /cvsroot/rdiff-backup/rdiff-backup/rdiff_backup/rpath.py,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -b -r1.100 -r1.101
--- rdiff_backup/rpath.py       5 Nov 2006 01:19:02 -0000       1.100
+++ rdiff_backup/rpath.py       5 Nov 2006 01:24:52 -0000       1.101
@@ -1212,6 +1212,8 @@
                if not cfile: return
                log.Log("Writing carbon data to %s" % (self.index,), 7)
                from Carbon.File import FSSpec
+               from Carbon.File import FSRef
+               import Carbon.Files
                import MacOS
                fsobj = FSSpec(self.path)
                finderinfo = fsobj.FSpGetFInfo()
@@ -1220,7 +1222,16 @@
                finderinfo.Location = cfile['location']
                finderinfo.Flags = cfile['flags']
                fsobj.FSpSetFInfo(finderinfo)
+
+               """Write Creation Date to self (if stored in metadata)."""
+               try:
+                       cdate = cfile['createDate']
+                       fsref = FSRef(fsobj)
+                       cataloginfo, d1, d2, d3 = 
fsref.FSGetCatalogInfo(Carbon.Files.kFSCatInfoCreateDate)
+                       cataloginfo.createDate = (0, cdate, 0)
+                       
fsref.FSSetCatalogInfo(Carbon.Files.kFSCatInfoCreateDate, cataloginfo)
                self.set_carbonfile(cfile)
+               except KeyError: self.set_carbonfile(cfile)
 
        def get_resource_fork(self):
                """Return resource fork data, setting if necessary"""
@@ -1342,14 +1353,18 @@
 def carbonfile_get(rpath):
        """Return carbonfile value for local rpath"""
        from Carbon.File import FSSpec
+       from Carbon.File import FSRef
+       import Carbon.Files
        import MacOS
        try:
                fsobj = FSSpec(rpath.path)
                finderinfo = fsobj.FSpGetFInfo()
+               cataloginfo, d1, d2, d3 = 
FSRef(fsobj).FSGetCatalogInfo(Carbon.Files.kFSCatInfoCreateDate)
                cfile = {'creator': finderinfo.Creator,
                                 'type': finderinfo.Type,
                                 'location': finderinfo.Location,
-                                'flags': finderinfo.Flags}
+                                'flags': finderinfo.Flags,
+                                'createDate': cataloginfo.createDate[1]}
                return cfile
        except MacOS.Error:
                log.Log("Cannot read carbonfile information from %s" %




reply via email to

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