aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libbb/full_read.c2
-rw-r--r--libbb/full_write.c2
-rw-r--r--libbb/xfuncs.c16
3 files changed, 8 insertions, 12 deletions
diff --git a/libbb/full_read.c b/libbb/full_read.c
index b5837d5bd..068d16698 100644
--- a/libbb/full_read.c
+++ b/libbb/full_read.c
@@ -24,7 +24,7 @@ ssize_t full_read(int fd, void *buf, size_t len)
24 24
25 total = 0; 25 total = 0;
26 26
27 while (len > 0) { 27 while (len) {
28 cc = safe_read(fd, buf, len); 28 cc = safe_read(fd, buf, len);
29 29
30 if (cc < 0) 30 if (cc < 0)
diff --git a/libbb/full_write.c b/libbb/full_write.c
index d812d04b4..563f4a851 100644
--- a/libbb/full_write.c
+++ b/libbb/full_write.c
@@ -23,7 +23,7 @@ ssize_t full_write(int fd, const void *buf, size_t len)
23 23
24 total = 0; 24 total = 0;
25 25
26 while (len > 0) { 26 while (len) {
27 cc = safe_write(fd, buf, len); 27 cc = safe_write(fd, buf, len);
28 28
29 if (cc < 0) 29 if (cc < 0)
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index d22cd279a..efc919491 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -113,24 +113,20 @@ int xopen3(const char *pathname, int flags, int mode)
113// Die with an error message if we can't read the entire buffer. 113// Die with an error message if we can't read the entire buffer.
114void xread(int fd, void *buf, size_t count) 114void xread(int fd, void *buf, size_t count)
115{ 115{
116 while (count) { 116 if (count) {
117 ssize_t size = safe_read(fd, buf, count); 117 ssize_t size = full_read(fd, buf, count);
118 if (size < 1) 118 if (size != count)
119 bb_error_msg_and_die("short read"); 119 bb_error_msg_and_die("short read");
120 count -= size;
121 buf = ((char *) buf) + size;
122 } 120 }
123} 121}
124 122
125// Die with an error message if we can't write the entire buffer. 123// Die with an error message if we can't write the entire buffer.
126void xwrite(int fd, void *buf, size_t count) 124void xwrite(int fd, void *buf, size_t count)
127{ 125{
128 while (count) { 126 if (count) {
129 ssize_t size = safe_write(fd, buf, count); 127 ssize_t size = full_write(fd, buf, count);
130 if (size < 1) 128 if (size != count)
131 bb_error_msg_and_die("short write"); 129 bb_error_msg_and_die("short write");
132 count -= size;
133 buf = ((char *) buf) + size;
134 } 130 }
135} 131}
136 132