1 #include "rpmsystem-py.h"
3 #include <rpm/rpmsign.h>
5 static char rpms__doc__[] =
8 static int parseSignArgs(PyObject * args, PyObject *kwds,
9 const char **path, struct rpmSignArgs *sargs)
11 char * kwlist[] = { "path", "keyid", "hashalgo", NULL };
13 memset(sargs, 0, sizeof(*sargs));
14 return PyArg_ParseTupleAndKeywords(args, kwds, "s|si", kwlist,
15 path, &sargs->keyid, &sargs->hashalgo);
18 static PyObject * addSign(PyObject * self, PyObject * args, PyObject *kwds)
20 const char *path = NULL;
21 struct rpmSignArgs sargs;
23 if (parseSignArgs(args, kwds, &path, &sargs))
26 return PyBool_FromLong(rpmPkgSign(path, &sargs) == 0);
29 static PyObject * delSign(PyObject * self, PyObject * args, PyObject *kwds)
31 const char *path = NULL;
32 struct rpmSignArgs sargs;
34 if (parseSignArgs(args, kwds, &path, &sargs))
37 return PyBool_FromLong(rpmPkgDelSign(path, &sargs) == 0);
41 Do any common preliminary work before python 2 vs python 3 module creation:
43 static int prepareInitModule(void)
48 static int initModule(PyObject *m)
53 static PyMethodDef modMethods[] = {
54 { "addSign", (PyCFunction) addSign, METH_VARARGS|METH_KEYWORDS, NULL },
55 { "delSign", (PyCFunction) delSign, METH_VARARGS|METH_KEYWORDS, NULL },
59 #if PY_MAJOR_VERSION >= 3
60 static struct PyModuleDef moduledef = {
61 PyModuleDef_HEAD_INIT,
63 rpms__doc__, /* m_doc */
65 modMethods, /* m_methods */
67 NULL, /* m_traverse */
72 PyObject * PyInit__rpms(void); /* XXX eliminate gcc warning */
73 PyObject * PyInit__rpms(void)
77 if (!prepareInitModule())
79 m = PyModule_Create(&moduledef);
80 if (m == NULL || !initModule(m)) {
87 void init_rpms(void); /* XXX eliminate gcc warning */
92 if (!prepareInitModule())
95 m = Py_InitModule3("_rpms", modMethods, rpms__doc__);