about 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/connections.c11
-rw-r--r--clients/cli/devices.c4
-rw-r--r--clients/cli/general.c2
-rw-r--r--clients/cli/nmcli.c18
-rw-r--r--clients/cli/settings.c4
-rw-r--r--clients/cli/utils.c12
7 files changed, 37 insertions, 22 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/connections.c b/clients/cli/connections.c
index c05a9e82..83b1f28a 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -14,7 +14,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  *
- * Copyright 2010 - 2015 Red Hat, Inc.
+ * Copyright 2010 - 2017 Red Hat, Inc.
  */
 
 #include "nm-default.h"
@@ -146,7 +146,8 @@ const NmcMetaGenericInfo *const nmc_fields_con_active_details_general[] = {
                                          NM_SETTING_MACSEC_SETTING_NAME"," \
                                          NM_SETTING_MACVLAN_SETTING_NAME"," \
                                          NM_SETTING_VXLAN_SETTING_NAME"," \
-                                         NM_SETTING_PROXY_SETTING_NAME
+                                         NM_SETTING_PROXY_SETTING_NAME"," \
+                                         NM_SETTING_TC_CONFIG_SETTING_NAME
                                          // NM_SETTING_DUMMY_SETTING_NAME
                                          // NM_SETTING_WIMAX_SETTING_NAME
 
@@ -2656,7 +2657,7 @@ do_connection_down (NmCli *nmc, int argc, char **argv)
 		const GPtrArray *connections;
 		const char *selector = NULL;
 
-		if (arg_num == 1)
+		if (arg_num == 1 && nmc->complete)
 			nmc_complete_strings (*arg_ptr, "id", "uuid", "path", "apath", NULL);
 
 		if (   strcmp (*arg_ptr, "id") == 0
@@ -7569,6 +7570,8 @@ editor_menu_main (NmCli *nmc, NMConnection *connection, const char *connection_t
 	g_free (menu_ctx.valid_props_str);
 	g_weak_ref_clear (&weak);
 
+	quit ();
+
 	/* Save history file */
 	save_history_cmds (nm_connection_get_uuid (connection));
 
@@ -8605,7 +8608,7 @@ do_connection_export (NmCli *nmc, int argc, char **argv)
 			nmc->return_value = NMC_RESULT_ERROR_UNKNOWN;
 			goto finish;
 		}
-		close (fd);
+		nm_close (fd);
 		path = tmpfile;
 	}
 
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/general.c b/clients/cli/general.c
index 5ae31e1b..7ac6b22c 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -743,7 +743,7 @@ do_general_logging (NmCli *nmc, int argc, char **argv)
 					                             "AGENTS", "SETTINGS", "SUSPEND", "CORE", "DEVICE", "OLPC",
 					                             "INFINIBAND", "FIREWALL", "ADSL", "BOND", "VLAN", "BRIDGE",
 					                             "DBUS_PROPS", "TEAM", "CONCHECK", "DCB", "DISPATCH", "AUDIT",
-					                             "SYSTEMD", "VPN_PLUGIN", "PROXY", NULL);
+					                             "SYSTEMD", "VPN_PLUGIN", "PROXY", "TC", NULL);
 				}
 				domains = *argv;
 			} else {
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);
 
diff --git a/clients/cli/settings.c b/clients/cli/settings.c
index e0db1b5b..69275aad 100644
--- a/clients/cli/settings.c
+++ b/clients/cli/settings.c
@@ -371,8 +371,12 @@ _env_warn_fcn_handle (const NMMetaEnvironment *environment,
                       const char *fmt_l10n, /* the untranslated format string, but it is marked for translation using N_(). */
                       va_list ap)
 {
+	NmCli *nmc = environment_user_data;
 	gs_free char *m = NULL;
 
+	if (nmc->complete)
+		return;
+
 	NM_PRAGMA_WARNING_DISABLE("-Wformat-nonliteral")
 	m = g_strdup_vprintf (_(fmt_l10n), ap);
 	NM_PRAGMA_WARNING_REENABLE
diff --git a/clients/cli/utils.c b/clients/cli/utils.c
index 570bfb98..f20e24ce 100644
--- a/clients/cli/utils.c
+++ b/clients/cli/utils.c
@@ -1504,16 +1504,16 @@ nmc_terminal_spawn_pager (const NmcConfig *nmc_config)
 	nm_cli.pager_pid = fork ();
 	if (nm_cli.pager_pid == -1) {
 		g_printerr (_("Failed to fork pager: %s\n"), strerror (errno));
-		close (fd[0]);
-		close (fd[1]);
+		nm_close (fd[0]);
+		nm_close (fd[1]);
 		return;
 	}
 
 	/* In the child start the pager */
 	if (nm_cli.pager_pid == 0) {
 		dup2 (fd[0], STDIN_FILENO);
-		close (fd[0]);
-		close (fd[1]);
+		nm_close (fd[0]);
+		nm_close (fd[1]);
 
 		setenv ("LESS", "FRSXMK", 1);
 		setenv ("LESSCHARSET", "utf-8", 1);
@@ -1553,8 +1553,8 @@ nmc_terminal_spawn_pager (const NmcConfig *nmc_config)
 	if (dup2 (fd[1], STDERR_FILENO) < 0)
 		g_printerr (_("Failed to duplicate pager pipe: %s\n"), strerror (errno));
 
-	close (fd[0]);
-	close (fd[1]);
+	nm_close (fd[0]);
+	nm_close (fd[1]);
 }
 
 /*****************************************************************************/