Skip to content

Commit

Permalink
cat-file: make the options mutually exclusive
Browse files Browse the repository at this point in the history
We only parse the options if 2 or 3 arguments are specified.
Update 'struct option options[]' to use OPT_CMDMODE rather than
OPT_SET_INT to allow only one mutually exclusive option and avoid the
need for checking number of arguments. This was written by Junio C Hamano,
tested by me.

Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
KarthikNayak authored and gitster committed May 6, 2015
1 parent 46f0344 commit b48158a
Showing 1 changed file with 5 additions and 8 deletions.
13 changes: 5 additions & 8 deletions builtin/cat-file.c
Expand Up @@ -362,12 +362,12 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)

const struct option options[] = {
OPT_GROUP(N_("<type> can be one of: blob, tree, commit, tag")),
OPT_SET_INT('t', NULL, &opt, N_("show object type"), 't'),
OPT_SET_INT('s', NULL, &opt, N_("show object size"), 's'),
OPT_SET_INT('e', NULL, &opt,
OPT_CMDMODE('t', NULL, &opt, N_("show object type"), 't'),
OPT_CMDMODE('s', NULL, &opt, N_("show object size"), 's'),
OPT_CMDMODE('e', NULL, &opt,
N_("exit with zero when there's no error"), 'e'),
OPT_SET_INT('p', NULL, &opt, N_("pretty-print object's content"), 'p'),
OPT_SET_INT(0, "textconv", &opt,
OPT_CMDMODE('p', NULL, &opt, N_("pretty-print object's content"), 'p'),
OPT_CMDMODE(0, "textconv", &opt,
N_("for blob objects, run textconv on object's content"), 'c'),
{ OPTION_CALLBACK, 0, "batch", &batch, "format",
N_("show info and content of objects fed from the standard input"),
Expand All @@ -380,9 +380,6 @@ int cmd_cat_file(int argc, const char **argv, const char *prefix)

git_config(git_cat_file_config, NULL);

if (argc != 3 && argc != 2)
usage_with_options(cat_file_usage, options);

argc = parse_options(argc, argv, prefix, options, cat_file_usage, 0);

if (opt) {
Expand Down

0 comments on commit b48158a

Please sign in to comment.