diff options
| author | David Bremner <david@tethera.net> | 2017-07-01 12:18:45 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2017-07-12 17:46:29 -0300 |
| commit | a32dd81a55a5d745dbf840b42d03e835a4e1e45c (patch) | |
| tree | 09a70a8b3d9675e1129f5f8828a5b809b7353e1a /command-line-arguments.c | |
| parent | de9baa29dc990e4166b47dc2b0d0cf560014834b (diff) | |
cli: add space separator for keyword, string, and int arguments
Defer the complication of optional boolean arguments for later (never?).
Diffstat (limited to 'command-line-arguments.c')
| -rw-r--r-- | command-line-arguments.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/command-line-arguments.c b/command-line-arguments.c index a489612f..dc517b06 100644 --- a/command-line-arguments.c +++ b/command-line-arguments.c @@ -133,6 +133,11 @@ parse_option (int argc, char **argv, const notmuch_opt_desc_t *options, int opt_ const char *arg = _arg + 2; /* _arg starts with -- */ const notmuch_opt_desc_t *try; + + const char *next_arg = NULL; + if (opt_index < argc - 1 && strncmp (argv[opt_index + 1], "--", 2) != 0) + next_arg = argv[opt_index + 1]; + for (try = options; try->opt_type != NOTMUCH_OPT_END; try++) { if (try->opt_type == NOTMUCH_OPT_INHERIT) { int new_index = parse_option (argc, argv, try->output_var, opt_index); @@ -158,6 +163,12 @@ parse_option (int argc, char **argv, const notmuch_opt_desc_t *options, int opt_ if (next != '=' && next != ':' && next != '\0') continue; + if (next == '\0' && next_arg != NULL && try->opt_type != NOTMUCH_OPT_BOOLEAN) { + next = ' '; + value = next_arg; + opt_index ++; + } + if (try->output_var == NULL) INTERNAL_ERROR ("output pointer NULL for option %s", try->name); |
