mirror of https://github.com/python/cpython
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:
parent
b9e0764d8b
commit
085358a3e2
|
@ -208,6 +208,14 @@ for each thread.
|
|||
Availability: Windows.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{PyObject*}{PyErr_SetExcFromWindowsErr}{PyObject *type,
|
||||
int ierr}
|
||||
Similar to \cfunction{PyErr_SetFromWindowsErr()}, with an additional
|
||||
parameter specifying the exception type to be raised.
|
||||
Availability: Windows.
|
||||
\versionadded{2.3}
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{PyObject*}{PyErr_SetFromWindowsErrWithFilename}{int ierr,
|
||||
char *filename}
|
||||
Similar to \cfunction{PyErr_SetFromWindowsErr()}, with the
|
||||
|
@ -217,6 +225,14 @@ for each thread.
|
|||
Availability: Windows.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{PyObject*}{PyErr_SetExcFromWindowsErrWithFilename}
|
||||
{PyObject *type, int ierr, char *filename}
|
||||
Similar to \cfunction{PyErr_SetFromWindowsErrWithFilename()}, with
|
||||
an additional parameter specifying the exception type to be raised.
|
||||
Availability: Windows.
|
||||
\versionadded{2.3}
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{void}{PyErr_BadInternalCall}{}
|
||||
This is a shorthand for \samp{PyErr_SetString(PyExc_TypeError,
|
||||
\var{message})}, where \var{message} indicates that an internal
|
||||
|
|
|
@ -83,6 +83,9 @@ extern DL_IMPORT(PyObject *) PyErr_Format(PyObject *, const char *, ...)
|
|||
#ifdef MS_WINDOWS
|
||||
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char *);
|
||||
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
|
||||
extern DL_IMPORT(PyObject *) PyErr_SetExcFromWindowsErrWithFilename(
|
||||
PyObject *,int, const char *);
|
||||
extern DL_IMPORT(PyObject *) PyErr_SetExcFromWindowsErr(PyObject *, int);
|
||||
#endif
|
||||
|
||||
/* Export the old function so that the existing API remains available: */
|
||||
|
|
|
@ -380,6 +380,12 @@ Build
|
|||
|
||||
C API
|
||||
|
||||
- New functions PyErr_SetExcFromWindowsErr() and
|
||||
PyErr_SetExcFromWindowsErrWithFilename(). Similar to
|
||||
PyErr_SetFromWindowsErrWithFilename() and
|
||||
PyErr_SetFromWindowsErr(), but they allow to specify
|
||||
the exception type to raise. Available on Windows.
|
||||
|
||||
- Py_FatalError() is now declared as taking a const char* argument. It
|
||||
was previously declared without const. This should not affect working
|
||||
code.
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
Loading…
Reference in New Issue