It seems that GCC 9 now peers closely at field-width specifiers in
`printf' format strings to make sure that they're sensible. This is a
good thing except when you're trying to test how your `printf'-like
function copes with out-of-range field width specifiers.
Add a new macro `INHIBIT_PRINTF_FORMAT_CHECKING' to turn off the magic
GCC attribute, and use it in `t-printf.c' to prevent GCC from breaking
the build.
size_t bufsize,
const char *fmt,
...)
size_t bufsize,
const char *fmt,
...)
- attribute((format (printf, 3, 4)));
+#ifndef INHIBIT_PRINTF_FORMAT_CHECKING
+ attribute((format (printf, 3, 4)))
+#endif
+ ;
/* analogues of [v]snprintf */
int byte_vasprintf(char **ptrp,
/* analogues of [v]snprintf */
int byte_vasprintf(char **ptrp,
int byte_asprintf(char **ptrp,
const char *fmt,
...)
int byte_asprintf(char **ptrp,
const char *fmt,
...)
- attribute((format (printf, 2, 3)));
+#ifndef INHIBIT_PRINTF_FORMAT_CHECKING
+ attribute((format (printf, 2, 3)))
+#endif
+ ;
/* analogues of [v]asprintf (uses xmalloc/xrealloc) */
int byte_xvasprintf(char **ptrp,
/* analogues of [v]asprintf (uses xmalloc/xrealloc) */
int byte_xvasprintf(char **ptrp,
int byte_xasprintf(char **ptrp,
const char *fmt,
...)
int byte_xasprintf(char **ptrp,
const char *fmt,
...)
- attribute((format (printf, 2, 3)));
+#ifndef INHIBIT_PRINTF_FORMAT_CHECKING
+ attribute((format (printf, 2, 3)))
+#endif
+ ;
/* same but terminate on error */
int byte_vfprintf(FILE *fp, const char *fmt, va_list ap);
int byte_fprintf(FILE *fp, const char *fmt, ...)
/* same but terminate on error */
int byte_vfprintf(FILE *fp, const char *fmt, va_list ap);
int byte_fprintf(FILE *fp, const char *fmt, ...)
- attribute((format (printf, 2, 3)));
+#ifndef INHIBIT_PRINTF_FORMAT_CHECKING
+ attribute((format (printf, 2, 3)))
+#endif
+ ;
/* analogues of [v]fprintf */
#endif /* PRINTF_H */
/* analogues of [v]fprintf */
#endif /* PRINTF_H */
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#define INHIBIT_PRINTF_FORMAT_CHECKING
#include "test.h"
/* launder a string constant to stop gcc warnings */
#include "test.h"
/* launder a string constant to stop gcc warnings */