version 1.4, 2019/05/14 18:51:07 |
version 1.5, 2019/05/15 13:42:40 |
|
|
i++; |
i++; |
bytes = (bytes + 512) / 1024; |
bytes = (bytes + 512) / 1024; |
} |
} |
snprintf(buf, size, "%3lld.%1lld%c%s", |
snprintf(buf, size, "%lld.%02lld %c%s", |
(long long) (bytes + 5) / 100, |
(long long) (bytes + 5) / 100, |
(long long) (bytes + 5) / 10 % 10, |
(long long) (bytes + 5) / 10 % 10, |
unit[i], |
unit[i], |
|
|
} |
} |
|
|
void |
void |
start_progress_meter(const char *fn, const char *t, off_t filesize, off_t *ctr) |
init_stats(off_t filesize, off_t *ctr) |
{ |
{ |
start = last_update = monotime(); |
start = last_update = monotime(); |
start_pos = *ctr; |
start_pos = *ctr; |
|
|
counter = ctr; |
counter = ctr; |
stalled = 0; |
stalled = 0; |
bytes_per_second = 0; |
bytes_per_second = 0; |
|
|
|
if (filesize > 0) |
|
end_pos = filesize; |
|
} |
|
|
|
void |
|
start_progress_meter(const char *fn, const char *t) |
|
{ |
filename = fn; |
filename = fn; |
title = t; |
title = t; |
|
|
|
|
* Suppress progressmeter if filesize isn't known when |
* Suppress progressmeter if filesize isn't known when |
* Content-Length header has bogus values. |
* Content-Length header has bogus values. |
*/ |
*/ |
if (filesize <= 0) |
|
|
if (end_pos == 0) |
return; |
return; |
|
|
end_pos = filesize; |
|
setscreensize(); |
setscreensize(); |
refresh_progress_meter(); |
refresh_progress_meter(); |
|
|
|
|
void |
void |
stop_progress_meter(void) |
stop_progress_meter(void) |
{ |
{ |
char rate_str[32]; |
|
double elapsed; |
|
|
|
alarm(0); |
alarm(0); |
|
|
/* Ensure we complete the progress */ |
/* Ensure we complete the progress */ |
|
|
|
|
if (end_pos) |
if (end_pos) |
fprintf(stderr, "\n"); |
fprintf(stderr, "\n"); |
|
} |
|
|
|
void |
|
finish_stats(void) |
|
{ |
|
char rate_str[32]; |
|
double elapsed; |
|
|
if (!verbose) |
if (!verbose) |
return; |
return; |
|
|
elapsed = monotime() - start; |
elapsed = monotime() - start; |
if (end_pos == 0) { |
|
if (elapsed != 0) |
|
bytes_per_second = *counter / elapsed; |
|
else |
|
bytes_per_second = *counter; |
|
} |
|
|
|
|
if (elapsed != 0) |
|
bytes_per_second = *counter / elapsed; |
|
else |
|
bytes_per_second = *counter; |
|
|
format_rate(rate_str, sizeof rate_str, bytes_per_second); |
format_rate(rate_str, sizeof rate_str, bytes_per_second); |
log_info("%lld bytes received in %.2f seconds (%s/s)\n", |
log_info("%lld byte%s received in %.2f seconds (%s/s)\n", |
(end_pos) ? cur_pos - offset : *counter, elapsed, rate_str); |
*counter, *counter != 1 ? "s" : "", elapsed, rate_str); |
} |
} |
|
|
static void |
static void |