diff options
Diffstat (limited to 'src/report-python')
-rw-r--r-- | src/report-python/__init__.py | 9 | ||||
-rw-r--r-- | src/report-python/common.h | 9 | ||||
-rw-r--r-- | src/report-python/crash_data.c | 19 | ||||
-rw-r--r-- | src/report-python/dump_dir.c | 1 | ||||
-rw-r--r-- | src/report-python/reportmodule.c | 10 | ||||
-rw-r--r-- | src/report-python/run_event.c | 29 | ||||
-rwxr-xr-x | src/report-python/test_full | 2 | ||||
-rwxr-xr-x | src/report-python/test_full2 | 17 | ||||
-rwxr-xr-x | src/report-python/test_run_event_state1 | 4 |
9 files changed, 67 insertions, 33 deletions
diff --git a/src/report-python/__init__.py b/src/report-python/__init__.py index 892d7c2a..0b0f5685 100644 --- a/src/report-python/__init__.py +++ b/src/report-python/__init__.py @@ -119,11 +119,12 @@ def createAlertSignature(component, hashmarkername, hashvalue, summary, alertSig return cd def report(cd, io_unused): - dd = cd.create_dump_dir() - dir_name = dd.name - dd.close() + #dd = cd.create_dump_dir() + #dir_name = dd.name + #dd.close() #r = os.spawnlp(P_WAIT, "abrt-handle-crashdump", "abrt-handle-crashdump", "-d", dirname, "-e" , "report"); + ### Silmpler alternative: state = run_event_state() #state.logging_callback = logfunc - r = state.run_event(dir_name, "report") + r = state.run_event_on_crash_data(cd, "report") return r diff --git a/src/report-python/common.h b/src/report-python/common.h index f77e5a31..d6d209e9 100644 --- a/src/report-python/common.h +++ b/src/report-python/common.h @@ -18,6 +18,10 @@ */ #include <Python.h> +#include "dump_dir.h" +#include "crash_data.h" +#include "run_event.h" + /* exception object */ extern PyObject *ReportError; @@ -36,3 +40,8 @@ typedef struct { PyObject_HEAD struct dump_dir *dd; } p_dump_dir; + +typedef struct { + PyObject_HEAD + crash_data_t *cd; +} p_crash_data; diff --git a/src/report-python/crash_data.c b/src/report-python/crash_data.c index 8ae597c3..04a721cc 100644 --- a/src/report-python/crash_data.c +++ b/src/report-python/crash_data.c @@ -20,15 +20,8 @@ #include <structmember.h> #include <errno.h> -#include "crash_data.h" -#include "dump_dir.h" #include "common.h" -typedef struct { - PyObject_HEAD - crash_data_t *cd; -} p_crash_data; - static void p_crash_data_dealloc(PyObject *pself) { @@ -92,8 +85,8 @@ static PyObject *p_get_crash_data_item(PyObject *pself, PyObject *args) return Py_BuildValue("sI", ci->content, ci->flags); } -/* struct dump_dir *create_dump_dir(crash_data_t *crash_data, const char *base_dir_name); */ -static PyObject *p_create_dump_dir(PyObject *pself, PyObject *args) +/* struct dump_dir *create_dump_dir_from_crash_data(crash_data_t *crash_data, const char *base_dir_name); */ +static PyObject *p_create_dump_dir_from_crash_data(PyObject *pself, PyObject *args) { p_crash_data *self = (p_crash_data*)pself; const char *base_dir_name = NULL; @@ -104,7 +97,7 @@ static PyObject *p_create_dump_dir(PyObject *pself, PyObject *args) p_dump_dir *new_dd = PyObject_New(p_dump_dir, &p_dump_dir_type); if (!new_dd) return NULL; - struct dump_dir *dd = create_dump_dir(self->cd, base_dir_name); + struct dump_dir *dd = create_dump_dir_from_crash_data(self->cd, base_dir_name); if (!dd) { PyObject_Del((PyObject*)new_dd); @@ -121,9 +114,9 @@ static PyObject *p_create_dump_dir(PyObject *pself, PyObject *args) static PyMethodDef p_crash_data_methods[] = { /* method_name, func, flags, doc_string */ - { "add" , p_crash_data_add, METH_VARARGS }, - { "get" , p_get_crash_data_item, METH_VARARGS }, - { "create_dump_dir", p_create_dump_dir, METH_VARARGS }, + { "add" , p_crash_data_add , METH_VARARGS }, + { "get" , p_get_crash_data_item , METH_VARARGS }, + { "create_dump_dir", p_create_dump_dir_from_crash_data, METH_VARARGS }, { NULL } }; diff --git a/src/report-python/dump_dir.c b/src/report-python/dump_dir.c index 04a58d31..249a9478 100644 --- a/src/report-python/dump_dir.c +++ b/src/report-python/dump_dir.c @@ -22,7 +22,6 @@ #include <structmember.h> #include <errno.h> -#include "dump_dir.h" #include "common.h" /*** init/cleanup ***/ diff --git a/src/report-python/reportmodule.c b/src/report-python/reportmodule.c index 6dda73cf..bd74cff3 100644 --- a/src/report-python/reportmodule.c +++ b/src/report-python/reportmodule.c @@ -17,18 +17,16 @@ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include <Python.h> -#include "common.h" -#include "crash_data.h" -#include "dump_dir.h" +#include "common.h" PyObject *ReportError; static PyMethodDef module_methods[] = { /* method_name, func, flags, doc_string */ - { "dd_opendir" , p_dd_opendir, METH_VARARGS, NULL }, - { "dd_create" , p_dd_create, METH_VARARGS, NULL }, - { "delete_dump_dir", p_delete_dump_dir, METH_VARARGS, NULL }, + { "dd_opendir" , p_dd_opendir , METH_VARARGS }, + { "dd_create" , p_dd_create , METH_VARARGS }, + { "delete_dump_dir", p_delete_dump_dir, METH_VARARGS }, { NULL } }; diff --git a/src/report-python/run_event.c b/src/report-python/run_event.c index 0bef3b21..6131df8e 100644 --- a/src/report-python/run_event.c +++ b/src/report-python/run_event.c @@ -20,8 +20,9 @@ #include <structmember.h> #include <errno.h> -#include "run_event.h" #include "common.h" +#include "crash_data.h" +#include "run_event.h" typedef struct { PyObject_HEAD @@ -71,7 +72,7 @@ static void p_run_event_state_dealloc(PyObject *pself) /*** methods ***/ -/* First, C-level callback helpers for run_event(): */ +/* First, C-level callback helpers for run_event_on_FOO(): */ static int post_run_callback(const char *dump_dir_name, void *param) { PyObject *obj = (PyObject*)param; @@ -94,8 +95,8 @@ static char *logging_callback(char *log_line, void *param) return log_line; /* signaling to caller that we didnt consume the string */ } -/* int run_event(struct run_event_state *state, const char *dump_dir_name, const char *event); */ -static PyObject *p_run_event(PyObject *pself, PyObject *args) +/* int run_event_on_dir_name(struct run_event_state *state, const char *dump_dir_name, const char *event); */ +static PyObject *p_run_event_on_dir_name(PyObject *pself, PyObject *args) { p_run_event_state *self = (p_run_event_state*)pself; const char *dump_dir_name; @@ -104,7 +105,22 @@ static PyObject *p_run_event(PyObject *pself, PyObject *args) { return NULL; } - int r = run_event(self->state, dump_dir_name, event); + int r = run_event_on_dir_name(self->state, dump_dir_name, event); + PyObject *obj = Py_BuildValue("i", r); + return obj; +} + +/* int run_event_on_crash_data(struct run_event_state *state, crash_data_t *data, const char *event); */ +static PyObject *p_run_event_on_crash_data(PyObject *pself, PyObject *args) +{ + p_run_event_state *self = (p_run_event_state*)pself; + p_crash_data *cd; + const char *event; + if (!PyArg_ParseTuple(args, "O!s", &p_crash_data_type, &cd, &event)) + { + return NULL; + } + int r = run_event_on_crash_data(self->state, cd->cd, event); PyObject *obj = Py_BuildValue("i", r); return obj; } @@ -177,7 +193,8 @@ static int set_logging_callback(PyObject *pself, PyObject *callback, void *unuse static PyMethodDef p_run_event_state_methods[] = { /* method_name, func, flags, doc_string */ - { "run_event", p_run_event, METH_VARARGS }, + { "run_event_on_dir_name" , p_run_event_on_dir_name , METH_VARARGS }, + { "run_event_on_crash_data", p_run_event_on_crash_data, METH_VARARGS }, { NULL } }; diff --git a/src/report-python/test_full b/src/report-python/test_full index 05020f05..103535dd 100755 --- a/src/report-python/test_full +++ b/src/report-python/test_full @@ -12,7 +12,7 @@ def run_event_on_crash_data(cd, event, log_function = None): if log_function: # maybe if callable(log_function)? run_state.logging_callback = log_function print "Running event:", event - r = run_state.run_event(dir_name, event) + r = run_state.run_event_on_dir_name(dir_name, event) print "Deleting:", dir_name delete_dump_dir(dir_name) return r; diff --git a/src/report-python/test_full2 b/src/report-python/test_full2 new file mode 100755 index 00000000..734946eb --- /dev/null +++ b/src/report-python/test_full2 @@ -0,0 +1,17 @@ +#!/usr/bin/python + +import sys +from report import * + +def log_function(line): + print "LOG:", line + +cd = crash_data() +cd.add("foo", "bar") +cd.add("analyzer", "baz", CD_FLAG_ISNOTEDITABLE) + +st = run_event_state() +st.logging_callback = log_function +r = st.run_event_on_crash_data(cd, "post-create") + +print "Result:", r diff --git a/src/report-python/test_run_event_state1 b/src/report-python/test_run_event_state1 index fa5d61a8..b30f8b55 100755 --- a/src/report-python/test_run_event_state1 +++ b/src/report-python/test_run_event_state1 @@ -20,8 +20,8 @@ if not dd: dd.save_text("analyzer", "foo") dd.close() -res.run_event("testdir", "post-create") +res.run_event_on_dir_name("testdir", "post-create") dd = dd_opendir("testdir") -#dd.delete() +dd.delete() dd.close() |