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:
|
||||
/* construct-only */
|
||||
{
|
||||
char **value_arr = g_value_get_boxed (value);
|
||||
guint i, j = 0;
|
||||
const char *const*value_arr = g_value_get_boxed (value);
|
||||
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;
|
||||
|
||||
for (i = 0; value_arr && value_arr[i]; i++) {
|
||||
if ( *value_arr[i]
|
||||
&& nm_utils_hwaddr_valid (value_arr[i], -1)
|
||||
&& nm_utils_strv_find_first (value_arr, i, value_arr[i]) < 0) {
|
||||
priv->no_auto_default.arr[j++] = g_strdup (value_arr[i]);
|
||||
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]));
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
const char *s = value_arr[i];
|
||||
|
||||
if (!s[0])
|
||||
continue;
|
||||
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.specs = g_slist_reverse (priv->no_auto_default.specs);
|
||||
}
|
||||
|
@@ -349,30 +349,32 @@ nm_config_get_first_start (NMConfig *config)
|
||||
static char **
|
||||
no_auto_default_from_file (const char *no_auto_default_file)
|
||||
{
|
||||
GPtrArray *no_auto_default_new;
|
||||
char **list;
|
||||
guint i;
|
||||
char *data;
|
||||
|
||||
no_auto_default_new = g_ptr_array_new ();
|
||||
gs_free const char **list = NULL;
|
||||
gs_free char *data = NULL;
|
||||
gsize l = 0;
|
||||
gsize i;
|
||||
|
||||
if ( no_auto_default_file
|
||||
&& g_file_get_contents (no_auto_default_file, &data, NULL, NULL)) {
|
||||
list = g_strsplit (data, "\n", -1);
|
||||
&& g_file_get_contents (no_auto_default_file, &data, NULL, NULL))
|
||||
list = nm_utils_strsplit_set (data, "\n");
|
||||
|
||||
if (list) {
|
||||
for (i = 0; list[i]; i++) {
|
||||
if ( *list[i]
|
||||
&& nm_utils_hwaddr_valid (list[i], -1)
|
||||
&& nm_utils_strv_find_first (list, i, list[i]) < 0)
|
||||
g_ptr_array_add (no_auto_default_new, list[i]);
|
||||
else
|
||||
g_free (list[i]);
|
||||
const char *s = list[i];
|
||||
|
||||
if (!s[0])
|
||||
continue;
|
||||
if (!nm_utils_hwaddr_valid (s, -1))
|
||||
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 (char **) g_ptr_array_free (no_auto_default_new, FALSE);
|
||||
return nm_utils_strv_dup (list, l);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
Reference in New Issue
Block a user