From: Denys Vlasenko Date: Mon, 5 Sep 2016 13:20:10 +0000 (+0200) Subject: libbb/xwrite: print errno on "short write" errors X-Git-Tag: 1_26_0~275 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=9fd61be191caf78138a50e9d6a465b39318f91c3;p=oweals%2Fbusybox.git libbb/xwrite: print errno on "short write" errors Lauri Kasanen: :: Over at TinyCore, we receive a huge number of questions of the type "I :: got "short write", what does it mean?". Mostly for the rpi port and when :: using bb wget. Signed-off-by: Denys Vlasenko --- diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index e9222f690..1b11caf6b 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -235,8 +235,16 @@ void FAST_FUNC xwrite(int fd, const void *buf, size_t count) { if (count) { ssize_t size = full_write(fd, buf, count); - if ((size_t)size != count) - bb_error_msg_and_die("short write"); + if ((size_t)size != count) { + /* + * Two cases: write error immediately; + * or some writes succeeded, then we hit an error. + * In either case, errno is set. + */ + bb_perror_msg_and_die( + size >= 0 ? "short write" : "write error" + ); + } } } void FAST_FUNC xwrite_str(int fd, const char *str)