X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=notmuch.c;h=2429999c2694345dd71b556e282b6dbb5a943dbe;hb=a663783343cb992d132ecc18e4e4d4e37bbf12e9;hp=616639083e92c2d6e7644c38f238bf4022bf7512;hpb=77d4b26d3e374afac0012148a8ac0a08158406f1;p=notmuch diff --git a/notmuch.c b/notmuch.c index 61663908..2429999c 100644 --- a/notmuch.c +++ b/notmuch.c @@ -31,8 +31,7 @@ * Each subcommand should be passed either a config object, or an open * database */ -typedef int (*command_function_t) (notmuch_config_t *config, notmuch_database_t *notmuch, - int argc, char *argv[]); +typedef int (*command_function_t) (notmuch_database_t *notmuch, int argc, char *argv[]); typedef struct command { const char *name; @@ -42,10 +41,10 @@ typedef struct command { } command_t; static int -notmuch_help_command (notmuch_config_t *config, notmuch_database_t *notmuch, int argc, char *argv[]); +notmuch_help_command (notmuch_database_t *notmuch, int argc, char *argv[]); static int -notmuch_command (notmuch_config_t *config, notmuch_database_t *notmuch, int argc, char *argv[]); +notmuch_command (notmuch_database_t *notmuch, int argc, char *argv[]); static int _help_for (const char *topic); @@ -141,11 +140,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 +174,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, @@ -351,8 +348,7 @@ _help_for (const char *topic_name) } static int -notmuch_help_command (unused (notmuch_config_t *config), unused(notmuch_database_t *notmuch), int - argc, char *argv[]) +notmuch_help_command (unused(notmuch_database_t *notmuch), int argc, char *argv[]) { int opt_index; @@ -376,15 +372,25 @@ 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_database_t *notmuch, +notmuch_command (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 (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" @@ -448,7 +454,6 @@ main (int argc, char *argv[]) const char *command_name = NULL; command_t *command; const char *config_file_name = NULL; - notmuch_config_t *config = NULL; notmuch_database_t *notmuch = NULL; int opt_index; int ret = EXIT_SUCCESS; @@ -580,22 +585,9 @@ main (int argc, char *argv[]) } - if (command->mode & NOTMUCH_COMMAND_CONFIG_OPEN) { - if (! config_file_name) - config_file_name = notmuch_config_path (notmuch); - - 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); + ret = (command->function)(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