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

cb/pedantic-build-for-developers, POSIX-but-not-C99 and -Wno-pedantic-ms-format

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Sep 21, 2021, 08:44 UTC
Message-ID
<87lf3q9u6b.fsf@evledraar.gmail.com>
In-Reply-To
<xmqq1r5iaj9j.fsf@gitster.g>
On Mon, Sep 20 2021, Junio C Hamano wrote:
Show 8 quoted lines
> * cb/pedantic-build-for-developers (2021-09-03) 3 commits
>   (merged to 'next' on 2021-09-10 at b8df102019)
>  + developer: enable pedantic by default
>  + win32: allow building with pedantic mode enabled
>  + gettext: remove optional non-standard parens in N_() definition
>
>  Update the build procedure to use the "-pedantic" build when
>  DEVELOPER makefile macro is in effect.
With -pedantic one of my WIP branches started erroring on:
    error: ISO C does not support %n$ operand number formats [-Werror=format=]
I.e. complaining about "%m$" instead of "%" in printf formats, it's easy
enough to fix in my case, it's just something I used to de-duplicate a
rather complex format, this makes it C(89|99)-compliant:
    
    -       strbuf_addf(&fmt, "%%s%%s%%s-%%0%1$lud.%%0%1$lud-%%s-%%s-%%s",
    -                   (unsigned long)tmp.len);
    +       strbuf_addf(&fmt, "%%s%%s%%s-%%0%lud.%%0%lud-%%s-%%s-%%s",
    +                   (unsigned long)tmp.len, (unsigned long)tmp.len);

But in general, do we view -pedantic as an implicit endorsement that we should be using less POSIX and more standard C than we otherwise would?

I may be wrong, but I believe that construct is widely portable, we don't use it in the main source, but in the po/ files (so anything that uses git + gettext tests for this already):

    git grep '%\d+\$' -- po
Previous: Taylor BlauNext: Carlo Arenas
Message 4 of 18 in “What's cooking in git.git (Sep 2021, #06; Mon, 20)”
  1. Junio C HamanoSep 21, 2021
  2. Junio C HamanoSep 21, 2021
  3. Taylor BlauSep 21, 2021
  4. cb/pedantic-build-for-developers, POSIX-but-not-C99 and -Wno-pedantic-ms-formatÆvar Arnfjörð Bjarmason, Sep 21, 2021
  5. Carlo ArenasSep 21, 2021
  6. René ScharfeSep 21, 2021
  7. Carlo ArenasSep 21, 2021
  8. Junio C HamanoSep 22, 2021
  9. René ScharfeSep 22, 2021
  10. Junio C HamanoSep 22, 2021
  11. Randall S. BeckerSep 22, 2021
  12. Randall S. BeckerSep 22, 2021
  13. Randall S. BeckerSep 22, 2021
  14. Ævar Arnfjörð BjarmasonSep 21, 2021
  15. Junio C HamanoSep 23, 2021
  16. Ævar Arnfjörð BjarmasonSep 23, 2021
  17. Jeff KingSep 23, 2021
  18. ns/batched-fsync (was Re: What's cooking in git.git (Sep 2021, #06; Mon, 20))Ævar Arnfjörð Bjarmason, Sep 22, 2021

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.