diff options
author | Jeff King <peff@peff.net> | 2017-05-30 01:17:42 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-06-05 11:43:33 +0900 |
commit | b48cbfc5e6112952bc3be4dea0208bc5e1f331eb (patch) | |
tree | 7db0b1d288cf804cd2b67eca487c2bb94e1f8104 /help.c | |
parent | 5a88f97cff0f269f8b2069b17c9da05ee66c98bb (diff) | |
download | git-b48cbfc5e6112952bc3be4dea0208bc5e1f331eb.tar.gz |
version: convert to parse-options
The "git version" command didn't traditionally accept any
options, and in fact ignores any you give it. When we added
simple option parsing for "--build-options" in 6b9c38e14, we
didn't improve this; we just loop over the arguments and
pick out the one we recognize.
Instead, let's move to a real parsing loop, complain about
nonsense options, and recognize conventions like "-h".
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'help.c')
-rw-r--r-- | help.c | 25 |
1 files changed, 20 insertions, 5 deletions
@@ -8,6 +8,7 @@ #include "column.h" #include "version.h" #include "refs.h" +#include "parse-options.h" void add_cmdname(struct cmdnames *cmds, const char *name, int len) { @@ -424,16 +425,30 @@ const char *help_unknown_cmd(const char *cmd) int cmd_version(int argc, const char **argv, const char *prefix) { + int build_options = 0; + const char * const usage[] = { + N_("git version [<options>]"), + NULL + }; + struct option options[] = { + OPT_BOOL(0, "build-options", &build_options, + "also print build options"), + OPT_END() + }; + + argc = parse_options(argc, argv, prefix, options, usage, 0); + /* * The format of this string should be kept stable for compatibility * with external projects that rely on the output of "git version". + * + * Always show the version, even if other options are given. */ printf("git version %s\n", git_version_string); - while (*++argv) { - if (!strcmp(*argv, "--build-options")) { - printf("sizeof-long: %d\n", (int)sizeof(long)); - /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ - } + + if (build_options) { + printf("sizeof-long: %d\n", (int)sizeof(long)); + /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ } return 0; } |