Both getgrgid_r() and getgrnam_r() *return* an error number
on failures, and don't store it to errno. Thus, rc will not
be less than zero, and we need to set errno before we can
create a python error from it.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Reviewed-by: Rob Browning <rlb@defaultvalue.org>
}
if (rc == 0)
return Py_BuildValue("O", Py_None);
+ errno = rc;
if (rc == EIO || rc == EMFILE || rc == ENFILE)
return PyErr_SetFromErrno(PyExc_IOError);
- if (rc < 0)
- return PyErr_SetFromErrno(PyExc_OSError);
- assert (0);
+ return PyErr_SetFromErrno(PyExc_OSError);
}
static PyObject *bup_getgrgid(PyObject *self, PyObject *args)