|
|
2ff057 |
#include "rpmsystem-py.h"
|
|
|
2ff057 |
|
|
|
2ff057 |
#include <rpm/rpmsign.h>
|
|
|
2ff057 |
|
|
|
2ff057 |
static char rpms__doc__[] =
|
|
|
2ff057 |
"";
|
|
|
2ff057 |
|
|
|
2ff057 |
static int parseSignArgs(PyObject * args, PyObject *kwds,
|
|
|
2ff057 |
const char **path, struct rpmSignArgs *sargs)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
char * kwlist[] = { "path", "keyid", "hashalgo", NULL };
|
|
|
2ff057 |
|
|
|
2ff057 |
memset(sargs, 0, sizeof(*sargs));
|
|
|
2ff057 |
return PyArg_ParseTupleAndKeywords(args, kwds, "s|si", kwlist,
|
|
|
2ff057 |
path, &sargs->keyid, &sargs->hashalgo);
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
static PyObject * addSign(PyObject * self, PyObject * args, PyObject *kwds)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
const char *path = NULL;
|
|
|
2ff057 |
struct rpmSignArgs sargs;
|
|
|
2ff057 |
|
|
|
2ff057 |
if (!parseSignArgs(args, kwds, &path, &sargs))
|
|
|
2ff057 |
return NULL;
|
|
|
2ff057 |
|
|
|
2ff057 |
return PyBool_FromLong(rpmPkgSign(path, &sargs) == 0);
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
static PyObject * delSign(PyObject * self, PyObject * args, PyObject *kwds)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
const char *path = NULL;
|
|
|
2ff057 |
struct rpmSignArgs sargs;
|
|
|
2ff057 |
|
|
|
2ff057 |
if (!parseSignArgs(args, kwds, &path, &sargs))
|
|
|
2ff057 |
return NULL;
|
|
|
2ff057 |
|
|
|
2ff057 |
return PyBool_FromLong(rpmPkgDelSign(path, &sargs) == 0);
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
/*
|
|
|
2ff057 |
Do any common preliminary work before python 2 vs python 3 module creation:
|
|
|
2ff057 |
*/
|
|
|
2ff057 |
static int prepareInitModule(void)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
return 1;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
static int initModule(PyObject *m)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
return 1;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
|
|
|
2ff057 |
static PyMethodDef modMethods[] = {
|
|
|
2ff057 |
{ "addSign", (PyCFunction) addSign, METH_VARARGS|METH_KEYWORDS, NULL },
|
|
|
2ff057 |
{ "delSign", (PyCFunction) delSign, METH_VARARGS|METH_KEYWORDS, NULL },
|
|
|
2ff057 |
{ NULL },
|
|
|
2ff057 |
};
|
|
|
2ff057 |
|
|
|
2ff057 |
#if PY_MAJOR_VERSION >= 3
|
|
|
2ff057 |
static struct PyModuleDef moduledef = {
|
|
|
2ff057 |
PyModuleDef_HEAD_INIT,
|
|
|
2ff057 |
"_rpms", /* m_name */
|
|
|
2ff057 |
rpms__doc__, /* m_doc */
|
|
|
2ff057 |
0, /* m_size */
|
|
|
2ff057 |
modMethods, /* m_methods */
|
|
|
2ff057 |
NULL, /* m_reload */
|
|
|
2ff057 |
NULL, /* m_traverse */
|
|
|
2ff057 |
NULL, /* m_clear */
|
|
|
2ff057 |
NULL /* m_free */
|
|
|
2ff057 |
};
|
|
|
2ff057 |
|
|
|
2ff057 |
PyObject * PyInit__rpms(void); /* XXX eliminate gcc warning */
|
|
|
2ff057 |
PyObject * PyInit__rpms(void)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
PyObject *m;
|
|
|
2ff057 |
|
|
|
2ff057 |
if (!prepareInitModule())
|
|
|
2ff057 |
return NULL;
|
|
|
2ff057 |
m = PyModule_Create(&moduledef);
|
|
|
2ff057 |
if (m == NULL || !initModule(m)) {
|
|
|
2ff057 |
Py_XDECREF(m);
|
|
|
2ff057 |
m = NULL;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
return m;
|
|
|
2ff057 |
}
|
|
|
2ff057 |
#else
|
|
|
2ff057 |
void init_rpms(void); /* XXX eliminate gcc warning */
|
|
|
2ff057 |
void init_rpms(void)
|
|
|
2ff057 |
{
|
|
|
2ff057 |
PyObject *m;
|
|
|
2ff057 |
|
|
|
2ff057 |
if (!prepareInitModule())
|
|
|
2ff057 |
return;
|
|
|
2ff057 |
|
|
|
2ff057 |
m = Py_InitModule3("_rpms", modMethods, rpms__doc__);
|
|
|
2ff057 |
if (m) initModule(m);
|
|
|
2ff057 |
}
|
|
|
2ff057 |
#endif
|