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 12DCF6DE20AB for ; Sun, 26 Feb 2017 11:12:48 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at cworth.org X-Spam-Flag: NO X-Spam-Score: -0.171 X-Spam-Level: X-Spam-Status: No, score=-0.171 tagged_above=-999 required=5 tests=[AWL=-0.151, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01] 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 W4Ek-4IB1_FH for ; Sun, 26 Feb 2017 11:12:46 -0800 (PST) Received: from mail-lf0-f68.google.com (mail-lf0-f68.google.com [209.85.215.68]) by arlo.cworth.org (Postfix) with ESMTPS id E694C6DE1F59 for ; Sun, 26 Feb 2017 11:12:45 -0800 (PST) Received: by mail-lf0-f68.google.com with SMTP id z127so4764849lfa.2 for ; Sun, 26 Feb 2017 11:12:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nikula-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=6TdUsZxeQ9G2GOO52BM/RbQUNQsHrQ1Nr2n4hZFU0o8=; b=tG6opXZTtHiUHxd9Z3E0Ly5Gpv7O7eApedoSpPvyv/vOb/Y+eFjlkwD/O9BkIyeXls yW/Qy28Zacw7gSb8TEzkJzGXawMLr+yTYHiYJeNDJQXoMNzO4y0PMoLdxPrMEfH+1JkQ UkSP0N9zL4nLR9fM0jnGCrKkG8ZPX9uQEBKboJjU8WKlLyqjOlsd7rzaajqYzrgBNQZY MkCjFsk17VgL2DCTqCwN4TlZlqRQ/Qn1PDf7rY+V0MxzY8f0AywJYi5dN9v2wbdc0eOZ JhlKk7haSfyZl2kg1R42KfpSQIRDaojSPjfhgqfJ41AvoL3ApZPj2EhoyxWAE1LEhWlI gjVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=6TdUsZxeQ9G2GOO52BM/RbQUNQsHrQ1Nr2n4hZFU0o8=; b=P/VuaRYEPdUjcHavLY1e0k6hU64EZzuamT15VcOKOALRexs2K5EJfROMtQ17NP+N7O E2DI6X4Cmq2CWQtE+DUEaSOd5X81h323lQIdnpwzRKrjfWMO4MjezZDWfmLWkEmzM1NP qtDWpG1sQlkTc7+GapR1oVby7JP6HlVMfbTbNxemeqFI1ZsHxczpnQ9PSCsp2dy3uobU GtVLNapyPrYIaIqRt15T7jkQ4zFp0IwR0MD6xG74qcE20fv2VQQhD0cnGmf9Hn5cqaRT y70KP8aiot7ZOwhK2i9YAeO4DgQyaZsVtXQ7rX34q+dKRB1nhHnEK1Ea5X6bih3tR+Qm wBwQ== X-Gm-Message-State: AMke39nqR6VuYvgClcz7L0GTwqMw5/+suf0J2QtdAmNwWttxVfpc1P1QLlHG2PDgS/fYBQ== X-Received: by 10.25.125.11 with SMTP id y11mr3933773lfc.101.1488136364120; Sun, 26 Feb 2017 11:12:44 -0800 (PST) Received: from localhost (mobile-access-bcee80-14.dhcp.inet.fi. [188.238.128.14]) by smtp.gmail.com with ESMTPSA id a16sm3429969lfk.64.2017.02.26.11.12.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 26 Feb 2017 11:12:43 -0800 (PST) From: Jani Nikula To: notmuch@notmuchmail.org Cc: Tomi Ollila , jani@nikula.org Subject: [PATCH 1/2] cli/config: don't try to open config file for 'notmuch help' Date: Sun, 26 Feb 2017 21:12:38 +0200 Message-Id: <20170226191239.30887-1-jani@nikula.org> X-Mailer: git-send-email 2.11.0 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 19:12:48 -0000 The help command does not really need to try to open the config file. So don't. --- 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