aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/database.cc
diff options
context:
space:
mode:
authorGravatar Austin Clements <amdragon@MIT.EDU>2012-05-18 00:13:37 -0400
committerGravatar David Bremner <bremner@debian.org>2012-05-23 22:30:55 -0300
commitfe1ca1410423d99db09543f4a97bc2ba0c6ade81 (patch)
treed879494317f6894cedcf00e587aac1aff823114a /lib/database.cc
parent67ae2377a9ec2da296a2e012352f962664a4d1a8 (diff)
lib: Make notmuch_database_get_directory return NULL if the directory is not found
Using the new support from _notmuch_directory_create, this makes notmuch_database_get_directory a read-only operation that simply returns the directory object if it exists or NULL otherwise. This also means that notmuch_database_get_directory can work on read-only databases. This change breaks the directory mtime workaround in notmuch-new.c by fixing the exact issue it was working around. This permits mtime update races to prevent scans of changed directories, which non-deterministically breaks a few tests. The next patch fixes this.
Diffstat (limited to 'lib/database.cc')
-rw-r--r--lib/database.cc7
1 files changed, 2 insertions, 5 deletions
diff --git a/lib/database.cc b/lib/database.cc
index b4c76b4e..e27a0e16 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -1328,12 +1328,9 @@ notmuch_database_get_directory (notmuch_database_t *notmuch,
return NOTMUCH_STATUS_NULL_POINTER;
*directory = NULL;
- /* XXX Handle read-only databases properly */
- if (notmuch->mode == NOTMUCH_DATABASE_MODE_READ_ONLY)
- return NOTMUCH_STATUS_READ_ONLY_DATABASE;
-
try {
- *directory = _notmuch_directory_create (notmuch, path, NOTMUCH_FIND_CREATE, &status);
+ *directory = _notmuch_directory_create (notmuch, path,
+ NOTMUCH_FIND_LOOKUP, &status);
} catch (const Xapian::Error &error) {
fprintf (stderr, "A Xapian exception occurred getting directory: %s.\n",
error.get_msg().c_str());