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

Re: [PATCH 1/1] git-compat-util.h: drop the `PRIuMAX` definition

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 25, 2019, 02:45 UTC
Message-ID
<xmqqv9r8y8qe.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<xmqq1rtwzoal.fsf@gitster-ct.c.googlers.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 6 quoted lines
>> Can we likewise ditch the fallback definition for SCNuMAX? And PRIu32,
>> etc? It seems likely any platform would either have all of them or none.
>
> I guess that's also a C99-ism that we can use?
>
> Thanks, both.
Here is what I have locally for now.
1:  98f866a929 ! 1:  ebc3278665 git-compat-util.h: drop the `PRIuMAX` definition
    @@ Metadata
     Author: Hariom Verma <hariom18599@gmail.com>
     
      ## Commit message ##
    -    git-compat-util.h: drop the `PRIuMAX` definition
    +    git-compat-util.h: drop the `PRIuMAX` and other fallback definitions
     
         Git's code base already seems to be using `PRIdMAX` without any such
         fallback definition for quite a while (75459410edd (json_writer: new
         routines to create JSON data, 2018-07-13), to be precise, and the
    -    first Git version to include that commit was v2.19.0).
    +    first Git version to include that commit was v2.19.0).  Having a
    +    fallback definition only for `PRIuMAX` is a bit inconsistent.
     
    -    Therefore it should be safe to drop the fallback definition for
    -    `PRIuMAX` in `git-compat-util.h`.
    +    We do sometimes get portability reports more than a year after the
    +    problem was introduced.  This one should be fairly safe.  PRIuMAX is
    +    in C99 (for that matter, SCNuMAX, PRIu32 and others also are), and
    +    we've been picking up other C99-isms without complaint.
     
    -    This addresses https://github.com/gitgitgadget/git/issues/399
    +    The PRIuMAX fallback definition was originally added in 3efb1f343a
    +    (Check for PRIuMAX rather than NO_C99_FORMAT in fast-import.c.,
    +    2007-02-20). But it was replacing a construct that was introduced in
    +    an even earlier commit, 579d1fbfaf (Add NO_C99_FORMAT to support
    +    older compilers., 2006-07-30), which talks about gcc 2.95.
    +
    +    That's pretty ancient at this point.
     
         Signed-off-by: Hariom Verma <hariom18599@gmail.com>
    +    Helped-by: Jeff King <peff@peff.net>
    +    [jc: tweaked both message and code, taking what peff wrote]
         Signed-off-by: Junio C Hamano <gitster@pobox.com>
     
      ## git-compat-util.h ##
    @@ git-compat-util.h: char *gitdirname(char *);
     -#define PRIuMAX "llu"
     -#endif
     -
    - #ifndef SCNuMAX
    - #define SCNuMAX PRIuMAX
    - #endif
    +-#ifndef SCNuMAX
    +-#define SCNuMAX PRIuMAX
    +-#endif
    +-
    +-#ifndef PRIu32
    +-#define PRIu32 "u"
    +-#endif
    +-
    +-#ifndef PRIx32
    +-#define PRIx32 "x"
    +-#endif
    +-
    +-#ifndef PRIo32
    +-#define PRIo32 "o"
    +-#endif
    +-
    + typedef uintmax_t timestamp_t;
    + #define PRItime PRIuMAX
    + #define parse_timestamp strtoumax
Previous: Junio C HamanoNext: Jeff King
Message 7 of 8 in “git-compat-util.h: drop the PRIuMAX definition”
  1. 0/1 git-compat-util.h: drop the PRIuMAX definitionHariom Verma via GitGitGadget, Nov 24, 2019
  2. 1/1 git-compat-util.h: drop the `PRIuMAX` definitionHariom Verma via GitGitGadget, Nov 24, 2019
  3. Jeff KingNov 24, 2019
  4. Carlo ArenasNov 24, 2019
  5. Carlo ArenasNov 24, 2019
  6. Junio C HamanoNov 25, 2019
  7. Junio C HamanoNov 25, 2019
  8. Jeff KingNov 25, 2019

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.