an exception from errno, with a supplied filename (primarily used by
IOError and OSError). If class exceptions are used then the exception
is instantiated with a 3-tuple: (errno, strerror, filename). For
backwards compatibility reasons, if string exceptions are used,
filename is ignored.
PyErr_SetFromErrno(): Implement in terms of
PyErr_SetFromErrnoWithFilename().
}
PyObject *
-PyErr_SetFromErrno(exc)
+PyErr_SetFromErrnoWithFilename(exc, filename)
PyObject *exc;
+ char *filename;
{
PyObject *v;
int i = errno;
if (i == EINTR && PyErr_CheckSignals())
return NULL;
#endif
- v = Py_BuildValue("(is)", i, strerror(i));
+ if (filename != NULL && Py_UseClassExceptionsFlag)
+ v = Py_BuildValue("(iss)", i, strerror(i), filename);
+ else
+ v = Py_BuildValue("(is)", i, strerror(i));
if (v != NULL) {
PyErr_SetObject(exc, v);
Py_DECREF(v);
}
return NULL;
}
+
+
+PyObject *
+PyErr_SetFromErrno(exc)
+ PyObject *exc;
+{
+ return PyErr_SetFromErrnoWithFilename(exc, NULL);
+}
void
PyErr_BadInternalCall()