From 3f6645f4282082c2e140b52780a9a500c8212f82 Mon Sep 17 00:00:00 2001 From: bescoto Date: Fri, 18 Jul 2003 21:31:14 +0000 Subject: Added Daniel Hazelbaker's resource fork code, plus detection to fs_abilities and a new unittest file. git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@345 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109 --- rdiff-backup/rdiff_backup/metadata.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'rdiff-backup/rdiff_backup/metadata.py') diff --git a/rdiff-backup/rdiff_backup/metadata.py b/rdiff-backup/rdiff_backup/metadata.py index 3d8ba60..eec8e3e 100644 --- a/rdiff-backup/rdiff_backup/metadata.py +++ b/rdiff-backup/rdiff_backup/metadata.py @@ -55,7 +55,7 @@ field names and values. """ from __future__ import generators -import re, gzip, os +import re, gzip, os, binascii import log, Globals, rpath, Time, robust, increment, static class ParsingError(Exception): @@ -74,6 +74,12 @@ def RORP2Record(rorpath): if type == "reg": str_list.append(" Size %s\n" % rorpath.getsize()) + # If there is a resource fork, save it. + if rorpath.has_resource_fork(): + if not rorpath.get_resource_fork(): rf = "None" + else: rf = binascii.hexlify(rorpath.get_resource_fork()) + str_list.append(" ResourceFork %s\n" % (rf,)) + # If file is hardlinked, add that information if Globals.preserve_hardlinks: numlinks = rorpath.getnumlinks() @@ -81,6 +87,7 @@ def RORP2Record(rorpath): str_list.append(" NumHardLinks %s\n" % numlinks) str_list.append(" Inode %s\n" % rorpath.getinode()) str_list.append(" DeviceLoc %s\n" % rorpath.getdevloc()) + elif type == "None": return "".join(str_list) elif type == "dir" or type == "sock" or type == "fifo": pass elif type == "sym": @@ -122,6 +129,9 @@ def Record2RORP(record_string): if data == "None": data_dict['type'] = None else: data_dict['type'] = data elif field == "Size": data_dict['size'] = long(data) + elif field == "ResourceFork": + if data == "None": data_dict['resourcefork'] = "" + else: data_dict['resourcefork'] = binascii.unhexlify(data) elif field == "NumHardLinks": data_dict['nlink'] = int(data) elif field == "Inode": data_dict['inode'] = long(data) elif field == "DeviceLoc": data_dict['devloc'] = long(data) -- cgit v1.2.1