summary refs log tree commit diff
path: root/clients/cli
diff options
context:
space:
mode:
Diffstat (limited to 'clients/cli')
-rw-r--r--clients/cli/agent.c8
-rw-r--r--clients/cli/devices.c4
-rw-r--r--clients/cli/nmcli.c18
3 files changed, 19 insertions, 11 deletions
diff --git a/clients/cli/agent.c b/clients/cli/agent.c
index 656a5851..488b16f4 100644
--- a/clients/cli/agent.c
+++ b/clients/cli/agent.c
@@ -201,10 +201,16 @@ do_agent_all (NmCli *nmc, int argc, char **argv)
 
 	/* Run both secret and polkit agent */
 	secret_res = do_agent_secret (nmc, argc, argv);
-	if (secret_res != NMC_RESULT_SUCCESS)
+	if (secret_res != NMC_RESULT_SUCCESS) {
 		g_printerr ("%s\n", nmc->return_text->str);
+		g_string_truncate (nmc->return_text, 0);
+	}
 
 	nmc->return_value = do_agent_polkit (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;
diff --git a/clients/cli/devices.c b/clients/cli/devices.c
index 467ce427..da969fbe 100644
--- a/clients/cli/devices.c
+++ b/clients/cli/devices.c
@@ -1116,8 +1116,8 @@ show_device_info (NMDevice *device, NmCli *nmc)
 		                                   (const NMMetaAbstractInfo *const*) nmc_fields_dev_show_general,
 		                                   FALSE, NULL, NULL);
 
-		row = g_new0 (NmcOutputField, _NM_META_SETTING_TYPE_NUM + 1);
-		for (i = 0; i < _NM_META_SETTING_TYPE_NUM; i++)
+		row = g_new0 (NmcOutputField, G_N_ELEMENTS (nmc_fields_dev_show_general));
+		for (i = 0; i < G_N_ELEMENTS (nmc_fields_dev_show_general); i++)
 			row[i].info = (const NMMetaAbstractInfo *) &nmc_fields_dev_show_general[i];
 
 		print_required_fields (&nmc->nmc_config, NMC_OF_FLAG_MAIN_HEADER_ONLY,
diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c
index ee621ca3..f5a66cdd 100644
--- a/clients/cli/nmcli.c
+++ b/clients/cli/nmcli.c
@@ -454,15 +454,16 @@ signal_handler (gpointer user_data)
 		if (nmc_get_in_readline ()) {
 			nmcli_sigint = TRUE;
 		} else {
-			g_print (_("Error: nmcli terminated by signal %s (%d)\n"),
-			         strsignal (signo),
-			         signo);
+			nm_cli.return_value = 0x80 + signo;
+			g_string_printf (nm_cli.return_text, _("Error: nmcli terminated by signal %s (%d)"),
+			                 strsignal (signo), signo);
 			g_main_loop_quit (loop);
 		}
 		break;
 	case SIGTERM:
-		g_print (_("Error: nmcli terminated by signal %s (%d)\n"),
-		         strsignal (signo), signo);
+		nm_cli.return_value = 0x80 + signo;
+		g_string_printf (nm_cli.return_text, _("Error: nmcli terminated by signal %s (%d)"),
+		                 strsignal (signo), signo);
 		nmc_exit ();
 		break;
 	}
@@ -633,13 +634,14 @@ main (int argc, char *argv[])
 	/* Save terminal settings */
 	tcgetattr (STDIN_FILENO, &termios_orig);
 
-	g_unix_signal_add (SIGTERM, signal_handler, GINT_TO_POINTER (SIGTERM));
-	g_unix_signal_add (SIGINT, signal_handler, GINT_TO_POINTER (SIGINT));
-
 	nmc_value_transforms_register ();
 
 	nmc_init (&nm_cli);
 	loop = g_main_loop_new (NULL, FALSE);
+
+	g_unix_signal_add (SIGTERM, signal_handler, GINT_TO_POINTER (SIGTERM));
+	g_unix_signal_add (SIGINT, signal_handler, GINT_TO_POINTER (SIGINT));
+
 	if (process_command_line (&nm_cli, argc, argv))
 		g_main_loop_run (loop);