]> git.notmuchmail.org Git - notmuch/commitdiff
python: work around libnotmuch calling exit(3) in Database.find_message_by_filename
authorJustus Winter <4winter@informatik.uni-hamburg.de>
Wed, 22 Feb 2012 20:14:13 +0000 (21:14 +0100)
committerJustus Winter <4winter@informatik.uni-hamburg.de>
Wed, 22 Feb 2012 20:14:35 +0000 (21:14 +0100)
Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de>
bindings/python/notmuch/database.py

index ebb8f2090e15cfde2a2ff107f98fc525e9e2319f..a054be76e1ba4a72ee8d678b3950fa659508cb01 100644 (file)
@@ -504,12 +504,6 @@ class Database(object):
     def find_message_by_filename(self, filename):
         """Find a message with the given filename
 
-        .. 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!
-
         :returns: If the database contains a message with the given
             filename, then a class:`Message:` is returned.  This
             function returns None if no message is found with the given
@@ -525,9 +519,19 @@ class Database(object):
                  retry.
         :raises: :exc:`NotInitializedError` if the database was not
                  intitialized.
+        :raises: :exc:`ReadOnlyDatabaseError` if the database has not been
+                 opened in read-write mode
 
         *Added in notmuch 0.9*"""
         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')
+
         msg_p = NotmuchMessageP()
         status = Database._find_message_by_filename(self._db, _str(filename),
                                                     byref(msg_p))