diff options
| author | Leandro Pereira <leandro@hardinfo.org> | 2019-07-12 08:27:53 -0700 | 
|---|---|---|
| committer | Leandro Pereira <leandro@hardinfo.org> | 2019-07-12 08:27:53 -0700 | 
| commit | 0ad42047da7b8a11a07e73a75f9f415362eec867 (patch) | |
| tree | 878227d3ceb2459206a15262cc7ba85bba40ca27 | |
| parent | db94467dd8d6b1d946b02bb3b83fd5271b12aaa8 (diff) | |
Add functions to get a formatted link for a vendor
| -rw-r--r-- | hardinfo/vendor.c | 37 | ||||
| -rw-r--r-- | includes/vendor.h | 2 | 
2 files changed, 39 insertions, 0 deletions
| diff --git a/hardinfo/vendor.c b/hardinfo/vendor.c index 0e661bb9..9cc3a8e4 100644 --- a/hardinfo/vendor.c +++ b/hardinfo/vendor.c @@ -371,3 +371,40 @@ const gchar *vendor_get_url(const gchar * id_str) {      return NULL;  } + +gchar *vendor_get_link(const gchar *id_str) +{ +    const Vendor *v = vendor_match(id_str, NULL); + +    if (!v) { +        return g_strdup(id_str); +    } + +    return vendor_get_link_from_vendor(v); +} + +gchar *vendor_get_link_from_vendor(const Vendor *v) +{ +    if (!v) { +        return g_strdup(_("Unknown")); +    } + +    if (!v->url) { +        return g_strdup(v->name); +    } + +    if (params.markup_ok) { +        const gchar *prefix; + +        if (!strncmp(v->url, "http://", sizeof("http://") - 1) || +            !strncmp(v->url, "https://", sizeof("https://") - 1)) { +            prefix = ""; +        } else { +            prefix = "http://"; +        } + +        return g_strdup_printf("<a href=\"%s%s\">%s</a>", prefix, v->url, v->name); +    } + +    return g_strdup_printf("%s (%s)", v->name, v->url); +} diff --git a/includes/vendor.h b/includes/vendor.h index 1688010d..683e7d8a 100644 --- a/includes/vendor.h +++ b/includes/vendor.h @@ -35,6 +35,8 @@ const Vendor *vendor_match(const gchar *id_str, ...); /* end list of strings wit  const gchar *vendor_get_name(const gchar *id_str);  const gchar *vendor_get_shortest_name(const gchar *id_str);  const gchar *vendor_get_url(const gchar *id_str); +gchar *vendor_get_link(const gchar *id_str); +gchar *vendor_get_link_from_vendor(const Vendor *v);  void vendor_free(Vendor *v);  #endif	/* __VENDOR_H__ */ | 
