Revision 41a57aab lib/backend.py

b/lib/backend.py
26 26
import os.path
27 27
import shutil
28 28
import time
29
import tempfile
30 29
import stat
31 30
import errno
32 31
import re
......
939 938
                 " upload targets: '%s'" % file_name)
940 939
    return False
941 940

  
942
  dir_name, small_name = os.path.split(file_name)
943
  fd, new_name = tempfile.mkstemp('.new', small_name, dir_name)
944
  # here we need to make sure we remove the temp file, if any error
945
  # leaves it in place
946
  try:
947
    os.chown(new_name, uid, gid)
948
    os.chmod(new_name, mode)
949
    os.write(fd, data)
950
    os.fsync(fd)
951
    os.utime(new_name, (atime, mtime))
952
    os.rename(new_name, file_name)
953
  finally:
954
    os.close(fd)
955
    utils.RemoveFile(new_name)
941
  utils.WriteFile(file_name, data=data, mode=mode, uid=uid, gid=gid,
942
                  atime=atime, mtime=mtime)
956 943
  return True
957 944

  
958 945

  

Also available in: Unified diff