From: "Zeeshan Ali (Khattak)" <zeeshanak@xxxxxxxxx> While we will be able to neither ship any product logos nor provide URLs to them for legal reasons, this patch simply adds API for easily fetch URLs from *a* libosinfo database. --- osinfo/libosinfo.syms | 5 +++++ osinfo/osinfo_loader.c | 3 ++- osinfo/osinfo_product.c | 24 +++++++++++++++++++++++- osinfo/osinfo_product.h | 2 ++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms index dcf12ab..5ef304b 100644 --- a/osinfo/libosinfo.syms +++ b/osinfo/libosinfo.syms @@ -235,6 +235,11 @@ LIBOSINFO_0.1.0 { osinfo_treelist_new_union; } LIBOSINFO_0.0.6; +LIBOSINFO_0.1.3 { + global: + osinfo_product_get_logo; +} LIBOSINFO_0.1.0; + /* Symbols in next release... LIBOSINFO_0.0.2 { diff --git a/osinfo/osinfo_loader.c b/osinfo/osinfo_loader.c index 21d9c7a..bc30241 100644 --- a/osinfo/osinfo_loader.c +++ b/osinfo/osinfo_loader.c @@ -33,6 +33,7 @@ #include <libxml/tree.h> #include <libxml/xpath.h> #include <libxml/xmlreader.h> +#include <libxml/uri.h> G_DEFINE_TYPE (OsinfoLoader, osinfo_loader, G_TYPE_OBJECT); @@ -373,6 +374,7 @@ static void osinfo_loader_product(OsinfoLoader *loader, OSINFO_PRODUCT_PROP_NAME, OSINFO_PRODUCT_PROP_VENDOR, OSINFO_PRODUCT_PROP_VERSION, + OSINFO_PRODUCT_PROP_LOGO, OSINFO_PRODUCT_PROP_SHORT_ID, OSINFO_PRODUCT_PROP_RELEASE_DATE, OSINFO_PRODUCT_PROP_EOL_DATE, @@ -384,7 +386,6 @@ static void osinfo_loader_product(OsinfoLoader *loader, if (error_is_set(err)) return; - osinfo_loader_product_relshp(loader, product, OSINFO_PRODUCT_RELATIONSHIP_DERIVES_FROM, "./derives-from", diff --git a/osinfo/osinfo_product.c b/osinfo/osinfo_product.c index cc430c5..f330209 100644 --- a/osinfo/osinfo_product.c +++ b/osinfo/osinfo_product.c @@ -76,6 +76,7 @@ enum { PROP_VENDOR, PROP_VERSION, PROP_CODENAME, + PROP_LOGO, }; static void osinfo_product_link_free(gpointer data, gpointer opaque G_GNUC_UNUSED) @@ -130,6 +131,9 @@ osinfo_product_get_property (GObject *object, case PROP_CODENAME: g_value_set_string (value, osinfo_product_get_codename (product)); + case PROP_LOGO: + g_value_set_string (value, + osinfo_product_get_logo (product)); break; default: @@ -224,6 +228,21 @@ osinfo_product_class_init (OsinfoProductClass *klass) G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB); g_object_class_install_property (g_klass, PROP_NAME, pspec); + + /** + * OsinfoProduct::logo: + * + * The URI of the logo of the product. + */ + pspec = g_param_spec_string ("logo", + "Logo", + "URI of the logo", + NULL /* default value */, + G_PARAM_READABLE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB); + g_object_class_install_property (g_klass, PROP_LOGO, pspec); } static void @@ -354,7 +373,10 @@ GDate *osinfo_product_get_eol_date(OsinfoProduct *prod) return date_from_string(str); } - +const gchar *osinfo_product_get_logo(OsinfoProduct *prod) +{ + return osinfo_entity_get_param_value(OSINFO_ENTITY(prod), OSINFO_PRODUCT_PROP_LOGO); +} /* * Local variables: diff --git a/osinfo/osinfo_product.h b/osinfo/osinfo_product.h index fa63877..57bd29b 100644 --- a/osinfo/osinfo_product.h +++ b/osinfo/osinfo_product.h @@ -51,6 +51,7 @@ typedef struct _OsinfoProductPrivate OsinfoProductPrivate; #define OSINFO_PRODUCT_PROP_RELEASE_DATE "release-date" #define OSINFO_PRODUCT_PROP_EOL_DATE "eol-date" #define OSINFO_PRODUCT_PROP_CODENAME "codename" +#define OSINFO_PRODUCT_PROP_LOGO "logo" /* object */ struct _OsinfoProduct @@ -94,6 +95,7 @@ const gchar *osinfo_product_get_release_date_string(OsinfoProduct *prod); const gchar *osinfo_product_get_eol_date_string(OsinfoProduct *prod); GDate *osinfo_product_get_release_date(OsinfoProduct *prod); GDate *osinfo_product_get_eol_date(OsinfoProduct *prod); +const gchar *osinfo_product_get_logo(OsinfoProduct *prod); #endif /* __OSINFO_PRODUCT_H__ */ -- 1.7.11.2