From aede8fa554919b673fcea6d273ae36f90a36e716 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Sun, 5 Apr 2020 15:36:30 +0200 Subject: [PATCH] cli: remove redundant return value from NMCCommand funcs Many func implementations are asynchronous, that means, they cannot return right away. Instead, they record the return value in nmc->result_value. The return value from the command functions was thus redundant. In the best case, the return value agrees with the cached result in nmc->result_value, in which it was unnecessary. In the worst case, they disagree, and overwrite each other. nmc->result_value is state. Tracking state is hard, and there should be fewer places where the state gets mutated. Also, the rules how that happened should be clearer. Drop the redundant, conflicting mechanism. --- clients/cli/agent.c | 35 +++--- clients/cli/common.c | 2 +- clients/cli/connections.c | 164 ++++++++++++------------ clients/cli/devices.c | 253 ++++++++++++++++++++------------------ clients/cli/general.c | 149 ++++++++++------------ clients/cli/nmcli.h | 18 +-- 6 files changed, 308 insertions(+), 313 deletions(-) diff --git a/clients/cli/agent.c b/clients/cli/agent.c index 572302445..f3707db7d 100644 --- a/clients/cli/agent.c +++ b/clients/cli/agent.c @@ -121,12 +121,12 @@ secrets_requested (NMSecretAgentSimple *agent, success ? secrets : NULL); } -static NMCResultCode +static void do_agent_secret (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; /* Create secret agent */ nmc->secret_agent = nm_secret_agent_simple_new ("nmcli-agent"); @@ -144,8 +144,6 @@ do_agent_secret (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const* g_string_printf (nmc->return_text, _("Error: secret agent initialization failed")); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; } - - return nmc->return_value; } static void @@ -163,14 +161,14 @@ polkit_error (gpointer instance, g_main_loop_quit (loop); } -static NMCResultCode +static void do_agent_polkit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_free_error GError *error = NULL; next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; if (!nmc_polkit_agent_init (nmc, TRUE, &error)) { g_dbus_error_strip_remote_error (error); @@ -193,39 +191,37 @@ do_agent_polkit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const* /* keep running */ nmc->should_wait++; } - - return nmc->return_value; } -static NMCResultCode +static void do_agent_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { - NMCResultCode secret_res; + NMCResultCode r; next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; /* Run both secret and polkit agent */ - secret_res = do_agent_secret (cmd, nmc, argc, argv); - if (secret_res != NMC_RESULT_SUCCESS) { + do_agent_secret (cmd, nmc, argc, argv); + r = nmc->return_value; + if (r != NMC_RESULT_SUCCESS) { g_printerr ("%s\n", nmc->return_text->str); g_string_truncate (nmc->return_text, 0); + nmc->return_value = NMC_RESULT_SUCCESS; } - nmc->return_value = do_agent_polkit (cmd, nmc, argc, argv); + do_agent_polkit (cmd, nmc, argc, argv); if (nmc->return_value != NMC_RESULT_SUCCESS) { g_printerr ("%s\n", nmc->return_text->str); g_string_truncate (nmc->return_text, 0); } - if (nmc->return_value == NMC_RESULT_SUCCESS && secret_res != NMC_RESULT_SUCCESS) - nmc->return_value = secret_res; - - return nmc->return_value; + if (r != NMC_RESULT_SUCCESS) + nmc->return_value = r; } -NMCResultCode +void nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { static const NMCCommand cmds[] = { @@ -237,5 +233,4 @@ nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char next_arg (nmc, &argc, &argv, NULL); nmc_do_cmd (nmc, cmds, *argv, argc, argv); - return nmc->return_value; } diff --git a/clients/cli/common.c b/clients/cli/common.c index dd3b5916e..93defe652 100644 --- a/clients/cli/common.c +++ b/clients/cli/common.c @@ -1264,7 +1264,7 @@ call_cmd (NmCli *nmc, GTask *task, const NMCCommand *cmd, int argc, const char * g_task_return_new_error (task, NMCLI_ERROR, NMC_RESULT_ERROR_NM_NOT_RUNNING, _("Error: NetworkManager is not running.")); } else { - nmc->return_value = cmd->func (cmd, nmc, argc, argv); + cmd->func (cmd, nmc, argc, argv); g_task_return_boolean (task, TRUE); } diff --git a/clients/cli/connections.c b/clients/cli/connections.c index 4bc3e6cf1..0e4a95e68 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -2027,7 +2027,7 @@ get_connection (NmCli *nmc, return connection; } -static NMCResultCode +static void do_connections_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_free_error GError *err = NULL; @@ -2284,7 +2284,6 @@ finish: g_string_printf (nmc->return_text, _("Error: %s."), err->message); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; } - return nmc->return_value; } static NMActiveConnection * @@ -2854,7 +2853,7 @@ nmc_activate_connection (NmCli *nmc, return TRUE; } -static NMCResultCode +static void do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMConnection *connection = NULL; @@ -2896,7 +2895,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, NULL, NULL, &error); if (!connection) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } } @@ -2909,7 +2909,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ifname = *argv; @@ -2921,7 +2922,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ap = *argv; @@ -2933,7 +2935,8 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc == 1 && nmc->complete) @@ -2943,14 +2946,15 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const } else if (!nmc->complete) { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } next_arg (nmc, &argc, &argv, NULL); } if (nmc->complete) - return nmc->return_value; + return; /* Use nowait_flag instead of should_wait because exiting has to be postponed till * active_connection_state_cb() is called. That gives NM time to check our permissions @@ -2963,14 +2967,13 @@ do_connection_up (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const g_string_printf (nmc->return_text, _("Error: %s."), error->message); nmc->should_wait--; - return error->code; + nmc->return_value = error->code; + return; } /* Start progress indication */ if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY) progress_id = g_timeout_add (120, progress_cb, _("preparing")); - - return nmc->return_value; } /*****************************************************************************/ @@ -3112,7 +3115,7 @@ connection_op_timeout_cb (gpointer user_data) return G_SOURCE_REMOVE; } -static NMCResultCode +static void do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMActiveConnection *active; @@ -3145,7 +3148,8 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con } if (arg_num == 0) { g_string_printf (nmc->return_text, _("Error: No connection specified.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } @@ -3163,7 +3167,8 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con arg_ptr++; if (!arg_num) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), selector); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } @@ -3184,12 +3189,13 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con if (!found_active_cons) { g_string_printf (nmc->return_text, _("Error: no active connection provided.")); - return NMC_RESULT_ERROR_NOT_FOUND; + nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; + return; } nm_assert (found_active_cons->len > 0); if (nmc->complete) - return nmc->return_value; + return; if (nmc->timeout > 0) { nmc->should_wait++; @@ -3226,8 +3232,6 @@ do_connection_down (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con } } } - - return nmc->return_value; } /*****************************************************************************/ @@ -5348,7 +5352,7 @@ again: return TRUE; } -static NMCResultCode +static void do_connection_add (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_unref_object NMConnection *connection = NULL; @@ -5506,7 +5510,6 @@ read_properties: finish: reset_options (); - return nmc->return_value; } /*****************************************************************************/ @@ -8354,7 +8357,7 @@ nmc_complete_connection_type (const char *prefix) } } -static NMCResultCode +static void do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { const GPtrArray *connections; @@ -8390,7 +8393,8 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con else { if (!nmc_parse_args (exp_args, TRUE, &argc, &argv, &error)) { g_string_assign (nmc->return_text, error->message); - return error->code; + nmc->return_value = error->code; + return; } } @@ -8420,7 +8424,8 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con } else { g_string_printf (nmc->return_text, _("Error: only one of 'id', 'filename', uuid, or 'path' can be provided.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } @@ -8430,11 +8435,12 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con found_con = nmc_find_connection (connections, selector, con, NULL, nmc->complete); if (nmc->complete) - return nmc->return_value; + return; if (!found_con) { g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), con); - return NMC_RESULT_ERROR_NOT_FOUND; + nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; + return; } /* Duplicate the connection and use that so that we need not @@ -8469,7 +8475,7 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con if (nmc->complete) { if (type && argc == 0) nmc_complete_connection_type (type); - return nmc->return_value; + return; } connection_type = check_valid_name_toplevel (type, &slave_type, &err1); @@ -8545,7 +8551,7 @@ do_connection_edit (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con nm_clear_g_free (&nmc_tab_completion.con_type); nmc_tab_completion.connection = NULL; - return nmc->return_value; + return; } static void @@ -8573,7 +8579,7 @@ modify_connection_cb (GObject *connection, quit (); } -static NMCResultCode +static void do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMConnection *connection = NULL; @@ -8589,7 +8595,8 @@ do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c connection = get_connection (nmc, &argc, &argv, NULL, NULL, NULL, &error); if (!connection) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } rc = nm_client_get_connection_by_uuid (nmc->client, @@ -8597,21 +8604,21 @@ do_connection_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c if (!rc) { g_string_printf (nmc->return_text, _("Error: Unknown connection '%s'."), nm_connection_get_uuid (connection)); - return NMC_RESULT_ERROR_NOT_FOUND; + nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; + return; } if (!nmc_process_connection_properties (nmc, NM_CONNECTION (rc), &argc, &argv, TRUE, &error)) { g_string_assign (nmc->return_text, error->message); - return error->code; + nmc->return_value = error->code; + return; } if (nmc->complete) - return nmc->return_value; + return; update_connection (rc, temporary, modify_connection_cb, nmc); nmc->should_wait++; - - return nmc->return_value; } static void @@ -8641,7 +8648,7 @@ clone_connection_cb (GObject *client, quit (); } -static NMCResultCode +static void do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMConnection *connection = NULL; @@ -8680,11 +8687,12 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co connection = get_connection (nmc, argc_ptr, argv_ptr, NULL, NULL, NULL, &error); if (!connection) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } if (nmc->complete) - return nmc->return_value; + return; if (argv[0]) new_name = *argv; @@ -8693,12 +8701,14 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co _("New connection name: ")); } else { g_string_printf (nmc->return_text, _("Error: argument is missing.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (next_arg (nmc->ask ? NULL : nmc, argc_ptr, argv_ptr, NULL) == 0) { g_string_printf (nmc->return_text, _("Error: unknown extra argument: '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } new_connection = nm_simple_connection_new_clone (connection); @@ -8717,8 +8727,6 @@ do_connection_clone (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co clone_connection_cb, _add_connection_info_new (nmc, connection, new_connection)); nmc->should_wait++; - - return nmc->return_value; } static void @@ -8742,7 +8750,7 @@ delete_cb (GObject *con, GAsyncResult *result, gpointer user_data) } } -static NMCResultCode +static void do_connection_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMConnection *connection; @@ -8843,7 +8851,6 @@ finish: invalid_cons->str); nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; } - return nmc->return_value; } static void @@ -8888,7 +8895,7 @@ connection_removed (NMClient *client, NMRemoteConnection *con, NmCli *nmc) connection_unwatch (nmc, connection); } -static NMCResultCode +static void do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { GError *error = NULL; @@ -8910,7 +8917,8 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char * if (!nmc->complete) g_printerr (_("Error: %s.\n"), error->message); g_string_printf (nmc->return_text, _("Error: not all connections found.")); - return error->code; + nmc->return_value = error->code; + return; } if (nmc->complete) @@ -8921,7 +8929,7 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char * } if (nmc->complete) - return nmc->return_value; + return; for (i = 0; i < connections->len; i++) connection_watch (nmc, connections->pdata[i]); @@ -8933,11 +8941,9 @@ do_connection_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char * } g_signal_connect (nmc->client, NM_CLIENT_CONNECTION_REMOVED, G_CALLBACK (connection_removed), nmc); - - return NMC_RESULT_SUCCESS; } -static NMCResultCode +static void do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_unref_variant GVariant *result = NULL; @@ -8945,7 +8951,7 @@ do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; result = nmc_dbus_call_sync (nmc, "/org/freedesktop/NetworkManager/Settings", @@ -8959,11 +8965,9 @@ do_connection_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c nmc_error_get_simple_message (error)); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; } - - return nmc->return_value; } -static NMCResultCode +static void do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { GError *error = NULL; @@ -8974,11 +8978,14 @@ do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con next_arg (nmc, &argc, &argv, NULL); if (argc == 0) { g_string_printf (nmc->return_text, _("Error: No connection specified.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } - if (nmc->complete) - return NMC_RESULT_COMPLETE_FILE; + if (nmc->complete) { + nmc->return_value = NMC_RESULT_COMPLETE_FILE; + return; + } filenames = (const char **) nm_utils_strv_dup ((char **) argv, argc, FALSE); @@ -8994,13 +9001,11 @@ do_connection_load (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con for (i = 0; failures[i]; i++) g_printerr (_("Could not load file '%s'\n"), failures[i]); } - - return nmc->return_value; } #define PROMPT_IMPORT_FILE N_("File to import: ") -static NMCResultCode +static void do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_free_error GError *error = NULL; @@ -9032,7 +9037,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c filename = nm_strstrip (filename_ask); } else { g_string_printf (nmc->return_text, _("Error: No arguments provided.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } @@ -9048,7 +9054,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if ( argc == 1 @@ -9069,7 +9076,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc == 1 && nmc->complete) nmc->return_value = NMC_RESULT_COMPLETE_FILE; @@ -9079,22 +9087,25 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c g_printerr (_("Warning: 'file' already specified, ignoring extra one.\n")); } else { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } next_arg (nmc, &argc, &argv, NULL); } if (nmc->complete) - return nmc->return_value; + return; if (!type) { g_string_printf (nmc->return_text, _("Error: 'type' argument is required.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (!filename) { g_string_printf (nmc->return_text, _("Error: 'file' argument is required.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (nm_streq (type, "wireguard")) @@ -9103,7 +9114,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c service_type = nm_vpn_plugin_info_list_find_service_type (nm_vpn_get_plugin_infos (), type); if (!service_type) { g_string_printf (nmc->return_text, _("Error: failed to find VPN plugin for %s."), type); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } /* Import VPN configuration */ @@ -9111,7 +9123,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c if (!plugin) { g_string_printf (nmc->return_text, _("Error: failed to load VPN plugin: %s."), error->message); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } connection = nm_vpn_editor_plugin_import (plugin, filename, &error); @@ -9120,7 +9133,8 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c if (!connection) { g_string_printf (nmc->return_text, _("Error: failed to import '%s': %s."), filename, error->message); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } add_connection (nmc->client, @@ -9129,11 +9143,9 @@ do_connection_import (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c add_connection_cb, _add_connection_info_new (nmc, NULL, connection)); nmc->should_wait++; - - return nmc->return_value; } -static NMCResultCode +static void do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMConnection *connection = NULL; @@ -9174,7 +9186,7 @@ do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c } if (nmc->complete) - return nmc->return_value; + return; out_name = *argv; @@ -9244,7 +9256,6 @@ do_connection_export (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c finish: if (!out_name && path) unlink (path); - return nmc->return_value; } static char * @@ -9336,7 +9347,7 @@ nmcli_con_tab_completion (const char *text, int start, int end) return match_array; } -NMCResultCode +void nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { static const NMCCommand cmds[] = { @@ -9364,7 +9375,6 @@ nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const rl_attempted_completion_function = nmcli_con_tab_completion; nmc_do_cmd (nmc, cmds, *argv, argc, argv); - return nmc->return_value; } void diff --git a/clients/cli/devices.c b/clients/cli/devices.c index 5a1266e0a..4ea4e772e 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -1728,7 +1728,7 @@ nmc_device_state_to_color (NMDeviceState state) return NM_META_COLOR_DEVICE_UNKNOWN; } -static NMCResultCode +static void do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { GError *error = NULL; @@ -1738,11 +1738,12 @@ do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; if (argc) { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (!nmc->required_fields || g_ascii_strcasecmp (nmc->required_fields, "common") == 0) @@ -1762,13 +1763,12 @@ do_devices_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons &error)) { g_string_printf (nmc->return_text, _("Error: 'device status': %s"), error->message); g_error_free (error); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } - - return NMC_RESULT_SUCCESS; } -static NMCResultCode +static void do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_free_error GError *error = NULL; @@ -1783,16 +1783,18 @@ do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a device = get_device (nmc, &argc, &argv, &error); if (!device) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } if (argc) { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (nmc->complete) - return nmc->return_value; + return; show_device_info (device, nmc); } else { @@ -1812,8 +1814,6 @@ do_device_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a g_free (devices); } - - return nmc->return_value; } static gboolean @@ -2036,7 +2036,7 @@ connect_device_cb (GObject *client, GAsyncResult *result, gpointer user_data) g_timeout_add_seconds (nmc->timeout, timeout_cb, nmc); } -static NMCResultCode +static void do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device = NULL; @@ -2051,16 +2051,18 @@ do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons device = get_device (nmc, &argc, &argv, &error); if (!device) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } if (*argv) { g_string_printf (nmc->return_text, _("Error: extra argument not allowed: '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (nmc->complete) - return nmc->return_value; + return; /* * Use nowait_flag instead of should_wait, because exiting has to be postponed @@ -2091,8 +2093,6 @@ do_device_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons /* Start progress indication */ if (nmc->nmc_config.print_output == NMC_PRINT_PRETTY) progress_id = g_timeout_add (120, progress_cb, device); - - return nmc->return_value; } typedef struct { @@ -2206,7 +2206,7 @@ reapply_device_cb (GObject *object, GAsyncResult *result, gpointer user_data) } } -static NMCResultCode +static void do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device; @@ -2221,16 +2221,18 @@ do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons device = get_device (nmc, &argc, &argv, &error); if (!device) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } if (argc) { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (nmc->complete) - return nmc->return_value; + return; nmc->nowait_flag = (nmc->timeout == 0); nmc->should_wait++; @@ -2241,8 +2243,6 @@ do_device_reapply (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons /* Now reapply the connection to the device */ nm_device_reapply_async (device, NULL, 0, 0, NULL, reapply_device_cb, info); - - return nmc->return_value; } typedef struct { @@ -2323,7 +2323,7 @@ modify_get_applied_cb (GObject *object, nm_device_reapply_async (device, connection, version_id, 0, NULL, modify_reapply_cb, info); } -static NMCResultCode +static void do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device = NULL; @@ -2334,7 +2334,8 @@ do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const device = get_device (nmc, &argc, &argv, &error); if (!device) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } if (nmc->timeout == -1) @@ -2349,8 +2350,6 @@ do_device_modify (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const info->argv = nm_utils_strv_dup ((char **) argv, argc, TRUE); nm_device_get_applied_connection_async (device, 0, NULL, modify_get_applied_cb, info); - - return nmc->return_value; } static void @@ -2390,7 +2389,7 @@ disconnect_device_cb (GObject *object, GAsyncResult *result, gpointer user_data) } } -static NMCResultCode +static void do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device; @@ -2404,7 +2403,7 @@ do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char * next_arg (nmc, &argc, &argv, NULL); queue = get_device_list (nmc, argc, argv); if (!queue) - return nmc->return_value; + return; if (nmc->complete) goto out; queue = g_slist_reverse (queue); @@ -2435,7 +2434,6 @@ do_devices_disconnect (const NMCCommand *cmd, NmCli *nmc, int argc, const char * out: g_slist_free (queue); - return nmc->return_value; } static void @@ -2462,7 +2460,7 @@ delete_device_cb (GObject *object, GAsyncResult *result, gpointer user_data) } } -static NMCResultCode +static void do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device; @@ -2476,7 +2474,7 @@ do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons next_arg (nmc, &argc, &argv, NULL); queue = get_device_list (nmc, argc, argv); if (!queue) - return nmc->return_value; + return; if (nmc->complete) goto out; queue = g_slist_reverse (queue); @@ -2500,10 +2498,9 @@ do_devices_delete (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons out: g_slist_free (queue); - return nmc->return_value; } -static NMCResultCode +static void do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { #define DEV_SET_AUTOCONNECT 0 @@ -2526,12 +2523,14 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar device = get_device (nmc, &argc, &argv, &error); if (!device) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } if (!argc) { g_string_printf (nmc->return_text, _("Error: No property specified.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } i = 0; @@ -2546,14 +2545,16 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc == 1 && nmc->complete) nmc_complete_bool (*argv); if (!nmc_string_to_bool (*argv, &flag, &error)) { g_string_printf (nmc->return_text, _("Error: 'managed': %s."), error->message); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } values[DEV_SET_MANAGED].idx = ++i; values[DEV_SET_MANAGED].value = flag; @@ -2563,26 +2564,29 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc == 1 && nmc->complete) nmc_complete_bool (*argv); if (!nmc_string_to_bool (*argv, &flag, &error)) { g_string_printf (nmc->return_text, _("Error: 'autoconnect': %s."), error->message); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } values[DEV_SET_AUTOCONNECT].idx = ++i; values[DEV_SET_AUTOCONNECT].value = flag; } else { g_string_printf (nmc->return_text, _("Error: property '%s' is not known."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } while (next_arg (nmc, &argc, &argv, NULL) == 0); if (nmc->complete) - return nmc->return_value; + return; /* when multiple properties are specified, set them in the order as they * are specified on the command line. */ @@ -2596,8 +2600,6 @@ do_device_set (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar nm_device_set_autoconnect (device, values[DEV_SET_AUTOCONNECT].value); if (values[DEV_SET_MANAGED].idx >= 0) nm_device_set_managed (device, values[DEV_SET_MANAGED].value); - - return nmc->return_value; } static void @@ -2662,11 +2664,11 @@ device_removed (NMClient *client, NMDevice *device, NmCli *nmc) device_unwatch (nmc, device); } -static NMCResultCode +static void do_devices_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { if (nmc->complete) - return nmc->return_value; + return; next_arg (nmc, &argc, &argv, NULL); if (argc == 0) { @@ -2691,7 +2693,6 @@ do_devices_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con } g_signal_connect (nmc->client, NM_CLIENT_DEVICE_REMOVED, G_CALLBACK (device_removed), nmc); - return nmc->return_value; } /* @@ -3033,7 +3034,7 @@ nmc_complete_bssid (NMClient *client, const char *ifname, const char *bssid_pref complete_aps (devices, ifname, bssid_prefix, NULL); } -static NMCResultCode +static void do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { GError *error = NULL; @@ -3061,7 +3062,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ifname = *argv; if (argc == 1 && nmc->complete) @@ -3073,7 +3075,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } bssid_user = *argv; if (argc == 1 && nmc->complete) @@ -3084,7 +3087,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } rescan = *argv; if (argc == 1 && nmc->complete) @@ -3097,7 +3101,7 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co } if (nmc->complete) - return nmc->return_value; + return; if (!nmc->required_fields || g_ascii_strcasecmp (nmc->required_fields, "common") == 0) fields_str = NMC_FIELDS_DEV_WIFI_LIST_COMMON; @@ -3111,12 +3115,14 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co if (error) { g_string_printf (nmc->return_text, _("Error: 'device wifi': %s"), error->message); g_error_free (error); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc) { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (NM_IN_STRSET (rescan, NULL, "auto")) @@ -3127,7 +3133,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co rescan_cutoff_msec = nm_utils_get_timestamp_msec (); else { g_string_printf (nmc->return_text, _("Error: invalid rescan argument: '%s' not among [auto, no, yes]"), rescan); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ifname_handled = (ifname == NULL); @@ -3176,7 +3183,8 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co _("Error: Device '%s' is not a Wi-Fi device."), ifname); } - return NMC_RESULT_ERROR_NOT_FOUND; + nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; + return; } if (!devices[0]) { @@ -3184,9 +3192,9 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; g_string_printf (nmc->return_text, _("Error: Access point with bssid '%s' not found."), bssid_user); - return NMC_RESULT_ERROR_NOT_FOUND; + nmc->return_value = NMC_RESULT_ERROR_NOT_FOUND; } - return NMC_RESULT_SUCCESS; + return; } scan_info = g_slice_new (ScanInfo); @@ -3235,7 +3243,6 @@ do_device_wifi_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co scan_info->devices = g_steal_pointer (&devices); nmc->should_wait++; - return nmc->return_value; } static void @@ -3299,7 +3306,7 @@ save_and_activate_connection (NmCli *nmc, } } -static NMCResultCode +static void do_device_wifi_connect (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device = NULL; @@ -3710,8 +3717,6 @@ finish: g_byte_array_free (bssid2_arr, TRUE); g_free (ssid_ask); nm_free_secret (passwd_ask); - - return nmc->return_value; } static GBytes * @@ -3940,7 +3945,7 @@ create_hotspot_conn (const GPtrArray *connections, return connection; } -static NMCResultCode +static void do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { const char *ifname = NULL; @@ -3978,7 +3983,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ifname = *argv; if (argc == 1 && nmc->complete) @@ -3988,7 +3994,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } con_name = *argv; } else if (strcmp (*argv, "ssid") == 0) { @@ -3996,11 +4003,13 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (strlen (*argv) > 32) { g_string_printf (nmc->return_text, _("Error: ssid is too long.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ssid_bytes = g_bytes_new (*argv, strlen (*argv)); } else if (strcmp (*argv, "band") == 0) { @@ -4008,7 +4017,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } band = *argv; if (argc == 1 && nmc->complete) @@ -4016,14 +4026,16 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char if (strcmp (band, "a") && strcmp (band, "bg")) { g_string_printf (nmc->return_text, _("Error: band argument value '%s' is invalid; use 'a' or 'bg'."), band); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } 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; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } channel = *argv; } else if (strcmp (*argv, "password") == 0) { @@ -4031,7 +4043,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } password = *argv; /* --show-password is deprecated in favour of global --show-secrets option */ @@ -4040,7 +4053,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char show_password = TRUE; } else { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } next_arg (nmc, &argc, &argv, NULL); @@ -4048,7 +4062,7 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char show_password = nmc->nmc_config.show_secrets || show_password; if (nmc->complete) - return nmc->return_value; + return; /* Verify band and channel parameters */ if (!channel) { @@ -4062,13 +4076,15 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char if (!band) { g_string_printf (nmc->return_text, _("Error: channel requires band too.")); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if ( !nmc_string_to_uint (channel, TRUE, 1, 5825, &value) || !nm_utils_wifi_is_channel_valid (value, band)) { g_string_printf (nmc->return_text, _("Error: channel '%s' not valid for band '%s'."), channel, band); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } channel_int = value; @@ -4081,7 +4097,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char g_string_printf (nmc->return_text, _("Error: Device '%s' is not a Wi-Fi device."), ifname); else g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found.")); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } /* Check device supported mode */ @@ -4093,7 +4110,8 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char else { g_string_printf (nmc->return_text, _("Error: Device '%s' supports neither AP nor Ad-Hoc mode."), nm_device_get_iface (device)); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } connections = nm_client_get_connections (nmc->client); @@ -4109,13 +4127,14 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char if (password || !NM_IS_REMOTE_CONNECTION (connection)) { s_wsec = nm_connection_get_setting_wireless_security (connection); - g_return_val_if_fail (s_wsec, NMC_RESULT_ERROR_UNKNOWN); + g_return_if_fail (s_wsec); if (!set_wireless_security_for_hotspot (s_wsec, wifi_mode, caps, password, show_password, &error)) { g_object_unref (connection); g_string_printf (nmc->return_text, _("Error: Invalid 'password': %s."), error->message); g_clear_error (&error); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } } @@ -4124,8 +4143,6 @@ do_device_wifi_hotspot (const NMCCommand *cmd, NmCli *nmc, int argc, const char nmc->should_wait++; save_and_activate_connection (nmc, device, connection, TRUE, NULL); - - return nmc->return_value; } static void @@ -4143,7 +4160,7 @@ request_rescan_cb (GObject *object, GAsyncResult *result, gpointer user_data) quit (); } -static NMCResultCode +static void do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device; @@ -4167,14 +4184,14 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char * if (ifname) { g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1)); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; - goto finish; + return; } 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; + return; } ifname = *argv; if (argc == 1 && nmc->complete) @@ -4185,20 +4202,20 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char * 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; + return; } g_ptr_array_add (ssids, (gpointer) *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; + return; } next_arg (nmc, &argc, &argv, NULL); } if (nmc->complete) - goto finish; + return; /* Find Wi-Fi device to scan on. When no ifname is provided, the first Wi-Fi is used. */ device = find_wifi_device_by_iface (devices, ifname, NULL); @@ -4209,7 +4226,7 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char * else g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found.")); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; - goto finish; + return; } if (ssids->len) { @@ -4233,8 +4250,6 @@ do_device_wifi_rescan (const NMCCommand *cmd, NmCli *nmc, int argc, const char * NULL, request_rescan_cb, nmc); nmc->should_wait++; -finish: - return nmc->return_value; } static void @@ -4373,7 +4388,7 @@ wifi_show_device (const NmcConfig *nmc_config, NMDevice *device, GError **error) return TRUE; } -static NMCResultCode +static void do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { const char *ifname = NULL; @@ -4394,7 +4409,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const g_string_printf (nmc->return_text, _("Error: '%s' cannot repeat."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } argc--; argv++; @@ -4402,7 +4418,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } ifname = *argv; if (argc == 1 && nmc->complete) @@ -4411,14 +4428,15 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } next_arg (nmc, &argc, &argv, NULL); } if (nmc->complete) - return nmc->return_value; + return; for (i = 0; devices[i]; i++) { if (ifname && g_strcmp0 (nm_device_get_iface (devices[i]), ifname) != 0) @@ -4430,7 +4448,8 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const if (ifname) { g_string_printf (nmc->return_text, _("%s"), error->message); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } g_clear_error (&error); } @@ -4442,10 +4461,9 @@ do_device_wifi_show_password (const NMCCommand *cmd, NmCli *nmc, int argc, const if (!found) { g_string_printf (nmc->return_text, _("Error: No Wi-Fi device found.")); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; + return; } - - return nmc->return_value; } static NMCCommand device_wifi_cmds[] = { @@ -4457,13 +4475,11 @@ static NMCCommand device_wifi_cmds[] = { { NULL, do_device_wifi_list, NULL, TRUE, TRUE }, }; -static NMCResultCode +static void do_device_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); nmc_do_cmd (nmc, device_wifi_cmds, *argv, argc, argv); - - return nmc->return_value; } static int @@ -4551,7 +4567,7 @@ show_device_lldp_list (NMDevice *device, NmCli *nmc, const char *fields_str, int return neighbors->len; } -static NMCResultCode +static void do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice *device = NULL; @@ -4570,17 +4586,20 @@ do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } device = get_device (nmc, &argc, &argv, &error); if (!device) { g_string_printf (nmc->return_text, _("Error: %s."), error->message); - return error->code; + nmc->return_value = error->code; + return; } } else { g_string_printf (nmc->return_text, _("Error: invalid extra argument '%s'."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } next_arg (nmc, &argc, &argv, NULL); @@ -4596,25 +4615,22 @@ do_device_lldp_list (const NMCCommand *cmd, NmCli *nmc, int argc, const char *co if (error) { g_string_printf (nmc->return_text, _("Error: 'device lldp list': %s"), error->message); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (nmc->complete) - return nmc->return_value; + return; if (device) { show_device_lldp_list (device, nmc, fields_str, &counter); } else { - NMDevice **devices = nmc_get_devices_sorted (nmc->client); - int i; + gs_free NMDevice **devices = nmc_get_devices_sorted (nmc->client); + guint i; for (i = 0; devices[i]; i++) show_device_lldp_list (devices[i], nmc, fields_str, &counter); - - g_free (devices); } - - return nmc->return_value; } static NMCCommand device_lldp_cmds[] = { @@ -4622,7 +4638,7 @@ static NMCCommand device_lldp_cmds[] = { { NULL, do_device_lldp_list, NULL, TRUE, TRUE }, }; -static NMCResultCode +static void do_device_lldp (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { if (!nmc->mode_specified) @@ -4630,8 +4646,6 @@ do_device_lldp (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*a next_arg (nmc, &argc, &argv, NULL); nmc_do_cmd (nmc, device_lldp_cmds, *argv, argc, argv); - - return nmc->return_value; } static gboolean @@ -4676,7 +4690,7 @@ nmcli_device_tab_completion (const char *text, int start, int end) return match_array; } -NMCResultCode +void nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { static const NMCCommand cmds[] = { @@ -4701,7 +4715,6 @@ nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char rl_attempted_completion_function = (rl_completion_func_t *) nmcli_device_tab_completion; nmc_do_cmd (nmc, cmds, *argv, argc, argv); - return nmc->return_value; } void diff --git a/clients/cli/general.c b/clients/cli/general.c index daf69889a..747203bb0 100644 --- a/clients/cli/general.c +++ b/clients/cli/general.c @@ -489,15 +489,14 @@ show_nm_status (NmCli *nmc, const char *pretty_header_name, const char *print_fl return TRUE; } -static NMCResultCode +static void do_general_status (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; show_nm_status (nmc, NULL, NULL); - return nmc->return_value; } static gboolean @@ -608,7 +607,7 @@ show_nm_permissions (NmCli *nmc) return TRUE; } -static NMCResultCode +static void do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gs_unref_variant GVariant *result = NULL; @@ -622,7 +621,7 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons if (nmc->complete) { if (argc == 0) - return nmc->return_value; + return; if (argc == 1) { values = nm_utils_enum_get_values (nm_manager_reload_flags_get_type (), @@ -630,7 +629,7 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons NM_MANAGER_RELOAD_FLAG_ALL); nmc_complete_strv (*argv, -1, values); } - return nmc->return_value; + return; } if (argc > 0) { @@ -643,7 +642,8 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons _("Error: invalid reload flag '%s'. Allowed flags are: %s"), err_token, joined); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } argc--; argv++; @@ -651,7 +651,8 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons if (argc > 0) { g_string_printf (nmc->return_text, _("Error: extra argument '%s'"), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } result = nmc_dbus_call_sync (nmc, @@ -666,21 +667,18 @@ do_general_reload (const NMCCommand *cmd, NmCli *nmc, int argc, const char *cons g_string_printf (nmc->return_text, _("Error: failed to reload: %s"), nmc_error_get_simple_message (error)); - return NMC_RESULT_ERROR_UNKNOWN; + nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; } - - return nmc->return_value; } -static NMCResultCode +static void do_general_permissions (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; show_nm_permissions (nmc); - return nmc->return_value; } static void @@ -746,13 +744,13 @@ _set_logging_cb (GObject *object, GAsyncResult *result, gpointer user_data) quit (); } -static NMCResultCode +static void do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (argc == 0) { if (nmc->complete) - return nmc->return_value; + return; show_general_logging (nmc); } else { @@ -769,7 +767,8 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc == 1 && nmc->complete) { nmc_complete_strings_nocase (*argv, "TRACE", "DEBUG", "INFO", "WARN", @@ -781,7 +780,8 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con argv++; if (!argc) { g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1)); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } if (argc == 1 && nmc->complete) { nmc_complete_strings_nocase (*argv, "PLATFORM", "RFKILL", "ETHER", "WIFI", "BT", @@ -795,12 +795,13 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con domains = *argv; } else { g_string_printf (nmc->return_text, _("Error: property '%s' is not known."), *argv); - return NMC_RESULT_ERROR_USER_INPUT; + nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; + return; } } while (next_arg (nmc, &argc, &argv, NULL) == 0); if (nmc->complete) - return nmc->return_value; + return; nmc->should_wait++; nm_client_dbus_call (nmc->client, @@ -816,57 +817,52 @@ do_general_logging (const NMCCommand *cmd, NmCli *nmc, int argc, const char *con _set_logging_cb, nmc); } - - return nmc->return_value; } static void save_hostname_cb (GObject *object, GAsyncResult *result, gpointer user_data) { - NmCli *nmc = (NmCli *) user_data; - GError *error = NULL; + NmCli *nmc = user_data; + gs_free_error GError *error = NULL; nm_client_save_hostname_finish (NM_CLIENT (object), result, &error); if (error) { g_string_printf (nmc->return_text, _("Error: failed to set hostname: %s"), error->message); nmc->return_value = NMC_RESULT_ERROR_UNKNOWN; - g_error_free (error); } + quit (); } -static NMCResultCode +static void do_general_hostname (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { + const char *hostname; + next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; if (argc == 0) { /* no arguments -> get hostname */ - char *hostname = NULL; + gs_free char *s = NULL; - g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &hostname, NULL); - if (hostname) - g_print ("%s\n", hostname); - g_free (hostname); - } else { - /* hostname provided -> set it */ - const char *hostname = *argv; - - if (next_arg (nmc, &argc, &argv, NULL) == 0) - g_print ("Warning: ignoring extra garbage after '%s' hostname\n", hostname); - - nmc->should_wait++; - nm_client_save_hostname_async (nmc->client, hostname, NULL, save_hostname_cb, nmc); + g_object_get (nmc->client, NM_CLIENT_HOSTNAME, &s, NULL); + if (s) + g_print ("%s\n", s); + return; } - return nmc->return_value; + hostname = *argv; + if (next_arg (nmc, &argc, &argv, NULL) == 0) + g_print ("Warning: ignoring extra garbage after '%s' hostname\n", hostname); + nmc->should_wait++; + nm_client_save_hostname_async (nmc->client, hostname, NULL, save_hostname_cb, nmc); } -NMCResultCode +void nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { static const NMCCommand cmds[] = { @@ -883,7 +879,6 @@ nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const cha nmc_start_polkit_agent_start_try (nmc); nmc_do_cmd (nmc, cmds, *argv, argc, argv); - return nmc->return_value; } static gboolean @@ -949,7 +944,7 @@ _do_networking_on_off_cb (GObject *object, GAsyncResult *result, gpointer user_d quit (); } -static NMCResultCode +static void do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gboolean enable = nm_streq (cmd->cmd, "on"); @@ -957,7 +952,7 @@ do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; nmc_start_polkit_agent_start_try (nmc); @@ -972,18 +967,16 @@ do_networking_on_off (const NMCCommand *cmd, NmCli *nmc, int argc, const char *c NULL, _do_networking_on_off_cb, nmc); - - return nmc->return_value; } -static NMCResultCode +static void do_networking_connectivity (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) { if (argc == 1) nmc_complete_strings (*argv, "check"); - return nmc->return_value; + return; } if (!argc) { @@ -1006,23 +999,19 @@ do_networking_connectivity (const NMCCommand *cmd, NmCli *nmc, int argc, const c g_string_printf (nmc->return_text, _("Error: 'networking' command '%s' is not valid."), *argv); nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; } - - return nmc->return_value; } -static NMCResultCode +static void do_networking_show (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; nmc_switch_show (nmc, NMC_FIELDS_NM_NETWORKING, N_("Networking")); - - return nmc->return_value; } -NMCResultCode +void nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { static const NMCCommand cmds[] = { @@ -1034,10 +1023,9 @@ nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const next_arg (nmc, &argc, &argv, NULL); nmc_do_cmd (nmc, cmds, *argv, argc, argv); - return nmc->return_value; } -static NMCResultCode +static void do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gboolean enable_flag; @@ -1045,7 +1033,7 @@ do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*arg next_arg (nmc, &argc, &argv, NULL); if (argc == 0) { if (nmc->complete) - return nmc->return_value; + return; /* no argument, show all radio switches */ show_nm_status (nmc, N_("Radio switches"), NMC_FIELDS_NM_STATUS_RADIO); @@ -1053,18 +1041,16 @@ do_radio_all (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*arg if (nmc->complete) { if (argc == 1) nmc_complete_bool (*argv); - return nmc->return_value; + return; } if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag)) - return nmc->return_value; + return; 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); } - - return nmc->return_value; } static void @@ -1082,7 +1068,7 @@ _do_radio_wifi_cb (GObject *object, GAsyncResult *result, gpointer user_data) quit (); } -static NMCResultCode +static void do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gboolean enable_flag; @@ -1090,7 +1076,7 @@ do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar next_arg (nmc, &argc, &argv, NULL); if (argc == 0) { if (nmc->complete) - return nmc->return_value; + return; /* no argument, show current Wi-Fi state */ nmc_switch_show (nmc, NMC_FIELDS_NM_WIFI, N_("Wi-Fi radio switch")); @@ -1098,10 +1084,10 @@ do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar if (nmc->complete) { if (argc == 1) nmc_complete_bool (*argv); - return nmc->return_value; + return; } if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag)) - return nmc->return_value; + return; nmc_start_polkit_agent_start_try (nmc); @@ -1116,11 +1102,9 @@ do_radio_wifi (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar _do_radio_wifi_cb, nmc); } - - return nmc->return_value; } -static NMCResultCode +static void do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { gboolean enable_flag; @@ -1128,7 +1112,7 @@ do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar next_arg (nmc, &argc, &argv, NULL); if (argc == 0) { if (nmc->complete) - return nmc->return_value; + return; /* no argument, show current WWAN (mobile broadband) state */ nmc_switch_show (nmc, NMC_FIELDS_NM_WWAN, N_("WWAN radio switch")); @@ -1136,18 +1120,16 @@ do_radio_wwan (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*ar if (nmc->complete) { if (argc == 1) nmc_complete_bool (*argv); - return nmc->return_value; + return; } if (!nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag)) - return nmc->return_value; + return; nm_client_wwan_set_enabled (nmc->client, enable_flag); } - - return nmc->return_value; } -NMCResultCode +void nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { static const NMCCommand cmds[] = { @@ -1162,7 +1144,6 @@ nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char nmc_start_polkit_agent_start_try (nmc); nmc_do_cmd (nmc, cmds, *argv, argc, argv); - return nmc->return_value; } static void @@ -1402,7 +1383,7 @@ ac_overview (NmCli *nmc, NMActiveConnection *ac) g_string_free (outbuf, TRUE); } -NMCResultCode +void nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { NMDevice **devices; @@ -1513,17 +1494,15 @@ nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const ch "\"nmcli connection show\" to get an overview on active connection profiles.\n" "\n" "Consult nmcli(1) and nmcli-examples(7) manual pages for complete usage details.\n")); - - return NMC_RESULT_SUCCESS; } -NMCResultCode +void nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv) { next_arg (nmc, &argc, &argv, NULL); if (nmc->complete) - return nmc->return_value; + return; if (argc > 0) { if (!nmc_arg_is_help (*argv)) { @@ -1532,7 +1511,7 @@ nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const cha } usage_monitor (); - return nmc->return_value; + return; } if (!nm_client_get_nm_running (nmc->client)) { @@ -1559,6 +1538,4 @@ nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const cha monitor_devices (nmc); monitor_connections (nmc); - - return NMC_RESULT_SUCCESS; } diff --git a/clients/cli/nmcli.h b/clients/cli/nmcli.h index 4a0b166ce..c8d27b3db 100644 --- a/clients/cli/nmcli.h +++ b/clients/cli/nmcli.h @@ -170,20 +170,20 @@ struct _NMCCommand; typedef struct _NMCCommand { const char *cmd; - NMCResultCode (*func) (const struct _NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); + void (*func) (const struct _NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); void (*usage) (void); bool needs_client; bool needs_nm_running; } NMCCommand; -NMCResultCode nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); -NMCResultCode nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_agent (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_general (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_networking (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_radio (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_monitor (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_overview (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_connection (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); +void nmc_command_func_device (const NMCCommand *cmd, NmCli *nmc, int argc, const char *const*argv); /*****************************************************************************/