Jiri Moskovcak 60afc81
commit f01bb3bc293f91eacb9196229746ab95580f8b58
Jiri Moskovcak 60afc81
Author: Nikola Pajkovsky <npajkovs@redhat.com>
Jiri Moskovcak 60afc81
Date:   Tue Apr 3 16:31:10 2012 +0200
Jiri Moskovcak 60afc81
Jiri Moskovcak 60afc81
    rhbz#795548 - opt kernel out of showing smolt information in abrt bug reports
Jiri Moskovcak 60afc81
    
Jiri Moskovcak 60afc81
    Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
Jiri Moskovcak 60afc81
Jiri Moskovcak 60afc81
diff --git a/src/include/internal_libreport.h b/src/include/internal_libreport.h
Jiri Moskovcak 60afc81
index d99d84c..892a70f 100644
Jiri Moskovcak 60afc81
--- a/src/include/internal_libreport.h
Jiri Moskovcak 60afc81
+++ b/src/include/internal_libreport.h
Jiri Moskovcak 60afc81
@@ -572,6 +572,7 @@ enum {
Jiri Moskovcak 60afc81
     MAKEDESC_SHOW_FILES     = (1 << 0),
Jiri Moskovcak 60afc81
     MAKEDESC_SHOW_MULTILINE = (1 << 1),
Jiri Moskovcak 60afc81
     MAKEDESC_SHOW_ONLY_LIST = (1 << 2),
Jiri Moskovcak 60afc81
+    MAKEDESC_WHITELIST      = (1 << 3),
Jiri Moskovcak 60afc81
 };
Jiri Moskovcak 60afc81
 #define make_description libreport_make_description
Jiri Moskovcak 60afc81
 char *make_description(problem_data_t *problem_data, char **names_to_skip, unsigned max_text_size, unsigned desc_flags);
