From 91afbb60885d5904dc6cb4d063ae33454507bf71 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 24 Mar 2015 12:16:28 +0100 Subject: [PATCH] Issue #23753: Move _Py_wstat() from Python/fileutils.c to Modules/getpath.c I expected more users of _Py_wstat(), but in practice it's only used by Modules/getpath.c. Move the function because it's not needed on Windows. Windows uses PC/getpathp.c which uses the Win32 API (ex: GetFileAttributesW()) not the POSIX API. --- Include/fileutils.h | 4 ---- Modules/getpath.c | 17 +++++++++++++++++ Python/fileutils.c | 17 ----------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/Include/fileutils.h b/Include/fileutils.h index 577ad88736e..93a9297c87a 100644 --- a/Include/fileutils.h +++ b/Include/fileutils.h @@ -15,10 +15,6 @@ PyAPI_FUNC(char*) Py_EncodeLocale( const wchar_t *text, size_t *error_pos); -PyAPI_FUNC(int) _Py_wstat( - const wchar_t* path, - struct stat *buf); - #ifndef Py_LIMITED_API #ifdef MS_WINDOWS diff --git a/Modules/getpath.c b/Modules/getpath.c index 3564d72afb8..429bef34899 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -131,6 +131,23 @@ static wchar_t exec_prefix[MAXPATHLEN+1]; static wchar_t progpath[MAXPATHLEN+1]; static wchar_t *module_search_path = NULL; +/* Get file status. Encode the path to the locale encoding. */ + +static int +_Py_wstat(const wchar_t* path, struct stat *buf) +{ + int err; + char *fname; + fname = Py_EncodeLocale(path, NULL); + if (fname == NULL) { + errno = EINVAL; + return -1; + } + err = stat(fname, buf); + PyMem_Free(fname); + return err; +} + static void reduce(wchar_t *dir) { diff --git a/Python/fileutils.c b/Python/fileutils.c index 63c25714923..e6d3154490f 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -520,23 +520,6 @@ Py_EncodeLocale(const wchar_t *text, size_t *error_pos) } -/* Get file status. Encode the path to the locale encoding. */ -int -_Py_wstat(const wchar_t* path, struct stat *buf) -{ - int err; - char *fname; - fname = Py_EncodeLocale(path, NULL); - if (fname == NULL) { - errno = EINVAL; - return -1; - } - err = stat(fname, buf); - PyMem_Free(fname); - return err; -} - - #ifdef MS_WINDOWS static __int64 secs_between_epochs = 11644473600; /* Seconds between 1.1.1601 and 1.1.1970 */