diff options
author | 2012-07-11 16:19:24 +0000 | |
---|---|---|
committer | 2012-07-11 16:19:24 +0000 | |
commit | e04f6429de5e8ed779c24144c25357fc9ae8b065 (patch) | |
tree | 3c881c56ffcccec8e02d07eb21247fef75556161 | |
parent | Enable the swap checker for hibernate (diff) | |
download | wireguard-openbsd-e04f6429de5e8ed779c24144c25357fc9ae8b065.tar.xz wireguard-openbsd-e04f6429de5e8ed779c24144c25357fc9ae8b065.zip |
When copying a file sparsely, truncate the resulting file based on the
current seek offset rather than what fstat() reported the original
file's length was. This fixes things like "cp /dev/ksyms /tmp" so
that we don't truncate the file to 0 bytes after copying all of the
data.
ok tedu, millert
-rw-r--r-- | bin/cp/utils.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/bin/cp/utils.c b/bin/cp/utils.c index c45a6a4af32..dbe8cd14ee0 100644 --- a/bin/cp/utils.c +++ b/bin/cp/utils.c @@ -1,4 +1,4 @@ -/* $OpenBSD: utils.c,v 1.32 2012/04/11 09:45:47 espie Exp $ */ +/* $OpenBSD: utils.c,v 1.33 2012/07/11 16:19:24 matthew Exp $ */ /* $NetBSD: utils.c,v 1.6 1997/02/26 14:40:51 cgd Exp $ */ /*- @@ -158,7 +158,7 @@ copy_file(FTSENT *entp, int dne) } } if (skipholes && rcount >= 0) - rcount = ftruncate(to_fd, fs->st_size); + rcount = ftruncate(to_fd, lseek(to_fd, 0, SEEK_CUR)); if (rcount < 0) { warn("%s", entp->fts_path); rval = 1; |