X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=command-line-arguments.c;fp=command-line-arguments.c;h=b0a0dab098bc7bec9c6d25901eb77ea71c549028;hp=76b185f85be6d04487f6a107be03d820bf6cd234;hb=779ce3e9300c8f656e798ee77459b4425dbf35a6;hpb=d796dad4edce71c1cfb245ffd2c438f26c84f804 diff --git a/command-line-arguments.c b/command-line-arguments.c index 76b185f8..b0a0dab0 100644 --- a/command-line-arguments.c +++ b/command-line-arguments.c @@ -11,10 +11,15 @@ */ static notmuch_bool_t -_process_keyword_arg (const notmuch_opt_desc_t *arg_desc, const char *arg_str) { +_process_keyword_arg (const notmuch_opt_desc_t *arg_desc, char next, const char *arg_str) { const notmuch_keyword_t *keywords = arg_desc->keywords; + if (next == 0) { + /* No keyword given */ + arg_str = ""; + } + while (keywords->name) { if (strcmp (arg_str, keywords->name) == 0) { if (arg_desc->output_var) { @@ -24,7 +29,10 @@ _process_keyword_arg (const notmuch_opt_desc_t *arg_desc, const char *arg_str) { } keywords++; } - fprintf (stderr, "unknown keyword: %s\n", arg_str); + if (next != 0) + fprintf (stderr, "unknown keyword: %s\n", arg_str); + else + fprintf (stderr, "option %s needs a keyword\n", arg_desc->name); return FALSE; } @@ -99,7 +107,8 @@ parse_option (const char *arg, */ if (next != '=' && next != ':' && next != 0) return FALSE; if (next == 0) { - if (try->opt_type != NOTMUCH_OPT_BOOLEAN) + if (try->opt_type != NOTMUCH_OPT_BOOLEAN && + try->opt_type != NOTMUCH_OPT_KEYWORD) return FALSE; } else { if (value[0] == 0) return FALSE; @@ -110,7 +119,7 @@ parse_option (const char *arg, switch (try->opt_type) { case NOTMUCH_OPT_KEYWORD: - return _process_keyword_arg (try, value); + return _process_keyword_arg (try, next, value); break; case NOTMUCH_OPT_BOOLEAN: return _process_boolean_arg (try, next, value);