3eb0acb566fe46967d2cf43e79be148d80513d4d
[platform/upstream/rpm.git] / python / rpmmacro-py.c
1 #include "rpmsystem-py.h"
2
3 #include <rpm/rpmmacro.h>
4
5 #include "rpmmacro-py.h"
6
7 PyObject *
8 rpmmacro_AddMacro(PyObject * self, PyObject * args, PyObject * kwds)
9 {
10     const char * name, * val;
11     char * kwlist[] = {"name", "value", NULL};
12
13     if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss:AddMacro", kwlist,
14             &name, &val))
15         return NULL;
16
17     addMacro(NULL, name, NULL, val, -1);
18
19     Py_RETURN_NONE;
20 }
21
22 PyObject *
23 rpmmacro_DelMacro(PyObject * self, PyObject * args, PyObject * kwds)
24 {
25     const char * name;
26     char * kwlist[] = {"name", NULL};
27
28     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s:DelMacro", kwlist, &name))
29         return NULL;
30
31     delMacro(NULL, name);
32
33     Py_RETURN_NONE;
34 }
35
36 PyObject * 
37 rpmmacro_ExpandMacro(PyObject * self, PyObject * args, PyObject * kwds)
38 {
39     const char *macro;
40     PyObject *res;
41     int num = 0;
42     char * kwlist[] = {"macro", "numeric", NULL};
43
44     if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &macro, &num))
45         return NULL;
46
47     if (num) {
48         res = Py_BuildValue("i", rpmExpandNumeric(macro));
49     } else {
50         char *str = rpmExpand(macro, NULL);
51         res = Py_BuildValue("s", str);
52         free(str);
53     }
54     return res;
55 }
56