summaryrefslogtreecommitdiffstats
path: root/commands/memcpy.c
diff options
context:
space:
mode:
Diffstat (limited to 'commands/memcpy.c')
-rw-r--r--commands/memcpy.c20
1 files changed, 5 insertions, 15 deletions
diff --git a/commands/memcpy.c b/commands/memcpy.c
index ddaf767eac..ef25fb7b23 100644
--- a/commands/memcpy.c
+++ b/commands/memcpy.c
@@ -84,9 +84,9 @@ 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);
+ now = min_t(loff_t, RW_BUF_SIZE, count);
r = read(sourcefd, buf, now);
if (r < 0) {
@@ -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;