104 result = rpmmi_iternext(s);
152 PyObject *TagN =
NULL;
158 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"Ois:Pattern", kwlist,
159 &TagN, &type, &pattern))
163 PyErr_SetString(PyExc_TypeError,
"unknown tag type");
181 {
"next", (PyCFunction) rpmmi_Next, METH_NOARGS,
183 - Retrieve next header that matches. Iterate directly in python if possible.\n" },
184 {
"instance", (PyCFunction) rpmmi_Instance, METH_NOARGS,
186 {
"count", (PyCFunction) rpmmi_Count, METH_NOARGS,
188 {
"pattern", (PyCFunction) rpmmi_Pattern, METH_VARARGS|METH_KEYWORDS,
189 "mi.pattern(TagN, mire_type, pattern)\n\
190 - Set a secondary match pattern on tags from retrieved header.\n" },
210 return PyObject_GenericGetAttr(o, n);
216 return PyObject_GenericSetAttr(o, n, v);
229 PyObject_HEAD_INIT(&PyType_Type)
251 #
if Py_TPFLAGS_HAVE_ITER
256 (getiterfunc) rpmmi_iter,
257 (iternextfunc) rpmmi_iternext,
280 PyErr_SetString(
pyrpmError,
"out of memory creating rpmmiObject");
static void rpmmi_dealloc(rpmmiObject *s)
struct rpmmiObject_s rpmmiObject
static PyObject *int type
uint32_t rpmmiInstance(rpmmi mi)
Return header instance for current position of rpmdb iterator.
static int rpmmi_setattro(PyObject *o, PyObject *n, PyObject *v)
rpmmi rpmmiFree(rpmmi mi)
Destroy rpm database iterator.
unsigned int rpmmiCount(rpmmi mi)
Return number of elements in rpm database iterator.
rpmTag tagNumFromPyObject(PyObject *item)
Header rpmmiNext(rpmmi mi)
Return next package header from iteration.
int rpmmiAddPattern(rpmmi mi, rpmTag tag, rpmMireMode mode, const char *pattern)
Add pattern to iterator selector.
static struct PyMethodDef rpmmi_methods[]
hdrObject * hdr_Wrap(Header h)
return Py_BuildValue("i", pkgKey)
static PyObject * rpmmi_getattro(PyObject *o, PyObject *n)
return rpmmi_Wrap(rpmmiInit(s->db, tag, key, len))
Access RPM indices using Berkeley DB interface(s).