summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2011-01-25 22:58:59 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2011-01-25 22:58:59 +0100
commit906e55b868745f74ea6f009c9ec3bbfb5e135036 (patch)
tree9774d243be25bf499b55b6c1dff4c714cec4daf5
parentb27a8ff7442559409fe005ef721bc855b5512e3c (diff)
parent7f5cbf38caa3c6fdd0afe3a4cb7a9bd3b3010596 (diff)
downloadabrt-906e55b868745f74ea6f009c9ec3bbfb5e135036.tar.gz
abrt-906e55b868745f74ea6f009c9ec3bbfb5e135036.tar.xz
abrt-906e55b868745f74ea6f009c9ec3bbfb5e135036.zip
Merge branch 'master' of ssh://git.fedorahosted.org/git/abrt
-rw-r--r--src/include/abrtlib.h6
-rw-r--r--src/lib/parse_release.c32
-rw-r--r--src/plugins/abrt-action-bugzilla.cpp8
-rw-r--r--src/plugins/abrt_rh_support.c22
4 files changed, 47 insertions, 21 deletions
diff --git a/src/include/abrtlib.h b/src/include/abrtlib.h
index 4ad2f6fc..22b63baf 100644
--- a/src/include/abrtlib.h
+++ b/src/include/abrtlib.h
@@ -228,8 +228,10 @@ char* make_description_logger(crash_data_t *crash_data);
#define make_description_mailx abrt_make_description_mailx
char* make_description_mailx(crash_data_t *crash_data);
-#define parse_release abrt_parse_release
-void parse_release(const char *pRelease, char **product, char **version);
+#define parse_release_for_bz abrt_parse_release_for_bz
+void parse_release_for_bz(const char *pRelease, char **product, char **version);
+#define parse_release_for_rhts abrt_parse_release_for_rhts
+void parse_release_for_rhts(const char *pRelease, char **product, char **version);
/**
* Loads settings and stores it in second parameter. On success it
diff --git a/src/lib/parse_release.c b/src/lib/parse_release.c
index f9057bfe..b24f928c 100644
--- a/src/lib/parse_release.c
+++ b/src/lib/parse_release.c
@@ -19,7 +19,7 @@
#include "abrtlib.h"
// caller is reposible for freeing *product* and *version*
-void parse_release(const char *release, char** product, char** version)
+static void parse_release(const char *release, char** product, char** version, bool append_rhel_version)
{
if (strstr(release, "Rawhide"))
{
@@ -33,21 +33,31 @@ void parse_release(const char *release, char** product, char** version)
if (strstr(release, "Fedora"))
strbuf_append_str(buf_product, "Fedora");
else if (strstr(release, "Red Hat Enterprise Linux"))
- strbuf_append_str(buf_product, "Red Hat Enterprise Linux ");
+ strbuf_append_str(buf_product, "Red Hat Enterprise Linux");
+ else
+ {
+ /* TODO: add logic for parsing other distros' names here */
+ strbuf_append_str(buf_product, release);
+ }
const char *r = strstr(release, "release");
const char *space = r ? strchr(r, ' ') : NULL;
struct strbuf *buf_version = strbuf_new();
- if (space++)
+ if (space)
{
+ space++;
while (*space != '\0' && *space != ' ')
{
/* Eat string like "5.2" */
strbuf_append_char(buf_version, *space);
- if ((strcmp(buf_product->buf, "Red Hat Enterprise Linux ") == 0))
+ if (append_rhel_version
+ && strcmp(buf_product->buf, "Red Hat Enterprise Linux") == 0
+ ) {
+ strbuf_append_char(buf_product, ' ');
strbuf_append_char(buf_product, *space);
-
+ }
+ append_rhel_version = false;
space++;
}
}
@@ -57,3 +67,15 @@ void parse_release(const char *release, char** product, char** version)
VERB3 log("%s: version:'%s' product:'%s'", __func__, *version, *product);
}
+
+void parse_release_for_bz(const char *release, char** product, char** version)
+{
+ /* Fedora/RH bugzilla uses "Red Hat Enterprise Linux N" product RHEL */
+ parse_release(release, product, version, /*append_rhel_version:*/ true);
+}
+
+void parse_release_for_rhts(const char *release, char** product, char** version)
+{
+ /* RHTS uses "Red Hat Enterprise Linux" product for RHEL */
+ parse_release(release, product, version, /*append_rhel_version:*/ false);
+}
diff --git a/src/plugins/abrt-action-bugzilla.cpp b/src/plugins/abrt-action-bugzilla.cpp
index 4dfafe90..ed8a7e72 100644
--- a/src/plugins/abrt-action-bugzilla.cpp
+++ b/src/plugins/abrt-action-bugzilla.cpp
@@ -328,7 +328,7 @@ xmlrpc_value* ctx::call_quicksearch_duphash(const char* component, const char* r
{
char *product = NULL;
char *version = NULL;
- parse_release(release, &product, &version);
+ parse_release_for_bz(release, &product, &version);
query = xasprintf("ALL component:\"%s\" whiteboard:\"%s\" product:\"%s\"",
component, duphash, product
);
@@ -482,7 +482,7 @@ xmlrpc_int32 ctx::new_bug(crash_data_t *crash_data, int depend_on_bugno)
char *product = NULL;
char *version = NULL;
- parse_release(release, &product, &version);
+ parse_release_for_bz(release, &product, &version);
xmlrpc_value* result = NULL;
char *summary = strbuf_free_nobuf(buf_summary);
@@ -684,7 +684,8 @@ static void report_to_bugzilla(
char *product = NULL;
char *version = NULL;
- parse_release(release, &product, &version);
+ parse_release_for_bz(release, &product, &version);
+ free(version);
xmlrpc_value *result;
if (strcmp(product, "Fedora") == 0)
@@ -761,7 +762,6 @@ static void report_to_bugzilla(
}
}
free(product);
- free(version);
if (all_bugs_size < 0)
{
diff --git a/src/plugins/abrt_rh_support.c b/src/plugins/abrt_rh_support.c
index 04e2c8ef..fb1106de 100644
--- a/src/plugins/abrt_rh_support.c
+++ b/src/plugins/abrt_rh_support.c
@@ -211,6 +211,7 @@ reportfile_free(reportfile_t* file)
}
+#if 0 //unused
//
// post_signature()
//
@@ -272,6 +273,7 @@ post_signature(const char* baseURL, bool ssl_verify, const char* signature)
free_abrt_post_state(state);
return retval;
}
+#endif
//
@@ -391,6 +393,15 @@ send_report_to_new_case(const char* baseURL,
char *case_location = find_header_in_abrt_post_state(case_state, "Location:");
switch (case_state->http_resp_code)
{
+ case 404:
+ /* Not strictly necessary (default branch would deal with it too),
+ * but makes this typical error less cryptic:
+ * instead of returning html-encoded body, we show short concise message,
+ * and show offending URL (typos in which is a typical cause) */
+ retval = xasprintf("error in case creation, "
+ "HTTP code: 404 (Not found), URL:'%s'", case_url);
+ break;
+
case 301: /* "301 Moved Permanently" (for example, used to move http:// to https://) */
case 302: /* "302 Found" (just in case) */
case 305: /* "305 Use Proxy" */
@@ -401,18 +412,9 @@ send_report_to_new_case(const char* baseURL,
free_abrt_post_state(case_state);
goto redirect_case;
}
- goto bad_resp_code;
-
- case 404:
- /* Not strictly necessary, but makes this typical error less cryptic:
- * instead of returning html-encoded body, we show short concise message,
- * and show offending URL (typos in which is a typical cause) */
- retval = xasprintf("error in case creation, "
- "HTTP code: 404 (Not found), URL:'%s'", case_url);
- break;
+ /* fall through */
default:
- bad_resp_code:
errmsg = case_state->curl_error_msg;
if (errmsg)
retval = xasprintf("error in case creation: %s", errmsg);