diff options
Diffstat (limited to 'clients/cli/settings.c')
| -rw-r--r-- | clients/cli/settings.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/clients/cli/settings.c b/clients/cli/settings.c index 01142ba2..2d231e1c 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -318,7 +318,7 @@ _set_fcn_precheck_connection_secondaries (const char *value, char **iter; gboolean modified = FALSE; - strv0 = nm_utils_strsplit_set (value, " \t,"); + strv0 = nm_utils_strsplit_set (value, " \t,", FALSE); if (!strv0) return TRUE; @@ -662,25 +662,19 @@ nmc_setting_remove_property_option (NMSetting *setting, char ** nmc_setting_get_valid_properties (NMSetting *setting) { - char **valid_props = NULL; - GParamSpec **props, **iter; - guint num; - int i; - - /* Iterate through properties */ - i = 0; - props = g_object_class_list_properties (G_OBJECT_GET_CLASS (G_OBJECT (setting)), &num); - valid_props = g_malloc0 (sizeof (char*) * (num + 1)); - for (iter = props; iter && *iter; iter++) { - const char *key_name = g_param_spec_get_name (*iter); - - /* Add all properties except for "name" that is non-editable */ - if (g_strcmp0 (key_name, "name") != 0) - valid_props[i++] = g_strdup (key_name); - } - valid_props[i] = NULL; - g_free (props); + const NMMetaSettingInfoEditor *setting_info; + char **valid_props; + guint i, num; + + setting_info = nm_meta_setting_info_editor_find_by_setting (setting); + num = setting_info ? setting_info->properties_num : 0; + + valid_props = g_new (char *, num + 1); + for (i = 0; i < num; i++) + valid_props[i] = g_strdup (setting_info->properties[i]->property_name); + + valid_props[num] = NULL; return valid_props; } @@ -814,6 +808,7 @@ setting_details (const NmcConfig *nmc_config, NMSetting *setting, const char *on if (!nmc_print (nmc_config, (gpointer[]) { setting, NULL }, NULL, + NULL, (const NMMetaAbstractInfo *const[]) { (const NMMetaAbstractInfo *) setting_info, NULL }, fields_str, &error)) |