mbox series

[v2,0/5] CodingGUidelines: C99 updates

Message ID 20221010203800.2154698-1-gitster@pobox.com (mailing list archive)
Headers show
Series CodingGUidelines: C99 updates | expand

Message

Junio C Hamano Oct. 10, 2022, 8:37 p.m. UTC
As this is otherwise clearly good series, I got sick of waiting for
a trivial update, so here is what I did to update them myself.

Updates are in patches 3 and 4.  We promised to revisit the issue of
allowing "for (int i = 0; ..." in November this year, so we are
merely "proposing" to go ahead and allow it with this patch, and
will merge only after gaining consensus.  The wording has been
redone to avoid sounding like it is a fait accompli.

Patch 4 has been updated to avoid starting the latter clause with a
capitalized word in two independent clauses joined with a semicolon.


Ævar Arnfjörð Bjarmason (5):
  CodingGuidelines: update for C99
  CodingGuidelines: mention dynamic C99 initializer elements
  CodingGuidelines: allow declaring variables in for loops
  CodingGuidelines: mention C99 features we can't use
  CodingGuidelines: recommend against unportable C99 struct syntax

 Documentation/CodingGuidelines | 34 ++++++++++++++++++++++++----------
 revision.c                     |  7 -------
 2 files changed, 24 insertions(+), 17 deletions(-)

Range-diff against v1:
1:  3e3dd9cbd5 = 1:  3e3dd9cbd5 CodingGuidelines: update for C99
2:  fb6c58ef52 = 2:  fb6c58ef52 CodingGuidelines: mention dynamic C99 initializer elements
3:  719e235f9f ! 3:  f3237c88f8 CodingGuidelines: allow declaring variables in for loops
    @@ Commit message
         cb2607759e2 (merge-ort: store more specific conflict information,
         2022-06-18) released with v2.38.0.
     
    -    As November 2022 is within the window of this upcoming release let's
    -    update the guideline to allow this, and revert the recent
    -    6983f4e3b20 (test-parse-options.c: don't use for loop initial
    -    declaration, 2022-09-05).
    -
    -    It's better to update the guidelines than to have back & forth churn
    -    like that, we clearly don't have portability issues related to this
    -    syntax.
    +    As November 2022 is within the window of this upcoming release,
    +    let's update the guideline to allow this.  We can have the promised
    +    "revisit" discussion while this patch cooks, and drop it if it turns
    +    out that it is still premature, which is not expected to happen at
    +    this moment.
     
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
         Signed-off-by: Junio C Hamano <gitster@pobox.com>
    @@ revision.c: static inline int want_ancestry(const struct rev_info *revs);
      	for (const char *p = name; *p && *p != '\n'; p++)
      		fputc(*p, out);
      	fputc('\n', out);
    -
    - ## t/helper/test-parse-options.c ##
    -@@ t/helper/test-parse-options.c: int cmd__parse_options(int argc, const char **argv)
    - 
    - static void print_args(int argc, const char **argv)
    - {
    --	int i;
    --	for (i = 0; i < argc; i++)
    -+	for (int i = 0; i < argc; i++)
    - 		printf("arg %02d: %s\n", i, argv[i]);
    - }
    - 
4:  3d1edfd825 ! 4:  9d2479220d CodingGuidelines: mention C99 features we can't use
    @@ Documentation/CodingGuidelines: For C programs:
     +
     +   . %z and %zu as a printf() argument for a size_t (the %z being for
     +     the POSIX-specific ssize_t). Instead you should use
    -+     printf("%"PRIuMAX, (uintmax_t)v); These days the MSVC version we
    ++     printf("%"PRIuMAX, (uintmax_t)v).  These days the MSVC version we
     +     rely on supports %z, but the C library used by MinGW does not.
     +
       - Variables have to be declared at the beginning of the block, before
5:  139b0f8cfd ! 5:  ef22b1756a CodingGuidelines: recommend against unportable C99 struct syntax
    @@ Commit message
     
      ## Documentation/CodingGuidelines ##
     @@ Documentation/CodingGuidelines: For C programs:
    -      printf("%"PRIuMAX, (uintmax_t)v); These days the MSVC version we
    +      printf("%"PRIuMAX, (uintmax_t)v).  These days the MSVC version we
           rely on supports %z, but the C library used by MinGW does not.
      
     +   . Shorthand like ".a.b = *c" in struct assignments is known to trip