db_lock.release()
try:
tools.write_file(
- DB_FILE, lambda f: f.write(db_pickle.decode()))
+ DB_FILE, lambda f: f.write(db_pickle), binary=True)
logger.log_database(db)
except:
logger.log_exc("database.start: failed to pickle/dump")
shutil.move(write_temp_file(do_write, **kw_args), filename)
-def write_temp_file(do_write, mode=None, uidgid=None):
+def write_temp_file(do_write, mode=None, uidgid=None, binary=False):
fd, temporary_filename = tempfile.mkstemp()
if mode:
os.chmod(temporary_filename, mode)
if uidgid:
os.chown(temporary_filename, *uidgid)
- f = os.fdopen(fd, 'w')
+ open_mode = 'wb' if binary else 'w'
+ f = os.fdopen(fd, open_mode)
try:
do_write(f)
finally: