Fix mbnames writing with folders using utf-8

Signed-off-by: Stéphane Albert <sheeprine@oh.its.fake.nullplace.com>
Signed-off-by: Nicolas Sebrecht <nicolas.s-dev@laposte.net>
This commit is contained in:
Stéphane Albert 2016-10-31 16:24:21 +01:00 committed by Nicolas Sebrecht
parent 75f16106da
commit 175d49e8a2

View File

@ -16,6 +16,7 @@
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
import codecs
import re # For folderfilter. import re # For folderfilter.
import json import json
from threading import Lock from threading import Lock
@ -106,14 +107,15 @@ class _IntermediateMbnames(object):
if self._folderfilter(self._accountname, foldername): if self._folderfilter(self._accountname, foldername):
itemlist.append({ itemlist.append({
'accountname': self._accountname, 'accountname': self._accountname,
'foldername': foldername, 'foldername': foldername.decode('utf-8'),
'localfolders': self._folder_root, 'localfolders': self._folder_root,
}) })
if self._dryrun: if self._dryrun:
self.ui.info("mbnames would write %s"% self._path) self.ui.info("mbnames would write %s"% self._path)
else: else:
with open(self._path, "wt") as intermediateFD: with codecs.open(
self._path, "wt", encoding='UTF-8') as intermediateFD:
json.dump(itemlist, intermediateFD) json.dump(itemlist, intermediateFD)
@ -227,7 +229,8 @@ class _Mbnames(object):
for intermediateFile in self._iterIntermediateFiles(): for intermediateFile in self._iterIntermediateFiles():
try: try:
with open(intermediateFile, 'rt') as intermediateFD: with codecs.open(
intermediateFile, 'rt', encoding="UTF-8") as intermediateFD:
for item in json.load(intermediateFD): for item in json.load(intermediateFD):
itemlist.append(item) itemlist.append(item)
except (OSError, IOError) as e: except (OSError, IOError) as e:
@ -248,7 +251,8 @@ class _Mbnames(object):
self.ui.info("mbnames would write %s"% self._path) self.ui.info("mbnames would write %s"% self._path)
else: else:
try: try:
with open(self._path, 'wt') as mbnamesFile: with codecs.open(
self._path, 'wt', encoding='UTF-8') as mbnamesFile:
mbnamesFile.write(self._header) mbnamesFile.write(self._header)
mbnamesFile.write(self._sep.join(itemlist)) mbnamesFile.write(self._sep.join(itemlist))
mbnamesFile.write(self._footer) mbnamesFile.write(self._footer)