Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBenjamin Saller <bcsaller@objectrealms.net>2007-07-15 22:26:30 (GMT)
committer Benjamin Saller <bcsaller@objectrealms.net>2007-07-15 22:26:30 (GMT)
commit73245ec13b84d3ff7f6750f325e012087009e6ae (patch)
tree5d5ea70470d0759812d5e595891d99af5c3deb09 /src
parent132a27089a6880e535b9f62c090c98e0d98d2301 (diff)
more efficient copy
Diffstat (limited to 'src')
-rw-r--r--src/olpc/datastore/backingstore.py19
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()