mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
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:
parent
56bb7b1a3c
commit
de4de4e3c7
@ -249,24 +249,26 @@ long Curl_pgrsLimitWaitTime(curl_off_t cursize,
|
|||||||
struct timeval start,
|
struct timeval start,
|
||||||
struct timeval now)
|
struct timeval now)
|
||||||
{
|
{
|
||||||
curl_off_t size = cursize - startsize;
|
curl_off_t size = cursize - startsize;
|
||||||
long minimum, actual;
|
size_t minimum;
|
||||||
|
size_t actual;
|
||||||
|
|
||||||
/* we don't have a starting point yet -- return 0 so it gets (re)set */
|
/* we don't have a starting point yet -- return 0 so it gets (re)set */
|
||||||
if(start.tv_sec == 0 && start.tv_usec == 0)
|
if(start.tv_sec == 0 && start.tv_usec == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* not enough data yet */
|
/* not enough data yet */
|
||||||
if(size < limit)
|
if(size < limit)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
minimum = (long) (CURL_OFF_T_C(1000) * size / limit);
|
minimum = (time_t) (CURL_OFF_T_C(1000) * size / limit);
|
||||||
actual = Curl_tvdiff(now, start);
|
actual = Curl_tvdiff(now, start);
|
||||||
|
|
||||||
if(actual < minimum)
|
if(actual < minimum)
|
||||||
return minimum - actual;
|
/* this is a conversion on some systems (64bit time_t => 32bit long) */
|
||||||
else
|
return (long)(minimum - actual);
|
||||||
return 0;
|
else
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Curl_pgrsSetDownloadCounter(struct Curl_easy *data, curl_off_t size)
|
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));
|
(data->progress.timespent>0?data->progress.timespent:1));
|
||||||
|
|
||||||
/* Calculations done at most once a second, unless end is reached */
|
/* 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;
|
shownow = TRUE;
|
||||||
|
|
||||||
data->progress.lastshow = now.tv_sec;
|
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 */
|
/* first of all, we don't do this if there's no counted seconds yet */
|
||||||
if(countindex) {
|
if(countindex) {
|
||||||
long span_ms;
|
time_t span_ms;
|
||||||
|
|
||||||
/* Get the index position to compare with the 'nowindex' position.
|
/* Get the index position to compare with the 'nowindex' position.
|
||||||
Get the oldest entry possible. While we have less than CURR_TIME
|
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
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* 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 &&
|
data->set.low_speed_time &&
|
||||||
(Curl_tvlong(data->state.keeps_speed) != 0) &&
|
(Curl_tvlong(data->state.keeps_speed) != 0) &&
|
||||||
(data->progress.current_speed < data->set.low_speed_limit)) {
|
(data->progress.current_speed < data->set.low_speed_limit)) {
|
||||||
long howlong = Curl_tvdiff(now, data->state.keeps_speed);
|
time_t howlong = Curl_tvdiff(now, data->state.keeps_speed);
|
||||||
long nextcheck = (data->set.low_speed_time * 1000) - howlong;
|
time_t nextcheck = (data->set.low_speed_time * 1000) - howlong;
|
||||||
|
|
||||||
/* We are now below the "low speed limit". If we are below it
|
/* We are now below the "low speed limit". If we are below it
|
||||||
for "low speed time" seconds we consider that enough reason
|
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: the time difference in number of milliseconds. For large diffs it
|
||||||
* returns 0x7fffffff on 32bit time_t systems.
|
* 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
|
#if SIZEOF_TIME_T < 8
|
||||||
/* for 32bit time_t systems, add a precaution to avoid overflow for really
|
/* 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;
|
return 0x7fffffff;
|
||||||
#endif
|
#endif
|
||||||
return (newer.tv_sec-older.tv_sec)*1000+
|
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 */
|
/* 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;
|
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
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* 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.
|
* 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.
|
* 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);
|
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
|
/* These two defines below exist to provide the older API for library
|
||||||
internals only. */
|
internals only. */
|
||||||
|
@ -1146,8 +1146,8 @@ struct PureInfo {
|
|||||||
|
|
||||||
|
|
||||||
struct Progress {
|
struct Progress {
|
||||||
long lastshow; /* time() of the last displayed progress meter or NULL to
|
time_t lastshow; /* time() of the last displayed progress meter or NULL to
|
||||||
force redraw at next call */
|
force redraw at next call */
|
||||||
curl_off_t size_dl; /* total expected size */
|
curl_off_t size_dl; /* total expected size */
|
||||||
curl_off_t size_ul; /* total expected size */
|
curl_off_t size_ul; /* total expected size */
|
||||||
curl_off_t downloaded; /* transferred so far */
|
curl_off_t downloaded; /* transferred so far */
|
||||||
|
Loading…
Reference in New Issue
Block a user