On 03/28/2011 04:29 PM, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovskynpajkovs@redhat.com
src/cli/cli.c | 40 +++++++++++++++++- src/cli/report.cpp | 103 ++++++++++++++++++++++++++++++++++++++++++---- src/cli/report.h | 3 +- src/plugins/Makefile.am | 4 +- 4 files changed, 135 insertions(+), 15 deletions(-)
diff --git a/src/cli/cli.c b/src/cli/cli.c index 0c895a7..5cffc03 100644 --- a/src/cli/cli.c +++ b/src/cli/cli.c @@ -360,6 +360,9 @@ int main(int argc, char** argv) print_usage_and_die(argv[0]); }
- /* Get settings */
- load_event_config_data();
/* Do the selected operation. */ int exitcode = 0; switch (op)
@@ -409,15 +412,46 @@ int main(int argc, char** argv) } case OPT_INFO: {
if (run_analyze_event(dump_dir_name) != 0)
return 1;
/* Load crash_data from (possibly updated by analyze) dump dir */ struct dump_dir *dd = dd_opendir(dump_dir_name, /*flags:*/ 0); if (!dd) return -1;
===== start here ===
char *events_as_lines = list_possible_events(dd, NULL, "analyze");
dd_close(dd);
GList *list_events = NULL;
if (events_as_lines&& *events_as_lines)
{
char *events = events_as_lines;
while (*events)
{
char *end = strchrnul(events, '\n');
char *tmp = xstrndup(events, end - events);
list_events = g_list_append(list_events, tmp);
events = end;
if (!*events)
break;
events++;
}
char *event = select_event_option(list_events);
list_free_with_free(list_events);
int analyzer_result = run_analyze_event(dump_dir_name, event);
free(event);
if (analyzer_result != 0)
return 1;
}
/* Load crash_data from (possibly updated by analyze) dump dir */
dd = dd_opendir(dump_dir_name, /*flags:*/ 0);
if (!dd)
return -1;
crash_data_t *crash_data = create_crash_data_from_dump_dir(dd); dd_close(dd);
add_to_crash_data_ext(crash_data, CD_DUMPDIR, dump_dir_name, CD_FLAG_TXT + CD_FLAG_ISNOTEDITABLE);
- this code ^ is used in cli.c and report.cpp, how about make it into a function?
the rest seems ok - maybe we can make crash_data a global variable and share it between report.cpp and cli.c ?
Jirka