python/rpmmodule.c

Go to the documentation of this file.
00001 
00005 #include "system.h"
00006 
00007 #include <rpmio_internal.h>
00008 #include <rpmcli.h>     /* XXX for rpmCheckSig */
00009 #include <rpmdb.h>
00010 #include <rpmsq.h>
00011 
00012 #include "legacy.h"
00013 #include "misc.h"
00014 #include "header_internal.h"
00015 
00016 #include "header-py.h"
00017 #include "rpmal-py.h"
00018 #include "rpmds-py.h"
00019 #include "rpmfd-py.h"
00020 #include "rpmfts-py.h"
00021 #include "rpmfi-py.h"
00022 #include "rpmmi-py.h"
00023 #include "rpmps-py.h"
00024 #include "rpmrc-py.h"
00025 #include "rpmte-py.h"
00026 #include "rpmts-py.h"
00027 #include "spec-py.h"
00028 
00029 #include "debug.h"
00030 
00031 #ifdef __LCLINT__
00032 #undef  PyObject_HEAD
00033 #define PyObject_HEAD   int _PyObjectHead
00034 #endif
00035 
00040 
00043 PyObject * pyrpmError;
00044 
00045 extern sigset_t rpmsqCaught;
00046 
00047 #if PY_VERSION_HEX < 0x02050000
00048 typedef int Py_ssize_t;
00049 #endif
00050 
00051 
00054 static PyObject * expandMacro(PyObject * self, PyObject * args, PyObject * kwds)
00055 {
00056     char * macro;
00057 
00058     if (!PyArg_ParseTuple(args, "s", &macro))
00059         return NULL;
00060 
00061     return Py_BuildValue("s", rpmExpand(macro, NULL));
00062 }
00063 
00066 static PyObject * archScore(PyObject * s, PyObject * args,
00067                 PyObject * kwds)
00068 {
00069     char * arch;
00070     char * platform;
00071     int score;
00072     char * kwlist[] = {"arch", NULL};
00073 
00074     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &arch))
00075         return NULL;
00076 
00077     platform = rpmExpand(arch, "-", "%{_vendor}", "-", "%{_os}", NULL);
00078     score = rpmPlatformScore(platform, NULL, 0);
00079     platform = _free(platform);
00080 
00081     return Py_BuildValue("i", score);
00082 }
00083 
00086 static PyObject * platformScore(PyObject * s, PyObject * args,
00087                 PyObject * kwds)
00088 {
00089     char * platform;
00090     int score;
00091     char * kwlist[] = {"platform", NULL};
00092 
00093     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist, &platform))
00094         return NULL;
00095 
00096     score = rpmPlatformScore(platform, NULL, 0);
00097 
00098     return Py_BuildValue("i", score);
00099 }
00100 
00103 static PyObject * signalsCaught(PyObject * self, PyObject * check)
00104 {
00105     PyObject *caught, *o;
00106     Py_ssize_t llen;
00107     int signum, i;
00108     sigset_t newMask, oldMask;
00109 
00110     if (!PyList_Check(check)) {
00111         PyErr_SetString(PyExc_TypeError, "list expected");
00112         return NULL;
00113     }
00114 
00115     llen = PyList_Size(check);
00116     caught = PyList_New(0);
00117 
00118     /* block signals while checking for them */
00119     (void) sigfillset(&newMask);
00120     (void) sigprocmask(SIG_BLOCK, &newMask, &oldMask);
00121 
00122     for (i = 0; i < llen; i++) {
00123         o = PyList_GetItem(check, i);
00124         signum = PyInt_AsLong(o);
00125         if (sigismember(&rpmsqCaught, signum)) {
00126             PyList_Append(caught, o);
00127         }
00128     }
00129     (void) sigprocmask(SIG_SETMASK, &oldMask, NULL);
00130 
00131     return caught;
00132 }
00133 
00136 static PyObject * checkSignals(PyObject * self, PyObject * args)
00137 {
00138     if (!PyArg_ParseTuple(args, ":checkSignals")) return NULL;
00139     rpmdbCheckSignals();
00140     Py_INCREF(Py_None);
00141     return Py_None;
00142 }
00143 
00146 static PyObject * setLogFile (PyObject * self, PyObject * args, PyObject *kwds)
00147 {
00148     PyObject * fop = NULL;
00149     FILE * fp = NULL;
00150     char * kwlist[] = {"fileObject", NULL};
00151 
00152     if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:logSetFile", kwlist, &fop))
00153         return NULL;
00154 
00155     if (fop) {
00156         if (!PyFile_Check(fop)) {
00157             PyErr_SetString(pyrpmError, "requires file object");
00158             return NULL;
00159         }
00160         fp = PyFile_AsFile(fop);
00161     }
00162 
00163     (void) rpmlogSetFile(fp);
00164 
00165     Py_INCREF(Py_None);
00166     return (PyObject *) Py_None;
00167 }
00168 
00171 static PyObject *
00172 setVerbosity (PyObject * self, PyObject * args, PyObject *kwds)
00173 {
00174     int level;
00175     char * kwlist[] = {"level", NULL};
00176 
00177     if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist, &level))
00178         return NULL;
00179 
00180     rpmSetVerbosity(level);
00181 
00182     Py_INCREF(Py_None);
00183     return (PyObject *) Py_None;
00184 }
00185 
00188 static PyObject *
00189 setEpochPromote (PyObject * self, PyObject * args, PyObject * kwds)
00190 {
00191     char * kwlist[] = {"promote", NULL};
00192 
00193     if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist,
00194             &_rpmds_nopromote))
00195         return NULL;
00196 
00197     Py_INCREF(Py_None);
00198     return (PyObject *) Py_None;
00199 }
00200 
00203 static PyObject * setStats (PyObject * self, PyObject * args, PyObject * kwds)
00204 {
00205     char * kwlist[] = {"stats", NULL};
00206 
00207     if (!PyArg_ParseTupleAndKeywords(args, kwds, "i", kwlist, &_rpmts_stats))
00208         return NULL;
00209 
00210     Py_INCREF(Py_None);
00211     return (PyObject *) Py_None;
00212 }
00217 static PyMethodDef rpmModuleMethods[] = {
00218     { "TransactionSet", (PyCFunction) rpmts_Create, METH_VARARGS|METH_KEYWORDS,
00219 "rpm.TransactionSet([rootDir, [db]]) -> ts\n\
00220 - Create a transaction set.\n" },
00221 
00222 #if Py_TPFLAGS_HAVE_ITER        /* XXX backport to python-1.5.2 */
00223     { "newrc", (PyCFunction) rpmrc_Create, METH_VARARGS|METH_KEYWORDS,
00224         NULL },
00225 #endif
00226     { "addMacro", (PyCFunction) rpmrc_AddMacro, METH_VARARGS|METH_KEYWORDS,
00227         NULL },
00228     { "delMacro", (PyCFunction) rpmrc_DelMacro, METH_VARARGS|METH_KEYWORDS,
00229         NULL },
00230     { "expandMacro", (PyCFunction) expandMacro, METH_VARARGS|METH_KEYWORDS,
00231         NULL },
00232 
00233     { "archscore", (PyCFunction) archScore, METH_VARARGS|METH_KEYWORDS,
00234         NULL },
00235     { "platformscore", (PyCFunction) platformScore, METH_VARARGS|METH_KEYWORDS,
00236         NULL },
00237 
00238     { "signalsCaught", (PyCFunction) signalsCaught, METH_O,
00239         NULL },
00240     { "checkSignals", (PyCFunction) checkSignals, METH_VARARGS,
00241         NULL },
00242 
00243     { "headerLoad", (PyCFunction) hdrLoad, METH_VARARGS|METH_KEYWORDS,
00244         NULL },
00245     { "mergeHeaderListFromFD", (PyCFunction) rpmMergeHeadersFromFD, METH_VARARGS|METH_KEYWORDS,
00246         NULL },
00247     { "readHeaderListFromFD", (PyCFunction) rpmHeaderFromFD, METH_VARARGS|METH_KEYWORDS,
00248         NULL },
00249     { "readHeaderListFromFile", (PyCFunction) rpmHeaderFromFile, METH_VARARGS|METH_KEYWORDS,
00250         NULL },
00251     { "readHeaderFromFD", (PyCFunction) rpmSingleHeaderFromFD, METH_VARARGS|METH_KEYWORDS,
00252         NULL },
00253 
00254     { "setLogFile", (PyCFunction) setLogFile, METH_VARARGS|METH_KEYWORDS,
00255         NULL },
00256 
00257     { "versionCompare", (PyCFunction) versionCompare, METH_VARARGS|METH_KEYWORDS,
00258         NULL },
00259     { "labelCompare", (PyCFunction) labelCompare, METH_VARARGS|METH_KEYWORDS,
00260         NULL },
00261     { "setVerbosity", (PyCFunction) setVerbosity, METH_VARARGS|METH_KEYWORDS,
00262         NULL },
00263     { "setEpochPromote", (PyCFunction) setEpochPromote, METH_VARARGS|METH_KEYWORDS,
00264         NULL },
00265     { "setStats", (PyCFunction) setStats, METH_VARARGS|METH_KEYWORDS,
00266         NULL },
00267 
00268     { "dsSingle", (PyCFunction) rpmds_Single, METH_VARARGS|METH_KEYWORDS,
00269 "rpm.dsSingle(TagN, N, [EVR, [Flags]] -> ds\n\
00270 - Create a single element dependency set.\n" },
00271     { NULL }
00272 } ;
00273 
00274 /*
00275  * Force clean up of open iterators and dbs on exit.
00276  */
00277 static void rpm_exithook(void)
00278 {
00279    rpmdbCheckTerminate(1);
00280 }
00281 
00284 static char rpm__doc__[] =
00285 "";
00286 
00287 void init_rpm(void);    /* XXX eliminate gcc warning */
00290 void init_rpm(void)
00291 {
00292     PyObject * d, *o, * tag = NULL, * dict;
00293     int i;
00294     const struct headerSprintfExtension_s * extensions = rpmHeaderFormats;
00295     struct headerSprintfExtension_s * ext;
00296     PyObject * m;
00297 
00298 #if Py_TPFLAGS_HAVE_ITER        /* XXX backport to python-1.5.2 */
00299     if (PyType_Ready(&hdr_Type) < 0) return;
00300     if (PyType_Ready(&rpmal_Type) < 0) return;
00301     if (PyType_Ready(&rpmds_Type) < 0) return;
00302     if (PyType_Ready(&rpmfd_Type) < 0) return;
00303     if (PyType_Ready(&rpmfts_Type) < 0) return;
00304     if (PyType_Ready(&rpmfi_Type) < 0) return;
00305     if (PyType_Ready(&rpmmi_Type) < 0) return;
00306     if (PyType_Ready(&rpmps_Type) < 0) return;
00307 
00308     rpmrc_Type.tp_base = &PyDict_Type;
00309     if (PyType_Ready(&rpmrc_Type) < 0) return;
00310 
00311     if (PyType_Ready(&rpmte_Type) < 0) return;
00312     if (PyType_Ready(&rpmts_Type) < 0) return;
00313     if (PyType_Ready(&spec_Type) < 0) return;
00314 #endif
00315 
00316     m = Py_InitModule3("_rpm", rpmModuleMethods, rpm__doc__);
00317     if (m == NULL)
00318         return;
00319 
00320     /* 
00321      * treat error to register rpm cleanup hook as fatal, tracebacks
00322      * can and will leave stale locks around if we can't clean up
00323      */
00324     if (Py_AtExit(rpm_exithook) == -1)
00325         return;
00326 
00327     rpmReadConfigFiles(NULL, NULL);
00328 
00329     d = PyModule_GetDict(m);
00330 
00331 #ifdef  HACK
00332     pyrpmError = PyString_FromString("_rpm.error");
00333     PyDict_SetItemString(d, "error", pyrpmError);
00334     Py_DECREF(pyrpmError);
00335 #else
00336     pyrpmError = PyErr_NewException("_rpm.error", NULL, NULL);
00337     if (pyrpmError != NULL)
00338         PyDict_SetItemString(d, "error", pyrpmError);
00339 #endif
00340 
00341 #if Py_TPFLAGS_HAVE_ITER        /* XXX backport to python-1.5.2 */
00342     Py_INCREF(&hdr_Type);
00343     PyModule_AddObject(m, "hdr", (PyObject *) &hdr_Type);
00344 
00345     Py_INCREF(&rpmal_Type);
00346     PyModule_AddObject(m, "al", (PyObject *) &rpmal_Type);
00347 
00348     Py_INCREF(&rpmds_Type);
00349     PyModule_AddObject(m, "ds", (PyObject *) &rpmds_Type);
00350 
00351     Py_INCREF(&rpmfd_Type);
00352     PyModule_AddObject(m, "fd", (PyObject *) &rpmfd_Type);
00353 
00354     Py_INCREF(&rpmfts_Type);
00355     PyModule_AddObject(m, "fts", (PyObject *) &rpmfts_Type);
00356 
00357     Py_INCREF(&rpmfi_Type);
00358     PyModule_AddObject(m, "fi", (PyObject *) &rpmfi_Type);
00359 
00360     Py_INCREF(&rpmmi_Type);
00361     PyModule_AddObject(m, "mi", (PyObject *) &rpmmi_Type);
00362 
00363     Py_INCREF(&rpmps_Type);
00364     PyModule_AddObject(m, "ps", (PyObject *) &rpmps_Type);
00365 
00366     Py_INCREF(&rpmrc_Type);
00367     PyModule_AddObject(m, "rc", (PyObject *) &rpmrc_Type);
00368 
00369     Py_INCREF(&rpmte_Type);
00370     PyModule_AddObject(m, "te", (PyObject *) &rpmte_Type);
00371 
00372     Py_INCREF(&rpmts_Type);
00373     PyModule_AddObject(m, "ts", (PyObject *) &rpmts_Type);
00374 
00375     Py_INCREF(&spec_Type);
00376     PyModule_AddObject(m, "spec", (PyObject *) &spec_Type);
00377 #else
00378     hdr_Type.ob_type = &PyType_Type;
00379     rpmal_Type.ob_type = &PyType_Type;
00380     rpmds_Type.ob_type = &PyType_Type;
00381     rpmfd_Type.ob_type = &PyType_Type;
00382     rpmfts_Type.ob_type = &PyType_Type;
00383     rpmfi_Type.ob_type = &PyType_Type;
00384     rpmmi_Type.ob_type = &PyType_Type;
00385     rpmps_Type.ob_type = &PyType_Type;
00386     rpmte_Type.ob_type = &PyType_Type;
00387     rpmts_Type.ob_type = &PyType_Type;
00388     spec_Type.ob_type =  &PyType_Type;
00389 #endif
00390 
00391     dict = PyDict_New();
00392 
00393     for (i = 0; i < rpmTagTableSize; i++) {
00394         tag = PyInt_FromLong(rpmTagTable[i].val);
00395         PyDict_SetItemString(d, (char *) rpmTagTable[i].name, tag);
00396         Py_DECREF(tag);
00397         PyDict_SetItem(dict, tag, o=PyString_FromString(rpmTagTable[i].name + 7));
00398         Py_DECREF(o);
00399     }
00400 
00401     while (extensions->name) {
00402         if (extensions->type == HEADER_EXT_TAG) {
00403             ext = extensions;
00404             PyDict_SetItemString(d, (char *) extensions->name, o=PyCObject_FromVoidPtr(ext, NULL));
00405             Py_DECREF(o);
00406             PyDict_SetItem(dict, tag, o=PyString_FromString(ext->name + 7));
00407             Py_DECREF(o);
00408         }
00409         extensions++;
00410     }
00411 
00412     PyDict_SetItemString(d, "tagnames", dict);
00413     Py_DECREF(dict);
00414 
00415 
00416 #define REGISTER_ENUM(val) \
00417     PyDict_SetItemString(d, #val, o=PyInt_FromLong( val )); \
00418     Py_DECREF(o);
00419 
00420     REGISTER_ENUM(RPMFILE_STATE_NORMAL);
00421     REGISTER_ENUM(RPMFILE_STATE_REPLACED);
00422     REGISTER_ENUM(RPMFILE_STATE_NOTINSTALLED);
00423     REGISTER_ENUM(RPMFILE_STATE_NETSHARED);
00424     REGISTER_ENUM(RPMFILE_STATE_WRONGCOLOR);
00425 
00426     REGISTER_ENUM(RPMFILE_CONFIG);
00427     REGISTER_ENUM(RPMFILE_DOC);
00428     REGISTER_ENUM(RPMFILE_ICON);
00429     REGISTER_ENUM(RPMFILE_MISSINGOK);
00430     REGISTER_ENUM(RPMFILE_NOREPLACE);
00431     REGISTER_ENUM(RPMFILE_GHOST);
00432     REGISTER_ENUM(RPMFILE_LICENSE);
00433     REGISTER_ENUM(RPMFILE_README);
00434     REGISTER_ENUM(RPMFILE_EXCLUDE);
00435     REGISTER_ENUM(RPMFILE_UNPATCHED);
00436     REGISTER_ENUM(RPMFILE_PUBKEY);
00437 
00438     REGISTER_ENUM(RPMDEP_SENSE_REQUIRES);
00439     REGISTER_ENUM(RPMDEP_SENSE_CONFLICTS);
00440 
00441     REGISTER_ENUM(RPMSENSE_LESS);
00442     REGISTER_ENUM(RPMSENSE_GREATER);
00443     REGISTER_ENUM(RPMSENSE_EQUAL);
00444     REGISTER_ENUM(RPMSENSE_NOTEQUAL);
00445     REGISTER_ENUM(RPMSENSE_PREREQ);
00446 
00447     REGISTER_ENUM(RPMDEPS_FLAG_NOUPGRADE);
00448     REGISTER_ENUM(RPMDEPS_FLAG_NOREQUIRES);
00449     REGISTER_ENUM(RPMDEPS_FLAG_NOCONFLICTS);
00450     REGISTER_ENUM(RPMDEPS_FLAG_NOOBSOLETES);
00451     REGISTER_ENUM(RPMDEPS_FLAG_NOPARENTDIRS);
00452     REGISTER_ENUM(RPMDEPS_FLAG_NOLINKTOS);
00453     REGISTER_ENUM(RPMDEPS_FLAG_ANACONDA);
00454     REGISTER_ENUM(RPMDEPS_FLAG_NOSUGGEST);
00455     REGISTER_ENUM(RPMDEPS_FLAG_ADDINDEPS);
00456     REGISTER_ENUM(RPMDEPS_FLAG_DEPLOOPS);
00457 
00458     REGISTER_ENUM(RPMTRANS_FLAG_TEST);
00459     REGISTER_ENUM(RPMTRANS_FLAG_BUILD_PROBS);
00460     REGISTER_ENUM(RPMTRANS_FLAG_NOSCRIPTS);
00461     REGISTER_ENUM(RPMTRANS_FLAG_JUSTDB);
00462     REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERS);
00463     REGISTER_ENUM(RPMTRANS_FLAG_NODOCS);
00464     REGISTER_ENUM(RPMTRANS_FLAG_ALLFILES);
00465     REGISTER_ENUM(RPMTRANS_FLAG_KEEPOBSOLETE);
00466     REGISTER_ENUM(RPMTRANS_FLAG_REPACKAGE);
00467     REGISTER_ENUM(RPMTRANS_FLAG_NOPRE);
00468     REGISTER_ENUM(RPMTRANS_FLAG_NOPOST);
00469     REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERPREIN);
00470     REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERIN);
00471     REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERUN);
00472     REGISTER_ENUM(RPMTRANS_FLAG_NOPREUN);
00473     REGISTER_ENUM(RPMTRANS_FLAG_NOPOSTUN);
00474     REGISTER_ENUM(RPMTRANS_FLAG_NOTRIGGERPOSTUN);
00475     REGISTER_ENUM(RPMTRANS_FLAG_NOFDIGESTS);
00476     REGISTER_ENUM(RPMTRANS_FLAG_NOCONFIGS);
00477 
00478     REGISTER_ENUM(RPMPROB_FILTER_IGNOREOS);
00479     REGISTER_ENUM(RPMPROB_FILTER_IGNOREARCH);
00480     REGISTER_ENUM(RPMPROB_FILTER_REPLACEPKG);
00481     REGISTER_ENUM(RPMPROB_FILTER_FORCERELOCATE);
00482     REGISTER_ENUM(RPMPROB_FILTER_REPLACENEWFILES);
00483     REGISTER_ENUM(RPMPROB_FILTER_REPLACEOLDFILES);
00484     REGISTER_ENUM(RPMPROB_FILTER_OLDPACKAGE);
00485     REGISTER_ENUM(RPMPROB_FILTER_DISKSPACE);
00486     REGISTER_ENUM(RPMPROB_FILTER_DISKNODES);
00487 
00488     REGISTER_ENUM(RPMCALLBACK_UNKNOWN);
00489     REGISTER_ENUM(RPMCALLBACK_INST_PROGRESS);
00490     REGISTER_ENUM(RPMCALLBACK_INST_START);
00491     REGISTER_ENUM(RPMCALLBACK_INST_OPEN_FILE);
00492     REGISTER_ENUM(RPMCALLBACK_INST_CLOSE_FILE);
00493     REGISTER_ENUM(RPMCALLBACK_TRANS_PROGRESS);
00494     REGISTER_ENUM(RPMCALLBACK_TRANS_START);
00495     REGISTER_ENUM(RPMCALLBACK_TRANS_STOP);
00496     REGISTER_ENUM(RPMCALLBACK_UNINST_PROGRESS);
00497     REGISTER_ENUM(RPMCALLBACK_UNINST_START);
00498     REGISTER_ENUM(RPMCALLBACK_UNINST_STOP);
00499     REGISTER_ENUM(RPMCALLBACK_REPACKAGE_PROGRESS);
00500     REGISTER_ENUM(RPMCALLBACK_REPACKAGE_START);
00501     REGISTER_ENUM(RPMCALLBACK_REPACKAGE_STOP);
00502     REGISTER_ENUM(RPMCALLBACK_UNPACK_ERROR);
00503     REGISTER_ENUM(RPMCALLBACK_CPIO_ERROR);
00504 
00505     REGISTER_ENUM(RPMPROB_BADARCH);
00506     REGISTER_ENUM(RPMPROB_BADOS);
00507     REGISTER_ENUM(RPMPROB_PKG_INSTALLED);
00508     REGISTER_ENUM(RPMPROB_BADRELOCATE);
00509     REGISTER_ENUM(RPMPROB_REQUIRES);
00510     REGISTER_ENUM(RPMPROB_CONFLICT);
00511     REGISTER_ENUM(RPMPROB_NEW_FILE_CONFLICT);
00512     REGISTER_ENUM(RPMPROB_FILE_CONFLICT);
00513     REGISTER_ENUM(RPMPROB_OLDPACKAGE);
00514     REGISTER_ENUM(RPMPROB_DISKSPACE);
00515     REGISTER_ENUM(RPMPROB_DISKNODES);
00516     REGISTER_ENUM(RPMPROB_BADPRETRANS);
00517 
00518     REGISTER_ENUM(VERIFY_DIGEST);
00519     REGISTER_ENUM(VERIFY_SIGNATURE);
00520 
00521     REGISTER_ENUM(RPMLOG_EMERG);
00522     REGISTER_ENUM(RPMLOG_ALERT);
00523     REGISTER_ENUM(RPMLOG_CRIT);
00524     REGISTER_ENUM(RPMLOG_ERR);
00525     REGISTER_ENUM(RPMLOG_WARNING);
00526     REGISTER_ENUM(RPMLOG_NOTICE);
00527     REGISTER_ENUM(RPMLOG_INFO);
00528     REGISTER_ENUM(RPMLOG_DEBUG);
00529 
00530     REGISTER_ENUM(RPMMIRE_DEFAULT);
00531     REGISTER_ENUM(RPMMIRE_STRCMP);
00532     REGISTER_ENUM(RPMMIRE_REGEX);
00533     REGISTER_ENUM(RPMMIRE_GLOB);
00534 
00535     REGISTER_ENUM(RPMVSF_DEFAULT);
00536     REGISTER_ENUM(RPMVSF_NOHDRCHK);
00537     REGISTER_ENUM(RPMVSF_NEEDPAYLOAD);
00538     REGISTER_ENUM(RPMVSF_NOSHA1HEADER);
00539     REGISTER_ENUM(RPMVSF_NOMD5HEADER);
00540     REGISTER_ENUM(RPMVSF_NODSAHEADER);
00541     REGISTER_ENUM(RPMVSF_NORSAHEADER);
00542     REGISTER_ENUM(RPMVSF_NOSHA1);
00543     REGISTER_ENUM(RPMVSF_NOMD5);
00544     REGISTER_ENUM(RPMVSF_NODSA);
00545     REGISTER_ENUM(RPMVSF_NORSA);
00546     REGISTER_ENUM(_RPMVSF_NODIGESTS);
00547     REGISTER_ENUM(_RPMVSF_NOSIGNATURES);
00548     REGISTER_ENUM(_RPMVSF_NOHEADER);
00549     REGISTER_ENUM(_RPMVSF_NOPAYLOAD);
00550 
00551     REGISTER_ENUM(TR_ADDED);
00552     REGISTER_ENUM(TR_REMOVED);
00553 
00554     REGISTER_ENUM(RPMDBI_PACKAGES);
00555 
00556     REGISTER_ENUM((int)RPMAL_NOMATCH);
00557 }

Generated on Wed Oct 29 02:23:25 2008 for rpm by  doxygen 1.5.1