Rev1800, Use -tmpnew and -tmpold postfix for atomic write
This commit is contained in:
parent
5c2b90c20f
commit
431415c052
2 changed files with 10 additions and 10 deletions
|
@ -9,7 +9,7 @@ class Config(object):
|
||||||
|
|
||||||
def __init__(self, argv):
|
def __init__(self, argv):
|
||||||
self.version = "0.5.1"
|
self.version = "0.5.1"
|
||||||
self.rev = 1799
|
self.rev = 1800
|
||||||
self.argv = argv
|
self.argv = argv
|
||||||
self.action = None
|
self.action = None
|
||||||
self.config_file = "zeronet.conf"
|
self.config_file = "zeronet.conf"
|
||||||
|
@ -149,7 +149,7 @@ class Config(object):
|
||||||
self.parser.add_argument('--updatesite', help='Source code update site', default='1UPDatEDxnvHDo7TXvq6AEBARfNkyfxsp',
|
self.parser.add_argument('--updatesite', help='Source code update site', default='1UPDatEDxnvHDo7TXvq6AEBARfNkyfxsp',
|
||||||
metavar='address')
|
metavar='address')
|
||||||
self.parser.add_argument('--size_limit', help='Default site size limit in MB', default=10, type=int, metavar='size')
|
self.parser.add_argument('--size_limit', help='Default site size limit in MB', default=10, type=int, metavar='size')
|
||||||
self.parser.add_argument('--connected_limit', help='Max connected peer per site', default=10, type=int, metavar='connected_limit')
|
self.parser.add_argument('--connected_limit', help='Max connected peer per site', default=6, type=int, metavar='connected_limit')
|
||||||
|
|
||||||
self.parser.add_argument('--fileserver_ip', help='FileServer bind address', default="*", metavar='ip')
|
self.parser.add_argument('--fileserver_ip', help='FileServer bind address', default="*", metavar='ip')
|
||||||
self.parser.add_argument('--fileserver_port', help='FileServer bind port', default=15441, type=int, metavar='port')
|
self.parser.add_argument('--fileserver_port', help='FileServer bind port', default=15441, type=int, metavar='port')
|
||||||
|
|
|
@ -15,16 +15,16 @@ from Config import config
|
||||||
def atomicWrite(dest, content, mode="w"):
|
def atomicWrite(dest, content, mode="w"):
|
||||||
try:
|
try:
|
||||||
permissions = stat.S_IMODE(os.lstat(dest).st_mode)
|
permissions = stat.S_IMODE(os.lstat(dest).st_mode)
|
||||||
with open(dest + "-new", mode) as f:
|
with open(dest + "-tmpnew", mode) as f:
|
||||||
f.write(content)
|
f.write(content)
|
||||||
f.flush()
|
f.flush()
|
||||||
os.fsync(f.fileno())
|
os.fsync(f.fileno())
|
||||||
if os.path.isfile(dest + "-old"): # Previous incomplete write
|
if os.path.isfile(dest + "-tmpold"): # Previous incomplete write
|
||||||
os.rename(dest + "-old", dest + "-old-%s" % time.time())
|
os.rename(dest + "-tmpold", dest + "-tmpold-%s" % time.time())
|
||||||
os.rename(dest, dest + "-old")
|
os.rename(dest, dest + "-tmpold")
|
||||||
os.rename(dest + "-new", dest)
|
os.rename(dest + "-tmpnew", dest)
|
||||||
os.chmod(dest, permissions)
|
os.chmod(dest, permissions)
|
||||||
os.unlink(dest + "-old")
|
os.unlink(dest + "-tmpold")
|
||||||
return True
|
return True
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
from Debug import Debug
|
from Debug import Debug
|
||||||
|
@ -32,8 +32,8 @@ def atomicWrite(dest, content, mode="w"):
|
||||||
"File %s write failed: %s, reverting..." %
|
"File %s write failed: %s, reverting..." %
|
||||||
(dest, Debug.formatException(err))
|
(dest, Debug.formatException(err))
|
||||||
)
|
)
|
||||||
if os.path.isfile(dest + "-old") and not os.path.isfile(dest):
|
if os.path.isfile(dest + "-tmpold") and not os.path.isfile(dest):
|
||||||
os.rename(dest + "-old", dest)
|
os.rename(dest + "-tmpold", dest)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue