From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id WLKEDMnlImGQOwEAgWs5BA (envelope-from ) for ; Mon, 23 Aug 2021 02:03:21 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id oJ81CMnlImGyMwAA1q6Kng (envelope-from ) for ; Mon, 23 Aug 2021 00:03:21 +0000 Received: from mail.notmuchmail.org (nmbug.tethera.net [144.217.243.247]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id B821CEA6 for ; Mon, 23 Aug 2021 02:03:20 +0200 (CEST) Received: from nmbug.tethera.net (localhost [127.0.0.1]) by mail.notmuchmail.org (Postfix) with ESMTP id 1CCD61FCCE; Sun, 22 Aug 2021 20:03:16 -0400 (EDT) Received: from fethera.tethera.net (fethera.tethera.net [IPv6:2607:5300:60:c5::1]) by mail.notmuchmail.org (Postfix) with ESMTP id 9F9551FA29 for ; Sun, 22 Aug 2021 20:03:13 -0400 (EDT) Received: by fethera.tethera.net (Postfix, from userid 1001) id 1F4FC5FD5C; Sun, 22 Aug 2021 20:03:13 -0400 (EDT) Received: (nullmailer pid 1214956 invoked by uid 1000); Mon, 23 Aug 2021 00:03:09 -0000 From: David Bremner To: notmuch@notmuchmail.org Cc: David Bremner Subject: [PATCH] CLI: make variable n_requested_db_uuid file scope. Date: Sun, 22 Aug 2021 17:03:04 -0700 Message-Id: <20210823000304.1214894-1-david@tethera.net> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Message-ID-Hash: KOBBJQP4TXTXWOFOK3ZB5LGS5W6VQKO2 X-Message-ID-Hash: KOBBJQP4TXTXWOFOK3ZB5LGS5W6VQKO2 X-MailFrom: bremner@tethera.net X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-notmuch.notmuchmail.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.1 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1629677000; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=HoeNl9204lK1V7oH+G+bi2RWuPKugeQvDYYKON08qqc=; b=pXau0eJHgIPQPLO/zsihYOcUf1obioE33hmzk8L6MBKpfFOwYdJOli8JQmUX5eK0DwobKI CO/CihGjhD+zXTLmpuYIKK1AdmeGjdNd9V5tklS8qoLiU/aWtUTUYxSHJJA1LkoCKEJ1th 6brchoBuBOEN3H4Zd2LDRyDjldRiDcNR3VBmjDwuuhus5qqTkABTCLdIkkoIrEwuDNXiVS FNGemXE4boZvDP/yg7CufeovKyTleVN5NjNduvpzPCqXdn70svLg8PrW/KjYSCZOFDC+Nn loDr5SyvGGv8fZtYc+Umj1Gb69PeHfRFKY9TvkkqABEm8qMb/eS6KVCG+o2CEQ== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1629677000; a=rsa-sha256; cv=none; b=PT/cIY0pkPNrScDirHWOSb6mzBdZKFtAW1qYxrbrmOyhhuofLAsDoJc6/vpy6J1BukYkir pCReEEgcbZU0ewlkG4yAukRw7cqw97ExkJmQlVv2blBLXVlwIp9LYNMA53rWNB4xmc6JTN 3Tkuwx1cGdLr+sw/WEHUrY1hGuF/H3OZoK/0KCo5nlE+JGn4Mr+77Q8fHaPku+LchQ5iN8 9l+IE64YD/1CFLQS7DXoGlMqo3w2/x0PcVSHFg/H++EipbL1saDqq2ADIJusLipJvNjXeT 38Jv3VSCueGLNeoAirgZFc6PCG8CoeGS4aBY+/hwQn5MhIkpVpAd5aFmX2vZng== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 144.217.243.247 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Spam-Score: -1.00 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of notmuch-bounces@notmuchmail.org designates 144.217.243.247 as permitted sender) smtp.mailfrom=notmuch-bounces@notmuchmail.org X-Migadu-Queue-Id: B821CEA6 X-Spam-Score: -1.00 X-Migadu-Scanner: scn0.migadu.com X-TUID: WAnn06+Km1dS It turns out that now that we pass an open database into the subcommands, it is easy to check any requested uuid against the database at the same time as we process the other shared arguments. This results in overall less boilerplate code, as well as making a CLI scope function and variable file scope in notmuch.c. --- notmuch-client.h | 4 +--- notmuch-compact.c | 7 +------ notmuch-config.c | 4 ---- notmuch-count.c | 4 +--- notmuch-dump.c | 4 +--- notmuch-insert.c | 4 +--- notmuch-new.c | 4 +--- notmuch-reindex.c | 4 +--- notmuch-reply.c | 4 +--- notmuch-restore.c | 3 +-- notmuch-search.c | 6 ++---- notmuch-setup.c | 4 ---- notmuch-show.c | 4 +--- notmuch-tag.c | 4 +--- notmuch.c | 24 ++++++++++++++++++------ test/random-corpus.c | 3 ++- 16 files changed, 33 insertions(+), 54 deletions(-) diff --git a/notmuch-client.h b/notmuch-client.h index 8643a63f..f820791f 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -485,11 +485,9 @@ print_status_gzbytes (const char *loc, #include "command-line-arguments.h" -extern const char *notmuch_requested_db_uuid; extern const notmuch_opt_desc_t notmuch_shared_options []; -void notmuch_exit_if_unmatched_db_uuid (notmuch_database_t *notmuch); -void notmuch_process_shared_options (const char *subcommand_name); +void notmuch_process_shared_options (notmuch_database_t *notmuch, const char *subcommand_name); int notmuch_minimal_options (const char *subcommand_name, int argc, char **argv); diff --git a/notmuch-compact.c b/notmuch-compact.c index 2648434e..40ffb428 100644 --- a/notmuch-compact.c +++ b/notmuch-compact.c @@ -45,12 +45,7 @@ notmuch_compact_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - if (notmuch_requested_db_uuid) { - fprintf (stderr, "Error: --uuid not implemented for compact\n"); - return EXIT_FAILURE; - } - - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (NULL, argv[0]); if (! quiet) printf ("Compacting database...\n"); diff --git a/notmuch-config.c b/notmuch-config.c index 4de55e5f..80a207f6 100644 --- a/notmuch-config.c +++ b/notmuch-config.c @@ -708,10 +708,6 @@ notmuch_config_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - if (notmuch_requested_db_uuid) - fprintf (stderr, "Warning: ignoring --uuid=%s\n", - notmuch_requested_db_uuid); - /* skip at least subcommand argument */ argc -= opt_index; argv += opt_index; diff --git a/notmuch-count.c b/notmuch-count.c index 5ac4292b..e8c545e3 100644 --- a/notmuch-count.c +++ b/notmuch-count.c @@ -182,7 +182,7 @@ notmuch_count_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); if (input_file_name) { batch = true; @@ -201,8 +201,6 @@ notmuch_count_command (notmuch_database_t *notmuch, int argc, char *argv[]) return EXIT_FAILURE; } - notmuch_exit_if_unmatched_db_uuid (notmuch); - query_str = query_string_from_args (notmuch, argc - opt_index, argv + opt_index); if (query_str == NULL) { fprintf (stderr, "Out of memory.\n"); diff --git a/notmuch-dump.c b/notmuch-dump.c index ae89e4da..5c8213be 100644 --- a/notmuch-dump.c +++ b/notmuch-dump.c @@ -366,8 +366,6 @@ notmuch_dump_command (notmuch_database_t *notmuch, int argc, char *argv[]) const char *query_str = NULL; int ret; - notmuch_exit_if_unmatched_db_uuid (notmuch); - const char *output_file_name = NULL; int opt_index; @@ -394,7 +392,7 @@ notmuch_dump_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); if (include == 0) include = DUMP_INCLUDE_CONFIG | DUMP_INCLUDE_TAGS | DUMP_INCLUDE_PROPERTIES; diff --git a/notmuch-insert.c b/notmuch-insert.c index e3d87e4a..72e2e35f 100644 --- a/notmuch-insert.c +++ b/notmuch-insert.c @@ -478,7 +478,7 @@ notmuch_insert_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); mail_root = notmuch_config_get (notmuch, NOTMUCH_CONFIG_MAIL_ROOT); @@ -550,8 +550,6 @@ notmuch_insert_command (notmuch_database_t *notmuch, int argc, char *argv[]) return EXIT_FAILURE; } - notmuch_exit_if_unmatched_db_uuid (notmuch); - status = notmuch_process_shared_indexing_options (notmuch); if (status != NOTMUCH_STATUS_SUCCESS) { fprintf (stderr, "Error: Failed to process index options. (%s)\n", diff --git a/notmuch-new.c b/notmuch-new.c index 1ee498fa..b7a5f2ea 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -1142,7 +1142,7 @@ notmuch_new_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); /* quiet trumps verbose */ if (quiet) @@ -1197,8 +1197,6 @@ notmuch_new_command (notmuch_database_t *notmuch, int argc, char *argv[]) return EXIT_FAILURE; } - notmuch_exit_if_unmatched_db_uuid (notmuch); - if (notmuch_database_get_revision (notmuch, NULL) == 0) { int count = 0; count_files (mail_root, &count, &add_files_state); diff --git a/notmuch-reindex.c b/notmuch-reindex.c index a7380a4b..b40edbb6 100644 --- a/notmuch-reindex.c +++ b/notmuch-reindex.c @@ -108,9 +108,7 @@ notmuch_reindex_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); - - notmuch_exit_if_unmatched_db_uuid (notmuch); + notmuch_process_shared_options (notmuch, argv[0]); status = notmuch_process_shared_indexing_options (notmuch); if (status != NOTMUCH_STATUS_SUCCESS) { diff --git a/notmuch-reply.c b/notmuch-reply.c index 08140799..5d5f95a3 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -743,7 +743,7 @@ notmuch_reply_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); notmuch_exit_if_unsupported_format (); @@ -758,8 +758,6 @@ notmuch_reply_command (notmuch_database_t *notmuch, int argc, char *argv[]) return EXIT_FAILURE; } - notmuch_exit_if_unmatched_db_uuid (notmuch); - query = notmuch_query_create (notmuch, query_string); if (query == NULL) { fprintf (stderr, "Out of memory\n"); diff --git a/notmuch-restore.c b/notmuch-restore.c index 1a81212f..1cce004a 100644 --- a/notmuch-restore.c +++ b/notmuch-restore.c @@ -272,8 +272,7 @@ notmuch_restore_command (notmuch_database_t *notmuch, int argc, char *argv[]) goto DONE; } - notmuch_process_shared_options (argv[0]); - notmuch_exit_if_unmatched_db_uuid (notmuch); + notmuch_process_shared_options (notmuch, argv[0]); if (include == 0) { include = DUMP_INCLUDE_CONFIG | DUMP_INCLUDE_PROPERTIES | DUMP_INCLUDE_TAGS; diff --git a/notmuch-search.c b/notmuch-search.c index 244817a9..375a247d 100644 --- a/notmuch-search.c +++ b/notmuch-search.c @@ -709,8 +709,6 @@ _notmuch_search_prepare (search_context_t *ctx, int argc, char *argv[]) notmuch_exit_if_unsupported_format (); - notmuch_exit_if_unmatched_db_uuid (ctx->notmuch); - query_str = query_string_from_args (ctx->notmuch, argc, argv); if (query_str == NULL) { fprintf (stderr, "Out of memory.\n"); @@ -827,7 +825,7 @@ notmuch_search_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); if (ctx->output != OUTPUT_FILES && ctx->output != OUTPUT_MESSAGES && ctx->dupe != -1) { @@ -893,7 +891,7 @@ notmuch_address_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); if (! (ctx->output & (OUTPUT_SENDER | OUTPUT_RECIPIENTS))) ctx->output |= OUTPUT_SENDER; diff --git a/notmuch-setup.c b/notmuch-setup.c index 28f4b7de..9382e279 100644 --- a/notmuch-setup.c +++ b/notmuch-setup.c @@ -147,10 +147,6 @@ notmuch_setup_command (notmuch_database_t *notmuch, if (notmuch_minimal_options ("setup", argc, argv) < 0) return EXIT_FAILURE; - if (notmuch_requested_db_uuid) - fprintf (stderr, "Warning: ignoring --uuid=%s\n", - notmuch_requested_db_uuid); - config = notmuch_conffile_open (notmuch, notmuch_config_path (notmuch), true); if (! config) diff --git a/notmuch-show.c b/notmuch-show.c index c8f1a40f..667fbee8 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -1287,7 +1287,7 @@ notmuch_show_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); /* explicit decryption implies verification */ if (params.crypto.decrypt == NOTMUCH_DECRYPT_NOSTASH || @@ -1353,8 +1353,6 @@ notmuch_show_command (notmuch_database_t *notmuch, int argc, char *argv[]) } } - notmuch_exit_if_unmatched_db_uuid (notmuch); - query_string = query_string_from_args (notmuch, argc - opt_index, argv + opt_index); if (query_string == NULL) { fprintf (stderr, "Out of memory\n"); diff --git a/notmuch-tag.c b/notmuch-tag.c index de428c8e..aa886032 100644 --- a/notmuch-tag.c +++ b/notmuch-tag.c @@ -220,7 +220,7 @@ notmuch_tag_command (notmuch_database_t *notmuch, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - notmuch_process_shared_options (argv[0]); + notmuch_process_shared_options (notmuch, argv[0]); if (input_file_name) { batch = true; @@ -261,8 +261,6 @@ notmuch_tag_command (notmuch_database_t *notmuch, int argc, char *argv[]) } } - notmuch_exit_if_unmatched_db_uuid (notmuch); - if (print_status_database ( "notmuch restore", notmuch, diff --git a/notmuch.c b/notmuch.c index 1404b70c..3824bf19 100644 --- a/notmuch.c +++ b/notmuch.c @@ -49,8 +49,11 @@ notmuch_command (notmuch_database_t *notmuch, int argc, char *argv[]); static int _help_for (const char *topic); +static void +notmuch_exit_if_unmatched_db_uuid (notmuch_database_t *notmuch); + static bool print_version = false, print_help = false; -const char *notmuch_requested_db_uuid = NULL; +static const char *notmuch_requested_db_uuid = NULL; const notmuch_opt_desc_t notmuch_shared_options [] = { { .opt_bool = &print_version, .name = "version" }, @@ -61,10 +64,11 @@ const notmuch_opt_desc_t notmuch_shared_options [] = { /* any subcommand wanting to support these options should call * inherit notmuch_shared_options and call - * notmuch_process_shared_options (subcommand_name); + * notmuch_process_shared_options (notmuch, subcommand_name); + * with notmuch = an open database, or NULL. */ void -notmuch_process_shared_options (const char *subcommand_name) +notmuch_process_shared_options (notmuch_database_t *notmuch, const char *subcommand_name) { if (print_version) { printf ("notmuch " STRINGIFY (NOTMUCH_VERSION) "\n"); @@ -75,6 +79,14 @@ notmuch_process_shared_options (const char *subcommand_name) int ret = _help_for (subcommand_name); exit (ret); } + + if (notmuch) { + notmuch_exit_if_unmatched_db_uuid (notmuch); + } else { + if (notmuch_requested_db_uuid) + fprintf (stderr, "Warning: ignoring --uuid=%s\n", + notmuch_requested_db_uuid); + } } /* This is suitable for subcommands that do not actually open the @@ -97,7 +109,7 @@ notmuch_minimal_options (const char *subcommand_name, return -1; /* We can't use argv here as it is sometimes NULL */ - notmuch_process_shared_options (subcommand_name); + notmuch_process_shared_options (NULL, subcommand_name); return opt_index; } @@ -280,7 +292,7 @@ be supported in the future.\n", notmuch_format_version); } } -void +static void notmuch_exit_if_unmatched_db_uuid (notmuch_database_t *notmuch) { const char *uuid = NULL; @@ -480,7 +492,7 @@ main (int argc, char *argv[]) if (opt_index < argc) command_name = argv[opt_index]; - notmuch_process_shared_options (command_name); + notmuch_process_shared_options (NULL, command_name); command = find_command (command_name); /* if command->function is NULL, try external command */ diff --git a/test/random-corpus.c b/test/random-corpus.c index 7cde22c5..8ae08971 100644 --- a/test/random-corpus.c +++ b/test/random-corpus.c @@ -122,7 +122,8 @@ const notmuch_opt_desc_t notmuch_shared_options[] = { const char *notmuch_requested_db_uuid = NULL; void -notmuch_process_shared_options (unused (const char *dummy)) +notmuch_process_shared_options (unused (notmuch_database_t *notmuch), + unused (const char *dummy)) { } -- 2.32.0