[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
improve fprintf declaration and warning
From: |
Bruno Haible |
Subject: |
improve fprintf declaration and warning |
Date: |
Sun, 21 Feb 2010 01:04:52 +0100 |
User-agent: |
KMail/1.9.9 |
The override in stdio.in.h of fprintf, printf, vfprintf, vprintf introduced
on 2008-09-26 was suboptimal. Now that we use _GL_WARN_ON_USE, since 2010-01-20,
it can be improved. I'm applying this:
2010-02-20 Bruno Haible <address@hidden>
Improve *printf warning condition.
* lib/stdio.in.h (fprintf, printf, vfprintf, vprintf): Emit warning
also if GNULIB_POSIXCHECK is defined, the *-posix module is not used,
and the function is overridden due to SIGPIPE emulation.
*** lib/stdio.in.h.orig Sun Feb 21 00:56:35 2010
--- lib/stdio.in.h Sun Feb 21 00:52:35 2010
***************
*** 133,152 ****
"use gnulib module fopen for portability");
#endif
! #if @GNULIB_FPRINTF_POSIX@
! # if @REPLACE_FPRINTF@
# define fprintf rpl_fprintf
extern int fprintf (FILE *fp, const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)))
_GL_ARG_NONNULL ((1, 2));
# endif
! #elif @GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@
! # define fprintf rpl_fprintf
! extern int fprintf (FILE *fp, const char *format, ...)
! __attribute__ ((__format__ (__printf__, 2, 3)))
! _GL_ARG_NONNULL ((1, 2));
! #elif defined GNULIB_POSIXCHECK
! # undef fprintf
/* Assume fprintf is always declared. */
_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
"use gnulib module fprintf-posix for portable "
--- 133,152 ----
"use gnulib module fopen for portability");
#endif
! #if @GNULIB_FPRINTF_POSIX@ || @GNULIB_FPRINTF@
! # if (@GNULIB_FPRINTF_POSIX@ && @REPLACE_FPRINTF@) \
! || (@GNULIB_FPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@)
# define fprintf rpl_fprintf
+ # define GNULIB_overrides_fprintf 1
extern int fprintf (FILE *fp, const char *format, ...)
__attribute__ ((__format__ (__printf__, 2, 3)))
_GL_ARG_NONNULL ((1, 2));
# endif
! #endif
! #if address@hidden@ && defined GNULIB_POSIXCHECK
! # if !GNULIB_overrides_fprintf
! # undef fprintf
! # endif
/* Assume fprintf is always declared. */
_GL_WARN_ON_USE (fprintf, "fprintf is not always POSIX compliant - "
"use gnulib module fprintf-posix for portable "
***************
*** 439,458 ****
# endif
#endif
! #if @GNULIB_PRINTF_POSIX@
! # if @REPLACE_PRINTF@
/* Don't break __attribute__((format(printf,M,N))). */
# define printf __printf__
extern int printf (const char *format, ...)
__attribute__ ((__format__ (__printf__, 1, 2))) _GL_ARG_NONNULL ((1));
# endif
! #elif @GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@
! /* Don't break __attribute__((format(printf,M,N))). */
! # define printf __printf__
! extern int printf (const char *format, ...)
! __attribute__ ((__format__ (__printf__, 1, 2))) _GL_ARG_NONNULL ((1));
! #elif defined GNULIB_POSIXCHECK
! # undef printf
/* Assume printf is always declared. */
_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
"use gnulib module printf-posix for portable "
--- 439,458 ----
# endif
#endif
! #if @GNULIB_PRINTF_POSIX@ || @GNULIB_PRINTF@
! # if (@GNULIB_PRINTF_POSIX@ && @REPLACE_PRINTF@) \
! || (@GNULIB_PRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@)
/* Don't break __attribute__((format(printf,M,N))). */
# define printf __printf__
+ # define GNULIB_overrides_printf 1
extern int printf (const char *format, ...)
__attribute__ ((__format__ (__printf__, 1, 2))) _GL_ARG_NONNULL ((1));
# endif
! #endif
! #if address@hidden@ && defined GNULIB_POSIXCHECK
! # if !GNULIB_overrides_printf
! # undef printf
! # endif
/* Assume printf is always declared. */
_GL_WARN_ON_USE (printf, "printf is not always POSIX compliant - "
"use gnulib module printf-posix for portable "
***************
*** 595,632 ****
# endif
#endif
! #if @GNULIB_VFPRINTF_POSIX@
! # if @REPLACE_VFPRINTF@
# define vfprintf rpl_vfprintf
extern int vfprintf (FILE *fp, const char *format, va_list args)
__attribute__ ((__format__ (__printf__, 2, 0)))
_GL_ARG_NONNULL ((1, 2));
# endif
! #elif @GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@
! # define vfprintf rpl_vfprintf
! extern int vfprintf (FILE *fp, const char *format, va_list args)
! __attribute__ ((__format__ (__printf__, 2, 0)))
! _GL_ARG_NONNULL ((1, 2));
! #elif defined GNULIB_POSIXCHECK
! # undef vfprintf
/* Assume vfprintf is always declared. */
_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
"use gnulib module vfprintf-posix for portable "
"POSIX compliance");
#endif
! #if @GNULIB_VPRINTF_POSIX@
! # if @REPLACE_VPRINTF@
# define vprintf rpl_vprintf
extern int vprintf (const char *format, va_list args)
__attribute__ ((__format__ (__printf__, 1, 0))) _GL_ARG_NONNULL ((1));
# endif
! #elif @GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@
! # define vprintf rpl_vprintf
! extern int vprintf (const char *format, va_list args)
! __attribute__ ((__format__ (__printf__, 1, 0))) _GL_ARG_NONNULL ((1));
! #elif defined GNULIB_POSIXCHECK
! # undef vprintf
/* Assume vprintf is always declared. */
_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
"use gnulib module vprintf-posix for portable "
--- 595,633 ----
# endif
#endif
! #if @GNULIB_VFPRINTF_POSIX@ || @GNULIB_VFPRINTF@
! # if (@GNULIB_VFPRINTF_POSIX@ && @REPLACE_VFPRINTF@) \
! || (@GNULIB_VFPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@)
# define vfprintf rpl_vfprintf
+ # define GNULIB_overrides_vfprintf 1
extern int vfprintf (FILE *fp, const char *format, va_list args)
__attribute__ ((__format__ (__printf__, 2, 0)))
_GL_ARG_NONNULL ((1, 2));
# endif
! #endif
! #if address@hidden@ && defined GNULIB_POSIXCHECK
! # if !GNULIB_overrides_vfprintf
! # undef vfprintf
! # endif
/* Assume vfprintf is always declared. */
_GL_WARN_ON_USE (vfprintf, "vfprintf is not always POSIX compliant - "
"use gnulib module vfprintf-posix for portable "
"POSIX compliance");
#endif
! #if @GNULIB_VPRINTF_POSIX@ || @GNULIB_VPRINTF@
! # if (@GNULIB_VPRINTF_POSIX@ && @REPLACE_VPRINTF@) \
! || (@GNULIB_VPRINTF@ && @REPLACE_STDIO_WRITE_FUNCS@ &&
@GNULIB_STDIO_H_SIGPIPE@)
# define vprintf rpl_vprintf
+ # define GNULIB_overrides_vprintf 1
extern int vprintf (const char *format, va_list args)
__attribute__ ((__format__ (__printf__, 1, 0))) _GL_ARG_NONNULL ((1));
# endif
! #endif
! #if address@hidden@ && defined GNULIB_POSIXCHECK
! # if !GNULIB_overrides_vprintf
! # undef vprintf
! # endif
/* Assume vprintf is always declared. */
_GL_WARN_ON_USE (vprintf, "vprintf is not always POSIX compliant - "
"use gnulib module vprintf-posix for portable "
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- improve fprintf declaration and warning,
Bruno Haible <=