Thread (1 message) 1 message, 1 author, 2024-08-06

Re: [PATCH v1 4/4] miscellaneous: avoid "too many arguments"

From: Junio C Hamano <hidden>
Date: 2024-08-06 16:50:09

Eric Sunshine [off-list ref] writes:
On Mon, Aug 5, 2024 at 8:36 PM Junio C Hamano [off-list ref] wrote:
quoted
Imagine seeing your command failing with "too many arguments" when
you run "git cmd foo bar baz".  Can you tell it will work if you
said "git cmd foo bar"?  Or is that trimming your command line too
much?  Too little?

Instead, if the command reports "unknown argument: 'bar'", you'd know
that "bar" and everything after it is unwanted.

Let's make it so for a few remaining commands.

Signed-off-by: Junio C Hamano <redacted>
---
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
@@ -2503,7 +2503,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
        if (argc > 1)
-               usage_msg_opt(_("too many arguments"), receive_pack_usage, options);
+               usage_msg_optf(_("unknown argument: '%s'"),
+                              receive_pack_usage, options, argv[0]);
Is this supposed to be referencing `argv[1]` rather than `argv[0]`...
You are right.  To the command, the first argument is acceptable,
and the unexpected ones are the second and later ones, so argv[1] is
what it should have said.
quoted
diff --git a/builtin/tag.c b/builtin/tag.c
@@ -641,7 +641,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
        if (argc > 2)
-               die(_("too many arguments"));
+               die(_("unknown argument: '%s'"), argv[2]);
...similar to how this references `argv[2]` when the condition is `argc > 2`?
Yes.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help