Re: [PATCH v1 4/4] miscellaneous: avoid "too many arguments"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 6, 2024, 16:50 UTC
- Message-ID
- <xmqqa5hpvbno.fsf@gitster.g>
- In-Reply-To
- <CAPig+cQ563EVtWEYxZDaQ4awrOcemc4a9a6OSmGN2wVFeMidwA@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 21 quoted lines
> On Mon, Aug 5, 2024 at 8:36 PM Junio C Hamano <gitster@pobox.com> wrote:
>> 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 <gitster@pobox.com>
>> ---
>> 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.
Show 8 quoted lines
>
>> 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.