A negative precision argument is taken as if the precision were omitted
and while not entirely explicit about this regarding in-format-string precision, rather than separate-argument precision - that is the reasonable interpretation. So, we need to parse negative precision values... :-P
In C17, this was changed, so that the precision must be a non-negative value (which makes negative-precision values unsupported syntax and thus we can do what we want with them).
Apparently, the C99 standard dictates that:
and while not entirely explicit about this regarding in-format-string precision, rather than separate-argument precision - that is the reasonable interpretation. So, we need to parse negative precision values... :-P
In C17, this was changed, so that the precision must be a non-negative value (which makes negative-precision values unsupported syntax and thus we can do what we want with them).