/
githubmirror
/
rpm
Обзор
Документация
Войти
/
githubmirror
/
rpm
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
python/rpmmacro-py.c
63 строки
1 KB
Petr Viktorin
Python module isolation: Get the module state
23 июн 2025, 17:58
23 июн 2025, 17:58
83e621b
Код
Авторство
О чём код?
#include "rpmsystem-py.h" #include <rpm/rpmmacro.h> #include "header-py.h" /* XXX for pyrpmError, doh */ #include "rpmmacro-py.h" PyObject * rpmmacro_AddMacro(PyObject * self, PyObject * args, PyObject * kwds) { const char * name, * val; char * kwlist[] = {"name", "value", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss:AddMacro", kwlist, &name, &val)) return NULL; rpmPushMacro(NULL, name, NULL, val, -1); Py_RETURN_NONE; } PyObject * rpmmacro_DelMacro(PyObject * self, PyObject * args, PyObject * kwds) { const char * name; char * kwlist[] = {"name", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kwds, "s:DelMacro", kwlist, &name)) return NULL; rpmPopMacro(NULL, name); Py_RETURN_NONE; } PyObject * rpmmacro_ExpandMacro(PyObject *mod, PyObject * args, PyObject * kwds) { const char *macro; PyObject *res = NULL; int num = 0; char * kwlist[] = {"macro", "numeric", NULL}; rpmmodule_state_t *modstate = rpmModState_FromModule(mod); if (!modstate) { return NULL; } if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, ¯o, &num)) return NULL; if (num) { res = Py_BuildValue("i", rpmExpandNumeric(macro)); } else { char *str = NULL; if (rpmExpandMacros(NULL, macro, &str, 0) < 0) PyErr_SetString(modstate->pyrpmError, "error expanding macro"); else res = utf8FromString(str); free(str); } return res; }