diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index a4233c9..b55fb4e 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -112,7 +112,7 @@
 	  ? (PyObject*)((PyInstanceObject*)(x))->in_class		\
 	  : (PyObject*)((x)->ob_type)))
 
-	
+
 /* Predefined exceptions */
 
 PyAPI_DATA(PyObject *) PyExc_BaseException;
@@ -186,10 +186,10 @@
 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilenameObject(
 	PyObject *, PyObject *);
 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithFilename(PyObject *, char *);
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 PyAPI_FUNC(PyObject *) PyErr_SetFromErrnoWithUnicodeFilename(
 	PyObject *, Py_UNICODE *);
-#endif /* Py_WIN_WIDE_FILENAMES */
+#endif /* MS_WINDOWS */
 
 PyAPI_FUNC(PyObject *) PyErr_Format(PyObject *, const char *, ...)
 			Py_GCC_ATTRIBUTE((format(printf, 2, 3)));
@@ -199,19 +199,15 @@
 	int, const char *);
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilename(
 	int, const char *);
-#ifdef Py_WIN_WIDE_FILENAMES
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithUnicodeFilename(
 	int, const Py_UNICODE *);
-#endif /* Py_WIN_WIDE_FILENAMES */
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErr(int);
 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilenameObject(
 	PyObject *,int, PyObject *);
 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
 	PyObject *,int, const char *);
-#ifdef Py_WIN_WIDE_FILENAMES
 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErrWithUnicodeFilename(
 	PyObject *,int, const Py_UNICODE *);
