diff options
author | Thomas Haller <thaller@redhat.com> | 2020-04-04 19:46:33 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2020-04-04 19:46:36 +0200 |
commit | 306414b93d447e915b6de94b9b7410ff7aadc4cf (patch) | |
tree | c95524e12f0f8365b28790c6bb9ecbb8f1a9c7ca | |
parent | 2d83df38200121c9c0db56d62d07264da6c22d20 (diff) | |
parent | 038d53a74520ad9e0814cd839dc16b53f69c84c5 (diff) | |
download | NetworkManager-306414b93d447e915b6de94b9b7410ff7aadc4cf.tar.gz |
cli: merge branch 'th/cli-globals'
-rw-r--r-- | clients/cli/common.c | 2 | ||||
-rw-r--r-- | clients/cli/connections.c | 36 | ||||
-rw-r--r-- | clients/cli/devices.c | 26 | ||||
-rw-r--r-- | clients/cli/general.c | 4 | ||||
-rw-r--r-- | clients/cli/nmcli.c | 19 | ||||
-rw-r--r-- | clients/cli/nmcli.h | 12 | ||||
-rw-r--r-- | clients/cli/settings.c | 6 | ||||
-rw-r--r-- | clients/cli/utils.c | 18 | ||||
-rw-r--r-- | clients/cli/utils.h | 4 |
9 files changed, 78 insertions, 49 deletions
diff --git a/clients/cli/common.c b/clients/cli/common.c index a5d9bcbb1a..7e9bcba860 100644 --- a/clients/cli/common.c +++ b/clients/cli/common.c @@ -1118,7 +1118,7 @@ nmc_rl_gen_func_ifnames (const char *text, int state) const char **ifnames; char *ret; - devices = nm_client_get_devices (nm_cli.client); + devices = nm_client_get_devices (nm_cli_global_readline->client); if (devices->len == 0) return NULL; diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 65fde6db22..7fe22adf63 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -1388,9 +1388,13 @@ nmc_connection_profile_details (NMConnection *connection, NmCli *nmc) for (i = 0; i < _NM_META_SETTING_TYPE_NUM; i++) row[i].info = (const NMMetaAbstractInfo *) &nm_meta_setting_infos_editor[i]; - print_required_fields (&nmc->nmc_config, NMC_OF_FLAG_MAIN_HEADER_ONLY, - out_indices, header_name, - 0, row); + print_required_fields (&nmc->nmc_config, + &nmc->pager_data, + NMC_OF_FLAG_MAIN_HEADER_ONLY, + out_indices, + header_name, + 0, + row); } /* Loop through the required settings and print them. */ @@ -1473,9 +1477,13 @@ nmc_active_connection_details (NMActiveConnection *acon, NmCli *nmc) for (i = 0; nmc_fields_con_active_details_groups[i]; i++) row[i].info = (const NMMetaAbstractInfo *) nmc_fields_con_active_details_groups[i]; - print_required_fields (&nmc->nmc_config, NMC_OF_FLAG_MAIN_HEADER_ONLY, - out_indices, header_name, - 0, row); + print_required_fields (&nmc->nmc_config, + &nmc->pager_data, + NMC_OF_FLAG_MAIN_HEADER_ONLY, + out_indices, + header_name, + 0, + row); } /* Loop through the groups and print them. */ @@ -2093,7 +2101,7 @@ do_connections_show (NmCli *nmc, int argc, char **argv) } } - nm_cli_spawn_pager (nmc); + nm_cli_spawn_pager (&nmc->nmc_config, &nmc->pager_data); items = con_show_get_items (nmc, active_only, show_active_fields, order); g_ptr_array_add (items, NULL); @@ -3842,7 +3850,7 @@ _meta_abstract_complete (const NMMetaAbstractInfo *abstract_info, const char *te values = nm_meta_abstract_info_complete (abstract_info, nmc_meta_environment, - nmc_meta_environment_arg, + (gpointer) nmc_meta_environment_arg, &ctx, text, NULL, @@ -4642,7 +4650,7 @@ complete_option (NmCli *nmc, const NMMetaAbstractInfo *abstract_info, const char values = nm_meta_abstract_info_complete (abstract_info, nmc_meta_environment, - nmc_meta_environment_arg, + (gpointer) nmc_meta_environment_arg, &ctx, prefix, &complete_filename, @@ -5827,7 +5835,7 @@ gen_vpn_uuids (const char *text, int state) const char **uuids; char *ret; - connections = nm_client_get_connections (nm_cli.client); + connections = nm_client_get_connections (nm_cli_global_readline->client); if (connections->len < 1) return NULL; @@ -5844,7 +5852,7 @@ gen_vpn_ids (const char *text, int state) const char **ids; char *ret; - connections = nm_client_get_connections (nm_cli.client); + connections = nm_client_get_connections (nm_cli_global_readline->client); if (connections->len < 1) return NULL; @@ -9253,7 +9261,7 @@ gen_func_connection_names (const char *text, int state) const char **connection_names; char *ret; - connections = nm_client_get_connections (nm_cli.client); + connections = nm_client_get_connections (nm_cli_global_readline->client); if (connections->len == 0) return NULL; @@ -9276,10 +9284,10 @@ gen_func_active_connection_names (const char *text, int state) const char **connections; char *ret; - if (!nm_cli.client) + if (!nm_cli_global_readline->client) return NULL; - acs = nm_client_get_active_connections (nm_cli.client); + acs = nm_client_get_active_connections (nm_cli_global_readline->client); if (!acs || acs->len == 0) return NULL; diff --git a/clients/cli/devices.c b/clients/cli/devices.c index d829368304..94f7c3c214 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -1340,7 +1340,7 @@ print_bond_bridge_info (NMDevice *device, g_ptr_array_add (out.output_data, arr); print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, NULL, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, NULL, 0, &out); g_string_free (slaves_str, FALSE); @@ -1410,7 +1410,7 @@ print_team_info (NMDevice *device, g_ptr_array_add (out.output_data, arr); print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, NULL, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, NULL, 0, &out); g_string_free (slaves_str, FALSE); @@ -1465,9 +1465,13 @@ show_device_info (NMDevice *device, NmCli *nmc) for (i = 0; i < G_N_ELEMENTS (metagen_device_detail_general); i++) row[i].info = (const NMMetaAbstractInfo *) &metagen_device_detail_general[i]; - print_required_fields (&nmc->nmc_config, NMC_OF_FLAG_MAIN_HEADER_ONLY, - out_indices, header_name, - 0, row); + print_required_fields (&nmc->nmc_config, + &nmc->pager_data, + NMC_OF_FLAG_MAIN_HEADER_ONLY, + out_indices, + header_name, + 0, + row); } /* Loop through the required sections and print them. */ @@ -1578,7 +1582,7 @@ show_device_info (NMDevice *device, NmCli *nmc) } print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, NULL, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, NULL, 0, &out); was_output = TRUE; } } @@ -1659,7 +1663,7 @@ show_device_info (NMDevice *device, NmCli *nmc) g_ptr_array_add (out.output_data, arr); print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, NULL, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, NULL, 0, &out); was_output = TRUE; } @@ -1681,7 +1685,7 @@ show_device_info (NMDevice *device, NmCli *nmc) g_ptr_array_add (out.output_data, arr); print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, NULL, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, NULL, 0, &out); was_output = TRUE; } } @@ -2870,7 +2874,7 @@ wifi_print_aps (NMDeviceWifi *wifi, fill_output_access_point (ap, info); print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, header_name, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, header_name, 0, &out); g_free (info); *bssid_found = TRUE; @@ -2878,7 +2882,7 @@ wifi_print_aps (NMDeviceWifi *wifi, } } else { show_access_point_info (wifi, nmc, &out); - print_data (&nmc->nmc_config, out_indices, header_name, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, header_name, 0, &out); empty_line = TRUE; } } @@ -4537,7 +4541,7 @@ show_device_lldp_list (NMDevice *device, NmCli *nmc, const char *fields_str, int } print_data_prepare_width (out.output_data); - print_data (&nmc->nmc_config, out_indices, header_name, 0, &out); + print_data (&nmc->nmc_config, &nmc->pager_data, out_indices, header_name, 0, &out); return neighbors->len; } diff --git a/clients/cli/general.c b/clients/cli/general.c index 2cc86aaaf2..6e7410ed20 100644 --- a/clients/cli/general.c +++ b/clients/cli/general.c @@ -556,7 +556,7 @@ print_permissions (void *user_data) permissions[i] = GINT_TO_POINTER (nm_auth_permission_sorted[i]); permissions[i] = NULL; - nm_cli_spawn_pager (nmc); + nm_cli_spawn_pager (&nmc->nmc_config, &nmc->pager_data); if (!nmc_print (&nmc->nmc_config, permissions, @@ -1447,7 +1447,7 @@ do_overview (NmCli *nmc, int argc, char **argv) /* Register polkit agent */ nmc_start_polkit_agent_start_try (nmc); - nm_cli_spawn_pager (nmc); + nm_cli_spawn_pager (&nmc->nmc_config, &nmc->pager_data); /* The VPN connections don't have devices (yet?). */ p = nm_client_get_active_connections (nmc->client); diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c index 5fbd6d7261..08d3ab16e0 100644 --- a/clients/cli/nmcli.c +++ b/clients/cli/nmcli.c @@ -72,7 +72,7 @@ [NM_META_COLOR_ENABLED] = "32", \ [NM_META_COLOR_DISABLED] = "31", \ -NmCli nm_cli = { +static NmCli nm_cli = { .client = NULL, .return_value = NMC_RESULT_SUCCESS, @@ -101,6 +101,9 @@ NmCli nm_cli = { .editor_save_confirmation = TRUE, }; +const NmCli *const nm_cli_global_readline = &nm_cli; +const NmCli *const nmc_meta_environment_arg = &nm_cli; + /*****************************************************************************/ typedef struct { @@ -909,11 +912,12 @@ signal_handler (gpointer user_data) } void -nm_cli_spawn_pager (NmCli *nmc) +nm_cli_spawn_pager (const NmcConfig *nmc_config, + NmcPagerData *pager_data) { - if (nmc->pager_pid > 0) + if (pager_data->pid != 0) return; - nmc->pager_pid = nmc_terminal_spawn_pager (&nmc->nmc_config); + pager_data->pid = nmc_terminal_spawn_pager (nmc_config); } static void @@ -935,13 +939,14 @@ nmc_cleanup (NmCli *nmc) nm_clear_g_free (&nmc->required_fields); - if (nmc->pager_pid > 0) { + if (nmc->pager_data.pid != 0) { + pid_t pid = nm_steal_int (&nmc->pager_data.pid); + fclose (stdout); fclose (stderr); do { - ret = waitpid (nmc->pager_pid, NULL, 0); + ret = waitpid (pid, NULL, 0); } while (ret == -1 && errno == EINTR); - nmc->pager_pid = 0; } nm_clear_g_free (&nmc->palette_buffer); diff --git a/clients/cli/nmcli.h b/clients/cli/nmcli.h index 4615b04689..96a1be1dde 100644 --- a/clients/cli/nmcli.h +++ b/clients/cli/nmcli.h @@ -101,6 +101,10 @@ typedef struct _NmcConfig { const char *palette[_NM_META_COLOR_NUM]; /* Color palette */ } NmcConfig; +typedef struct { + pid_t pid; +} NmcPagerData; + typedef struct _NmcOutputData { GPtrArray *output_data; /* GPtrArray of arrays of NmcOutputField structs - accumulates data for output */ } NmcOutputData; @@ -111,7 +115,8 @@ typedef struct _NmCli { NMCResultCode return_value; /* Return code of nmcli */ GString *return_text; /* Reason text */ - pid_t pager_pid; /* PID of a pager, if one was spawned */ + + NmcPagerData pager_data; int timeout; /* Operation timeout */ @@ -135,7 +140,7 @@ typedef struct _NmCli { char *palette_buffer; /* Buffer with sequences for terminal-colors.d(5)-based coloring. */ } NmCli; -extern NmCli nm_cli; +extern const NmCli *const nm_cli_global_readline; /* Error quark for GError domain */ #define NMCLI_ERROR (nmcli_error_quark ()) @@ -148,7 +153,8 @@ void nmc_clear_sigint (void); void nmc_set_sigquit_internal (void); void nmc_exit (void); -void nm_cli_spawn_pager (NmCli *nmc); +void nm_cli_spawn_pager (const NmcConfig *nmc_config, + NmcPagerData *pager_data); void nmc_empty_output_fields (NmcOutputData *output_data); diff --git a/clients/cli/settings.c b/clients/cli/settings.c index 698471d7ef..0487fb9680 100644 --- a/clients/cli/settings.c +++ b/clients/cli/settings.c @@ -456,8 +456,6 @@ const NMMetaEnvironment *const nmc_meta_environment = &((NMMetaEnvironment) { .get_nm_connections = _env_get_nm_connections, }); -NmCli *const nmc_meta_environment_arg = &nm_cli; - static char * get_property_val (NMSetting *setting, const char *prop, NMMetaAccessorGetType get_type, gboolean show_secrets, GError **error) { @@ -475,7 +473,7 @@ get_property_val (NMSetting *setting, const char *prop, NMMetaAccessorGetType ge value = property_info->property_type->get_fcn (property_info, nmc_meta_environment, - nmc_meta_environment_arg, + (gpointer) nmc_meta_environment_arg, setting, get_type, show_secrets ? NM_META_ACCESSOR_GET_FLAGS_SHOW_SECRETS : 0, @@ -568,7 +566,7 @@ nmc_setting_set_property (NMClient *client, g_object_freeze_notify (G_OBJECT (setting)); success = property_info->property_type->set_fcn (property_info, nmc_meta_environment, - nmc_meta_environment_arg, + (gpointer) nmc_meta_environment_arg, setting, modifier, value, diff --git a/clients/cli/utils.c b/clients/cli/utils.c index d8524c55a1..67d5a742a0 100644 --- a/clients/cli/utils.c +++ b/clients/cli/utils.c @@ -1067,7 +1067,7 @@ _print_fill (const NmcConfig *nmc_config, value = nm_meta_abstract_info_get (info, nmc_meta_environment, - nmc_meta_environment_arg, + (gpointer) nmc_meta_environment_arg, target, targets_data, text_get_type, @@ -1112,7 +1112,7 @@ _print_fill (const NmcConfig *nmc_config, cell->color = GPOINTER_TO_INT (nm_meta_abstract_info_get (info, nmc_meta_environment, - nmc_meta_environment_arg, + (gpointer) nmc_meta_environment_arg, target, targets_data, NM_META_ACCESSOR_GET_TYPE_COLOR, @@ -1571,6 +1571,7 @@ get_value_to_print (const NmcConfig *nmc_config, */ void print_required_fields (const NmcConfig *nmc_config, + NmcPagerData *pager_data, NmcOfFlags of_flags, const GArray *indices, const char *header_name, @@ -1587,7 +1588,7 @@ print_required_fields (const NmcConfig *nmc_config, gboolean field_names = of_flags & NMC_OF_FLAG_FIELD_NAMES; gboolean section_prefix = of_flags & NMC_OF_FLAG_SECTION_PREFIX; - nm_cli_spawn_pager (&nm_cli); + nm_cli_spawn_pager (nmc_config, pager_data); /* --- Main header --- */ if ( nmc_config->print_output == NMC_PRINT_PRETTY @@ -1796,6 +1797,7 @@ print_data_prepare_width (GPtrArray *output_data) void print_data (const NmcConfig *nmc_config, + NmcPagerData *pager_data, const GArray *indices, const char *header_name, int indent, @@ -1806,9 +1808,13 @@ print_data (const NmcConfig *nmc_config, for (i = 0; i < out->output_data->len; i++) { const NmcOutputField *field_values = g_ptr_array_index (out->output_data, i); - print_required_fields (nmc_config, field_values[0].flags, - indices, header_name, - indent, field_values); + print_required_fields (nmc_config, + pager_data, + field_values[0].flags, + indices, + header_name, + indent, + field_values); } } diff --git a/clients/cli/utils.h b/clients/cli/utils.h index e699a641b6..87e93ce082 100644 --- a/clients/cli/utils.h +++ b/clients/cli/utils.h @@ -51,6 +51,7 @@ GArray *parse_output_fields (const char *fields_str, NmcOutputField *nmc_dup_fields_array (const NMMetaAbstractInfo *const*fields, NmcOfFlags flags); void nmc_empty_output_fields (NmcOutputData *output_data); void print_required_fields (const NmcConfig *nmc_config, + NmcPagerData *pager_data, NmcOfFlags of_flags, const GArray *indices, const char *header_name, @@ -58,6 +59,7 @@ void print_required_fields (const NmcConfig *nmc_config, const NmcOutputField *field_values); void print_data_prepare_width (GPtrArray *output_data); void print_data (const NmcConfig *nmc_config, + NmcPagerData *pager_data, const GArray *indices, const char *header_name, int indent, @@ -66,7 +68,7 @@ void print_data (const NmcConfig *nmc_config, /*****************************************************************************/ extern const NMMetaEnvironment *const nmc_meta_environment; -extern NmCli *const nmc_meta_environment_arg; +extern const NmCli *const nmc_meta_environment_arg; typedef enum { |