Eryk Sun added the comment:
The NT runtime API RtlDosPathNameToRelativeNtPathName_U_WithStatus returns an
informative error code, STATUS_NAME_TOO_LONG (0xC0000106). This gets translated
to the less information but still useful Windows code ERROR_PATH_NOT_FOUND
(0x0003). The CRT error table reduces this to ENOENT, so it's not readily
distinguishable from ERROR_FILE_NOT_FOUND (0x0002).
The associated Windows error is still available via GetLastError when wopen
returns:
ucrtbase!wopen+0x22:
00007ffb`222b5702 c3 ret
0:000> ?? @$teb->LastErrorValue
unsigned long 3
Currently io.FileIO calls PyErr_SetFromErrnoWithFilenameObjects. It could check
for ERROR_PATH_NOT_FOUND when errno is ENOENT. In this case it could use a
custom error message such as "No such path or path exceeds the maximum allowed
length".
----------
nosy: +eryksun
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue27729>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com