[Python-checkins] cpython: Issue #23753: Move _Py_wstat() from Python/fileutils.c to Modules/getpath.c

victor.stinner python-checkins at python.org
Tue Mar 24 12:19:27 CET 2015


https://hg.python.org/cpython/rev/ad5521dd7b80
changeset:   95155:ad5521dd7b80
user:        Victor Stinner <victor.stinner at gmail.com>
date:        Tue Mar 24 12:16:28 2015 +0100
summary:
  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.

files:
  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
--- a/Include/fileutils.h
+++ b/Include/fileutils.h
@@ -15,10 +15,6 @@
     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
--- a/Modules/getpath.c
+++ b/Modules/getpath.c
@@ -131,6 +131,23 @@
 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
--- a/Python/fileutils.c
+++ b/Python/fileutils.c
@@ -520,23 +520,6 @@
 }
 
 
-/* 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 */
 

-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list