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

Generated on Fri Oct 12 08:44:54 2007 for rpm by  doxygen 1.5.2