cli: add .present field to opt desc to check if the arg was present

Add pointer to boolean .present field to opt desc, which (if non-NULL)
will be set to TRUE if the argument in question is present on the
command line. Unchanged otherwise.
This commit is contained in:
Jani Nikula 2017-10-01 23:53:14 +03:00 committed by David Bremner
parent 25960b5ecd
commit bc99087ff9
2 changed files with 11 additions and 3 deletions

View file

@ -128,6 +128,8 @@ parse_position_arg (const char *arg_str, int pos_arg_index,
if (arg_desc->opt_position) { if (arg_desc->opt_position) {
if (pos_arg_counter == pos_arg_index) { if (pos_arg_counter == pos_arg_index) {
*arg_desc->opt_position = arg_str; *arg_desc->opt_position = arg_str;
if (arg_desc->present)
*arg_desc->present = TRUE;
return TRUE; return TRUE;
} }
pos_arg_counter++; pos_arg_counter++;
@ -202,10 +204,13 @@ parse_option (int argc, char **argv, const notmuch_opt_desc_t *options, int opt_
else else
INTERNAL_ERROR ("unknown or unhandled option \"%s\"", try->name); INTERNAL_ERROR ("unknown or unhandled option \"%s\"", try->name);
if (opt_status) if (! opt_status)
return opt_index+1;
else
return -1; return -1;
if (try->present)
*try->present = TRUE;
return opt_index+1;
} }
return -1; return -1;
} }

View file

@ -27,6 +27,9 @@ typedef struct notmuch_opt_desc {
/* Must be set except for opt_inherit and opt_position. */ /* Must be set except for opt_inherit and opt_position. */
const char *name; const char *name;
/* Optional, if non-NULL, set to TRUE if the option is present. */
notmuch_bool_t *present;
/* Must be set for opt_keyword and opt_flags. */ /* Must be set for opt_keyword and opt_flags. */
const struct notmuch_keyword *keywords; const struct notmuch_keyword *keywords;
} notmuch_opt_desc_t; } notmuch_opt_desc_t;