diff options
author | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2003-07-18 21:31:14 +0000 |
---|---|---|
committer | bescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109> | 2003-07-18 21:31:14 +0000 |
commit | 3f6645f4282082c2e140b52780a9a500c8212f82 (patch) | |
tree | d19611f85b77d4775ed860c0db9850d7d78f0743 /rdiff-backup/rdiff_backup/metadata.py | |
parent | e9a90e94befd8aaf5185be59d13d946d8b121936 (diff) | |
download | rdiff-backup-3f6645f4282082c2e140b52780a9a500c8212f82.tar.gz |
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
Diffstat (limited to 'rdiff-backup/rdiff_backup/metadata.py')
-rw-r--r-- | rdiff-backup/rdiff_backup/metadata.py | 12 |
1 files changed, 11 insertions, 1 deletions
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) |