1
Fork 0
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:
Andreas Kling 2019-01-27 10:04:53 +01:00
parent 32755aeb60
commit c4c475b49d

View file

@ -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);