David Byron's fix to get the progress-bar use the local size too when

doing a resumed download.
This commit is contained in:
Daniel Stenberg 2003-06-02 13:42:42 +00:00
parent c896ebcf12
commit 21e87b9bb3
1 changed files with 12 additions and 8 deletions

View File

@ -2075,11 +2075,10 @@ int my_fread(void *buffer, size_t size, size_t nmemb, void *userp)
struct ProgressData {
int calls;
double total;
double prev;
double point;
int width;
FILE *out; /* where to write everything to */
int initial_size;
};
int myprogress (void *clientp,
@ -2101,22 +2100,21 @@ int myprogress (void *clientp,
int i;
struct ProgressData *bar = (struct ProgressData *)clientp;
double total = dltotal + ultotal;
bar->point = dlnow + ulnow; /* we've come this far */
double total = dltotal + ultotal + bar->initial_size;
double point = dlnow + ulnow + bar->initial_size; /* we've come this far */
bar->calls++; /* simply count invokes */
if(0 == total) {
int prevblock = (int)bar->prev / 1024;
int thisblock = (int)bar->point / 1024;
int thisblock = (int)point / 1024;
while ( thisblock > prevblock ) {
fprintf( bar->out, "#" );
prevblock++;
}
}
else {
frac = bar->point / total;
frac = point / total;
percent = frac * 100.0f;
barwidth = bar->width - 7;
num = (int) (((double)barwidth) * frac);
@ -2129,7 +2127,7 @@ int myprogress (void *clientp,
sprintf( outline, format, line, percent );
fprintf( bar->out, "\r%s", outline );
}
bar->prev = bar->point;
bar->prev = point;
return 0;
}
@ -2146,6 +2144,12 @@ void progressbarinit(struct ProgressData *bar,
memset(bar, 0, sizeof(struct ProgressData));
/* pass this through to progress function so
* it can display progress towards total file
* not just the part that's left. (21-may-03, dbyron) */
if (config->use_resume)
bar->initial_size = config->resume_from;
/* TODO: get terminal width through ansi escapes or something similar.
try to update width when xterm is resized... - 19990617 larsa */
#ifndef __EMX__