Do not traceback when unable to read the config file

This commit is contained in:
mathieui 2014-04-11 00:43:22 +02:00
parent a1b2055127
commit d18fe6c477

View file

@ -144,10 +144,15 @@ class Config(RawConfigParser):
Just find the right section, and then find the
right option, and edit it.
"""
if path.exists(self.file_name):
df = open(self.file_name, 'r', encoding='utf-8')
lines_before = (line.strip() for line in df.readlines())
df.close()
if file_ok(self.file_name):
try:
with open(self.file_name, 'r', encoding='utf-8') as df:
lines_before = (line.strip() for line in df.readlines())
except:
log.error('Unable to read the config file %s',
self.file_name,
exc_info=True)
return False
else:
lines_before = []
result_lines = []
@ -176,6 +181,7 @@ class Config(RawConfigParser):
result_lines.append('%s = %s' % (option, value))
elif not written:
result_lines.append('%s = %s' % (option, value))
try:
prefix, file = path.split(self.file_name)
filename = path.join(prefix, '.%s.tmp' % file)
@ -257,6 +263,15 @@ class Config(RawConfigParser):
return res
def file_ok(filepath):
"""
Returns True if the file exists and is readable and writeable,
False otherwise.
"""
val = path.exists(filepath)
val &= os.access(filepath, os.R_OK | os.W_OK)
return bool(val)
def check_create_config_dir():
"""
create the configuration directory if it doesn't exist