48 if (*epoch ==
'\0') epoch =
"0";
64 if (vp) *vp = version;
65 if (rp) *rp = release;
74 else if (str1 && !str2)
76 else if (!str1 && str2)
86 const char *aE, *aV, *aR;
88 const char *bE, *bV, *bR;
118 rc = (rc < 0 ? -1 : (rc == 0 ? 1 : 0));
130 return Py_BuildValue(
"i", rc);
138 return (PyObject *)s;
146 PyObject * result = NULL;
163 if (EVR != NULL) EVR =
xstrdup(EVR);
187 if (result == NULL) {
201 char * kwlist[] = {
"debugLevel", NULL};
203 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmds_debug))
223 return Py_BuildValue(
"i",
rpmdsIx(s->
ds));
239 return Py_BuildValue(
"s",
rpmdsN(s->
ds));
263 return Py_BuildValue(
"i", (
int)
rpmdsBT(s->
ds));
303 char * kwlist[] = {
"noPromote", NULL};
305 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i:SetNoPromote", kwlist,
320 char * kwlist[] = {
"location",
"returnCode", NULL};
322 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"si:Notify", kwlist,
354 PyObject * to = NULL;
356 char * kwlist[] = {
"element", NULL};
358 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O:Find", kwlist, &to))
375 PyObject * to = NULL;
377 char * kwlist[] = {
"element", NULL};
379 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O:Merge", kwlist, &to))
392 PyObject * to = NULL;
394 char * kwlist[] = {
"element", NULL};
396 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O:Merge", kwlist, &to))
490 rpmds_Compare(
rpmdsObject * s, PyObject * args, PyObject * kwds)
493 PyObject * to = NULL;
495 char * kwlist[] = {
"other", NULL};
497 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O:Compare", kwlist, &to))
510 if (!PyArg_ParseTuple(args,
":Problem"))
522 {
"Debug", (PyCFunction)
rpmds_Debug, METH_VARARGS|METH_KEYWORDS,
525 "ds.Count -> Count - Return no. of elements.\n" },
526 {
"Ix", (PyCFunction)
rpmds_Ix, METH_NOARGS,
527 "ds.Ix -> Ix - Return current element index.\n" },
529 "ds.DNEVR -> DNEVR - Return current DNEVR.\n" },
530 {
"N", (PyCFunction)
rpmds_N, METH_NOARGS,
531 "ds.N -> N - Return current N.\n" },
532 {
"EVR", (PyCFunction)
rpmds_EVR, METH_NOARGS,
533 "ds.EVR -> EVR - Return current EVR.\n" },
535 "ds.Flags -> Flags - Return current Flags.\n" },
536 {
"BT", (PyCFunction)
rpmds_BT, METH_NOARGS,
537 "ds.BT -> BT - Return build time.\n" },
538 {
"TagN", (PyCFunction)
rpmds_TagN, METH_NOARGS,
539 "ds.TagN -> TagN - Return current TagN.\n" },
541 "ds.Color -> Color - Return current Color.\n" },
542 {
"Refs", (PyCFunction)
rpmds_Refs, METH_NOARGS,
543 "ds.Refs -> Refs - Return current Refs.\n" },
545 "ds.Result -> Result - Return current Result.\n" },
546 {
"next", (PyCFunction)
rpmds_Next, METH_NOARGS,
547 "ds.next() -> (N, EVR, Flags)\n\
548 - Retrieve next dependency triple.\n" },
551 {
"Notify", (PyCFunction)
rpmds_Notify, METH_VARARGS|METH_KEYWORDS,
553 {
"Sort", (PyCFunction)
rpmds_Sort, METH_NOARGS,
554 "ds.Sort() -> None\n\
555 - Sort the (N,EVR,Flags) elements in ds\n" },
556 {
"Find", (PyCFunction)
rpmds_Find, METH_VARARGS|METH_KEYWORDS,
557 "ds.Find(element) -> matching ds index (-1 on failure)\n\
558 - Check for an exactly matching element in ds.\n\
559 The current index in ds is positioned at matching member upon success.\n" },
560 {
"Merge", (PyCFunction)
rpmds_Merge, METH_VARARGS|METH_KEYWORDS,
561 "ds.Merge(elements) -> 0 on success\n\
562 - Merge elements into ds, maintaining (N,EVR,Flags) sort order.\n" },
563 {
"Search", (PyCFunction)
rpmds_Search, METH_VARARGS|METH_KEYWORDS,
564 "ds.Search(element) -> matching ds index (-1 on failure)\n\
565 - Check that element dependency range overlaps some member of ds.\n\
566 The current index in ds is positioned at overlapping member upon success.\n" },
567 {
"Cpuinfo", (PyCFunction)
rpmds_Cpuinfo, METH_NOARGS|METH_STATIC,
568 "ds.Cpuinfo -> nds - Return /proc/cpuinfo dependency set.\n"},
569 {
"Rpmlib", (PyCFunction)
rpmds_Rpmlib, METH_NOARGS|METH_STATIC,
570 "ds.Rpmlib -> nds - Return internal rpmlib dependency set.\n"},
571 {
"Sysinfo", (PyCFunction)
rpmds_Sysinfo, METH_NOARGS|METH_STATIC,
572 "ds.Sysinfo -> nds - Return /etc/rpm/sysinfo dependency set.\n"},
573 {
"Getconf", (PyCFunction)
rpmds_Getconf, METH_NOARGS|METH_STATIC,
574 "ds.Getconf -> nds - Return getconf(1) dependency set.\n"},
575 {
"Ldconfig", (PyCFunction)
rpmds_Ldconfig, METH_NOARGS|METH_STATIC,
576 "ds.Ldconfig -> nds - Return /etc/ld.so.cache dependency set.\n"},
577 {
"Uname", (PyCFunction)
rpmds_Uname, METH_NOARGS|METH_STATIC,
578 "ds.Uname -> nds - Return uname(2) dependency set.\n"},
580 {
"Compare", (PyCFunction)rpmds_Compare, METH_VARARGS|METH_KEYWORDS,
582 {
"Problem", (PyCFunction)rpmds_Problem, METH_NOARGS,
619 return PyObject_GenericGetAttr(o, n);
625 return PyObject_GenericSetAttr(o, n, v);
642 if (!PyInt_Check(key)) {
643 PyErr_SetString(PyExc_TypeError,
"integer expected");
647 ix = (int) PyInt_AsLong(key);
667 PyObject * to = NULL;
670 char * kwlist[] = {
"header",
"tag",
"flags", NULL};
673 fprintf(stderr,
"*** rpmds_init(%p,%p,%p)\n", s, args, kwds);
675 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"O!|Oi:rpmds_init", kwlist,
681 if (tagN == (
rpmTag)0xffffffff) {
682 PyErr_SetString(PyExc_KeyError,
"unknown header tag");
698 fprintf(stderr,
"%p -- ds %p\n", s, s->
ds);
702 PyObject_Del((PyObject *)s);
710 PyObject * s = PyType_GenericAlloc(subtype, nitems);
713 fprintf(stderr,
"*** rpmds_alloc(%p,%d) ret %p\n", subtype, nitems, s);
720 static PyObject *
rpmds_new(PyTypeObject * subtype, PyObject *args, PyObject *kwds)
733 fprintf(stderr,
"%p ++ ds %p\n", s, s->
ds);
735 return (PyObject *)s;
746 PyObject_HEAD_INIT(&PyType_Type)
768 Py_TPFLAGS_HAVE_RICHCOMPARE,
770 #if Py_TPFLAGS_HAVE_ITER
817 PyObject * to = NULL;
820 const char * EVR = NULL;
822 char * kwlist[] = {
"to",
"name",
"evr",
"flags", NULL};
824 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"Os|si:Single", kwlist,
825 &to, &N, &EVR, &Flags))
830 if (tagN == (
rpmTag)0xffffffff) {
831 PyErr_SetString(PyExc_KeyError,
"unknown header tag");
836 if (EVR != NULL) EVR =
xstrdup(EVR);
844 PyObject * to = NULL;
847 char * kwlist[] = {
"to",
"flags", NULL};
849 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|Oi:dsFromHeader", kwlist,
855 if (tagN == (
rpmTag)0xffffffff) {
856 PyErr_SetString(PyExc_KeyError,
"unknown header tag");