]> git.notmuchmail.org Git - notmuch/blobdiff - lib/directory.cc
lib: Return an error from operations that require an upgrade
[notmuch] / lib / directory.cc
index 83bb19bce0378eae9d2ec5a0ad806eebb6076ec3..8daaec8ee817ed34fd50e4310e05486eba9db833 100644 (file)
@@ -105,6 +105,11 @@ _notmuch_directory_create (notmuch_database_t *notmuch,
     const char *db_path;
     notmuch_bool_t create = (flags & NOTMUCH_FIND_CREATE);
 
+    if (! (notmuch->features & NOTMUCH_FEATURE_DIRECTORY_DOCS)) {
+       *status_ret = NOTMUCH_STATUS_UPGRADE_REQUIRED;
+       return NULL;
+    }
+
     *status_ret = NOTMUCH_STATUS_SUCCESS;
 
     path = _notmuch_database_relative_path (notmuch, path);
@@ -153,7 +158,13 @@ _notmuch_directory_create (notmuch_database_t *notmuch,
 
            _notmuch_database_split_path (local, path, &parent, &basename);
 
-           _notmuch_database_find_directory_id (notmuch, parent, &parent_id);
+           *status_ret = _notmuch_database_find_directory_id (
+               notmuch, parent, NOTMUCH_FIND_CREATE, &parent_id);
+           if (*status_ret) {
+               notmuch_directory_destroy (directory);
+               directory = NULL;
+               goto DONE;
+           }
 
            if (basename) {
                term = talloc_asprintf (local, "%s%u:%s",