Handle short writes in cp(1) --- bin/cp/utils.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/bin/cp/utils.c b/bin/cp/utils.c index 347081151f2..40265fce7f7 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -149,11 +149,16 @@ copy_file(FTSENT *entp, int exists) wcount = lseek(to_fd, rcount, SEEK_CUR) == -1 ? -1 : rcount; else wcount = write(to_fd, buf, rcount); - if (rcount != wcount || wcount == -1) { + if (wcount == -1) { warn("%s", to.p_path); rval = 1; break; } + if (rcount != wcount) { + warnx("%s: short write", to.p_path); + rval = 1; + break; + } } if (skipholes && rcount != -1) rcount = ftruncate(to_fd, lseek(to_fd, 0, SEEK_CUR)); -- 2.44.0