[virt-tools-list] [[libosinfo V2]] API for getting product logo URLs

Daniel P. Berrange berrange at redhat.com
Tue Aug 14 09:58:52 UTC 2012


On Tue, Aug 14, 2012 at 12:15:13PM +0300, Zeeshan Ali (Khattak) wrote:
> From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
> 
> 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>

AFAICT this is not required.


>  
>  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__ */

ACK with the bogus include removed

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the virt-tools-list mailing list