aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlns <matzeton@googlemail.com>2019-12-26 10:20:33 +0100
committerlns <matzeton@googlemail.com>2019-12-26 10:24:40 +0100
commite490f5f4efbdeb4ac69bc18690050d5059229e22 (patch)
tree4e312a40649d8de23c9dd1dacd7df2a8406ab6be
parentab65f33409751baaa7b495924ecb296148619c9d (diff)
support for writing files (means that fd offset > previously stat'ed file)
-rw-r--r--progressbar.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/progressbar.c b/progressbar.c
index ad3b794..93bf5ac 100644
--- a/progressbar.c
+++ b/progressbar.c
@@ -383,9 +383,13 @@ static void show_positions(struct terminal * const term,
assert(finfo);
prettify_with_units(finfo->current_position, curpos, sizeof curpos);
- prettify_with_units(finfo->max_size, maxpos, sizeof maxpos);
-
- add_printable_buf(term, finfo, "[%s/%s]", curpos, maxpos);
+ /* if the user is currently writing/appending to a file, show only current offset */
+ if (finfo->current_position <= finfo->max_size) {
+ prettify_with_units(finfo->max_size, maxpos, sizeof maxpos);
+ add_printable_buf(term, finfo, "[%s/%s]", curpos, maxpos);
+ } else {
+ add_printable_buf(term, finfo, "[%s WRITTEN]", curpos);
+ }
}
static void measure_realtime(struct timespec * const tp)
@@ -470,6 +474,10 @@ static void show_progressbar(struct terminal const * const term,
if (remaining_len < 16 || remaining_len >= sizeof buf) {
return;
}
+ /* do not show progressbar if someone writes/appendes to this file */
+ if (finfo->current_position > finfo->max_size) {
+ return;
+ }
float progress = (float)finfo->current_position / finfo->max_size;
add_printable_buf(term, finfo, "[%.2f%%]", progress * 100.0f);