diff options
author | Thomas Heller <theller@ctypes.org> | 2002-07-29 14:27:41 (GMT) |
---|---|---|
committer | Thomas Heller <theller@ctypes.org> | 2002-07-29 14:27:41 (GMT) |
commit | 085358a3e208b4825dafa829798cfc125f56a2e4 (patch) | |
tree | ace1ac831a2e29283383fd65071c34805dd23e07 /Python | |
parent | b9e0764d8bc610d90d5aed9d8a97fe7643a2eeec (diff) | |
download | cpython-085358a3e208b4825dafa829798cfc125f56a2e4.zip cpython-085358a3e208b4825dafa829798cfc125f56a2e4.tar.gz cpython-085358a3e208b4825dafa829798cfc125f56a2e4.tar.bz2 |
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.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/errors.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/Python/errors.c b/Python/errors.c index f744ad4..61d1df0 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -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 */ |