}
if (*database_path == NULL) {
- *message = strdup ("Error: Cannot open a database for a NULL path.\n");
- return NOTMUCH_STATUS_NULL_POINTER;
+ *message = strdup ("Error: could not locate database.\n");
+ return NOTMUCH_STATUS_NO_DATABASE;
}
if (*database_path[0] != '/') {
char *message; /* ignored */
if (_db_dir_exists (database_path, &message))
- return NOTMUCH_STATUS_SUCCESS;
+ return NOTMUCH_STATUS_NO_DATABASE;
_set_database_path (notmuch, database_path);
if (_notmuch_choose_xapian_path (notmuch, database_path, ¬much->xapian_path, &message))
- return NOTMUCH_STATUS_SUCCESS;
+ return NOTMUCH_STATUS_NO_DATABASE;
(void) _finish_open (notmuch, profile, NOTMUCH_DATABASE_MODE_READ_ONLY, key_file, &message);
status = _choose_database_path (local, profile, key_file,
&database_path, &split, &message);
switch (status) {
- /* weirdly NULL_POINTER is what is returned if we fail to find
- * a database */
- case NOTMUCH_STATUS_NULL_POINTER:
+ case NOTMUCH_STATUS_NO_DATABASE:
case NOTMUCH_STATUS_SUCCESS:
+ if (! warning)
+ warning = status;
break;
default:
goto DONE;
}
+
if (database_path) {
status = _maybe_load_config_from_database (notmuch, key_file, database_path, profile);
- if (status)
+ switch (status) {
+ case NOTMUCH_STATUS_NO_DATABASE:
+ case NOTMUCH_STATUS_SUCCESS:
+ if (! warning)
+ warning = status;
+ break;
+ default:
goto DONE;
+ }
}
if (key_file) {
notmuch_database_t *notmuch,
unused(int argc), unused(char **argv))
{
- char *db_path;
- struct stat st;
-
/* If the user has never configured notmuch, then run
* notmuch_setup_command which will give a nice welcome message,
* and interactively guide the user through the configuration. */
if (notmuch_config_is_new (config))
return notmuch_setup_command (config, notmuch, 0, NULL);
- /* Notmuch is already configured, but is there a database? */
- db_path = talloc_asprintf (config, "%s/%s",
- notmuch_config_get (notmuch, NOTMUCH_CONFIG_DATABASE_PATH),
- ".notmuch");
- if (stat (db_path, &st)) {
- if (errno != ENOENT) {
- fprintf (stderr, "Error looking for notmuch database at %s: %s\n",
- db_path, strerror (errno));
- return EXIT_FAILURE;
- }
- printf ("Notmuch is configured, but there's not yet a database at\n\n\t%s\n\n",
- db_path);
- printf ("You probably want to run \"notmuch new\" now to create that database.\n\n"
- "Note that the first run of \"notmuch new\" can take a very long time\n"
- "and that the resulting database will use roughly the same amount of\n"
- "storage space as the email being indexed.\n\n");
- return EXIT_SUCCESS;
- }
-
printf ("Notmuch is configured and appears to have a database. Excellent!\n\n"
"At this point you can start exploring the functionality of notmuch by\n"
"using commands such as:\n\n"
fputs ("Try running 'notmuch setup' to create a configuration.", stderr);
goto DONE;
}
-
- if (status && (status != NOTMUCH_STATUS_NO_CONFIG)) {
- if (status_string) {
- fputs (status_string, stderr);
- free (status_string);
+ switch (status) {
+ case NOTMUCH_STATUS_NO_CONFIG:
+ if (! (command->mode & NOTMUCH_COMMAND_CONFIG_CREATE)) {
+ fputs ("Try running 'notmuch setup' to create a configuration.", stderr);
+ goto DONE;
+ }
+ break;
+ case NOTMUCH_STATUS_NO_DATABASE:
+ if (! command_name) {
+ printf ("Notmuch is configured, but no database was found.\n");
+ printf ("You probably want to run \"notmuch new\" now to create a database.\n\n"
+ "Note that the first run of \"notmuch new\" can take a very long time\n"
+ "and that the resulting database will use roughly the same amount of\n"
+ "storage space as the email being indexed.\n\n");
+ status = NOTMUCH_STATUS_SUCCESS;
+ goto DONE;
}
+ break;
+ case NOTMUCH_STATUS_SUCCESS:
+ break;
+ default:
goto DONE;
}
test_begin_subtest "notmuch with a config but without a database suggests notmuch new"
notmuch 2>&1 | notmuch_dir_sanitize > OUTPUT
cat <<EOF > EXPECTED
-Notmuch is configured, but there's not yet a database at
-
- MAIL_DIR/.notmuch
-
-You probably want to run "notmuch new" now to create that database.
+Notmuch is configured, but no database was found.
+You probably want to run "notmuch new" now to create a database.
Note that the first run of "notmuch new" can take a very long time
and that the resulting database will use roughly the same amount of
"$output" \
"Welcome to a new version of notmuch! Your database will now be upgraded."
+ test_begin_subtest "notmuch +config -database suggests notmuch new ($config)"
+ mv "$XAPIAN_PATH" "${XAPIAN_PATH}.bak"
+ notmuch > OUTPUT
+cat <<EOF > EXPECTED
+Notmuch is configured, but no database was found.
+You probably want to run "notmuch new" now to create a database.
+
+Note that the first run of "notmuch new" can take a very long time
+and that the resulting database will use roughly the same amount of
+storage space as the email being indexed.
+
+EOF
+ mv "${XAPIAN_PATH}.bak" "$XAPIAN_PATH"
+
+ test_expect_equal_file EXPECTED OUTPUT
+
restore_config
done