[r21447]ConfigManager: Ensure key files are loaded and saved as utf-8

svn: r21452
This commit is contained in:
John Ralls 2013-02-26 00:23:10 +00:00
parent e2860c99f6
commit b126aa1fc3

View File

@ -258,13 +258,13 @@ class ConfigManager(object):
if filename and os.path.exists(filename): if filename and os.path.exists(filename):
parser = configparser.RawConfigParser() parser = configparser.RawConfigParser()
try: # see bugs 5356, 5490, 5591, 5651, 5718, etc. try: # see bugs 5356, 5490, 5591, 5651, 5718, etc.
if win() and not sys.version_info[0] < 3: if sys.version_info[0] >= 3 :
parser.read(filename, encoding='utf8') parser.read(filename, encoding='utf8')
else: else:
parser.read(filename) parser.readfp(io.open(filename, encoding="utf-8"))
except: except Exception as err:
msg1 = _("WARNING: could not parse file, recreating it:\n%s") msg1 = _("WARNING: could not parse file %s because %s, recreating it:\n")
print(msg1 % filename, file=sys.stderr) logging.warn(msg1 % (filename, str(err)))
return return
for sec in parser.sections(): for sec in parser.sections():
name = sec.lower() name = sec.lower()
@ -340,7 +340,13 @@ class ConfigManager(object):
except OSError as exp: except OSError as exp:
if exp.errno != errno.EEXIST: if exp.errno != errno.EEXIST:
raise raise
try:
key_file = io.open(filename, "w", encoding="utf-8") key_file = io.open(filename, "w", encoding="utf-8")
except IOError as err:
logging.warn("Failed to open %s because %s",
filename, str(err))
return;
key_file.write(";; Gramps key file\n") key_file.write(";; Gramps key file\n")
key_file.write((";; Automatically created at %s" % key_file.write((";; Automatically created at %s" %
time.strftime("%Y/%m/%d %H:%M:%S")) + "\n\n") time.strftime("%Y/%m/%d %H:%M:%S")) + "\n\n")