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

[PATCH 5/7] mark "argv" as unused when we check argc

From
Jeff King <peff@peff.net>
Date
Mar 28, 2023, 20:57 UTC
Message-ID
<20230328205704.GE1754055@coredump.intra.peff.net>
In-Reply-To
<20230328205253.GA1753925@coredump.intra.peff.net>

A few commands don't take any options at all, and confirm this by checking argc. After that they have no need to look at argv, but we're still stuck with it by convention. Let's annotate these cases so that the compiler doesn't complain with -Wunused-parameter.

Note that in scalar and get-tar-commit-id, we're forced to keep argv by calling convention (the functions must match cmd_main() and builtin cmd_foo() conventions, respectively). In diff, these are subcommand modes that we call individually, so we _could_ just drop the argv parameters entirely. But it's weird to pass argc without argv, and it implies that the caller knows that the subcommands aren't interested in further arguments. It's less confusing to just keep them and silence the compiler warning.

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin/diff.c              | 6 +++---
 builtin/get-tar-commit-id.c | 2 +-
 scalar.c                    | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/builtin/diff.c b/builtin/diff.c
index 26f1e532c66..bc9da7bcb60 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -74,7 +74,7 @@ static void stuff_change(struct diff_options *opt,
 }
 
 static int builtin_diff_b_f(struct rev_info *revs,
-			    int argc, const char **argv,
+			    int argc, const char **argv UNUSED,
 			    struct object_array_entry **blob)
 {
 	/* Blob vs file in the working tree*/
@@ -109,7 +109,7 @@ static int builtin_diff_b_f(struct rev_info *revs,
 }
 
 static int builtin_diff_blobs(struct rev_info *revs,
-			      int argc, const char **argv,
+			      int argc, const char **argv UNUSED,
 			      struct object_array_entry **blob)
 {
 	const unsigned mode = canon_mode(S_IFREG | 0644);
@@ -209,7 +209,7 @@ static int builtin_diff_tree(struct rev_info *revs,
 }
 
 static int builtin_diff_combined(struct rev_info *revs,
-				 int argc, const char **argv,
+				 int argc, const char **argv UNUSED,
 				 struct object_array_entry *ent,
 				 int ents, int first_non_parent)
 {
diff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c
index 8f8f2ac3e68..4324d39fb49 100644
--- a/builtin/get-tar-commit-id.c
+++ b/builtin/get-tar-commit-id.c
@@ -14,7 +14,7 @@ static const char builtin_get_tar_commit_id_usage[] =
 #define RECORDSIZE	(512)
 #define HEADERSIZE (2 * RECORDSIZE)
 
-int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix)
+int cmd_get_tar_commit_id(int argc, const char **argv UNUSED, const char *prefix)
 {
 	char buffer[HEADERSIZE];
 	struct ustar_header *header = (struct ustar_header *)buffer;
diff --git a/scalar.c b/scalar.c
index ca19b95ce46..c7b8c16c8ee 100644
--- a/scalar.c
+++ b/scalar.c
@@ -563,7 +563,7 @@ static int cmd_diagnose(int argc, const char **argv)
 	return res;
 }
 
-static int cmd_list(int argc, const char **argv)
+static int cmd_list(int argc, const char **argv UNUSED)
 {
 	if (argc != 1)
 		die(_("`scalar list` does not take arguments"));
-- 
2.40.0.675.gb17cd5d94c8
Previous: Jeff KingNext: Jeff King
Message 6 of 10 in “unused argc/argv/prefix parameters”
  1. 0/7 unused argc/argv/prefix parametersJeff King, Mar 28, 2023
  2. 1/7 fast-import: fix file access when run from subdirJeff King, Mar 28, 2023
  3. 2/7 builtins: always pass prefix to parse_options()Jeff King, Mar 28, 2023
  4. 3/7 builtins: annotate always-empty prefix parametersJeff King, Mar 28, 2023
  5. 4/7 builtins: mark unused prefix parametersJeff King, Mar 28, 2023
  6. 5/7 mark "argv" as unused when we check argcJeff King, Mar 28, 2023
  7. 6/7 t/helper: mark unused argv/argc argumentsJeff King, Mar 28, 2023
  8. 7/7 parse-options: drop parse_opt_unknown_cb()Jeff King, Mar 28, 2023
  9. Derrick StoleeMar 29, 2023
  10. Junio C HamanoMar 29, 2023

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.