33 #define PyObject_HEAD int _PyObjectHead
47 #if PY_VERSION_HEX < 0x02050000
54 static PyObject *
expandMacro(PyObject *
self, PyObject * args, PyObject * kwds)
58 if (!PyArg_ParseTuple(args,
"s", ¯o))
61 return Py_BuildValue(
"s",
rpmExpand(macro, NULL));
66 static PyObject *
archScore(PyObject * s, PyObject * args,
72 char * kwlist[] = {
"arch", NULL};
74 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"s", kwlist, &arch))
77 platform =
rpmExpand(arch,
"-",
"%{_vendor}",
"-",
"%{_os}", NULL);
79 platform =
_free(platform);
81 return Py_BuildValue(
"i", score);
91 char * kwlist[] = {
"platform", NULL};
93 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"s", kwlist, &platform))
98 return Py_BuildValue(
"i", score);
105 PyObject *caught, *o;
108 sigset_t newMask, oldMask;
110 if (!PyList_Check(check)) {
111 PyErr_SetString(PyExc_TypeError,
"list expected");
115 llen = PyList_Size(check);
116 caught = PyList_New(0);
119 (void) sigfillset(&newMask);
120 (void) sigprocmask(SIG_BLOCK, &newMask, &oldMask);
122 for (i = 0; i < llen; i++) {
123 o = PyList_GetItem(check, i);
124 signum = PyInt_AsLong(o);
126 PyList_Append(caught, o);
129 (void) sigprocmask(SIG_SETMASK, &oldMask, NULL);
138 if (!PyArg_ParseTuple(args,
":checkSignals"))
return NULL;
146 static PyObject *
setLogFile (PyObject *
self, PyObject * args, PyObject *kwds)
148 PyObject * fop = NULL;
150 char * kwlist[] = {
"fileObject", NULL};
152 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"|O:logSetFile", kwlist, &fop))
156 if (!PyFile_Check(fop)) {
157 PyErr_SetString(
pyrpmError,
"requires file object");
160 fp = PyFile_AsFile(fop);
166 return (PyObject *) Py_None;
175 char * kwlist[] = {
"level", NULL};
177 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &level))
183 return (PyObject *) Py_None;
191 char * kwlist[] = {
"promote", NULL};
193 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist,
198 return (PyObject *) Py_None;
203 static PyObject *
setStats (PyObject *
self, PyObject * args, PyObject * kwds)
205 char * kwlist[] = {
"stats", NULL};
207 if (!PyArg_ParseTupleAndKeywords(args, kwds,
"i", kwlist, &
_rpmts_stats))
211 return (PyObject *) Py_None;
218 {
"TransactionSet", (PyCFunction)
rpmts_Create, METH_VARARGS|METH_KEYWORDS,
219 "rpm.TransactionSet([rootDir, [db]]) -> ts\n\
220 - Create a transaction set.\n" },
222 #
if Py_TPFLAGS_HAVE_ITER
223 {
"newrc", (PyCFunction)
rpmrc_Create, METH_VARARGS|METH_KEYWORDS,
226 {
"addMacro", (PyCFunction)
rpmrc_AddMacro, METH_VARARGS|METH_KEYWORDS,
228 {
"delMacro", (PyCFunction)
rpmrc_DelMacro, METH_VARARGS|METH_KEYWORDS,
230 {
"expandMacro", (PyCFunction)
expandMacro, METH_VARARGS|METH_KEYWORDS,
233 {
"archscore", (PyCFunction)
archScore, METH_VARARGS|METH_KEYWORDS,
235 {
"platformscore", (PyCFunction)
platformScore, METH_VARARGS|METH_KEYWORDS,
240 {
"checkSignals", (PyCFunction)
checkSignals, METH_VARARGS,
243 {
"headerLoad", (PyCFunction)
hdrLoad, METH_VARARGS|METH_KEYWORDS,
247 {
"readHeaderListFromFD", (PyCFunction)
rpmHeaderFromFD, METH_VARARGS|METH_KEYWORDS,
249 {
"readHeaderListFromFile", (PyCFunction)
rpmHeaderFromFile, METH_VARARGS|METH_KEYWORDS,
254 {
"setLogFile", (PyCFunction)
setLogFile, METH_VARARGS|METH_KEYWORDS,
257 {
"versionCompare", (PyCFunction)
versionCompare, METH_VARARGS|METH_KEYWORDS,
259 {
"labelCompare", (PyCFunction)
labelCompare, METH_VARARGS|METH_KEYWORDS,
261 {
"setVerbosity", (PyCFunction)
setVerbosity, METH_VARARGS|METH_KEYWORDS,
263 {
"setEpochPromote", (PyCFunction)
setEpochPromote, METH_VARARGS|METH_KEYWORDS,
265 {
"setStats", (PyCFunction)
setStats, METH_VARARGS|METH_KEYWORDS,
268 {
"dsSingle", (PyCFunction)
rpmds_Single, METH_VARARGS|METH_KEYWORDS,
269 "rpm.dsSingle(TagN, N, [EVR, [Flags]] -> ds\n\
270 - Create a single element dependency set.\n" },
292 PyObject * d, *o, * tag = NULL, * dict;
298 #if Py_TPFLAGS_HAVE_ITER
299 if (PyType_Ready(&
hdr_Type) < 0)
return;
313 if (PyType_Ready(&spec_Type) < 0)
return;
329 d = PyModule_GetDict(m);
332 pyrpmError = PyString_FromString(
"_rpm.error");
336 pyrpmError = PyErr_NewException(
"_rpm.error", NULL, NULL);
341 #if Py_TPFLAGS_HAVE_ITER
343 PyModule_AddObject(m,
"hdr", (PyObject *) &
hdr_Type);
346 PyModule_AddObject(m,
"al", (PyObject *) &
rpmal_Type);
349 PyModule_AddObject(m,
"ds", (PyObject *) &
rpmds_Type);
352 PyModule_AddObject(m,
"fd", (PyObject *) &
rpmfd_Type);
355 PyModule_AddObject(m,
"fts", (PyObject *) &
rpmfts_Type);
358 PyModule_AddObject(m,
"fi", (PyObject *) &
rpmfi_Type);
361 PyModule_AddObject(m,
"mi", (PyObject *) &
rpmmi_Type);
364 PyModule_AddObject(m,
"ps", (PyObject *) &
rpmps_Type);
367 PyModule_AddObject(m,
"rc", (PyObject *) &
rpmrc_Type);
370 PyModule_AddObject(m,
"te", (PyObject *) &
rpmte_Type);
373 PyModule_AddObject(m,
"ts", (PyObject *) &
rpmts_Type);
375 Py_INCREF(&spec_Type);
376 PyModule_AddObject(m,
"spec", (PyObject *) &spec_Type);
388 spec_Type.ob_type = &PyType_Type;
397 PyDict_SetItem(dict, tag, o=PyString_FromString(
rpmTagTable[i].name + 7));
401 while (extensions->
name) {
404 PyDict_SetItemString(d, (
char *) extensions->
name, o=PyCObject_FromVoidPtr(ext, NULL));
406 PyDict_SetItem(dict, tag, o=PyString_FromString(ext->
name + 7));
412 PyDict_SetItemString(d,
"tagnames", dict);
416 #define REGISTER_ENUM(val) \
417 PyDict_SetItemString(d, #val, o=PyInt_FromLong( val )); \