]> git.notmuchmail.org Git - notmuch/blobdiff - lib/database.cc
lib: Perform the same transformation to _notmuch_database_find_directory_id
[notmuch] / lib / database.cc
index f8c4a7d121d0bdbcd2a631ee65ed9303ab9cd9fa..716982d0e4cd279e9b734941c78e56aca84fbf37 100644 (file)
@@ -956,7 +956,7 @@ notmuch_database_upgrade (notmuch_database_t *notmuch,
                    document.get_value (NOTMUCH_VALUE_TIMESTAMP));
 
                directory = _notmuch_directory_create (notmuch, term.c_str() + 10,
-                                                      &status);
+                                                      NOTMUCH_FIND_CREATE, &status);
                notmuch_directory_set_mtime (directory, mtime);
                notmuch_directory_destroy (directory);
            }
@@ -1197,9 +1197,17 @@ _notmuch_database_split_path (void *ctx,
     return NOTMUCH_STATUS_SUCCESS;
 }
 
+/* Find the document ID of the specified directory.
+ *
+ * If (flags & NOTMUCH_FIND_CREATE), a new directory document will be
+ * created if one does not exist for 'path'.  Otherwise, if the
+ * directory document does not exist, this sets *directory_id to
+ * ((unsigned int)-1) and returns NOTMUCH_STATUS_SUCCESS.
+ */
 notmuch_status_t
 _notmuch_database_find_directory_id (notmuch_database_t *notmuch,
                                     const char *path,
+                                    notmuch_find_flags_t flags,
                                     unsigned int *directory_id)
 {
     notmuch_directory_t *directory;
@@ -1210,8 +1218,8 @@ _notmuch_database_find_directory_id (notmuch_database_t *notmuch,
        return NOTMUCH_STATUS_SUCCESS;
     }
 
-    directory = _notmuch_directory_create (notmuch, path, &status);
-    if (status) {
+    directory = _notmuch_directory_create (notmuch, path, flags, &status);
+    if (status || !directory) {
        *directory_id = -1;
        return status;
     }
@@ -1260,7 +1268,7 @@ _notmuch_database_filename_to_direntry (void *ctx,
     if (status)
        return status;
 
-    status = _notmuch_database_find_directory_id (notmuch, directory,
+    status = _notmuch_database_find_directory_id (notmuch, directory, NOTMUCH_FIND_CREATE,
                                                  &directory_id);
     if (status)
        return status;
@@ -1320,7 +1328,7 @@ notmuch_database_get_directory (notmuch_database_t *notmuch,
        return NOTMUCH_STATUS_READ_ONLY_DATABASE;
 
     try {
-       *directory = _notmuch_directory_create (notmuch, path, &status);
+       *directory = _notmuch_directory_create (notmuch, path, NOTMUCH_FIND_CREATE, &status);
     } catch (const Xapian::Error &error) {
        fprintf (stderr, "A Xapian exception occurred getting directory: %s.\n",
                 error.get_msg().c_str());