Bug #1451503: allow unicode filenames in os.startfile().

This commit is contained in:
Georg Brandl 2006-04-03 12:26:26 +00:00
parent 59c3acc3cd
commit ad89dc8794
1 changed files with 35 additions and 0 deletions

View File

@ -7467,6 +7467,41 @@ win32_startfile(PyObject *self, PyObject *args)
char *filepath;
char *operation = NULL;
HINSTANCE rc;
#ifdef Py_WIN_WIDE_FILENAMES
if (unicode_file_names()) {
PyObject *unipath, *woperation;
if (!PyArg_ParseTuple(args, "U|s:startfile",
&unipath, &operation)) {
PyErr_Clear();
goto normal;
}
woperation = PyUnicode_DecodeASCII(operation,
strlen(operation), NULL);
if (!woperation) {
PyErr_Clear();
goto normal;
}
Py_BEGIN_ALLOW_THREADS
rc = ShellExecuteW((HWND)0, operation,
PyUnicode_AS_UNICODE(unipath),
PyUnicode_AS_UNICODE(woperation),
NULL, NULL, SW_SHOWNORMAL);
Py_END_ALLOW_THREADS
Py_DECREF(woperation);
if (rc <= (HINSTANCE)32) {
PyObject *errval = win32_error_unicode("startfile",
PyUnicode_AS_UNICODE(unipath));
return errval;
}
Py_INCREF(Py_None);
return Py_None;
}
#endif
normal:
if (!PyArg_ParseTuple(args, "et|s:startfile",
Py_FileSystemDefaultEncoding, &filepath,
&operation))