Blame SOURCES/0130-lib-created-a-new-lib-file-for-reporters.patch

Matej Habrnal 5c8df3
From 5a6e03181d06d9350f181d21ab103bb0c07ffb86 Mon Sep 17 00:00:00 2001
Matej Habrnal 5c8df3
From: Matej Habrnal <mhabrnal@redhat.com>
Matej Habrnal 5c8df3
Date: Tue, 13 Jan 2015 19:23:08 -0500
Matej Habrnal 5c8df3
Subject: [PATCH 130/136] lib: created a new lib file for reporters
Matej Habrnal 5c8df3
Matej Habrnal 5c8df3
Moved some functions from rhbz.c to src/lib/reporters.c and src/lib/strbuf.c.
Matej Habrnal 5c8df3
Matej Habrnal 5c8df3
Related to #272
Matej Habrnal 5c8df3
Matej Habrnal 5c8df3
Signed-off-by: Matej Habrnal <mhabrnal@redhat.com>
Matej Habrnal 5c8df3
---
Matej Habrnal 5c8df3
 po/POTFILES.in                   |  1 +
Matej Habrnal 5c8df3
 src/include/Makefile.am          |  3 +-
Matej Habrnal 5c8df3
 src/include/internal_libreport.h |  5 +++
Matej Habrnal 5c8df3
 src/include/reporters.h          | 36 ++++++++++++++++++
Matej Habrnal 5c8df3
 src/lib/Makefile.am              |  3 +-
Matej Habrnal 5c8df3
 src/lib/reporters.c              | 80 ++++++++++++++++++++++++++++++++++++++++
Matej Habrnal 5c8df3
 src/lib/strbuf.c                 | 60 ++++++++++++++++++++++++++++++
Matej Habrnal 5c8df3
 src/plugins/rhbz.c               | 78 +--------------------------------------
Matej Habrnal 5c8df3
 src/plugins/rhbz.h               |  2 -
Matej Habrnal 5c8df3
 9 files changed, 188 insertions(+), 80 deletions(-)
Matej Habrnal 5c8df3
 create mode 100644 src/include/reporters.h
Matej Habrnal 5c8df3
 create mode 100644 src/lib/reporters.c
Matej Habrnal 5c8df3
Matej Habrnal 5c8df3
diff --git a/po/POTFILES.in b/po/POTFILES.in
Matej Habrnal 5c8df3
index c597b11..5588540 100644
Matej Habrnal 5c8df3
--- a/po/POTFILES.in
Matej Habrnal 5c8df3
+++ b/po/POTFILES.in
Matej Habrnal 5c8df3
@@ -24,6 +24,7 @@ src/lib/make_descr.c
Matej Habrnal 5c8df3
 src/lib/parse_options.c
Matej Habrnal 5c8df3
 src/lib/problem_data.c
Matej Habrnal 5c8df3
 src/lib/problem_report.c
Matej Habrnal 5c8df3
+src/lib/reporters.c
Matej Habrnal 5c8df3
 src/lib/run_event.c
Matej Habrnal 5c8df3
 src/plugins/abrt_rh_support.c
Matej Habrnal 5c8df3
 src/plugins/report_Bugzilla.xml.in
Matej Habrnal 5c8df3
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
Matej Habrnal 5c8df3
index 47ba399..a13e04d 100644
Matej Habrnal 5c8df3
--- a/src/include/Makefile.am
Matej Habrnal 5c8df3
+++ b/src/include/Makefile.am
Matej Habrnal 5c8df3
@@ -15,7 +15,8 @@ libreport_include_HEADERS = \
Matej Habrnal 5c8df3
     file_obj.h \
Matej Habrnal 5c8df3
     internal_libreport.h \
Matej Habrnal 5c8df3
     internal_abrt_dbus.h \
Matej Habrnal 5c8df3
-    xml_parser.h
Matej Habrnal 5c8df3
+    xml_parser.h \
Matej Habrnal 5c8df3
+    reporters.h
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
 if BUILD_UREPORT
Matej Habrnal 5c8df3
 libreport_include_HEADERS += ureport.h
