Buildfarm member greenfly has recently started to warn about some very hoary code in pg_bsd_indent [1]:
../pgsql/src/tools/pg_bsd_indent/io.c:562:27: warning: diagnostic behavior may be improved by adding the 'format(printf, 2, 3)' attribute to the declaration of 'diag4' [-Wmissing-format-attribute] 562 | fprintf(stdout, msg, a, b); | ^ ../pgsql/src/tools/pg_bsd_indent/io.c:579:24: warning: diagnostic behavior may be improved by adding the 'format(printf, 2, 3)' attribute to the declaration of 'diag3' [-Wmissing-format-attribute] 579 | fprintf(stdout, msg, a); | ^
This is not an unreasonable suggestion, and presumably more people will start seeing this as they adopt newer clang versions. (I see the same on Fedora 44, for instance.) So I think we ought to take the advice, and while we're at it let's convert this code to use varargs instead of several duplicative functions. Patch attached.
Patch looks good to me,
Just a minor comment, while we are at it, should we change the %zd to %zu for nitems since it looks like it uses size_t?