aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/progress.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/lib/progress.c b/lib/progress.c
index a54be86d6..2e2f26b4f 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -58,7 +58,7 @@ void time2str(char *r, int t)
int h = (t/3600);
int m = (t-(h*3600))/60;
int s = (t-(h*3600)-(m*60));
- sprintf(r,"%d:%02d:%02d",h,m,s);
+ sprintf(r,"%2d:%02d:%02d",h,m,s);
}
/* The point of this function would be to return a string of the input data,
@@ -94,8 +94,11 @@ char *max5data(double bytes, char *max5)
#if 1
void pgrsDone(struct UrlData *data)
{
- if(!(data->progress.flags & PGRS_HIDE))
+ if(!(data->progress.flags & PGRS_HIDE)) {
+ data->progress.lastshow=0;
+ pgrsUpdate(data); /* the final (forced) update */
fprintf(stderr, "\n");
+ }
}
void pgrsMode(struct UrlData *data, int mode)
{
@@ -125,21 +128,25 @@ void pgrsSetUploadCounter(struct UrlData *data, double size)
void pgrsSetDownloadSize(struct UrlData *data, double size)
{
- data->progress.size_dl = size;
- data->progress.flags |= PGRS_DL_SIZE_KNOWN;
+ if(size > 0) {
+ data->progress.size_dl = size;
+ data->progress.flags |= PGRS_DL_SIZE_KNOWN;
+ }
}
void pgrsSetUploadSize(struct UrlData *data, double size)
{
- data->progress.size_ul = size;
- data->progress.flags |= PGRS_UL_SIZE_KNOWN;
+ if(size > 0) {
+ data->progress.size_ul = size;
+ data->progress.flags |= PGRS_UL_SIZE_KNOWN;
+ }
}
/* EXAMPLE OUTPUT to follow:
- % Total % Received % Xferd Average Speed Time Curr.
- Download Upload Total Current Left Speed
-100 12345 100 12345 100 12345 12345 12345 2:47:33 2:00:02 2:00:02 12345
+ % Total % Received % Xferd Average Speed Time Curr.
+ Dload Upload Total Current Left Speed
+100 12345 100 12345 100 12345 12345 12345 12:12:12 12:12:12 12:12:12 12345
*/
@@ -154,8 +161,8 @@ void pgrsUpdate(struct UrlData *data)
else if(!(data->progress.flags & PGRS_HEADERS_OUT)) {
if ( data->progress.mode == CURL_PROGRESS_STATS ) {
fprintf(data->err,
- " %% Total %% Received %% Xferd Average Speed Time Curr.\n"
- " Download Upload Total Current Left Speed\n");
+ " %% Total %% Received %% Xferd Average Speed Time Curr.\n"
+ " Dload Upload Total Current Left Speed\n");
}
data->progress.flags |= PGRS_HEADERS_OUT; /* headers are shown */
}
@@ -165,7 +172,6 @@ void pgrsUpdate(struct UrlData *data)
switch(data->progress.mode) {
case CURL_PROGRESS_STATS:
{
- static long lastshow;
char max5[6][6];
double dlpercen=0;
double ulpercen=0;
@@ -196,10 +202,10 @@ void pgrsUpdate(struct UrlData *data)
double total_estimate;
- if(lastshow == tvlong(now))
+ if(data->progress.lastshow == tvlong(now))
return; /* never update this more than once a second if the end isn't
reached */
- lastshow = now.tv_sec;
+ data->progress.lastshow = now.tv_sec;
/* The exact time spent so far */
timespent = tvdiff (now, data->progress.start);
@@ -276,7 +282,7 @@ void pgrsUpdate(struct UrlData *data)
fprintf(stderr,
- "\r%3d %s %3d %s %3d %s %s %s %s %s %s %s",
+ "\r%3d %s %3d %s %3d %s %s %s %s %s %s %s",
(int)total_percen, /* total % */
max5data(total_expected_transfer, max5[2]), /* total size */
(int)dlpercen, /* rcvd % */