aboutsummaryrefslogtreecommitdiffhomepage
path: root/bindings
diff options
context:
space:
mode:
authorGravatar Justus Winter <4winter@informatik.uni-hamburg.de>2012-02-22 20:58:44 +0100
committerGravatar Justus Winter <4winter@informatik.uni-hamburg.de>2012-02-22 21:14:35 +0100
commitfcf19ad029913e88558a21135feb0b5e1b33cef3 (patch)
tree0d16dd42bf8aa5cbd74af5f8aa1b2a7d58d8c54c /bindings
parent35ceaf496fe2d2a1324a8462e629e618ed20037a (diff)
python: work around libnotmuch calling exit(3) in Database.get_directory
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
Diffstat (limited to 'bindings')
-rw-r--r--bindings/python/notmuch/database.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py
index bef9720f..82cb803a 100644
--- a/bindings/python/notmuch/database.py
+++ b/bindings/python/notmuch/database.py
@@ -27,6 +27,7 @@ from notmuch.globals import (
NotmuchError,
NullPointerError,
NotInitializedError,
+ ReadOnlyDatabaseError,
Enum,
_str,
NotmuchDatabaseP,
@@ -145,6 +146,7 @@ class Database(object):
failure.
"""
self._db = None
+ self.mode = mode
if path is None:
# no path specified. use a user's default database
if Database._std_db_path is None:
@@ -335,20 +337,24 @@ class Database(object):
"""Returns a :class:`Directory` of path,
(creating it if it does not exist(?))
- .. warning::
-
- This call needs a writeable database in
- :attr:`Database.MODE`.READ_WRITE mode. The underlying library will
- exit the program if this method is used on a read-only database!
-
:param path: An unicode string containing the path relative to the path
of database (see :meth:`get_path`), or else should be an absolute
path with initial components that match the path of 'database'.
:returns: :class:`Directory` or raises an exception.
:raises: :exc:`FileError` if path is not relative database or absolute
with initial components same as database.
+ :raises: :exc:`ReadOnlyDatabaseError` if the database has not been
+ opened in read-write mode
"""
self._assert_db_is_initialized()
+
+ # work around libnotmuch calling exit(3), see
+ # id:20120221002921.8534.57091@thinkbox.jade-hamburg.de
+ # TODO: remove once this issue is resolved
+ if self.mode != Database.MODE.READ_WRITE:
+ raise ReadOnlyDatabaseError('The database has to be opened in '
+ 'read-write mode for get_directory')
+
# sanity checking if path is valid, and make path absolute
if path and path[0] == os.sep:
# we got an absolute path