117 PyObject *TagN =
NULL;
123 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|Ozi", kwlist,
128 PyErr_SetString(PyExc_TypeError,
"unknown tag type");
142 {
"match", (PyCFunction) rpmdb_Match, METH_VARARGS|METH_KEYWORDS,
143 "db.match([TagN, [key, [len]]]) -> mi\n\
144 - Create an rpm db match iterator.\n" },
180 if (!PyInt_Check(key)) {
181 PyErr_SetString(PyExc_TypeError,
"integer expected");
185 offset = (
int) PyInt_AsLong(key);
190 PyErr_SetString(
pyrpmError,
"cannot read rpmdb entry");
205 (lenfunc) rpmdb_length,
206 (binaryfunc) rpmdb_subscript,
223 return PyObject_GenericGetAttr(o, n);
229 return PyObject_GenericSetAttr(o, n, v);
242 PyObject_HEAD_INIT(&PyType_Type)
264 #
if Py_TPFLAGS_HAVE_ITER
288 #ifdef _LEGACY_BINDINGS_TOO
297 rpmOpenDB( PyObject *
self, PyObject * args, PyObject * kwds) {
301 char * kwlist[] = {
"forWrite",
"rootdir",
NULL};
303 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|is", kwlist,
310 if (
rpmdbOpen(root, &o->
db, forWrite ? O_RDWR | O_CREAT: O_RDONLY, (mode_t)0644)) {
311 char * errmsg =
"cannot open database in %s";
312 char * errstr =
NULL;
317 errsize = strlen(errmsg) + *root ==
'\0' ? 15 : strlen(root);
320 snprintf(errstr, errsize, errmsg, *root ==
'\0' ?
"/var/lib/rpm" : root);
struct rpmdb_s * rpmdb
Database of headers and tag value indices.
int rpmdbClose(rpmdb db)
Close all database indices and free rpmdb.
static PyMappingMethods rpmdb_as_mapping
static hdrObject *hdrObject * ho
int rpmdbOpen(const char *prefix, rpmdb *dbp, int mode, mode_t perms)
Open rpm database.
rpmmi rpmmiFree(rpmmi mi)
Destroy rpm database iterator.
rpmTag tagNumFromPyObject(PyObject *item)
static void rpmdb_dealloc(rpmdbObject *s)
Header rpmmiNext(rpmmi mi)
Return next package header from iteration.
hdrObject * hdr_Wrap(Header h)
static int rpmdb_setattro(PyObject *o, PyObject *n, PyObject *v)
static int snprintf(char *buf, int nb, const char *fmt,...)
static PyObject * rpmdb_getattro(PyObject *o, PyObject *n)
return rpmmi_Wrap(rpmmiInit(s->db, tag, key, len))
static void
Print copy of spec file, filling in Group/Description/Summary from specspo.
int
Save source and expand field into target.
static struct PyMethodDef rpmdb_methods[]
struct rpmdbObject_s rpmdbObject
#define RPMDBI_PACKAGES
Pseudo-tags used by the rpmdb and rpmgi iterator API's.
rpmmi rpmmiInit(rpmdb db, rpmTag tag, const void *keyp, size_t keylen)
Return database iterator.