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 <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2016-09-05 15:20:10 +02:00
parent 76787a7e02
commit 9fd61be191

View File

@ -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)