* Modified by: Vadim Zeitlin, Robert Roebling, Ron Lee
* Created: 1998/06/12
* RCS-ID: $Id$
- * Copyright: (c) 1998-2002 wxWidgets dev team
+ * Copyright: (c) 1998-2002 Joel Farley, Ove Kåven, Robert Roebling, Ron Lee
* Licence: wxWindows licence
*/
#include "wx/defs.h" /* for wxUSE_UNICODE */
+#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
+
/* check whether we have wchar_t and which size it is if we do */
#if !defined(wxUSE_WCHAR_T)
#if defined(__UNIX__)
#define wxHAVE_TCHAR_SUPPORT
#elif defined(__DMC__)
#define wxHAVE_TCHAR_SUPPORT
-#elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 ) && !defined(__WXPALMOS__)
+#elif defined(__WXPALMOS__)
+ #include <stddef.h>
+#elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 )
#define wxHAVE_TCHAR_SUPPORT
#include <stddef.h>
#include <string.h>
#define wxRename wxMSLU__trename
#else
#ifdef __WXWINCE__
- #define wxRemove DeleteFile
+ /* carefully: wxRemove() must return 0 on success while DeleteFile()
+ returns 0 on error, so don't just define one as the other */
+ int wxRemove(const wxChar *path);
#else
#define wxRemove _tremove
#define wxRename _trename
/* there are no env vars at all under CE, so no _tgetenv neither */
#ifdef __WXWINCE__
/* can't define as inline function as this is a C file... */
- #define wxGetenv(name) NULL
+ #define wxGetenv(name) ((wxChar *)NULL)
#else
#define wxGetenv _tgetenv
#endif
/* time.h functions */
#define wxAsctime _tasctime
#define wxCtime _tctime
+
+ #define wxMbstowcs mbstowcs
+ #define wxWcstombs wcstombs
#else /* !TCHAR-aware compilers */
#if !defined(__MWERKS__) && defined(__DARWIN__) && ( MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2 )
/* even though they are defined and "implemented", they are bad and just
stubs so we need our own - we need these even in ANSI builds!! */
- #define mbstowcs wxInternalMbstowcs
- #define wcstombs wxInternalWcstombs
-
- WXDLLIMPEXP_BASE size_t wxInternalMbstowcs (wchar_t *, const char *, size_t);
- WXDLLIMPEXP_BASE size_t wxInternalWcstombs (char *, const wchar_t *, size_t);
+ WXDLLIMPEXP_BASE size_t wxMbstowcs (wchar_t *, const char *, size_t);
+ WXDLLIMPEXP_BASE size_t wxWcstombs (char *, const wchar_t *, size_t);
+ #else
+ #define wxMbstowcs mbstowcs
+ #define wxWcstombs wcstombs
#endif
/* No UNICODE in the c library except wchar_t typedef on mac OSX 10.2 and less - roll our own */
/* printf() family saga */
/*
- For some systems vsnprintf() exists in the system libraries but not in the
+ For some systems [v]snprintf() exists in the system libraries but not in the
headers, so we need to declare it ourselves to be able to use it.
*/
#if defined(HAVE_VSNPRINTF) && !defined(HAVE_VSNPRINTF_DECL)
int vsnprintf(char *str, size_t size, const char *format, va_list ap);
#endif /* !HAVE_VSNPRINTF_DECL */
+#if defined(HAVE_SNPRINTF) && !defined(HAVE_SNPRINTF_DECL)
+#ifdef __cplusplus
+ extern "C"
+#else
+ extern
+#endif
+ int snprintf(char *str, size_t size, const char *format, ...);
+#endif /* !HAVE_SNPRINTF_DECL */
+
/*
First of all, we always want to define safe snprintf() function to be used
instead of sprintf(). Some compilers already have it (or rather vsnprintf()
#endif
#else /* ASCII */
/* all versions of CodeWarrior supported by wxWidgets apparently have */
- /* vsnprintf() */
+ /* both snprintf() and vsnprintf() */
+ #if defined(HAVE_SNPRINTF) || defined(__MWERKS__) || defined(__WATCOMC__)
+ #define wxSnprintf_ snprintf
+ #endif
#if defined(HAVE_VSNPRINTF) || defined(__MWERKS__) || defined(__WATCOMC__)
- /* assume we have snprintf() too if we have vsnprintf() */
#define wxVsnprintf_ vsnprintf
- #define wxSnprintf_ snprintf
#endif
#endif
#endif /* wxVsnprintf_ not defined yet */