NB: don't include any wxWidgets headers here because almost all of them
include this one!
-
+
NB2: User code should include wx/crt.h instead of including this
header directly.
define it ourselves for them
*/
#ifndef isascii
- #if defined(__MWERKS__)
+ #if defined(__MWERKS__) || defined(__STRICT_ANSI__)
#define wxNEED_ISASCII
#elif defined(_WIN32_WCE)
#if _WIN32_WCE <= 211
#ifdef _WIN32_WCE
#if _WIN32_WCE <= 211
- #define isspace(c) ((c) == _T(' ') || (c) == _T('\t'))
+ #define isspace(c) ((c) == wxT(' ') || (c) == wxT('\t'))
#endif
#endif /* _WIN32_WCE */
Mac and OpenVMS do not have wcsdup: */
#if defined(__VISUALC__) && __VISUALC__ >= 1400
#define wxCRT_StrdupA _strdup
-#elif !(defined(__MWERKS__) && defined(__WXMAC__)) && !defined(__WXWINCE__)
+#elif !(defined(__MWERKS__) && defined(__WXMAC__)) && !defined(__WXWINCE__) && !defined(__STRICT_ANSI__)
#define wxCRT_StrdupA strdup
#endif
-#if defined(__WINDOWS__)
+
+// all compilers except Cygwin provide _wcsdup() under Windows
+#if defined(__WINDOWS__) && !defined(__CYGWIN__) && !defined(__STRICT_ANSI__)
#define wxCRT_StrdupW _wcsdup
#elif defined(HAVE_WCSDUP)
#define wxCRT_StrdupW wcsdup
#endif /* HAVE_WCSTOULL */
#endif
-/* Not all compilers have strnlen(); e.g. MSVC 6.x and 7.x don't have it */
-#if wxCHECK_VISUALC_VERSION(8) || defined(HAVE_STRNLEN)
+/*
+ Only VC8 and later provide strnlen() and wcsnlen() functions under Windows
+ and it's also only available starting from Windows CE 6.0 only in CE build.
+ */
+#if wxCHECK_VISUALC_VERSION(8) && (!defined(_WIN32_WCE) || (_WIN32_WCE >= 0x600))
+ #ifndef HAVE_STRNLEN
+ #define HAVE_STRNLEN
+ #endif
+ #ifndef HAVE_WCSNLEN
+ #define HAVE_WCSNLEN
+ #endif
+#endif
+
+#ifdef HAVE_STRNLEN
#define wxCRT_StrnlenA strnlen
#endif
-#if wxCHECK_VISUALC_VERSION(8) || defined(HAVE_WCSNLEN)
+#ifdef HAVE_WCSNLEN
#define wxCRT_StrnlenW wcsnlen
#endif
(defined(__MWERKS__) && defined(__INTEL__))
#define wxCRT_StricmpA _stricmp
#define wxCRT_StrnicmpA _strnicmp
-#elif defined(__UNIX__) || defined(__GNUWIN32__)
+#elif defined(__UNIX__) || (defined(__GNUWIN32__) && !defined(__STRICT_ANSI__))
#define wxCRT_StricmpA strcasecmp
#define wxCRT_StrnicmpA strncasecmp
/* #else -- use wxWidgets implementation */
#else /* Unicode filenames */
/* special case: these functions are missing under Win9x with Unicows so we
have to implement them ourselves */
- #if wxUSE_UNICODE_MSLU
+ #if wxUSE_UNICODE_MSLU || defined(__STRICT_ANSI__)
WXDLLIMPEXP_BASE FILE* wxMSLU__wfopen(const wchar_t *name, const wchar_t *mode);
WXDLLIMPEXP_BASE FILE* wxMSLU__wfreopen(const wchar_t *name, const wchar_t *mode, FILE *stream);
WXDLLIMPEXP_BASE int wxMSLU__wrename(const wchar_t *oldname, const wchar_t *newname);
#define wxCRT_AtolW watol
/* else: use ANSI versions */
#endif
-#elif defined(wxHAVE_TCHAR_SUPPORT)
+#elif defined(wxHAVE_TCHAR_SUPPORT) && !defined(__STRICT_ANSI__)
#define wxCRT_AtoiW _wtoi
#define wxCRT_AtolW _wtol
/* _wtof doesn't exist */