From: Christian Brauner Date: Sun, 29 Jul 2018 21:54:32 +0000 (+0200) Subject: log: handle EINTR in read() X-Git-Tag: lxc-2.0.10~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c66853b8bd78bff33417e2b5b96033c3a9757f8e;p=thirdparty%2Flxc.git log: handle EINTR in read() We don't want to link log.{c,h} against utils.{c,h} for the sake of our static builds init.lxc.static. This means lxc_write_nointr() will not be available. So handle it EINTR. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/log.c b/src/lxc/log.c index 6f3d2ecf9..03b88bf0f 100644 --- a/src/lxc/log.c +++ b/src/lxc/log.c @@ -201,7 +201,8 @@ static int log_append_logfile(const struct lxc_log_appender *appender, { char buffer[LXC_LOG_BUFFER_SIZE]; char date_time[LXC_LOG_TIME_SIZE]; - int n, ret; + int n; + ssize_t ret; int fd_to_use = -1; #ifndef NO_LXC_CONF @@ -243,7 +244,12 @@ static int log_append_logfile(const struct lxc_log_appender *appender, buffer[n] = '\n'; - return write(fd_to_use, buffer, n + 1); +again: + ret = write(fd_to_use, buffer, n + 1); + if (ret < 0 && errno == EINTR) + goto again; + + return ret; } static struct lxc_log_appender log_appender_stderr = {