[Python-checkins] r43586 - python/trunk/Modules/posixmodule.c
georg.brandl
python-checkins at python.org
Mon Apr 3 14:26:27 CEST 2006
Author: georg.brandl
Date: Mon Apr 3 14:26:26 2006
New Revision: 43586
Modified:
python/trunk/Modules/posixmodule.c
Log:
Bug #1451503: allow unicode filenames in os.startfile().
Modified: python/trunk/Modules/posixmodule.c
==============================================================================
--- python/trunk/Modules/posixmodule.c (original)
+++ python/trunk/Modules/posixmodule.c Mon Apr 3 14:26:26 2006
@@ -7467,6 +7467,41 @@
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))
More information about the Python-checkins
mailing list