mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-15 03:20:38 +01:00
libnm: add @deep_copy argument to _nm_utils_strv_to_slist() and _nm_utils_slist_to_strv()
(cherry picked from commit ed632207cd)
This commit is contained in:
parent
1dec33e2af
commit
0cbcf21e80
6 changed files with 34 additions and 24 deletions
|
|
@ -128,8 +128,8 @@ char ** _nm_utils_strsplit_set (const char *str,
|
|||
const char *delimiters,
|
||||
int max_tokens);
|
||||
|
||||
GSList * _nm_utils_strv_to_slist (char **strv);
|
||||
char ** _nm_utils_slist_to_strv (GSList *slist);
|
||||
GSList * _nm_utils_strv_to_slist (char **strv, gboolean deep_copy);
|
||||
char ** _nm_utils_slist_to_strv (GSList *slist, gboolean deep_copy);
|
||||
|
||||
GPtrArray * _nm_utils_strv_to_ptrarray (char **strv);
|
||||
char ** _nm_utils_ptrarray_to_strv (GPtrArray *ptrarray);
|
||||
|
|
|
|||
|
|
@ -2888,7 +2888,7 @@ set_property (GObject *object, guint prop_id,
|
|||
switch (prop_id) {
|
||||
case PROP_EAP:
|
||||
g_slist_free_full (priv->eap, g_free);
|
||||
priv->eap = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->eap = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_IDENTITY:
|
||||
g_free (priv->identity);
|
||||
|
|
@ -2922,7 +2922,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 = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->altsubject_matches = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_CLIENT_CERT:
|
||||
if (priv->client_cert)
|
||||
|
|
@ -2974,7 +2974,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 = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->phase2_altsubject_matches = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_PHASE2_CLIENT_CERT:
|
||||
if (priv->phase2_client_cert)
|
||||
|
|
@ -3060,7 +3060,7 @@ get_property (GObject *object, guint prop_id,
|
|||
|
||||
switch (prop_id) {
|
||||
case PROP_EAP:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->eap));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->eap, TRUE));
|
||||
break;
|
||||
case PROP_IDENTITY:
|
||||
g_value_set_string (value, priv->identity);
|
||||
|
|
@ -3081,7 +3081,7 @@ get_property (GObject *object, guint prop_id,
|
|||
g_value_set_string (value, priv->subject_match);
|
||||
break;
|
||||
case PROP_ALTSUBJECT_MATCHES:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->altsubject_matches));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->altsubject_matches, TRUE));
|
||||
break;
|
||||
case PROP_CLIENT_CERT:
|
||||
g_value_set_boxed (value, priv->client_cert);
|
||||
|
|
@ -3111,7 +3111,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_take_boxed (value, _nm_utils_slist_to_strv (priv->phase2_altsubject_matches));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->phase2_altsubject_matches, TRUE));
|
||||
break;
|
||||
case PROP_PHASE2_CLIENT_CERT:
|
||||
g_value_set_boxed (value, priv->phase2_client_cert);
|
||||
|
|
|
|||
|
|
@ -1149,7 +1149,7 @@ set_property (GObject *object, guint prop_id,
|
|||
break;
|
||||
case PROP_SECONDARIES:
|
||||
g_slist_free_full (priv->secondaries, g_free);
|
||||
priv->secondaries = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->secondaries = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_GATEWAY_PING_TIMEOUT:
|
||||
priv->gateway_ping_timeout = g_value_get_uint (value);
|
||||
|
|
@ -1222,7 +1222,7 @@ get_property (GObject *object, guint prop_id,
|
|||
g_value_set_enum (value, nm_setting_connection_get_autoconnect_slaves (setting));
|
||||
break;
|
||||
case PROP_SECONDARIES:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->secondaries));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->secondaries, TRUE));
|
||||
break;
|
||||
case PROP_GATEWAY_PING_TIMEOUT:
|
||||
g_value_set_uint (value, priv->gateway_ping_timeout);
|
||||
|
|
|
|||
|
|
@ -1132,15 +1132,15 @@ set_property (GObject *object, guint prop_id,
|
|||
break;
|
||||
case PROP_PROTO:
|
||||
g_slist_free_full (priv->proto, g_free);
|
||||
priv->proto = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->proto = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_PAIRWISE:
|
||||
g_slist_free_full (priv->pairwise, g_free);
|
||||
priv->pairwise = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->pairwise = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_GROUP:
|
||||
g_slist_free_full (priv->group, g_free);
|
||||
priv->group = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->group = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_LEAP_USERNAME:
|
||||
g_free (priv->leap_username);
|
||||
|
|
@ -1206,13 +1206,13 @@ get_property (GObject *object, guint prop_id,
|
|||
g_value_set_string (value, priv->auth_alg);
|
||||
break;
|
||||
case PROP_PROTO:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->proto));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->proto, TRUE));
|
||||
break;
|
||||
case PROP_PAIRWISE:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->pairwise));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->pairwise, TRUE));
|
||||
break;
|
||||
case PROP_GROUP:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->group));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->group, TRUE));
|
||||
break;
|
||||
case PROP_LEAP_USERNAME:
|
||||
g_value_set_string (value, priv->leap_username);
|
||||
|
|
|
|||
|
|
@ -911,7 +911,7 @@ set_property (GObject *object, guint prop_id,
|
|||
break;
|
||||
case PROP_SEEN_BSSIDS:
|
||||
g_slist_free_full (priv->seen_bssids, g_free);
|
||||
priv->seen_bssids = _nm_utils_strv_to_slist (g_value_get_boxed (value));
|
||||
priv->seen_bssids = _nm_utils_strv_to_slist (g_value_get_boxed (value), TRUE);
|
||||
break;
|
||||
case PROP_HIDDEN:
|
||||
priv->hidden = g_value_get_boolean (value);
|
||||
|
|
@ -964,7 +964,7 @@ get_property (GObject *object, guint prop_id,
|
|||
g_value_set_uint (value, nm_setting_wireless_get_mtu (setting));
|
||||
break;
|
||||
case PROP_SEEN_BSSIDS:
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->seen_bssids));
|
||||
g_value_take_boxed (value, _nm_utils_slist_to_strv (priv->seen_bssids, TRUE));
|
||||
break;
|
||||
case PROP_HIDDEN:
|
||||
g_value_set_boolean (value, nm_setting_wireless_get_hidden (setting));
|
||||
|
|
|
|||
|
|
@ -755,21 +755,26 @@ _nm_utils_bytes_from_dbus (GVariant *dbus_value,
|
|||
}
|
||||
|
||||
GSList *
|
||||
_nm_utils_strv_to_slist (char **strv)
|
||||
_nm_utils_strv_to_slist (char **strv, gboolean deep_copy)
|
||||
{
|
||||
int i;
|
||||
GSList *list = NULL;
|
||||
|
||||
if (strv) {
|
||||
for (i = 0; strv[i]; i++)
|
||||
list = g_slist_prepend (list, g_strdup (strv[i]));
|
||||
if (deep_copy) {
|
||||
for (i = 0; strv[i]; i++)
|
||||
list = g_slist_prepend (list, g_strdup (strv[i]));
|
||||
} else {
|
||||
for (i = 0; strv[i]; i++)
|
||||
list = g_slist_prepend (list, strv[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return g_slist_reverse (list);
|
||||
}
|
||||
|
||||
char **
|
||||
_nm_utils_slist_to_strv (GSList *slist)
|
||||
_nm_utils_slist_to_strv (GSList *slist, gboolean deep_copy)
|
||||
{
|
||||
GSList *iter;
|
||||
char **strv;
|
||||
|
|
@ -778,8 +783,13 @@ _nm_utils_slist_to_strv (GSList *slist)
|
|||
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);
|
||||
if (deep_copy) {
|
||||
for (i = 0, iter = slist; iter; iter = iter->next, i++)
|
||||
strv[i] = g_strdup (iter->data);
|
||||
} else {
|
||||
for (i = 0, iter = slist; iter; iter = iter->next, i++)
|
||||
strv[i] = iter->data;
|
||||
}
|
||||
strv[i] = NULL;
|
||||
|
||||
return strv;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue