summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/hash.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/rdiff_backup/hash.py')
-rw-r--r--rdiff-backup/rdiff_backup/hash.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/rdiff-backup/rdiff_backup/hash.py b/rdiff-backup/rdiff_backup/hash.py
index 4fcbdab..3e7306f 100644
--- a/rdiff-backup/rdiff_backup/hash.py
+++ b/rdiff-backup/rdiff_backup/hash.py
@@ -20,6 +20,7 @@
"""Contains a file wrapper that returns a hash on close"""
import sha
+import Globals
class FileWrapper:
"""Wrapper around a file-like object
@@ -51,3 +52,17 @@ class Report:
def __init__(self, close_val, sha1_digest):
assert not close_val # For now just assume inner file closes correctly
self.sha1_digest = sha1_digest
+
+
+def compute_sha1(rp, compressed = 0):
+ """Return the hex sha1 hash of given rpath"""
+ assert rp.conn is Globals.local_connection # inefficient not to do locally
+ blocksize = Globals.blocksize
+ fp = FileWrapper(rp.open("r", compressed))
+ while 1:
+ if not fp.read(blocksize): break
+ digest = fp.close().sha1_digest
+ rp.set_sha1(digest)
+ return digest
+
+