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 /lib/Utils | |
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>
Diffstat (limited to 'lib/Utils')
-rw-r--r-- | lib/Utils/abrt_rh_support.cpp | 2 | ||||
-rw-r--r-- | lib/Utils/parse_release.cpp | 32 |
2 files changed, 28 insertions, 6 deletions
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); +} |