From: Christian Brauner Date: Wed, 28 Feb 2018 11:42:31 +0000 (+0100) Subject: terminal: lxc_terminal_stdin_cb() X-Git-Tag: lxc-3.0.0.beta1~4^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=150852928a0bd951184223567ead4cd3f7da3a11;p=thirdparty%2Flxc.git terminal: lxc_terminal_stdin_cb() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/terminal.c b/src/lxc/terminal.c index 2996206cc..7423b70bd 100644 --- a/src/lxc/terminal.c +++ b/src/lxc/terminal.c @@ -963,22 +963,24 @@ int lxc_terminal_set_stdfds(int fd) } int lxc_terminal_stdin_cb(int fd, uint32_t events, void *cbdata, - struct lxc_epoll_descr *descr) + struct lxc_epoll_descr *descr) { - struct lxc_terminal_state *ts = cbdata; + int ret; char c; + struct lxc_terminal_state *ts = cbdata; if (fd != ts->stdinfd) return LXC_MAINLOOP_CLOSE; - if (lxc_read_nointr(ts->stdinfd, &c, 1) <= 0) + ret = lxc_read_nointr(ts->stdinfd, &c, 1); + if (ret <= 0) return LXC_MAINLOOP_CLOSE; if (ts->escape >= 1) { /* we want to exit the terminal with Ctrl+a q */ if (c == ts->escape && !ts->saw_escape) { ts->saw_escape = 1; - return 0; + return LXC_MAINLOOP_CONTINUE; } if (c == 'q' && ts->saw_escape) @@ -987,10 +989,11 @@ int lxc_terminal_stdin_cb(int fd, uint32_t events, void *cbdata, ts->saw_escape = 0; } - if (lxc_write_nointr(ts->masterfd, &c, 1) <= 0) + ret = lxc_write_nointr(ts->masterfd, &c, 1); + if (ret <= 0) return LXC_MAINLOOP_CLOSE; - return 0; + return LXC_MAINLOOP_CONTINUE; } int lxc_terminal_master_cb(int fd, uint32_t events, void *cbdata,