- if (r == -EINVAL) {
- PyErr_SetString(PyExc_ValueError, "Invalid field name");
- return NULL;
- } else if (r == -ENOMEM) {
- PyErr_SetString(PyExc_MemoryError, "Not enough memory");
- return NULL;
- } else if (r < 0) {
- PyErr_SetString(PyExc_RuntimeError, "Error querying journal");
+ if (r < 0) {
+ errno = -r;
+ PyObject *errtype = r == -EINVAL ? PyExc_ValueError :
+ r == -ENOMEM ? PyExc_MemoryError :
+ PyExc_OSError;
+ PyErr_SetFromErrno(errtype);