diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2003-09-12 16:25:38 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2003-09-12 16:25:38 (GMT) |
commit | 1b699a5f00b427d95772349726d1ce1ab92718a7 (patch) | |
tree | b65465f23b2997b7633c3064c43e377e60ff859e | |
parent | deadbf50e4cc3c541e706d5bf1aa73624bed36a6 (diff) | |
download | cpython-1b699a5f00b427d95772349726d1ce1ab92718a7.zip cpython-1b699a5f00b427d95772349726d1ce1ab92718a7.tar.gz cpython-1b699a5f00b427d95772349726d1ce1ab92718a7.tar.bz2 |
Patch #790000: Allow os.access to handle Unicode file name.
-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 |