-#endif /* Py_WIN_WIDE_FILENAMES */
 PyAPI_FUNC(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
 #endif /* MS_WINDOWS */
 
diff --git a/Modules/_fileio.c b/Modules/_fileio.c
index 409abf6..efe0855 100644
--- a/Modules/_fileio.c
+++ b/Modules/_fileio.c
@@ -178,7 +178,7 @@
 	else {
 		PyErr_Clear();
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	    if (GetVersion() < 0x80000000) {
 		/* On NT, so wide API available */
 		PyObject *po;
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 511b385..c6481ac 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -523,13 +523,13 @@
 	return PyErr_SetFromErrnoWithFilename(PyExc_OSError, name);
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 static PyObject *
 posix_error_with_unicode_filename(Py_UNICODE* name)
 {
 	return PyErr_SetFromErrnoWithUnicodeFilename(PyExc_OSError, name);
 }
-#endif /* Py_WIN_WIDE_FILENAMES */
+#endif /* MS_WINDOWS */
 
 
 static PyObject *
@@ -556,7 +556,6 @@
 		return PyErr_SetFromWindowsErr(errno);
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
 static PyObject *
 win32_error_unicode(char* function, Py_UNICODE* filename)
 {
@@ -585,9 +584,7 @@
 	return (*param) != NULL;
 }
 
-#endif /* Py_WIN_WIDE_FILENAMES */
-
-#endif
+#endif /* MS_WINDOWS */
 
 #if defined(PYOS_OS2)
 /**********************************************************************
@@ -686,7 +683,7 @@
 	return Py_None;
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 static int
 unicode_file_names(void)
 {
@@ -741,7 +738,7 @@
 	return Py_None;
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 static PyObject*
 win32_1str(PyObject* args, char* func, 
 	   char* format, BOOL (__stdcall *funcA)(LPCSTR), 
@@ -1497,7 +1494,6 @@
 	#undef ISSLASH
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
 static BOOL
 IsUNCRootW(Py_UNICODE *path, int pathlen)
 {
@@ -1520,7 +1516,6 @@
 
 	#undef ISSLASH
 }
-#endif /* Py_WIN_WIDE_FILENAMES */
 #endif /* MS_WINDOWS */
 
 static PyObject *
@@ -1540,7 +1535,7 @@
 	int res;
 	PyObject *result;
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	/* If on wide-character-capable OS see if argument
 	   is Unicode and if so use wide API.  */
 	if (unicode_file_names()) {
@@ -1603,7 +1598,7 @@
 	char *path;
 	int mode;
 	
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	DWORD attr;
 	if (unicode_file_names()) {
 		PyUnicodeObject *po;
@@ -1636,7 +1631,7 @@
 	return PyBool_FromLong(!(mode & 2) 
 	                       || !(attr & FILE_ATTRIBUTE_READONLY)
 			       || (attr & FILE_ATTRIBUTE_DIRECTORY));
-#else
+#else /* MS_WINDOWS */
 	int res;
 	if (!PyArg_ParseTuple(args, "eti:access", 
 			      Py_FileSystemDefaultEncoding, &path, &mode))
@@ -1646,7 +1641,7 @@
 	Py_END_ALLOW_THREADS
 	PyMem_Free(path);
 	return PyBool_FromLong(res == 0);
-#endif
+#endif /* MS_WINDOWS */
 }
 
 #ifndef F_OK
@@ -1757,7 +1752,7 @@
 	char *path = NULL;
 	int i;
 	int res;
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	DWORD attr;
 	if (unicode_file_names()) {
 		PyUnicodeObject *po;
@@ -1807,7 +1802,7 @@
 	PyMem_Free(path);
 	Py_INCREF(Py_None);
 	return Py_None;
-#else /* Py_WIN_WIDE_FILENAMES */
+#else /* MS_WINDOWS */
 	if (!PyArg_ParseTuple(args, "eti:chmod", Py_FileSystemDefaultEncoding,
 	                      &path, &i))
 		return NULL;
@@ -2092,7 +2087,7 @@
 	char buf[1026];
 	char *res;
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	DWORD len;
 	if (unicode_file_names()) {
 		wchar_t wbuf[1026];
@@ -2121,7 +2116,7 @@
 		if (wbuf2 != wbuf) free(wbuf2);
 		return resobj;
 	}
-#endif
+#endif /* MS_WINDOWS */
 
 	Py_BEGIN_ALLOW_THREADS
 #if defined(PYOS_OS2) && defined(PYCC_GCC)
@@ -2134,8 +2129,8 @@
 		return posix_error();
 	return PyUnicode_Decode(buf, strlen(buf), Py_FileSystemDefaultEncoding,"strict");
 }
-#endif
-#endif
+#endif /* Py_USING_UNICODE */
+#endif /* HAVE_GETCWD */
 
 
 #ifdef HAVE_LINK
@@ -2175,7 +2170,6 @@
 	char *bufptr = namebuf;
 	Py_ssize_t len = sizeof(namebuf)-5; /* only claim to have space for MAX_PATH */
 
-#ifdef Py_WIN_WIDE_FILENAMES
 	/* If on wide-character-capable OS see if argument
 	   is Unicode and if so use wide API.  */
 	if (unicode_file_names()) {
@@ -2258,7 +2252,6 @@
 		   are also valid. */
 		PyErr_Clear();
 	}
-#endif
 
 	if (!PyArg_ParseTuple(args, "et#:listdir",
 	                      Py_FileSystemDefaultEncoding, &bufptr, &len))
@@ -2482,7 +2475,7 @@
 	Py_ssize_t insize = sizeof(inbuf);
 	char outbuf[MAX_PATH*2];
 	char *temp;
-#ifdef Py_WIN_WIDE_FILENAMES
+
 	if (unicode_file_names()) {
 		PyUnicodeObject *po;
 		if (PyArg_ParseTuple(args, "U|:_getfullpathname", &po)) {
@@ -2512,7 +2505,7 @@
 		   are also valid. */
 		PyErr_Clear();
 	}
-#endif
+
 	if (!PyArg_ParseTuple (args, "et#:_getfullpathname",
 	                       Py_FileSystemDefaultEncoding, &inbufp,
 	                       &insize))
@@ -2539,7 +2532,7 @@
 	char *path = NULL;
 	int mode = 0777;
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	if (unicode_file_names()) {
 		PyUnicodeObject *po;
 		if (PyArg_ParseTuple(args, "U|i:mkdir", &po, &mode)) {
@@ -2573,7 +2566,7 @@
 	PyMem_Free(path);
 	Py_INCREF(Py_None);
 	return Py_None;
-#else
+#else /* MS_WINDOWS */
 
 	if (!PyArg_ParseTuple(args, "et|i:mkdir",
 	                      Py_FileSystemDefaultEncoding, &path, &mode))
@@ -2590,7 +2583,7 @@
 	PyMem_Free(path);
 	Py_INCREF(Py_None);
 	return Py_None;
-#endif
+#endif /* MS_WINDOWS */
 }
 
 
@@ -2833,7 +2826,7 @@
 static PyObject *
 posix_utime(PyObject *self, PyObject *args)
 {
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	PyObject *arg;
 	PyUnicodeObject *obwpath;
 	wchar_t *wpath = NULL;
@@ -2911,7 +2904,7 @@
 done:
 	CloseHandle(hFile);
 	return result;
-#else /* Py_WIN_WIDE_FILENAMES */
+#else /* MS_WINDOWS */
 
 	char *path = NULL;
 	long atime, mtime, ausec, musec;
@@ -2985,7 +2978,7 @@
 #undef UTIME_ARG
 #undef ATIME
 #undef MTIME
-#endif /* Py_WIN_WIDE_FILENAMES */
+#endif /* MS_WINDOWS */
 }
 
 
@@ -8273,7 +8266,7 @@
 	char *filepath;
 	char *operation = NULL;
 	HINSTANCE rc;
-#ifdef Py_WIN_WIDE_FILENAMES
+
 	if (unicode_file_names()) {
 		PyObject *unipath, *woperation = NULL;
 		if (!PyArg_ParseTuple(args, "U|s:startfile",
@@ -8308,7 +8301,6 @@
 		Py_INCREF(Py_None);
 		return Py_None;
 	}
-#endif
 
 normal:
 	if (!PyArg_ParseTuple(args, "et|s:startfile", 
@@ -8328,7 +8320,7 @@
 	Py_INCREF(Py_None);
 	return Py_None;
 }
-#endif
+#endif /* MS_WINDOWS */
 
 #ifdef HAVE_GETLOADAVG
 PyDoc_STRVAR(posix_getloadavg__doc__,
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 77724d4..ff30745 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -2254,7 +2254,7 @@
 		Py_DECREF(closeresult);
 	}
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 	if (GetVersion() < 0x80000000) {    /* On NT, so wide API available */
 		PyObject *po;
 		if (PyArg_ParseTupleAndKeywords(args, kwds, "U|si:file",
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 77f80a8..55424f2 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -565,10 +565,6 @@
 /* This is enough for unicodeobject.h to do the "right thing" on Windows. */
 #define Py_UNICODE_SIZE 2
 
-/* Define to indicate that the Python Unicode representation can be passed
-   as-is to Win32 Wide API.  */
-#define Py_WIN_WIDE_FILENAMES
-
 /* Use Python's own small-block memory-allocator. */
 #define WITH_PYMALLOC 1
 
diff --git a/Python/errors.c b/Python/errors.c
index e0ff90f..24dafca 100644
--- a/Python/errors.c
+++ b/Python/errors.c
@@ -379,7 +379,7 @@
 	return result;
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
+#ifdef MS_WINDOWS
 PyObject *
 PyErr_SetFromErrnoWithUnicodeFilename(PyObject *exc, Py_UNICODE *filename)
 {
@@ -390,7 +390,7 @@
 	Py_XDECREF(name);
 	return result;
 }
-#endif /* Py_WIN_WIDE_FILENAMES */
+#endif /* MS_WINDOWS */
 
 PyObject *
 PyErr_SetFromErrno(PyObject *exc)
@@ -460,7 +460,6 @@
 	return ret;
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
 PyObject *PyErr_SetExcFromWindowsErrWithUnicodeFilename(
 	PyObject *exc,
 	int ierr,
@@ -475,7 +474,6 @@
 	Py_XDECREF(name);
 	return ret;
 }
-#endif /* Py_WIN_WIDE_FILENAMES */
 
 PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr)
 {
@@ -499,7 +497,6 @@
 	return result;
 }
 
-#ifdef Py_WIN_WIDE_FILENAMES
 PyObject *PyErr_SetFromWindowsErrWithUnicodeFilename(
 	int ierr,
 	const Py_UNICODE *filename)
@@ -513,7 +510,6 @@
 	Py_XDECREF(name);
 	return result;
 }
-#endif /* Py_WIN_WIDE_FILENAMES */
 #endif /* MS_WINDOWS */
 
 void
