/* Copyright (C) 2010 Abrt team. Copyright (C) 2010 RedHat inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include #include "libabrt.h" #include "problem_data.h" #include "common.h" /* C: void notify_new_path(const char *path); */ PyObject *p_notify_new_path(PyObject *pself, PyObject *args) { const char *path; if (!PyArg_ParseTuple(args, "s", &path)) { return NULL; } notify_new_path(path); Py_RETURN_NONE; } static PyObject * load_settings_to_dict(const char *file, int (*loader)(const char *, map_string_t *)) { PyObject *dict = NULL; map_string_t *settings = new_map_string(); if (!loader(file, settings)) { PyErr_SetString(PyExc_OSError, "Failed to load configuration file."); goto lacf_error; } dict = PyDict_New(); if (dict == NULL) { goto lacf_error; } map_string_iter_t iter; const char *key = NULL; const char *value = NULL; init_map_string_iter(&iter, settings); while(next_map_string_iter(&iter, &key, &value)) { if (0 != PyDict_SetItemString(dict, key, PyUnicode_FromString(value))) { goto lacf_error; } } free_map_string(settings); return dict; lacf_error: Py_XDECREF(dict); free_map_string(settings); return NULL; } /* C: void load_abrt_conf_file(const char *file, map_string_t *settings); */ PyObject *p_load_conf_file(PyObject *pself, PyObject *args) { const char *file; if (!PyArg_ParseTuple(args, "s", &file)) { return NULL; } return load_settings_to_dict(file, load_abrt_conf_file); } /* C: void load_abrt_plugin_conf_file(const char *file, map_string_t *settings); */ PyObject *p_load_plugin_conf_file(PyObject *pself, PyObject *args) { const char *file; if (!PyArg_ParseTuple(args, "s", &file)) { return NULL; } return load_settings_to_dict(file, load_abrt_plugin_conf_file); }