diff options
author | Teresa Gámez <t.gamez@phytec.de> | 2013-09-27 09:33:21 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-09-27 16:20:17 +0200 |
commit | e2b67d6a6a4deccb4b9041124fc251c12a81ecf9 (patch) | |
tree | f5f7554cda7390e6dcd3be95d17fbb136508e17e /lib | |
parent | 8d7f51aeea0c3f63bfa1b7544b552daf85936a80 (diff) | |
download | barebox-e2b67d6a6a4deccb4b9041124fc251c12a81ecf9.tar.gz barebox-e2b67d6a6a4deccb4b9041124fc251c12a81ecf9.tar.xz |
lib: Fix copy_file when filesize is FILESIZE_MAX
Using tftp command does not work proper when files
have FILESIZE_MAX, as copy_file and show_progress
can not handle it. Check the file size for FILESIZE_MAX
and handle it as file size = 0.
Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/copy_file.c | 8 | ||||
-rw-r--r-- | lib/show_progress.c | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/lib/copy_file.c b/lib/copy_file.c index ab3d845a5b..55dee38e61 100644 --- a/lib/copy_file.c +++ b/lib/copy_file.c @@ -63,8 +63,12 @@ int copy_file(const char *src, const char *dst, int verbose) total += w; } - if (verbose) - show_progress(statbuf.st_size ? total : total / 16384); + if (verbose) { + if (statbuf.st_size && statbuf.st_size != FILESIZE_MAX) + show_progress(total); + else + show_progress(total / 16384); + } } ret = 0; diff --git a/lib/show_progress.c b/lib/show_progress.c index bc067eac57..98dc8495b4 100644 --- a/lib/show_progress.c +++ b/lib/show_progress.c @@ -18,6 +18,7 @@ */ #include <common.h> +#include <fs.h> #include <progress.h> #include <asm-generic/div64.h> #include <linux/stringify.h> @@ -37,7 +38,7 @@ void show_progress(int now) return; } - if (progress_max) { + if (progress_max && progress_max != FILESIZE_MAX) { uint64_t tmp = (int64_t)now * HASHES_PER_LINE; do_div(tmp, progress_max); now = tmp; @@ -56,7 +57,7 @@ void init_progression_bar(int max) printed = 0; progress_max = max; spin = 0; - if (progress_max) + if (progress_max && progress_max != FILESIZE_MAX) printf("\t[%"__stringify(HASHES_PER_LINE)"s]\r\t[", ""); else printf("\t"); |