diff options
-rw-r--r-- | Lib/test/test_pep277.py | 1 | ||||
-rw-r--r-- | Modules/posixmodule.c | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/Lib/test/test_pep277.py b/Lib/test/test_pep277.py index 744f4aa..b48317f 100644 --- a/Lib/test/test_pep277.py +++ b/Lib/test/test_pep277.py @@ -100,6 +100,7 @@ class UnicodeFileTests(unittest.TestCase): f.write((filename + '\n').encode("utf-8")) f.close() print repr(filename) + os.access(filename,os.R_OK) os.remove(filename) os.chdir(oldwd) os.rmdir(dirname) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 40526a4..f5b15d9 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -1027,6 +1027,22 @@ posix_access(PyObject *self, PyObject *args) int mode; int res; +#ifdef Py_WIN_WIDE_FILENAMES + if (unicode_file_names()) { + PyUnicodeObject *po; + if (PyArg_ParseTuple(args, "Ui:access", &po, &mode)) { + Py_BEGIN_ALLOW_THREADS + /* PyUnicode_AS_UNICODE OK without thread lock as + it is a simple dereference. */ + res = _waccess(PyUnicode_AS_UNICODE(po), mode); + Py_END_ALLOW_THREADS + return(PyBool_FromLong(res == 0)); + } + /* Drop the argument parsing error as narrow strings + are also valid. */ + PyErr_Clear(); + } +#endif if (!PyArg_ParseTuple(args, "si:access", &path, &mode)) return NULL; Py_BEGIN_ALLOW_THREADS |