From: David Bremner Date: Fri, 29 Jul 2022 11:23:11 +0000 (-0300) Subject: lib/open: return non-SUCCESS on missing database path X-Git-Tag: 0.38_rc0~79 X-Git-Url: https://git.cworth.org/git?p=notmuch;a=commitdiff_plain;h=8ba3057d01b11fb806581f8dc451a8891a4d4e0e lib/open: return non-SUCCESS on missing database path This simplifies the logic of creating the directory path when it doesn't exist. --- diff --git a/lib/open.cc b/lib/open.cc index 85e46dc7..bc450555 100644 --- a/lib/open.cc +++ b/lib/open.cc @@ -192,6 +192,8 @@ _choose_database_path (notmuch_database_t *notmuch, const char **database_path, char **message) { + notmuch_status_t status; + if (! *database_path) { *database_path = getenv ("NOTMUCH_DATABASE"); } @@ -207,8 +209,6 @@ _choose_database_path (notmuch_database_t *notmuch, } } if (! *database_path) { - notmuch_status_t status; - *database_path = _xdg_dir (notmuch, "XDG_DATA_HOME", ".local/share", profile); status = _db_dir_exists (*database_path, message); if (status) { @@ -223,8 +223,6 @@ _choose_database_path (notmuch_database_t *notmuch, } if (! *database_path) { - notmuch_status_t status; - *database_path = talloc_asprintf (notmuch, "%s/mail", getenv ("HOME")); status = _db_dir_exists (*database_path, message); if (status) { @@ -241,6 +239,15 @@ _choose_database_path (notmuch_database_t *notmuch, *message = strdup ("Error: Database path must be absolute.\n"); return NOTMUCH_STATUS_PATH_ERROR; } + + status = _db_dir_exists (*database_path, message); + if (status) { + IGNORE_RESULT (asprintf (message, + "Error: database path '%s' does not exist or is not a directory.\n", + *database_path)); + return NOTMUCH_STATUS_NO_DATABASE; + } + return NOTMUCH_STATUS_SUCCESS; } @@ -638,10 +645,6 @@ notmuch_database_create_with_config (const char *database_path, &database_path, &message))) goto DONE; - status = _db_dir_exists (database_path, &message); - if (status) - goto DONE; - _set_database_path (notmuch, database_path); if (key_file && ! (notmuch->params & NOTMUCH_PARAM_SPLIT)) { diff --git a/test/T560-lib-error.sh b/test/T560-lib-error.sh index a2901ff6..30cce943 100755 --- a/test/T560-lib-error.sh +++ b/test/T560-lib-error.sh @@ -91,7 +91,7 @@ EOF cat <<'EOF' >EXPECTED == stdout == == stderr == -Error: Cannot open database at CWD/nonexistent/foo: No such file or directory. +Error: database path 'CWD/nonexistent/foo' does not exist or is not a directory. EOF test_expect_equal_file EXPECTED OUTPUT @@ -132,7 +132,7 @@ EOF cat <<'EOF' >EXPECTED == stdout == == stderr == -Error: Cannot open database at CWD/nonexistent/foo: No such file or directory. +Error: database path 'CWD/nonexistent/foo' does not exist or is not a directory. EOF test_expect_equal_file EXPECTED OUTPUT