From 97d3ab49c4b2ee505c62432c96c23e2fb49b1477 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Tue, 25 Mar 2014 14:14:23 -0700 Subject: [PATCH] 7258: Fix filesystem encoding in get_dbdir_summary and DbUndoBSDDB.close. --- gramps/cli/clidbman.py | 4 +++- gramps/gen/db/undoredo.py | 8 ++++++-- gramps/gen/db/write.py | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gramps/cli/clidbman.py b/gramps/cli/clidbman.py index 9015c8d3f..c72274b55 100644 --- a/gramps/cli/clidbman.py +++ b/gramps/cli/clidbman.py @@ -64,7 +64,7 @@ _ = glocale.translation.gettext from gramps.gen.db import DbBsddb from gramps.gen.plug import BasePluginManager from gramps.gen.config import config -from gramps.gen.constfunc import win, conv_to_unicode +from gramps.gen.constfunc import win, conv_to_unicode, UNITYPE #------------------------------------------------------------------------- # # constants @@ -168,6 +168,8 @@ class CLIDbManager(object): flags = db.DB_CREATE | db.DB_PRIVATE |\ db.DB_INIT_MPOOL |\ db.DB_INIT_LOG | db.DB_INIT_TXN + if (isinstance(dirpath, UNITYPE) and win() and sys.version_info[0] < 3): + dirpath = dirpath.encode(sys.getfilesystemencoding()) try: env.open(dirpath, flags) except Exception as msg: diff --git a/gramps/gen/db/undoredo.py b/gramps/gen/db/undoredo.py index 162562338..2c1f67ab1 100644 --- a/gramps/gen/db/undoredo.py +++ b/gramps/gen/db/undoredo.py @@ -63,7 +63,7 @@ _ = glocale.translation.gettext # Gramps modules # #------------------------------------------------------------------------- -from ..constfunc import conv_to_unicode, handle2internal +from ..constfunc import conv_to_unicode, handle2internal, win, UNITYPE from .dbconst import * from . import BSDDBTxn from ..errors import DbError @@ -419,7 +419,11 @@ class DbUndoBSDDB(DbUndo): """ Open the undo/redo database """ - self.undodb.open(self.path, db.DB_RECNO, db.DB_CREATE) + path = (self.path.encode(sys.getfilesystemencoding()) + if (isinstance(self.path, UNITYPE) and win() + and sys.version_info[0] < 3) + else self.path) + self.undodb.open(path, db.DB_RECNO, db.DB_CREATE) def close(self): """ diff --git a/gramps/gen/db/write.py b/gramps/gen/db/write.py index 819f49868..85a61b7fa 100644 --- a/gramps/gen/db/write.py +++ b/gramps/gen/db/write.py @@ -906,7 +906,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback): Open the undo database """ if not self.readonly: - self.undolog = _encode(os.path.join(self.full_name, DBUNDOFN)) + self.undolog = os.path.join(self.full_name, DBUNDOFN) self.undodb = DbUndo(self, self.undolog) self.undodb.open()