trspeed: use long double for transfer speed calculation

This commit is contained in:
Daniel Stenberg 2021-05-08 13:10:06 +02:00
parent 7ab54e8f41
commit 8a75224a69
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
1 changed files with 6 additions and 19 deletions

View File

@ -369,26 +369,13 @@ void Curl_pgrsSetUploadSize(struct Curl_easy *data, curl_off_t size)
}
}
/* returns the average speed */
static curl_off_t trspeed(curl_off_t size, curl_off_t us)
/* returns the average speed in bytes / second */
static curl_off_t trspeed(curl_off_t size, /* number of bytes */
curl_off_t us) /* microseconds */
{
curl_off_t sec;
if(size < CURL_OFF_T_MAX/1000000) {
if(us < 1)
return size * 1000000;
return (size * 1000000) / us;
}
else if(size < CURL_OFF_T_MAX/1000) {
curl_off_t ms = us/1000;
if(ms < 1)
return size * 1000;
return (size * 1000) / ms;
}
sec = us / 1000000;
if(sec < 1)
return size;
return size / sec;
if(us < 1)
return size * 1000000;
return (curl_off_t)((long double)size/us * 1000000);
}
/* returns TRUE if it's time to show the progress meter */