diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-12-15 06:15:27 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-12-15 06:15:27 +0100 |
commit | 2fa1f3ac7f960e4bf306e53c1aac06fe0e31a4ba (patch) | |
tree | eecbcd552c7872f0b41756abcb9a3e81113b99d3 /src | |
parent | b1f4a3256004e8f12c15511d2b77074a3002b9f2 (diff) | |
download | abrt-2fa1f3ac7f960e4bf306e53c1aac06fe0e31a4ba.tar.gz abrt-2fa1f3ac7f960e4bf306e53c1aac06fe0e31a4ba.tar.xz abrt-2fa1f3ac7f960e4bf306e53c1aac06fe0e31a4ba.zip |
simplify python wrapper code
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/report-python/Makefile.am | 4 | ||||
-rw-r--r-- | src/report-python/common.h (renamed from src/report-python/pyreport_common.h) | 5 | ||||
-rw-r--r-- | src/report-python/crash_dump.c | 99 | ||||
-rw-r--r-- | src/report-python/py_crash_dump.h | 30 | ||||
-rw-r--r-- | src/report-python/reportmodule.c | 24 |
5 files changed, 56 insertions, 106 deletions
diff --git a/src/report-python/Makefile.am b/src/report-python/Makefile.am index 9c7e86d7..75d0c1d8 100644 --- a/src/report-python/Makefile.am +++ b/src/report-python/Makefile.am @@ -6,8 +6,8 @@ pyreportexec_LTLIBRARIES = _pyreport.la _pyreport_la_SOURCES = \ reportmodule.c \ - crash_dump.c py_crash_dump.h \ - pyreport_common.h + crash_dump.c \ + common.h _pyreport_la_CPPFLAGS = \ -I$(srcdir)/../include/report -I$(srcdir)/../include \ -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" \ diff --git a/src/report-python/pyreport_common.h b/src/report-python/common.h index c536827f..b3ae61b4 100644 --- a/src/report-python/pyreport_common.h +++ b/src/report-python/common.h @@ -16,7 +16,10 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ - #include <Python.h> + +/* exception object */ extern PyObject *ReportError; +/* crash_data type object */ +extern PyTypeObject p_crash_data_type; diff --git a/src/report-python/crash_dump.c b/src/report-python/crash_dump.c index 4ca7cf22..64cc89d5 100644 --- a/src/report-python/crash_dump.c +++ b/src/report-python/crash_dump.c @@ -21,7 +21,8 @@ #include <errno.h> #include "crash_dump.h" -#include "pyreport_common.h" +#include "dump_dir.h" +#include "common.h" typedef struct { PyObject_HEAD @@ -31,7 +32,7 @@ typedef struct { static void p_crash_data_dealloc(PyObject *pself) { - p_crash_data* self = (p_crash_data*)pself; + p_crash_data *self = (p_crash_data*)pself; free_crash_data(self->cd); self->cd = NULL; self->ob_type->tp_free((PyObject*)self); @@ -62,16 +63,18 @@ void add_to_crash_data_ext(crash_data_t *crash_data, unsigned flags); */ -static PyObject *p_crash_data_add_ext(PyObject *pself, PyObject *args, PyObject *kwds) +static PyObject *p_crash_data_add_ext(PyObject *pself, PyObject *args) { p_crash_data *self = (p_crash_data*)pself; const char *name; const char *content; int FLAGS; - if(!PyArg_ParseTuple(args, "ssi", &name, &content, &FLAGS)) + if (!PyArg_ParseTuple(args, "ssi", &name, &content, &FLAGS)) { - PyErr_SetString(ReportError, strerror(errno)); + /* PyArg_ParseTuple raises the exception saying why it fails + * eg: TypeError: function takes exactly 2 arguments (1 given) + */ return NULL; } add_to_crash_data_ext(self->cd, name, content, FLAGS); @@ -79,17 +82,14 @@ static PyObject *p_crash_data_add_ext(PyObject *pself, PyObject *args, PyObject /* every function returns PyObject to return void we need to do this */ Py_RETURN_NONE; } -static PyObject *p_crash_data_add(PyObject *pself, PyObject *args, PyObject *kwds) +static PyObject *p_crash_data_add(PyObject *pself, PyObject *args) { p_crash_data *self = (p_crash_data*)pself; const char *name; const char *content; - if(!PyArg_ParseTuple(args, "ss", &name, &content)) + if (!PyArg_ParseTuple(args, "ss", &name, &content)) { - /* PyArg_ParseTuple raises the exception saying why it fails - * eg: TypeError: function takes exactly 2 arguments (1 given) - */ return NULL; } add_to_crash_data(self->cd, name, content); @@ -105,12 +105,11 @@ static inline struct crash_item *get_crash_data_item_or_NULL(crash_data_t *crash } */ -static PyObject *p_get_crash_data_item(PyObject *pself, PyObject *args, PyObject *kwds) +static PyObject *p_get_crash_data_item(PyObject *pself, PyObject *args) { p_crash_data *self = (p_crash_data*)pself; - const char *key; - if(!PyArg_ParseTuple(args, "s", &key)) + if (!PyArg_ParseTuple(args, "s", &key)) { return NULL; } @@ -123,77 +122,37 @@ static PyObject *p_create_crash_dump_dir(PyObject *pself, PyObject *args) { p_crash_data *self = (p_crash_data*)pself; struct dump_dir *dd = create_crash_dump_dir(self->cd); - if(dd == NULL) + if (dd == NULL) { PyErr_SetString(ReportError, "Can't create the dump dir"); return NULL; } //FIXME: return a python representation of dump_dir, when we have it.. + dd_close(dd); Py_RETURN_NONE; } static PyMemberDef p_crash_data_members[] = { - {NULL} /* Sentinel */ + { NULL } }; static PyMethodDef p_crash_data_methods[] = { - {"add", (PyCFunction)p_crash_data_add, METH_VARARGS, - "Adds item to the crash data using default flags" - }, - {"add_ext", (PyCFunction)p_crash_data_add_ext, METH_VARARGS, - "Adds item to the crash data" - }, - {"get", (PyCFunction)p_get_crash_data_item, METH_VARARGS, - "Gets the value of item indexed by the key" - }, - {"to_dump_dir", (PyCFunction)p_create_crash_dump_dir, METH_NOARGS, - "Saves the crash_data to"LOCALSTATEDIR"/run/abrt/tmp-<pid>-<time>" - }, - {NULL} /* Sentinel */ + { "add" , p_crash_data_add, METH_VARARGS, "Adds item to the crash data using default flags" }, + { "add_ext" , p_crash_data_add_ext, METH_VARARGS, "Adds item to the crash data" }, + { "get" , p_get_crash_data_item, METH_VARARGS, "Gets the value of item indexed by the key" }, + { "to_dump_dir", p_create_crash_dump_dir, METH_NOARGS, "Saves the crash_data to"LOCALSTATEDIR"/run/abrt/tmp-<pid>-<time>" }, + { NULL } }; PyTypeObject p_crash_data_type = { PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "report.crash_data", /*tp_name*/ - sizeof(p_crash_data), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - p_crash_data_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "crash_data objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - p_crash_data_methods, /* tp_methods */ - p_crash_data_members, /* tp_members */ - 0, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - p_crash_data_init, /* tp_init */ - 0, /* tp_alloc */ - p_crash_data_new, /* tp_new */ -}; - -PyMethodDef module_methods[] = { - {NULL} /* Sentinel */ + .tp_name = "report.crash_data", + .tp_basicsize = sizeof(p_crash_data), + .tp_dealloc = p_crash_data_dealloc, + .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, + .tp_doc = "crash_data objects", + .tp_methods = p_crash_data_methods, + .tp_members = p_crash_data_members, + .tp_init = p_crash_data_init, + .tp_new = p_crash_data_new, }; diff --git a/src/report-python/py_crash_dump.h b/src/report-python/py_crash_dump.h deleted file mode 100644 index 93ce5f84..00000000 --- a/src/report-python/py_crash_dump.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - Copyright (C) 2009 Abrt team. - Copyright (C) 2009 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 <Python.h> - -void p_crash_data_dealloc(PyObject *pself); -PyObject *p_crash_data_new(PyTypeObject *type, PyObject *args, PyObject *kwds); -int p_crash_data_init(PyObject *pself, PyObject *args, PyObject *kwds); -PyObject *p_crash_data_add(PyObject *pself, PyObject *args, PyObject *kwds); - -/* crash_data object */ -extern PyTypeObject p_crash_data_type; -/* crash_data methods */ -extern PyMethodDef module_methods[]; diff --git a/src/report-python/reportmodule.c b/src/report-python/reportmodule.c index 7955ab83..6d44d493 100644 --- a/src/report-python/reportmodule.c +++ b/src/report-python/reportmodule.c @@ -1,5 +1,23 @@ +/* + 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 <Python.h> -#include "py_crash_dump.h" +#include "common.h" PyObject *ReportError; @@ -13,11 +31,11 @@ init_pyreport(void) if (PyType_Ready(&p_crash_data_type) < 0) { - printf("PyType_Ready(&p_crash_data_type) < 0"); + printf("PyType_Ready(&p_crash_data_type) < 0\n"); return; } - m = Py_InitModule3("_pyreport", module_methods, "Python wrapper around crash_data_t"); + m = Py_InitModule3("_pyreport", /*module_methods:*/ NULL, "Python wrapper for libreport"); if (m == NULL) { printf("m == NULL\n"); |