config: cleanup handling no_auto_default lists
This commit is contained in:
@@ -1623,20 +1623,30 @@ set_property (GObject *object,
|
|||||||
case PROP_NO_AUTO_DEFAULT:
|
case PROP_NO_AUTO_DEFAULT:
|
||||||
/* construct-only */
|
/* construct-only */
|
||||||
{
|
{
|
||||||
char **value_arr = g_value_get_boxed (value);
|
const char *const*value_arr = g_value_get_boxed (value);
|
||||||
guint i, j = 0;
|
gsize i, j = 0;
|
||||||
|
gsize len;
|
||||||
|
|
||||||
priv->no_auto_default.arr = g_new (char *, g_strv_length (value_arr) + 1);
|
len = NM_PTRARRAY_LEN (value_arr);
|
||||||
|
|
||||||
|
priv->no_auto_default.arr = g_new (char *, len + 1);
|
||||||
priv->no_auto_default.specs = NULL;
|
priv->no_auto_default.specs = NULL;
|
||||||
|
|
||||||
for (i = 0; value_arr && value_arr[i]; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
if ( *value_arr[i]
|
const char *s = value_arr[i];
|
||||||
&& nm_utils_hwaddr_valid (value_arr[i], -1)
|
|
||||||
&& nm_utils_strv_find_first (value_arr, i, value_arr[i]) < 0) {
|
if (!s[0])
|
||||||
priv->no_auto_default.arr[j++] = g_strdup (value_arr[i]);
|
continue;
|
||||||
priv->no_auto_default.specs = g_slist_prepend (priv->no_auto_default.specs, g_strdup_printf (NM_MATCH_SPEC_MAC_TAG"%s", value_arr[i]));
|
if (!nm_utils_hwaddr_valid (s, -1))
|
||||||
}
|
continue;
|
||||||
|
if (nm_utils_strv_find_first (priv->no_auto_default.arr, j, s) >= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
priv->no_auto_default.arr[j++] = g_strdup (s);
|
||||||
|
priv->no_auto_default.specs = g_slist_prepend (priv->no_auto_default.specs,
|
||||||
|
g_strdup_printf (NM_MATCH_SPEC_MAC_TAG"%s", s));
|
||||||
}
|
}
|
||||||
|
nm_assert (j <= len);
|
||||||
priv->no_auto_default.arr[j++] = NULL;
|
priv->no_auto_default.arr[j++] = NULL;
|
||||||
priv->no_auto_default.specs = g_slist_reverse (priv->no_auto_default.specs);
|
priv->no_auto_default.specs = g_slist_reverse (priv->no_auto_default.specs);
|
||||||
}
|
}
|
||||||
|
@@ -349,30 +349,32 @@ nm_config_get_first_start (NMConfig *config)
|
|||||||
static char **
|
static char **
|
||||||
no_auto_default_from_file (const char *no_auto_default_file)
|
no_auto_default_from_file (const char *no_auto_default_file)
|
||||||
{
|
{
|
||||||
GPtrArray *no_auto_default_new;
|
gs_free const char **list = NULL;
|
||||||
char **list;
|
gs_free char *data = NULL;
|
||||||
guint i;
|
gsize l = 0;
|
||||||
char *data;
|
gsize i;
|
||||||
|
|
||||||
no_auto_default_new = g_ptr_array_new ();
|
|
||||||
|
|
||||||
if ( no_auto_default_file
|
if ( no_auto_default_file
|
||||||
&& g_file_get_contents (no_auto_default_file, &data, NULL, NULL)) {
|
&& g_file_get_contents (no_auto_default_file, &data, NULL, NULL))
|
||||||
list = g_strsplit (data, "\n", -1);
|
list = nm_utils_strsplit_set (data, "\n");
|
||||||
|
|
||||||
|
if (list) {
|
||||||
for (i = 0; list[i]; i++) {
|
for (i = 0; list[i]; i++) {
|
||||||
if ( *list[i]
|
const char *s = list[i];
|
||||||
&& nm_utils_hwaddr_valid (list[i], -1)
|
|
||||||
&& nm_utils_strv_find_first (list, i, list[i]) < 0)
|
if (!s[0])
|
||||||
g_ptr_array_add (no_auto_default_new, list[i]);
|
continue;
|
||||||
else
|
if (!nm_utils_hwaddr_valid (s, -1))
|
||||||
g_free (list[i]);
|
continue;
|
||||||
|
|
||||||
|
if (nm_utils_strv_find_first ((char **) list, l, s) >= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
list[l++] = s;
|
||||||
}
|
}
|
||||||
g_free (list);
|
|
||||||
g_free (data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_ptr_array_add (no_auto_default_new, NULL);
|
return nm_utils_strv_dup (list, l);
|
||||||
return (char **) g_ptr_array_free (no_auto_default_new, FALSE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
Reference in New Issue
Block a user