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");
230 PyVarObject_HEAD_INIT(&PyType_Type, 0)
246 PyObject_GenericGetAttr,
247 PyObject_GenericSetAttr,
251 #
if Py_TPFLAGS_HAVE_ITER
275 #ifdef _LEGACY_BINDINGS_TOO
284 rpmOpenDB( PyObject *
self, PyObject * args, PyObject * kwds) {
288 char * kwlist[] = {
"forWrite",
"rootdir", NULL};
290 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|is", kwlist,
297 if (
rpmdbOpen(root, &o->
db, forWrite ? O_RDWR | O_CREAT: O_RDONLY, (mode_t)0644)) {
298 char * errmsg =
"cannot open database in %s";
304 errsize = strlen(errmsg) + *root ==
'\0' ? 15 : strlen(root);
307 snprintf(errstr, errsize, errmsg, *root ==
'\0' ?
"/var/lib/rpm" : root);
mongo_error_t const char * errstr
const char const char size_t len
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.
rpmmi rpmmiFree(rpmmi mi)
Destroy rpm database iterator.
static int snprintf(char *buf, int nb, const char *fmt,...)
const char const bson * key
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.