From b126aa1fc3874f8868ccf358b31a2b424c48a0b2 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Tue, 26 Feb 2013 00:23:10 +0000 Subject: [PATCH] [r21447]ConfigManager: Ensure key files are loaded and saved as utf-8 svn: r21452 --- gramps/gen/utils/configmanager.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/gramps/gen/utils/configmanager.py b/gramps/gen/utils/configmanager.py index 845a7b4c3..5b19c8e20 100644 --- a/gramps/gen/utils/configmanager.py +++ b/gramps/gen/utils/configmanager.py @@ -258,13 +258,13 @@ class ConfigManager(object): if filename and os.path.exists(filename): parser = configparser.RawConfigParser() 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') else: - parser.read(filename) - except: - msg1 = _("WARNING: could not parse file, recreating it:\n%s") - print(msg1 % filename, file=sys.stderr) + parser.readfp(io.open(filename, encoding="utf-8")) + except Exception as err: + msg1 = _("WARNING: could not parse file %s because %s, recreating it:\n") + logging.warn(msg1 % (filename, str(err))) return for sec in parser.sections(): name = sec.lower() @@ -340,7 +340,13 @@ class ConfigManager(object): except OSError as exp: if exp.errno != errno.EEXIST: raise - key_file = io.open(filename, "w", encoding = "utf-8") + try: + 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((";; Automatically created at %s" % time.strftime("%Y/%m/%d %H:%M:%S")) + "\n\n")