summary refs log tree commit diff
path: root/clients/cli/agent.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2016-08-26 02:18:32 +0200
committerMichael Biebl <biebl@debian.org>2016-08-26 02:18:32 +0200
commit7514efc2f38c9ace4557d4e69d68e7d380389030 (patch)
tree7fb00fda86cfcc2ca377f191633a7cfdbfea7ca3 /clients/cli/agent.c
parentd6201f5d8daada3d64a0a3e0038e14eebec683ce (diff)
Imported Upstream version 1.4.0 upstream/1.4.0
Diffstat (limited to 'clients/cli/agent.c')
-rw-r--r--clients/cli/agent.c53
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);
 }