mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
CLI: make variable n_requested_db_uuid file scope.
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.
This commit is contained in:
parent
005c620118
commit
d447b694b4
16 changed files with 33 additions and 54 deletions
|
@ -485,11 +485,9 @@ print_status_gzbytes (const char *loc,
|
||||||
|
|
||||||
#include "command-line-arguments.h"
|
#include "command-line-arguments.h"
|
||||||
|
|
||||||
extern const char *notmuch_requested_db_uuid;
|
|
||||||
extern const notmuch_opt_desc_t notmuch_shared_options [];
|
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 notmuch_minimal_options (const char *subcommand_name,
|
||||||
int argc, char **argv);
|
int argc, char **argv);
|
||||||
|
|
||||||
|
|
|
@ -45,12 +45,7 @@ notmuch_compact_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
if (notmuch_requested_db_uuid) {
|
notmuch_process_shared_options (NULL, argv[0]);
|
||||||
fprintf (stderr, "Error: --uuid not implemented for compact\n");
|
|
||||||
return EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
|
||||||
|
|
||||||
if (! quiet)
|
if (! quiet)
|
||||||
printf ("Compacting database...\n");
|
printf ("Compacting database...\n");
|
||||||
|
|
|
@ -708,10 +708,6 @@ notmuch_config_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
if (notmuch_requested_db_uuid)
|
|
||||||
fprintf (stderr, "Warning: ignoring --uuid=%s\n",
|
|
||||||
notmuch_requested_db_uuid);
|
|
||||||
|
|
||||||
/* skip at least subcommand argument */
|
/* skip at least subcommand argument */
|
||||||
argc -= opt_index;
|
argc -= opt_index;
|
||||||
argv += opt_index;
|
argv += opt_index;
|
||||||
|
|
|
@ -182,7 +182,7 @@ notmuch_count_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
if (input_file_name) {
|
if (input_file_name) {
|
||||||
batch = true;
|
batch = true;
|
||||||
|
@ -201,8 +201,6 @@ notmuch_count_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
query_str = query_string_from_args (notmuch, argc - opt_index, argv + opt_index);
|
query_str = query_string_from_args (notmuch, argc - opt_index, argv + opt_index);
|
||||||
if (query_str == NULL) {
|
if (query_str == NULL) {
|
||||||
fprintf (stderr, "Out of memory.\n");
|
fprintf (stderr, "Out of memory.\n");
|
||||||
|
|
|
@ -366,8 +366,6 @@ notmuch_dump_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
const char *query_str = NULL;
|
const char *query_str = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
const char *output_file_name = NULL;
|
const char *output_file_name = NULL;
|
||||||
int opt_index;
|
int opt_index;
|
||||||
|
|
||||||
|
@ -394,7 +392,7 @@ notmuch_dump_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
if (include == 0)
|
if (include == 0)
|
||||||
include = DUMP_INCLUDE_CONFIG | DUMP_INCLUDE_TAGS | DUMP_INCLUDE_PROPERTIES;
|
include = DUMP_INCLUDE_CONFIG | DUMP_INCLUDE_TAGS | DUMP_INCLUDE_PROPERTIES;
|
||||||
|
|
|
@ -478,7 +478,7 @@ notmuch_insert_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
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);
|
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;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
status = notmuch_process_shared_indexing_options (notmuch);
|
status = notmuch_process_shared_indexing_options (notmuch);
|
||||||
if (status != NOTMUCH_STATUS_SUCCESS) {
|
if (status != NOTMUCH_STATUS_SUCCESS) {
|
||||||
fprintf (stderr, "Error: Failed to process index options. (%s)\n",
|
fprintf (stderr, "Error: Failed to process index options. (%s)\n",
|
||||||
|
|
|
@ -1142,7 +1142,7 @@ notmuch_new_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
/* quiet trumps verbose */
|
/* quiet trumps verbose */
|
||||||
if (quiet)
|
if (quiet)
|
||||||
|
@ -1197,8 +1197,6 @@ notmuch_new_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
if (notmuch_database_get_revision (notmuch, NULL) == 0) {
|
if (notmuch_database_get_revision (notmuch, NULL) == 0) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
count_files (mail_root, &count, &add_files_state);
|
count_files (mail_root, &count, &add_files_state);
|
||||||
|
|
|
@ -108,9 +108,7 @@ notmuch_reindex_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
status = notmuch_process_shared_indexing_options (notmuch);
|
status = notmuch_process_shared_indexing_options (notmuch);
|
||||||
if (status != NOTMUCH_STATUS_SUCCESS) {
|
if (status != NOTMUCH_STATUS_SUCCESS) {
|
||||||
|
|
|
@ -746,7 +746,7 @@ notmuch_reply_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
notmuch_exit_if_unsupported_format ();
|
notmuch_exit_if_unsupported_format ();
|
||||||
|
|
||||||
|
@ -761,8 +761,6 @@ notmuch_reply_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
query = notmuch_query_create (notmuch, query_string);
|
query = notmuch_query_create (notmuch, query_string);
|
||||||
if (query == NULL) {
|
if (query == NULL) {
|
||||||
fprintf (stderr, "Out of memory\n");
|
fprintf (stderr, "Out of memory\n");
|
||||||
|
|
|
@ -272,8 +272,7 @@ notmuch_restore_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
goto DONE;
|
goto DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
notmuch_exit_if_unmatched_db_uuid (notmuch);
|
|
||||||
|
|
||||||
if (include == 0) {
|
if (include == 0) {
|
||||||
include = DUMP_INCLUDE_CONFIG | DUMP_INCLUDE_PROPERTIES | DUMP_INCLUDE_TAGS;
|
include = DUMP_INCLUDE_CONFIG | DUMP_INCLUDE_PROPERTIES | DUMP_INCLUDE_TAGS;
|
||||||
|
|
|
@ -709,8 +709,6 @@ _notmuch_search_prepare (search_context_t *ctx, int argc, char *argv[])
|
||||||
|
|
||||||
notmuch_exit_if_unsupported_format ();
|
notmuch_exit_if_unsupported_format ();
|
||||||
|
|
||||||
notmuch_exit_if_unmatched_db_uuid (ctx->notmuch);
|
|
||||||
|
|
||||||
query_str = query_string_from_args (ctx->notmuch, argc, argv);
|
query_str = query_string_from_args (ctx->notmuch, argc, argv);
|
||||||
if (query_str == NULL) {
|
if (query_str == NULL) {
|
||||||
fprintf (stderr, "Out of memory.\n");
|
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)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
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 &&
|
if (ctx->output != OUTPUT_FILES && ctx->output != OUTPUT_MESSAGES &&
|
||||||
ctx->dupe != -1) {
|
ctx->dupe != -1) {
|
||||||
|
@ -893,7 +891,7 @@ notmuch_address_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
if (! (ctx->output & (OUTPUT_SENDER | OUTPUT_RECIPIENTS)))
|
if (! (ctx->output & (OUTPUT_SENDER | OUTPUT_RECIPIENTS)))
|
||||||
ctx->output |= OUTPUT_SENDER;
|
ctx->output |= OUTPUT_SENDER;
|
||||||
|
|
|
@ -147,10 +147,6 @@ notmuch_setup_command (notmuch_database_t *notmuch,
|
||||||
if (notmuch_minimal_options ("setup", argc, argv) < 0)
|
if (notmuch_minimal_options ("setup", argc, argv) < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
if (notmuch_requested_db_uuid)
|
|
||||||
fprintf (stderr, "Warning: ignoring --uuid=%s\n",
|
|
||||||
notmuch_requested_db_uuid);
|
|
||||||
|
|
||||||
config = notmuch_conffile_open (notmuch,
|
config = notmuch_conffile_open (notmuch,
|
||||||
notmuch_config_path (notmuch), true);
|
notmuch_config_path (notmuch), true);
|
||||||
if (! config)
|
if (! config)
|
||||||
|
|
|
@ -1287,7 +1287,7 @@ notmuch_show_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
/* explicit decryption implies verification */
|
/* explicit decryption implies verification */
|
||||||
if (params.crypto.decrypt == NOTMUCH_DECRYPT_NOSTASH ||
|
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);
|
query_string = query_string_from_args (notmuch, argc - opt_index, argv + opt_index);
|
||||||
if (query_string == NULL) {
|
if (query_string == NULL) {
|
||||||
fprintf (stderr, "Out of memory\n");
|
fprintf (stderr, "Out of memory\n");
|
||||||
|
|
|
@ -220,7 +220,7 @@ notmuch_tag_command (notmuch_database_t *notmuch, int argc, char *argv[])
|
||||||
if (opt_index < 0)
|
if (opt_index < 0)
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
notmuch_process_shared_options (argv[0]);
|
notmuch_process_shared_options (notmuch, argv[0]);
|
||||||
|
|
||||||
if (input_file_name) {
|
if (input_file_name) {
|
||||||
batch = true;
|
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 (
|
if (print_status_database (
|
||||||
"notmuch restore",
|
"notmuch restore",
|
||||||
notmuch,
|
notmuch,
|
||||||
|
|
24
notmuch.c
24
notmuch.c
|
@ -49,8 +49,11 @@ notmuch_command (notmuch_database_t *notmuch, int argc, char *argv[]);
|
||||||
static int
|
static int
|
||||||
_help_for (const char *topic);
|
_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;
|
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 [] = {
|
const notmuch_opt_desc_t notmuch_shared_options [] = {
|
||||||
{ .opt_bool = &print_version, .name = "version" },
|
{ .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
|
/* any subcommand wanting to support these options should call
|
||||||
* inherit notmuch_shared_options and 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
|
void
|
||||||
notmuch_process_shared_options (const char *subcommand_name)
|
notmuch_process_shared_options (notmuch_database_t *notmuch, const char *subcommand_name)
|
||||||
{
|
{
|
||||||
if (print_version) {
|
if (print_version) {
|
||||||
printf ("notmuch " STRINGIFY (NOTMUCH_VERSION) "\n");
|
printf ("notmuch " STRINGIFY (NOTMUCH_VERSION) "\n");
|
||||||
|
@ -75,6 +79,14 @@ notmuch_process_shared_options (const char *subcommand_name)
|
||||||
int ret = _help_for (subcommand_name);
|
int ret = _help_for (subcommand_name);
|
||||||
exit (ret);
|
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
|
/* This is suitable for subcommands that do not actually open the
|
||||||
|
@ -97,7 +109,7 @@ notmuch_minimal_options (const char *subcommand_name,
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* We can't use argv here as it is sometimes NULL */
|
/* 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;
|
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)
|
notmuch_exit_if_unmatched_db_uuid (notmuch_database_t *notmuch)
|
||||||
{
|
{
|
||||||
const char *uuid = NULL;
|
const char *uuid = NULL;
|
||||||
|
@ -480,7 +492,7 @@ main (int argc, char *argv[])
|
||||||
if (opt_index < argc)
|
if (opt_index < argc)
|
||||||
command_name = argv[opt_index];
|
command_name = argv[opt_index];
|
||||||
|
|
||||||
notmuch_process_shared_options (command_name);
|
notmuch_process_shared_options (NULL, command_name);
|
||||||
|
|
||||||
command = find_command (command_name);
|
command = find_command (command_name);
|
||||||
/* if command->function is NULL, try external command */
|
/* if command->function is NULL, try external command */
|
||||||
|
|
|
@ -122,7 +122,8 @@ const notmuch_opt_desc_t notmuch_shared_options[] = {
|
||||||
const char *notmuch_requested_db_uuid = NULL;
|
const char *notmuch_requested_db_uuid = NULL;
|
||||||
|
|
||||||
void
|
void
|
||||||
notmuch_process_shared_options (unused (const char *dummy))
|
notmuch_process_shared_options (unused (notmuch_database_t *notmuch),
|
||||||
|
unused (const char *dummy))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue