aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2013-11-13 10:58:31 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2013-11-13 17:02:27 +0100
commitd6f690f7da2712b79550d909c5cd53432302517c (patch)
treee29a0fb7fbeed0c0194ea64a6759e8bd504937a9
parentb3e579713f14309a330a44171abd47c2e851a7b0 (diff)
Use C99 printf statements in mingw
Otherwise, format specifiers such as %llu will not work on XP or earlier. This bug was introduced with 51ed9ec9. http://sourceforge.net/apps/trac/mingw-w64/wiki/gnu%20printf
-rw-r--r--configure.ac2
-rw-r--r--src/util.cpp4
-rw-r--r--src/util.h29
3 files changed, 9 insertions, 26 deletions
diff --git a/configure.ac b/configure.ac
index 4e105629e8..1b3d91890c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -221,7 +221,7 @@ case $host in
AC_MSG_ERROR("windres not found")
fi
- CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
+ CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB -D__USE_MINGW_ANSI_STDIO"
LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
CXXFLAGS="$CXXFLAGS -w"
;;
diff --git a/src/util.cpp b/src/util.cpp
index 5411bb2fe3..44186b7325 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -336,11 +336,7 @@ string vstrprintf(const char *format, va_list ap)
{
va_list arg_ptr;
va_copy(arg_ptr, ap);
-#ifdef WIN32
- ret = _vsnprintf(p, limit, format, arg_ptr);
-#else
ret = vsnprintf(p, limit, format, arg_ptr);
-#endif
va_end(arg_ptr);
if (ret >= 0 && ret < limit)
break;
diff --git a/src/util.h b/src/util.h
index d3687620dc..9c7f185f13 100644
--- a/src/util.h
+++ b/src/util.h
@@ -44,26 +44,13 @@ static const int64_t CENT = 1000000;
#define UEND(a) ((unsigned char*)&((&(a))[1]))
#define ARRAYLEN(array) (sizeof(array)/sizeof((array)[0]))
-/* Format characters for (s)size_t and ptrdiff_t */
-#if defined(_MSC_VER) || defined(__MSVCRT__)
- /* (s)size_t and ptrdiff_t have the same size specifier in MSVC:
- http://msdn.microsoft.com/en-us/library/tcxf1dw6%28v=vs.100%29.aspx
- */
- #define PRIszx "Ix"
- #define PRIszu "Iu"
- #define PRIszd "Id"
- #define PRIpdx "Ix"
- #define PRIpdu "Iu"
- #define PRIpdd "Id"
-#else /* C99 standard */
- #define PRIszx "zx"
- #define PRIszu "zu"
- #define PRIszd "zd"
- #define PRIpdx "tx"
- #define PRIpdu "tu"
- #define PRIpdd "td"
-#endif
-
+/* Format characters for (s)size_t and ptrdiff_t (C99 standard) */
+#define PRIszx "zx"
+#define PRIszu "zu"
+#define PRIszd "zd"
+#define PRIpdx "tx"
+#define PRIpdu "tu"
+#define PRIpdd "td"
// This is needed because the foreach macro can't get over the comma in pair<t1, t2>
#define PAIRTYPE(t1, t2) std::pair<t1, t2>
@@ -117,7 +104,7 @@ inline void MilliSleep(int64_t n)
* Parameters count from 1.
*/
#ifdef __GNUC__
-#define ATTR_WARN_PRINTF(X,Y) __attribute__((format(printf,X,Y)))
+#define ATTR_WARN_PRINTF(X,Y) __attribute__((format(gnu_printf,X,Y)))
#else
#define ATTR_WARN_PRINTF(X,Y)
#endif