summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorThomas Heller <theller@ctypes.org>2002-07-29 14:27:41 (GMT)
committerThomas Heller <theller@ctypes.org>2002-07-29 14:27:41 (GMT)
commit085358a3e208b4825dafa829798cfc125f56a2e4 (patch)
treeace1ac831a2e29283383fd65071c34805dd23e07 /Python
parentb9e0764d8bc610d90d5aed9d8a97fe7643a2eeec (diff)
downloadcpython-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.c20
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 */