X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=notmuch.c;h=757d0eaede5d1ef6e3f984c21935c061c2170c9c;hb=ec4b7efbe4bd6d50bd6046bac5f7ef4ceaa30154;hp=bcb4b768d3b161b8b3f825190a2d531277116efe;hpb=217f8196088f200972d35ee9181bfe361cccc04a;p=notmuch diff --git a/notmuch.c b/notmuch.c index bcb4b768..757d0eae 100644 --- a/notmuch.c +++ b/notmuch.c @@ -141,11 +141,9 @@ notmuch_process_shared_indexing_options (notmuch_database_t *notmuch) static command_t commands[] = { - { NULL, notmuch_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_CREATE - | NOTMUCH_COMMAND_CONFIG_LOAD, + { NULL, notmuch_command, NOTMUCH_COMMAND_CONFIG_CREATE | NOTMUCH_COMMAND_CONFIG_LOAD, "Notmuch main command." }, - { "setup", notmuch_setup_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_CREATE - | NOTMUCH_COMMAND_CONFIG_LOAD, + { "setup", notmuch_setup_command, NOTMUCH_COMMAND_CONFIG_CREATE | NOTMUCH_COMMAND_CONFIG_LOAD, "Interactively set up notmuch for first use." }, { "new", notmuch_new_command, NOTMUCH_COMMAND_DATABASE_EARLY | NOTMUCH_COMMAND_DATABASE_WRITE | @@ -177,7 +175,7 @@ static command_t commands[] = { { "reindex", notmuch_reindex_command, NOTMUCH_COMMAND_DATABASE_EARLY | NOTMUCH_COMMAND_DATABASE_WRITE, "Re-index all messages matching the search terms." }, - { "config", notmuch_config_command, NOTMUCH_COMMAND_CONFIG_OPEN | NOTMUCH_COMMAND_CONFIG_LOAD, + { "config", notmuch_config_command, NOTMUCH_COMMAND_CONFIG_LOAD, "Get or set settings in the notmuch configuration file." }, #if WITH_EMACS { "emacs-mua", NULL, 0, @@ -376,15 +374,26 @@ notmuch_help_command (unused (notmuch_config_t *config), unused(notmuch_database * to be more clever about this in the future. */ static int -notmuch_command (notmuch_config_t *config, +notmuch_command (unused(notmuch_config_t *config), notmuch_database_t *notmuch, unused(int argc), unused(char **argv)) { - /* If the user has never configured notmuch, then run + + const char *config_path; + + /* If the user has not created a configuration file, 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); + config_path = notmuch_config_path (notmuch); + if (access (config_path, R_OK | F_OK) == -1) { + if (errno != ENOENT) { + fprintf (stderr, "Error: %s config file access failed: %s\n", config_path, + strerror (errno)); + return EXIT_FAILURE; + } else { + return notmuch_setup_command (NULL, notmuch, 0, NULL); + } + } 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" @@ -454,7 +463,7 @@ main (int argc, char *argv[]) int ret = EXIT_SUCCESS; notmuch_opt_desc_t options[] = { - { .opt_string = &config_file_name, .name = "config" }, + { .opt_string = &config_file_name, .name = "config", .allow_empty = TRUE }, { .opt_inherit = notmuch_shared_options }, { } }; @@ -580,19 +589,9 @@ main (int argc, char *argv[]) } - if (command->mode & NOTMUCH_COMMAND_CONFIG_OPEN) { - config = notmuch_config_open (notmuch, config_file_name, command->mode); - if (! config) { - ret = EXIT_FAILURE; - goto DONE; - } - } ret = (command->function)(config, notmuch, argc - opt_index, argv + opt_index); DONE: - if (config) - notmuch_config_close (config); - talloc_report = getenv ("NOTMUCH_TALLOC_REPORT"); if (talloc_report && strcmp (talloc_report, "") != 0) { /* this relies on the previous call to