/** \ingroup py_c */ static int rpmfi_init(rpmfiObject * s, PyObject *args, PyObject *kwds) /*@globals rpmGlobalMacroContext @*/ /*@modifies s, rpmGlobalMacroContext @*/ { hdrObject * ho = NULL; PyObject * to = NULL; rpmts ts = NULL; /* XXX FIXME: fiFromHeader should be a ts method. */ int tagN = RPMTAG_BASENAMES; int flags = 0; char * kwlist[] = {"header", "tag", "flags", NULL}; if (_rpmfi_debug < 0) fprintf(stderr, "*** rpmfi_init(%p,%p,%p)\n", s, args, kwds); if (!PyArg_ParseTupleAndKeywords(args, kwds, "O!|Oi:rpmfi_init", kwlist, &hdr_Type, &ho, &to, &flags)) return -1; if (to != NULL) { tagN = tagNumFromPyObject(to); if (tagN == -1) { PyErr_SetString(PyExc_KeyError, "unknown header tag"); return -1; } } s->fi = rpmfiNew(ts, hdrGetHeader(ho), tagN, flags); s->active = 0; return 0; }
/** \ingroup py_c */ static PyObject * rpmds_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds) { PyObject * po = NULL; PyObject * to = NULL; rpmTag tagN = RPMTAG_REQUIRENAME; rpmsenseFlags flags = RPMSENSE_ANY; rpmds ds = NULL; char * kwlist[] = {"obj", "tag", "flags", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "O|Oi:rpmds_init", kwlist, &po, &to, &flags)) { return NULL; } if (to != NULL && (tagN = tagNumFromPyObject(to)) == RPMTAG_NOT_FOUND) { return NULL; } if (PyTuple_Check(po) && PyTuple_Size(po) == 2) { char *n = PyString_AsString(PyTuple_GetItem(po, 0)); char *evr = PyString_AsString(PyTuple_GetItem(po, 1)); if (n && evr) { ds = rpmdsSingle(tagN, n, evr, flags); } } else if (hdrObject_Check(po)) { Header h = hdrGetHeader((hdrObject*) po); if (tagN == RPMTAG_NAME) { ds = rpmdsThis(h, RPMTAG_PROVIDENAME, RPMSENSE_EQUAL); } else { ds = rpmdsNew(h, tagN, flags); } } if (ds == NULL) { PyErr_SetString(PyExc_TypeError, "(n,evr) tuple or header expected"); return NULL; } return rpmds_Wrap(ds);; }
rpmfiObject * hdr_fiFromHeader(PyObject * s, PyObject * args, PyObject * kwds) { hdrObject * ho = (hdrObject *)s; PyObject * to = NULL; rpmts ts = NULL; /* XXX FIXME: fiFromHeader should be a ts method. */ rpmTag tagN = RPMTAG_BASENAMES; int flags = 0; char * kwlist[] = {"tag", "flags", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Oi:fiFromHeader", kwlist, &to, &flags)) return NULL; if (to != NULL) { tagN = tagNumFromPyObject(to); if (tagN == (rpmTag)-1) { PyErr_SetString(PyExc_KeyError, "unknown header tag"); return NULL; } } return rpmfi_Wrap( rpmfiNew(ts, hdrGetHeader(ho), tagN, flags) ); }