diff options
-rw-r--r-- | libbb/xfuncs_printf.c | 12 |
1 files changed, 10 insertions, 2 deletions
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) | |||
235 | { | 235 | { |
236 | if (count) { | 236 | if (count) { |
237 | ssize_t size = full_write(fd, buf, count); | 237 | ssize_t size = full_write(fd, buf, count); |
238 | if ((size_t)size != count) | 238 | if ((size_t)size != count) { |
239 | bb_error_msg_and_die("short write"); | 239 | /* |
240 | * Two cases: write error immediately; | ||
241 | * or some writes succeeded, then we hit an error. | ||
242 | * In either case, errno is set. | ||
243 | */ | ||
244 | bb_perror_msg_and_die( | ||
245 | size >= 0 ? "short write" : "write error" | ||
246 | ); | ||
247 | } | ||
240 | } | 248 | } |
241 | } | 249 | } |
242 | void FAST_FUNC xwrite_str(int fd, const char *str) | 250 | void FAST_FUNC xwrite_str(int fd, const char *str) |