* support/Util/dbuf_string.h: added ATTRIBUTE_PRINTF to dbuf_printf()
authorborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 31 Jan 2007 21:13:26 +0000 (21:13 +0000)
committerborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 31 Jan 2007 21:13:26 +0000 (21:13 +0000)
  if compiled with GCC. Thanks to Raphael Neider

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4610 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
support/Util/dbuf_string.h

index a9303c65baa6b3b639e0ffd7d005afef078610d2..eaee037aac8e9c9dce834fc25db399df9115a35e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-31 Borut Razem <borut.razem AT siol.net>
+
+       * support/Util/dbuf_string.h: added ATTRIBUTE_PRINTF to dbuf_printf()
+         if compiled with GCC. Thanks to Raphael Neider
+
 2007-01-31 Raphael Neider <rneider AT web.de>
 
        * src/pic/pcode.c (isValidIdChar,bankCompare): fuzzy matching of
index 8c4d78bb801a7fb06688bf6160201a37b50c8df5..2c45181ed505570d426d16167d8e94f201821107 100644 (file)
 #include <stdarg.h>
 #include "dbuf.h"
 
+/* Attribute `nonnull' was valid as of gcc 3.3.  */
+#ifndef ATTRIBUTE_NONNULL
+# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
+#  define ATTRIBUTE_NONNULL(m) __attribute__ ((__nonnull__ (m)))
+# else
+#  define ATTRIBUTE_NONNULL(m)
+# endif /* GNUC >= 3.3 */
+#endif /* ATTRIBUTE_NONNULL */
+
+/* The __-protected variants of `format' and `printf' attributes
+   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
+#ifndef ATTRIBUTE_PRINTF
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+#  define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) ATTRIBUTE_NONNULL(m)
+#else
+#  define ATTRIBUTE_PRINTF(m, n)
+# endif /* GNUC >= 2.7 */
+#endif /* ATTRIBUTE_PRINTF */
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -34,7 +53,7 @@ extern "C" {
 int dbuf_append_str(struct dbuf_s *dbuf, const char *str);
 int dbuf_append_char(struct dbuf_s *dbuf, char chr);
 int dbuf_vprintf(struct dbuf_s *dbuf, const char *format, va_list args);
-int dbuf_printf (struct dbuf_s *dbuf, const char *format, ...);
+int dbuf_printf (struct dbuf_s *dbuf, const char *format, ...) ATTRIBUTE_PRINTF(2, 3);
 void dbuf_write (struct dbuf_s *dbuf, FILE *dest);
 void dbuf_write_and_destroy (struct dbuf_s *dbuf, FILE *dest);