summaryrefslogtreecommitdiff
path: root/clients/common/nm-meta-setting-access.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-04-30 10:33:40 +0200
committerThomas Haller <thaller@redhat.com>2018-06-13 15:42:58 +0200
commit3f6b776fd44937c2b4d1ff41a2fb7ae74a364417 (patch)
tree1af0712b10ffae45f1c56837aa8244602d9acccc /clients/common/nm-meta-setting-access.c
parent8a2552c800987864a67bc0c14e14733ddecc96bf (diff)
downloadNetworkManager-th/cli-connection-handling-x.tar.gz
WIP: cli: rework printing of "ap" device detailsth/cli-connection-handling-x
Diffstat (limited to 'clients/common/nm-meta-setting-access.c')
-rw-r--r--clients/common/nm-meta-setting-access.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/clients/common/nm-meta-setting-access.c b/clients/common/nm-meta-setting-access.c
index d7417ba6e0..045525a1c8 100644
--- a/clients/common/nm-meta-setting-access.c
+++ b/clients/common/nm-meta-setting-access.c
@@ -563,7 +563,8 @@ typedef struct {
static NMMetaSelectionResultList *
_output_selection_pack (const NMMetaAbstractInfo *const* fields_array,
GArray *array,
- GString *str)
+ GString *str,
+ const char *self_selection)
{
NMMetaSelectionResultList *result;
guint i;
@@ -587,10 +588,16 @@ _output_selection_pack (const NMMetaAbstractInfo *const* fields_array,
p->info = fields_array[a->idx];
p->idx = a->idx;
- if (a->self_offset_plus_1 > 0)
+ if (self_selection) {
+ nm_assert (a->self_offset_plus_1 == 0);
+ nm_assert (a->sub_offset_plus_1 == 0);
+ p->self_selection = self_selection;
+ } else {
+ nm_assert (a->self_offset_plus_1 > 0);
p->self_selection = &pdata[a->self_offset_plus_1 - 1];
- if (a->sub_offset_plus_1 > 0)
- p->sub_selection = &pdata[a->sub_offset_plus_1 - 1];
+ if (a->sub_offset_plus_1 > 0)
+ p->sub_selection = &pdata[a->sub_offset_plus_1 - 1];
+ }
}
}
@@ -716,7 +723,8 @@ not_found:
}
NMMetaSelectionResultList *
-nm_meta_selection_create_all (const NMMetaAbstractInfo *const* fields_array)
+nm_meta_selection_create_all (const NMMetaAbstractInfo *const* fields_array,
+ const char *self_selection)
{
gs_unref_array GArray *array = NULL;
guint i;
@@ -732,7 +740,7 @@ nm_meta_selection_create_all (const NMMetaAbstractInfo *const* fields_array)
}
}
- return _output_selection_pack (fields_array, array, NULL);
+ return _output_selection_pack (fields_array, array, NULL, self_selection);
}
NMMetaSelectionResultList *
@@ -756,7 +764,7 @@ nm_meta_selection_create_parse_one (const NMMetaAbstractInfo *const* fields_arra
&str,
error))
return NULL;
- return _output_selection_pack (fields_array, array, str);
+ return _output_selection_pack (fields_array, array, str, NULL);
}
@@ -795,13 +803,13 @@ nm_meta_selection_create_parse_list (const NMMetaAbstractInfo *const* fields_arr
if (fields_len == 0
|| ( fields_len == 1
&& !g_ascii_strcasecmp (fields_words[0], "all")))
- return nm_meta_selection_create_all (fields_array);
+ return nm_meta_selection_create_all (fields_array, "all");
else if ( fields_len == 1
&& !g_ascii_strcasecmp (fields_words[0], "common")) {
gs_free gpointer f = NULL;
fields_array = nm_meta_abstract_infos_select_included_in_common (fields_array, -1, NULL, &f);
- return nm_meta_selection_create_all (fields_array);
+ return nm_meta_selection_create_all (fields_array, "common");
}
if (fields_prefix) {
@@ -823,5 +831,5 @@ nm_meta_selection_create_parse_list (const NMMetaAbstractInfo *const* fields_arr
return NULL;
}
- return _output_selection_pack (fields_array, array, str);
+ return _output_selection_pack (fields_array, array, str, NULL);
}