nmcli: fix nmcli parsing
Fixes the parsing for correct and incorrect commands. e.g.: nmcli connection down id <conn> nmcli -t ... Fixes:16902a2be6
(cherry picked from commitef0d0d08eb
)
This commit is contained in:
@@ -2311,12 +2311,12 @@ do_device_set (NmCli *nmc, int argc, char **argv)
|
||||
nmc_complete_strings (*argv, "managed", "autoconnect", NULL);
|
||||
|
||||
if (matches (*argv, "managed")) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc == 1 && nmc->complete)
|
||||
nmc_complete_bool (*argv);
|
||||
if (!nmc_string_to_bool (*argv, &flag, &error)) {
|
||||
@@ -2328,12 +2328,12 @@ do_device_set (NmCli *nmc, int argc, char **argv)
|
||||
values[DEV_SET_MANAGED].value = flag;
|
||||
}
|
||||
else if (matches (*argv, "autoconnect")) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc == 1 && nmc->complete)
|
||||
nmc_complete_bool (*argv);
|
||||
if (!nmc_string_to_bool (*argv, &flag, &error)) {
|
||||
@@ -2634,22 +2634,22 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv)
|
||||
nmc_complete_strings (*argv, "ifname", "bssid", NULL);
|
||||
|
||||
if (strcmp (*argv, "ifname") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
ifname = *argv;
|
||||
complete_device (devices, ifname, TRUE);
|
||||
} else if (strcmp (*argv, "bssid") == 0 || strcmp (*argv, "hwaddr") == 0) {
|
||||
/* hwaddr is deprecated and will be removed later */
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
bssid_user = *argv;
|
||||
if (argc == 1 && nmc->complete)
|
||||
complete_aps (devices, NULL, bssid_user, NULL);
|
||||
@@ -2879,6 +2879,8 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
||||
}
|
||||
|
||||
if (strcmp (*argv, "ifname") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
@@ -2887,13 +2889,13 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
||||
ifname = *argv;
|
||||
complete_device (devices, ifname, TRUE);
|
||||
} else if (strcmp (*argv, "bssid") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
bssid = *argv;
|
||||
if (argc == 1 && nmc->complete)
|
||||
complete_aps (devices, NULL, bssid, NULL);
|
||||
@@ -2905,22 +2907,22 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
||||
goto finish;
|
||||
}
|
||||
} else if (strcmp (*argv, "password") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
password = *argv;
|
||||
} else if (strcmp (*argv, "wep-key-type") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc == 1 && nmc->complete)
|
||||
nmc_complete_strings (*argv, "key", "phrase", NULL);
|
||||
if (strcmp (*argv, "key") == 0)
|
||||
@@ -2935,23 +2937,24 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
||||
goto finish;
|
||||
}
|
||||
} else if (strcmp (*argv, "name") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
con_name = *argv;
|
||||
} else if (strcmp (*argv, "private") == 0) {
|
||||
GError *err_tmp = NULL;
|
||||
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc == 1 && nmc->complete)
|
||||
nmc_complete_bool (*argv);
|
||||
if (!nmc_string_to_bool (*argv, &private, &err_tmp)) {
|
||||
@@ -2962,13 +2965,14 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv)
|
||||
}
|
||||
} else if (strcmp (*argv, "hidden") == 0) {
|
||||
GError *err_tmp = NULL;
|
||||
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (argc == 1 && nmc->complete)
|
||||
nmc_complete_bool (*argv);
|
||||
if (!nmc_string_to_bool (*argv, &hidden, &err_tmp)) {
|
||||
@@ -3339,42 +3343,42 @@ do_device_wifi_hotspot (NmCli *nmc, int argc, char **argv)
|
||||
}
|
||||
|
||||
if (strcmp (*argv, "ifname") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
ifname = *argv;
|
||||
if (argc == 1 && nmc->complete)
|
||||
complete_device (devices, ifname, TRUE);
|
||||
} else if (strcmp (*argv, "con-name") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
con_name = *argv;
|
||||
} else if (strcmp (*argv, "ssid") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
ssid = *argv;
|
||||
if (strlen (ssid) > 32) {
|
||||
g_string_printf (nmc->return_text, _("Error: ssid is too long."));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
} else if (strcmp (*argv, "band") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
band = *argv;
|
||||
if (argc == 1 && nmc->complete)
|
||||
nmc_complete_strings (band, "a", "bg", NULL);
|
||||
@@ -3384,20 +3388,20 @@ do_device_wifi_hotspot (NmCli *nmc, int argc, char **argv)
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
} else if (strcmp (*argv, "channel") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
channel = *argv;
|
||||
} else if (strcmp (*argv, "password") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
password = *argv;
|
||||
/* --show-password is deprecated in favour of global --show-secrets option */
|
||||
/* Keep it here for backwards compatibility */
|
||||
@@ -3565,24 +3569,24 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv)
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
ifname = *argv;
|
||||
if (argc == 1 && nmc->complete)
|
||||
complete_device (devices, ifname, TRUE);
|
||||
} else if (strcmp (*argv, "ssid") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
goto finish;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
g_ptr_array_add (ssids, *argv);
|
||||
} else if (!nmc->complete)
|
||||
g_printerr (_("Unknown parameter: %s\n"), *argv);
|
||||
@@ -3744,12 +3748,12 @@ do_device_lldp_list (NmCli *nmc, int argc, char **argv)
|
||||
nmc_complete_strings (*argv, "ifname", NULL);
|
||||
|
||||
if (strcmp (*argv, "ifname") == 0) {
|
||||
argc--;
|
||||
argv++;
|
||||
if (!argc) {
|
||||
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
|
||||
return NMC_RESULT_ERROR_USER_INPUT;
|
||||
}
|
||||
argc--;
|
||||
argv++;
|
||||
|
||||
device = get_device (nmc, &argc, &argv, &error);
|
||||
if (!device) {
|
||||
|
Reference in New Issue
Block a user