diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-25 21:12:28 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2011-01-25 21:12:28 +0100 |
commit | 0418ccf55716f14a77bc9f52ebb0f9a44a937b92 (patch) | |
tree | 35d464c51e00649642cd123028e42634f46e2877 | |
parent | 1092802b4a1441e809e98d1583a882043b360ee2 (diff) | |
download | abrt-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.h | 3 | ||||
-rw-r--r-- | lib/Plugins/Bugzilla.cpp | 6 | ||||
-rw-r--r-- | lib/Utils/abrt_rh_support.cpp | 2 | ||||
-rw-r--r-- | lib/Utils/parse_release.cpp | 32 |
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); +} |