From b306d7594ff0ed5ba666dbb26491a269abfbc9d7 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 7 Oct 2010 22:09:40 +0000 Subject: Fix fileutils for Windows * Don't define _Py_wstat() on Windows, Windows has its own _wstat() function with a different API (the stat buffer has another type) * Include windows.h --- Include/fileutils.h | 2 +- Python/fileutils.c | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Include/fileutils.h b/Include/fileutils.h index 2971d9d..9b2d34d 100644 --- a/Include/fileutils.h +++ b/Include/fileutils.h @@ -11,7 +11,7 @@ PyAPI_FUNC(wchar_t *) _Py_char2wchar( PyAPI_FUNC(char*) _Py_wchar2char( const wchar_t *text); -#if defined(MS_WINDOWS) || defined(HAVE_STAT) +#if defined(HAVE_STAT) && !defined(MS_WINDOWS) PyAPI_FUNC(int) _Py_wstat( const wchar_t* path, struct stat *buf); diff --git a/Python/fileutils.c b/Python/fileutils.c index 0e87860..5d01867 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -1,4 +1,7 @@ #include "Python.h" +#ifdef MS_WINDOWS +# include +#endif #ifdef HAVE_STAT @@ -183,10 +186,6 @@ _Py_wchar2char(const wchar_t *text) return result; } -#if defined(MS_WINDOWS) || defined(HAVE_STAT) -int -_Py_wstat(const wchar_t* path, struct stat *buf) -{ /* In principle, this should use HAVE__WSTAT, and _wstat should be detected by autoconf. However, no current POSIX system provides that function, so testing for @@ -194,9 +193,10 @@ _Py_wstat(const wchar_t* path, struct stat *buf) Not sure whether the MS_WINDOWS guards are necessary: perhaps for cygwin/mingw builds? */ -#ifdef MS_WINDOWS - return _wstat(path, buf); -#else +#if defined(HAVE_STAT) && !defined(MS_WINDOWS) +int +_Py_wstat(const wchar_t* path, struct stat *buf) +{ int err; char *fname; fname = _Py_wchar2char(path); @@ -207,7 +207,6 @@ _Py_wstat(const wchar_t* path, struct stat *buf) err = stat(fname, buf); PyMem_Free(fname); return err; -#endif } #endif -- cgit v0.12