summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/iterfile.py
diff options
context:
space:
mode:
authorben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-06-27 20:21:23 +0000
committerben <ben@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2002-06-27 20:21:23 +0000
commit46cedd177d04372e1de7f67759a95c0d19d74ec3 (patch)
tree7329bcc875a4b1d45361d6bf0acb4fad16f20219 /rdiff-backup/rdiff_backup/iterfile.py
parent3f44ce4239acd911683f05266934aa136538a3d9 (diff)
downloadrdiff-backup-46cedd177d04372e1de7f67759a95c0d19d74ec3.tar.gz
Directly interface to librsync instead of going through rdiff. Added
some supplementary scripts for testing. git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@149 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/rdiff_backup/iterfile.py')
-rw-r--r--rdiff-backup/rdiff_backup/iterfile.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/rdiff-backup/rdiff_backup/iterfile.py b/rdiff-backup/rdiff_backup/iterfile.py
index 518314e..c90229e 100644
--- a/rdiff-backup/rdiff_backup/iterfile.py
+++ b/rdiff-backup/rdiff_backup/iterfile.py
@@ -94,14 +94,20 @@ class IterVirtualFile(UnwrapFile):
self.buffer = initial_data
self.closed = None
- def read(self, length):
+ def read(self, length = -1):
"""Read length bytes from the file, updating buffers as necessary"""
assert not self.closed
if self.iwf.currently_in_file:
- while length >= len(self.buffer):
- if not self.addtobuffer(): break
+ if length >= 0:
+ while length >= len(self.buffer):
+ if not self.addtobuffer(): break
+ real_len = min(length, len(self.buffer))
+ else:
+ while 1:
+ if not self.addtobuffer(): break
+ real_len = len(self.buffer)
+ else: real_len = min(length, len(self.buffer))
- real_len = min(length, len(self.buffer))
return_val = self.buffer[:real_len]
self.buffer = self.buffer[real_len:]
return return_val