Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/include/abrt_crash_dump.h | 1 + src/include/report/dump_dir.h | 1 + src/lib/crash_dump.c | 31 +++++++++++++++++++++++++++++++ src/lib/dump_dir.c | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/src/include/abrt_crash_dump.h b/src/include/abrt_crash_dump.h index 9ecbf56..aa62000 100644 --- a/src/include/abrt_crash_dump.h +++ b/src/include/abrt_crash_dump.h @@ -70,6 +70,7 @@ // (a string with "\n" terminated event names) #define CD_EVENTS "Events"
+extern const char *abrt_known_files[];
#ifdef __cplusplus extern "C" { diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index bf3b120..913eca1 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -58,6 +58,7 @@ char* dd_load_text(const struct dump_dir *dd, const char *name); void dd_save_text(struct dump_dir *dd, const char *name, const char *data); void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned size); void dd_delete(struct dump_dir *dd); +char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files);
void delete_dump_dir(const char *dd_dir);
diff --git a/src/lib/crash_dump.c b/src/lib/crash_dump.c index 189ec9c..c7f44e5 100644 --- a/src/lib/crash_dump.c +++ b/src/lib/crash_dump.c @@ -19,6 +19,37 @@ #include "abrtlib.h" #include "abrt_crash_dump.h"
+const char *abrt_known_files[] = { + FILENAME_ANALYZER , + FILENAME_EXECUTABLE , + FILENAME_BINARY , + FILENAME_CMDLINE , + FILENAME_REASON , + FILENAME_COREDUMP , + FILENAME_MEMORYMAP , + FILENAME_DUPHASH , + FILENAME_CRASH_FUNCTION , + FILENAME_ARCHITECTURE , + FILENAME_KERNEL , + FILENAME_TIME , + FILENAME_RELEASE , + FILENAME_PACKAGE , + FILENAME_COMPONENT , + FILENAME_DESCRIPTION , + FILENAME_COMMENT , + FILENAME_REPRODUCE , + FILENAME_RATING , + FILENAME_HOSTNAME , + FILENAME_REMOTE , + FILENAME_TAINTED , + FILENAME_UID , + FILENAME_UUID , + FILENAME_INFORMALL , + FILENAME_COUNT , + FILENAME_MESSAGE , + NULL +}; + static void free_crash_item(void *ptr) { if (ptr) diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 8e1744a..0e0b5f1 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -503,6 +503,47 @@ int dd_get_next_file(struct dump_dir *dd, char **short_name, char **full_name) return 0; }
+/* + * return list of unknown files in dump directory + */ +char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files) +{ + if (!dd->locked) + error_msg_and_die("dump_dir is not opened"); /* bug */ + + char *short_name = NULL; + unsigned size = 16; + unsigned idx = 0; + char **unknowns = xzalloc(sizeof(char*) * size); + + dd_init_next_file(dd); + while (dd_get_next_file(dd, &short_name, NULL)) + { + if (idx + 1 >= size) + { + size *= 2; + unknowns = xrealloc(unknowns, sizeof(char*) * size); + } + + const char *const *v = known_files; + while (*v) + { + if (strcmp(*v, short_name) == 0) + break; + v++; + } + + if (*v) + continue; + + unknowns[idx++] = short_name; + } + + unknowns[idx] = NULL; + + return unknowns; +} + /* Utility function */ void delete_dump_dir(const char *dd_dir) {
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index 913eca1..849525e 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -59,6 +59,7 @@ void dd_save_text(struct dump_dir *dd, const char *name, const char *data); void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned size); void dd_delete(struct dump_dir *dd); char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files); +void dd_add_attachments_name(struct dump_dir *dd, const char *name);
void delete_dump_dir(const char *dd_dir);
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 0e0b5f1..7f62be3 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -544,6 +544,40 @@ char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files) return unknowns; }
+/* + * todo: add flags OPEN, CLOSE to be able run OPEN | CLOSE + * and safe a few boring commands + */ +void dd_add_attachments_name(struct dump_dir *dd, const char *name) +{ + if (!dd->locked) + error_msg_and_die("dump_dir is not opened"); /* bug */ + + char *attach_list = dd_load_text_ext(dd, "attachments", + DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE); + if (!attach_list) + { + dd_save_text(dd, "attachments", name); + return; + } + + char *token = strtok(attach_list, "\n"); + while (token) + { + if (strcmp(name, token) == 0) + { + free(attach_list); + return; + } + + token = strtok(NULL, "\n"); + } + + char *add = xasprintf("%s\n%s\n", attach_list, name); + dd_save_text(dd, "attachments", add); + free(add); +} + /* Utility function */ void delete_dump_dir(const char *dd_dir) {
On Wed, 2010-12-15 at 20:03 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com
src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index 913eca1..849525e 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -59,6 +59,7 @@ void dd_save_text(struct dump_dir *dd, const char *name, const char *data); void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned size); void dd_delete(struct dump_dir *dd); char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files); +void dd_add_attachments_name(struct dump_dir *dd, const char *name);
Called only from abrt-action-generate-backtrace.c:
dd_add_attachments_name(dd, FILENAME_BACKTRACE);
How abrt-action-generate-backtrace.c knows that backtrace is to be attached? User is likely to be in a better position to decide what to attach and what not to attach.
Moreover, crash_data_t and dump_dir were looking as a semi-generic containers up to now.
This patch adds a new concept, "list of attachments" to the container (why to only one of them, btw?).
I think such change needs to be discussed before it can go into git. The explanation could start with "what problem does this change try to solve?".
On 12/16/2010 03:20 PM, Denys Vlasenko wrote:
On Wed, 2010-12-15 at 20:03 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovskynpajkovs@redhat.com
src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index 913eca1..849525e 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -59,6 +59,7 @@ void dd_save_text(struct dump_dir *dd, const char *name, const char *data); void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned size); void dd_delete(struct dump_dir *dd); char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files); +void dd_add_attachments_name(struct dump_dir *dd, const char *name);
Called only from abrt-action-generate-backtrace.c:
dd_add_attachments_name(dd, FILENAME_BACKTRACE);
How abrt-action-generate-backtrace.c knows that backtrace is to be attached? User is likely to be in a better position to decide what to attach and what not to attach.
We attaching backtrace always so I did it as backwards compatibility, but you are right, this must be done in gui/cli.
Moreover, crash_data_t and dump_dir were looking as a semi-generic containers up to now.
This patch adds a new concept, "list of attachments" to the container (why to only one of them, btw?).
I think such change needs to be discussed before it can go into git. The explanation could start with "what problem does this change try to solve?".
Jiri asks me to implement machinery to add an attachment via gui/cli.
On Thu, 2010-12-16 at 15:39 +0100, Nikola Pajkovsky wrote:
Moreover, crash_data_t and dump_dir were looking as a semi-generic containers up to now.
This patch adds a new concept, "list of attachments" to the container (why to only one of them, btw?).
I think such change needs to be discussed before it can go into git. The explanation could start with "what problem does this change try to solve?".
Jiri asks me to implement machinery to add an attachment via gui/cli.
Looks like we already have it: it's the CD_FLAG_BIN bit.
Every crash dump element which has that bit is a (possibly big and/or binary) file to be attached - as opposed to "some text".
What problems do you find when you try to use that bit as an indicator that this element to be attached?
On Tue, 04 Jan 2011 14:45:41 +0100, Denys Vlasenko dvlasenk@redhat.com wrote:
On Thu, 2010-12-16 at 15:39 +0100, Nikola Pajkovsky wrote:
Moreover, crash_data_t and dump_dir were looking as a semi-generic containers up to now.
This patch adds a new concept, "list of attachments" to the container (why to only one of them, btw?).
I think such change needs to be discussed before it can go into git. The explanation could start with "what problem does this change try to solve?".
Jiri asks me to implement machinery to add an attachment via gui/cli.
Looks like we already have it: it's the CD_FLAG_BIN bit.
Every crash dump element which has that bit is a (possibly big and/or binary) file to be attached - as opposed to "some text".
What problems do you find when you try to use that bit as an indicator that this element to be attached?
To be honest, I thought that CD_FLAG_BIN is only for a binary files. How do we make it? From GUI perspective there must be a function which tells what is attachment(that's why I create a file *attachment* to remember what is attachment). Jiri do you want to have that control?
On Wed, 2011-01-05 at 10:45 +0100, Nikola Pajkovsky wrote:
On Tue, 04 Jan 2011 14:45:41 +0100, Denys Vlasenko dvlasenk@redhat.com wrote:
On Thu, 2010-12-16 at 15:39 +0100, Nikola Pajkovsky wrote:
Moreover, crash_data_t and dump_dir were looking as a semi-generic containers up to now.
This patch adds a new concept, "list of attachments" to the container (why to only one of them, btw?).
I think such change needs to be discussed before it can go into git. The explanation could start with "what problem does this change try to solve?".
Jiri asks me to implement machinery to add an attachment via gui/cli.
Looks like we already have it: it's the CD_FLAG_BIN bit.
Every crash dump element which has that bit is a (possibly big and/or binary) file to be attached - as opposed to "some text".
What problems do you find when you try to use that bit as an indicator that this element to be attached?
To be honest, I thought that CD_FLAG_BIN is only for a binary files.
How do we make it?
If you need to add a new CD_FLAG_BIN element to crash_data_t, do it like this:
crash_data_t *cd = new_crash_data(); ... add_to_crash_data_ext(cd, "name", "file name", CD_FLAG_BIN);
If you create a crash_data_t by loading a dump dir:
crash_data_t *cd = create_crash_data_from_dump_dir(dd);
then it decides internally which elements are binary. The logic which decides "binari-ness" may need to be improved further.
From GUI perspective there must be a function which tells what is attachment(that's why I create a file *attachment* to remember what is attachment).
I don't understand. Can you explain (maybe with C code example) what functionality you need?
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index 849525e..a41b700 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -60,6 +60,7 @@ void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, uns void dd_delete(struct dump_dir *dd); char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files); void dd_add_attachments_name(struct dump_dir *dd, const char *name); +void dd_rm_attachments_name(struct dump_dir *dd, const char *name);
void delete_dump_dir(const char *dd_dir);
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 7f62be3..5537002 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -578,6 +578,38 @@ void dd_add_attachments_name(struct dump_dir *dd, const char *name) free(add); }
+/* + * todo: add flags OPEN, CLOSE to be able run OPEN | CLOSE + * and safe a few boring commands + */ +void dd_rm_attachments_name(struct dump_dir *dd, const char *name) +{ + if (!dd->locked) + error_msg_and_die("dump_dir is not opened"); /* bug */ + + char *attach_list = dd_load_text_ext(dd, "attachments", + DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE); + if (!attach_list) + return; + + struct strbuf *list = strbuf_new(); + char *token = strtok(attach_list, "\n"); + while (token) + { + if (strcmp(name, token) == 0) + { + token = strtok(NULL, "\n"); + continue; + } + + strbuf_append_strf(list, "%s\n", token); + token = strtok(NULL, "\n"); + } + + dd_save_text(dd, "attachments", list->buf); + strbuf_free(list); + free(attach_list); +} /* Utility function */ void delete_dump_dir(const char *dd_dir) {
use dd_{add,rm}_attachments_file() to add or remove file to attach.
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 37 +++++++++ src/plugins/abrt-action-bugzilla.cpp | 104 ++++++++++++++++++-------- src/plugins/abrt-action-generate-backtrace.c | 1 + 4 files changed, 111 insertions(+), 32 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index a41b700..0fd9c20 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -59,6 +59,7 @@ void dd_save_text(struct dump_dir *dd, const char *name, const char *data); void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned size); void dd_delete(struct dump_dir *dd); char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files); +char **dd_load_attachments_name(const struct dump_dir *dd); void dd_add_attachments_name(struct dump_dir *dd, const char *name); void dd_rm_attachments_name(struct dump_dir *dd, const char *name);
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 5537002..bf71dfd 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -610,6 +610,43 @@ void dd_rm_attachments_name(struct dump_dir *dd, const char *name) strbuf_free(list); free(attach_list); } + +/* + * read entire 'attachments' file + * return NULL if fail or char** (malloc'ed) array on success + */ +char **dd_load_attachments_name(const struct dump_dir *dd) +{ + if (!dd->locked) + error_msg_and_die("dump_dir is not opened"); /* bug */ + + char *attach_list = dd_load_text_ext(dd, "attachments", + DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE); + if (!attach_list) + return NULL; + + unsigned size = 16; + unsigned idx = 0; + char **attachments = xzalloc(sizeof(char*) * size); + + char *token = strtok(attach_list, "\n"); + while (token) + { + if (idx + 1 >= size) + { + size *= 2; + attachments = xrealloc(attachments, sizeof(char*) * size); + } + + attachments[idx++] = token; + token = strtok(NULL, "\n"); + } + + attachments[idx] = NULL; + + return attachments; +} + /* Utility function */ void delete_dump_dir(const char *dd_dir) { diff --git a/src/plugins/abrt-action-bugzilla.cpp b/src/plugins/abrt-action-bugzilla.cpp index 19acc4f..28487f3 100644 --- a/src/plugins/abrt-action-bugzilla.cpp +++ b/src/plugins/abrt-action-bugzilla.cpp @@ -112,7 +112,7 @@ struct ctx: public abrt_xmlrpc_conn { void get_bug_cc(xmlrpc_value* result_xml, struct bug_info* bz); int add_plus_one_cc(xmlrpc_int32 bug_id, const char* login); xmlrpc_int32 new_bug(crash_data_t *crash_data, int depend_on_bugno); - int add_attachments(const char* bug_id_str, crash_data_t *crash_data); + int add_attachments(const char* bug_id_str, char **att_name, char **att_body); int get_bug_info(struct bug_info* bz, xmlrpc_int32 bug_id); int add_comment(xmlrpc_int32 bug_id, const char* comment, bool is_private);
@@ -533,35 +533,29 @@ xmlrpc_int32 ctx::new_bug(crash_data_t *crash_data, int depend_on_bugno) return bug_id; }
-int ctx::add_attachments(const char* bug_id_str, crash_data_t *crash_data) +int ctx::add_attachments(const char* bug_id_str, char **att_name, char **att_body) { - GHashTableIter iter; - char *name; - struct crash_item *value; - g_hash_table_iter_init(&iter, crash_data); - while (g_hash_table_iter_next(&iter, (void**)&name, (void**)&value)) + for ( ; *att_name; att_name++, att_body++) { - const char *content = value->content; - - if ((value->flags & CD_FLAG_TXT) - && (strlen(content) > CD_TEXT_ATT_SIZE || (strcmp(name, FILENAME_BACKTRACE) == 0)) - ) { - char *encoded64 = encode_base64(content, strlen(content)); - char *filename = xasprintf("File: %s", name); - xmlrpc_value* result = call("bugzilla.addAttachment", "(s{s:s,s:s,s:s,s:s})", bug_id_str, - "description", filename, - "filename", name, - "contenttype", "text/plain", - "data", encoded64 - ); - free(encoded64); - free(filename); - if (!result) - return -1; + if (!att_body && !*att_body) + continue; + + char *encoded64 = encode_base64(*att_body, strlen(*att_body)); + char *filename = xasprintf("File: %s", *att_name); + xmlrpc_value* result = call("bugzilla.addAttachment", "(s{s:s,s:s,s:s,s:s})", bug_id_str, + "description", filename, + "filename", *att_name, + "contenttype", "text/plain", + "data", encoded64 + ); + free(encoded64); + free(filename); + if (!result) + return -1;
- xmlrpc_DECREF(result); - } + xmlrpc_DECREF(result); } + return 0; }
@@ -640,6 +634,32 @@ static void report_to_bugzilla( if (!dd) xfunc_die(); /* dd_opendir already emitted error msg */ crash_data_t *crash_data = load_crash_data_from_dump_dir(dd); + + char **att_name = NULL; + unsigned size = 16; + unsigned idx = 0; + char **att_body = NULL; + + att_name = dd_load_attachments_name(dd); + if (!att_name) + goto skip_attachments; + + att_body = (char **)xzalloc(sizeof(char*) * size); + for (unsigned ii = 0; att_name[ii]; ++ii) + { + if (idx + 1 >= size) + { + size *= 2; + att_body = (char **)xrealloc(att_body, sizeof(char*) * size); + } + + char *body = dd_load_text_ext(dd, *att_name, + DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE); + + att_body[ii] = body; + } + +skip_attachments: dd_close(dd);
const char *env; @@ -774,13 +794,24 @@ static void report_to_bugzilla( error_msg_and_die(_("Bugzilla entry creation failed")); }
- log("Adding attachments to bug %ld...", (long)bug_id); - char bug_id_str[sizeof(long)*3 + 2]; - sprintf(bug_id_str, "%ld", (long) bug_id); - int ret = bz_server.add_attachments(bug_id_str, crash_data); - if (ret == -1) + if (att_name && *att_name + && att_body && *att_body) { - throw_if_xml_fault_occurred(&bz_server.env); + log("Adding attachments to bug %ld...", (long)bug_id); + char bug_id_str[sizeof(long)*3 + 2]; + sprintf(bug_id_str, "%ld", (long) bug_id); + int ret = bz_server.add_attachments(bug_id_str, att_name, att_body); + + for ( ; att_name; att_name++, att_body++) + { + free(*att_name); + free(*att_body); + } + + if (ret == -1) + { + throw_if_xml_fault_occurred(&bz_server.env); + } }
log(_("Logging out...")); @@ -893,6 +924,15 @@ static void report_to_bugzilla(
free_crash_data(crash_data); bug_info_destroy(&bz); + + if (att_name && *att_name + && att_body && *att_body) + for ( ; att_name; att_name++, att_body++) + { + free(*att_name); + free(*att_body); + } + }
int main(int argc, char **argv) diff --git a/src/plugins/abrt-action-generate-backtrace.c b/src/plugins/abrt-action-generate-backtrace.c index a575a19..c576735 100644 --- a/src/plugins/abrt-action-generate-backtrace.c +++ b/src/plugins/abrt-action-generate-backtrace.c @@ -308,6 +308,7 @@ int main(int argc, char **argv) return 1;
dd_save_text(dd, FILENAME_BACKTRACE, backtrace_str); + dd_add_attachments_name(dd, FILENAME_BACKTRACE);
/* Compute and store backtrace hash. */ struct btp_location location;
On Wed, 2010-12-15 at 20:03 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com
src/include/abrt_crash_dump.h | 1 + src/include/report/dump_dir.h | 1 + src/lib/crash_dump.c | 31 +++++++++++++++++++++++++++++++ src/lib/dump_dir.c | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/src/include/abrt_crash_dump.h b/src/include/abrt_crash_dump.h index 9ecbf56..aa62000 100644 --- a/src/include/abrt_crash_dump.h +++ b/src/include/abrt_crash_dump.h @@ -70,6 +70,7 @@ // (a string with "\n" terminated event names) #define CD_EVENTS "Events"
+extern const char *abrt_known_files[];
Can it be made static in crash_dump.c?
+char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files);
I don't see where do you use this function. I grepped the whole tree and there are no calls to it.
On 12/16/2010 03:12 PM, Denys Vlasenko wrote:
On Wed, 2010-12-15 at 20:03 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovskynpajkovs@redhat.com
src/include/abrt_crash_dump.h | 1 + src/include/report/dump_dir.h | 1 + src/lib/crash_dump.c | 31 +++++++++++++++++++++++++++++++ src/lib/dump_dir.c | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/src/include/abrt_crash_dump.h b/src/include/abrt_crash_dump.h index 9ecbf56..aa62000 100644 --- a/src/include/abrt_crash_dump.h +++ b/src/include/abrt_crash_dump.h @@ -70,6 +70,7 @@ // (a string with "\n" terminated event names) #define CD_EVENTS "Events"
+extern const char *abrt_known_files[];
Can it be made static in crash_dump.c?
I suppose yes.
+char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files);
I don't see where do you use this function. I grepped the whole tree and there are no calls to it.
I don't but jiri will use it in gui/cli to list all possible files to attach.
On 12/16/2010 03:33 PM, Nikola Pajkovsky wrote:
On 12/16/2010 03:12 PM, Denys Vlasenko wrote:
On Wed, 2010-12-15 at 20:03 +0100, Nikola Pajkovsky wrote:
Signed-off-by: Nikola Pajkovskynpajkovs@redhat.com
src/include/abrt_crash_dump.h | 1 + src/include/report/dump_dir.h | 1 + src/lib/crash_dump.c | 31 +++++++++++++++++++++++++++++++ src/lib/dump_dir.c | 41 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 0 deletions(-)
diff --git a/src/include/abrt_crash_dump.h b/src/include/abrt_crash_dump.h index 9ecbf56..aa62000 100644 --- a/src/include/abrt_crash_dump.h +++ b/src/include/abrt_crash_dump.h @@ -70,6 +70,7 @@ // (a string with "\n" terminated event names) #define CD_EVENTS "Events"
+extern const char *abrt_known_files[];
Can it be made static in crash_dump.c?
I suppose yes.
+char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files);
I don't see where do you use this function. I grepped the whole tree and there are no calls to it.
I don't but jiri will use it in gui/cli to list all possible files to attach.
Nikola, don't write this function now, just make sure the files are properly flagged when in memory representation is created. I'll implement the get_attachments function in the client library...
Thanks, J.
crash-catcher@lists.fedorahosted.org