From: Lennart Poettering Date: Tue, 15 May 2012 12:34:33 +0000 (+0200) Subject: tmpfiles: if we are supposed to write a string to a file, it's OK if we can't write... X-Git-Tag: v183~104 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03ad1136ba6ddaeca626aa24362dab764c7e2398;p=systemd tmpfiles: if we are supposed to write a string to a file, it's OK if we can't write the trailing newline --- diff --git a/src/shared/util.c b/src/shared/util.c index d6af9274..0b81e1c4 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -597,7 +597,8 @@ int write_one_line_file(const char *fn, const char *line) { assert(fn); assert(line); - if (!(f = fopen(fn, "we"))) + f = fopen(fn, "we"); + if (!f) return -errno; errno = 0; diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 23561785..2ee0601e 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -617,8 +617,13 @@ static int create_item(Item *i) { iovec[1].iov_len = 1; n = writev(fd, iovec, 2); - if (n < 0 || (size_t) n != l+1) { - log_error("Failed to write file %s: %s", i->path, n < 0 ? strerror(-n) : "Short"); + + /* It's OK if we don't write the trailing + * newline, hence we check for l, instead of + * l+1 here. Files in /sys often refuse + * writing of the trailing newline. */ + if (n < 0 || (size_t) n < l) { + log_error("Failed to write file %s: %s", i->path, n < 0 ? strerror(-n) : "Short write"); close_nointr_nofail(fd); return n < 0 ? n : -EIO; }