diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2019-07-30 12:23:03 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2019-07-30 18:40:31 +0200 |
commit | 577769b98384f7f93480a90031a407a51347aab5 (patch) | |
tree | a9d8c30aa54ce0122c0e2c8ecc758e89ea64d854 | |
parent | ce08b444710995519865503b0c12073216813ba0 (diff) | |
download | NetworkManager-577769b98384f7f93480a90031a407a51347aab5.tar.gz |
cli: abort on extra arguments
Instead of straight-out rejecting extra parameters for various nmcli
sub-commands (such as "nmcli dev status", "nmcli dev wifi rescan" or
"nmcli dev wifi connect", etc.), we just print a warning and go ahead.
This is unhelpful. In case the user makes a typo, we'll do the wrong
thing and possibly even drown the warning in the output.
While at that, let's make the error message consistent. One less string
to translate.
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/217
-rw-r--r-- | clients/cli/connections.c | 5 | ||||
-rw-r--r-- | clients/cli/devices.c | 25 | ||||
-rw-r--r-- | clients/tests/test-client.check-on-disk/test_003.expected | 36 | ||||
-rwxr-xr-x | clients/tests/test-client.py | 2 |
4 files changed, 28 insertions, 40 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 9a622b0b4f..806e3504c1 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -2933,7 +2933,8 @@ do_connection_up (NmCli *nmc, int argc, char **argv) pwds = *argv; } else if (!nmc->complete) { - g_printerr (_("Unknown parameter: %s\n"), *argv); + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + return NMC_RESULT_ERROR_USER_INPUT; } next_arg (nmc, &argc, &argv, NULL); @@ -8901,7 +8902,7 @@ do_connection_import (NmCli *nmc, int argc, char **argv) else g_printerr (_("Warning: 'file' already specified, ignoring extra one.\n")); } else { - g_string_printf (nmc->return_text, _("Unknown parameter: %s"), *argv); + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); return NMC_RESULT_ERROR_USER_INPUT; } diff --git a/clients/cli/devices.c b/clients/cli/devices.c index c00d3191a9..b37b40e08a 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -1681,9 +1681,9 @@ do_devices_status (NmCli *nmc, int argc, char **argv) if (nmc->complete) return nmc->return_value; - while (argc > 0) { - g_printerr (_("Unknown parameter: %s\n"), *argv); - next_arg (nmc, &argc, &argv, NULL); + if (argc) { + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + return NMC_RESULT_ERROR_USER_INPUT; } if (!nmc->required_fields || strcasecmp (nmc->required_fields, "common") == 0) @@ -3027,8 +3027,10 @@ do_device_wifi_list (NmCli *nmc, int argc, char **argv) if (nmc->complete) return nmc->return_value; - if (argc) - g_printerr (_("Unknown parameter: %s\n"), *argv); + if (argc) { + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + return NMC_RESULT_ERROR_USER_INPUT; + } if (rescan == NULL || strcmp (rescan, "auto") == 0) { rescan_cutoff = NM_MAX (nm_utils_get_timestamp_msec () - 30 * NM_UTILS_MSEC_PER_SECOND, 0); @@ -3291,7 +3293,9 @@ do_device_wifi_connect_network (NmCli *nmc, int argc, char **argv) goto finish; } } else if (!nmc->complete) { - g_printerr (_("Unknown parameter: %s\n"), *argv); + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto finish; } next_arg (nmc, &argc, &argv, NULL); @@ -3784,7 +3788,7 @@ do_device_wifi_hotspot (NmCli *nmc, int argc, char **argv) } else if (nmc_arg_is_option (*argv, "show-password")) { show_password = TRUE; } else { - g_string_printf (nmc->return_text, _("Error: Unknown parameter %s."), *argv); + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); return NMC_RESULT_ERROR_USER_INPUT; } @@ -3966,8 +3970,11 @@ do_device_wifi_rescan (NmCli *nmc, int argc, char **argv) goto finish; } g_ptr_array_add (ssids, *argv); - } else if (!nmc->complete) - g_printerr (_("Unknown parameter: %s\n"), *argv); + } else if (!nmc->complete) { + g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + goto finish; + } next_arg (nmc, &argc, &argv, NULL); } diff --git a/clients/tests/test-client.check-on-disk/test_003.expected b/clients/tests/test-client.check-on-disk/test_003.expected index 20980164e9..c8cb4903b5 100644 --- a/clients/tests/test-client.check-on-disk/test_003.expected +++ b/clients/tests/test-client.check-on-disk/test_003.expected @@ -892,9 +892,9 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 1459 +size: 1409 location: clients/tests/test-client.py:951:test_003()/31 -cmd: $NMCLI -f ALL dev s eth0 +cmd: $NMCLI -f ALL dev status lang: C returncode: 0 stdout: 1272 bytes @@ -907,14 +907,9 @@ wlan1 wifi unavailable unknown unknown /org/freedesk wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- -- <<< -stderr: 24 bytes ->>> -Unknown parameter: eth0 - -<<< -size: 1474 +size: 1424 location: clients/tests/test-client.py:951:test_003()/32 -cmd: $NMCLI -f ALL dev s eth0 +cmd: $NMCLI -f ALL dev status lang: pl_PL.UTF-8 returncode: 0 stdout: 1277 bytes @@ -927,11 +922,6 @@ wlan1 wifi niedostępne nieznane nieznane /org/freedes wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- -- <<< -stderr: 24 bytes ->>> -Nieznany parametr: eth0 - -<<< size: 3494 location: clients/tests/test-client.py:954:test_003()/33 cmd: $NMCLI -f ALL dev show eth0 @@ -1782,9 +1772,9 @@ GENERAL.ZONE: -- GENERAL.MASTER-PATH: -- <<< -size: 1459 +size: 1409 location: clients/tests/test-client.py:951:test_003()/54 -cmd: $NMCLI -f ALL dev s eth0 +cmd: $NMCLI -f ALL dev status lang: C returncode: 0 stdout: 1272 bytes @@ -1797,14 +1787,9 @@ wlan1 wifi unavailable unknown unknown /org/freedesk wlan1 wifi unavailable unknown unknown /org/freedesktop/NetworkManager/Devices/5 -- -- -- <<< -stderr: 24 bytes ->>> -Unknown parameter: eth0 - -<<< -size: 1474 +size: 1424 location: clients/tests/test-client.py:951:test_003()/55 -cmd: $NMCLI -f ALL dev s eth0 +cmd: $NMCLI -f ALL dev status lang: pl_PL.UTF-8 returncode: 0 stdout: 1277 bytes @@ -1817,11 +1802,6 @@ wlan1 wifi niedostępne nieznane nieznane /org/freedes wlan1 wifi niedostępne nieznane nieznane /org/freedesktop/NetworkManager/Devices/5 -- -- -- <<< -stderr: 24 bytes ->>> -Nieznany parametr: eth0 - -<<< size: 3494 location: clients/tests/test-client.py:954:test_003()/56 cmd: $NMCLI -f ALL dev show eth0 diff --git a/clients/tests/test-client.py b/clients/tests/test-client.py index ff5a3604dd..307a1182f3 100755 --- a/clients/tests/test-client.py +++ b/clients/tests/test-client.py @@ -947,7 +947,7 @@ class TestNmcli(NmTestBase): self.call_nmcli_l(['con', 's', 'ethernet'], replace_stdout = replace_stdout) - self.call_nmcli_l(['-f', 'ALL', 'dev', 's', 'eth0'], + self.call_nmcli_l(['-f', 'ALL', 'dev', 'status'], replace_stdout = replace_stdout) self.call_nmcli_l(['-f', 'ALL', 'dev', 'show', 'eth0'], |