diff -r 20dc8d6430eb Modules/main.c --- a/Modules/main.c Mon Feb 10 19:17:46 2014 +0100 +++ b/Modules/main.c Tue Feb 11 07:47:10 2014 -0500 @@ -508,7 +508,7 @@ (p = Py_GETENV("PYTHONNOUSERSITE")) && *p != '\0') Py_NoUserSiteDirectory = 1; -#ifdef MS_WINDOWS +#ifdef _MSC_VER if (!Py_IgnoreEnvironmentFlag && (wp = _wgetenv(L"PYTHONWARNINGS")) && *wp != L'\0') { wchar_t *buf, *warning; diff -r 3e62c6c3977e PC/getpathp.c --- a/PC/getpathp.c Sun Feb 09 06:55:58 2014 -0800 +++ b/PC/getpathp.c Mon Feb 10 20:33:04 2014 -0500 @@ -91,6 +91,22 @@ #define LANDMARK L"lib\\os.py" #endif +/* Open Watcom provides a POSIX-like wcstok() function, accepting three + * parameters. Microsoft provides an equivalent via the wcstok_s() + * function, which, incidently, is not compatible with Open Watcom's + * wcstok_s() function. If it's neither of the two, default to a simple + * two-argument version. Right here, we can define which to use: + */ +#ifdef _MSC_VER +#define WCSTOK(x,y,z) wcstok_s(x,y,z) +#else +#ifdef __WATCOMC__ +#define WCSTOK(x,y,z) wcstok(x,y,z) +#else +#define WCSTOK(x,y,z) wcstok(x,y) +#endif /* __WATCOMC__ */ +#endif /* _MSC_VER */ + static wchar_t prefix[MAXPATHLEN+1]; static wchar_t progpath[MAXPATHLEN+1]; static wchar_t dllpath[MAXPATHLEN+1]; @@ -451,11 +467,12 @@ tmpbuffer, MAXPATHLEN * 2); Py_DECREF(decoded); if (k >= 0) { - wchar_t * tok = wcstok(tmpbuffer, L" \t\r\n"); + wchar_t *state; + wchar_t * tok = WCSTOK(tmpbuffer, L" \t\r\n", &state); if ((tok != NULL) && !wcscmp(tok, key)) { - tok = wcstok(NULL, L" \t"); + tok = WCSTOK(NULL, L" \t", &state); if ((tok != NULL) && !wcscmp(tok, L"=")) { - tok = wcstok(NULL, L"\r\n"); + tok = WCSTOK(NULL, L"\r\n", &state); if (tok != NULL) { wcsncpy(value, tok, MAXPATHLEN); result = 1;