117 PyObject *TagN = NULL;
121 char * kwlist[] = {
"tagNumber",
"key",
"len", 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");
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);
static hdrObject * rpmdb_subscript(rpmdbObject *s, PyObject *key)
rpmmiObject * rpmmi_Wrap(rpmmi mi)
static PyMappingMethods rpmdb_as_mapping
rpmmi rpmmiInit(rpmdb db, rpmTag tag, const void *keyp, size_t keylen)
Return database iterator.
int rpmdbOpen(const char *prefix, rpmdb *dbp, int mode, mode_t perms)
Open rpm database.
static void rpmdb_dealloc(rpmdbObject *s)
struct rpmdb_s * rpmdb
Database of headers and tag value indices.
Header headerFree(Header h)
Dereference a header instance.
static int rpmdb_setattro(PyObject *o, PyObject *n, PyObject *v)
rpmmi rpmmiFree(rpmmi mi)
Destroy rpm database iterator.
static int snprintf(char *buf, int nb, const char *fmt,...)
static PyObject * rpmdb_getattro(PyObject *o, PyObject *n)
Header rpmmiNext(rpmmi mi)
Return next package header from iteration.
struct rpmdbObject_s rpmdbObject
static rpmmiObject * rpmdb_Match(rpmdbObject *s, PyObject *args, PyObject *kwds)
int rpmdbClose(rpmdb db)
Close all database indices and free rpmdb.
static int rpmdb_length(rpmdbObject *s)
static struct PyMethodDef rpmdb_methods[]
#define RPMDBI_PACKAGES
Pseudo-tags used by the rpmdb and rpmgi iterator API's.