From 394eebed6656dfc2e56a79500b602023000ac415 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Mon, 25 Feb 2008 20:30:24 +0000 Subject: lpd: spool mode added by Vladimir lpr: more robust error reporting *: introduce and use xchroot libbb: full_read/write now will report partial data counts prior to error isdirectory.c: style fixes lpd_main 249 486 +237 xchroot - 29 +29 get_response_or_say_and_die 110 139 +29 full_write 52 60 +8 full_read 55 63 +8 static.newline 1 - -1 switch_root_main 404 400 -4 chpst_main 1089 1079 -10 getopt32 1370 1359 -11 chroot_main 115 101 -14 ------------------------------------------------------------------------------ (add/remove: 1/1 grow/shrink: 4/4 up/down: 311/-40) Total: 271 bytes text data bss dec hex filename 798472 728 7484 806684 c4f1c busybox_old 798775 728 7484 806987 c504b busybox_unstripped --- libbb/full_write.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libbb/full_write.c') diff --git a/libbb/full_write.c b/libbb/full_write.c index 7bbacb8ac..7503c8b42 100644 --- a/libbb/full_write.c +++ b/libbb/full_write.c @@ -24,8 +24,14 @@ ssize_t full_write(int fd, const void *buf, size_t len) while (len) { cc = safe_write(fd, buf, len); - if (cc < 0) + if (cc < 0) { + if (total) { + /* we already wrote some! */ + /* user can do another write to know the error code */ + return total; + } return cc; /* write() returns -1 on failure. */ + } total += cc; buf = ((const char *)buf) + cc; -- cgit v1.2.3