Matej Habrnal 5c8df3
diff --git a/src/include/internal_libreport.h b/src/include/internal_libreport.h
Matej Habrnal 5c8df3
index 967324b..b689b74 100644
Matej Habrnal 5c8df3
--- a/src/include/internal_libreport.h
Matej Habrnal 5c8df3
+++ b/src/include/internal_libreport.h
Matej Habrnal 5c8df3
@@ -98,6 +98,7 @@ int vdprintf(int d, const char *format, va_list ap);
Matej Habrnal 5c8df3
 #include "workflow.h"
Matej Habrnal 5c8df3
 #include "file_obj.h"
Matej Habrnal 5c8df3
 #include "libreport_types.h"
Matej Habrnal 5c8df3
+#include "reporters.h"
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
 #ifdef __cplusplus
Matej Habrnal 5c8df3
 extern "C" {
Matej Habrnal 5c8df3
@@ -107,6 +108,10 @@ extern "C" {
Matej Habrnal 5c8df3
 int prefixcmp(const char *str, const char *prefix);
Matej Habrnal 5c8df3
 #define suffixcmp libreport_suffixcmp
Matej Habrnal 5c8df3
 int suffixcmp(const char *str, const char *suffix);
Matej Habrnal 5c8df3
+#define trim_all_whitespace libreport_trim_all_whitespace
Matej Habrnal 5c8df3
+char *trim_all_whitespace(const char *str);
Matej Habrnal 5c8df3
+#define shorten_string_to_length libreport_shorten_string_to_length
Matej Habrnal 5c8df3
+char *shorten_string_to_length(const char *str, unsigned length);
Matej Habrnal 5c8df3
 #define strtrim libreport_strtrim
Matej Habrnal 5c8df3
 char *strtrim(char *str);
Matej Habrnal 5c8df3
 #define strtrimch libreport_strtrimch
Matej Habrnal 5c8df3
diff --git a/src/include/reporters.h b/src/include/reporters.h
Matej Habrnal 5c8df3
new file mode 100644
Matej Habrnal 5c8df3
index 0000000..d415b7f
Matej Habrnal 5c8df3
--- /dev/null
Matej Habrnal 5c8df3
+++ b/src/include/reporters.h
Matej Habrnal 5c8df3
@@ -0,0 +1,36 @@
Matej Habrnal 5c8df3
+/*
Matej Habrnal 5c8df3
+    Copyright (C) 2014  ABRT team
Matej Habrnal 5c8df3
+    Copyright (C) 2014  RedHat Inc
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    This program is free software; you can redistribute it and/or modify
Matej Habrnal 5c8df3
+    it under the terms of the GNU General Public License as published by
Matej Habrnal 5c8df3
+    the Free Software Foundation; either version 2 of the License, or
Matej Habrnal 5c8df3
+    (at your option) any later version.
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    This program is distributed in the hope that it will be useful,
Matej Habrnal 5c8df3
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
Matej Habrnal 5c8df3
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Matej Habrnal 5c8df3
+    GNU General Public License for more details.
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    You should have received a copy of the GNU General Public License along
Matej Habrnal 5c8df3
+    with this program; if not, write to the Free Software Foundation, Inc.,
Matej Habrnal 5c8df3
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Matej Habrnal 5c8df3
+*/
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+#ifndef REPORTERS_H
Matej Habrnal 5c8df3
+#define REPORTERS_H
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+#ifdef __cplusplus
Matej Habrnal 5c8df3
+extern "C" {
Matej Habrnal 5c8df3
+#endif
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+#define is_comment_dup libreport_is_comment_dup
Matej Habrnal 5c8df3
+int is_comment_dup(GList *comments, const char *comment);
Matej Habrnal 5c8df3
+#define comments_find_best_bt_rating libreport_comments_find_best_bt_rating
Matej Habrnal 5c8df3
+unsigned comments_find_best_bt_rating(GList *comments);
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+#ifdef __cplusplus
Matej Habrnal 5c8df3
+}
Matej Habrnal 5c8df3
+#endif
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+#endif
Matej Habrnal 5c8df3
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
Matej Habrnal 5c8df3
index a0001ef..3ec463f 100644
Matej Habrnal 5c8df3
--- a/src/lib/Makefile.am
Matej Habrnal 5c8df3
+++ b/src/lib/Makefile.am
Matej Habrnal 5c8df3
@@ -56,7 +56,8 @@ libreport_la_SOURCES = \
Matej Habrnal 5c8df3
     workflow_xml_parser.c \
Matej Habrnal 5c8df3
     config_item_info.c \
Matej Habrnal 5c8df3
     xml_parser.c \
Matej Habrnal 5c8df3
-    libreport_init.c
Matej Habrnal 5c8df3
+    libreport_init.c \
Matej Habrnal 5c8df3
+    reporters.c
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
 libreport_la_CPPFLAGS = \
Matej Habrnal 5c8df3
     -I$(srcdir)/../include \
Matej Habrnal 5c8df3
diff --git a/src/lib/reporters.c b/src/lib/reporters.c
Matej Habrnal 5c8df3
new file mode 100644
Matej Habrnal 5c8df3
index 0000000..e3305ca
Matej Habrnal 5c8df3
--- /dev/null
Matej Habrnal 5c8df3
+++ b/src/lib/reporters.c
Matej Habrnal 5c8df3
@@ -0,0 +1,80 @@
Matej Habrnal 5c8df3
+/*
Matej Habrnal 5c8df3
+    String buffer implementation
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    Copyright (C) 2015  RedHat inc.
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    This program is free software; you can redistribute it and/or modify
Matej Habrnal 5c8df3
+    it under the terms of the GNU General Public License as published by
Matej Habrnal 5c8df3
+    the Free Software Foundation; either version 2 of the License, or
Matej Habrnal 5c8df3
+    (at your option) any later version.
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    This program is distributed in the hope that it will be useful,
Matej Habrnal 5c8df3
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
Matej Habrnal 5c8df3
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Matej Habrnal 5c8df3
+    GNU General Public License for more details.
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    You should have received a copy of the GNU General Public License along
Matej Habrnal 5c8df3
+    with this program; if not, write to the Free Software Foundation, Inc.,
Matej Habrnal 5c8df3
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Matej Habrnal 5c8df3
+*/
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+#include "internal_libreport.h"
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+int
Matej Habrnal 5c8df3
+is_comment_dup(GList *comments, const char *comment)
Matej Habrnal 5c8df3
+{
Matej Habrnal 5c8df3
+    char * const trim_comment = trim_all_whitespace(comment);
Matej Habrnal 5c8df3
+    bool same_comments = false;
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    for (GList *l = comments; l && !same_comments; l = l->next)
Matej Habrnal 5c8df3
+    {
Matej Habrnal 5c8df3
+        const char * const comment_body = (const char *) l->data;
Matej Habrnal 5c8df3
+        char * const trim_comment_body = trim_all_whitespace(comment_body);
Matej Habrnal 5c8df3
+        same_comments = (strcmp(trim_comment_body, trim_comment) == 0);
Matej Habrnal 5c8df3
+        free(trim_comment_body);
Matej Habrnal 5c8df3
+    }
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    free(trim_comment);
Matej Habrnal 5c8df3
+    return same_comments;
Matej Habrnal 5c8df3
+}
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+unsigned
Matej Habrnal 5c8df3
+comments_find_best_bt_rating(GList *comments)
Matej Habrnal 5c8df3
+{
Matej Habrnal 5c8df3
+    if (comments == NULL)
Matej Habrnal 5c8df3
+        return 0;
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    unsigned best_rating = 0;
Matej Habrnal 5c8df3
+    for (GList *l = comments; l; l = l->next)
Matej Habrnal 5c8df3
+    {
Matej Habrnal 5c8df3
+        char *comment_body = (char *) l->data;
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        char *start_rating_line = strstr(comment_body, FILENAME_RATING": ");
Matej Habrnal 5c8df3
+        if (!start_rating_line)
Matej Habrnal 5c8df3
+        {
Matej Habrnal 5c8df3
+            log_debug(_("Note does not contain rating"));
Matej Habrnal 5c8df3
+            continue;
Matej Habrnal 5c8df3
+        }
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        start_rating_line += strlen(FILENAME_RATING": ");
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        errno = 0;
Matej Habrnal 5c8df3
+        char *e;
Matej Habrnal 5c8df3
+        long rating = strtoul(start_rating_line, &e, 10);
Matej Habrnal 5c8df3
+        /*
Matej Habrnal 5c8df3
+         * Note: we intentionally check for '\n'. Any other terminator
Matej Habrnal 5c8df3
+         * (even '\0') is not ok in this case.
Matej Habrnal 5c8df3
+         */
Matej Habrnal 5c8df3
+        if (errno || e == start_rating_line || (*e != '\n' && *e != '\r') || (unsigned long)rating > UINT_MAX)
Matej Habrnal 5c8df3
+        {
Matej Habrnal 5c8df3
+            /* error / no digits / illegal trailing chars */
Matej Habrnal 5c8df3
+            continue;
Matej Habrnal 5c8df3
+        }
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        if (rating > best_rating)
Matej Habrnal 5c8df3
+            best_rating = rating;
Matej Habrnal 5c8df3
+    }
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    return best_rating;
Matej Habrnal 5c8df3
+}
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
diff --git a/src/lib/strbuf.c b/src/lib/strbuf.c
Matej Habrnal 5c8df3
index ef8bda8..f0cd1b8 100644
Matej Habrnal 5c8df3
--- a/src/lib/strbuf.c
Matej Habrnal 5c8df3
+++ b/src/lib/strbuf.c
Matej Habrnal 5c8df3
@@ -37,6 +37,66 @@ int suffixcmp(const char *str, const char *suffix)
Matej Habrnal 5c8df3
         return strcmp(str + len_minus_suflen, suffix);
Matej Habrnal 5c8df3
 }
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
+char *trim_all_whitespace(const char *str)
Matej Habrnal 5c8df3
+{
Matej Habrnal 5c8df3
+    char *trim = xzalloc(sizeof(char) * strlen(str) + 1);
Matej Habrnal 5c8df3
+    int i = 0;
Matej Habrnal 5c8df3
+    while (*str)
Matej Habrnal 5c8df3
+    {
Matej Habrnal 5c8df3
+        if (!isspace(*str))
Matej Habrnal 5c8df3
+            trim[i++] = *str;
Matej Habrnal 5c8df3
+        str++;
Matej Habrnal 5c8df3
+    }
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    return trim;
Matej Habrnal 5c8df3
+}
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+/* If str is longer than max allowed length then
Matej Habrnal 5c8df3
+ * try to find first ' ' from the end of acceptable long str string
Matej Habrnal 5c8df3
+ *
Matej Habrnal 5c8df3
+ * If ' ' is found replace string after that by "..."
Matej Habrnal 5c8df3
+ *
Matej Habrnal 5c8df3
+ * If ' ' is NOT found in maximal allowed range, cut str string on
Matej Habrnal 5c8df3
+ * lenght (MAX_SUMMARY_LENGTH - strlen("...")) and append "..."
Matej Habrnal 5c8df3
+ *
Matej Habrnal 5c8df3
+ * If MAX_LENGTH is 15 and max allowed cut is 5:
Matej Habrnal 5c8df3
+ *
Matej Habrnal 5c8df3
+ *   0123456789ABCDEF -> 0123456789AB...
Matej Habrnal 5c8df3
+ *   0123456789 BCDEF -> 0123456789 ...
Matej Habrnal 5c8df3
+ *   012345 789ABCDEF -> 012345 789AB...
Matej Habrnal 5c8df3
+ */
Matej Habrnal 5c8df3
+char *
Matej Habrnal 5c8df3
+shorten_string_to_length(const char *str, unsigned length)
Matej Habrnal 5c8df3
+{
Matej Habrnal 5c8df3
+    char *dup_str = xstrdup(str);
Matej Habrnal 5c8df3
+    if (strlen(str) > length)
Matej Habrnal 5c8df3
+    {
Matej Habrnal 5c8df3
+        char *max_end = dup_str + (length - strlen("..."));
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        /* maximal number of characters to cut due to attempt cut dup_str
Matej Habrnal 5c8df3
+         * string after last ' '
Matej Habrnal 5c8df3
+         */
Matej Habrnal 5c8df3
+        int max_cut = 16;
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        /* start looking for ' ' one char before the last possible character */
Matej Habrnal 5c8df3
+        char *buf = max_end - 1;
Matej Habrnal 5c8df3
+        while (buf[0] != ' ' && max_cut--)
Matej Habrnal 5c8df3
+            --buf;
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        if (buf[0] != ' ')
Matej Habrnal 5c8df3
+            buf = max_end;
Matej Habrnal 5c8df3
+        else
Matej Habrnal 5c8df3
+            ++buf;
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+        buf[0] = '.';
Matej Habrnal 5c8df3
+        buf[1] = '.';
Matej Habrnal 5c8df3
+        buf[2] = '.';
Matej Habrnal 5c8df3
+        buf[3] = '\0';
Matej Habrnal 5c8df3
+    }
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
+    return dup_str;
Matej Habrnal 5c8df3
+}
Matej Habrnal 5c8df3
+
Matej Habrnal 5c8df3
 /*
Matej Habrnal 5c8df3
  * Trims whitespace characters both from left and right side of a string.
Matej Habrnal 5c8df3
  * Modifies the string in-place. Returns the trimmed string.
Matej Habrnal 5c8df3
diff --git a/src/plugins/rhbz.c b/src/plugins/rhbz.c
Matej Habrnal 5c8df3
index bad9ed4..a376c13 100644
Matej Habrnal 5c8df3
--- a/src/plugins/rhbz.c
Matej Habrnal 5c8df3
+++ b/src/plugins/rhbz.c
Matej Habrnal 5c8df3
@@ -133,41 +133,6 @@ static GList *rhbz_comments(struct abrt_xmlrpc *ax, int bug_id)
Matej Habrnal 5c8df3
     return g_list_reverse(comments);
Matej Habrnal 5c8df3
 }
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
-static char *trim_all_whitespace(const char *str)
Matej Habrnal 5c8df3
-{
Matej Habrnal 5c8df3
-    func_entry();
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-    char *trim = xzalloc(sizeof(char) * strlen(str) + 1);
Matej Habrnal 5c8df3
-    int i = 0;
Matej Habrnal 5c8df3
-    while (*str)
Matej Habrnal 5c8df3
-    {
Matej Habrnal 5c8df3
-        if (!isspace(*str))
Matej Habrnal 5c8df3
-            trim[i++] = *str;
Matej Habrnal 5c8df3
-        str++;
Matej Habrnal 5c8df3
-    }
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-    return trim;
Matej Habrnal 5c8df3
-}
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-int is_comment_dup(GList *comments, const char *comment)
Matej Habrnal 5c8df3
-{
Matej Habrnal 5c8df3
-    func_entry();
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-    char * const trim_comment = trim_all_whitespace(comment);
Matej Habrnal 5c8df3
-    bool same_comments = false;
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-    for (GList *l = comments; l && !same_comments; l = l->next)
Matej Habrnal 5c8df3
-    {
Matej Habrnal 5c8df3
-        const char * const comment_body = (const char *) l->data;
Matej Habrnal 5c8df3
-        char * const trim_comment_body = trim_all_whitespace(comment_body);
Matej Habrnal 5c8df3
-        same_comments = (strcmp(trim_comment_body, trim_comment) == 0);
Matej Habrnal 5c8df3
-        free(trim_comment_body);
Matej Habrnal 5c8df3
-    }
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-    free(trim_comment);
Matej Habrnal 5c8df3
-    return same_comments;
Matej Habrnal 5c8df3
-}
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
 static unsigned find_best_bt_rating_in_comments(GList *comments)
Matej Habrnal 5c8df3
 {
Matej Habrnal 5c8df3
     func_entry();
Matej Habrnal 5c8df3
@@ -553,46 +518,7 @@ int rhbz_new_bug(struct abrt_xmlrpc *ax,
Matej Habrnal 5c8df3
     if (!duphash) duphash    = problem_data_get_content_or_NULL(problem_data,
Matej Habrnal 5c8df3
                                                                 "global_uuid");
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
-    /* If summary is longer than max allowed summary length then
Matej Habrnal 5c8df3
-     * try to find first ' ' from the end of acceptable long summary string
Matej Habrnal 5c8df3
-     *
Matej Habrnal 5c8df3
-     * If ' ' is found replace string after that by "..."
Matej Habrnal 5c8df3
-     *
Matej Habrnal 5c8df3
-     * If ' ' is NOT found in maximal allowed range, cut summary string on
Matej Habrnal 5c8df3
-     * lenght (MAX_SUMMARY_LENGTH - strlen("...")) and append "..."
Matej Habrnal 5c8df3
-     *
Matej Habrnal 5c8df3
-     * If MAX_SUMMARY_LENGTH is 15 and max allowed cut is 5:
Matej Habrnal 5c8df3
-     *
Matej Habrnal 5c8df3
-     *   0123456789ABCDEF -> 0123456789AB...
Matej Habrnal 5c8df3
-     *   0123456789 BCDEF -> 0123456789 ...
Matej Habrnal 5c8df3
-     *   012345 789ABCDEF -> 012345 789AB...
Matej Habrnal 5c8df3
-     */
Matej Habrnal 5c8df3
-    char *summary = NULL;
Matej Habrnal 5c8df3
-    if (strlen(bzsummary) > MAX_SUMMARY_LENGTH)
Matej Habrnal 5c8df3
-    {
Matej Habrnal 5c8df3
-        summary = xstrdup(bzsummary);
Matej Habrnal 5c8df3
-        char *max_end = summary + (MAX_SUMMARY_LENGTH - strlen("..."));
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-        /* maximal number of characters to cut due to attempt cut summary
Matej Habrnal 5c8df3
-         * string after last ' '
Matej Habrnal 5c8df3
-         */
Matej Habrnal 5c8df3
-        int max_cut = 16;
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-        /* start looking for ' ' one char before the last possible character */
Matej Habrnal 5c8df3
-        char *buf = max_end - 1;
Matej Habrnal 5c8df3
-        while (buf[0] != ' ' && max_cut--)
Matej Habrnal 5c8df3
-            --buf;
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-        if (buf[0] != ' ')
Matej Habrnal 5c8df3
-            buf = max_end;
Matej Habrnal 5c8df3
-        else
Matej Habrnal 5c8df3
-            ++buf;
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
-        buf[0] = '.';
Matej Habrnal 5c8df3
-        buf[1] = '.';
Matej Habrnal 5c8df3
-        buf[2] = '.';
Matej Habrnal 5c8df3
-        buf[3] = '\0';
Matej Habrnal 5c8df3
-    }
Matej Habrnal 5c8df3
+    char *summary = shorten_string_to_length(bzsummary, MAX_SUMMARY_LENGTH);
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
     char *status_whiteboard = xasprintf("abrt_hash:%s", duphash);
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
@@ -604,7 +530,7 @@ int rhbz_new_bug(struct abrt_xmlrpc *ax,
Matej Habrnal 5c8df3
     abrt_xmlrpc_params_add_string(&env, params, "product", product);
Matej Habrnal 5c8df3
     abrt_xmlrpc_params_add_string(&env, params, "component", component);
Matej Habrnal 5c8df3
     abrt_xmlrpc_params_add_string(&env, params, "version", version);
Matej Habrnal 5c8df3
-    abrt_xmlrpc_params_add_string(&env, params, "summary", (summary ? summary : bzsummary));
Matej Habrnal 5c8df3
+    abrt_xmlrpc_params_add_string(&env, params, "summary", summary);
Matej Habrnal 5c8df3
     abrt_xmlrpc_params_add_string(&env, params, "description", bzcomment);
Matej Habrnal 5c8df3
     abrt_xmlrpc_params_add_string(&env, params, "status_whiteboard", status_whiteboard);
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
diff --git a/src/plugins/rhbz.h b/src/plugins/rhbz.h
Matej Habrnal 5c8df3
index 976d333..2f91962 100644
Matej Habrnal 5c8df3
--- a/src/plugins/rhbz.h
Matej Habrnal 5c8df3
+++ b/src/plugins/rhbz.h
Matej Habrnal 5c8df3
@@ -101,8 +101,6 @@ int rhbz_attach_blob(struct abrt_xmlrpc *ax, const char *bug_id,
Matej Habrnal 5c8df3
 int rhbz_attach_fd(struct abrt_xmlrpc *ax, const char *bug_id,
Matej Habrnal 5c8df3
                 const char *att_name, int fd, int flags);
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
-int is_comment_dup(GList *comments, const char *comment);
Matej Habrnal 5c8df3
-
Matej Habrnal 5c8df3
 GList *rhbz_bug_cc(xmlrpc_value *result_xml);
Matej Habrnal 5c8df3
 
Matej Habrnal 5c8df3
 struct bug_info *rhbz_bug_info(struct abrt_xmlrpc *ax, int bug_id);
Matej Habrnal 5c8df3
-- 
Matej Habrnal 5c8df3
1.8.3.1
Matej Habrnal 5c8df3