mirror of
https://github.com/python/cpython.git
synced 2024-11-27 11:55:13 +08:00
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.
This commit is contained in:
parent
10dc48497e
commit
91afbb6088
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user