Commit dd8059f0 authored by Amaury Forgeot d'Arc's avatar Amaury Forgeot d'Arc

#3626: On cygwin, starting "python z" would not display any error message:

printf("%ls") fails if the wide string is 1 char long :-(
parent e329d1af
......@@ -15,10 +15,13 @@ What's New in Python 3.0 beta 5
Core and Builtins
-----------------
- Issue #3626: On cygwin, starting python with a non-existent script name
would not display anything if the file name is only 1 character long.
- Issue #4176: Fixed a crash when pickling an object which ``__reduce__``
method does not return iterators for the 4th and 5th items.
- Issue 3723: Fixed initialization of subinterpreters.
- Issue #3723: Fixed initialization of subinterpreters.
- Issue #4213: The file system encoding is now normalized by the
codec subsystem, for example UTF-8 is turned into utf-8.
......
......@@ -564,8 +564,17 @@ Py_Main(int argc, wchar_t **argv)
if (sts==-1 && filename!=NULL) {
if ((fp = _wfopen(filename, L"r")) == NULL) {
fprintf(stderr, "%ls: can't open file '%ls': [Errno %d] %s\n",
argv[0], filename, errno, strerror(errno));
char cfilename[PATH_MAX];
size_t r = wcstombs(cfilename, filename, PATH_MAX);
if (r == PATH_MAX)
/* cfilename is not null-terminated;
* forcefully null-terminating it
* might break the shift state */
strcpy(cfilename, "<file name too long>");
if (r == ((size_t)-1))
strcpy(cfilename, "<unprintable file name>");
fprintf(stderr, "%ls: can't open file '%s': [Errno %d] %s\n",
argv[0], cfilename, errno, strerror(errno));
return 2;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment