Commit de4de4e3 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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.
parent 56bb7b1a
Loading
Loading
Loading
Loading
+18 −16
Original line number Diff line number Diff line
@@ -250,7 +250,8 @@ long Curl_pgrsLimitWaitTime(curl_off_t cursize,
                            struct timeval now)
{
  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 */
  if(start.tv_sec == 0 && start.tv_usec == 0)
@@ -260,11 +261,12 @@ long Curl_pgrsLimitWaitTime(curl_off_t cursize,
  if(size < limit)
    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);

  if(actual < minimum)
      return minimum - actual;
    /* this is a conversion on some systems (64bit time_t => 32bit long) */
    return (long)(minimum - actual);
  else
    return 0;
}
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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;
}
+3 −3
Original line number Diff line number Diff line
@@ -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. */
+2 −2
Original line number Diff line number Diff line
@@ -1146,7 +1146,7 @@ struct PureInfo {


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 */
  curl_off_t size_dl; /* total expected size */
  curl_off_t size_ul; /* total expected size */