timeval: prefer time_t to hold seconds instead of long
... as long is still 32bit on modern 64bit windows machines, while time_t is generally 64bit.
This commit is contained in:
Родитель
56bb7b1a3c
Коммит
de4de4e3c7
|
@ -249,24 +249,26 @@ long Curl_pgrsLimitWaitTime(curl_off_t cursize,
|
|||
struct timeval start,
|
||||
struct timeval now)
|
||||
{
|
||||
curl_off_t size = cursize - startsize;
|
||||
long minimum, actual;
|
||||
curl_off_t size = cursize - startsize;
|
||||
size_t minimum;
|
||||
size_t actual;
|
||||
|
||||
/* we don't have a starting point yet -- return 0 so it gets (re)set */
|
||||
if(start.tv_sec == 0 && start.tv_usec == 0)
|
||||
return 0;
|
||||
/* we don't have a starting point yet -- return 0 so it gets (re)set */
|
||||
if(start.tv_sec == 0 && start.tv_usec == 0)
|
||||
return 0;
|
||||
|
||||
/* not enough data yet */
|
||||
if(size < limit)
|
||||
return -1;
|
||||
/* not enough data yet */
|
||||
if(size < limit)
|
||||
return -1;
|
||||
|
||||
minimum = (long) (CURL_OFF_T_C(1000) * size / limit);
|
||||
actual = Curl_tvdiff(now, start);
|
||||
minimum = (time_t) (CURL_OFF_T_C(1000) * size / limit);
|
||||
actual = Curl_tvdiff(now, start);
|
||||
|
||||
if(actual < minimum)
|
||||
return minimum - actual;
|
||||
else
|
||||
return 0;
|
||||
if(actual < minimum)
|
||||
/* this is a conversion on some systems (64bit time_t => 32bit long) */
|
||||
return (long)(minimum - actual);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size)
|
||||
|
@ -373,7 +375,7 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
|||
(data->progress.timespent>0?data->progress.timespent:1));
|
||||
|
||||
/* Calculations done at most once a second, unless end is reached */
|
||||
if(data->progress.lastshow != (long)now.tv_sec) {
|
||||
if(data->progress.lastshow != now.tv_sec) {
|
||||
shownow = TRUE;
|
||||
|
||||
data->progress.lastshow = now.tv_sec;
|
||||
|
@ -400,7 +402,7 @@ int Curl_pgrsUpdate(struct connectdata *conn)
|
|||
|
||||
/* first of all, we don't do this if there's no counted seconds yet */
|
||||
if(countindex) {
|
||||
long span_ms;
|
||||
time_t span_ms;
|
||||
|
||||
/* Get the index position to compare with the 'nowindex' position.
|
||||
Get the oldest entry possible. While we have less than CURR_TIME
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
|
@ -40,8 +40,8 @@ CURLcode Curl_speedcheck(struct Curl_easy *data,
|
|||
data->set.low_speed_time &&
|
||||
(Curl_tvlong(data->state.keeps_speed) != 0) &&
|
||||
(data->progress.current_speed < data->set.low_speed_limit)) {
|
||||
long howlong = Curl_tvdiff(now, data->state.keeps_speed);
|
||||
long nextcheck = (data->set.low_speed_time * 1000) - howlong;
|
||||
time_t howlong = Curl_tvdiff(now, data->state.keeps_speed);
|
||||
time_t nextcheck = (data->set.low_speed_time * 1000) - howlong;
|
||||
|
||||
/* We are now below the "low speed limit". If we are below it
|
||||
for "low speed time" seconds we consider that enough reason
|
||||
|
|
|
@ -116,7 +116,7 @@ struct timeval curlx_tvnow(void)
|
|||
* Returns: the time difference in number of milliseconds. For large diffs it
|
||||
* returns 0x7fffffff on 32bit time_t systems.
|
||||
*/
|
||||
long curlx_tvdiff(struct timeval newer, struct timeval older)
|
||||
time_t curlx_tvdiff(struct timeval newer, struct timeval older)
|
||||
{
|
||||
#if SIZEOF_TIME_T < 8
|
||||
/* for 32bit time_t systems, add a precaution to avoid overflow for really
|
||||
|
@ -126,7 +126,7 @@ long curlx_tvdiff(struct timeval newer, struct timeval older)
|
|||
return 0x7fffffff;
|
||||
#endif
|
||||
return (newer.tv_sec-older.tv_sec)*1000+
|
||||
(long)(newer.tv_usec-older.tv_usec)/1000;
|
||||
(time_t)(newer.tv_usec-older.tv_usec)/1000;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -144,7 +144,7 @@ double curlx_tvdiff_secs(struct timeval newer, struct timeval older)
|
|||
}
|
||||
|
||||
/* return the number of seconds in the given input timeval struct */
|
||||
long Curl_tvlong(struct timeval t1)
|
||||
time_t Curl_tvlong(struct timeval t1)
|
||||
{
|
||||
return t1.tv_sec;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
|
@ -37,7 +37,7 @@ struct timeval curlx_tvnow(void);
|
|||
*
|
||||
* Returns: the time difference in number of milliseconds.
|
||||
*/
|
||||
long curlx_tvdiff(struct timeval t1, struct timeval t2);
|
||||
time_t curlx_tvdiff(struct timeval t1, struct timeval t2);
|
||||
|
||||
/*
|
||||
* Same as curlx_tvdiff but with full usec resolution.
|
||||
|
@ -46,7 +46,7 @@ long curlx_tvdiff(struct timeval t1, struct timeval t2);
|
|||
*/
|
||||
double curlx_tvdiff_secs(struct timeval t1, struct timeval t2);
|
||||
|
||||
long Curl_tvlong(struct timeval t1);
|
||||
time_t Curl_tvlong(struct timeval t1);
|
||||
|
||||
/* These two defines below exist to provide the older API for library
|
||||
internals only. */
|
||||
|
|
|
@ -1146,8 +1146,8 @@ struct PureInfo {
|
|||
|
||||
|
||||
struct Progress {
|
||||
long lastshow; /* time() of the last displayed progress meter or NULL to
|
||||
force redraw at next call */
|
||||
time_t lastshow; /* time() of the last displayed progress meter or NULL to
|
||||
force redraw at next call */
|
||||
curl_off_t size_dl; /* total expected size */
|
||||
curl_off_t size_ul; /* total expected size */
|
||||
curl_off_t downloaded; /* transferred so far */
|
||||
|
|
Загрузка…
Ссылка в новой задаче