New functions for extension writers on Windows:

PyErr_SetExcFromWindowsErr(), PyErr_SetExcFromWindowsErrWithFilename().

Similar to PyErr_SetFromWindowsErrWithFilename() and
PyErr_SetFromWindowsErr(), but they allow to specify
the exception type to raise. Available on Windows.

See SF patch #576458.
This commit is contained in:
Thomas Heller 2002-07-29 14:27:41 +00:00
parent b9e0764d8b
commit 085358a3e2
4 changed files with 42 additions and 3 deletions

View file

@ -337,7 +337,8 @@ PyErr_SetFromErrno(PyObject *exc)
#ifdef MS_WINDOWS
/* Windows specific error code handling */
PyObject *PyErr_SetFromWindowsErrWithFilename(
PyObject *PyErr_SetExcFromWindowsErrWithFilename(
PyObject *exc,
int ierr,
const char *filename)
{
@ -366,16 +367,29 @@ PyObject *PyErr_SetFromWindowsErrWithFilename(
else
v = Py_BuildValue("(is)", err, s);
if (v != NULL) {
PyErr_SetObject(PyExc_WindowsError, v);
PyErr_SetObject(exc, v);
Py_DECREF(v);
}
LocalFree(s);
return NULL;
}
PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr)
{
return PyErr_SetExcFromWindowsErrWithFilename(exc, ierr, NULL);
}
PyObject *PyErr_SetFromWindowsErr(int ierr)
{
return PyErr_SetFromWindowsErrWithFilename(ierr, NULL);
return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError,
ierr, NULL);
}
PyObject *PyErr_SetFromWindowsErrWithFilename(
int ierr,
const char *filename)
{
return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError,
ierr, filename);
}
#endif /* MS_WINDOWS */