summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--commands/memcpy.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/commands/memcpy.c b/commands/memcpy.c
index ddaf767eac..803f06e574 100644
--- a/commands/memcpy.c
+++ b/commands/memcpy.c
@@ -84,7 +84,7 @@ static int do_memcpy(int argc, char *argv[])
buf = xmalloc(RW_BUF_SIZE);
while (count > 0) {
- int now, r, w, tmp;
+ int now, r;
now = min((loff_t)RW_BUF_SIZE, count);
@@ -97,19 +97,9 @@ static int do_memcpy(int argc, char *argv[])
if (!r)
break;
- tmp = 0;
- now = r;
- while (now) {
- w = write(destfd, buf + tmp, now);
- if (w < 0) {
- perror("write");
- goto out;
- }
- if (!w)
- break;
-
- now -= w;
- tmp += w;
+ if (write_full(destfd, buf, r) < 0) {
+ perror("write");
+ goto out;
}
count -= r;