Add ATTRIBUTE_FORMAT_FPTR macro for setting format specifier also on function pointers

This was available from gcc 3.1, so diable it before that
Update m_ctype.h to use the new macro
parent d5ad8ff4
...@@ -175,7 +175,7 @@ typedef struct my_charset_handler_st ...@@ -175,7 +175,7 @@ typedef struct my_charset_handler_st
/* Charset dependant snprintf() */ /* Charset dependant snprintf() */
int (*snprintf)(struct charset_info_st *, char *to, uint n, const char *fmt, int (*snprintf)(struct charset_info_st *, char *to, uint n, const char *fmt,
...) ATTRIBUTE_FORMAT(printf, 4, 5); ...) ATTRIBUTE_FORMAT_FPTR(printf, 4, 5);
int (*long10_to_str)(struct charset_info_st *, char *to, uint n, int radix, int (*long10_to_str)(struct charset_info_st *, char *to, uint n, int radix,
long int val); long int val);
int (*longlong10_to_str)(struct charset_info_st *, char *to, uint n, int (*longlong10_to_str)(struct charset_info_st *, char *to, uint n,
......
...@@ -431,9 +431,6 @@ typedef unsigned short ushort; ...@@ -431,9 +431,6 @@ typedef unsigned short ushort;
#ifndef __attribute__ #ifndef __attribute__
# if !defined(__GNUC__) # if !defined(__GNUC__)
# define __attribute__(A) # define __attribute__(A)
# elif defined (__QNXNTO__)
/* qcc defines GNUC */
# define __attribute__(A)
# elif GCC_VERSION < 2008 # elif GCC_VERSION < 2008
# define __attribute__(A) # define __attribute__(A)
# elif defined(__cplusplus) && GCC_VERSION < 3004 # elif defined(__cplusplus) && GCC_VERSION < 3004
...@@ -450,6 +447,19 @@ typedef unsigned short ushort; ...@@ -450,6 +447,19 @@ typedef unsigned short ushort;
# define ATTRIBUTE_FORMAT(style, m, n) __attribute__((format(style, m, n))) # define ATTRIBUTE_FORMAT(style, m, n) __attribute__((format(style, m, n)))
#endif #endif
/*
__attribute__((format(...))) on a function pointer is not supported
until gcc 3.1
*/
#ifndef ATTRIBUTE_FORMAT_FPTR
# if (GCC_VERSION >= 3001)
# define ATTRIBUTE_FORMAT_FPTR(style, m, n) ATTRIBUTE_FORMAT(style, m, n)
# else
# define ATTRIBUTE_FORMAT_FPTR(style, m, n)
# endif /* GNUC >= 3.1 */
#endif
/* From old s-system.h */ /* From old s-system.h */
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment