summary refs log tree commit diff
path: root/clients/common/nm-meta-setting-access.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2018-10-20 01:30:31 +0200
committerMichael Biebl <biebl@debian.org>2018-10-20 01:30:31 +0200
commit6518e361171f64bcaaa4bf868139362ed95cc2e0 (patch)
treed2d5b53faf80646a40ec2c0c7f2a42b3959612f5 /clients/common/nm-meta-setting-access.c
parente126f3e804c35480c4f075777430419d6ece23da (diff)
New upstream version 1.14.2 upstream/1.14.2
Diffstat (limited to 'clients/common/nm-meta-setting-access.c')
-rw-r--r--clients/common/nm-meta-setting-access.c91
1 files changed, 39 insertions, 52 deletions
diff --git a/clients/common/nm-meta-setting-access.c b/clients/common/nm-meta-setting-access.c
index a1bfed47..bd4064de 100644
--- a/clients/common/nm-meta-setting-access.c
+++ b/clients/common/nm-meta-setting-access.c
@@ -23,24 +23,32 @@
 
 /*****************************************************************************/
 
+static const NMMetaSettingInfoEditor *
+_get_meta_setting_info_editor_from_msi (const NMMetaSettingInfo *meta_setting_info)
+{
+	const NMMetaSettingInfoEditor *setting_info;
+
+	if (!meta_setting_info)
+		return NULL;
+
+	nm_assert (meta_setting_info->get_setting_gtype);
+	nm_assert (meta_setting_info->meta_type < G_N_ELEMENTS (nm_meta_setting_infos_editor));
+
+	setting_info = &nm_meta_setting_infos_editor[meta_setting_info->meta_type];
+
+	nm_assert (setting_info->general == meta_setting_info);
+	return setting_info;
+}
+
 const NMMetaSettingInfoEditor *
 nm_meta_setting_info_editor_find_by_name (const char *setting_name, gboolean use_alias)
 {
-	const NMMetaSettingInfo *meta_setting_info;
 	const NMMetaSettingInfoEditor *setting_info;
 	guint i;
 
 	g_return_val_if_fail (setting_name, NULL);
 
-	meta_setting_info = nm_meta_setting_infos_by_name (setting_name);
-	setting_info = NULL;
-	if (meta_setting_info) {
-		nm_assert (nm_streq0 (meta_setting_info->setting_name, setting_name));
-		if (meta_setting_info->meta_type < G_N_ELEMENTS (nm_meta_setting_infos_editor)) {
-			setting_info = &nm_meta_setting_infos_editor[meta_setting_info->meta_type];
-			nm_assert (setting_info->general == meta_setting_info);
-		}
-	}
+	setting_info = _get_meta_setting_info_editor_from_msi (nm_meta_setting_infos_by_name (setting_name));
 	if (!setting_info && use_alias) {
 		for (i = 0; i < _NM_META_SETTING_TYPE_NUM; i++) {
 			if (nm_streq0 (nm_meta_setting_infos_editor[i].alias, setting_name)) {
@@ -56,25 +64,7 @@ nm_meta_setting_info_editor_find_by_name (const char *setting_name, gboolean use
 const NMMetaSettingInfoEditor *
 nm_meta_setting_info_editor_find_by_gtype (GType gtype)
 {
-	const NMMetaSettingInfo *meta_setting_info;
-	const NMMetaSettingInfoEditor *setting_info;
-
-	meta_setting_info = nm_meta_setting_infos_by_gtype (gtype);
-
-	if (!meta_setting_info)
-		return NULL;
-
-	g_return_val_if_fail (meta_setting_info->get_setting_gtype, NULL);
-	g_return_val_if_fail (meta_setting_info->get_setting_gtype () == gtype, NULL);
-
-	if (meta_setting_info->meta_type >= G_N_ELEMENTS (nm_meta_setting_infos_editor))
-		return NULL;
-
-	setting_info = &nm_meta_setting_infos_editor[meta_setting_info->meta_type];
-
-	g_return_val_if_fail (setting_info->general == meta_setting_info, NULL);
-
-	return setting_info;
+	return _get_meta_setting_info_editor_from_msi (nm_meta_setting_infos_by_gtype (gtype));
 }
 
 const NMMetaSettingInfoEditor *
@@ -86,12 +76,13 @@ nm_meta_setting_info_editor_find_by_setting (NMSetting *setting)
 
 	setting_info = nm_meta_setting_info_editor_find_by_gtype (G_OBJECT_TYPE (setting));
 
-	nm_assert (setting_info == nm_meta_setting_info_editor_find_by_name (nm_setting_get_name (setting), FALSE));
-	nm_assert (!setting_info || G_TYPE_CHECK_INSTANCE_TYPE (setting, setting_info->general->get_setting_gtype ()));
-
+	nm_assert (setting_info);
+	nm_assert (G_TYPE_CHECK_INSTANCE_TYPE (setting, setting_info->general->get_setting_gtype ()));
 	return setting_info;
 }
 
+/*****************************************************************************/
+
 const NMMetaPropertyInfo *
 nm_meta_setting_info_editor_get_property_info (const NMMetaSettingInfoEditor *setting_info, const char *property_name)
 {
@@ -213,7 +204,8 @@ nm_meta_abstract_info_get_nested (const NMMetaAbstractInfo *abstract_info,
 
 	if (abstract_info->meta_type->get_nested) {
 		nested = abstract_info->meta_type->get_nested (abstract_info, &l, &f);
-		nm_assert ((nested ? g_strv_length ((char **) nested) : 0) == l);
+		nm_assert (NM_PTRARRAY_LEN (nested) == l);
+		nm_assert (!f || nested == f);
 		if (nested && nested[0]) {
 			NM_SET_OUT (out_len, l);
 			*nested_to_free = g_steal_pointer (&f);
@@ -229,6 +221,7 @@ nm_meta_abstract_info_get (const NMMetaAbstractInfo *abstract_info,
                            const NMMetaEnvironment *environment,
                            gpointer environment_user_data,
                            gpointer target,
+                           gpointer target_data,
                            NMMetaAccessorGetType get_type,
                            NMMetaAccessorGetFlags get_flags,
                            NMMetaAccessorGetOutFlags *out_flags,
@@ -250,6 +243,7 @@ nm_meta_abstract_info_get (const NMMetaAbstractInfo *abstract_info,
 	                                          environment,
 	                                          environment_user_data,
 	                                          target,
+	                                          target_data,
 	                                          get_type,
 	                                          get_flags,
 	                                          out_flags,
@@ -351,44 +345,38 @@ char *
 nm_meta_abstract_info_get_nested_names_str (const NMMetaAbstractInfo *abstract_info, const char *name_prefix)
 {
 	gs_free gpointer nested_to_free = NULL;
-	guint i;
 	const NMMetaAbstractInfo *const*nested;
-	GString *allowed_fields;
 
 	nested = nm_meta_abstract_info_get_nested (abstract_info, NULL, &nested_to_free);
 	if (!nested)
 		return NULL;
 
-	allowed_fields = g_string_sized_new (256);
-
 	if (!name_prefix)
 		name_prefix = nm_meta_abstract_info_get_name (abstract_info, FALSE);
 
-	for (i = 0; nested[i]; i++) {
-		g_string_append_printf (allowed_fields, "%s.%s,",
-		                        name_prefix, nm_meta_abstract_info_get_name (nested[i], FALSE));
-	}
-	g_string_truncate (allowed_fields, allowed_fields->len - 1);
-	return g_string_free (allowed_fields, FALSE);
+	return nm_meta_abstract_infos_get_names_str (nested, name_prefix);
 }
 
 char *
 nm_meta_abstract_infos_get_names_str (const NMMetaAbstractInfo *const*fields_array, const char *name_prefix)
 {
-	GString *allowed_fields;
+	GString *str;
 	guint i;
 
 	if (!fields_array || !fields_array[0])
 		return NULL;
 
-	allowed_fields = g_string_sized_new (256);
+	str = g_string_sized_new (128);
 	for (i = 0; fields_array[i]; i++) {
-		if (name_prefix)
-			g_string_append_printf (allowed_fields, "%s.", name_prefix);
-		g_string_append_printf (allowed_fields, "%s,", nm_meta_abstract_info_get_name (fields_array[i], FALSE));
+		if (str->len > 0)
+			g_string_append_c (str, ',');
+		if (name_prefix) {
+			g_string_append (str, name_prefix);
+			g_string_append_c (str, '.');
+		}
+		g_string_append (str, nm_meta_abstract_info_get_name (fields_array[i], FALSE));
 	}
-	g_string_truncate (allowed_fields, allowed_fields->len - 1);
-	return g_string_free (allowed_fields, FALSE);
+	return g_string_free (str, FALSE);
 }
 
 /*****************************************************************************/
@@ -601,7 +589,6 @@ nm_meta_selection_create_parse_one (const NMMetaAbstractInfo *const* fields_arra
 
 NMMetaSelectionResultList *
 nm_meta_selection_create_parse_list (const NMMetaAbstractInfo *const* fields_array,
-                                     const char *fields_prefix,
                                      const char *fields_str, /* a comma separated list of selectors */
                                      gboolean validate_nested,
                                      GError **error)
@@ -628,7 +615,7 @@ nm_meta_selection_create_parse_list (const NMMetaAbstractInfo *const* fields_arr
 		if (!fields_str_cur[0])
 			continue;
 		if (!_output_selection_select_one (fields_array,
-		                                   fields_prefix,
+		                                   NULL,
 		                                   fields_str_cur,
 		                                   validate_nested,
 		                                   &array,