cli/device: add completion to wifi rescan subcommand
This commit is contained in:
@@ -3513,42 +3513,46 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
|
|||||||
const char *ssid;
|
const char *ssid;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Not (yet?) supported */
|
|
||||||
if (nmc->complete)
|
|
||||||
return nmc->return_value;
|
|
||||||
|
|
||||||
ssids = g_ptr_array_new ();
|
ssids = g_ptr_array_new ();
|
||||||
|
devices = nmc_get_devices_sorted (nmc->client);
|
||||||
|
|
||||||
/* Get the parameters */
|
/* Get the parameters */
|
||||||
while (argc > 0) {
|
while (argc > 0) {
|
||||||
|
if (argc == 1 && nmc->complete)
|
||||||
|
nmc_complete_strings (*argv, "ifname", "ssid", NULL);
|
||||||
|
|
||||||
if (strcmp (*argv, "ifname") == 0) {
|
if (strcmp (*argv, "ifname") == 0) {
|
||||||
if (ifname) {
|
if (ifname) {
|
||||||
g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1));
|
g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto error;
|
goto finish;
|
||||||
}
|
}
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
if (next_arg (&argc, &argv) != 0) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto error;
|
goto finish;
|
||||||
}
|
}
|
||||||
ifname = *argv;
|
ifname = *argv;
|
||||||
|
if (argc == 1 && nmc->complete)
|
||||||
|
complete_device (devices, ifname, TRUE);
|
||||||
} else if (strcmp (*argv, "ssid") == 0) {
|
} else if (strcmp (*argv, "ssid") == 0) {
|
||||||
if (next_arg (&argc, &argv) != 0) {
|
if (next_arg (&argc, &argv) != 0) {
|
||||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||||
goto error;
|
goto finish;
|
||||||
}
|
}
|
||||||
g_ptr_array_add (ssids, *argv);
|
g_ptr_array_add (ssids, *argv);
|
||||||
} else
|
} else if (!nmc->complete)
|
||||||
g_printerr (_("Unknown parameter: %s\n"), *argv);
|
g_printerr (_("Unknown parameter: %s\n"), *argv);
|
||||||
|
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (nmc->complete)
|
||||||
|
goto finish;
|
||||||
|
|
||||||
/* Find Wi-Fi device to scan on. When no ifname is provided, the first Wi-Fi is used. */
|
/* 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);
|
device = find_wifi_device_by_iface (devices, ifname, NULL);
|
||||||
|
|
||||||
if (!device) {
|
if (!device) {
|
||||||
@@ -3557,7 +3561,7 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
|
|||||||
else
|
else
|
||||||
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
|
g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found."));
|
||||||
nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
|
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),
|
nm_device_wifi_request_scan_async (NM_DEVICE_WIFI (device),
|
||||||
NULL, request_rescan_cb, nmc);
|
NULL, request_rescan_cb, nmc);
|
||||||
|
|
||||||
g_ptr_array_free (ssids, FALSE);
|
|
||||||
return nmc->return_value;
|
|
||||||
error:
|
|
||||||
nmc->should_wait++;
|
nmc->should_wait++;
|
||||||
|
finish:
|
||||||
g_ptr_array_free (ssids, FALSE);
|
g_ptr_array_free (ssids, FALSE);
|
||||||
return nmc->return_value;
|
return nmc->return_value;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user