_rpmmodule_la_SOURCES = rpmmodule.c rpmsystem-py.h \
header-py.c header-py.h \
rpmds-py.c rpmds-py.h \
+ rpmfd-py.c rpmfd-py.h \
rpmfi-py.c rpmfi-py.h \
rpmmi-py.c rpmmi-py.h \
rpmps-py.c rpmps-py.h \
--- /dev/null
+
+#include "rpmsystem-py.h"
+#include "rpmfd-py.h"
+
+FD_t rpmFdFromPyObject(PyObject *obj)
+{
+ FD_t fd = NULL;
+
+ if (PyInt_Check(obj)) {
+ fd = fdDup(PyInt_AsLong(obj));
+ } else if (PyFile_Check(obj)) {
+ FILE *fp = PyFile_AsFile(obj);
+ fd = fdDup(fileno(fp));
+ } else {
+ PyErr_SetString(PyExc_TypeError, "integer or file object expected");
+ return NULL;
+ }
+ if (fd == NULL || Ferror(fd)) {
+ PyErr_SetFromErrno(PyExc_IOError);
+ }
+ return fd;
+}