summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2010-12-15 06:15:27 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2010-12-15 06:15:27 +0100
commit2fa1f3ac7f960e4bf306e53c1aac06fe0e31a4ba (patch)
treeeecbcd552c7872f0b41756abcb9a3e81113b99d3 /src
parentb1f4a3256004e8f12c15511d2b77074a3002b9f2 (diff)
downloadabrt-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.am4
-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.c99
-rw-r--r--src/report-python/py_crash_dump.h30
-rw-r--r--src/report-python/reportmodule.c24
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");