From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by arlo.cworth.org (Postfix) with ESMTP id 213276DE2094 for ; Sun, 26 Feb 2017 12:00:50 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: 0.505 X-Spam-Level: X-Spam-Status: No, score=0.505 tagged_above=-999 required=5 tests=[AWL=-0.147, SPF_NEUTRAL=0.652] autolearn=disabled Received: from arlo.cworth.org ([127.0.0.1]) by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tpqWq8MwoXEb for ; Sun, 26 Feb 2017 12:00:49 -0800 (PST) Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34]) by arlo.cworth.org (Postfix) with ESMTP id B99E06DE1F94 for ; Sun, 26 Feb 2017 12:00:48 -0800 (PST) Received: from guru.guru-group.fi (localhost [IPv6:::1]) by guru.guru-group.fi (Postfix) with ESMTP id 5B18C10005A for ; Sun, 26 Feb 2017 22:00:15 +0200 (EET) From: Tomi Ollila To: notmuch@notmuchmail.org Subject: Re: [PATCH 1/2] cli/config: don't try to open config file for 'notmuch help' In-Reply-To: <20170226191239.30887-1-jani@nikula.org> References: <20170226191239.30887-1-jani@nikula.org> User-Agent: Notmuch/0.23.5+113~gfa95df1 (https://notmuchmail.org) Emacs/24.5.1 (x86_64-unknown-linux-gnu) X-Face: HhBM'cA~ MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Feb 2017 20:00:50 -0000 On Sun, Feb 26 2017, Jani Nikula wrote: > The help command does not really need to try to open the config > file. So don't. > > --- I've forgotten this ... added notmuch::0.24 to this series and will check carefully and test tomorrow... Tomi > > This will allow better error reporting such as > id:1483570332-11820-1-git-send-email-tomi.ollila@iki.fi while still > ensuring 'notmuch help' succeeds in the absence of config files. > --- > notmuch-client.h | 7 ++++++- > notmuch-config.c | 12 ++++++++---- > notmuch.c | 34 +++++++++++++++++----------------- > 3 files changed, 31 insertions(+), 22 deletions(-) > > diff --git a/notmuch-client.h b/notmuch-client.h > index 21b087980a17..1099122426af 100644 > --- a/notmuch-client.h > +++ b/notmuch-client.h > @@ -263,10 +263,15 @@ json_quote_str (const void *ctx, const char *str); > > /* notmuch-config.c */ > > +typedef enum { > + NOTMUCH_CONFIG_OPEN = 1 << 0, > + NOTMUCH_CONFIG_CREATE = 1 << 1, > +} notmuch_config_mode_t; > + > notmuch_config_t * > notmuch_config_open (void *ctx, > const char *filename, > - notmuch_bool_t create_new); > + notmuch_config_mode_t config_mode); > > void > notmuch_config_close (notmuch_config_t *config); > diff --git a/notmuch-config.c b/notmuch-config.c > index b202bb1e2299..959410cce7b8 100644 > --- a/notmuch-config.c > +++ b/notmuch-config.c > @@ -322,7 +322,7 @@ out: > notmuch_config_t * > notmuch_config_open (void *ctx, > const char *filename, > - notmuch_bool_t create_new) > + notmuch_config_mode_t config_mode) > { > GError *error = NULL; > size_t tmp; > @@ -356,9 +356,13 @@ notmuch_config_open (void *ctx, > > config->key_file = g_key_file_new (); > > - if (! get_config_from_file (config, create_new)) { > - talloc_free (config); > - return NULL; > + if (config_mode & NOTMUCH_CONFIG_OPEN) { > + notmuch_bool_t create_new = (config_mode & NOTMUCH_CONFIG_CREATE) != 0; > + > + if (! get_config_from_file (config, create_new)) { > + talloc_free (config); > + return NULL; > + } > } > > /* Whenever we know of configuration sections that don't appear in > diff --git a/notmuch.c b/notmuch.c > index b9c320329dd5..8e332ce64410 100644 > --- a/notmuch.c > +++ b/notmuch.c > @@ -33,7 +33,7 @@ typedef int (*command_function_t) (notmuch_config_t *config, int argc, char *arg > typedef struct command { > const char *name; > command_function_t function; > - notmuch_bool_t create_config; > + notmuch_config_mode_t config_mode; > const char *summary; > } command_t; > > @@ -97,35 +97,35 @@ int notmuch_minimal_options (const char *subcommand_name, > } > > static command_t commands[] = { > - { NULL, notmuch_command, TRUE, > + { NULL, notmuch_command, NOTMUCH_CONFIG_OPEN | NOTMUCH_CONFIG_CREATE, > "Notmuch main command." }, > - { "setup", notmuch_setup_command, TRUE, > + { "setup", notmuch_setup_command, NOTMUCH_CONFIG_OPEN | NOTMUCH_CONFIG_CREATE, > "Interactively set up notmuch for first use." }, > - { "new", notmuch_new_command, FALSE, > + { "new", notmuch_new_command, NOTMUCH_CONFIG_OPEN, > "Find and import new messages to the notmuch database." }, > - { "insert", notmuch_insert_command, FALSE, > + { "insert", notmuch_insert_command, NOTMUCH_CONFIG_OPEN, > "Add a new message into the maildir and notmuch database." }, > - { "search", notmuch_search_command, FALSE, > + { "search", notmuch_search_command, NOTMUCH_CONFIG_OPEN, > "Search for messages matching the given search terms." }, > - { "address", notmuch_address_command, FALSE, > + { "address", notmuch_address_command, NOTMUCH_CONFIG_OPEN, > "Get addresses from messages matching the given search terms." }, > - { "show", notmuch_show_command, FALSE, > + { "show", notmuch_show_command, NOTMUCH_CONFIG_OPEN, > "Show all messages matching the search terms." }, > - { "count", notmuch_count_command, FALSE, > + { "count", notmuch_count_command, NOTMUCH_CONFIG_OPEN, > "Count messages matching the search terms." }, > - { "reply", notmuch_reply_command, FALSE, > + { "reply", notmuch_reply_command, NOTMUCH_CONFIG_OPEN, > "Construct a reply template for a set of messages." }, > - { "tag", notmuch_tag_command, FALSE, > + { "tag", notmuch_tag_command, NOTMUCH_CONFIG_OPEN, > "Add/remove tags for all messages matching the search terms." }, > - { "dump", notmuch_dump_command, FALSE, > + { "dump", notmuch_dump_command, NOTMUCH_CONFIG_OPEN, > "Create a plain-text dump of the tags for each message." }, > - { "restore", notmuch_restore_command, FALSE, > + { "restore", notmuch_restore_command, NOTMUCH_CONFIG_OPEN, > "Restore the tags from the given dump file (see 'dump')." }, > - { "compact", notmuch_compact_command, FALSE, > + { "compact", notmuch_compact_command, NOTMUCH_CONFIG_OPEN, > "Compact the notmuch database." }, > - { "config", notmuch_config_command, FALSE, > + { "config", notmuch_config_command, NOTMUCH_CONFIG_OPEN, > "Get or set settings in the notmuch configuration file." }, > - { "help", notmuch_help_command, TRUE, /* create but don't save config */ > + { "help", notmuch_help_command, NOTMUCH_CONFIG_CREATE, /* create but don't save config */ > "This message, or more detailed help for the named command." } > }; > > @@ -447,7 +447,7 @@ main (int argc, char *argv[]) > goto DONE; > } > > - config = notmuch_config_open (local, config_file_name, command->create_config); > + config = notmuch_config_open (local, config_file_name, command->config_mode); > if (!config) { > ret = EXIT_FAILURE; > goto DONE; > -- > 2.11.0