From: Panu Matilainen Date: Wed, 23 Sep 2009 08:42:59 +0000 (+0300) Subject: Permit file objects in python header constructor X-Git-Tag: rpm-4.8.0-beta1~201 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0913ff321b5a2034596e00c463a4888f96c19aca;p=platform%2Fupstream%2Frpm.git Permit file objects in python header constructor --- diff --git a/python/header-py.c b/python/header-py.c index e7c6b6c..9b70704 100644 --- a/python/header-py.c +++ b/python/header-py.c @@ -375,6 +375,7 @@ static PyObject *hdr_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds) { PyObject *obj = NULL; Header h = NULL; + FD_t fd = NULL; char *kwlist[] = { "obj", NULL }; if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O", kwlist, &obj)) { @@ -387,8 +388,13 @@ static PyObject *hdr_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds) h = headerCopy(hdrGetHeader((hdrObject*) obj)); } else if (PyString_Check(obj)) { h = headerCopyLoad(PyString_AsString(obj)); + } else if ((fd = rpmFdFromPyObject(obj)) != NULL) { + Py_BEGIN_ALLOW_THREADS; + h = headerRead(fd, HEADER_MAGIC_YES); + Fclose(fd); + Py_END_ALLOW_THREADS; } else { - PyErr_SetNone(PyExc_TypeError); + PyErr_SetString(PyExc_TypeError, "header, blob or file expected"); return NULL; }