#include "wx/platform.h"
#include "wx/dlimpexp.h"
+#include <stdio.h> /* we use FILE below */
+
#if defined(HAVE_STRTOK_R) && defined(__DARWIN__) && defined(_MSL_USING_MW_C_HEADERS) && _MSL_USING_MW_C_HEADERS
char *strtok_r(char *, const char *, char **);
#endif
/* include stdlib.h for wchar_t */
#include <stdlib.h>
#endif /* HAVE_WCHAR_H */
+
+ #ifdef HAVE_WIDEC_H
+ #include <widec.h>
+ #endif
#endif /* wxUSE_WCHAR_T */
/* ---------------------------------------------------------------------------- */
#define wxStrtol _tcstol
#define wxStrtoul _tcstoul
#ifdef __VISUALC__
- #if __VISUALC__ >= 1300
+ #if __VISUALC__ >= 1300 && !defined(__WXWINCE__)
#define wxStrtoll _tcstoi64
#define wxStrtoull _tcstoui64
#endif /* VC++ 7+ */
#else
extern
#endif
- int snprintf(char *str, size_t size, const char *format, ...);
+ WXDLLIMPEXP_BASE int snprintf(char *str, size_t size, const char *format, ...);
#endif /* !HAVE_SNPRINTF_DECL */
/* Wrapper for vsnprintf if it's 3rd parameter is non-const. Note: the
/*
MinGW MSVCRT has non-standard vswprintf() (for MSVC compatibility
presumably) and normally _vsnwprintf() is used instead
-
- vswprintf() under (early versions of) OS X is buggy
*/
-#if defined(HAVE_VSWPRINTF) && (defined(__MINGW32__) || defined(__DARWIN__))
+#if defined(HAVE_VSWPRINTF) && defined(__MINGW32__)
#undef HAVE_VSWPRINTF
#endif
#else /* !HAVE_UNIX98_PRINTF */
/*
The only compiler with positional parameters support under Windows
- is VC++ 8.0 which provides a new xxprintf_p() functions family
+ is VC++ 8.0 which provides a new xxprintf_p() functions family.
+ The 2003 PSDK includes a slightly earlier version of VC8 than the
+ main release and does not have the printf_p functions.
*/
- #if defined(__VISUALC__) && __VISUALC__ >= 1400
+ #if defined _MSC_FULL_VER && _MSC_FULL_VER >= 140050727 && !defined __WXWINCE__
#if wxUSE_UNICODE
#define wxVsnprintf_ _vswprintf_p
#else
#endif /* wxUSE_PRINTF_POS_PARAMS/!wxUSE_PRINTF_POS_PARAMS */
#ifndef wxSnprintf_
- /* no [v]snprintf(), cook our own */
+ /* no snprintf(), cook our own */
WXDLLIMPEXP_BASE int
wxSnprintf_(wxChar *buf, size_t len, const wxChar *format, ...) ATTRIBUTE_PRINTF_3;
#endif
#ifndef wxVsnprintf_
+ /* no (suitable) vsnprintf(), cook our own */
WXDLLIMPEXP_BASE int
wxVsnprintf_(wxChar *buf, size_t len, const wxChar *format, va_list argptr);
+
+ #define wxUSE_WXVSNPRINTF 1
+#else
+ #define wxUSE_WXVSNPRINTF 0
#endif
/*
either because we don't have them at all or because they don't have the
semantics we need
*/
-
- #include <stdio.h> /* for FILE */
-
int wxScanf( const wxChar *format, ... ) ATTRIBUTE_PRINTF_1;
int wxSscanf( const wxChar *str, const wxChar *format, ... ) ATTRIBUTE_PRINTF_2;
int wxFscanf( FILE *stream, const wxChar *format, ... ) ATTRIBUTE_PRINTF_2;