Support both '--opt=val' and '--opt val' styles.
Project: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/commit/d379ebe4 Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/d379ebe4 Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/d379ebe4 Branch: refs/heads/master Commit: d379ebe4d91741e0aa5d7e923223d4f17b36f43d Parents: 66edcd9 Author: Nick Wellnhofer <[email protected]> Authored: Sun Feb 1 22:45:11 2015 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Sun Feb 1 22:45:11 2015 +0100 ---------------------------------------------------------------------- src/Charmonizer/Core/CLI.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/d379ebe4/src/Charmonizer/Core/CLI.c ---------------------------------------------------------------------- diff --git a/src/Charmonizer/Core/CLI.c b/src/Charmonizer/Core/CLI.c index d675a20..b913c66 100644 --- a/src/Charmonizer/Core/CLI.c +++ b/src/Charmonizer/Core/CLI.c @@ -345,6 +345,21 @@ chaz_CLI_parse(chaz_CLI *self, int argc, const char *argv[]) { memcpy(name, arg + 2, name_len); name[name_len] = '\0'; + if (value == NULL && i + 1 < argc) { + /* Support both '--opt=val' and '--opt val' styles. */ + chaz_CLIOption *opt = S_find_opt(self, name); + if (opt == NULL) { + S_chaz_CLI_error(self, "Attempt to set unknown option: '%s'", + name); + free(name); + return 0; + } + if (opt->flags != CHAZ_CLI_NO_ARG) { + i++; + value = argv[i]; + } + } + /* Attempt to set the option. */ if (!chaz_CLI_set(self, name, value)) { free(name);
