summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-07-06 14:33:16 +0200
committerLubomir Rintel <lkundrak@v3.sk>2016-08-01 13:52:36 +0200
commit5305dfdf195f16b8843240f3f8e6550992a17027 (patch)
tree6938aa9cb1cb8ce1b886cebeae97191f6a10eec2
parent2b860e4e95e2fd4517281959855cbd41718bde5d (diff)
downloadNetworkManager-5305dfdf195f16b8843240f3f8e6550992a17027.tar.gz
cli/radio: use nmc_do_cmd()
-rw-r--r--clients/cli/general.c151
1 files changed, 70 insertions, 81 deletions
diff --git a/clients/cli/general.c b/clients/cli/general.c
index 40254c07f1..aa67cd72e0 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -806,104 +806,93 @@ finish:
return nmc->return_value;
}
-/*
- * Entry point function for radio switch commands 'nmcli radio'
- */
-NMCResultCode
-do_radio (NmCli *nmc, int argc, char **argv)
+static NMCResultCode
+do_radio_all (NmCli *nmc, int argc, char **argv)
{
- GError *error = NULL;
gboolean enable_flag;
-
- /* Not (yet?) supported */
- if (nmc->complete)
- return nmc->return_value;
-
- /* Register polkit agent */
- nmc_start_polkit_agent_start_try (nmc);
+ gs_free_error GError *error = NULL;
if (argc == 0) {
+ /* no argument, show all radio switches */
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error)) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
- nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
- g_error_free (error);
- goto finish;
+ return NMC_RESULT_ERROR_USER_INPUT;
}
show_nm_status (nmc, _("Radio switches"), NMC_FIELDS_NM_STATUS_RADIO);
+ } else {
+ if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
+ return nmc->return_value;
+
+ nmc->get_client (nmc); /* create NMClient */
+ nm_client_wireless_set_enabled (nmc->client, enable_flag);
+ nm_client_wimax_set_enabled (nmc->client, enable_flag);
+ nm_client_wwan_set_enabled (nmc->client, enable_flag);
}
- if (argc > 0) {
- if (nmc_arg_is_help (*argv)) {
- usage_radio ();
- }
- else if (matches (*argv, "all") == 0) {
- if (nmc_arg_is_help (*(argv+1))) {
- usage_radio_all ();
- goto finish;
- }
- if (next_arg (&argc, &argv) != 0) {
- /* no argument, show all radio switches */
- if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error)) {
- g_string_printf (nmc->return_text, _("Error: %s."), error->message);
- nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
- g_error_free (error);
- goto finish;
- }
- show_nm_status (nmc, _("Radio switches"), NMC_FIELDS_NM_STATUS_RADIO);
- } else {
- if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
- goto finish;
+ return nmc->return_value;
+}
- nmc->get_client (nmc); /* create NMClient */
- nm_client_wireless_set_enabled (nmc->client, enable_flag);
- nm_client_wimax_set_enabled (nmc->client, enable_flag);
- nm_client_wwan_set_enabled (nmc->client, enable_flag);
- }
- }
- else if (matches (*argv, "wifi") == 0) {
- if (nmc_arg_is_help (*(argv+1))) {
- usage_radio_wifi ();
- goto finish;
- }
- if (next_arg (&argc, &argv) != 0) {
- /* no argument, show current WiFi state */
- nmc_switch_show (nmc, NMC_FIELDS_NM_WIFI, _("Wi-Fi radio switch"));
- } else {
- if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
- goto finish;
-
- nmc->get_client (nmc); /* create NMClient */
- nm_client_wireless_set_enabled (nmc->client, enable_flag);
- }
- }
- else if (matches (*argv, "wwan") == 0) {
- if (nmc_arg_is_help (*(argv+1))) {
- usage_radio_wwan ();
- goto finish;
- }
- if (next_arg (&argc, &argv) != 0) {
- /* no argument, show current WWAN (mobile broadband) state */
- nmc_switch_show (nmc, NMC_FIELDS_NM_WWAN, _("WWAN radio switch"));
- } else {
- if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
- goto finish;
+static NMCResultCode
+do_radio_wifi (NmCli *nmc, int argc, char **argv)
+{
+ gboolean enable_flag;
- nmc->get_client (nmc); /* create NMClient */
- nm_client_wwan_set_enabled (nmc->client, enable_flag);
- }
- }
- else {
- usage_radio ();
- g_string_printf (nmc->return_text, _("Error: 'radio' command '%s' is not valid."), *argv);
- nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
- }
+ if (argc == 0) {
+ /* no argument, show current WiFi state */
+ nmc_switch_show (nmc, NMC_FIELDS_NM_WIFI, _("Wi-Fi radio switch"));
+ } else {
+ if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
+ return nmc->return_value;
+
+ nmc->get_client (nmc); /* create NMClient */
+ nm_client_wireless_set_enabled (nmc->client, enable_flag);
}
-finish:
- quit ();
return nmc->return_value;
}
+static NMCResultCode
+do_radio_wwan (NmCli *nmc, int argc, char **argv)
+{
+ gboolean enable_flag;
+
+ if (argc == 0) {
+ /* no argument, show current WWAN (mobile broadband) state */
+ nmc_switch_show (nmc, NMC_FIELDS_NM_WWAN, _("WWAN radio switch"));
+ } else {
+ if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag))
+ return nmc->return_value;
+
+ nmc->get_client (nmc); /* create NMClient */
+ nm_client_wwan_set_enabled (nmc->client, enable_flag);
+ }
+
+ return nmc->return_value;
+}
+
+static const NMCCommand radio_cmds[] = {
+ {"all", do_radio_all, usage_radio_all },
+ {"wifi", do_radio_wifi, usage_radio_wifi },
+ {"wwan", do_radio_wwan, usage_radio_wwan },
+ {NULL, do_radio_all, usage_radio }
+};
+
+/*
+ * Entry point function for radio switch commands 'nmcli radio'
+ */
+NMCResultCode
+do_radio (NmCli *nmc, int argc, char **argv)
+{
+ /* Not (yet?) supported */
+ if (nmc->complete)
+ return nmc->return_value;
+
+ /* Register polkit agent */
+ nmc_start_polkit_agent_start_try (nmc);
+
+ return nmc_do_cmd (nmc, radio_cmds, *argv, argc, argv);
+}
+
static void
networkmanager_running (NMClient *client, GParamSpec *param, NmCli *nmc)
{