X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Fdatabase.cc;h=2aff56bebd04e3c94356b71c8bf5893bb5278c66;hp=8ec91987753bafe4e1a60804f830bf05c7699e42;hb=ce360ce4c99597946949317aa40892536c9ebc05;hpb=ab456541924dcb1e1c6d6c7ba1781011e3453f27 diff --git a/lib/database.cc b/lib/database.cc index 8ec91987..2aff56be 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -1395,9 +1395,17 @@ notmuch_database_get_version (notmuch_database_t *notmuch) notmuch_bool_t notmuch_database_needs_upgrade (notmuch_database_t *notmuch) { - return notmuch->mode == NOTMUCH_DATABASE_MODE_READ_WRITE && - ((NOTMUCH_FEATURES_CURRENT & ~notmuch->features) || - (notmuch_database_get_version (notmuch) < NOTMUCH_DATABASE_VERSION)); + unsigned int version; + + if (notmuch->mode != NOTMUCH_DATABASE_MODE_READ_WRITE) + return FALSE; + + if (NOTMUCH_FEATURES_CURRENT & ~notmuch->features) + return TRUE; + + version = notmuch_database_get_version (notmuch); + + return (version > 0 && version < NOTMUCH_DATABASE_VERSION); } static volatile sig_atomic_t do_progress_notify = 0; @@ -1597,8 +1605,8 @@ notmuch_database_upgrade (notmuch_database_t *notmuch, mtime = Xapian::sortable_unserialise ( document.get_value (NOTMUCH_VALUE_TIMESTAMP)); - directory = _notmuch_directory_create (notmuch, term.c_str () + 10, - NOTMUCH_FIND_CREATE, &status); + directory = _notmuch_directory_find_or_create (notmuch, term.c_str () + 10, + NOTMUCH_FIND_CREATE, &status); notmuch_directory_set_mtime (directory, mtime); notmuch_directory_destroy (directory); @@ -1870,7 +1878,7 @@ _notmuch_database_find_directory_id (notmuch_database_t *notmuch, return NOTMUCH_STATUS_SUCCESS; } - directory = _notmuch_directory_create (notmuch, path, flags, &status); + directory = _notmuch_directory_find_or_create (notmuch, path, flags, &status); if (status || ! directory) { *directory_id = -1; return status; @@ -1980,8 +1988,8 @@ notmuch_database_get_directory (notmuch_database_t *notmuch, *directory = NULL; try { - *directory = _notmuch_directory_create (notmuch, path, - NOTMUCH_FIND_LOOKUP, &status); + *directory = _notmuch_directory_find_or_create (notmuch, path, + NOTMUCH_FIND_LOOKUP, &status); } catch (const Xapian::Error &error) { _notmuch_database_log (notmuch, "A Xapian exception occurred getting directory: %s.\n", error.get_msg ().c_str ());