summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libfile.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/libfile.c b/lib/libfile.c
index b4d87b624a..9de938b2d3 100644
--- a/lib/libfile.c
+++ b/lib/libfile.c
@@ -364,14 +364,15 @@ int copy_file(const char *src, const char *dst, int verbose)
goto out;
}
- discard_range(dstfd, srcstat.st_size, 0);
+ ret = stat(src, &srcstat);
+ if (ret)
+ goto out;
- if (verbose) {
- if (stat(src, &srcstat) < 0)
- srcstat.st_size = 0;
+ if (srcstat.st_size != FILESIZE_MAX)
+ discard_range(dstfd, srcstat.st_size, 0);
+ if (verbose)
init_progression_bar(srcstat.st_size);
- }
while (1) {
r = read(srcfd, rw_buf, RW_BUF_SIZE);