Browse Source

Prevent loss of sabnzbd.ini file due to a full disk.

tags/0.6.0
ShyPike 14 years ago
parent
commit
db8f7fccd3
  1. 31
      sabnzbd/config.py

31
sabnzbd/config.py

@ -687,6 +687,7 @@ def read_config(path):
def save_config(force=False): def save_config(force=False):
""" Update Setup file with current option values """ """ Update Setup file with current option values """
global CFG, database, modified global CFG, database, modified
assert isinstance(CFG, configobj.ConfigObj)
if not (modified or force): if not (modified or force):
return True return True
@ -724,19 +725,33 @@ def save_config(force=False):
else: else:
CFG[sec][kw] = value CFG[sec][kw] = value
filename = CFG.filename
try: try:
CFG.write() # Read current content
f = open(CFG.filename) f = open(CFG.filename)
x = f.read() data = f.read()
f.close() f.close()
f = open(CFG.filename, "w")
f.write(x) # Write to temp file
f.flush() CFG.filename = filename + '.tmp'
f = open(CFG.filename, 'w')
f.write(data)
f.close() f.close()
# Update temp file content
CFG.write()
# Rename temp file, overwriting old one
os.remove(filename)
os.rename(CFG.filename, filename)
modified = False modified = False
return True res = True
except IOError: except:
return False logging.error(Ta('Cannot create temp file for %s'), CFG.filename)
res = False
CFG.filename = filename
return res

Loading…
Cancel
Save