Jiri Moskovcak 60afc81
@@ -579,6 +580,8 @@ char *make_description(problem_data_t *problem_data, char **names_to_skip, unsig
Jiri Moskovcak 60afc81
 char* make_description_bz(problem_data_t *problem_data, unsigned max_text_size);
Jiri Moskovcak 60afc81
 #define make_description_logger libreport_make_description_logger
Jiri Moskovcak 60afc81
 char* make_description_logger(problem_data_t *problem_data, unsigned max_text_size);
Jiri Moskovcak 60afc81
+#define make_description_koops libreport_make_description_koops
Jiri Moskovcak 60afc81
+char* make_description_koops(problem_data_t *problem_data, unsigned max_text_size);
Jiri Moskovcak 60afc81
 //UNUSED
Jiri Moskovcak 60afc81
 //#define make_description_mailx libreport_make_description_mailx
Jiri Moskovcak 60afc81
 //char* make_description_mailx(problem_data_t *problem_data);
Jiri Moskovcak 60afc81
diff --git a/src/lib/make_descr.c b/src/lib/make_descr.c
Jiri Moskovcak 60afc81
index a1a9234..68133a2 100644
Jiri Moskovcak 60afc81
--- a/src/lib/make_descr.c
Jiri Moskovcak 60afc81
+++ b/src/lib/make_descr.c
Jiri Moskovcak 60afc81
@@ -18,7 +18,16 @@
Jiri Moskovcak 60afc81
 */
Jiri Moskovcak 60afc81
 #include "internal_libreport.h"
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
-char *make_description(problem_data_t *problem_data, char **names_to_skip, unsigned max_text_size, unsigned desc_flags)
Jiri Moskovcak 60afc81
+static bool rejected_name(const char *name, char **v, int flags)
Jiri Moskovcak 60afc81
+{
Jiri Moskovcak 60afc81
+    bool r = is_in_string_list(name, v);
Jiri Moskovcak 60afc81
+    if (flags & MAKEDESC_WHITELIST)
Jiri Moskovcak 60afc81
+         r = !r;
Jiri Moskovcak 60afc81
+    return r;
Jiri Moskovcak 60afc81
+}
Jiri Moskovcak 60afc81
+
Jiri Moskovcak 60afc81
+char *make_description(problem_data_t *problem_data, char **names_to_skip,
Jiri Moskovcak 60afc81
+                       unsigned max_text_size, unsigned desc_flags)
Jiri Moskovcak 60afc81
 {
Jiri Moskovcak 60afc81
     struct strbuf *buf_dsc = strbuf_new();
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
@@ -42,7 +51,8 @@ char *make_description(problem_data_t *problem_data, char **names_to_skip, unsig
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
         /* Skip items we are not interested in */
Jiri Moskovcak 60afc81
 //TODO: optimize by doing this once, not 3 times:
Jiri Moskovcak 60afc81
-        if (names_to_skip && is_in_string_list(key, names_to_skip))
Jiri Moskovcak 60afc81
+        if (names_to_skip
Jiri Moskovcak 60afc81
+            && rejected_name(key, names_to_skip, desc_flags))
Jiri Moskovcak 60afc81
             continue;
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
         struct problem_item *item = g_hash_table_lookup(problem_data, key);
Jiri Moskovcak 60afc81
@@ -87,7 +97,8 @@ char *make_description(problem_data_t *problem_data, char **names_to_skip, unsig
Jiri Moskovcak 60afc81
             l = l->next;
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
             /* Skip items we are not interested in */
Jiri Moskovcak 60afc81
-            if (names_to_skip && is_in_string_list(key, names_to_skip))
Jiri Moskovcak 60afc81
+            if (names_to_skip
Jiri Moskovcak 60afc81
+                && rejected_name(key, names_to_skip, desc_flags))
Jiri Moskovcak 60afc81
                 continue;
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
             struct problem_item *item = g_hash_table_lookup(problem_data, key);
Jiri Moskovcak 60afc81
@@ -144,7 +155,8 @@ char *make_description(problem_data_t *problem_data, char **names_to_skip, unsig
Jiri Moskovcak 60afc81
             l = l->next;
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
             /* Skip items we are not interested in */
Jiri Moskovcak 60afc81
-            if (names_to_skip && is_in_string_list(key, names_to_skip))
Jiri Moskovcak 60afc81
+            if (names_to_skip
Jiri Moskovcak 60afc81
+                && rejected_name(key, names_to_skip, desc_flags))
Jiri Moskovcak 60afc81
                 continue;
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
             struct problem_item *item = g_hash_table_lookup(problem_data, key);
Jiri Moskovcak 60afc81
@@ -251,11 +263,6 @@ static const char *const blacklisted_items[] = {
Jiri Moskovcak 60afc81
     NULL
Jiri Moskovcak 60afc81
 };
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
-/*
Jiri Moskovcak 60afc81
- * npajkovs: implement second part of problem (not so important)
Jiri Moskovcak 60afc81
- * https://bugzilla.redhat.com/show_bug.cgi?id=711591
Jiri Moskovcak 60afc81
- */
Jiri Moskovcak 60afc81
-
Jiri Moskovcak 60afc81
 char* make_description_bz(problem_data_t *problem_data, unsigned max_text_size)
Jiri Moskovcak 60afc81
 {
Jiri Moskovcak 60afc81
     return make_description(
Jiri Moskovcak 60afc81
@@ -275,3 +282,22 @@ char* make_description_logger(problem_data_t *problem_data, unsigned max_text_si
Jiri Moskovcak 60afc81
                 MAKEDESC_SHOW_FILES | MAKEDESC_SHOW_MULTILINE
Jiri Moskovcak 60afc81
     );
Jiri Moskovcak 60afc81
 }
Jiri Moskovcak 60afc81
+
Jiri Moskovcak 60afc81
+/* Items we want to include to bz */
Jiri Moskovcak 60afc81
+static const char *const whitelisted_items[] = {
Jiri Moskovcak 60afc81
+    FILENAME_CMDLINE,
Jiri Moskovcak 60afc81
+    FILENAME_BACKTRACE,
Jiri Moskovcak 60afc81
+    NULL
Jiri Moskovcak 60afc81
+};
Jiri Moskovcak 60afc81
+
Jiri Moskovcak 60afc81
+char* make_description_koops(problem_data_t *problem_data, unsigned max_text_size)
Jiri Moskovcak 60afc81
+{
Jiri Moskovcak 60afc81
+    return make_description(
Jiri Moskovcak 60afc81
+                problem_data,
Jiri Moskovcak 60afc81
+                (char**)whitelisted_items,
Jiri Moskovcak 60afc81
+                max_text_size,
Jiri Moskovcak 60afc81
+                MAKEDESC_SHOW_FILES
Jiri Moskovcak 60afc81
+                | MAKEDESC_SHOW_MULTILINE
Jiri Moskovcak 60afc81
+                | MAKEDESC_WHITELIST
Jiri Moskovcak 60afc81
+    );
Jiri Moskovcak 60afc81
+}
Jiri Moskovcak 60afc81
diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c
Jiri Moskovcak 60afc81
index 9ed3154..a3aa2ef 100644
Jiri Moskovcak 60afc81
--- a/src/plugins/rhbz.c
Jiri Moskovcak 60afc81
+++ b/src/plugins/rhbz.c
Jiri Moskovcak 60afc81
@@ -438,7 +438,12 @@ int rhbz_new_bug(struct abrt_xmlrpc *ax, problem_data_t *problem_data,
Jiri Moskovcak 60afc81
     }
Jiri Moskovcak 60afc81
     char *status_whiteboard = xasprintf("abrt_hash:%s", duphash);
Jiri Moskovcak 60afc81
 
Jiri Moskovcak 60afc81
-    char *bz_dsc = make_description_bz(problem_data, CD_TEXT_ATT_SIZE_BZ);
Jiri Moskovcak 60afc81
+    char *bz_dsc;
Jiri Moskovcak 60afc81
+    if (analyzer && !strcmp(analyzer, "Kerneloops"))
Jiri Moskovcak 60afc81
+        bz_dsc = make_description_koops(problem_data, CD_TEXT_ATT_SIZE_BZ);
Jiri Moskovcak 60afc81
+    else
Jiri Moskovcak 60afc81
+        bz_dsc = make_description_bz(problem_data, CD_TEXT_ATT_SIZE_BZ);
Jiri Moskovcak 60afc81
+
Jiri Moskovcak 60afc81
     char *full_dsc = xasprintf("libreport version: "VERSION"\n%s", bz_dsc);
Jiri Moskovcak 60afc81
     free(bz_dsc);
Jiri Moskovcak 60afc81