From 1d1cfd77d381681e8cd50470028f47485d64111e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Klime=C5=A1?= Date: Wed, 22 May 2013 08:37:50 +0200 Subject: [PATCH] cli: adapt the code for the new flags and printing facilities The data are added to output_data at first, and then they are printed all at once using print_data(), that takes care of proper alignment and display. The static 'width' values defined in NmcOutputField columns are not used now, but dynamically computed maximal widths override them. --- cli/src/common.c | 129 +++--- cli/src/connections.c | 259 ++++++------ cli/src/devices.c | 529 +++++++++++++---------- cli/src/network-manager.c | 89 ++-- cli/src/settings.c | 864 +++++++++++++++++++------------------- 5 files changed, 977 insertions(+), 893 deletions(-) diff --git a/cli/src/common.c b/cli/src/common.c index cbf6f07662..f843db2ab1 100644 --- a/cli/src/common.c +++ b/cli/src/common.c @@ -81,17 +81,17 @@ print_ip4_config (NMIP4Config *cfg4, NmCli *nmc, const char *group_prefix) char **domain_arr = NULL; char **wins_arr = NULL; int i = 0; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (cfg4 == NULL) return FALSE; - nmc->allowed_fields = nmc_fields_ip4_config; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_IP4_CONFIG_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_ip4_config; + tmpl_len = sizeof (nmc_fields_ip4_config); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_IP4_CONFIG_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); /* addresses */ list = (GSList *) nm_ip4_config_get_addresses (cfg4); @@ -146,7 +146,7 @@ print_ip4_config (NMIP4Config *cfg4, NmCli *nmc, const char *group_prefix) if (ptr_array) { domain_arr = g_new (char *, ptr_array->len + 1); for (i = 0; i < ptr_array->len; i++) - domain_arr[i] = g_ptr_array_index (ptr_array, i); + domain_arr[i] = g_strdup (g_ptr_array_index (ptr_array, i)); domain_arr[i] = NULL; } @@ -161,21 +161,19 @@ print_ip4_config (NMIP4Config *cfg4, NmCli *nmc, const char *group_prefix) wins_arr[i] = NULL; } - set_val_str (nmc->allowed_fields, 0, (char *) group_prefix); - set_val_arr (nmc->allowed_fields, 1, addr_arr); - set_val_arr (nmc->allowed_fields, 2, route_arr); - set_val_arr (nmc->allowed_fields, 3, dns_arr); - set_val_arr (nmc->allowed_fields, 4, domain_arr); - set_val_arr (nmc->allowed_fields, 5, wins_arr); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, group_prefix); + set_val_arr (arr, 1, addr_arr); + set_val_arr (arr, 2, route_arr); + set_val_arr (arr, 3, dns_arr); + set_val_arr (arr, 4, domain_arr); + set_val_arr (arr, 5, wins_arr); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_strfreev (addr_arr); - g_strfreev (route_arr); - g_strfreev (dns_arr); - g_free (domain_arr); - g_strfreev (wins_arr); + /* Remove any previous data */ + nmc_empty_output_fields (nmc); return TRUE; } @@ -190,17 +188,17 @@ print_ip6_config (NMIP6Config *cfg6, NmCli *nmc, const char *group_prefix) char **dns_arr = NULL; char **domain_arr = NULL; int i = 0; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (cfg6 == NULL) return FALSE; - nmc->allowed_fields = nmc_fields_ip6_config; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_IP6_CONFIG_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_ip6_config; + tmpl_len = sizeof (nmc_fields_ip6_config); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_IP6_CONFIG_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); /* addresses */ list = (GSList *) nm_ip6_config_get_addresses (cfg6); @@ -254,24 +252,23 @@ print_ip6_config (NMIP6Config *cfg6, NmCli *nmc, const char *group_prefix) if (ptr_array) { domain_arr = g_new (char *, ptr_array->len + 1); for (i = 0; i < ptr_array->len; i++) - domain_arr[i] = g_ptr_array_index (ptr_array, i); + domain_arr[i] = g_strdup (g_ptr_array_index (ptr_array, i)); domain_arr[i] = NULL; } - set_val_str (nmc->allowed_fields, 0, (char *) group_prefix); - set_val_arr (nmc->allowed_fields, 1, addr_arr); - set_val_arr (nmc->allowed_fields, 2, route_arr); - set_val_arr (nmc->allowed_fields, 3, dns_arr); - set_val_arr (nmc->allowed_fields, 4, domain_arr); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, group_prefix); + set_val_arr (arr, 1, addr_arr); + set_val_arr (arr, 2, route_arr); + set_val_arr (arr, 3, dns_arr); + set_val_arr (arr, 4, domain_arr); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_strfreev (addr_arr); - g_strfreev (route_arr); - g_strfreev (dns_arr); - g_free (domain_arr); + /* Remove any previous data */ + nmc_empty_output_fields (nmc); return TRUE; } @@ -280,9 +277,8 @@ gboolean print_dhcp4_config (NMDHCP4Config *dhcp4, NmCli *nmc, const char *group_prefix) { GHashTable *table; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (dhcp4 == NULL) return FALSE; @@ -294,10 +290,11 @@ print_dhcp4_config (NMDHCP4Config *dhcp4, NmCli *nmc, const char *group_prefix) char **options_arr = NULL; int i = 0; - nmc->allowed_fields = nmc_fields_dhcp4_config; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DHCP4_CONFIG_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dhcp4_config; + tmpl_len = sizeof (nmc_fields_dhcp4_config); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DHCP4_CONFIG_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); options_arr = g_new (char *, g_hash_table_size (table) + 1); g_hash_table_iter_init (&table_iter, table); @@ -305,13 +302,15 @@ print_dhcp4_config (NMDHCP4Config *dhcp4, NmCli *nmc, const char *group_prefix) options_arr[i++] = g_strdup_printf ("%s = %s", (char *) key, (char *) value); options_arr[i] = NULL; - set_val_str (nmc->allowed_fields, 0, (char *) group_prefix); - set_val_arr (nmc->allowed_fields, 1, options_arr); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, group_prefix); + set_val_arr (arr, 1, options_arr); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_strfreev (options_arr); + /* Remove any previous data */ + nmc_empty_output_fields (nmc); return TRUE; } @@ -322,9 +321,8 @@ gboolean print_dhcp6_config (NMDHCP6Config *dhcp6, NmCli *nmc, const char *group_prefix) { GHashTable *table; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (dhcp6 == NULL) return FALSE; @@ -336,10 +334,11 @@ print_dhcp6_config (NMDHCP6Config *dhcp6, NmCli *nmc, const char *group_prefix) char **options_arr = NULL; int i = 0; - nmc->allowed_fields = nmc_fields_dhcp6_config; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DHCP6_CONFIG_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dhcp6_config; + tmpl_len = sizeof (nmc_fields_dhcp6_config); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DHCP6_CONFIG_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); options_arr = g_new (char *, g_hash_table_size (table) + 1); g_hash_table_iter_init (&table_iter, table); @@ -347,13 +346,15 @@ print_dhcp6_config (NMDHCP6Config *dhcp6, NmCli *nmc, const char *group_prefix) options_arr[i++] = g_strdup_printf ("%s = %s", (char *) key, (char *) value); options_arr[i] = NULL; - set_val_str (nmc->allowed_fields, 0, (char *) group_prefix); - set_val_arr (nmc->allowed_fields, 1, options_arr); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, group_prefix); + set_val_arr (arr, 1, options_arr); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_strfreev (options_arr); + /* Remove any previous data */ + nmc_empty_output_fields (nmc); return TRUE; } diff --git a/cli/src/connections.c b/cli/src/connections.c index 909cb029a0..a286513893 100644 --- a/cli/src/connections.c +++ b/cli/src/connections.c @@ -307,9 +307,6 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc) char *fields_str; char *fields_all = NMC_FIELDS_SETTINGS_NAMES_ALL; char *fields_common = NMC_FIELDS_SETTINGS_NAMES_ALL; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; gboolean was_output = FALSE; if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) @@ -324,17 +321,20 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc) if (error->code == 0) g_string_printf (nmc->return_text, _("Error: 'list configured': %s"), error->message); else - g_string_printf (nmc->return_text, _("Error: 'list configured': %s; allowed fields: %s"), error->message, NMC_FIELDS_SETTINGS_NAMES_ALL); + g_string_printf (nmc->return_text, _("Error: 'list configured': %s; allowed fields: %s"), + error->message, NMC_FIELDS_SETTINGS_NAMES_ALL); g_error_free (error); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return FALSE; } - nmc->allowed_fields = nmc_fields_settings_names; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ONLY; + /* Main header */ nmc->print_fields.header_name = _("Connection details"); - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTINGS_NAMES_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTINGS_NAMES_ALL, + nmc_fields_settings_names, NULL); + + nmc_fields_settings_names[0].flags = NMC_OF_FLAG_MAIN_HEADER_ONLY; + print_required_fields (nmc, nmc_fields_settings_names); /* Loop through the required settings and print them. */ for (i = 0; i < print_settings_array->len; i++) { @@ -346,6 +346,9 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc) was_output = FALSE; + /* Remove any previous data */ + nmc_empty_output_fields (nmc); + setting = nm_connection_get_setting_by_name (connection, nmc_fields_settings_names[section_idx].name); if (setting) { setting_details (setting, nmc); @@ -361,7 +364,7 @@ nmc_connection_detail (NMConnection *connection, NmCli *nmc) } static void -show_connection (NMConnection *data, gpointer user_data) +fill_output_connection (NMConnection *data, gpointer user_data) { NMConnection *connection = (NMConnection *) data; NmCli *nmc = (NmCli *) user_data; @@ -369,29 +372,33 @@ show_connection (NMConnection *data, gpointer user_data) guint64 timestamp; time_t timestamp_real; char *timestamp_str; - char timestamp_real_str[64]; + char *timestamp_real_str; + NmcOutputField *arr; s_con = nm_connection_get_setting_connection (connection); if (s_con) { /* Obtain field values */ timestamp = nm_setting_connection_get_timestamp (s_con); timestamp_str = g_strdup_printf ("%" G_GUINT64_FORMAT, timestamp); - timestamp_real = timestamp; - strftime (timestamp_real_str, sizeof (timestamp_real_str), "%c", localtime (×tamp_real)); + if (timestamp) { + timestamp_real = timestamp; + timestamp_real_str = g_malloc0 (64); + strftime (timestamp_real_str, 64, "%c", localtime (×tamp_real)); + } - nmc->allowed_fields[0].value = (char *) nm_setting_connection_get_id (s_con); - nmc->allowed_fields[1].value = (char *) nm_setting_connection_get_uuid (s_con); - nmc->allowed_fields[2].value = (char *) nm_setting_connection_get_connection_type (s_con); - nmc->allowed_fields[3].value = timestamp_str; - nmc->allowed_fields[4].value = timestamp ? timestamp_real_str : _("never"); - nmc->allowed_fields[5].value = nm_setting_connection_get_autoconnect (s_con) ? _("yes") : _("no"); - nmc->allowed_fields[6].value = nm_setting_connection_get_read_only (s_con) ? _("yes") : _("no"); - nmc->allowed_fields[7].value = (char *) nm_connection_get_path (connection); + arr = nmc_dup_fields_array (nmc_fields_con_show, + sizeof (nmc_fields_con_show), + 0); + set_val_strc (arr, 0, nm_setting_connection_get_id (s_con)); + set_val_strc (arr, 1, nm_setting_connection_get_uuid (s_con)); + set_val_strc (arr, 2, nm_setting_connection_get_connection_type (s_con)); + set_val_str (arr, 3, timestamp_str); + set_val_str (arr, 4, timestamp ? timestamp_real_str : g_strdup (_("never"))); + set_val_strc (arr, 5, nm_setting_connection_get_autoconnect (s_con) ? _("yes") : _("no")); + set_val_strc (arr, 6, nm_setting_connection_get_read_only (s_con) ? _("yes") : _("no")); + set_val_strc (arr, 7, nm_connection_get_path (connection)); - nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER_ADD & ~NMC_PF_FLAG_MAIN_HEADER_ONLY & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */ - print_fields (nmc->print_fields, nmc->allowed_fields); - - g_free (timestamp_str); + g_ptr_array_add (nmc->output_data, arr); } } @@ -440,9 +447,8 @@ do_connections_show (NmCli *nmc, int argc, char **argv) char *fields_str; char *fields_all = NMC_FIELDS_CON_SHOW_ALL; char *fields_common = NMC_FIELDS_CON_SHOW_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; gboolean printed = FALSE; nmc->should_wait = FALSE; @@ -454,8 +460,9 @@ do_connections_show (NmCli *nmc, int argc, char **argv) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_con_show; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error1); + tmpl = nmc_fields_con_show; + tmpl_len = sizeof (nmc_fields_con_show); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error1); /* error1 is checked later - it's not valid for connection details */ if (argc == 0) { @@ -464,13 +471,14 @@ do_connections_show (NmCli *nmc, int argc, char **argv) if (error1) goto error; - /* Print headers */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; + /* Add headers */ nmc->print_fields.header_name = _("List of configured connections"); - print_fields (nmc->print_fields, nmc->allowed_fields); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - /* Print values */ - g_slist_foreach (nmc->system_connections, (GFunc) show_connection, nmc); + /* Add values */ + g_slist_foreach (nmc->system_connections, (GFunc) fill_output_connection, nmc); + print_data (nmc); /* Print all data */ } else { g_clear_error (&error1); /* the error1 is only relevant for 'show configured' without arguments */ @@ -512,7 +520,8 @@ error: if (error1->code == 0) g_string_printf (nmc->return_text, _("Error: 'show configured': %s"), error1->message); else - g_string_printf (nmc->return_text, _("Error: 'show configured': %s; allowed fields: %s"), error1->message, NMC_FIELDS_CON_SHOW_ALL); + g_string_printf (nmc->return_text, _("Error: 'show configured': %s; allowed fields: %s"), + error1->message, NMC_FIELDS_CON_SHOW_ALL); g_error_free (error1); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; } @@ -584,8 +593,11 @@ get_connection_for_active (const GSList *con_list, NMActiveConnection *active) return NULL; } -static gboolean -fill_in_fields_con_active (NMActiveConnection *active, GSList *con_list) +static void +fill_output_active_connection (NMActiveConnection *active, + NmCli *nmc, + gboolean with_group, + guint32 o_flags) { GSList *iter; const char *active_path; @@ -594,7 +606,10 @@ fill_in_fields_con_active (NMActiveConnection *active, GSList *con_list) GString *dev_str; NMActiveConnectionState state; int i; - gboolean success = FALSE; + GSList *con_list = nmc->system_connections; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; + int idx_start = with_group ? 0 : 1; active_path = nm_active_connection_get_connection (active); state = nm_active_connection_get_state (active); @@ -614,20 +629,29 @@ fill_in_fields_con_active (NMActiveConnection *active, GSList *con_list) if (dev_str->len > 0) g_string_truncate (dev_str, dev_str->len - 1); /* Cut off last ',' */ + tmpl = nmc_fields_con_show_active; + tmpl_len = sizeof (nmc_fields_con_show_active); + if (!with_group) { + tmpl++; + tmpl_len -= sizeof (NmcOutputField); + } + /* Fill field values */ - nmc_fields_con_show_active[0].value = (char *) nmc_fields_con_active_details_groups[0].name; - nmc_fields_con_show_active[1].value = _("N/A"); - nmc_fields_con_show_active[2].value = (char *) nm_active_connection_get_uuid (active); - nmc_fields_con_show_active[3].value = dev_str->str; - nmc_fields_con_show_active[4].value = (char *) active_connection_state_to_string (state); - nmc_fields_con_show_active[5].value = nm_active_connection_get_default (active) ? _("yes") : _("no"); - nmc_fields_con_show_active[6].value = nm_active_connection_get_default6 (active) ? _("yes") : _("no"); - nmc_fields_con_show_active[7].value = (char *) nm_active_connection_get_specific_object (active); - nmc_fields_con_show_active[8].value = NM_IS_VPN_CONNECTION (active) ? _("yes") : _("no"); - nmc_fields_con_show_active[9].value = (char *) nm_object_get_path (NM_OBJECT (active)); - nmc_fields_con_show_active[10].value = (char *) nm_active_connection_get_connection (active); - nmc_fields_con_show_active[11].value = _("N/A"); - nmc_fields_con_show_active[12].value = (char *) nm_active_connection_get_master (active); + arr = nmc_dup_fields_array (tmpl, tmpl_len, o_flags); + if (with_group) + set_val_strc (arr, 0, nmc_fields_con_active_details_groups[0].name); + set_val_strc (arr, 1-idx_start, _("N/A")); + set_val_strc (arr, 2-idx_start, nm_active_connection_get_uuid (active)); + set_val_str (arr, 3-idx_start, dev_str->str); + set_val_strc (arr, 4-idx_start, active_connection_state_to_string (state)); + set_val_strc (arr, 5-idx_start, nm_active_connection_get_default (active) ? _("yes") : _("no")); + set_val_strc (arr, 6-idx_start, nm_active_connection_get_default6 (active) ? _("yes") : _("no")); + set_val_strc (arr, 7-idx_start, nm_active_connection_get_specific_object (active)); + set_val_strc (arr, 8-idx_start, NM_IS_VPN_CONNECTION (active) ? _("yes") : _("no")); + set_val_strc (arr, 9-idx_start, nm_object_get_path (NM_OBJECT (active))); + set_val_strc (arr, 10-idx_start, nm_active_connection_get_connection (active)); + set_val_strc (arr, 11-idx_start, _("N/A")); + set_val_strc (arr, 12-idx_start, nm_active_connection_get_master (active)); for (iter = con_list; iter; iter = g_slist_next (iter)) { NMConnection *connection = (NMConnection *) iter->data; @@ -639,40 +663,15 @@ fill_in_fields_con_active (NMActiveConnection *active, GSList *con_list) g_assert (s_con != NULL); /* Fill field values that depend on NMConnection */ - nmc_fields_con_show_active[1].value = (char *) nm_setting_connection_get_id (s_con); - nmc_fields_con_show_active[11].value = (char *) nm_setting_connection_get_zone (s_con); + set_val_strc (arr, 1-idx_start, nm_setting_connection_get_id (s_con)); + set_val_strc (arr, 11-idx_start, nm_setting_connection_get_zone (s_con)); - success = TRUE; break; } } + g_ptr_array_add (nmc->output_data, arr); - /* Just free GString here, the char array has to be freed after printing - * (by free_fields_con_active()) */ g_string_free (dev_str, FALSE); - return success; -} - -static void -free_fields_con_active (void) -{ - /* Just DEVICES string was dynamically allocated */ - g_free ((char *) nmc_fields_con_show_active[3].value); - nmc_fields_con_show_active[3].value = NULL; -} - -static void -show_active_connection (gpointer data, gpointer user_data) -{ - NMActiveConnection *active = NM_ACTIVE_CONNECTION (data); - NmCli *nmc = (NmCli *) user_data; - - fill_in_fields_con_active (active, nmc->system_connections); - - nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER_ADD & ~NMC_PF_FLAG_MAIN_HEADER_ONLY & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */ - print_fields (nmc->print_fields, nmc->allowed_fields); - - free_fields_con_active (); } static NMActiveConnection * @@ -810,9 +809,8 @@ nmc_active_connection_detail (NMActiveConnection *acon, NmCli *nmc) char *fields_str; char *fields_all = NMC_FIELDS_CON_ACTIVE_DETAILS_ALL; char *fields_common = NMC_FIELDS_CON_ACTIVE_DETAILS_ALL; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; gboolean was_output = FALSE; if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) @@ -827,17 +825,20 @@ nmc_active_connection_detail (NMActiveConnection *acon, NmCli *nmc) if (error->code == 0) g_string_printf (nmc->return_text, _("Error: 'list active': %s"), error->message); else - g_string_printf (nmc->return_text, _("Error: 'list active': %s; allowed fields: %s"), error->message, NMC_FIELDS_CON_ACTIVE_DETAILS_ALL); + g_string_printf (nmc->return_text, _("Error: 'list active': %s; allowed fields: %s"), + error->message, NMC_FIELDS_CON_ACTIVE_DETAILS_ALL); g_error_free (error); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return FALSE; } - nmc->allowed_fields = nmc_fields_con_active_details_groups; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ONLY; + /* Main header */ nmc->print_fields.header_name = _("Active connection details"); - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_CON_ACTIVE_DETAILS_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_CON_ACTIVE_DETAILS_ALL, + nmc_fields_con_active_details_groups, NULL); + + nmc_fields_con_active_details_groups[0].flags = NMC_OF_FLAG_MAIN_HEADER_ONLY; + print_required_fields (nmc, nmc_fields_con_active_details_groups); /* Loop through the groups and print them. */ for (i = 0; i < print_groups->len; i++) { @@ -848,23 +849,23 @@ nmc_active_connection_detail (NMActiveConnection *acon, NmCli *nmc) was_output = FALSE; + /* Remove any previous data */ + nmc_empty_output_fields (nmc); + /* GENERAL */ if (strcasecmp (nmc_fields_con_active_details_groups[group_idx].name, nmc_fields_con_active_details_groups[0].name) == 0) { - nmc->allowed_fields = nmc_fields_con_show_active; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_CON_ACTIVE_DETAILS_GENERAL_ALL, nmc->allowed_fields, NULL); - - /* Print field names */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); + /* Add field names */ + tmpl = nmc_fields_con_show_active; + tmpl_len = sizeof (nmc_fields_con_show_active); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_CON_ACTIVE_DETAILS_GENERAL_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); /* Fill in values */ - fill_in_fields_con_active (acon, nmc->system_connections); + fill_output_active_connection (acon, nmc, TRUE, NMC_OF_FLAG_SECTION_PREFIX); - /* and print them */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); + print_data (nmc); /* Print all data */ - free_fields_con_active (); was_output = TRUE; } @@ -907,12 +908,11 @@ nmc_active_connection_detail (NMActiveConnection *acon, NmCli *nmc) s_con = nm_connection_get_setting_connection (con); g_assert (s_con != NULL); - nmc->allowed_fields = nmc_fields_con_active_details_vpn; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_CON_ACTIVE_DETAILS_VPN_ALL, nmc->allowed_fields, NULL); - - /* Print field names */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); + tmpl = nmc_fields_con_active_details_vpn; + tmpl_len = sizeof (nmc_fields_con_active_details_vpn); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_CON_ACTIVE_DETAILS_VPN_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); s_vpn = nm_connection_get_setting_vpn (con); if (s_vpn) { @@ -934,22 +934,18 @@ nmc_active_connection_detail (NMActiveConnection *acon, NmCli *nmc) vpn_state = nm_vpn_connection_get_vpn_state (NM_VPN_CONNECTION (acon)); vpn_state_str = g_strdup_printf ("%d - %s", vpn_state, vpn_connection_state_to_string (vpn_state)); - /* Print values */ - set_val_str (nmc->allowed_fields, 0, (char *) nmc_fields_con_active_details_groups[2].name); - set_val_str (nmc->allowed_fields, 1, type_str); - set_val_str (nmc->allowed_fields, 2, (char *) (username ? username : get_vpn_data_item (con, VPN_DATA_ITEM_USERNAME))); - set_val_str (nmc->allowed_fields, 3, (char *) get_vpn_data_item (con, VPN_DATA_ITEM_GATEWAY)); - set_val_str (nmc->allowed_fields, 4, banner_str); - set_val_str (nmc->allowed_fields, 5, vpn_state_str); - set_val_arr (nmc->allowed_fields, 6, vpn_data_array); + /* Add values */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_con_active_details_groups[2].name); + set_val_str (arr, 1, type_str); + set_val_strc (arr, 2, username ? username : get_vpn_data_item (con, VPN_DATA_ITEM_USERNAME)); + set_val_strc (arr, 3, get_vpn_data_item (con, VPN_DATA_ITEM_GATEWAY)); + set_val_str (arr, 4, banner_str); + set_val_str (arr, 5, vpn_state_str); + set_val_arr (arr, 6, vpn_data_array); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); - - g_free (type_str); - g_free (banner_str); - g_free (vpn_state_str); - g_strfreev (vpn_data_array); + print_data (nmc); /* Print all data */ was_output = TRUE; } } @@ -964,8 +960,11 @@ static NMCResultCode do_connections_show_active (NmCli *nmc, int argc, char **argv) { const GPtrArray *active_cons; + int i; GError *err1 = NULL; gboolean printed = FALSE; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; nmc->should_wait = FALSE; @@ -984,9 +983,6 @@ do_connections_show_active (NmCli *nmc, int argc, char **argv) char *fields_str; char *fields_all = NMC_FIELDS_CON_ACTIVE_ALL; char *fields_common = NMC_FIELDS_CON_ACTIVE_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) fields_str = fields_common; @@ -995,18 +991,23 @@ do_connections_show_active (NmCli *nmc, int argc, char **argv) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_con_show_active + 1 ; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &err1); + tmpl = nmc_fields_con_show_active + 1; + tmpl_len = sizeof (nmc_fields_con_show_active) - sizeof (NmcOutputField); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &err1); if (err1) goto error; - /* Print headers */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; + /* Add headers */ nmc->print_fields.header_name = _("List of active connections"); - print_fields (nmc->print_fields, nmc->allowed_fields); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - if (active_cons && active_cons->len) - g_ptr_array_foreach ((GPtrArray *) active_cons, show_active_connection, (gpointer) nmc); + /* Add values */ + for (i = 0; active_cons && i < active_cons->len; i++) { + NMActiveConnection *ac = g_ptr_array_index (active_cons, i); + fill_output_active_connection (ac, nmc, FALSE, 0); + } + print_data (nmc); /* Print all data */ } else { while (argc > 0) { NMActiveConnection *acon; diff --git a/cli/src/devices.c b/cli/src/devices.c index 96265fe332..2943feb911 100644 --- a/cli/src/devices.c +++ b/cli/src/devices.c @@ -373,15 +373,17 @@ ap_wpa_rsn_flags_to_string (NM80211ApSecurityFlags flags) typedef struct { NmCli *nmc; int index; + guint32 output_flags; const char* active_bssid; const char* device; } APInfo; static void -detail_access_point (gpointer data, gpointer user_data) +fill_output_access_point (gpointer data, gpointer user_data) { NMAccessPoint *ap = NM_ACCESS_POINT (data); APInfo *info = (APInfo *) user_data; + NmcOutputField *arr; gboolean active = FALSE; NM80211ApFlags flags; NM80211ApSecurityFlags wpa_flags, rsn_flags; @@ -440,44 +442,41 @@ detail_access_point (gpointer data, gpointer user_data) if (security_str->len > 0) g_string_truncate (security_str, security_str->len-1); /* Chop off last space */ + arr = nmc_dup_fields_array (nmc_fields_dev_wifi_list, + sizeof (nmc_fields_dev_wifi_list), + info->output_flags); + ap_name = g_strdup_printf ("AP[%d]", info->index++); /* AP */ - info->nmc->allowed_fields[0].value = ap_name; - info->nmc->allowed_fields[1].value = ssid_str; - info->nmc->allowed_fields[2].value = (char *) bssid; - info->nmc->allowed_fields[3].value = mode == NM_802_11_MODE_ADHOC ? _("Ad-Hoc") - : mode == NM_802_11_MODE_INFRA ? _("Infrastructure") - : _("Unknown"); - info->nmc->allowed_fields[4].value = freq_str; - info->nmc->allowed_fields[5].value = bitrate_str; - info->nmc->allowed_fields[6].value = strength_str; - info->nmc->allowed_fields[7].value = security_str->str; - info->nmc->allowed_fields[8].value = wpa_flags_str; - info->nmc->allowed_fields[9].value = rsn_flags_str; - info->nmc->allowed_fields[10].value = (char *) info->device; - info->nmc->allowed_fields[11].value = active ? _("yes") : _("no"); - info->nmc->allowed_fields[12].value = (char *) nm_object_get_path (NM_OBJECT (ap)); + set_val_str (arr, 0, ap_name); + set_val_str (arr, 1, ssid_str); + set_val_strc (arr, 2, bssid); + set_val_strc (arr, 3, mode == NM_802_11_MODE_ADHOC ? _("Ad-Hoc") + : mode == NM_802_11_MODE_INFRA ? _("Infrastructure") + : _("Unknown")); + set_val_str (arr, 4, freq_str); + set_val_str (arr, 5, bitrate_str); + set_val_str (arr, 6, strength_str); + set_val_str (arr, 7, security_str->str); + set_val_str (arr, 8, wpa_flags_str); + set_val_str (arr, 9, rsn_flags_str); + set_val_strc (arr, 10, info->device); + set_val_strc (arr, 11, active ? _("yes") : _("no")); + set_val_strc (arr, 12, nm_object_get_path (NM_OBJECT (ap))); - info->nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER_ADD & ~NMC_PF_FLAG_MAIN_HEADER_ONLY & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */ - print_fields (info->nmc->print_fields, info->nmc->allowed_fields); + g_ptr_array_add (info->nmc->output_data, arr); - g_free (ap_name); - g_free (ssid_str); - g_free (freq_str); - g_free (bitrate_str); - g_free (strength_str); - g_free (wpa_flags_str); - g_free (rsn_flags_str); - g_string_free (security_str, TRUE); + g_string_free (security_str, FALSE); } #if WITH_WIMAX static void -detail_wimax_nsp (NMWimaxNsp *nsp, NmCli *nmc, NMDevice *dev, int idx) +fill_output_wimax_nsp (NMWimaxNsp *nsp, NmCli *nmc, NMDevice *dev, int idx, guint32 o_flags) { NMDeviceWimax *wimax = NM_DEVICE_WIMAX (dev); char *nsp_name, *quality_str; const char *ntype; gboolean active = FALSE; + NmcOutputField *arr; switch (nm_wimax_nsp_get_network_type (nsp)) { case NM_WIMAX_NSP_NETWORK_TYPE_HOME: @@ -502,32 +501,40 @@ detail_wimax_nsp (NMWimaxNsp *nsp, NmCli *nmc, NMDevice *dev, int idx) quality_str = g_strdup_printf ("%u", nm_wimax_nsp_get_signal_quality (nsp)); nsp_name = g_strdup_printf ("NSP[%d]", idx); /* NSP */ - nmc->allowed_fields[0].value = nsp_name; - nmc->allowed_fields[1].value = (char *) nm_wimax_nsp_get_name (nsp); - nmc->allowed_fields[2].value = quality_str; - nmc->allowed_fields[3].value = (char *) ntype; - nmc->allowed_fields[4].value = (char *) nm_device_get_iface (dev); - nmc->allowed_fields[5].value = active ? _("yes") : _("no"); - nmc->allowed_fields[6].value = (char *) nm_object_get_path (NM_OBJECT (nsp)); + arr = nmc_dup_fields_array (nmc_fields_dev_wimax_list, + sizeof (nmc_fields_dev_wimax_list), + o_flags); + set_val_str (arr, 0, nsp_name); + set_val_strc (arr, 1, nm_wimax_nsp_get_name (nsp)); + set_val_str (arr, 2, quality_str); + set_val_strc (arr, 3, ntype); + set_val_strc (arr, 4, nm_device_get_iface (dev)); + set_val_strc (arr, 5, active ? _("yes") : _("no")); + set_val_strc (arr, 6, nm_object_get_path (NM_OBJECT (nsp))); - nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER_ADD & ~NMC_PF_FLAG_MAIN_HEADER_ONLY & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */ - print_fields (nmc->print_fields, nmc->allowed_fields); - - g_free (nsp_name); - g_free (quality_str); + g_ptr_array_add (nmc->output_data, arr); } #endif -struct cb_info { - NMClient *client; - const GPtrArray *active; -}; +static const char * +construct_header_name (const char *base, const char *spec) +{ + static char header_name[128]; + + if (spec == NULL) + return base; + + g_strlcpy (header_name, base, sizeof (header_name)); + g_strlcat (header_name, " (", sizeof (header_name)); + g_strlcat (header_name, spec, sizeof (header_name)); + g_strlcat (header_name, ")", sizeof (header_name)); + + return header_name; +} static void -show_device_info (gpointer data, gpointer user_data) +show_device_info (NMDevice *device, NmCli *nmc) { - NMDevice *device = NM_DEVICE (data); - NmCli *nmc = (NmCli *) user_data; GError *error = NULL; APInfo *info; const char *hwaddr = NULL; @@ -544,14 +551,14 @@ show_device_info (gpointer data, gpointer user_data) char *fields_str; char *fields_all = NMC_FIELDS_DEV_SHOW_SECTIONS_ALL; char *fields_common = NMC_FIELDS_DEV_SHOW_SECTIONS_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; gboolean was_output = FALSE; NMIP4Config *cfg4; NMIP6Config *cfg6; NMDHCP4Config *dhcp4; NMDHCP6Config *dhcp6; + const char *base_hdr = _("Device details"); if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) fields_str = fields_common; @@ -565,36 +572,42 @@ show_device_info (gpointer data, gpointer user_data) if (error->code == 0) g_string_printf (nmc->return_text, _("Error: 'device show': %s"), error->message); else - g_string_printf (nmc->return_text, _("Error: 'device show': %s; allowed fields: %s"), error->message, NMC_FIELDS_DEV_SHOW_SECTIONS_ALL); + g_string_printf (nmc->return_text, _("Error: 'device show': %s; allowed fields: %s"), + error->message, NMC_FIELDS_DEV_SHOW_SECTIONS_ALL); g_error_free (error); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return; } /* Main header */ - nmc->allowed_fields = nmc_fields_dev_show_general; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ONLY; - nmc->print_fields.header_name = _("Device details"); - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_GENERAL_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, nm_device_get_iface (device)); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_GENERAL_ALL, + nmc_fields_dev_show_general, NULL); + + nmc_fields_dev_show_general[0].flags = NMC_OF_FLAG_MAIN_HEADER_ONLY; + print_required_fields (nmc, nmc_fields_dev_show_general); /* Loop through the required sections and print them. */ for (k = 0; k < sections_array->len; k++) { int section_idx = g_array_index (sections_array, int, k); if (nmc->print_output != NMC_PRINT_TERSE && !nmc->multiline_output && was_output) - printf ("\n"); /* Empty line */ + printf ("\n"); /* Print empty line between groups in tabular mode */ was_output = FALSE; + /* Remove any previous data */ + nmc_empty_output_fields (nmc); + state = nm_device_get_state_reason (device, &reason); /* section GENERAL */ if (!strcasecmp (nmc_fields_dev_show_sections[section_idx].name, nmc_fields_dev_show_sections[0].name)) { - nmc->allowed_fields = nmc_fields_dev_show_general; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_GENERAL_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_general; + tmpl_len = sizeof (nmc_fields_dev_show_general); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_GENERAL_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); if (NM_IS_DEVICE_ETHERNET (device)) hwaddr = nm_device_ethernet_get_hw_address (NM_DEVICE_ETHERNET (device)); @@ -616,38 +629,38 @@ show_device_info (gpointer data, gpointer user_data) state_str = g_strdup_printf ("%d (%s)", state, nmc_device_state_to_string (state)); reason_str = g_strdup_printf ("%d (%s)", reason, nmc_device_reason_to_string (reason)); - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[0].name; /* "GENERAL"*/ - nmc->allowed_fields[1].value = (char *) nm_device_get_iface (device); - nmc->allowed_fields[2].value = (char *) nm_device_get_type_description (device); - nmc->allowed_fields[3].value = (char *) nm_device_get_vendor (device); - nmc->allowed_fields[4].value = (char *) nm_device_get_product (device); - nmc->allowed_fields[5].value = (char *) (nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)")); - nmc->allowed_fields[6].value = (char *) nm_device_get_driver_version (device); - nmc->allowed_fields[7].value = (char *) nm_device_get_firmware_version (device); - nmc->allowed_fields[8].value = (char *) (hwaddr ? hwaddr : _("(unknown)")); - nmc->allowed_fields[9].value = (char *) state_str; - nmc->allowed_fields[10].value = (char *) reason_str; - nmc->allowed_fields[11].value = (char *) nm_device_get_udi (device); - nmc->allowed_fields[12].value = (char *) nm_device_get_ip_iface (device); - nmc->allowed_fields[13].value = nm_device_get_managed (device) ? _("yes") : _("no"); - nmc->allowed_fields[14].value = nm_device_get_autoconnect (device) ? _("yes") : _("no"); - nmc->allowed_fields[15].value = nm_device_get_firmware_missing (device) ? _("yes") : _("no"); - nmc->allowed_fields[16].value = (char *) ((acon = nm_device_get_active_connection (device)) ? - nm_object_get_path (NM_OBJECT (acon)) : _("not connected")); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[0].name); /* "GENERAL"*/ + set_val_strc (arr, 1, nm_device_get_iface (device)); + set_val_strc (arr, 2, nm_device_get_type_description (device)); + set_val_strc (arr, 3, nm_device_get_vendor (device)); + set_val_strc (arr, 4, nm_device_get_product (device)); + set_val_strc (arr, 5, nm_device_get_driver (device) ? nm_device_get_driver (device) : _("(unknown)")); + set_val_strc (arr, 6, nm_device_get_driver_version (device)); + set_val_strc (arr, 7, nm_device_get_firmware_version (device)); + set_val_strc (arr, 8, hwaddr ? hwaddr : _("(unknown)")); + set_val_str (arr, 9, state_str); + set_val_str (arr, 10, reason_str); + set_val_strc (arr, 11, nm_device_get_udi (device)); + set_val_strc (arr, 12, nm_device_get_ip_iface (device)); + set_val_strc (arr, 13, nm_device_get_managed (device) ? _("yes") : _("no")); + set_val_strc (arr, 14, nm_device_get_autoconnect (device) ? _("yes") : _("no")); + set_val_strc (arr, 15, nm_device_get_firmware_missing (device) ? _("yes") : _("no")); + set_val_strc (arr, 16, ((acon = nm_device_get_active_connection (device)) ? + nm_object_get_path (NM_OBJECT (acon)) : _("not connected"))); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ - g_free (state_str); - g_free (reason_str); + print_data (nmc); /* Print all data */ was_output = TRUE; } /* section CAPABILITIES */ if (!strcasecmp (nmc_fields_dev_show_sections[section_idx].name, nmc_fields_dev_show_sections[1].name)) { - nmc->allowed_fields = nmc_fields_dev_show_cap; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_CAP_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_cap; + tmpl_len = sizeof (nmc_fields_dev_show_cap); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_CAP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); caps = nm_device_get_capabilities (device); speed = 0; @@ -659,20 +672,18 @@ show_device_info (gpointer data, gpointer user_data) speed = nm_device_wifi_get_bitrate (NM_DEVICE_WIFI (device)); speed /= 1000; } - if (speed) - speed_str = g_strdup_printf (_("%u Mb/s"), speed); + speed_str = speed ? g_strdup_printf (_("%u Mb/s"), speed) : g_strdup (_("unknown")); - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[1].name; /* "CAPABILITIES" */ - nmc->allowed_fields[1].value = (caps & NM_DEVICE_CAP_CARRIER_DETECT) ? _("yes") : _("no"); - nmc->allowed_fields[2].value = speed_str ? speed_str : _("unknown"); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[1].name); /* "CAPABILITIES" */ + set_val_strc (arr, 1, (caps & NM_DEVICE_CAP_CARRIER_DETECT) ? _("yes") : _("no")); + set_val_str (arr, 2, speed_str); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ - g_free (speed_str); + print_data (nmc); /* Print all data */ was_output = TRUE; } - /* Wireless specific information */ if ((NM_IS_DEVICE_WIFI (device))) { NMDeviceWifiCapabilities wcaps; @@ -684,22 +695,25 @@ show_device_info (gpointer data, gpointer user_data) if (!strcasecmp (nmc_fields_dev_show_sections[section_idx].name, nmc_fields_dev_show_sections[2].name)) { wcaps = nm_device_wifi_get_capabilities (NM_DEVICE_WIFI (device)); - nmc->allowed_fields = nmc_fields_dev_show_wifi_prop; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_WIFI_PROP_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_wifi_prop; + tmpl_len = sizeof (nmc_fields_dev_show_wifi_prop); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_WIFI_PROP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[2].name; /* "WIFI-PROPERTIES" */ - nmc->allowed_fields[1].value = (wcaps & (NM_WIFI_DEVICE_CAP_CIPHER_WEP40 | NM_WIFI_DEVICE_CAP_CIPHER_WEP104)) ? _("yes") : _("no"); - nmc->allowed_fields[2].value = (wcaps & NM_WIFI_DEVICE_CAP_WPA) ? _("yes") : _("no"); - nmc->allowed_fields[3].value = (wcaps & NM_WIFI_DEVICE_CAP_RSN) ? _("yes") : _("no"); - nmc->allowed_fields[4].value = (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP) ? _("yes") : _("no"); - nmc->allowed_fields[5].value = (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP) ? _("yes") : _("no"); - nmc->allowed_fields[6].value = (wcaps & NM_WIFI_DEVICE_CAP_AP) ? _("yes") : _("no"); - nmc->allowed_fields[7].value = (wcaps & NM_WIFI_DEVICE_CAP_ADHOC) ? _("yes") : _("no"); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[2].name); /* "WIFI-PROPERTIES" */ + set_val_strc (arr, 1, (wcaps & (NM_WIFI_DEVICE_CAP_CIPHER_WEP40 | NM_WIFI_DEVICE_CAP_CIPHER_WEP104)) ? + _("yes") : _("no")); + set_val_strc (arr, 2, (wcaps & NM_WIFI_DEVICE_CAP_WPA) ? _("yes") : _("no")); + set_val_strc (arr, 3, (wcaps & NM_WIFI_DEVICE_CAP_RSN) ? _("yes") : _("no")); + set_val_strc (arr, 4, (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_TKIP) ? _("yes") : _("no")); + set_val_strc (arr, 5, (wcaps & NM_WIFI_DEVICE_CAP_CIPHER_CCMP) ? _("yes") : _("no")); + set_val_strc (arr, 6, (wcaps & NM_WIFI_DEVICE_CAP_AP) ? _("yes") : _("no")); + set_val_strc (arr, 7, (wcaps & NM_WIFI_DEVICE_CAP_ADHOC) ? _("yes") : _("no")); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ was_output = TRUE; } @@ -710,36 +724,41 @@ show_device_info (gpointer data, gpointer user_data) active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL; } - nmc->allowed_fields = nmc_fields_dev_wifi_list; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_WIFI_LIST_FOR_DEV_LIST, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_wifi_list; + tmpl_len = sizeof (nmc_fields_dev_wifi_list); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_WIFI_LIST_FOR_DEV_LIST, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; info = g_malloc0 (sizeof (APInfo)); info->nmc = nmc; info->index = 1; + info->output_flags = NMC_OF_FLAG_SECTION_PREFIX; info->active_bssid = active_bssid; info->device = nm_device_get_iface (device); aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device)); if (aps && aps->len) - g_ptr_array_foreach ((GPtrArray *) aps, detail_access_point, (gpointer) info); + g_ptr_array_foreach ((GPtrArray *) aps, fill_output_access_point, (gpointer) info); g_free (info); + print_data (nmc); /* Print all data */ was_output = TRUE; } } else if (NM_IS_DEVICE_ETHERNET (device)) { /* WIRED-PROPERTIES */ if (!strcasecmp (nmc_fields_dev_show_sections[section_idx].name, nmc_fields_dev_show_sections[4].name)) { - nmc->allowed_fields = nmc_fields_dev_show_wired_prop; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_WIRED_PROP_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_wired_prop; + tmpl_len = sizeof (nmc_fields_dev_show_wired_prop); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_WIRED_PROP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[4].name; /* "WIRED-PROPERTIES" */ - nmc->allowed_fields[1].value = (nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (device))) ? _("on") : _("off"); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[4].name); /* "WIRED-PROPERTIES" */ + set_val_strc (arr, 1, (nm_device_ethernet_get_carrier (NM_DEVICE_ETHERNET (device))) ? + _("on") : _("off")); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ was_output = TRUE; } } @@ -750,45 +769,44 @@ show_device_info (gpointer data, gpointer user_data) char *cfreq = NULL, *rssi = NULL, *cinr = NULL, *txpow = NULL; guint tmp_uint; gint tmp_int; - char *bsid; - nmc->allowed_fields = nmc_fields_dev_show_wimax_prop; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_WIMAX_PROP_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[5].name; /* "WIMAX-PROPERTIES" */ + /* Field names */ + tmpl = nmc_fields_dev_show_wimax_prop; + tmpl_len = sizeof (nmc_fields_dev_show_wimax_prop); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_WIMAX_PROP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); /* Center frequency */ tmp_uint = nm_device_wimax_get_center_frequency (NM_DEVICE_WIMAX (device)); if (tmp_uint) cfreq = g_strdup_printf ("%'.1f MHz", (double) tmp_uint / 1000.0); - nmc->allowed_fields[1].value = cfreq ? cfreq : ""; /* RSSI */ tmp_int = nm_device_wimax_get_rssi (NM_DEVICE_WIMAX (device)); if (tmp_int) rssi = g_strdup_printf ("%d dBm", tmp_int); - nmc->allowed_fields[2].value = rssi ? rssi : ""; /* CINR */ tmp_int = nm_device_wimax_get_cinr (NM_DEVICE_WIMAX (device)); if (tmp_int) cinr = g_strdup_printf ("%d dB", tmp_int); - nmc->allowed_fields[3].value = cinr ? cinr : ""; /* TX Power */ tmp_int = nm_device_wimax_get_tx_power (NM_DEVICE_WIMAX (device)); if (tmp_int) txpow = g_strdup_printf ("%'.2f dBm", (float) tmp_int / 2.0); - nmc->allowed_fields[4].value = txpow ? txpow : ""; - /* BSID */ - bsid = (char *) nm_device_wimax_get_bsid (NM_DEVICE_WIMAX (device)); - nmc->allowed_fields[5].value = bsid ? bsid : ""; + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[5].name); /* "WIMAX-PROPERTIES" */ + set_val_str (arr, 1, cfreq); + set_val_str (arr, 2, rssi); + set_val_str (arr, 3, cinr); + set_val_str (arr, 4, txpow); + set_val_strc (arr, 5, nm_device_wimax_get_bsid (NM_DEVICE_WIMAX (device))); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ was_output = TRUE; } @@ -797,19 +815,19 @@ show_device_info (gpointer data, gpointer user_data) const GPtrArray *nsps; int g, idx = 1; - nmc->allowed_fields = nmc_fields_dev_wimax_list; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_WIMAX_LIST_FOR_DEV_LIST, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; + tmpl = nmc_fields_dev_wimax_list; + tmpl_len = sizeof (nmc_fields_dev_wimax_list); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_WIMAX_LIST_FOR_DEV_LIST, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); nsps = nm_device_wimax_get_nsps (NM_DEVICE_WIMAX (device)); for (g = 0; nsps && g < nsps->len; g++) { NMWimaxNsp *nsp = g_ptr_array_index (nsps, g); - detail_wimax_nsp (nsp, nmc, device, idx++); + fill_output_wimax_nsp (nsp, nmc, device, idx++, NMC_OF_FLAG_SECTION_PREFIX); } + print_data (nmc); /* Print all data */ was_output = TRUE; } } @@ -858,18 +876,20 @@ show_device_info (gpointer data, gpointer user_data) if (bond_slaves_str->len > 0) g_string_truncate (bond_slaves_str, bond_slaves_str->len-1); /* Chop off last space */ - nmc->allowed_fields = nmc_fields_dev_show_bond_prop; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_BOND_PROP_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_bond_prop; + tmpl_len = sizeof (nmc_fields_dev_show_bond_prop); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_BOND_PROP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[11].name; /* "BOND" */ - nmc->allowed_fields[1].value = bond_slaves_str->str; + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[11].name); /* "BOND" */ + set_val_str (arr, 1, bond_slaves_str->str); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_string_free (bond_slaves_str, TRUE); + g_string_free (bond_slaves_str, FALSE); was_output = TRUE; } } @@ -879,18 +899,19 @@ show_device_info (gpointer data, gpointer user_data) if (!strcasecmp (nmc_fields_dev_show_sections[section_idx].name, nmc_fields_dev_show_sections[12].name)) { char * vlan_id_str = g_strdup_printf ("%u", nm_device_vlan_get_vlan_id (NM_DEVICE_VLAN (device))); - nmc->allowed_fields = nmc_fields_dev_show_vlan_prop; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_VLAN_PROP_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_vlan_prop; + tmpl_len = sizeof (nmc_fields_dev_show_vlan_prop); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_VLAN_PROP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - nmc->allowed_fields[0].value = (char *) nmc_fields_dev_show_sections[12].name; /* "VLAN" */ - nmc->allowed_fields[1].value = vlan_id_str; + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[12].name); /* "VLAN" */ + set_val_str (arr, 1, vlan_id_str); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_free (vlan_id_str); was_output = TRUE; } } @@ -902,10 +923,11 @@ show_device_info (gpointer data, gpointer user_data) char **ac_arr = NULL; int i; - nmc->allowed_fields = nmc_fields_dev_show_connections; - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_CONNECTIONS_ALL, nmc->allowed_fields, NULL); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + tmpl = nmc_fields_dev_show_connections; + tmpl_len = sizeof (nmc_fields_dev_show_connections); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_DEV_SHOW_CONNECTIONS_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); /* available-connections */ avail_cons = nm_device_get_available_connections (device); @@ -931,15 +953,15 @@ show_device_info (gpointer data, gpointer user_data) if (ac_paths_str->len > 0) g_string_append_c (ac_paths_str, '}'); - set_val_str (nmc->allowed_fields, 0, (char *) nmc_fields_dev_show_sections[13].name); /* "CONNECTIONS" */ - set_val_str (nmc->allowed_fields, 1, ac_paths_str->str); - set_val_arr (nmc->allowed_fields, 2, ac_arr); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_strc (arr, 0, nmc_fields_dev_show_sections[13].name); /* "CONNECTIONS" */ + set_val_str (arr, 1, ac_paths_str->str); + set_val_arr (arr, 2, (ac_arr)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - g_string_free (ac_paths_str, TRUE); - g_strfreev (ac_arr); + g_string_free (ac_paths_str, FALSE); was_output = TRUE; } } @@ -949,15 +971,18 @@ show_device_info (gpointer data, gpointer user_data) } static void -show_device_status (NMDevice *device, NmCli *nmc) +fill_output_device_status (NMDevice *device, NmCli *nmc) { - nmc->allowed_fields[0].value = (char *) nm_device_get_iface (device); - nmc->allowed_fields[1].value = (char *) nm_device_get_type_description (device); - nmc->allowed_fields[2].value = (char *) nmc_device_state_to_string (nm_device_get_state (device)); - nmc->allowed_fields[3].value = (char *) nm_object_get_path (NM_OBJECT (device)); + NmcOutputField *arr = nmc_dup_fields_array (nmc_fields_dev_status, + sizeof (nmc_fields_dev_status), + 0); - nmc->print_fields.flags &= ~NMC_PF_FLAG_MAIN_HEADER_ADD & ~NMC_PF_FLAG_MAIN_HEADER_ONLY & ~NMC_PF_FLAG_FIELD_NAMES; /* Clear header flags */ - print_fields (nmc->print_fields, nmc->allowed_fields); + set_val_strc (arr, 0, nm_device_get_iface (device)); + set_val_strc (arr, 1, nm_device_get_type_description (device)); + set_val_strc (arr, 2, nmc_device_state_to_string (nm_device_get_state (device))); + set_val_strc (arr, 3, nm_object_get_path (NM_OBJECT (device))); + + g_ptr_array_add (nmc->output_data, arr); } static NMCResultCode @@ -969,9 +994,8 @@ do_devices_status (NmCli *nmc, int argc, char **argv) char *fields_str; char *fields_all = NMC_FIELDS_DEV_STATUS_ALL; char *fields_common = NMC_FIELDS_DEV_STATUS_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; while (argc > 0) { fprintf (stderr, _("Unknown parameter: %s\n"), *argv); @@ -986,8 +1010,9 @@ do_devices_status (NmCli *nmc, int argc, char **argv) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_dev_status; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error); + tmpl = nmc_fields_dev_status; + tmpl_len = sizeof (nmc_fields_dev_status); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error); if (error) { if (error->code == 0) @@ -1011,14 +1036,18 @@ do_devices_status (NmCli *nmc, int argc, char **argv) if (!nmc_versions_match (nmc)) goto error; - /* Print headers */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; + /* Add headers */ nmc->print_fields.header_name = _("Status of devices"); - print_fields (nmc->print_fields, nmc->allowed_fields); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); devices = get_devices_sorted (nmc->client); for (i = 0; devices[i]; i++) - show_device_status (devices[i], nmc); + fill_output_device_status (devices[i], nmc); + + /* Now print all data */ + print_data (nmc); + g_free (devices); return NMC_RESULT_SUCCESS; @@ -1074,6 +1103,7 @@ do_devices_show (NmCli *nmc, int argc, char **argv) } else { /* Show details for all devices */ for (i = 0; devices[i]; i++) { + nmc_empty_output_fields (nmc); show_device_info (devices[i], nmc); if (devices[i + 1]) printf ("\n"); /* Empty line */ @@ -1242,20 +1272,29 @@ show_acces_point_info (NMDevice *device, NmCli *nmc) const char *active_bssid = NULL; const GPtrArray *aps; APInfo *info; + NmcOutputField *arr; if (nm_device_get_state (device) == NM_DEVICE_STATE_ACTIVATED) { active_ap = nm_device_wifi_get_active_access_point (NM_DEVICE_WIFI (device)); active_bssid = active_ap ? nm_access_point_get_bssid (active_ap) : NULL; } + arr = nmc_dup_fields_array (nmc_fields_dev_wifi_list, sizeof (nmc_fields_dev_wifi_list), + NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); + info = g_malloc0 (sizeof (APInfo)); info->nmc = nmc; info->index = 1; + info->output_flags = 0; info->active_bssid = active_bssid; info->device = nm_device_get_iface (device); aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (device)); if (aps && aps->len) - g_ptr_array_foreach ((GPtrArray *) aps, detail_access_point, (gpointer) info); + g_ptr_array_foreach ((GPtrArray *) aps, fill_output_access_point, (gpointer) info); + + print_data (nmc); /* Print all data */ + nmc_empty_output_fields (nmc); g_free (info); } @@ -1274,9 +1313,9 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) char *fields_str; char *fields_all = NMC_FIELDS_DEV_WIFI_LIST_ALL; char *fields_common = NMC_FIELDS_DEV_WIFI_LIST_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; + const char *base_hdr = _("Wi-Fi scan list"); while (argc > 0) { if (strcmp (*argv, "ifname") == 0) { @@ -1302,7 +1341,6 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) argv++; } - if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) fields_str = fields_common; else if (!nmc->required_fields || strcasecmp (nmc->required_fields, "all") == 0) @@ -1310,8 +1348,9 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_dev_wifi_list; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error); + tmpl = nmc_fields_dev_wifi_list; + tmpl_len = sizeof (nmc_fields_dev_wifi_list); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error); if (error) { if (error->code == 0) @@ -1335,10 +1374,6 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) if (!nmc_versions_match (nmc)) goto error; - /* Print headers */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.header_name = _("Wi-Fi scan list"); - devices = get_devices_sorted (nmc->client); if (ifname) { /* Device specified - list only APs of this interface */ @@ -1351,13 +1386,15 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) break; } } - if (!device) { g_string_printf (nmc->return_text, _("Error: Device '%s' not found."), ifname); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } + /* Main header name */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, ifname); + if (NM_IS_DEVICE_WIFI (device)) { if (bssid_user) { /* Specific AP requested - list only that */ @@ -1373,20 +1410,27 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) g_free (bssid_up); } if (!ap) { - g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user); + g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), + bssid_user); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } + /* Add headers (field names) */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); + info = g_malloc0 (sizeof (APInfo)); info->nmc = nmc; info->index = 1; + info->output_flags = 0; info->active_bssid = NULL; info->device = nm_device_get_iface (device); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - detail_access_point (ap, info); + + fill_output_access_point (ap, info); + + print_data (nmc); /* Print all data */ g_free (info); } else { - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ show_acces_point_info (device, nmc); } } else { @@ -1396,7 +1440,6 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) } } else { /* List APs for all devices */ - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ if (bssid_user) { /* Specific AP requested - list only that */ for (i = 0; devices[i]; i++) { @@ -1405,6 +1448,12 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) if (!NM_IS_DEVICE_WIFI (dev)) continue; + /* Main header name */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, nm_device_get_iface (dev)); + + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); + aps = nm_device_wifi_get_access_points (NM_DEVICE_WIFI (dev)); for (j = 0; aps && (j < aps->len); j++) { char *bssid_up; @@ -1418,22 +1467,30 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) info = g_malloc0 (sizeof (APInfo)); info->nmc = nmc; info->index = 1; + info->output_flags = 0; info->active_bssid = NULL; info->device = nm_device_get_iface (dev); - detail_access_point (ap, info); + fill_output_access_point (ap, info); g_free (info); } g_free (bssid_up); } + print_data (nmc); /* Print all data */ + nmc_empty_output_fields (nmc); } if (!ap) { - g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user); + g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), + bssid_user); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } } else { for (i = 0; devices[i]; i++) { NMDevice *dev = devices[i]; + + /* Main header name */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, + nm_device_get_iface (dev)); if (NM_IS_DEVICE_WIFI (dev)) show_acces_point_info (dev, nmc); } @@ -1968,13 +2025,21 @@ show_nsp_info (NMDevice *device, NmCli *nmc) { const GPtrArray *nsps; int i, idx = 1; + NmcOutputField *arr; + + /* Add headers (field names) */ + arr = nmc_dup_fields_array (nmc_fields_dev_wimax_list, sizeof (nmc_fields_dev_wimax_list), + NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); nsps = nm_device_wimax_get_nsps (NM_DEVICE_WIMAX (device)); for (i = 0; nsps && i < nsps->len; i++) { NMWimaxNsp *nsp = g_ptr_array_index (nsps, i); - detail_wimax_nsp (nsp, nmc, device, idx++); + fill_output_wimax_nsp (nsp, nmc, device, idx++, 0); } + print_data (nmc); /* Print all data */ + nmc_empty_output_fields (nmc); } static NMCResultCode @@ -1991,9 +2056,9 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) char *fields_str; char *fields_all = NMC_FIELDS_DEV_WIMAX_LIST_ALL; char *fields_common = NMC_FIELDS_DEV_WIMAX_LIST_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; + const char *base_hdr = _("WiMAX NSP list"); while (argc > 0) { if (strcmp (*argv, "ifname") == 0) { @@ -2025,8 +2090,9 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_dev_wimax_list; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error); + tmpl = nmc_fields_dev_wimax_list; + tmpl_len = sizeof (nmc_fields_dev_wimax_list); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error); if (error) { if (error->code == 0) @@ -2050,10 +2116,6 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) if (!nmc_versions_match (nmc)) goto error; - /* Print headers */ - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; - nmc->print_fields.header_name = _("WiMAX NSP list"); - devices = nm_client_get_devices (nmc->client); if (ifname) { /* Device specified - list only NSPs of this interface */ @@ -2073,6 +2135,9 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) goto error; } + /* Main header name */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, ifname); + if (NM_IS_DEVICE_WIMAX (device)) { if (nsp_user) { /* Specific NSP requested - list only that */ @@ -2092,10 +2157,12 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; goto error; } - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ - detail_wimax_nsp (nsp, nmc, device, 1); + /* Add headers (field names) */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); + fill_output_wimax_nsp (nsp, nmc, device, 1, 0); + print_data (nmc); /* Print all data */ } else { - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ show_nsp_info (device, nmc); } } else { @@ -2105,7 +2172,6 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) } } else { /* List NSPs for all devices */ - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ if (nsp_user) { /* Specific NSP requested - list only that */ for (i = 0; devices && (i < devices->len); i++) { @@ -2115,6 +2181,12 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) if (!NM_IS_DEVICE_WIMAX (dev)) continue; + /* Main header name */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, nm_device_get_iface (dev)); + + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); + nsps = nm_device_wimax_get_nsps (NM_DEVICE_WIMAX (dev)); for (j = 0, nsp = NULL; nsps && (j < nsps->len); j++) { NMWimaxNsp *candidate_nsp = g_ptr_array_index (nsps, j); @@ -2124,10 +2196,12 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) nsp_up = g_ascii_strup (nsp_user, -1); if (!strcmp (nsp_up, candidate_name)) { nsp = candidate_nsp; - detail_wimax_nsp (nsp, nmc, dev, idx); + fill_output_wimax_nsp (nsp, nmc, dev, idx, 0); } g_free (nsp_up); } + print_data (nmc); /* Print all data */ + nmc_empty_output_fields (nmc); } if (!nsp) { g_string_printf (nmc->return_text, _("Error: Access point with nsp '%s' not found."), nsp_user); @@ -2137,6 +2211,11 @@ do_device_wimax_list (NmCli *nmc, int argc, char **argv) } else { for (i = 0; devices && (i < devices->len); i++) { NMDevice *dev = g_ptr_array_index (devices, i); + + /* Main header name */ + nmc->print_fields.header_name = (char *) construct_header_name (base_hdr, + nm_device_get_iface (dev)); + if (NM_IS_DEVICE_WIMAX (dev)) show_nsp_info (dev, nmc); } diff --git a/cli/src/network-manager.c b/cli/src/network-manager.c index 97af1983f2..57e2047307 100644 --- a/cli/src/network-manager.c +++ b/cli/src/network-manager.c @@ -167,9 +167,8 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl const char *fields_str; const char *fields_all = print_flds ? print_flds : NMC_FIELDS_NM_STATUS_ALL; const char *fields_common = print_flds ? print_flds : NMC_FIELDS_NM_STATUS_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) fields_str = fields_common; @@ -178,8 +177,9 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_nm_status; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error); + tmpl = nmc_fields_nm_status; + tmpl_len = sizeof (nmc_fields_nm_status); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error); if (error) { if (error->code == 0) @@ -218,25 +218,26 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl #endif } - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; nmc->print_fields.header_name = pretty_header_name ? (char *) pretty_header_name : _("NetworkManager status"); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - nmc->allowed_fields[0].value = nm_running ? _("running") : _("not running"); - nmc->allowed_fields[1].value = nm_running ? (char *) nm_client_get_version (nmc->client) : _("unknown"); - nmc->allowed_fields[2].value = (char *) nm_state_to_string (state); - nmc->allowed_fields[3].value = (char *) net_enabled_str; - nmc->allowed_fields[4].value = (char *) wireless_hw_enabled_str; - nmc->allowed_fields[5].value = (char *) wireless_enabled_str; - nmc->allowed_fields[6].value = (char *) wwan_hw_enabled_str; - nmc->allowed_fields[7].value = (char *) wwan_enabled_str; + arr = nmc_dup_fields_array (tmpl, tmpl_len, 0); + set_val_strc (arr, 0, nm_running ? _("running") : _("not running")); + set_val_strc (arr, 1, nm_running ? nm_client_get_version (nmc->client) : _("unknown")); + set_val_strc (arr, 2, nm_state_to_string (state)); + set_val_strc (arr, 3, net_enabled_str); + set_val_strc (arr, 4, wireless_hw_enabled_str); + set_val_strc (arr, 5, wireless_enabled_str); + set_val_strc (arr, 6, wwan_hw_enabled_str); + set_val_strc (arr, 7, wwan_enabled_str); #if WITH_WIMAX - nmc->allowed_fields[8].value = (char *) wimax_hw_enabled_str; - nmc->allowed_fields[9].value = (char *) wimax_enabled_str; + set_val_strc (arr, 8, wimax_hw_enabled_str); + set_val_strc (arr, 9, wimax_enabled_str); #endif + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ return TRUE; } @@ -308,9 +309,8 @@ show_nm_permissions (NmCli *nmc) const char *fields_str; const char *fields_all = NMC_FIELDS_NM_PERMISSIONS_ALL; const char *fields_common = NMC_FIELDS_NM_PERMISSIONS_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) fields_str = fields_common; @@ -319,8 +319,9 @@ show_nm_permissions (NmCli *nmc) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_nm_permissions; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error); + tmpl = nmc_fields_nm_permissions; + tmpl_len = sizeof (nmc_fields_nm_permissions); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error); if (error) { if (error->code == 0) @@ -341,18 +342,19 @@ show_nm_permissions (NmCli *nmc) return FALSE; } - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; nmc->print_fields.header_name = _("NetworkManager permissions"); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); for (perm = NM_CLIENT_PERMISSION_NONE + 1; perm <= NM_CLIENT_PERMISSION_LAST; perm++) { NMClientPermissionResult perm_result = nm_client_get_permission_result (nmc->client, perm); - set_val_str (nmc->allowed_fields, 0, (char *) permission_to_string (perm)); - set_val_str (nmc->allowed_fields, 1, (char *) permission_result_to_string (perm_result)); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, 0); + set_val_strc (arr, 0, permission_to_string (perm)); + set_val_strc (arr, 1, permission_result_to_string (perm_result)); + g_ptr_array_add (nmc->output_data, arr); } + print_data (nmc); /* Print all data */ return TRUE; } @@ -366,9 +368,8 @@ show_general_logging (NmCli *nmc) const char *fields_str; const char *fields_all = NMC_FIELDS_NM_LOGGING_ALL; const char *fields_common = NMC_FIELDS_NM_LOGGING_COMMON; - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) fields_str = fields_common; @@ -377,8 +378,10 @@ show_general_logging (NmCli *nmc) else fields_str = nmc->required_fields; - nmc->allowed_fields = nmc_fields_nm_logging; - nmc->print_fields.indices = parse_output_fields (fields_str, nmc->allowed_fields, &error); + tmpl = nmc_fields_nm_logging; + tmpl_len = sizeof (nmc_fields_nm_logging); + nmc->print_fields.indices = parse_output_fields (fields_str, tmpl, &error); + if (error) { if (error->code == 0) g_string_printf (nmc->return_text, _("Error: 'general logging': %s"), error->message); @@ -399,17 +402,17 @@ show_general_logging (NmCli *nmc) return FALSE; } - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_MAIN_HEADER_ADD | NMC_PF_FLAG_FIELD_NAMES; nmc->print_fields.header_name = _("NetworkManager logging"); - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print header */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_MAIN_HEADER_ADD | NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, level); - set_val_str (nmc->allowed_fields, 1, domains); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + arr = nmc_dup_fields_array (tmpl, tmpl_len, 0); + set_val_str (arr, 0, level); + set_val_str (arr, 1, domains); + g_ptr_array_add (nmc->output_data, arr); + + print_data (nmc); /* Print all data */ - g_free (level); - g_free (domains); return TRUE; } diff --git a/cli/src/settings.c b/cli/src/settings.c index 35563cebca..5d6fc33329 100644 --- a/cli/src/settings.c +++ b/cli/src/settings.c @@ -1414,35 +1414,35 @@ gboolean setting_connection_details (NMSettingConnection *s_con, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_con); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_CONNECTION (s_con), FALSE); - nmc->allowed_fields = nmc_fields_setting_connection; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_CONNECTION_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_connection; + tmpl_len = sizeof (nmc_fields_setting_connection); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_CONNECTION_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_connection_get_id (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_connection_get_uuid (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_connection_get_interface_name (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_connection_get_type (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_connection_get_autoconnect (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_connection_get_timestamp (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_connection_get_read_only (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_connection_get_permissions (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_connection_get_zone (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_connection_get_master (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_connection_get_slave_type (setting)); - set_val_str (nmc->allowed_fields, 12, nmc_property_connection_get_secondaries (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_connection_get_id (setting)); + set_val_str (arr, 2, nmc_property_connection_get_uuid (setting)); + set_val_str (arr, 3, nmc_property_connection_get_interface_name (setting)); + set_val_str (arr, 4, nmc_property_connection_get_type (setting)); + set_val_str (arr, 5, nmc_property_connection_get_autoconnect (setting)); + set_val_str (arr, 6, nmc_property_connection_get_timestamp (setting)); + set_val_str (arr, 7, nmc_property_connection_get_read_only (setting)); + set_val_str (arr, 8, nmc_property_connection_get_permissions (setting)); + set_val_str (arr, 9, nmc_property_connection_get_zone (setting)); + set_val_str (arr, 10, nmc_property_connection_get_master (setting)); + set_val_str (arr, 11, nmc_property_connection_get_slave_type (setting)); + set_val_str (arr, 12, nmc_property_connection_get_secondaries (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1450,34 +1450,34 @@ gboolean setting_wired_details (NMSettingWired *s_wired, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_wired); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_WIRED (s_wired), FALSE); - nmc->allowed_fields = nmc_fields_setting_wired; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRED_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_wired; + tmpl_len = sizeof (nmc_fields_setting_wired); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRED_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_wired_get_port (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_wired_get_speed (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_wired_get_duplex (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_wired_get_auto_negotiate (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_wired_get_mac_address (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_wired_get_cloned_mac_address (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_wired_get_mac_address_blacklist (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_wired_get_mtu (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_wired_get_s390_subchannels (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_wired_get_s390_nettype (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_wired_get_s390_options (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_wired_get_port (setting)); + set_val_str (arr, 2, nmc_property_wired_get_speed (setting)); + set_val_str (arr, 3, nmc_property_wired_get_duplex (setting)); + set_val_str (arr, 4, nmc_property_wired_get_auto_negotiate (setting)); + set_val_str (arr, 5, nmc_property_wired_get_mac_address (setting)); + set_val_str (arr, 6, nmc_property_wired_get_cloned_mac_address (setting)); + set_val_str (arr, 7, nmc_property_wired_get_mac_address_blacklist (setting)); + set_val_str (arr, 8, nmc_property_wired_get_mtu (setting)); + set_val_str (arr, 9, nmc_property_wired_get_s390_subchannels (setting)); + set_val_str (arr, 10, nmc_property_wired_get_s390_nettype (setting)); + set_val_str (arr, 11, nmc_property_wired_get_s390_options (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1485,55 +1485,55 @@ gboolean setting_802_1X_details (NMSetting8021x *s_8021X, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_8021X); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_802_1X (s_8021X), FALSE); - nmc->allowed_fields = nmc_fields_setting_8021X; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_802_1X_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_8021X; + tmpl_len = sizeof (nmc_fields_setting_8021X); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_802_1X_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_802_1X_get_eap (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_802_1X_get_identity (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_802_1X_get_anonymous_identity (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_802_1X_get_pac_file (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_802_1X_get_ca_cert (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_802_1X_get_ca_path (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_802_1X_get_subject_match (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_802_1X_get_altsubject_matches (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_802_1X_get_client_cert (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_802_1X_get_phase1_peapver (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_802_1X_get_phase1_peaplabel (setting)); - set_val_str (nmc->allowed_fields, 12, nmc_property_802_1X_get_phase1_fast_provisioning (setting)); - set_val_str (nmc->allowed_fields, 13, nmc_property_802_1X_get_phase2_auth (setting)); - set_val_str (nmc->allowed_fields, 14, nmc_property_802_1X_get_phase2_autheap (setting)); - set_val_str (nmc->allowed_fields, 15, nmc_property_802_1X_get_phase2_ca_cert (setting)); - set_val_str (nmc->allowed_fields, 16, nmc_property_802_1X_get_phase2_ca_path (setting)); - set_val_str (nmc->allowed_fields, 17, nmc_property_802_1X_get_phase2_subject_match (setting)); - set_val_str (nmc->allowed_fields, 18, nmc_property_802_1X_get_phase2_altsubject_matches (setting)); - set_val_str (nmc->allowed_fields, 19, nmc_property_802_1X_get_phase2_client_cert (setting)); - set_val_str (nmc->allowed_fields, 20, nmc_property_802_1X_get_password (setting)); - set_val_str (nmc->allowed_fields, 21, nmc_property_802_1X_get_password_flags (setting)); - set_val_str (nmc->allowed_fields, 22, nmc_property_802_1X_get_password_raw (setting)); - set_val_str (nmc->allowed_fields, 23, nmc_property_802_1X_get_password_raw_flags (setting)); - set_val_str (nmc->allowed_fields, 24, nmc_property_802_1X_get_private_key (setting)); - set_val_str (nmc->allowed_fields, 25, nmc_property_802_1X_get_private_key_password (setting)); - set_val_str (nmc->allowed_fields, 26, nmc_property_802_1X_get_private_key_password_flags (setting)); - set_val_str (nmc->allowed_fields, 27, nmc_property_802_1X_get_phase2_private_key (setting)); - set_val_str (nmc->allowed_fields, 28, nmc_property_802_1X_get_phase2_private_key_password (setting)); - set_val_str (nmc->allowed_fields, 29, nmc_property_802_1X_get_phase2_private_key_password_flags (setting)); - set_val_str (nmc->allowed_fields, 30, nmc_property_802_1X_get_pin (setting)); - set_val_str (nmc->allowed_fields, 31, nmc_property_802_1X_get_pin_flags (setting)); - set_val_str (nmc->allowed_fields, 32, nmc_property_802_1X_get_system_ca_certs (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_802_1X_get_eap (setting)); + set_val_str (arr, 2, nmc_property_802_1X_get_identity (setting)); + set_val_str (arr, 3, nmc_property_802_1X_get_anonymous_identity (setting)); + set_val_str (arr, 4, nmc_property_802_1X_get_pac_file (setting)); + set_val_str (arr, 5, nmc_property_802_1X_get_ca_cert (setting)); + set_val_str (arr, 6, nmc_property_802_1X_get_ca_path (setting)); + set_val_str (arr, 7, nmc_property_802_1X_get_subject_match (setting)); + set_val_str (arr, 8, nmc_property_802_1X_get_altsubject_matches (setting)); + set_val_str (arr, 9, nmc_property_802_1X_get_client_cert (setting)); + set_val_str (arr, 10, nmc_property_802_1X_get_phase1_peapver (setting)); + set_val_str (arr, 11, nmc_property_802_1X_get_phase1_peaplabel (setting)); + set_val_str (arr, 12, nmc_property_802_1X_get_phase1_fast_provisioning (setting)); + set_val_str (arr, 13, nmc_property_802_1X_get_phase2_auth (setting)); + set_val_str (arr, 14, nmc_property_802_1X_get_phase2_autheap (setting)); + set_val_str (arr, 15, nmc_property_802_1X_get_phase2_ca_cert (setting)); + set_val_str (arr, 16, nmc_property_802_1X_get_phase2_ca_path (setting)); + set_val_str (arr, 17, nmc_property_802_1X_get_phase2_subject_match (setting)); + set_val_str (arr, 18, nmc_property_802_1X_get_phase2_altsubject_matches (setting)); + set_val_str (arr, 19, nmc_property_802_1X_get_phase2_client_cert (setting)); + set_val_str (arr, 20, nmc_property_802_1X_get_password (setting)); + set_val_str (arr, 21, nmc_property_802_1X_get_password_flags (setting)); + set_val_str (arr, 22, nmc_property_802_1X_get_password_raw (setting)); + set_val_str (arr, 23, nmc_property_802_1X_get_password_raw_flags (setting)); + set_val_str (arr, 24, nmc_property_802_1X_get_private_key (setting)); + set_val_str (arr, 25, nmc_property_802_1X_get_private_key_password (setting)); + set_val_str (arr, 26, nmc_property_802_1X_get_private_key_password_flags (setting)); + set_val_str (arr, 27, nmc_property_802_1X_get_phase2_private_key (setting)); + set_val_str (arr, 28, nmc_property_802_1X_get_phase2_private_key_password (setting)); + set_val_str (arr, 29, nmc_property_802_1X_get_phase2_private_key_password_flags (setting)); + set_val_str (arr, 30, nmc_property_802_1X_get_pin (setting)); + set_val_str (arr, 31, nmc_property_802_1X_get_pin_flags (setting)); + set_val_str (arr, 32, nmc_property_802_1X_get_system_ca_certs (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1541,37 +1541,37 @@ gboolean setting_wireless_details (NMSettingWireless *s_wireless, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_wireless); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_WIRELESS (s_wireless), FALSE); - nmc->allowed_fields = nmc_fields_setting_wireless; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRELESS_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_wireless; + tmpl_len = sizeof (nmc_fields_setting_wireless); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRELESS_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_wireless_get_ssid (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_wireless_get_mode (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_wireless_get_band (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_wireless_get_channel (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_wireless_get_bssid (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_wireless_get_rate (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_wireless_get_tx_power (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_wireless_get_mac_address (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_wireless_get_cloned_mac_address (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_wireless_get_mac_address_blacklist (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_wireless_get_mtu (setting)); - set_val_str (nmc->allowed_fields, 12, nmc_property_wireless_get_seen_bssids (setting)); - set_val_str (nmc->allowed_fields, 13, nmc_property_wireless_get_sec (setting)); - set_val_str (nmc->allowed_fields, 14, nmc_property_wireless_get_hidden (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_wireless_get_ssid (setting)); + set_val_str (arr, 2, nmc_property_wireless_get_mode (setting)); + set_val_str (arr, 3, nmc_property_wireless_get_band (setting)); + set_val_str (arr, 4, nmc_property_wireless_get_channel (setting)); + set_val_str (arr, 5, nmc_property_wireless_get_bssid (setting)); + set_val_str (arr, 6, nmc_property_wireless_get_rate (setting)); + set_val_str (arr, 7, nmc_property_wireless_get_tx_power (setting)); + set_val_str (arr, 8, nmc_property_wireless_get_mac_address (setting)); + set_val_str (arr, 9, nmc_property_wireless_get_cloned_mac_address (setting)); + set_val_str (arr, 10, nmc_property_wireless_get_mac_address_blacklist (setting)); + set_val_str (arr, 11, nmc_property_wireless_get_mtu (setting)); + set_val_str (arr, 12, nmc_property_wireless_get_seen_bssids (setting)); + set_val_str (arr, 13, nmc_property_wireless_get_sec (setting)); + set_val_str (arr, 14, nmc_property_wireless_get_hidden (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1579,40 +1579,40 @@ gboolean setting_wireless_security_details (NMSettingWirelessSecurity *s_wireless_sec, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_wireless_sec); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_WIRELESS_SECURITY (s_wireless_sec), FALSE); - nmc->allowed_fields = nmc_fields_setting_wireless_security; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRELESS_SECURITY_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_wireless_security; + tmpl_len = sizeof (nmc_fields_setting_wireless_security); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIRELESS_SECURITY_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_wifi_sec_get_key_mgmt (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_wifi_sec_get_wep_tx_keyidx (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_wifi_sec_get_auth_alg (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_wifi_sec_get_proto (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_wifi_sec_get_pairwise (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_wifi_sec_get_group (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_wifi_sec_get_leap_username (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_wifi_sec_get_wep_key0 (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_wifi_sec_get_wep_key1 (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_wifi_sec_get_wep_key2 (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_wifi_sec_get_wep_key3 (setting)); - set_val_str (nmc->allowed_fields, 12, nmc_property_wifi_sec_get_wep_key_flags (setting)); - set_val_str (nmc->allowed_fields, 13, nmc_property_wifi_sec_get_wep_key_type (setting)); - set_val_str (nmc->allowed_fields, 14, nmc_property_wifi_sec_get_psk (setting)); - set_val_str (nmc->allowed_fields, 15, nmc_property_wifi_sec_get_psk_flags (setting)); - set_val_str (nmc->allowed_fields, 16, nmc_property_wifi_sec_get_leap_password (setting)); - set_val_str (nmc->allowed_fields, 17, nmc_property_wifi_sec_get_leap_password_flags (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_wifi_sec_get_key_mgmt (setting)); + set_val_str (arr, 2, nmc_property_wifi_sec_get_wep_tx_keyidx (setting)); + set_val_str (arr, 3, nmc_property_wifi_sec_get_auth_alg (setting)); + set_val_str (arr, 4, nmc_property_wifi_sec_get_proto (setting)); + set_val_str (arr, 5, nmc_property_wifi_sec_get_pairwise (setting)); + set_val_str (arr, 6, nmc_property_wifi_sec_get_group (setting)); + set_val_str (arr, 7, nmc_property_wifi_sec_get_leap_username (setting)); + set_val_str (arr, 8, nmc_property_wifi_sec_get_wep_key0 (setting)); + set_val_str (arr, 9, nmc_property_wifi_sec_get_wep_key1 (setting)); + set_val_str (arr, 10, nmc_property_wifi_sec_get_wep_key2 (setting)); + set_val_str (arr, 11, nmc_property_wifi_sec_get_wep_key3 (setting)); + set_val_str (arr, 12, nmc_property_wifi_sec_get_wep_key_flags (setting)); + set_val_str (arr, 13, nmc_property_wifi_sec_get_wep_key_type (setting)); + set_val_str (arr, 14, nmc_property_wifi_sec_get_psk (setting)); + set_val_str (arr, 15, nmc_property_wifi_sec_get_psk_flags (setting)); + set_val_str (arr, 16, nmc_property_wifi_sec_get_leap_password (setting)); + set_val_str (arr, 17, nmc_property_wifi_sec_get_leap_password_flags (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1620,35 +1620,35 @@ gboolean setting_ip4_config_details (NMSettingIP4Config *s_ip4, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_ip4); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_IP4_CONFIG (s_ip4), FALSE); - nmc->allowed_fields = nmc_fields_setting_ip4_config; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_IP4_CONFIG_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_ip4_config; + tmpl_len = sizeof (nmc_fields_setting_ip4_config); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_IP4_CONFIG_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_ipv4_get_method (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_ipv4_get_dns (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_ipv4_get_dns_search (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_ipv4_get_addresses (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_ipv4_get_routes (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_ipv4_get_ignore_auto_routes (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_ipv4_get_ignore_auto_dns (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_ipv4_get_dhcp_client_id (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_ipv4_get_dhcp_send_hostname (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_ipv4_get_dhcp_hostname (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_ipv4_get_never_default (setting)); - set_val_str (nmc->allowed_fields, 12, nmc_property_ipv4_get_may_fail (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_ipv4_get_method (setting)); + set_val_str (arr, 2, nmc_property_ipv4_get_dns (setting)); + set_val_str (arr, 3, nmc_property_ipv4_get_dns_search (setting)); + set_val_str (arr, 4, nmc_property_ipv4_get_addresses (setting)); + set_val_str (arr, 5, nmc_property_ipv4_get_routes (setting)); + set_val_str (arr, 6, nmc_property_ipv4_get_ignore_auto_routes (setting)); + set_val_str (arr, 7, nmc_property_ipv4_get_ignore_auto_dns (setting)); + set_val_str (arr, 8, nmc_property_ipv4_get_dhcp_client_id (setting)); + set_val_str (arr, 9, nmc_property_ipv4_get_dhcp_send_hostname (setting)); + set_val_str (arr, 10, nmc_property_ipv4_get_dhcp_hostname (setting)); + set_val_str (arr, 11, nmc_property_ipv4_get_never_default (setting)); + set_val_str (arr, 12, nmc_property_ipv4_get_may_fail (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1656,34 +1656,34 @@ gboolean setting_ip6_config_details (NMSettingIP6Config *s_ip6, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_ip6); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_IP6_CONFIG (s_ip6), FALSE); - nmc->allowed_fields = nmc_fields_setting_ip6_config; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_IP6_CONFIG_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_ip6_config; + tmpl_len = sizeof (nmc_fields_setting_ip6_config); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_IP6_CONFIG_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_ipv6_get_method (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_ipv6_get_dns (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_ipv6_get_dns_search (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_ipv6_get_addresses (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_ipv6_get_routes (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_ipv6_get_ignore_auto_routes (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_ipv6_get_ignore_auto_dns (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_ipv6_get_never_default (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_ipv6_get_may_fail (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_ipv6_get_ip6_privacy (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_ipv6_get_dhcp_hostname (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_ipv6_get_method (setting)); + set_val_str (arr, 2, nmc_property_ipv6_get_dns (setting)); + set_val_str (arr, 3, nmc_property_ipv6_get_dns_search (setting)); + set_val_str (arr, 4, nmc_property_ipv6_get_addresses (setting)); + set_val_str (arr, 5, nmc_property_ipv6_get_routes (setting)); + set_val_str (arr, 6, nmc_property_ipv6_get_ignore_auto_routes (setting)); + set_val_str (arr, 7, nmc_property_ipv6_get_ignore_auto_dns (setting)); + set_val_str (arr, 8, nmc_property_ipv6_get_never_default (setting)); + set_val_str (arr, 9, nmc_property_ipv6_get_may_fail (setting)); + set_val_str (arr, 10, nmc_property_ipv6_get_ip6_privacy (setting)); + set_val_str (arr, 11, nmc_property_ipv6_get_dhcp_hostname (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1691,28 +1691,28 @@ gboolean setting_serial_details (NMSettingSerial *s_serial, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_serial); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_SERIAL (s_serial), FALSE); - nmc->allowed_fields = nmc_fields_setting_serial; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_SERIAL_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_serial; + tmpl_len = sizeof (nmc_fields_setting_serial); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_SERIAL_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_serial_get_baud (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_serial_get_bits (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_serial_get_parity (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_serial_get_stopbits (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_serial_get_send_delay (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_serial_get_baud (setting)); + set_val_str (arr, 2, nmc_property_serial_get_bits (setting)); + set_val_str (arr, 3, nmc_property_serial_get_parity (setting)); + set_val_str (arr, 4, nmc_property_serial_get_stopbits (setting)); + set_val_str (arr, 5, nmc_property_serial_get_send_delay (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1720,41 +1720,41 @@ gboolean setting_ppp_details (NMSettingPPP *s_ppp, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_ppp); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_PPP (s_ppp), FALSE); - nmc->allowed_fields = nmc_fields_setting_ppp; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_PPP_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_ppp; + tmpl_len = sizeof (nmc_fields_setting_ppp); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_PPP_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_ppp_get_noauth (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_ppp_get_refuse_eap (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_ppp_get_refuse_pap (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_ppp_get_refuse_chap (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_ppp_get_refuse_mschap (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_ppp_get_refuse_mschapv2 (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_ppp_get_nobsdcomp (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_ppp_get_nodeflate (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_ppp_get_no_vj_comp (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_ppp_get_require_mppe (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_ppp_get_require_mppe_128 (setting)); - set_val_str (nmc->allowed_fields, 12, nmc_property_ppp_get_mppe_stateful (setting)); - set_val_str (nmc->allowed_fields, 13, nmc_property_ppp_get_crtscts (setting)); - set_val_str (nmc->allowed_fields, 14, nmc_property_ppp_get_baud (setting)); - set_val_str (nmc->allowed_fields, 15, nmc_property_ppp_get_mru (setting)); - set_val_str (nmc->allowed_fields, 16, nmc_property_ppp_get_mtu (setting)); - set_val_str (nmc->allowed_fields, 17, nmc_property_ppp_get_lcp_echo_failure (setting)); - set_val_str (nmc->allowed_fields, 18, nmc_property_ppp_get_lcp_echo_interval (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_ppp_get_noauth (setting)); + set_val_str (arr, 2, nmc_property_ppp_get_refuse_eap (setting)); + set_val_str (arr, 3, nmc_property_ppp_get_refuse_pap (setting)); + set_val_str (arr, 4, nmc_property_ppp_get_refuse_chap (setting)); + set_val_str (arr, 5, nmc_property_ppp_get_refuse_mschap (setting)); + set_val_str (arr, 6, nmc_property_ppp_get_refuse_mschapv2 (setting)); + set_val_str (arr, 7, nmc_property_ppp_get_nobsdcomp (setting)); + set_val_str (arr, 8, nmc_property_ppp_get_nodeflate (setting)); + set_val_str (arr, 9, nmc_property_ppp_get_no_vj_comp (setting)); + set_val_str (arr, 10, nmc_property_ppp_get_require_mppe (setting)); + set_val_str (arr, 11, nmc_property_ppp_get_require_mppe_128 (setting)); + set_val_str (arr, 12, nmc_property_ppp_get_mppe_stateful (setting)); + set_val_str (arr, 13, nmc_property_ppp_get_crtscts (setting)); + set_val_str (arr, 14, nmc_property_ppp_get_baud (setting)); + set_val_str (arr, 15, nmc_property_ppp_get_mru (setting)); + set_val_str (arr, 16, nmc_property_ppp_get_mtu (setting)); + set_val_str (arr, 17, nmc_property_ppp_get_lcp_echo_failure (setting)); + set_val_str (arr, 18, nmc_property_ppp_get_lcp_echo_interval (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1762,27 +1762,27 @@ gboolean setting_pppoe_details (NMSettingPPPOE *s_pppoe, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_pppoe); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_PPPOE (s_pppoe), FALSE); - nmc->allowed_fields = nmc_fields_setting_pppoe; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_PPPOE_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_pppoe; + tmpl_len = sizeof (nmc_fields_setting_pppoe); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_PPPOE_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_pppoe_get_service (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_pppoe_get_username (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_pppoe_get_password (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_pppoe_get_password_flags (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_pppoe_get_service (setting)); + set_val_str (arr, 2, nmc_property_pppoe_get_username (setting)); + set_val_str (arr, 3, nmc_property_pppoe_get_password (setting)); + set_val_str (arr, 4, nmc_property_pppoe_get_password_flags (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1790,34 +1790,34 @@ gboolean setting_gsm_details (NMSettingGsm *s_gsm, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_gsm); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_GSM (s_gsm), FALSE); - nmc->allowed_fields = nmc_fields_setting_gsm; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_GSM_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_gsm; + tmpl_len = sizeof (nmc_fields_setting_gsm); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_GSM_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_gsm_get_number (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_gsm_get_username (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_gsm_get_password (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_gsm_get_password_flags (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_gsm_get_apn (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_gsm_get_network_id (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_gsm_get_network_type (setting)); - set_val_str (nmc->allowed_fields, 8, nmc_property_gsm_get_allowed_bands (setting)); - set_val_str (nmc->allowed_fields, 9, nmc_property_gsm_get_pin (setting)); - set_val_str (nmc->allowed_fields, 10, nmc_property_gsm_get_pin_flags (setting)); - set_val_str (nmc->allowed_fields, 11, nmc_property_gsm_get_home_only (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_gsm_get_number (setting)); + set_val_str (arr, 2, nmc_property_gsm_get_username (setting)); + set_val_str (arr, 3, nmc_property_gsm_get_password (setting)); + set_val_str (arr, 4, nmc_property_gsm_get_password_flags (setting)); + set_val_str (arr, 5, nmc_property_gsm_get_apn (setting)); + set_val_str (arr, 6, nmc_property_gsm_get_network_id (setting)); + set_val_str (arr, 7, nmc_property_gsm_get_network_type (setting)); + set_val_str (arr, 8, nmc_property_gsm_get_allowed_bands (setting)); + set_val_str (arr, 9, nmc_property_gsm_get_pin (setting)); + set_val_str (arr, 10, nmc_property_gsm_get_pin_flags (setting)); + set_val_str (arr, 11, nmc_property_gsm_get_home_only (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1825,27 +1825,27 @@ gboolean setting_cdma_details (NMSettingCdma *s_cdma, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_cdma); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_CDMA (s_cdma), FALSE); - nmc->allowed_fields = nmc_fields_setting_cdma; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_CDMA_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_cdma; + tmpl_len = sizeof (nmc_fields_setting_cdma); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_CDMA_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_cdma_get_number (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_cdma_get_username (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_cdma_get_password (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_cdma_get_password_flags (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_cdma_get_number (setting)); + set_val_str (arr, 2, nmc_property_cdma_get_username (setting)); + set_val_str (arr, 3, nmc_property_cdma_get_password (setting)); + set_val_str (arr, 4, nmc_property_cdma_get_password_flags (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1853,25 +1853,25 @@ gboolean setting_bluetooth_details (NMSettingBluetooth *s_bluetooth, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_bluetooth); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_BLUETOOTH (s_bluetooth), FALSE); - nmc->allowed_fields = nmc_fields_setting_bluetooth; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BLUETOOTH_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_bluetooth; + tmpl_len = sizeof (nmc_fields_setting_bluetooth); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BLUETOOTH_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_bluetooth_get_bdaddr (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_bluetooth_get_type (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_bluetooth_get_bdaddr (setting)); + set_val_str (arr, 2, nmc_property_bluetooth_get_type (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1879,26 +1879,26 @@ gboolean setting_olpc_mesh_details (NMSettingOlpcMesh *s_olpc_mesh, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_olpc_mesh); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_OLPC_MESH (s_olpc_mesh), FALSE); - nmc->allowed_fields = nmc_fields_setting_olpc_mesh; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_OLPC_MESH_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_olpc_mesh; + tmpl_len = sizeof (nmc_fields_setting_olpc_mesh); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_OLPC_MESH_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_olpc_get_ssid (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_olpc_get_channel (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_olpc_get_anycast_address (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_olpc_get_ssid (setting)); + set_val_str (arr, 2, nmc_property_olpc_get_channel (setting)); + set_val_str (arr, 3, nmc_property_olpc_get_anycast_address (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1906,27 +1906,27 @@ gboolean setting_vpn_details (NMSettingVPN *s_vpn, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_vpn); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_VPN (s_vpn), FALSE); - nmc->allowed_fields = nmc_fields_setting_vpn; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_VPN_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_vpn; + tmpl_len = sizeof (nmc_fields_setting_vpn); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_VPN_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_vpn_get_service_type (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_vpn_get_user_name (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_vpn_get_data (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_vpn_get_secrets (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_vpn_get_service_type (setting)); + set_val_str (arr, 2, nmc_property_vpn_get_user_name (setting)); + set_val_str (arr, 3, nmc_property_vpn_get_data (setting)); + set_val_str (arr, 4, nmc_property_vpn_get_secrets (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1934,25 +1934,25 @@ gboolean setting_wimax_details (NMSettingWimax *s_wimax, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_wimax); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_WIMAX (s_wimax), FALSE); - nmc->allowed_fields = nmc_fields_setting_wimax; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIMAX_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_wimax; + tmpl_len = sizeof (nmc_fields_setting_wimax); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_WIMAX_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_wimax_get_mac_address (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_wimax_get_network_name (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_wimax_get_mac_address (setting)); + set_val_str (arr, 2, nmc_property_wimax_get_network_name (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1960,26 +1960,26 @@ gboolean setting_infiniband_details (NMSettingInfiniband *s_infiniband, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_infiniband); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_INFINIBAND (s_infiniband), FALSE); - nmc->allowed_fields = nmc_fields_setting_infiniband; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_INFINIBAND_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_infiniband; + tmpl_len = sizeof (nmc_fields_setting_infiniband); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_INFINIBAND_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_ib_get_mac_address (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_ib_get_mtu (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_ib_get_transport_mode (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_ib_get_mac_address (setting)); + set_val_str (arr, 2, nmc_property_ib_get_mtu (setting)); + set_val_str (arr, 3, nmc_property_ib_get_transport_mode (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -1987,25 +1987,25 @@ gboolean setting_bond_details (NMSettingBond *s_bond, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_bond); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_BOND (s_bond), FALSE); - nmc->allowed_fields = nmc_fields_setting_bond; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BOND_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_bond; + tmpl_len = sizeof (nmc_fields_setting_bond); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BOND_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_bond_get_interface_name (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_bond_get_options (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_bond_get_interface_name (setting)); + set_val_str (arr, 2, nmc_property_bond_get_options (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -2013,29 +2013,29 @@ gboolean setting_vlan_details (NMSettingVlan *s_vlan, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_vlan); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_VLAN (s_vlan), FALSE); - nmc->allowed_fields = nmc_fields_setting_vlan; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_VLAN_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_vlan; + tmpl_len = sizeof (nmc_fields_setting_vlan); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_VLAN_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_vlan_get_interface_name (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_vlan_get_parent (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_vlan_get_id (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_vlan_get_flags (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_vlan_get_ingress_priority_map (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_vlan_get_egress_priority_map (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_vlan_get_interface_name (setting)); + set_val_str (arr, 2, nmc_property_vlan_get_parent (setting)); + set_val_str (arr, 3, nmc_property_vlan_get_id (setting)); + set_val_str (arr, 4, nmc_property_vlan_get_flags (setting)); + set_val_str (arr, 5, nmc_property_vlan_get_ingress_priority_map (setting)); + set_val_str (arr, 6, nmc_property_vlan_get_egress_priority_map (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -2043,30 +2043,30 @@ gboolean setting_adsl_details (NMSettingAdsl *s_adsl, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_adsl); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_ADSL (s_adsl), FALSE); - nmc->allowed_fields = nmc_fields_setting_adsl; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_ADSL_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_adsl; + tmpl_len = sizeof (nmc_fields_setting_adsl); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_ADSL_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_adsl_get_username (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_adsl_get_password (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_adsl_get_password_flags (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_adsl_get_protocol (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_adsl_get_encapsulation (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_adsl_get_vpi (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_adsl_get_vci (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_adsl_get_username (setting)); + set_val_str (arr, 2, nmc_property_adsl_get_password (setting)); + set_val_str (arr, 3, nmc_property_adsl_get_password_flags (setting)); + set_val_str (arr, 4, nmc_property_adsl_get_protocol (setting)); + set_val_str (arr, 5, nmc_property_adsl_get_encapsulation (setting)); + set_val_str (arr, 6, nmc_property_adsl_get_vpi (setting)); + set_val_str (arr, 7, nmc_property_adsl_get_vci (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -2074,30 +2074,30 @@ gboolean setting_bridge_details (NMSettingBridge *s_bridge, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_bridge); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_BRIDGE (s_bridge), FALSE); - nmc->allowed_fields = nmc_fields_setting_bridge; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BRIDGE_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_bridge; + tmpl_len = sizeof (nmc_fields_setting_bridge); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BRIDGE_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_bridge_get_interface_name (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_bridge_get_stp (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_bridge_get_priority (setting)); - set_val_str (nmc->allowed_fields, 4, nmc_property_bridge_get_forward_delay (setting)); - set_val_str (nmc->allowed_fields, 5, nmc_property_bridge_get_hello_time (setting)); - set_val_str (nmc->allowed_fields, 6, nmc_property_bridge_get_max_age (setting)); - set_val_str (nmc->allowed_fields, 7, nmc_property_bridge_get_ageing_time (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_bridge_get_interface_name (setting)); + set_val_str (arr, 2, nmc_property_bridge_get_stp (setting)); + set_val_str (arr, 3, nmc_property_bridge_get_priority (setting)); + set_val_str (arr, 4, nmc_property_bridge_get_forward_delay (setting)); + set_val_str (arr, 5, nmc_property_bridge_get_hello_time (setting)); + set_val_str (arr, 6, nmc_property_bridge_get_max_age (setting)); + set_val_str (arr, 7, nmc_property_bridge_get_ageing_time (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; } @@ -2105,26 +2105,26 @@ gboolean setting_bridge_port_details (NMSettingBridgePort *s_bridge_port, NmCli *nmc) { NMSetting *setting = NM_SETTING (s_bridge_port); - guint32 mode_flag = (nmc->print_output == NMC_PRINT_PRETTY) ? NMC_PF_FLAG_PRETTY : (nmc->print_output == NMC_PRINT_TERSE) ? NMC_PF_FLAG_TERSE : 0; - guint32 multiline_flag = nmc->multiline_output ? NMC_PF_FLAG_MULTILINE : 0; - guint32 escape_flag = nmc->escape_values ? NMC_PF_FLAG_ESCAPE : 0; + NmcOutputField *tmpl, *arr; + size_t tmpl_len; g_return_val_if_fail (NM_IS_SETTING_BRIDGE_PORT (s_bridge_port), FALSE); - nmc->allowed_fields = nmc_fields_setting_bridge_port; - nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BRIDGE_PORT_ALL, nmc->allowed_fields, NULL); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_FIELD_NAMES; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print field names */ + tmpl = nmc_fields_setting_bridge_port; + tmpl_len = sizeof (nmc_fields_setting_bridge_port); + nmc->print_fields.indices = parse_output_fields (NMC_FIELDS_SETTING_BRIDGE_PORT_ALL, tmpl, NULL); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_FIELD_NAMES); + g_ptr_array_add (nmc->output_data, arr); - set_val_str (nmc->allowed_fields, 0, g_strdup (nm_setting_get_name (setting))); - set_val_str (nmc->allowed_fields, 1, nmc_property_bridge_port_get_priority (setting)); - set_val_str (nmc->allowed_fields, 2, nmc_property_bridge_port_get_path_cost (setting)); - set_val_str (nmc->allowed_fields, 3, nmc_property_bridge_port_get_hairpin_mode (setting)); + arr = nmc_dup_fields_array (tmpl, tmpl_len, NMC_OF_FLAG_SECTION_PREFIX); + set_val_str (arr, 0, g_strdup (nm_setting_get_name (setting))); + set_val_str (arr, 1, nmc_property_bridge_port_get_priority (setting)); + set_val_str (arr, 2, nmc_property_bridge_port_get_path_cost (setting)); + set_val_str (arr, 3, nmc_property_bridge_port_get_hairpin_mode (setting)); + g_ptr_array_add (nmc->output_data, arr); - nmc->print_fields.flags = multiline_flag | mode_flag | escape_flag | NMC_PF_FLAG_SECTION_PREFIX; - print_fields (nmc->print_fields, nmc->allowed_fields); /* Print values */ + print_data (nmc); /* Print all data */ - nmc_free_output_field_values (nmc->allowed_fields); return TRUE; }