atomicWrite function now preserve file permissions
This commit is contained in:
parent
81f196647b
commit
a10e80318f
1 changed files with 3 additions and 0 deletions
|
@ -1,4 +1,5 @@
|
||||||
import os
|
import os
|
||||||
|
import stat
|
||||||
import socket
|
import socket
|
||||||
import struct
|
import struct
|
||||||
import re
|
import re
|
||||||
|
@ -10,6 +11,7 @@ import base64
|
||||||
|
|
||||||
def atomicWrite(dest, content, mode="w"):
|
def atomicWrite(dest, content, mode="w"):
|
||||||
try:
|
try:
|
||||||
|
permissions = stat.S_IMODE(os.lstat(dest).st_mode)
|
||||||
with open(dest + "-new", mode) as f:
|
with open(dest + "-new", mode) as f:
|
||||||
f.write(content)
|
f.write(content)
|
||||||
f.flush()
|
f.flush()
|
||||||
|
@ -18,6 +20,7 @@ def atomicWrite(dest, content, mode="w"):
|
||||||
os.rename(dest + "-old", dest + "-old-%s" % time.time())
|
os.rename(dest + "-old", dest + "-old-%s" % time.time())
|
||||||
os.rename(dest, dest + "-old")
|
os.rename(dest, dest + "-old")
|
||||||
os.rename(dest + "-new", dest)
|
os.rename(dest + "-new", dest)
|
||||||
|
os.chmod(dest, permissions)
|
||||||
os.unlink(dest + "-old")
|
os.unlink(dest + "-old")
|
||||||
return True
|
return True
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
|
|
Loading…
Reference in a new issue