corrective fix for MinGW GNU C99 printf compliance
authorRedirect 'Slash' NIL <redirect.slash.nil@gmail.com>
Mon, 19 Oct 2009 16:49:34 +0000 (09:49 -0700)
committerDavid Brownell <dbrownell@users.sourceforge.net>
Mon, 19 Oct 2009 16:49:34 +0000 (09:49 -0700)
Compilation on cygwin, using gcc v3 with option -mno-cygwin,
currently produces a large number of the following warnings:

   warning: `gnu_printf' is an unrecognized format function type

These have been introduced with the recent MinGW GNU C99 printf
compliance patch, as gnu_printf was only introduced with gcc v4.4
and is not recognized with earlier versions.

The attached fix adds gcc version detection to the previous patch
to avoid the problem.

src/helper/command.h
src/helper/log.h

index c574efd..ba825bc 100644 (file)
 #include "jim.h"
 #endif
 
-/* To achieve C99 printf compatibility in MinGW, gnu_printf should */
-/* be used for __attribute__((format( ... )))                      */
-#ifdef IS_MINGW
+/* To achieve C99 printf compatibility in MinGW, gnu_printf should be
+ * used for __attribute__((format( ... ))), with GCC v4.4 or later
+ */
+#if (defined(IS_MINGW) && (((__GNUC__ << 16) + __GNUC_MINOR__) >= 0x00040004))
 #define PRINTF_ATTRIBUTE_FORMAT gnu_printf
 #else
 #define PRINTF_ATTRIBUTE_FORMAT printf
index 8f6ac77..f43e1e6 100644 (file)
 
 #include "command.h"
 
-/* To achieve C99 printf compatibility in MinGW, gnu_printf should */
-/* be used for __attribute__((format( ... )))                      */
-#ifdef IS_MINGW
+/* To achieve C99 printf compatibility in MinGW, gnu_printf should be
+ * used for __attribute__((format( ... ))), with GCC v4.4 or later
+ */
+#if (defined(IS_MINGW) && (((__GNUC__ << 16) + __GNUC_MINOR__) >= 0x00040004))
 #define PRINTF_ATTRIBUTE_FORMAT gnu_printf
 #else
 #define PRINTF_ATTRIBUTE_FORMAT printf