Update of /cvsroot/python/python/dist/src/Objects In directory usw-pr-cvs1:/tmp/cvs-serv15221/221/Objects Modified Files: Tag: release22-maint fileobject.c Log Message: SF bug 538827: Python open w/ MSVC6: bad error msgs. open_the_file: Some (not all) flavors of Windows set errno to EINVAL when passed a syntactically invalid filename. Python turned that into an incomprehensible complaint about the mode string. Fixed by special-casing MSVC. Index: fileobject.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Objects/fileobject.c,v retrieving revision 2.141.6.3 retrieving revision 2.141.6.4 diff -C2 -d -r2.141.6.3 -r2.141.6.4 *** fileobject.c 17 Mar 2002 15:55:50 -0000 2.141.6.3 --- fileobject.c 8 Apr 2002 04:19:50 -0000 2.141.6.4 *************** *** 129,134 **** } #endif if (errno == EINVAL) ! PyErr_Format(PyExc_IOError, "invalid argument: %s", mode); else --- 129,147 ---- } #endif + #ifdef _MSC_VER + /* MSVC 6 (Microsoft) leaves errno at 0 for bad mode strings, + * across all Windows flavors. When it sets EINVAL varies + * across Windows flavors, the exact conditions aren't + * documented, and the answer lies in the OS's implementation + * of Win32's CreateFile function (whose source is secret). + * Seems the best we can do is map EINVAL to ENOENT. + */ + if (errno == 0) /* bad mode string */ + errno = EINVAL; + else if (errno == EINVAL) /* unknown, but not a mode string */ + errno = ENOENT; + #endif if (errno == EINVAL) ! PyErr_Format(PyExc_IOError, "invalid mode: %s", mode); else
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4