tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Adding missing __printflike attributions
On Sun, Mar 04, 2012 at 03:35:27PM -0500, Julio Merino wrote:
> Except that the code lives in external/bsd/atf/ and is shipped in
> other systems that do not have __printflike.
>
> __printflike is a NetBSD-ism, right? If so, why do you think NetBSD
> is more important than any other system and thus __printflike has to
> be used?
What I usually do in circumstances like this is to reproduce the
definition from <sys/cdefs.h> in my own sources, and add a cpp check
to only define them if they're not already defined:
#ifndef __printflike
/*
* Compiler-dependent macros to declare that functions take printf-like
* or scanf-like arguments. They are null except for versions of gcc
* that are known to support the features properly (old versions of gcc-2
* didn't permit keeping the keywords out of the application namespace).
*/
# if __GNUC_PREREQ__(2, 7)
# define __printflike(fmtarg, firstvararg) \
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
# define __scanflike(fmtarg, firstvararg) \
__attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
# define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
# else
# define __printflike(fmtarg, firstvararg) /* nothing */
# define __scanflike(fmtarg, firstvararg) /* nothing */
# define __format_arg(fmtarg) /* nothing */
# endif
#endif
(the indentation is mine).
Regards,
Alistair
Home |
Main Index |
Thread Index |
Old Index