diff options
author | Dan Winship <danw@gnome.org> | 2014-08-21 13:19:53 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-09-04 09:20:10 -0400 |
commit | 6a4127cfa063a77e3ee886a999441c71f6a0e11c (patch) | |
tree | 050213bad5058c40c4eaae8e8122e0c2dcc9e69c /libnm-core | |
parent | 3a54d050985d6ef2067b025571910a8ccd3cbd57 (diff) | |
download | NetworkManager-6a4127cfa063a77e3ee886a999441c71f6a0e11c.tar.gz |
libnm-core: change list-of-string and array-of-string properties to G_TYPE_STRV
Change all DBUS_TYPE_G_LIST_OF_STRING and DBUS_TYPE_G_ARRAY_OF_STRING
properties to G_TYPE_STRV, and update everything accordingly.
(This doesn't actually require using
_nm_setting_class_transform_property(); dbus-glib is happy to transform
between 'as' and G_TYPE_STRV.)
Diffstat (limited to 'libnm-core')
-rw-r--r-- | libnm-core/nm-connection.c | 5 | ||||
-rw-r--r-- | libnm-core/nm-setting-8021x.c | 18 | ||||
-rw-r--r-- | libnm-core/nm-setting-connection.c | 37 | ||||
-rw-r--r-- | libnm-core/nm-setting-ip4-config.c | 34 | ||||
-rw-r--r-- | libnm-core/nm-setting-ip6-config.c | 7 | ||||
-rw-r--r-- | libnm-core/nm-setting-vlan.c | 38 | ||||
-rw-r--r-- | libnm-core/nm-setting-wired.c | 51 | ||||
-rw-r--r-- | libnm-core/nm-setting-wired.h | 2 | ||||
-rw-r--r-- | libnm-core/nm-setting-wireless-security.c | 20 | ||||
-rw-r--r-- | libnm-core/nm-setting-wireless.c | 13 | ||||
-rw-r--r-- | libnm-core/nm-utils-private.h | 3 | ||||
-rw-r--r-- | libnm-core/nm-utils.c | 31 | ||||
-rw-r--r-- | libnm-core/nm-value-transforms.c | 100 | ||||
-rw-r--r-- | libnm-core/tests/test-general.c | 52 |
14 files changed, 175 insertions, 236 deletions
diff --git a/libnm-core/nm-connection.c b/libnm-core/nm-connection.c index a167117b8e..e02ccf98ff 100644 --- a/libnm-core/nm-connection.c +++ b/libnm-core/nm-connection.c @@ -256,12 +256,11 @@ validate_permissions_type (GHashTable *hash, GError **error) if (s_con) { permissions = g_hash_table_lookup (s_con, NM_SETTING_CONNECTION_PERMISSIONS); if (permissions) { - if ( !G_VALUE_HOLDS (permissions, G_TYPE_STRV) - && !G_VALUE_HOLDS (permissions, DBUS_TYPE_G_LIST_OF_STRING)) { + if (!G_VALUE_HOLDS (permissions, G_TYPE_STRV)) { g_set_error_literal (error, NM_SETTING_ERROR, NM_SETTING_ERROR_PROPERTY_TYPE_MISMATCH, - "Wrong permissions property type; should be a list of strings."); + "Wrong permissions property type; should be an array of strings."); return FALSE; } } diff --git a/libnm-core/nm-setting-8021x.c b/libnm-core/nm-setting-8021x.c index 15e91725ff..688fee7342 100644 --- a/libnm-core/nm-setting-8021x.c +++ b/libnm-core/nm-setting-8021x.c @@ -2819,7 +2819,7 @@ set_property (GObject *object, guint prop_id, switch (prop_id) { case PROP_EAP: g_slist_free_full (priv->eap, g_free); - priv->eap = g_value_dup_boxed (value); + priv->eap = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_IDENTITY: g_free (priv->identity); @@ -2855,7 +2855,7 @@ set_property (GObject *object, guint prop_id, break; case PROP_ALTSUBJECT_MATCHES: g_slist_free_full (priv->altsubject_matches, g_free); - priv->altsubject_matches = g_value_dup_boxed (value); + priv->altsubject_matches = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_CLIENT_CERT: if (priv->client_cert) { @@ -2911,7 +2911,7 @@ set_property (GObject *object, guint prop_id, break; case PROP_PHASE2_ALTSUBJECT_MATCHES: g_slist_free_full (priv->phase2_altsubject_matches, g_free); - priv->phase2_altsubject_matches = g_value_dup_boxed (value); + priv->phase2_altsubject_matches = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_PHASE2_CLIENT_CERT: if (priv->phase2_client_cert) { @@ -3003,7 +3003,7 @@ get_property (GObject *object, guint prop_id, switch (prop_id) { case PROP_EAP: - g_value_set_boxed (value, priv->eap); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->eap)); break; case PROP_IDENTITY: g_value_set_string (value, priv->identity); @@ -3024,7 +3024,7 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, priv->subject_match); break; case PROP_ALTSUBJECT_MATCHES: - g_value_set_boxed (value, priv->altsubject_matches); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->altsubject_matches)); break; case PROP_CLIENT_CERT: g_value_set_boxed (value, priv->client_cert); @@ -3054,7 +3054,7 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, priv->phase2_subject_match); break; case PROP_PHASE2_ALTSUBJECT_MATCHES: - g_value_set_boxed (value, priv->phase2_altsubject_matches); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->phase2_altsubject_matches)); break; case PROP_PHASE2_CLIENT_CERT: g_value_set_boxed (value, priv->phase2_client_cert); @@ -3135,7 +3135,7 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *setting_class) g_object_class_install_property (object_class, PROP_EAP, g_param_spec_boxed (NM_SETTING_802_1X_EAP, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -3241,7 +3241,7 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *setting_class) g_object_class_install_property (object_class, PROP_ALTSUBJECT_MATCHES, g_param_spec_boxed (NM_SETTING_802_1X_ALTSUBJECT_MATCHES, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -3417,7 +3417,7 @@ nm_setting_802_1x_class_init (NMSetting8021xClass *setting_class) g_object_class_install_property (object_class, PROP_PHASE2_ALTSUBJECT_MATCHES, g_param_spec_boxed (NM_SETTING_802_1X_PHASE2_ALTSUBJECT_MATCHES, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-connection.c b/libnm-core/nm-setting-connection.c index fc1e43e04b..9fea63b783 100644 --- a/libnm-core/nm-setting-connection.c +++ b/libnm-core/nm-setting-connection.c @@ -24,7 +24,7 @@ #include <glib/gi18n.h> #include "nm-utils.h" -#include "nm-dbus-glib-types.h" +#include "nm-utils-private.h" #include "nm-setting-connection.h" #include "nm-setting-private.h" @@ -1033,14 +1033,15 @@ finalize (GObject *object) } static GSList * -perm_stringlist_to_permlist (GSList *strlist) +perm_strv_to_permlist (char **strv) { - GSList *list = NULL, *iter; + GSList *list = NULL; + int i; - for (iter = strlist; iter; iter = g_slist_next (iter)) { + for (i = 0; strv[i]; i++) { Permission *p; - p = permission_new_from_str ((const char *) iter->data); + p = permission_new_from_str (strv[i]); if (p) list = g_slist_append (list, p); } @@ -1073,7 +1074,7 @@ set_property (GObject *object, guint prop_id, break; case PROP_PERMISSIONS: g_slist_free_full (priv->permissions, (GDestroyNotify) permission_free); - priv->permissions = perm_stringlist_to_permlist (g_value_get_boxed (value)); + priv->permissions = perm_strv_to_permlist (g_value_get_boxed (value)); break; case PROP_AUTOCONNECT: priv->autoconnect = g_value_get_boolean (value); @@ -1098,7 +1099,7 @@ set_property (GObject *object, guint prop_id, break; case PROP_SECONDARIES: g_slist_free_full (priv->secondaries, g_free); - priv->secondaries = g_value_dup_boxed (value); + priv->secondaries = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_GATEWAY_PING_TIMEOUT: priv->gateway_ping_timeout = g_value_get_uint (value); @@ -1109,14 +1110,18 @@ set_property (GObject *object, guint prop_id, } } -static GSList * -perm_permlist_to_stringlist (GSList *permlist) +static char ** +perm_permlist_to_strv (GSList *permlist) { - GSList *list = NULL, *iter; + GPtrArray *strings; + GSList *iter; + strings = g_ptr_array_new (); for (iter = permlist; iter; iter = g_slist_next (iter)) - list = g_slist_append (list, permission_to_string ((Permission *) iter->data)); - return list; + g_ptr_array_add (strings, permission_to_string ((Permission *) iter->data)); + g_ptr_array_add (strings, NULL); + + return (char **) g_ptr_array_free (strings, FALSE); } static void @@ -1140,7 +1145,7 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, nm_setting_connection_get_connection_type (setting)); break; case PROP_PERMISSIONS: - g_value_take_boxed (value, perm_permlist_to_stringlist (priv->permissions)); + g_value_take_boxed (value, perm_permlist_to_strv (priv->permissions)); break; case PROP_AUTOCONNECT: g_value_set_boolean (value, nm_setting_connection_get_autoconnect (setting)); @@ -1161,7 +1166,7 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, nm_setting_connection_get_slave_type (setting)); break; case PROP_SECONDARIES: - g_value_set_boxed (value, priv->secondaries); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->secondaries)); break; case PROP_GATEWAY_PING_TIMEOUT: g_value_set_uint (value, priv->gateway_ping_timeout); @@ -1289,7 +1294,7 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class) g_object_class_install_property (object_class, PROP_PERMISSIONS, g_param_spec_boxed (NM_SETTING_CONNECTION_PERMISSIONS, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -1403,7 +1408,7 @@ nm_setting_connection_class_init (NMSettingConnectionClass *setting_class) g_object_class_install_property (object_class, PROP_SECONDARIES, g_param_spec_boxed (NM_SETTING_CONNECTION_SECONDARIES, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-ip4-config.c b/libnm-core/nm-setting-ip4-config.c index 62fcff750c..1228778cbc 100644 --- a/libnm-core/nm-setting-ip4-config.c +++ b/libnm-core/nm-setting-ip4-config.c @@ -30,7 +30,7 @@ #include "nm-glib-compat.h" #include "nm-setting-private.h" #include "nm-core-internal.h" - +#include "nm-utils-private.h" /** * SECTION:nm-setting-ip4-config @@ -459,7 +459,7 @@ gboolean nm_setting_ip4_config_add_address (NMSettingIP4Config *setting, NMIP4Address *address) { - return _nm_setting_ip4_config_add_address_with_label (setting, address, NULL); + return _nm_setting_ip4_config_add_address_with_label (setting, address, ""); } gboolean @@ -473,6 +473,7 @@ _nm_setting_ip4_config_add_address_with_label (NMSettingIP4Config *setting, g_return_val_if_fail (NM_IS_SETTING_IP4_CONFIG (setting), FALSE); g_return_val_if_fail (address != NULL, FALSE); + g_return_val_if_fail (label != NULL, FALSE); priv = NM_SETTING_IP4_CONFIG_GET_PRIVATE (setting); for (iter = priv->addresses; iter; iter = g_slist_next (iter)) { @@ -510,8 +511,7 @@ nm_setting_ip4_config_remove_address (NMSettingIP4Config *setting, guint32 i) nm_ip4_address_unref ((NMIP4Address *) addr->data); priv->addresses = g_slist_delete_link (priv->addresses, addr); - if (label->data) - g_free (label->data); + g_free (label->data); priv->address_labels = g_slist_delete_link (priv->address_labels, label); g_object_notify (G_OBJECT (setting), NM_SETTING_IP4_CONFIG_ADDRESSES); @@ -840,6 +840,9 @@ verify_label (const char *label) const char *p; char *iface; + if (!*label) + return TRUE; + p = strchr (label, ':'); if (!p) return FALSE; @@ -976,7 +979,7 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) return FALSE; } - if (label && !verify_label (label)) { + if (!verify_label (label)) { g_set_error (error, NM_SETTING_IP4_CONFIG_ERROR, NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY, @@ -1078,7 +1081,7 @@ set_property (GObject *object, guint prop_id, break; case PROP_DNS_SEARCH: g_slist_free_full (priv->dns_search, g_free); - priv->dns_search = g_value_dup_boxed (value); + priv->dns_search = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_ADDRESSES: g_slist_free_full (priv->addresses, (GDestroyNotify) nm_ip4_address_unref); @@ -1088,19 +1091,12 @@ set_property (GObject *object, guint prop_id, g_slist_free_full (priv->address_labels, g_free); priv->address_labels = NULL; for (iter = priv->addresses; iter; iter = iter->next) - priv->address_labels = g_slist_prepend (priv->address_labels, NULL); + priv->address_labels = g_slist_prepend (priv->address_labels, g_strdup ("")); } break; case PROP_ADDRESS_LABELS: g_slist_free_full (priv->address_labels, g_free); - priv->address_labels = g_value_dup_boxed (value); - /* NULLs get converted to "" when this is sent over D-Bus. */ - for (iter = priv->address_labels; iter; iter = iter->next) { - if (!g_strcmp0 (iter->data, "")) { - g_free (iter->data); - iter->data = NULL; - } - } + priv->address_labels = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_ROUTES: g_slist_free_full (priv->routes, (GDestroyNotify) nm_ip4_route_unref); @@ -1150,13 +1146,13 @@ get_property (GObject *object, guint prop_id, g_value_set_boxed (value, priv->dns); break; case PROP_DNS_SEARCH: - g_value_set_boxed (value, priv->dns_search); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->dns_search)); break; case PROP_ADDRESSES: nm_utils_ip4_addresses_to_gvalue (priv->addresses, value); break; case PROP_ADDRESS_LABELS: - g_value_set_boxed (value, priv->address_labels); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->address_labels)); break; case PROP_ROUTES: nm_utils_ip4_routes_to_gvalue (priv->routes, value); @@ -1256,7 +1252,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class) g_object_class_install_property (object_class, PROP_DNS_SEARCH, g_param_spec_boxed (NM_SETTING_IP4_CONFIG_DNS_SEARCH, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -1288,7 +1284,7 @@ nm_setting_ip4_config_class_init (NMSettingIP4ConfigClass *setting_class) g_object_class_install_property (object_class, PROP_ADDRESS_LABELS, g_param_spec_boxed ("address-labels", "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-ip6-config.c b/libnm-core/nm-setting-ip6-config.c index 46cc538fba..a17e3620c3 100644 --- a/libnm-core/nm-setting-ip6-config.c +++ b/libnm-core/nm-setting-ip6-config.c @@ -25,6 +25,7 @@ #include "nm-setting-ip6-config.h" #include "nm-utils.h" +#include "nm-utils-private.h" #include "nm-dbus-glib-types.h" #include "nm-glib-compat.h" #include "nm-setting-private.h" @@ -902,7 +903,7 @@ set_property (GObject *object, guint prop_id, break; case PROP_DNS_SEARCH: g_slist_free_full (priv->dns_search, g_free); - priv->dns_search = g_value_dup_boxed (value); + priv->dns_search = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_ADDRESSES: g_slist_free_full (priv->addresses, g_free); @@ -951,7 +952,7 @@ get_property (GObject *object, guint prop_id, nm_utils_ip6_dns_to_gvalue (priv->dns, value); break; case PROP_DNS_SEARCH: - g_value_set_boxed (value, priv->dns_search); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->dns_search)); break; case PROP_ADDRESSES: nm_utils_ip6_addresses_to_gvalue (priv->addresses, value); @@ -1063,7 +1064,7 @@ nm_setting_ip6_config_class_init (NMSettingIP6ConfigClass *setting_class) g_object_class_install_property (object_class, PROP_DNS_SEARCH, g_param_spec_boxed (NM_SETTING_IP6_CONFIG_DNS_SEARCH, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-vlan.c b/libnm-core/nm-setting-vlan.c index e27ffcda15..f1781027d0 100644 --- a/libnm-core/nm-setting-vlan.c +++ b/libnm-core/nm-setting-vlan.c @@ -21,12 +21,10 @@ #include <stdlib.h> #include <string.h> -#include <dbus/dbus-glib.h> #include <glib/gi18n.h> #include "nm-setting-vlan.h" #include "nm-utils.h" -#include "nm-dbus-glib-types.h" #include "nm-setting-connection.h" #include "nm-setting-private.h" @@ -574,14 +572,15 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) } static GSList * -priority_stringlist_to_maplist (NMVlanPriorityMap map, GSList *strlist) +priority_strv_to_maplist (NMVlanPriorityMap map, char **strv) { - GSList *list = NULL, *iter; + GSList *list = NULL; + int i; - for (iter = strlist; iter; iter = g_slist_next (iter)) { + for (i = 0; strv[i]; i++) { PriorityMap *item; - item = priority_map_new_from_str (map, (const char *) iter->data); + item = priority_map_new_from_str (map, strv[i]); if (item) list = g_slist_prepend (list, item); } @@ -609,12 +608,12 @@ set_property (GObject *object, guint prop_id, case PROP_INGRESS_PRIORITY_MAP: g_slist_free_full (priv->ingress_priority_map, g_free); priv->ingress_priority_map = - priority_stringlist_to_maplist (NM_VLAN_INGRESS_MAP, g_value_get_boxed (value)); + priority_strv_to_maplist (NM_VLAN_INGRESS_MAP, g_value_get_boxed (value)); break; case PROP_EGRESS_PRIORITY_MAP: g_slist_free_full (priv->egress_priority_map, g_free); priv->egress_priority_map = - priority_stringlist_to_maplist (NM_VLAN_EGRESS_MAP, g_value_get_boxed (value)); + priority_strv_to_maplist (NM_VLAN_EGRESS_MAP, g_value_get_boxed (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -622,17 +621,22 @@ set_property (GObject *object, guint prop_id, } } -static GSList * -priority_maplist_to_stringlist (GSList *list) +static char ** +priority_maplist_to_strv (GSList *list) { - GSList *strlist = NULL, *iter; + GSList *iter; + GPtrArray *strv; + + strv = g_ptr_array_new (); for (iter = list; iter; iter = g_slist_next (iter)) { PriorityMap *item = iter->data; - strlist = g_slist_prepend (strlist, g_strdup_printf ("%d:%d", item->from, item->to)); + g_ptr_array_add (strv, g_strdup_printf ("%d:%d", item->from, item->to)); } - return g_slist_reverse (strlist); + g_ptr_array_add (strv, NULL); + + return (char **) g_ptr_array_free (strv, FALSE); } static void @@ -653,10 +657,10 @@ get_property (GObject *object, guint prop_id, g_value_set_uint (value, priv->flags); break; case PROP_INGRESS_PRIORITY_MAP: - g_value_take_boxed (value, priority_maplist_to_stringlist (priv->ingress_priority_map)); + g_value_take_boxed (value, priority_maplist_to_strv (priv->ingress_priority_map)); break; case PROP_EGRESS_PRIORITY_MAP: - g_value_take_boxed (value, priority_maplist_to_stringlist (priv->egress_priority_map)); + g_value_take_boxed (value, priority_maplist_to_strv (priv->egress_priority_map)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); @@ -753,7 +757,7 @@ nm_setting_vlan_class_init (NMSettingVlanClass *setting_class) g_object_class_install_property (object_class, PROP_INGRESS_PRIORITY_MAP, g_param_spec_boxed (NM_SETTING_VLAN_INGRESS_PRIORITY_MAP, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS)); @@ -768,7 +772,7 @@ nm_setting_vlan_class_init (NMSettingVlanClass *setting_class) g_object_class_install_property (object_class, PROP_EGRESS_PRIORITY_MAP, g_param_spec_boxed (NM_SETTING_VLAN_EGRESS_PRIORITY_MAP, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-wired.c b/libnm-core/nm-setting-wired.c index 683180937c..e115da69db 100644 --- a/libnm-core/nm-setting-wired.c +++ b/libnm-core/nm-setting-wired.c @@ -72,7 +72,7 @@ typedef struct { char *cloned_mac_address; GSList *mac_address_blacklist; guint32 mtu; - GPtrArray *s390_subchannels; + char **s390_subchannels; char *s390_nettype; GHashTable *s390_options; } NMSettingWiredPrivate; @@ -380,15 +380,15 @@ nm_setting_wired_get_mtu (NMSettingWired *setting) * connection is applicable to. The connection should only be used in * conjunction with that device. * - * Returns: (element-type utf8): #GPtrArray of strings, each specifying one - * subchannel the s390 device uses to communicate to the host. + * Returns: (transfer none) (element-type utf8): array of strings, each specifying + * one subchannel the s390 device uses to communicate to the host. **/ -const GPtrArray * +const char * const * nm_setting_wired_get_s390_subchannels (NMSettingWired *setting) { g_return_val_if_fail (NM_IS_SETTING_WIRED (setting), NULL); - return NM_SETTING_WIRED_GET_PRIVATE (setting)->s390_subchannels; + return (const char * const *) NM_SETTING_WIRED_GET_PRIVATE (setting)->s390_subchannels; } /** @@ -628,14 +628,17 @@ verify (NMSetting *setting, GSList *all_settings, GError **error) } } - if ( priv->s390_subchannels - && !(priv->s390_subchannels->len == 3 || priv->s390_subchannels->len == 2)) { - g_set_error_literal (error, - NM_SETTING_WIRED_ERROR, - NM_SETTING_WIRED_ERROR_INVALID_PROPERTY, - _("property is invalid")); - g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_S390_SUBCHANNELS); - return FALSE; + if (priv->s390_subchannels) { + int len = g_strv_length (priv->s390_subchannels); + + if (len != 2 && len != 3) { + g_set_error_literal (error, + NM_SETTING_WIRED_ERROR, + NM_SETTING_WIRED_ERROR_INVALID_PROPERTY, + _("property is invalid")); + g_prefix_error (error, "%s.%s: ", NM_SETTING_WIRED_SETTING_NAME, NM_SETTING_WIRED_S390_SUBCHANNELS); + return FALSE; + } } if (priv->s390_nettype && !_nm_utils_string_in_list (priv->s390_nettype, valid_nettype)) { @@ -697,10 +700,8 @@ finalize (GObject *object) g_free (priv->cloned_mac_address); g_slist_free_full (priv->mac_address_blacklist, g_free); - if (priv->s390_subchannels) { - g_ptr_array_set_free_func (priv->s390_subchannels, g_free); - g_ptr_array_free (priv->s390_subchannels, TRUE); - } + if (priv->s390_subchannels) + g_strfreev (priv->s390_subchannels); G_OBJECT_CLASS (nm_setting_wired_parent_class)->finalize (object); } @@ -743,16 +744,14 @@ set_property (GObject *object, guint prop_id, break; case PROP_MAC_ADDRESS_BLACKLIST: g_slist_free_full (priv->mac_address_blacklist, g_free); - priv->mac_address_blacklist = g_value_dup_boxed (value); + priv->mac_address_blacklist = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_MTU: priv->mtu = g_value_get_uint (value); break; case PROP_S390_SUBCHANNELS: - if (priv->s390_subchannels) { - g_ptr_array_set_free_func (priv->s390_subchannels, g_free); - g_ptr_array_free (priv->s390_subchannels, TRUE); - } + if (priv->s390_subchannels) + g_strfreev (priv->s390_subchannels); priv->s390_subchannels = g_value_dup_boxed (value); break; case PROP_S390_NETTYPE: @@ -799,13 +798,13 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, nm_setting_wired_get_cloned_mac_address (setting)); break; case PROP_MAC_ADDRESS_BLACKLIST: - g_value_set_boxed (value, nm_setting_wired_get_mac_address_blacklist (setting)); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->mac_address_blacklist)); break; case PROP_MTU: g_value_set_uint (value, nm_setting_wired_get_mtu (setting)); break; case PROP_S390_SUBCHANNELS: - g_value_set_boxed (value, nm_setting_wired_get_s390_subchannels (setting)); + g_value_set_boxed (value, priv->s390_subchannels); break; case PROP_S390_NETTYPE: g_value_set_string (value, nm_setting_wired_get_s390_nettype (setting)); @@ -939,7 +938,7 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_class) g_object_class_install_property (object_class, PROP_MAC_ADDRESS_BLACKLIST, g_param_spec_boxed (NM_SETTING_WIRED_MAC_ADDRESS_BLACKLIST, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS)); @@ -973,7 +972,7 @@ nm_setting_wired_class_init (NMSettingWiredClass *setting_class) g_object_class_install_property (object_class, PROP_S390_SUBCHANNELS, g_param_spec_boxed (NM_SETTING_WIRED_S390_SUBCHANNELS, "", "", - DBUS_TYPE_G_ARRAY_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_INFERRABLE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-wired.h b/libnm-core/nm-setting-wired.h index b395f2e3be..73a25230c1 100644 --- a/libnm-core/nm-setting-wired.h +++ b/libnm-core/nm-setting-wired.h @@ -103,7 +103,7 @@ void nm_setting_wired_clear_mac_blacklist_items (NMSettingWired * guint32 nm_setting_wired_get_mtu (NMSettingWired *setting); -const GPtrArray * nm_setting_wired_get_s390_subchannels (NMSettingWired *setting); +const char * const *nm_setting_wired_get_s390_subchannels (NMSettingWired *setting); const char * nm_setting_wired_get_s390_nettype (NMSettingWired *setting); guint32 nm_setting_wired_get_num_s390_options (NMSettingWired *setting); diff --git a/libnm-core/nm-setting-wireless-security.c b/libnm-core/nm-setting-wireless-security.c index 8ea4971509..c84d123b2d 100644 --- a/libnm-core/nm-setting-wireless-security.c +++ b/libnm-core/nm-setting-wireless-security.c @@ -22,13 +22,11 @@ #include <config.h> #include <string.h> -#include <dbus/dbus-glib.h> #include <glib/gi18n.h> #include "nm-setting-wireless-security.h" #include "nm-setting-8021x.h" #include "nm-utils.h" -#include "nm-dbus-glib-types.h" #include "nm-utils-private.h" #include "nm-setting-private.h" @@ -1191,15 +1189,15 @@ set_property (GObject *object, guint prop_id, break; case PROP_PROTO: g_slist_free_full (priv->proto, g_free); - priv->proto = g_value_dup_boxed (value); + priv->proto = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_PAIRWISE: g_slist_free_full (priv->pairwise, g_free); - priv->pairwise = g_value_dup_boxed (value); + priv->pairwise = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_GROUP: g_slist_free_full (priv->group, g_free); - priv->group = g_value_dup_boxed (value); + priv->group = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_LEAP_USERNAME: g_free (priv->leap_username); @@ -1265,13 +1263,13 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, priv->auth_alg); break; case PROP_PROTO: - g_value_set_boxed (value, priv->proto); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->proto)); break; case PROP_PAIRWISE: - g_value_set_boxed (value, priv->pairwise); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->pairwise)); break; case PROP_GROUP: - g_value_set_boxed (value, priv->group); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->group)); break; case PROP_LEAP_USERNAME: g_value_set_string (value, priv->leap_username); @@ -1389,7 +1387,7 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *setting g_object_class_install_property (object_class, PROP_PROTO, g_param_spec_boxed (NM_SETTING_WIRELESS_SECURITY_PROTO, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -1404,7 +1402,7 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *setting g_object_class_install_property (object_class, PROP_PAIRWISE, g_param_spec_boxed (NM_SETTING_WIRELESS_SECURITY_PAIRWISE, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); @@ -1419,7 +1417,7 @@ nm_setting_wireless_security_class_init (NMSettingWirelessSecurityClass *setting g_object_class_install_property (object_class, PROP_GROUP, g_param_spec_boxed (NM_SETTING_WIRELESS_SECURITY_GROUP, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-setting-wireless.c b/libnm-core/nm-setting-wireless.c index d3a35af1b4..4d96c5137a 100644 --- a/libnm-core/nm-setting-wireless.c +++ b/libnm-core/nm-setting-wireless.c @@ -898,14 +898,14 @@ set_property (GObject *object, guint prop_id, break; case PROP_MAC_ADDRESS_BLACKLIST: g_slist_free_full (priv->mac_address_blacklist, g_free); - priv->mac_address_blacklist = g_value_dup_boxed (value); + priv->mac_address_blacklist = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_MTU: priv->mtu = g_value_get_uint (value); break; case PROP_SEEN_BSSIDS: g_slist_free_full (priv->seen_bssids, g_free); - priv->seen_bssids = g_value_dup_boxed (value); + priv->seen_bssids = _nm_utils_strv_to_slist (g_value_get_boxed (value)); break; case PROP_HIDDEN: priv->hidden = g_value_get_boolean (value); @@ -921,6 +921,7 @@ get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { NMSettingWireless *setting = NM_SETTING_WIRELESS (object); + NMSettingWirelessPrivate *priv = NM_SETTING_WIRELESS_GET_PRIVATE (object); switch (prop_id) { case PROP_SSID: @@ -951,13 +952,13 @@ get_property (GObject *object, guint prop_id, g_value_set_string (value, nm_setting_wireless_get_cloned_mac_address (setting)); break; case PROP_MAC_ADDRESS_BLACKLIST: - g_value_set_boxed (value, nm_setting_wireless_get_mac_address_blacklist (setting)); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->mac_address_blacklist)); break; case PROP_MTU: g_value_set_uint (value, nm_setting_wireless_get_mtu (setting)); break; case PROP_SEEN_BSSIDS: - g_value_set_boxed (value, NM_SETTING_WIRELESS_GET_PRIVATE (setting)->seen_bssids); + g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->seen_bssids)); break; case PROP_HIDDEN: g_value_set_boolean (value, nm_setting_wireless_get_hidden (setting)); @@ -1138,7 +1139,7 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class) g_object_class_install_property (object_class, PROP_MAC_ADDRESS_BLACKLIST, g_param_spec_boxed (NM_SETTING_WIRELESS_MAC_ADDRESS_BLACKLIST, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS)); @@ -1156,7 +1157,7 @@ nm_setting_wireless_class_init (NMSettingWirelessClass *setting_class) g_object_class_install_property (object_class, PROP_SEEN_BSSIDS, g_param_spec_boxed (NM_SETTING_WIRELESS_SEEN_BSSIDS, "", "", - DBUS_TYPE_G_LIST_OF_STRING, + G_TYPE_STRV, G_PARAM_READWRITE | NM_SETTING_PARAM_FUZZY_IGNORE | G_PARAM_STATIC_STRINGS)); diff --git a/libnm-core/nm-utils-private.h b/libnm-core/nm-utils-private.h index 580ced77f3..b4ddf6e8a0 100644 --- a/libnm-core/nm-utils-private.h +++ b/libnm-core/nm-utils-private.h @@ -39,4 +39,7 @@ void _nm_utils_hwaddr_to_dbus (const GValue *prop_value, void _nm_utils_hwaddr_from_dbus (const GValue *dbus_value, GValue *prop_value); +GSList * _nm_utils_strv_to_slist (char **strv); +char ** _nm_utils_slist_to_strv (GSList *slist); + #endif diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index 7bc1aad9c6..9945a79210 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -564,6 +564,37 @@ _nm_utils_hash_values_to_slist (GHashTable *hash) return list; } +GSList * +_nm_utils_strv_to_slist (char **strv) +{ + int i; + GSList *list = NULL; + + g_return_val_if_fail (strv != NULL, NULL); + + for (i = 0; strv[i]; i++) + list = g_slist_prepend (list, g_strdup (strv[i])); + + return g_slist_reverse (list); +} + +char ** +_nm_utils_slist_to_strv (GSList *slist) +{ + GSList *iter; + char **strv; + int len, i = 0; + + len = g_slist_length (slist); + strv = g_new (char *, len + 1); + + for (i = 0, iter = slist; iter; iter = iter->next, i++) + strv[i] = g_strdup (iter->data); + strv[i] = NULL; + + return strv; +} + static gboolean device_supports_ap_ciphers (guint32 dev_caps, guint32 ap_flags, diff --git a/libnm-core/nm-value-transforms.c b/libnm-core/nm-value-transforms.c index 00e7e77579..2631a9d651 100644 --- a/libnm-core/nm-value-transforms.c +++ b/libnm-core/nm-value-transforms.c @@ -37,80 +37,6 @@ _nm_utils_convert_op_to_string (const GValue *src_value, GValue *dest_value) } static void -_nm_utils_convert_strv_to_slist (const GValue *src_value, GValue *dest_value) -{ - char **str; - GSList *list = NULL; - guint i = 0; - - g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), G_TYPE_STRV)); - - str = (char **) g_value_get_boxed (src_value); - - while (str && str[i]) - list = g_slist_prepend (list, g_strdup (str[i++])); - - g_value_take_boxed (dest_value, g_slist_reverse (list)); -} - -static void -_nm_utils_convert_slist_to_strv (const GValue *src_value, GValue *dest_value) -{ - GSList *slist; - char **strv; - int len, i = 0; - - slist = g_value_get_boxed (src_value); - len = g_slist_length (slist); - - strv = g_new (char *, len + 1); - for (i = 0; slist; slist = slist->next, i++) - strv[i] = g_strdup (slist->data); - strv[i] = NULL; - - g_value_take_boxed (dest_value, strv); -} - -static void -_nm_utils_convert_strv_to_ptrarray (const GValue *src_value, GValue *dest_value) -{ - char **str; - GPtrArray *array = NULL; - guint i = 0; - - g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), G_TYPE_STRV)); - - str = (char **) g_value_get_boxed (src_value); - - array = g_ptr_array_sized_new (3); - while (str && str[i]) - g_ptr_array_add (array, g_strdup (str[i++])); - - g_value_take_boxed (dest_value, array); -} - -static void -_nm_utils_convert_string_list_to_string (const GValue *src_value, GValue *dest_value) -{ - GSList *strings; - GString *printable; - GSList *iter; - - g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_LIST_OF_STRING)); - - strings = (GSList *) g_value_get_boxed (src_value); - - printable = g_string_new (NULL); - for (iter = strings; iter; iter = iter->next) { - if (iter != strings) - g_string_append_c (printable, ','); - g_string_append (printable, iter->data ? iter->data : "(null)"); - } - - g_value_take_string (dest_value, g_string_free (printable, FALSE)); -} - -static void _string_array_to_string (const GPtrArray *strings, GValue *dest_value) { GString *printable; @@ -127,17 +53,6 @@ _string_array_to_string (const GPtrArray *strings, GValue *dest_value) } static void -_nm_utils_convert_string_array_to_string (const GValue *src_value, GValue *dest_value) -{ - const GPtrArray *strings; - - g_return_if_fail (g_type_is_a (G_VALUE_TYPE (src_value), DBUS_TYPE_G_ARRAY_OF_STRING)); - - strings = (const GPtrArray *) g_value_get_boxed (src_value); - _string_array_to_string (strings, dest_value); -} - -static void _nm_utils_convert_op_array_to_string (const GValue *src_value, GValue *dest_value) { const GPtrArray *strings; @@ -543,21 +458,6 @@ _nm_value_transforms_register (void) g_value_register_transform_func (DBUS_TYPE_G_OBJECT_PATH, G_TYPE_STRING, _nm_utils_convert_op_to_string); - g_value_register_transform_func (G_TYPE_STRV, - DBUS_TYPE_G_LIST_OF_STRING, - _nm_utils_convert_strv_to_slist); - g_value_register_transform_func (DBUS_TYPE_G_LIST_OF_STRING, - G_TYPE_STRV, - _nm_utils_convert_slist_to_strv); - g_value_register_transform_func (G_TYPE_STRV, - DBUS_TYPE_G_ARRAY_OF_STRING, - _nm_utils_convert_strv_to_ptrarray); - g_value_register_transform_func (DBUS_TYPE_G_LIST_OF_STRING, - G_TYPE_STRING, - _nm_utils_convert_string_list_to_string); - g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_STRING, - G_TYPE_STRING, - _nm_utils_convert_string_array_to_string); g_value_register_transform_func (DBUS_TYPE_G_ARRAY_OF_OBJECT_PATH, G_TYPE_STRING, _nm_utils_convert_op_array_to_string); diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c index 122d12afaa..a5f8ee6f97 100644 --- a/libnm-core/tests/test-general.c +++ b/libnm-core/tests/test-general.c @@ -312,7 +312,7 @@ test_setting_ip4_config_labels (void) NMIP4Address *addr; const char *label; GPtrArray *addrs; - GSList *labels; + char **labels; GError *error = NULL; s_ip4 = (NMSettingIP4Config *) nm_setting_ip4_config_new (); @@ -331,7 +331,7 @@ test_setting_ip4_config_labels (void) g_assert_no_error (error); label = _nm_setting_ip4_config_get_address_label (s_ip4, 0); - g_assert_cmpstr (label, ==, NULL); + g_assert_cmpstr (label, ==, ""); /* addr 2 */ addr = nm_ip4_address_new (); @@ -351,13 +351,13 @@ test_setting_ip4_config_labels (void) nm_ip4_address_set_address (addr, 0x03030303); nm_ip4_address_set_prefix (addr, 24); - _nm_setting_ip4_config_add_address_with_label (s_ip4, addr, NULL); + _nm_setting_ip4_config_add_address_with_label (s_ip4, addr, ""); nm_ip4_address_unref (addr); nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); g_assert_no_error (error); label = _nm_setting_ip4_config_get_address_label (s_ip4, 2); - g_assert_cmpstr (label, ==, NULL); + g_assert_cmpstr (label, ==, ""); /* Remove addr 1 and re-verify remaining addresses */ nm_setting_ip4_config_remove_address (s_ip4, 0); @@ -372,7 +372,7 @@ test_setting_ip4_config_labels (void) addr = nm_setting_ip4_config_get_address (s_ip4, 1); g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x03030303); label = _nm_setting_ip4_config_get_address_label (s_ip4, 1); - g_assert_cmpstr (label, ==, NULL); + g_assert_cmpstr (label, ==, ""); /* Test explicit property assignment */ @@ -396,18 +396,18 @@ test_setting_ip4_config_labels (void) addr = nm_setting_ip4_config_get_address (s_ip4, 0); g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x02020202); label = _nm_setting_ip4_config_get_address_label (s_ip4, 0); - g_assert_cmpstr (label, ==, NULL); + g_assert_cmpstr (label, ==, ""); addr = nm_setting_ip4_config_get_address (s_ip4, 1); g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x03030303); label = _nm_setting_ip4_config_get_address_label (s_ip4, 1); - g_assert_cmpstr (label, ==, NULL); + g_assert_cmpstr (label, ==, ""); /* Setting labels now will leave addresses untouched */ g_object_set (G_OBJECT (s_ip4), "address-labels", labels, NULL); - g_boxed_free (DBUS_TYPE_G_LIST_OF_STRING, labels); + g_strfreev (labels); nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); g_assert_no_error (error); g_assert_cmpint (nm_setting_ip4_config_get_num_addresses (s_ip4), ==, 2); @@ -420,38 +420,40 @@ test_setting_ip4_config_labels (void) addr = nm_setting_ip4_config_get_address (s_ip4, 1); g_assert_cmpint (nm_ip4_address_get_address (addr), ==, 0x03030303); label = _nm_setting_ip4_config_get_address_label (s_ip4, 1); - g_assert_cmpstr (label, ==, NULL); + g_assert_cmpstr (label, ==, ""); /* Setting labels to a value that's too short or too long will result in * the setting not verifying. */ - labels = g_slist_append (NULL, "eth0:2"); + labels = g_strsplit ("eth0:2", ",", -1); g_object_set (G_OBJECT (s_ip4), "address-labels", labels, NULL); + g_strfreev (labels); nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); g_assert_error (error, NM_SETTING_IP4_CONFIG_ERROR, NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY); g_assert (g_str_has_prefix (error->message, "ipv4.address-labels:")); g_clear_error (&error); - labels = g_slist_append (labels, "eth0:3"); + labels = g_strsplit ("eth0:2,eth0:3", ",", -1); g_object_set (G_OBJECT (s_ip4), "address-labels", labels, NULL); + g_strfreev (labels); nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); g_assert_no_error (error); - labels = g_slist_append (labels, "eth0:4"); + labels = g_strsplit ("eth0:2,eth0:3,eth0:4", ",", -1); g_object_set (G_OBJECT (s_ip4), "address-labels", labels, NULL); + g_strfreev (labels); nm_setting_verify (NM_SETTING (s_ip4), NULL, &error); g_assert_error (error, NM_SETTING_IP4_CONFIG_ERROR, NM_SETTING_IP4_CONFIG_ERROR_INVALID_PROPERTY); g_assert (g_str_has_prefix (error->message, "ipv4.address-labels:")); g_clear_error (&error); - g_object_unref (s_ip4); } @@ -1226,7 +1228,7 @@ test_setting_connection_permissions_helpers (void) NMSettingConnection *s_con; gboolean success; char buf[9] = { 0x61, 0x62, 0x63, 0xff, 0xfe, 0xfd, 0x23, 0x01, 0x00 }; - GSList *list = NULL; + char **perms; const char *expected_perm = "user:" TEST_UNAME ":"; s_con = NM_SETTING_CONNECTION (nm_setting_connection_new ()); @@ -1295,14 +1297,14 @@ test_setting_connection_permissions_helpers (void) check_permission (s_con, 0, TEST_UNAME, "setting-connection-permissions-helpers"); /* Check the actual GObject property just to be paranoid */ - g_object_get (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, &list, NULL); - ASSERT (list != NULL, - "setting-connection-permissions-helpers", "unexpected failure getting permissions list"); - ASSERT (g_slist_length (list) == 1, - "setting-connection-permissions-helpers", "unexpected failure getting number of permissions in list"); - ASSERT (strcmp (list->data, expected_perm) == 0, + g_object_get (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, &perms, NULL); + ASSERT (perms != NULL, + "setting-connection-permissions-helpers", "unexpected failure getting permissions"); + ASSERT (g_strv_length (perms) == 1, + "setting-connection-permissions-helpers", "unexpected failure getting number of permissions"); + ASSERT (strcmp (perms[0], expected_perm) == 0, "setting-connection-permissions-helpers", "unexpected permission property data"); - g_slist_free_full (list, g_free); + g_strfreev (perms); /* Now remove that permission and ensure we have 0 permissions */ nm_setting_connection_remove_permission (s_con, 0); @@ -1320,7 +1322,7 @@ add_permission_property (NMSettingConnection *s_con, const char *detail) { GString *str; - GSList *list = NULL; + char *perms[2]; str = g_string_sized_new (50); if (ptype) @@ -1339,11 +1341,11 @@ add_permission_property (NMSettingConnection *s_con, if (detail) g_string_append (str, detail); - list = g_slist_append (list, str->str); - g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, list, NULL); + perms[0] = str->str; + perms[1] = NULL; + g_object_set (G_OBJECT (s_con), NM_SETTING_CONNECTION_PERMISSIONS, perms, NULL); g_string_free (str, TRUE); - g_slist_free (list); } static void |