[virt-tools-list] [libosinfo 3/3] Utility function to retrieve device by property
Zeeshan Ali (Khattak)
zeeshanak at gnome.org
Thu Jan 19 15:22:20 UTC 2012
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?
>> +
>> + if (osinfo_list_get_length(OSINFO_LIST(devices)) > 0)
>> + ret = OSINFO_DEVICE (osinfo_list_get_nth(OSINFO_LIST(devices), 0));
>
> I think it would be better to return the full list and let the app decide whether
> it wants the first item in the list or more than that.
I guess, we can provide another function 'get_devices_by_property' as well..
--
Regards,
Zeeshan Ali (Khattak)
FSF member#5124
More information about the virt-tools-list
mailing list