xbps-install: show overall download progress
This commit is contained in:
parent
4d6d328c62
commit
701132071d
@ -120,6 +120,29 @@ stat_bps(const struct xbps_fetch_cb_data *xfpd, void *cbdata)
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compute and display overall download progress
|
||||||
|
*/
|
||||||
|
static const char *
|
||||||
|
stat_progress(const struct xbps_fetch_cb_data *xfpd)
|
||||||
|
{
|
||||||
|
static char str[48];
|
||||||
|
static uint64_t dlsize = 0;
|
||||||
|
uint64_t total_dlsize = 0;
|
||||||
|
double ratio;
|
||||||
|
bool exists;
|
||||||
|
|
||||||
|
exists = xbps_dictionary_get_uint64(xfpd->xhp->transd, "total-download-size", &total_dlsize);
|
||||||
|
if (!exists)
|
||||||
|
total_dlsize = xfpd->file_size;
|
||||||
|
|
||||||
|
ratio = (double)(dlsize + xfpd->file_dloaded) / total_dlsize;
|
||||||
|
snprintf(str, sizeof str, "[%2d%%]", (int)(ratio * 100));
|
||||||
|
if (xfpd->cb_end && exists)
|
||||||
|
dlsize += xfpd->file_size;
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Update the stats display
|
* Update the stats display
|
||||||
*/
|
*/
|
||||||
@ -145,9 +168,9 @@ stat_display(const struct xbps_fetch_cb_data *xfpd, void *cbdata)
|
|||||||
(void)xbps_humanize_number(totsize, (int64_t)xfpd->file_size);
|
(void)xbps_humanize_number(totsize, (int64_t)xfpd->file_size);
|
||||||
}
|
}
|
||||||
if (v_tty)
|
if (v_tty)
|
||||||
fprintf(stderr, "%s: [%s %d%%] %s ETA: %s\033[K\r",
|
fprintf(stderr, "%s %s: [%s %d%%] %s ETA: %s\033[K\r",
|
||||||
xfpd->file_name, totsize, percentage,
|
stat_progress(xfpd), xfpd->file_name, totsize,
|
||||||
stat_bps(xfpd, xfer), stat_eta(xfpd, xfer));
|
percentage, stat_bps(xfpd, xfer), stat_eta(xfpd, xfer));
|
||||||
else {
|
else {
|
||||||
printf("%s: [%s %d%%] %s ETA: %s\n",
|
printf("%s: [%s %d%%] %s ETA: %s\n",
|
||||||
xfpd->file_name, totsize, percentage,
|
xfpd->file_name, totsize, percentage,
|
||||||
@ -173,10 +196,12 @@ fetch_file_progress_cb(const struct xbps_fetch_cb_data *xfpd, void *cbdata)
|
|||||||
} else if (xfpd->cb_end) {
|
} else if (xfpd->cb_end) {
|
||||||
/* end transfer stats */
|
/* end transfer stats */
|
||||||
(void)xbps_humanize_number(size, (int64_t)xfpd->file_dloaded);
|
(void)xbps_humanize_number(size, (int64_t)xfpd->file_dloaded);
|
||||||
if (v_tty)
|
if (v_tty) {
|
||||||
|
/* dumb call to sum file_size */
|
||||||
|
stat_progress(xfpd);
|
||||||
fprintf(stderr, "%s: %s [avg rate: %s]\033[K\n",
|
fprintf(stderr, "%s: %s [avg rate: %s]\033[K\n",
|
||||||
xfpd->file_name, size, stat_bps(xfpd, xfer));
|
xfpd->file_name, size, stat_bps(xfpd, xfer));
|
||||||
else {
|
} else {
|
||||||
printf("%s: %s [avg rate: %s]\n",
|
printf("%s: %s [avg rate: %s]\n",
|
||||||
xfpd->file_name, size, stat_bps(xfpd, xfer));
|
xfpd->file_name, size, stat_bps(xfpd, xfer));
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user