[virt-tools-list] [libosinfo 3/3] Utility function to retrieve device by property

Daniel P. Berrange berrange at redhat.com
Thu Jan 19 15:28:16 UTC 2012


On Thu, Jan 19, 2012 at 05:22:20PM +0200, Zeeshan Ali (Khattak) wrote:
> On Thu, Jan 19, 2012 at 11:51 AM, Christophe Fergeau
> <cfergeau at redhat.com> wrote:
> > On Thu, Jan 19, 2012 at 02:37:07AM +0200, Zeeshan Ali (Khattak) wrote:
> >> From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>
> >>
> >> ---
> >>  osinfo/libosinfo.syms |    1 +
> >>  osinfo/osinfo_os.c    |   41 +++++++++++++++++++++++++++++++++++++++++
> >>  osinfo/osinfo_os.h    |    4 ++++
> >>  3 files changed, 46 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/osinfo/libosinfo.syms b/osinfo/libosinfo.syms
> >> index de1ff18..8e2d929 100644
> >> --- a/osinfo/libosinfo.syms
> >> +++ b/osinfo/libosinfo.syms
> >> @@ -109,6 +109,7 @@ LIBOSINFO_0.0.6 {
> >>       osinfo_os_new;
> >>       osinfo_os_get_devices;
> >>       osinfo_os_get_all_devices;
> >> +     osinfo_os_get_device_by_property;
> >>       osinfo_os_get_device_links;
> >>       osinfo_os_add_device;
> >>       osinfo_os_get_family;
> >> diff --git a/osinfo/osinfo_os.c b/osinfo/osinfo_os.c
> >> index 0facb08..ec7886a 100644
> >> --- a/osinfo/osinfo_os.c
> >> +++ b/osinfo/osinfo_os.c
> >> @@ -238,6 +238,47 @@ OsinfoDeviceList *osinfo_os_get_all_devices(OsinfoOs *os, OsinfoFilter *filter)
> >>  }
> >>
> >>  /**
> >> + * osinfo_os_get_device_by_property:
> >> + * @os: an operating system
> >> + * @property: the property of interest
> >> + * @value: the required value of property @property
> >> + * @inherited: Should devices from inherited and cloned OSs be included in the
> >> + * search.
> >> + *
> >> + * A utility function that gets the first device found from the list of devices
> >> + * @os supports, for which the value of @property is @value.
> >> + *
> >> + * Returns: (transfer full): The found device or NULL
> >> + */
> >> +OsinfoDevice *osinfo_os_get_device_by_property(OsinfoOs *os,
> >> +                                               const gchar *property,
> >> +                                               const gchar *value,
> >> +                                               gboolean inherited)
> >> +{
> >> +    OsinfoDevice *ret;
> >> +    OsinfoDeviceList *devices;
> >> +    OsinfoFilter *filter;
> >> +
> >> +    filter = osinfo_filter_new();
> >> +    osinfo_filter_add_constraint(filter, property, value);
> >> +
> >> +    if (inherited)
> >> +        devices = osinfo_os_get_all_devices(os, filter);
> >> +    else
> >> +        devices = osinfo_os_get_devices(os, filter);
> >> +    g_object_unref (filter);
> >
> > Don't you get a warning if you don't do g_object_unref(G_OBJECT(filter)); ?
> > (same comment for the g_object_unref(devices) below)
> 
> Nope, should I be?

No, it is fine.  g_object_{ref,unref} are both declared
to use  'void *' to remove the need to cast

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