]> granicus.if.org Git - python/commitdiff
Patch #790000: Allow os.access to handle Unicode file name.
authorMartin v. Löwis <martin@v.loewis.de>
Fri, 12 Sep 2003 16:25:38 +0000 (16:25 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Fri, 12 Sep 2003 16:25:38 +0000 (16:25 +0000)
Lib/test/test_pep277.py
Modules/posixmodule.c

index 744f4aaba1c8f72e91107d36c30c929c537043b1..b48317f6d6cb04bbbb073978391d8d1d44b70884 100644 (file)
@@ -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)
index 40526a465ed330046e237fbbc5933e461b2641bc..f5b15d9cfa20a394bada1c72babd62f91715cdf3 100644 (file)
@@ -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