summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/metadata.py
diff options
context:
space:
mode:
authorbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2003-07-18 21:31:14 +0000
committerbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2003-07-18 21:31:14 +0000
commit3f6645f4282082c2e140b52780a9a500c8212f82 (patch)
treed19611f85b77d4775ed860c0db9850d7d78f0743 /rdiff-backup/rdiff_backup/metadata.py
parente9a90e94befd8aaf5185be59d13d946d8b121936 (diff)
downloadrdiff-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.py12
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)