diff --git a/notmuch-config.c b/notmuch-config.c index 485fa72a..1a7ed580 100644 --- a/notmuch-config.c +++ b/notmuch-config.c @@ -735,6 +735,8 @@ notmuch_config_command_set (void *ctx, char *item, int argc, char *argv[]) int notmuch_config_command (void *ctx, int argc, char *argv[]) { + argc--; argv++; /* skip subcommand argument */ + if (argc < 2) { fprintf (stderr, "Error: notmuch config requires at least two arguments.\n"); return 1; diff --git a/notmuch-count.c b/notmuch-count.c index 39f08c6c..0d700a9e 100644 --- a/notmuch-count.c +++ b/notmuch-count.c @@ -35,6 +35,8 @@ notmuch_count_command (void *ctx, int argc, char *argv[]) notmuch_sort_t sort = NOTMUCH_SORT_NEWEST_FIRST; #endif + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (strcmp (argv[i], "--") == 0) { i++; diff --git a/notmuch-dump.c b/notmuch-dump.c index 409c86ad..126593d1 100644 --- a/notmuch-dump.c +++ b/notmuch-dump.c @@ -41,6 +41,8 @@ notmuch_dump_command (unused (void *ctx), int argc, char *argv[]) if (notmuch == NULL) return 1; + argc--; argv++; /* skip subcommand argument */ + if (argc && strcmp (argv[0], "--") != 0) { fprintf (stderr, "Warning: the output file argument of dump is deprecated.\n"); output = fopen (argv[0], "w"); diff --git a/notmuch-new.c b/notmuch-new.c index 96a1e31e..81a93500 100644 --- a/notmuch-new.c +++ b/notmuch-new.c @@ -815,6 +815,8 @@ notmuch_new_command (void *ctx, int argc, char *argv[]) add_files_state.verbose = 0; add_files_state.output_is_a_tty = isatty (fileno (stdout)); + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (STRNCMP_LITERAL (argv[i], "--verbose") == 0) { add_files_state.verbose = 1; diff --git a/notmuch-reply.c b/notmuch-reply.c index 8f23cea2..7ac879f9 100644 --- a/notmuch-reply.c +++ b/notmuch-reply.c @@ -628,6 +628,8 @@ notmuch_reply_command (void *ctx, int argc, char *argv[]) params.part = -1; params.cryptoctx = NULL; + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (strcmp (argv[i], "--") == 0) { i++; diff --git a/notmuch-restore.c b/notmuch-restore.c index e4a5355b..f530bb4e 100644 --- a/notmuch-restore.c +++ b/notmuch-restore.c @@ -44,6 +44,8 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[]) synchronize_flags = notmuch_config_get_maildir_synchronize_flags (config); + argc--; argv++; /* skip subcommand argument */ + if (argc) { input = fopen (argv[0], "r"); if (input == NULL) { diff --git a/notmuch-search.c b/notmuch-search.c index faccaf7d..6f04d9a4 100644 --- a/notmuch-search.c +++ b/notmuch-search.c @@ -395,6 +395,8 @@ notmuch_search_command (void *ctx, int argc, char *argv[]) int i, ret; output_t output = OUTPUT_SUMMARY; + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (strcmp (argv[i], "--") == 0) { i++; diff --git a/notmuch-show.c b/notmuch-show.c index 912999e1..603992a6 100644 --- a/notmuch-show.c +++ b/notmuch-show.c @@ -936,6 +936,8 @@ notmuch_show_command (void *ctx, unused (int argc), unused (char *argv[])) params.cryptoctx = NULL; params.decrypt = 0; + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc && argv[i][0] == '-'; i++) { if (strcmp (argv[i], "--") == 0) { i++; diff --git a/notmuch-tag.c b/notmuch-tag.c index 6204ae3c..dded39ea 100644 --- a/notmuch-tag.c +++ b/notmuch-tag.c @@ -65,6 +65,8 @@ notmuch_tag_command (void *ctx, unused (int argc), unused (char *argv[])) return 1; } + argc--; argv++; /* skip subcommand argument */ + for (i = 0; i < argc; i++) { if (strcmp (argv[i], "--") == 0) { i++; diff --git a/notmuch.c b/notmuch.c index 640ad8da..4232bee7 100644 --- a/notmuch.c +++ b/notmuch.c @@ -465,6 +465,8 @@ notmuch_help_command (unused (void *ctx), int argc, char *argv[]) command_t *command; unsigned int i; + argc--; argv++; /* Ignore "help" */ + if (argc == 0) { printf ("The notmuch mail system.\n\n"); usage (stdout); @@ -639,7 +641,7 @@ main (int argc, char *argv[]) command = &commands[i]; if (strcmp (argv[1], command->name) == 0) - return (command->function) (local, argc - 2, &argv[2]); + return (command->function) (local, argc - 1, &argv[1]); } fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",