mercurial/util.py
changeset 4377 e33ad7cea15f
parent 4369 d7ad1e42a368
child 4386 f9cd48bd8625
equal deleted inserted replaced
4376:4759da3e4dc8 4377:e33ad7cea15f
  1159                 posixfile.close(self)
  1159                 posixfile.close(self)
  1160 
  1160 
  1161     class atomicfile(atomictempfile):
  1161     class atomicfile(atomictempfile):
  1162         """the file will only be copied on close"""
  1162         """the file will only be copied on close"""
  1163         def __init__(self, name, mode):
  1163         def __init__(self, name, mode):
       
  1164             self._err = False
  1164             atomictempfile.__init__(self, name, mode)
  1165             atomictempfile.__init__(self, name, mode)
       
  1166         def write(self, s):
       
  1167             try:
       
  1168                 atomictempfile.write(self, s)
       
  1169             except:
       
  1170                 self._err = True
       
  1171                 raise
  1165         def close(self):
  1172         def close(self):
  1166             self.rename()
  1173             self.rename()
  1167         def __del__(self):
  1174         def __del__(self):
  1168             self.rename()
  1175             if not self._err:
       
  1176                 self.rename()
  1169 
  1177 
  1170     def o(path, mode="r", text=False, atomic=False, atomictemp=False):
  1178     def o(path, mode="r", text=False, atomic=False, atomictemp=False):
  1171         if audit_p:
  1179         if audit_p:
  1172             audit_path(path)
  1180             audit_path(path)
  1173         f = os.path.join(p, path)
  1181         f = os.path.join(p, path)