On Sun, Nov 26, 2017 at 05:18:55PM -0500, Eric Sunshine wrote: > On Sun, Nov 26, 2017 at 2:38 PM, Max Kirillov <max@xxxxxxxxxx> wrote: >> +int cmd_main(int argc, const char **argv) >> +{ >> + if (argc == 2 && strcmp(argv[1], "(size_t)(-20)") == 0) >> + printf("%zu", (ssize_t)(-20)); >> + >> + return 0; > > Perhaps this should return 0 only if it gets the expected argument > "(size_t)(-20)", and return an error otherwise. Yes, makes sense. > Rather than introducing a new 'test' program, would it be possible to > get by with just using 'printf' from the shell? > > % printf "%zu\n" -20 > 18446744073709551596 I thought about it, of course. But, I am not sure I can exclude cases when the shell's printf uses 64-bit size_t and git 32-bit one, or vise-versa. Same way, I cannot say it for sure for any other software which I might use here instead of the shell's printf. The only somewhat sure way would be to use the same compiler, with same settings, which is used for the production code. I do not exclude possibility that my reasoning above is wrong, either in general of specifically for git case. If there are some examples where it is already used and the risk of type size mismatch is prevented I could do it similarly.