summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-01-25 21:12:28 +0100
committerDenys Vlasenko <dvlasenk@redhat.com>2011-01-25 21:12:28 +0100
commit0418ccf55716f14a77bc9f52ebb0f9a44a937b92 (patch)
tree35d464c51e00649642cd123028e42634f46e2877
parent1092802b4a1441e809e98d1583a882043b360ee2 (diff)
downloadabrt-0418ccf55716f14a77bc9f52ebb0f9a44a937b92.tar.gz
abrt-0418ccf55716f14a77bc9f52ebb0f9a44a937b92.tar.xz
abrt-0418ccf55716f14a77bc9f52ebb0f9a44a937b92.zip
split parse_release() into Bz and RHEL versions
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
-rw-r--r--inc/abrtlib.h3
-rw-r--r--lib/Plugins/Bugzilla.cpp6
-rw-r--r--lib/Utils/abrt_rh_support.cpp2
-rw-r--r--lib/Utils/parse_release.cpp32
4 files changed, 33 insertions, 10 deletions
diff --git a/inc/abrtlib.h b/inc/abrtlib.h
index 0c36f268..973b2bec 100644
--- a/inc/abrtlib.h
+++ b/inc/abrtlib.h
@@ -260,6 +260,7 @@ std::string to_string(T x)
}
void parse_args(const char *psArgs, vector_string_t& pArgs, int quote = -1);
-void parse_release(const char *pRelease, char **product, char **version);
+void parse_release_for_bz(const char *pRelease, char **product, char **version);
+void parse_release_for_rhts(const char *pRelease, char **product, char **version);
#endif
diff --git a/lib/Plugins/Bugzilla.cpp b/lib/Plugins/Bugzilla.cpp
index fb21453f..49c87812 100644
--- a/lib/Plugins/Bugzilla.cpp
+++ b/lib/Plugins/Bugzilla.cpp
@@ -333,7 +333,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
);
@@ -493,7 +493,7 @@ xmlrpc_int32 ctx::new_bug(const map_crash_data_t& pCrashData, int depend_on_bugn
char *product = NULL;
char *version = NULL;
- parse_release(release.c_str(), &product, &version);
+ parse_release_for_bz(release.c_str(), &product, &version);
xmlrpc_value* result = NULL;
if (depend_on_bugno > -1)
@@ -771,7 +771,7 @@ std::string CReporterBugzilla::Report(const map_crash_data_t& pCrashData,
char *product = NULL;
char *version = NULL;
- parse_release(release, &product, &version);
+ parse_release_for_bz(release, &product, &version);
free(version);
xmlrpc_value *result;
diff --git a/lib/Utils/abrt_rh_support.cpp b/lib/Utils/abrt_rh_support.cpp
index 99e4ae8e..f2b6621d 100644
--- a/lib/Utils/abrt_rh_support.cpp
+++ b/lib/Utils/abrt_rh_support.cpp
@@ -312,7 +312,7 @@ send_report_to_new_case(const char* baseURL,
char *product = NULL;
char *version = NULL;
- parse_release(os_release, &product, &version);
+ parse_release_for_rhts(os_release, &product, &version);
char *case_data = make_case_data(
summary,
diff --git a/lib/Utils/parse_release.cpp b/lib/Utils/parse_release.cpp
index 3d6b572f..4f780bfc 100644
--- a/lib/Utils/parse_release.cpp
+++ b/lib/Utils/parse_release.cpp
@@ -24,7 +24,7 @@
#include "strbuf.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"))
{
@@ -38,21 +38,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++;
}
}
@@ -62,3 +72,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);
+}