[Python-Dev] "DOS" error codes, WindowsError, and errno

"Martin v. Löwis" martin at v.loewis.de
Tue Jan 31 01:50:46 CET 2006


I have a new implementation of stat/fstat/wstat which directly uses
Win32 API, rather than using msvcrt. This works fine so far, except
that error handling turns out to be tricky.

mscvcrt maps errors (GetLastError()) into errno.h values, and also
preserves the original error code in _doserrno. Currently, stat()
will raise OSError, with errno set to the errno.h value.

Because the Win32 error codes are much more fine-grained, this
conversion loses information. Python raises WindowsError in
some cases (e.g. os.listdir); WindowsError inherits from OSError,
but the errno attribute now must be interpreted as a Win32 error.
This is unfortunate, because the values overlap, and somebody
handling OSError might confuse the error codes for errno.h
(msvcrt) values.

So what should I do in the new stat implementation? Try to map
error codes also? Raise WindowsErrors instead? Do something else
entirely?

Comments appreciated.

Regards,
Martin


More information about the Python-Dev mailing list