git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v9 2/5] cat-file: make the options mutually exclusive

From
Karthik Nayak <karthik.188@gmail.com>
Date
Apr 29, 2015, 12:52 UTC
Message-ID
<1430311953-23240-1-git-send-email-karthik.188@gmail.com>
In-Reply-To
<5540D397.8020104@gmail.com>

Currently 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>
---
 builtin/cat-file.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index df99df4..53b5376 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -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"),
@@ -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) {
-- 
2.4.0.rc1.250.g565e85b
Previous: karthik nayakNext: Karthik Nayak
Message 7 of 17 in “cat-file: teach cat-file a '--allow-unkown-type' option”
  1. 0/5 cat-file: teach cat-file a '--allow-unkown-type' optionkarthik nayak, Apr 29, 2015
  2. 1/5 sha1_file: support reading from a loose object of unknown typeKarthik Nayak, Apr 29, 2015
  3. Junio C HamanoApr 29, 2015
  4. karthik nayakApr 29, 2015
  5. Junio C HamanoApr 29, 2015
  6. karthik nayakApr 30, 2015
  7. 2/5 cat-file: make the options mutually exclusiveKarthik Nayak, Apr 29, 2015
  8. 3/5 cat-file: teach cat-file a '--allow-unknown-type' optionKarthik Nayak, Apr 29, 2015
  9. Junio C HamanoApr 29, 2015
  10. karthik nayakApr 29, 2015
  11. Phil HordApr 29, 2015
  12. karthik nayakApr 29, 2015
  13. Junio C HamanoApr 29, 2015
  14. 5/5 t1006: add tests for git cat-file --allow-unkown-typeKarthik Nayak, Apr 29, 2015
  15. Eric SunshineApr 29, 2015
  16. 4/5 cat-file: add documentation for '--allow-unkown-type' option.Karthik Nayak, Apr 29, 2015
  17. Eric SunshineApr 29, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.