mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
David Byron's fix to get the progress-bar use the local size too when
doing a resumed download.
This commit is contained in:
parent
c896ebcf12
commit
21e87b9bb3
20
src/main.c
20
src/main.c
@ -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__
|
||||
|
Loading…
Reference in New Issue
Block a user