mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:57:44 +00:00
/bin/cp: Handle partial write() case.
This commit is contained in:
parent
32755aeb60
commit
c4c475b49d
1 changed files with 11 additions and 5 deletions
|
@ -29,12 +29,18 @@ int main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
if (nread == 0)
|
if (nread == 0)
|
||||||
break;
|
break;
|
||||||
ssize_t nwritten = write(dst_fd, buffer, nread);
|
ssize_t remaining_to_write = nread;
|
||||||
if (nwritten < 0) {
|
char* bufptr = buffer;
|
||||||
perror("write dst");
|
while (remaining_to_write) {
|
||||||
return 1;
|
ssize_t nwritten = write(dst_fd, bufptr, remaining_to_write);
|
||||||
|
if (nwritten < 0) {
|
||||||
|
perror("write dst");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
assert(nwritten > 0);
|
||||||
|
remaining_to_write -= nwritten;
|
||||||
|
bufptr += nwritten;
|
||||||
}
|
}
|
||||||
assert(nwritten != 0);
|
|
||||||
}
|
}
|
||||||
close(src_fd);
|
close(src_fd);
|
||||||
close(dst_fd);
|
close(dst_fd);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue