xread/write can use full_read/write (smaller code)

This commit is contained in:
Denis Vlasenko 2006-10-12 22:44:13 +00:00
parent 2d5ca60bfb
commit 88ca067690
3 changed files with 8 additions and 12 deletions

View File

@ -24,7 +24,7 @@ ssize_t full_read(int fd, void *buf, size_t len)
total = 0; total = 0;
while (len > 0) { while (len) {
cc = safe_read(fd, buf, len); cc = safe_read(fd, buf, len);
if (cc < 0) if (cc < 0)

View File

@ -23,7 +23,7 @@ ssize_t full_write(int fd, const void *buf, size_t len)
total = 0; total = 0;
while (len > 0) { while (len) {
cc = safe_write(fd, buf, len); cc = safe_write(fd, buf, len);
if (cc < 0) if (cc < 0)

View File

@ -113,24 +113,20 @@ int xopen3(const char *pathname, int flags, int mode)
// Die with an error message if we can't read the entire buffer. // Die with an error message if we can't read the entire buffer.
void xread(int fd, void *buf, size_t count) void xread(int fd, void *buf, size_t count)
{ {
while (count) { if (count) {
ssize_t size = safe_read(fd, buf, count); ssize_t size = full_read(fd, buf, count);
if (size < 1) if (size != count)
bb_error_msg_and_die("short read"); bb_error_msg_and_die("short read");
count -= size;
buf = ((char *) buf) + size;
} }
} }
// Die with an error message if we can't write the entire buffer. // Die with an error message if we can't write the entire buffer.
void xwrite(int fd, void *buf, size_t count) void xwrite(int fd, void *buf, size_t count)
{ {
while (count) { if (count) {
ssize_t size = safe_write(fd, buf, count); ssize_t size = full_write(fd, buf, count);
if (size < 1) if (size != count)
bb_error_msg_and_die("short write"); bb_error_msg_and_die("short write");
count -= size;
buf = ((char *) buf) + size;
} }
} }