[lxc-devel] [lxc/master] console: fix console info message
brauner on Github
lxc-bot at linuxcontainers.org
Fri Nov 10 18:09:08 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 598 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20171110/0fcd3248/attachment.bin>
-------------- next part --------------
From 6834f805776414a3c67bde327b2ca71f52d27b20 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Fri, 10 Nov 2017 19:07:38 +0100
Subject: [PATCH] console: fix console info message
Now it will be displayed nicely formatted:
a1 login: chb at conventiont|~
> lxc console a1
Connected to tty 0
Type <Ctrl+a q> to exit the console, <Ctrl+a Ctrl+a> to enter Ctrl+a itself
Ubuntu 17.10 a1 console
a1 login:
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/console.c | 54 ++++++++++++++++++++++++++----------------------------
1 file changed, 26 insertions(+), 28 deletions(-)
diff --git a/src/lxc/console.c b/src/lxc/console.c
index 2d0836617..934e1d132 100644
--- a/src/lxc/console.c
+++ b/src/lxc/console.c
@@ -777,26 +777,9 @@ int lxc_console(struct lxc_container *c, int ttynum,
struct lxc_tty_state *ts;
int istty = 0;
- istty = isatty(stdinfd);
- if (istty) {
- ret = lxc_setup_tios(stdinfd, &oldtios);
- if (ret < 0)
- return -1;
- } else {
- INFO("File descriptor %d does not refer to a tty device", stdinfd);
- }
-
ttyfd = lxc_cmd_console(c->name, &ttynum, &masterfd, c->config_path);
- if (ttyfd < 0) {
- ret = ttyfd;
- goto restore_tios;
- }
-
- fprintf(stderr, "\n"
- "Connected to tty %1$d\n"
- "Type <Ctrl+%2$c q> to exit the console, "
- "<Ctrl+%2$c Ctrl+%2$c> to enter Ctrl+%2$c itself\n",
- ttynum, 'a' + escape - 1);
+ if (ttyfd < 0)
+ return -1;
ret = setsid();
if (ret < 0)
@@ -812,9 +795,12 @@ int lxc_console(struct lxc_container *c, int ttynum,
ts->winch_proxy_lxcpath = c->config_path;
ts->stdoutfd = stdoutfd;
+ istty = isatty(stdinfd);
if (istty) {
lxc_console_winsz(stdinfd, masterfd);
lxc_cmd_console_winch(ts->winch_proxy, ts->winch_proxy_lxcpath);
+ } else {
+ INFO("File descriptor %d does not refer to a tty device", stdinfd);
}
ret = lxc_mainloop_open(&descr);
@@ -846,14 +832,34 @@ int lxc_console(struct lxc_container *c, int ttynum,
goto close_mainloop;
}
+ fprintf(stderr, "\n"
+ "Connected to tty %1$d\n"
+ "Type <Ctrl+%2$c q> to exit the console, "
+ "<Ctrl+%2$c Ctrl+%2$c> to enter Ctrl+%2$c itself\n",
+ ttynum, 'a' + escape - 1);
+
+ if (istty) {
+ ret = lxc_setup_tios(stdinfd, &oldtios);
+ if (ret < 0)
+ goto close_mainloop;
+ }
+
ret = lxc_mainloop(&descr, -1);
if (ret < 0) {
ERROR("The mainloop returned an error");
- goto close_mainloop;
+ goto restore_tios;
}
ret = 0;
+restore_tios:
+ if (istty) {
+ istty = tcsetattr(stdinfd, TCSAFLUSH, &oldtios);
+ if (istty < 0)
+ WARN("%s - Failed to restore terminal properties",
+ strerror(errno));
+ }
+
close_mainloop:
lxc_mainloop_close(&descr);
@@ -864,13 +870,5 @@ int lxc_console(struct lxc_container *c, int ttynum,
close(masterfd);
close(ttyfd);
-restore_tios:
- if (istty) {
- istty = tcsetattr(stdinfd, TCSAFLUSH, &oldtios);
- if (istty < 0)
- WARN("%s - Failed to restore terminal properties",
- strerror(errno));
- }
-
return ret;
}
More information about the lxc-devel
mailing list