summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-01-25 21:17:49 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-01-25 21:17:49 +0100
commit7f5cbf38caa3c6fdd0afe3a4cb7a9bd3b3010596 (patch)
tree18f2a6581d8428606309fdcd5b01b3a0d6379166 /src
parentd5cbfe52eaaa9f690a1e2937faf62781cd52d722 (diff)
downloadabrt-7f5cbf38caa3c6fdd0afe3a4cb7a9bd3b3010596.tar.gz
abrt-7f5cbf38caa3c6fdd0afe3a4cb7a9bd3b3010596.tar.xz
abrt-7f5cbf38caa3c6fdd0afe3a4cb7a9bd3b3010596.zip
split parse_release() into Bz and RHTS versions
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/include/abrtlib.h6
-rw-r--r--src/lib/parse_release.c32
-rw-r--r--src/plugins/abrt-action-bugzilla.cpp6
3 files changed, 34 insertions, 10 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 abbd53ae..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,7 @@ 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;