Patch #683592: unicode support for os.listdir()

os.listdir() may now return unicode strings on platforms that set
Py_FileSystemDefaultEncoding.
This commit is contained in:
Just van Rossum 2003-02-25 21:42:15 +00:00
parent 4983331385
commit 46c9784f68
2 changed files with 32 additions and 1 deletions

View File

@ -25,7 +25,11 @@ Extension modules
Library
-------
TBD
- os.listdir() now returns Unicode strings on platforms that set
Py_FileSystemDefaultEncoding, for file names that are not representable
in ASCII. (This currently only affects MacOS X; on Windows versions
with wide file name support os.listdir() already returned Unicode
strings.)
Tools/Demos
-----------
@ -61,6 +65,9 @@ TBD
Mac
---
- os.listdir() now may return Unicode strings on MacOS X. See the general
news item under "Library".
- A new method MacOS.WMAvailable() returns true if it is safe to access
the window manager, false otherwise.

View File

@ -1795,6 +1795,30 @@ posix_listdir(PyObject *self, PyObject *args)
d = NULL;
break;
}
#ifdef Py_USING_UNICODE
if (Py_FileSystemDefaultEncoding != NULL) {
PyObject *w;
w = PyUnicode_FromEncodedObject(v,
Py_FileSystemDefaultEncoding,
"strict");
Py_DECREF(v);
v = w;
if (v == NULL) {
Py_DECREF(d);
d = NULL;
break;
}
/* attempt to convert to ASCII */
w = PyUnicode_AsASCIIString(v);
if (w != NULL) {
Py_DECREF(v);
v = w;
}
else
PyErr_Clear();
}
#endif
if (PyList_Append(d, v) != 0) {
Py_DECREF(v);
Py_DECREF(d);