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

Re: [PATCH 4/8] gpg-interface: introduce an abstraction for multiple gpg formats

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 9, 2018, 15:47 UTC
Message-ID
<xmqqy3ekfm2r.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<CAPig+cQyXC2o4fUARL_kqPn5+6adBpr+WUfAWWgu2QLjDn1eoQ@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 32 quoted lines
> On Mon, Jul 9, 2018 at 4:22 AM Henning Schild
> <henning.schild@siemens.com> wrote:
>> Am Fri, 6 Jul 2018 10:24:58 -0700
>> schrieb Junio C Hamano <gitster@pobox.com>:
>> > Martin Ågren <martin.agren@gmail.com> writes:
>> > >> +struct gpg_format_data gpg_formats[] = {
>> > >> +       { .format = "PGP", .program = "gpg",
>> > >> +         .extra_args_verify = { "--keyid-format=long", },
>> > >> +         .sigs = { PGP_SIGNATURE, PGP_MESSAGE, },
>> > >> +       },
>> > >> +};
>> > >
>> > > I think those trailing commas are ok now, but I'm not sure...
>> >
>> > What we've been avoiding was the comma after the last element in the
>> > enum (in other words, if PGP_FMT had ',' after it in the above
>> > quoted addition, that would have been violation of that rule), as
>> > having such a trailing comma used to be ANSI C violation as well.
>>
>> I guess that means the style is acceptable and does not require
>> changes, please correct me if i am wrong.
>
> The trailing comma in the 'sigs' initializer is bothersome because
> 'sigs' is declared as a 2-element array, and this initializer already
> has two elements. Therefore, the comma is misleading to anyone reading
> the code, making it appears as if additional items can be added. For
> that reason, alone, it would be nice to see the unnecessary comma
> removed.
>
> Ditto with regard to the trailing comma in the 'extra_args_verify'
> initializer since 'extra_args_verify' is declared as a 1-element
> array.

I am not sure I agree with that reasoning. The primary benefit we gain from the convention to allow trailing comma in struct/array initializers like these is that we can add a new field with a patch like this:

	 struct {
	 	char *foo;
	 	char *bar;
	+	char *baz;
	 } xyzzy = {
	 	"foo",
	 	"bar",
	+	"baz",
	 };

without having to touch the initialization of the field that used to be at the end, i.e. .bar="bar", and just can add the new stuff at the end. But that is only possible as long as we allow the trailing comma after the last element. The same argument applies to an array initialization (i.e. when we need to allow more elements to the .extra_args_to_verify[] array).

All of the above is somewhat moot for the other reason I already stated in the thread, though. And that may be a good reason why we would want to lose these trailing commas from the last elements (i.e. if it does not prepare the current code to avoid having to touch the last line when we add a new element at the end, then trailing comma is a visual hiccup that does not serve any useful purpose).

Previous: Eric SunshineNext: Jeff King
Message 27 of 36 in “X509 (gpgsm) commit signing support”
  1. 0/8 X509 (gpgsm) commit signing supportHenning Schild, Jul 3, 2018
  2. 2/8 gpg-interface: make parse_gpg_output static and remove from interface headerHenning Schild, Jul 3, 2018
  3. 1/8 builtin/receive-pack: use check_signature from gpg-interfaceHenning Schild, Jul 3, 2018
  4. Junio C HamanoJul 6, 2018
  5. Junio C HamanoJul 6, 2018
  6. Henning SchildJul 9, 2018
  7. Junio C HamanoJul 9, 2018
  8. 5/8 t/t7510: check the validation of the new config gpg.formatHenning Schild, Jul 3, 2018
  9. Junio C HamanoJul 6, 2018
  10. Henning SchildJul 9, 2018
  11. 6/8 gpg-interface: do not hardcode the key string len anymoreHenning Schild, Jul 3, 2018
  12. Junio C HamanoJul 6, 2018
  13. 3/8 gpg-interface: add new config to select how to sign a commitHenning Schild, Jul 3, 2018
  14. brian m. carlsonJul 6, 2018
  15. Henning SchildJul 6, 2018
  16. Junio C HamanoJul 6, 2018
  17. 7/8 gpg-interface: introduce new signature format "X509" using gpgsmHenning Schild, Jul 3, 2018
  18. brian m. carlsonJul 6, 2018
  19. Henning SchildJul 6, 2018
  20. Junio C HamanoJul 6, 2018
  21. 4/8 gpg-interface: introduce an abstraction for multiple gpg formatsHenning Schild, Jul 3, 2018
  22. Martin ÅgrenJul 4, 2018
  23. Henning SchildJul 5, 2018
  24. Junio C HamanoJul 6, 2018
  25. Henning SchildJul 9, 2018
  26. Eric SunshineJul 9, 2018
  27. Junio C HamanoJul 9, 2018
  28. Jeff KingJul 10, 2018
  29. Junio C HamanoJul 10, 2018
  30. Junio C HamanoJul 10, 2018
  31. Jeff KingJul 10, 2018
  32. 8/8 gpg-interface t: extend the existing GPG tests with GPGSMHenning Schild, Jul 3, 2018
  33. brian m. carlsonJul 6, 2018
  34. Henning SchildJul 6, 2018
  35. brian m. carlsonJul 6, 2018
  36. Henning SchildJul 6, 2018

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.