diff options
Diffstat (limited to 'clients/cli/agent.c')
| -rw-r--r-- | clients/cli/agent.c | 53 |
1 files changed, 18 insertions, 35 deletions
diff --git a/clients/cli/agent.c b/clients/cli/agent.c index b8a56d23..bc837c72 100644 --- a/clients/cli/agent.c +++ b/clients/cli/agent.c @@ -138,6 +138,9 @@ secrets_requested (NMSecretAgentSimple *agent, static NMCResultCode do_agent_secret (NmCli *nmc, int argc, char **argv) { + if (nmc->complete) + return nmc->return_value; + /* Create secret agent */ nmc->secret_agent = nm_secret_agent_simple_new ("nmcli-agent"); if (nmc->secret_agent) { @@ -160,6 +163,9 @@ do_agent_polkit (NmCli *nmc, int argc, char **argv) { GError *error = NULL; + if (nmc->complete) + return nmc->return_value; + /* Initialize polkit agent */ if (!nmc_polkit_agent_init (nmc, TRUE, &error)) { g_dbus_error_strip_remote_error (error); @@ -182,6 +188,9 @@ do_agent_all (NmCli *nmc, int argc, char **argv) { NMCResultCode secret_res; + if (nmc->complete) + return nmc->return_value; + /* Run both secret and polkit agent */ secret_res = do_agent_secret (nmc, argc, argv); if (secret_res != NMC_RESULT_SUCCESS) @@ -195,6 +204,14 @@ do_agent_all (NmCli *nmc, int argc, char **argv) return nmc->return_value; } +static const NMCCommand agent_cmds[] = { + {"secret", do_agent_secret, usage_agent_secret }, + {"polkit", do_agent_polkit, usage_agent_polkit }, + {"all", do_agent_all, usage_agent_all }, + {NULL, do_agent_all, usage } +}; + + NMCResultCode do_agent (NmCli *nmc, int argc, char **argv) { @@ -208,39 +225,5 @@ do_agent (NmCli *nmc, int argc, char **argv) return nmc->return_value; } - if (argc == 0) { - nmc->return_value = do_agent_all (nmc, 0, NULL); - } - - if (argc > 0) { - if (nmc_arg_is_help (*argv)) { - usage (); - goto usage_exit; - } else if (matches (*argv, "secret") == 0) { - if (nmc_arg_is_help (*(argv+1))) { - usage_agent_secret (); - goto usage_exit; - } - nmc->return_value = do_agent_secret (nmc, argc-1, argv+1); - } else if (matches (*argv, "polkit") == 0) { - if (nmc_arg_is_help (*(argv+1))) { - usage_agent_polkit (); - goto usage_exit; - } - nmc->return_value = do_agent_polkit (nmc, argc-1, argv+1); - } else if (matches (*argv, "all") == 0) { - if (nmc_arg_is_help (*(argv+1))) { - usage_agent_all (); - goto usage_exit; - } - nmc->return_value = do_agent_all (nmc, argc-1, argv+1); - } else { - usage (); - g_string_printf (nmc->return_text, _("Error: 'agent' command '%s' is not valid."), *argv); - nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; - } - } - -usage_exit: - return nmc->return_value; + return nmc_do_cmd (nmc, agent_cmds, *argv, argc, argv); } |