Message ID | patch-3.5-80afc246666-20221007T092505Z-avarab@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | CodingGuidelines: various C99 updates | expand |
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > diff --git a/revision.c b/revision.c > index 36e31942cee..8f2623b3b5a 100644 > --- a/revision.c > +++ b/revision.c > @@ -47,13 +47,6 @@ static inline int want_ancestry(const struct rev_info *revs); > void show_object_with_name(FILE *out, struct object *obj, const char *name) > { > fprintf(out, "%s ", oid_to_hex(&obj->oid)); > - /* > - * This "for (const char *p = ..." is made as a first step towards > - * making use of such declarations elsewhere in our codebase. If > - * it causes compilation problems on your platform, please report > - * it to the Git mailing list at git@vger.kernel.org. In the meantime, > - * adding -std=gnu99 to CFLAGS may help if you are with older GCC. > - */ > for (const char *p = name; *p && *p != '\n'; p++) > fputc(*p, out); > fputc('\n', out); Good. Thanks for not forgetting to remove this. > diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c > index 506835521a4..f8a62d892d9 100644 > --- a/t/helper/test-parse-options.c > +++ b/t/helper/test-parse-options.c > @@ -195,8 +195,7 @@ 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]); > } This does not belong to this patch. If the current code as written is acceptable, it is not worth patch churn to rewrite it.
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 8afda28cfce..f9affc4050a 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -232,18 +232,12 @@ For C programs: . since early 2021 with 765dc168882, we have been using variadic macros, mostly for printf-like trace and debug macros. - These used to be forbidden, but we have not heard any breakage - report, and they are assumed to be safe. + . since late 2021 with 44ba10d6, we have had variables declared in + the for loop "for (int i = 0; i < 10; i++)". - Variables have to be declared at the beginning of the block, before the first statement (i.e. -Wdeclaration-after-statement). - - Declaring a variable in the for loop "for (int i = 0; i < 10; i++)" - is still not allowed in this codebase. We are in the process of - allowing it by waiting to see that 44ba10d6 (revision: use C99 - declaration of variable in for() loop, 2021-11-14) does not get - complaints. Let's revisit this around November 2022. - - NULL pointers shall be written as NULL, not as 0. - When declaring pointers, the star sides with the variable diff --git a/revision.c b/revision.c index 36e31942cee..8f2623b3b5a 100644 --- a/revision.c +++ b/revision.c @@ -47,13 +47,6 @@ static inline int want_ancestry(const struct rev_info *revs); void show_object_with_name(FILE *out, struct object *obj, const char *name) { fprintf(out, "%s ", oid_to_hex(&obj->oid)); - /* - * This "for (const char *p = ..." is made as a first step towards - * making use of such declarations elsewhere in our codebase. If - * it causes compilation problems on your platform, please report - * it to the Git mailing list at git@vger.kernel.org. In the meantime, - * adding -std=gnu99 to CFLAGS may help if you are with older GCC. - */ for (const char *p = name; *p && *p != '\n'; p++) fputc(*p, out); fputc('\n', out); diff --git a/t/helper/test-parse-options.c b/t/helper/test-parse-options.c index 506835521a4..f8a62d892d9 100644 --- a/t/helper/test-parse-options.c +++ b/t/helper/test-parse-options.c @@ -195,8 +195,7 @@ 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]); }
Since 44ba10d6712 (revision: use C99 declaration of variable in for() loop, 2021-11-14) released with v2.35.0 we've had a variable declared with in a for loop. Since then we've had inadvertent follow-ups to that with at least 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. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- Documentation/CodingGuidelines | 10 ++-------- revision.c | 7 ------- t/helper/test-parse-options.c | 3 +-- 3 files changed, 3 insertions(+), 17 deletions(-)