Jeff King <peff@xxxxxxxx> writes: > On Sun, Nov 24, 2019 at 01:09:23PM +0000, Hariom Verma via GitGitGadget wrote: > >> From: Hariom Verma <hariom18599@xxxxxxxxx> >> >> 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). >> >> Therefore it should be safe to drop the fallback definition for >> `PRIuMAX` in `git-compat-util.h`. > > I noticed this recently, too, and wondered if it was time for a cleanup. While I agree with the conclusion, I do not think I agree with the above "Therefore (implying that the lack of need for fallback PRIdMAX means the same for PRIuMAX) it should be safe" as a good justification. That reasoning assumes that the outside world is much saner than us. We thought PRIuMAX fallback necessary while a counterpart for PRIdMAX unneeded---the outside world could have made a similar mistake and in the opposite way (i.e. only defined PRIdMAX while leaving PRIuMAX undefined). But I do agree with the alternative justification in the following two paragraphs you have given, which are ... > We do sometimes get portability reports more than a year after the > problem was introduced. But I think this one is pretty safe. PRIuMAX is > in C99, and we've been picking up other C99-isms without complaint. > > I was curious what system originally spurred this. The PRIuMAX > 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 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. ... these. > This part of the patch looks obviously correct. :) But... > >> #ifndef SCNuMAX >> #define SCNuMAX PRIuMAX >> #endif > > 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.