diff options
author | Benjamin Saller <bcsaller@objectrealms.net> | 2007-07-15 22:26:30 (GMT) |
---|---|---|
committer | Benjamin Saller <bcsaller@objectrealms.net> | 2007-07-15 22:26:30 (GMT) |
commit | 73245ec13b84d3ff7f6750f325e012087009e6ae (patch) | |
tree | 5d5ea70470d0759812d5e595891d99af5c3deb09 /src | |
parent | 132a27089a6880e535b9f62c090c98e0d98d2301 (diff) |
more efficient copy
Diffstat (limited to 'src')
-rw-r--r-- | src/olpc/datastore/backingstore.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/olpc/datastore/backingstore.py b/src/olpc/datastore/backingstore.py index 354426e..a7a51ca 100644 --- a/src/olpc/datastore/backingstore.py +++ b/src/olpc/datastore/backingstore.py @@ -14,6 +14,7 @@ import cPickle as pickle import sha import os import re +import shutil import subprocess import time @@ -299,15 +300,19 @@ class FileBackingStore(BackingStore): if replace is False and os.path.exists(path): raise KeyError("objects with path:%s for uid:%s exists" %( path, uid)) - fp = open(path, 'w') + verify = self.options.get('verify', False) c = None - if verify: c = sha.sha() - filelike.seek(0) - for line in filelike: - if verify:c.update(line) - fp.write(line) - fp.close() + if verify: + fp = open(path, 'w') + filelike.seek(0) + c = sha.sha() + for line in filelike: + if verify:c.update(line) + fp.write(line) + fp.close() + else: + shutil.copyfile(filelike.name, path) if verify: content = self.indexmanager.get(uid) content.checksum = c.hexdigest() |