[gssdp] Make get_device_list properly portable
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gssdp] Make get_device_list properly portable
- Date: Tue, 12 Mar 2019 20:47:00 +0000 (UTC)
commit 3b085a7e2c94119519d848c4f4f1434bbea3d937
Author: Jens Georg <mail jensge org>
Date: Tue Mar 12 21:46:01 2019 +0100
Make get_device_list properly portable
Fixes #3
libgssdp/gssdp-net-posix.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
---
diff --git a/libgssdp/gssdp-net-posix.c b/libgssdp/gssdp-net-posix.c
index e6e4f20..3da6cb9 100644
--- a/libgssdp/gssdp-net-posix.c
+++ b/libgssdp/gssdp-net-posix.c
@@ -556,26 +556,29 @@ GList *
gssdp_net_list_devices (void)
{
struct ifaddrs *ifa_list, *ifa;
+ GHashTable *interfaces;
GList *result = NULL;
+ interfaces = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
if (getifaddrs (&ifa_list) != 0) {
g_warning ("Failed to retrieve list of network interfaces: %s",
strerror (errno));
- return result;
+ goto out;
}
for (ifa = ifa_list; ifa != NULL; ifa = ifa->ifa_next) {
- /* Filter for network devices - don't care for addresses */
- if (ifa->ifa_addr->sa_family != AF_PACKET) {
- continue;
- }
-
- result = g_list_prepend (result, g_strdup (ifa->ifa_name));
+ g_hash_table_add (interfaces, g_strdup (ifa->ifa_name));
}
freeifaddrs (ifa_list);
- return g_list_reverse (result);
+out:
+ result = g_hash_table_get_keys (interfaces);
+ g_hash_table_steal_all (interfaces);
+ g_hash_table_destroy (interfaces);
+
+ return result;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]