summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-07-12 10:14:53 +0200
committerLubomir Rintel <lkundrak@v3.sk>2016-08-01 13:52:36 +0200
commitefd22c24e87a55d3193d13afd019889e6b39c376 (patch)
tree5cd031c7d222c44aa513fce22d737654d425ac69
parent3068886043ff0fa202542d5941174a9e5f6492b6 (diff)
downloadNetworkManager-efd22c24e87a55d3193d13afd019889e6b39c376.tar.gz
cli/device: add completion to wifi rescan subcommand
-rw-r--r--clients/cli/devices.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/clients/cli/devices.c b/clients/cli/devices.c
index 84f84e365a..6f9992fad4 100644
--- a/clients/cli/devices.c
+++ b/clients/cli/devices.c
@@ -3513,42 +3513,46 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
const char *ssid;
int i;
- /* Not (yet?) supported */
- if (nmc->complete)
- return nmc->return_value;
-
ssids = g_ptr_array_new ();
+ devices = nmc_get_devices_sorted (nmc->client);
/* Get the parameters */
while (argc > 0) {
+ if (argc == 1 && nmc->complete)
+ nmc_complete_strings (*argv, "ifname", "ssid", NULL);
+
if (strcmp (*argv, "ifname") == 0) {
if (ifname) {
g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
- goto error;
+ goto finish;
}
if (next_arg (&argc, &argv) != 0) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
- goto error;
+ goto finish;
}
ifname = *argv;
+ if (argc == 1 && nmc->complete)
+ complete_device (devices, ifname, TRUE);
} else if (strcmp (*argv, "ssid") == 0) {
if (next_arg (&argc, &argv) != 0) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
- goto error;
+ goto finish;
}
g_ptr_array_add (ssids, *argv);
- } else
+ } else if (!nmc->complete)
g_printerr (_("Unknown parameter: %s\n"), *argv);
argc--;
argv++;
}
+ if (nmc->complete)
+ goto finish;
+
/* Find Wi-Fi device to scan on. When no ifname is provided, the first Wi-Fi is used. */
- devices = nmc_get_devices_sorted (nmc->client);
device = find_wifi_device_by_iface (devices, ifname, NULL);
if (!device) {
@@ -3557,7 +3561,7 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
else
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
- goto error;
+ goto finish;
}
@@ -3580,10 +3584,8 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
nm_device_wifi_request_scan_async (NM_DEVICE_WIFI (device),
NULL, request_rescan_cb, nmc);
- g_ptr_array_free (ssids, FALSE);
- return nmc->return_value;
-error:
nmc->should_wait++;
+finish:
g_ptr_array_free (ssids, FALSE);
return nmc->return_value;
}