gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 08/163: getinfo: add microsecond precise timers for


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 08/163: getinfo: add microsecond precise timers for various intervals
Date: Sun, 05 Aug 2018 12:35:34 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit ce2140a8c12299f17bee406bad374e310daa94ed
Author: Philip Prindeville <address@hidden>
AuthorDate: Thu May 17 13:37:36 2018 +0200

    getinfo: add microsecond precise timers for various intervals
    
    Provide a set of new timers that return the time intervals using integer
    number of microseconds instead of floats.
    
    The new info names are as following:
    
    CURLINFO_APPCONNECT_TIME_T
    CURLINFO_CONNECT_TIME_T
    CURLINFO_NAMELOOKUP_TIME_T
    CURLINFO_PRETRANSFER_TIME_T
    CURLINFO_REDIRECT_TIME_T
    CURLINFO_STARTTRANSFER_TIME_T
    CURLINFO_TOTAL_TIME_T
    
    Closes #2495
---
 docs/examples/chkspeed.c                           | 26 ++++++-----
 docs/examples/fileupload.c                         | 12 +++---
 docs/examples/progressfunc.c                       | 11 ++---
 docs/libcurl/curl_easy_getinfo.3                   | 46 ++++++++++++++++----
 docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3       |  2 +-
 ...CONNECT_TIME.3 => CURLINFO_APPCONNECT_TIME_T.3} | 24 ++++++-----
 docs/libcurl/opts/CURLINFO_CONNECT_TIME.3          |  2 +-
 ...INFO_TOTAL_TIME.3 => CURLINFO_CONNECT_TIME_T.3} | 25 ++++++-----
 docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3       |  2 +-
 ...ELOOKUP_TIME.3 => CURLINFO_NAMELOOKUP_TIME_T.3} | 23 +++++-----
 docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3      |  2 +-
 ...ANSFER_TIME.3 => CURLINFO_PRETRANSFER_TIME_T.3} | 22 +++++-----
 docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3         |  2 +-
 ..._REDIRECT_TIME.3 => CURLINFO_REDIRECT_TIME_T.3} | 26 +++++------
 docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3    |  2 +-
 ...SFER_TIME.3 => CURLINFO_STARTTRANSFER_TIME_T.3} | 24 ++++++-----
 docs/libcurl/opts/CURLINFO_TOTAL_TIME.3            |  2 +-
 ...INFO_CONNECT_TIME.3 => CURLINFO_TOTAL_TIME_T.3} | 24 ++++++-----
 docs/libcurl/opts/Makefile.inc                     |  7 +++
 docs/libcurl/symbols-in-versions                   |  7 +++
 include/curl/curl.h                                | 12 +++++-
 lib/getinfo.c                                      | 22 ++++++++++
 tests/libtest/lib500.c                             | 50 ++++++++++++++--------
 23 files changed, 240 insertions(+), 135 deletions(-)

diff --git a/docs/examples/chkspeed.c b/docs/examples/chkspeed.c
index f3dd1e944..0b0ba72a0 100644
--- a/docs/examples/chkspeed.c
+++ b/docs/examples/chkspeed.c
@@ -165,33 +165,37 @@ int main(int argc, char *argv[])
   res = curl_easy_perform(curl_handle);
 
   if(CURLE_OK == res) {
-    double val;
+    curl_off_t val;
 
     /* check for bytes downloaded */
-    res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD, &val);
+    res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD_T, &val);
     if((CURLE_OK == res) && (val>0))
-      printf("Data downloaded: %0.0f bytes.\n", val);
+      printf("Data downloaded: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", val);
 
     /* check for total download time */
-    res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME, &val);
+    res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME_T, &val);
     if((CURLE_OK == res) && (val>0))
-      printf("Total download time: %0.3f sec.\n", val);
+      printf("Total download time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
+             (val / 1000000), (long)(val % 1000000));
 
     /* check for average download speed */
-    res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD, &val);
+    res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD_T, &val);
     if((CURLE_OK == res) && (val>0))
-      printf("Average download speed: %0.3f kbyte/sec.\n", val / 1024);
+      printf("Average download speed: %" CURL_FORMAT_CURL_OFF_T
+             " kbyte/sec.\n", val / 1024);
 
     if(prtall) {
       /* check for name resolution time */
-      res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME, &val);
+      res = curl_easy_getinfo(curl_handle, CURLINFO_NAMELOOKUP_TIME_T, &val);
       if((CURLE_OK == res) && (val>0))
-        printf("Name lookup time: %0.3f sec.\n", val);
+        printf("Name lookup time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
+               (val / 1000000), (long)(val % 1000000));
 
       /* check for connect time */
-      res = curl_easy_getinfo(curl_handle, CURLINFO_CONNECT_TIME, &val);
+      res = curl_easy_getinfo(curl_handle, CURLINFO_CONNECT_TIME_T, &val);
       if((CURLE_OK == res) && (val>0))
-        printf("Connect time: %0.3f sec.\n", val);
+        printf("Connect time: %" CURL_FORMAT_CURL_OFF_T ".%06ld sec.\n",
+               (val / 1000000), (long)(val % 1000000));
     }
   }
   else {
diff --git a/docs/examples/fileupload.c b/docs/examples/fileupload.c
index 6b05c4cec..8128608c4 100644
--- a/docs/examples/fileupload.c
+++ b/docs/examples/fileupload.c
@@ -33,7 +33,7 @@ int main(void)
   CURL *curl;
   CURLcode res;
   struct stat file_info;
-  double speed_upload, total_time;
+  curl_off_t speed_upload, total_time;
   FILE *fd;
 
   fd = fopen("debugit", "rb"); /* open file to upload */
@@ -72,11 +72,13 @@ int main(void)
     }
     else {
       /* now extract transfer info */
-      curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed_upload);
-      curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total_time);
+      curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed_upload);
+      curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total_time);
 
-      fprintf(stderr, "Speed: %.3f bytes/sec during %.3f seconds\n",
-              speed_upload, total_time);
+      fprintf(stderr, "Speed: %" CURL_FORMAT_CURL_OFF_T " bytes/sec during %"
+              CURL_FORMAT_CURL_OFF_T ".%06ld seconds\n",
+              speed_upload,
+              (total_time / 1000000), (long)(total_time % 1000000));
 
     }
     /* always cleanup */
diff --git a/docs/examples/progressfunc.c b/docs/examples/progressfunc.c
index ab34ef988..52a3c0834 100644
--- a/docs/examples/progressfunc.c
+++ b/docs/examples/progressfunc.c
@@ -28,10 +28,10 @@
 #include <curl/curl.h>
 
 #define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES         6000
-#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL     3
+#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL     3000000
 
 struct myprogress {
-  double lastruntime;
+  curl_off_t lastruntime;
   CURL *curl;
 };
 
@@ -42,16 +42,17 @@ static int xferinfo(void *p,
 {
   struct myprogress *myp = (struct myprogress *)p;
   CURL *curl = myp->curl;
-  double curtime = 0;
+  curl_off_t curtime = 0;
 
-  curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &curtime);
+  curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &curtime);
 
   /* under certain circumstances it may be desirable for certain functionality
      to only run every N seconds, in order to do this the transaction time can
      be used */
   if((curtime - myp->lastruntime) >= MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL) {
     myp->lastruntime = curtime;
-    fprintf(stderr, "TOTAL TIME: %f \r\n", curtime);
+    fprintf(stderr, "TOTAL TIME: %" CURL_FORMAT_CURL_OFF_T ".%06ld\r\n",
+            (curtime / 1000000), (long)(curtime % 1000000));
   }
 
   fprintf(stderr, "UP: %" CURL_FORMAT_CURL_OFF_T " of %" CURL_FORMAT_CURL_OFF_T
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3
index c306937ae..d41812f84 100644
--- a/docs/libcurl/curl_easy_getinfo.3
+++ b/docs/libcurl/curl_easy_getinfo.3
@@ -60,24 +60,45 @@ Remote time of the retrieved document. See 
\fICURLINFO_FILETIME_T(3)\fP
 .IP CURLINFO_TOTAL_TIME
 Total time of previous transfer.
 See \fICURLINFO_TOTAL_TIME(3)\fP
+.IP CURLINFO_TOTAL_TIME_T
+Total time of previous transfer.
+See \fICURLINFO_TOTAL_TIME_T(3)\fP
 .IP CURLINFO_NAMELOOKUP_TIME
 Time from start until name resolving completed.
 See \fICURLINFO_NAMELOOKUP_TIME(3)\fP
+.IP CURLINFO_NAMELOOKUP_TIME_T
+Time from start until name resolving completed.
+See \fICURLINFO_NAMELOOKUP_TIME_T(3)\fP
 .IP CURLINFO_CONNECT_TIME
 Time from start until remote host or proxy completed.
 See \fICURLINFO_CONNECT_TIME(3)\fP
+.IP CURLINFO_CONNECT_TIME_T
+Time from start until remote host or proxy completed.
+See \fICURLINFO_CONNECT_TIME_T(3)\fP
 .IP CURLINFO_APPCONNECT_TIME
 Time from start until SSL/SSH handshake completed.
 See \fICURLINFO_APPCONNECT_TIME(3)\fP
+.IP CURLINFO_APPCONNECT_TIME_T
+Time from start until SSL/SSH handshake completed.
+See \fICURLINFO_APPCONNECT_TIME_T(3)\fP
 .IP CURLINFO_PRETRANSFER_TIME
 Time from start until just before the transfer begins.
 See \fICURLINFO_PRETRANSFER_TIME(3)\fP
+.IP CURLINFO_PRETRANSFER_TIME_T
+Time from start until just before the transfer begins.
+See \fICURLINFO_PRETRANSFER_TIME_T(3)\fP
 .IP CURLINFO_STARTTRANSFER_TIME
 Time from start until just when the first byte is received.
 See \fICURLINFO_STARTTRANSFER_TIME(3)\fP
+.IP CURLINFO_STARTTRANSFER_TIME_T
+Time from start until just when the first byte is received.
+See \fICURLINFO_STARTTRANSFER_TIME_T(3)\fP
 .IP CURLINFO_REDIRECT_TIME
 Time taken for all redirect steps before the final transfer.
 See \fICURLINFO_REDIRECT_TIME(3)\fP
+.IP CURLINFO_REDIRECT_TIME_T
+Time taken for all redirect steps before the final transfer.
+See \fICURLINFO_REDIRECT_TIME_T(3)\fP
 .IP CURLINFO_REDIRECT_COUNT
 Total number of redirects that were followed.
 See \fICURLINFO_REDIRECT_COUNT(3)\fP
@@ -221,25 +242,32 @@ curl_easy_perform()
     |--|--|--|--|--|--REDIRECT
 .fi
 .IP NAMELOOKUP
-\fICURLINFO_NAMELOOKUP_TIME\fP. The time it took from the start until the name
-resolving was completed.
+\fICURLINFO_NAMELOOKUP_TIME\fP and \fIfICURLINFO_NAMELOOKUP_TIME_T\fP.
+The time it took from the start until the name resolving was completed.
 .IP CONNECT
-\fICURLINFO_CONNECT_TIME\fP. The time it took from the start until the connect
+\fICURLINFO_CONNECT_TIME\fP and \fICURLINFO_CONNECT_TIME_T\fP.
+The time it took from the start until the connect
 to the remote host (or proxy) was completed.
 .IP APPCONNECT
-\fICURLINFO_APPCONNECT_TIME\fP. The time it took from the start until the SSL
-connect/handshake with the remote host was completed. (Added in in 7.19.0)
+\fICURLINFO_APPCONNECT_TIME\fP and \fICURLINFO_APPCONNECT_TIME_T\fP.
+The time it took from the start until the SSL
+connect/handshake with the remote host was completed. (Added in 7.19.0)
+The latter is the integer version (measuring microseconds).  (Added in 7.60.0)
 .IP PRETRANSFER
-\fICURLINFO_PRETRANSFER_TIME\fP. The time it took from the start until the
+\fICURLINFO_PRETRANSFER_TIME\fP and \fICURLINFO_PRETRANSFER_TIME_T\fP.
+The time it took from the start until the
 file transfer is just about to begin. This includes all pre-transfer commands
 and negotiations that are specific to the particular protocol(s) involved.
 .IP STARTTRANSFER
-\fICURLINFO_STARTTRANSFER_TIME\fP. The time it took from the start until the
+\fICURLINFO_STARTTRANSFER_TIME\fP and \fICURLINFO_STARTTRANSFER_TIME_T\fP.
+The time it took from the start until the
 first byte is received by libcurl.
 .IP TOTAL
-\fICURLINFO_TOTAL_TIME\fP. Total time of the previous request.
+\fICURLINFO_TOTAL_TIME\fP and \fICURLINFO_TOTAL_TIME_T\fP.
+Total time of the previous request.
 .IP REDIRECT
-\fICURLINFO_REDIRECT_TIME\fP. The time it took for all redirection steps
+\fICURLINFO_REDIRECT_TIME\fP and \fICURLINFO_REDIRECT_TIME_T\fP.
+The time it took for all redirection steps
 include name lookup, connect, pretransfer and transfer before final
 transaction was started. So, this is zero if no redirection took place.
 .SH RETURN VALUE
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 
b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
index dee0981ed..fb0c982a4 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
@@ -59,4 +59,4 @@ Added in 7.19.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_APPCONNECT_TIME_T "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3 
b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
similarity index 73%
copy from docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
copy to docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
index dee0981ed..8c06d68fb 100644
--- a/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_APPCONNECT_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,17 +20,18 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_APPCONNECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" 
"curl_easy_getinfo options"
+.TH CURLINFO_APPCONNECT_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" 
"curl_easy_getinfo options"
 .SH NAME
-CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is 
completed
+CURLINFO_APPCONNECT_TIME_T \- get the time until the SSL/SSH handshake is 
completed
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME, double 
*timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T, 
curl_off_t *timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the time, in seconds, it took from the
+Pass a pointer to a curl_off_t to receive the time, in microseconds,
+it took from the
 start until the SSL/SSH connect/handshake to the remote host was completed.
-This time is most often very near to the \fICURLINFO_PRETRANSFER_TIME(3)\fP
+This time is most often very near to the \fICURLINFO_PRETRANSFER_TIME_T(3)\fP
 time, except for cases such as HTTP pipelining where the pretransfer time can
 be delayed due to waits in line for the pipeline and more.
 
@@ -41,13 +42,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double connect;
+  curl_off_t connect;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME, &connect);
+    res = curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME_T, &connect);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", connect);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", connect / 1000000,
+             (long)(connect % 1000000));
     }
   }
   /* always cleanup */
@@ -55,8 +57,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.19.0
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_APPCONNECT_TIME "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 
b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
index f9e5d812a..4b6d3dee9 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
@@ -56,4 +56,4 @@ Added in 7.4.1
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " CURLINFO_CONNECT_TIME_T 
"(3)"
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 
b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
similarity index 67%
copy from docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
copy to docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
index dea83d88e..aed2e9d22 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_CONNECT_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,18 +20,16 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_TOTAL_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo 
options"
+.TH CURLINFO_CONNECT_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" 
"curl_easy_getinfo options"
 .SH NAME
-CURLINFO_TOTAL_TIME \- get total time of previous transfer
+CURLINFO_CONNECT_TIME_T \- get the time until connect
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T, curl_off_t 
*timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the total time in seconds for the
-previous transfer, including name resolving, TCP connect etc. The double
-represents the time in seconds, including fractions.
-
+Pass a pointer to a curl_off_t to receive the total time in microseconds
+from the start until the connection to the remote host (or proxy) was 
completed.
 See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
 .SH PROTOCOLS
 All
@@ -39,13 +37,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double total;
+  curl_off_t connect;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total);
+    res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME_T, &connect);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", total);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", connect / 1000000,
+             (long)(connect % 1000000));
     }
   }
   /* always cleanup */
@@ -53,8 +52,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " CURLINFO_CONNECT_TIME 
"(3)"
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 
b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
index 3d98ab79d..db916d4a8 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
@@ -56,4 +56,4 @@ Added in 7.4.1
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_NAMELOOKUP_TIME_T "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3 
b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
similarity index 69%
copy from docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
copy to docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
index 3d98ab79d..0c13eb243 100644
--- a/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_NAMELOOKUP_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,16 +20,16 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_NAMELOOKUP_TIME 3 "28 Aug 2015" "libcurl 7.44.0" 
"curl_easy_getinfo options"
+.TH CURLINFO_NAMELOOKUP_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" 
"curl_easy_getinfo options"
 .SH NAME
-CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
+CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME, double 
*timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T, 
curl_off_t *timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the total time in seconds from the start
-until the name resolving was completed.
+Pass a pointer to a curl_off_t to receive the total time in microseconds
+from the start until the name resolving was completed.
 
 See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
 .SH PROTOCOLS
@@ -38,13 +38,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double namelookup;
+  curl_off_t namelookup;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &namelookup);
+    res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME_T, &namelookup);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", namelookup);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", namelookup / 1000000,
+             (long)(namelookup % 1000000));
     }
   }
   /* always cleanup */
@@ -52,8 +53,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_NAMELOOKUP_TIME "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 
b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
index 04802f21c..fdc31d60c 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
@@ -59,4 +59,4 @@ Added in 7.4.1
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_PRETRANSFER_TIME_T "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3 
b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
similarity index 73%
copy from docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
copy to docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
index 04802f21c..2bdc3c256 100644
--- a/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_PRETRANSFER_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,15 +20,16 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_PRETRANSFER_TIME 3 "28 Aug 2015" "libcurl 7.44.0" 
"curl_easy_getinfo options"
+.TH CURLINFO_PRETRANSFER_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" 
"curl_easy_getinfo options"
 .SH NAME
-CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
+CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME, double 
*timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T, 
curl_off_t *timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the time, in seconds, it took from the
+Pass a pointer to a curl_off_t to receive the time, in microseconds,
+it took from the
 start until the file transfer is just about to begin. This includes all
 pre-transfer commands and negotiations that are specific to the particular
 protocol(s) involved. It does \fInot\fP involve the sending of the protocol-
@@ -41,13 +42,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double pretransfer;
+  curl_off_t pretransfer;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &pretransfer);
+    res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME_T, &pretransfer);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", pretransfer);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", pretransfer / 1000000,
+             (long)(pretransfer % 1000000));
     }
   }
   /* always cleanup */
@@ -55,8 +57,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_PRETRANSFER_TIME "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 
b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
index 26416c1b4..3cc58729b 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
@@ -58,4 +58,4 @@ Added in 7.9.7
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_REDIRECT_TIME_T "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3 
b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
similarity index 65%
copy from docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
copy to docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
index 26416c1b4..20fa0313b 100644
--- a/docs/libcurl/opts/CURLINFO_REDIRECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_REDIRECT_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,18 +20,19 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_REDIRECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo 
options"
+.TH CURLINFO_REDIRECT_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" 
"curl_easy_getinfo options"
 .SH NAME
-CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
+CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME, double 
*timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T, curl_off_t 
*timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the total time, in seconds, it took for
+Pass a pointer to a curl_off_t to receive the total time, in microseconds,
+it took for
 all redirection steps include name lookup, connect, pretransfer and transfer
-before final transaction was started. CURLINFO_REDIRECT_TIME contains the
-complete execution time for multiple redirections.
+before final transaction was started. \fICURLINFO_REDIRECT_TIME_T\fP contains
+the complete execution time for multiple redirections.
 
 See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
 .SH PROTOCOLS
@@ -40,13 +41,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double redirect;
+  curl_off_t redirect;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME, &redirect);
+    res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME_T, &redirect);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", redirect);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", redirect / 1000000,
+             (long)(redirect % 1000000));
     }
   }
   /* always cleanup */
@@ -54,8 +56,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.9.7
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " CURLINFO_REDIRECT_TIME 
"(3)"
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 
b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
index fa2e6c53b..e5252804d 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
@@ -58,4 +58,4 @@ Added in 7.9.2
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_STARTTRANSFER_TIME_T "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3 
b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
similarity index 69%
copy from docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
copy to docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
index fa2e6c53b..76d354629 100644
--- a/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_STARTTRANSFER_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,17 +20,18 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_STARTTRANSFER_TIME 3 "28 Aug 2015" "libcurl 7.44.0" 
"curl_easy_getinfo options"
+.TH CURLINFO_STARTTRANSFER_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" 
"curl_easy_getinfo options"
 .SH NAME
-CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
+CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME, double 
*timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T, 
curl_off_t *timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the time, in seconds, it took from the
+Pass a pointer to a curl_off_t to receive the time, in microseconds,
+it took from the
 start until the first byte is received by libcurl. This includes
-\fICURLINFO_PRETRANSFER_TIME(3)\fP and also the time the server needs to
+\fICURLINFO_PRETRANSFER_TIME_T(3)\fP and also the time the server needs to
 calculate the result.
 
 See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
@@ -40,13 +41,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double start;
+  curl_off_t start;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &start);
+    res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME_T, &start);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", start);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", start / 1000000,
+             (long)(start % 1000000));
     }
   }
   /* always cleanup */
@@ -54,8 +56,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.9.2
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " 
CURLINFO_STARTTRANSFER_TIME "(3)"
diff --git a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3 
b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
index dea83d88e..e2386a94b 100644
--- a/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME.3
@@ -57,4 +57,4 @@ Added in 7.4.1
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " CURLINFO_TOTAL_TIME_T 
"(3)"
diff --git a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3 
b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
similarity index 66%
copy from docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
copy to docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
index f9e5d812a..313425bef 100644
--- a/docs/libcurl/opts/CURLINFO_CONNECT_TIME.3
+++ b/docs/libcurl/opts/CURLINFO_TOTAL_TIME_T.3
@@ -5,7 +5,7 @@
 .\" *                            | (__| |_| |  _ <| |___
 .\" *                             \___|\___/|_| \_\_____|
 .\" *
-.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <address@hidden>, et al.
+.\" * Copyright (C) 2018, Daniel Stenberg, <address@hidden>, et al.
 .\" *
 .\" * This software is licensed as described in the file COPYING, which
 .\" * you should have received as part of this distribution. The terms
@@ -20,16 +20,17 @@
 .\" *
 .\" **************************************************************************
 .\"
-.TH CURLINFO_CONNECT_TIME 3 "28 Aug 2015" "libcurl 7.44.0" "curl_easy_getinfo 
options"
+.TH CURLINFO_TOTAL_TIME_T 3 "28 Apr 2018" "libcurl 7.61.0" "curl_easy_getinfo 
options"
 .SH NAME
-CURLINFO_CONNECT_TIME \- get the time until connect
+CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
 .SH SYNOPSIS
 #include <curl/curl.h>
 
-CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
+CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T, curl_off_t 
*timep);
 .SH DESCRIPTION
-Pass a pointer to a double to receive the total time in seconds from the start
-until the connection to the remote host (or proxy) was completed.
+Pass a pointer to a curl_off_t to receive the total time in microseconds
+for the previous transfer, including name resolving, TCP connect etc.
+The curl_off_t represents the time in microseconds.
 
 See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
 .SH PROTOCOLS
@@ -38,13 +39,14 @@ All
 .nf
 curl = curl_easy_init();
 if(curl) {
-  double connect;
+  curl_off_t total;
   curl_easy_setopt(curl, CURLOPT_URL, url);
   res = curl_easy_perform(curl);
   if(CURLE_OK == res) {
-    res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &connect);
+    res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total);
     if(CURLE_OK == res) {
-      printf("Time: %.1f", connect);
+      printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", total / 1000000,
+             (long)(total % 1000000));
     }
   }
   /* always cleanup */
@@ -52,8 +54,8 @@ if(curl) {
 }
 .fi
 .SH AVAILABILITY
-Added in 7.4.1
+Added in 7.61.0
 .SH RETURN VALUE
 Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
 .SH "SEE ALSO"
-.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), "
+.BR curl_easy_getinfo "(3), " curl_easy_setopt "(3), " CURLINFO_TOTAL_TIME 
"(3)"
diff --git a/docs/libcurl/opts/Makefile.inc b/docs/libcurl/opts/Makefile.inc
index 80488bfa3..74a76a7dd 100644
--- a/docs/libcurl/opts/Makefile.inc
+++ b/docs/libcurl/opts/Makefile.inc
@@ -3,9 +3,11 @@
 man_MANS =                                      \
   CURLINFO_ACTIVESOCKET.3                       \
   CURLINFO_APPCONNECT_TIME.3                    \
+  CURLINFO_APPCONNECT_TIME_T.3                  \
   CURLINFO_CERTINFO.3                           \
   CURLINFO_CONDITION_UNMET.3                    \
   CURLINFO_CONNECT_TIME.3                       \
+  CURLINFO_CONNECT_TIME_T.3                     \
   CURLINFO_CONTENT_LENGTH_DOWNLOAD.3            \
   CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3          \
   CURLINFO_CONTENT_LENGTH_UPLOAD.3              \
@@ -24,9 +26,11 @@ man_MANS =                                      \
   CURLINFO_LOCAL_IP.3                           \
   CURLINFO_LOCAL_PORT.3                         \
   CURLINFO_NAMELOOKUP_TIME.3                    \
+  CURLINFO_NAMELOOKUP_TIME_T.3                  \
   CURLINFO_NUM_CONNECTS.3                       \
   CURLINFO_OS_ERRNO.3                           \
   CURLINFO_PRETRANSFER_TIME.3                   \
+  CURLINFO_PRETRANSFER_TIME_T.3                 \
   CURLINFO_PRIMARY_IP.3                         \
   CURLINFO_PRIMARY_PORT.3                       \
   CURLINFO_PRIVATE.3                            \
@@ -35,6 +39,7 @@ man_MANS =                                      \
   CURLINFO_PROXY_SSL_VERIFYRESULT.3             \
   CURLINFO_REDIRECT_COUNT.3                     \
   CURLINFO_REDIRECT_TIME.3                      \
+  CURLINFO_REDIRECT_TIME_T.3                    \
   CURLINFO_REDIRECT_URL.3                       \
   CURLINFO_REQUEST_SIZE.3                       \
   CURLINFO_RESPONSE_CODE.3                      \
@@ -54,9 +59,11 @@ man_MANS =                                      \
   CURLINFO_SSL_ENGINES.3                        \
   CURLINFO_SSL_VERIFYRESULT.3                   \
   CURLINFO_STARTTRANSFER_TIME.3                 \
+  CURLINFO_STARTTRANSFER_TIME_T.3               \
   CURLINFO_TLS_SESSION.3                        \
   CURLINFO_TLS_SSL_PTR.3                        \
   CURLINFO_TOTAL_TIME.3                         \
+  CURLINFO_TOTAL_TIME_T.3                       \
   CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3          \
   CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3        \
   CURLMOPT_MAXCONNECTS.3                        \
diff --git a/docs/libcurl/symbols-in-versions b/docs/libcurl/symbols-in-versions
index 52e8407dd..7df2d700c 100644
--- a/docs/libcurl/symbols-in-versions
+++ b/docs/libcurl/symbols-in-versions
@@ -206,9 +206,11 @@ CURLHEADER_SEPARATE             7.37.0
 CURLHEADER_UNIFIED              7.37.0
 CURLINFO_ACTIVESOCKET           7.45.0
 CURLINFO_APPCONNECT_TIME        7.19.0
+CURLINFO_APPCONNECT_TIME_T      7.61.0
 CURLINFO_CERTINFO               7.19.1
 CURLINFO_CONDITION_UNMET        7.19.4
 CURLINFO_CONNECT_TIME           7.4.1
+CURLINFO_CONNECT_TIME_T         7.61.0
 CURLINFO_CONTENT_LENGTH_DOWNLOAD 7.6.1
 CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 7.55.0
 CURLINFO_CONTENT_LENGTH_UPLOAD  7.6.1
@@ -237,11 +239,13 @@ CURLINFO_LOCAL_PORT             7.21.0
 CURLINFO_LONG                   7.4.1
 CURLINFO_MASK                   7.4.1
 CURLINFO_NAMELOOKUP_TIME        7.4.1
+CURLINFO_NAMELOOKUP_TIME_T      7.61.0
 CURLINFO_NONE                   7.4.1
 CURLINFO_NUM_CONNECTS           7.12.3
 CURLINFO_OFF_T                  7.55.0
 CURLINFO_OS_ERRNO               7.12.2
 CURLINFO_PRETRANSFER_TIME       7.4.1
+CURLINFO_PRETRANSFER_TIME_T     7.61.0
 CURLINFO_PRIMARY_IP             7.19.0
 CURLINFO_PRIMARY_PORT           7.21.0
 CURLINFO_PRIVATE                7.10.3
@@ -251,6 +255,7 @@ CURLINFO_PROXY_SSL_VERIFYRESULT 7.52.0
 CURLINFO_PTR                    7.54.1
 CURLINFO_REDIRECT_COUNT         7.9.7
 CURLINFO_REDIRECT_TIME          7.9.7
+CURLINFO_REDIRECT_TIME_T        7.61.0
 CURLINFO_REDIRECT_URL           7.18.2
 CURLINFO_REQUEST_SIZE           7.4.1
 CURLINFO_RESPONSE_CODE          7.10.8
@@ -274,11 +279,13 @@ CURLINFO_SSL_DATA_OUT           7.12.1
 CURLINFO_SSL_ENGINES            7.12.3
 CURLINFO_SSL_VERIFYRESULT       7.5
 CURLINFO_STARTTRANSFER_TIME     7.9.2
+CURLINFO_STARTTRANSFER_TIME_T   7.61.0
 CURLINFO_STRING                 7.4.1
 CURLINFO_TEXT                   7.9.6
 CURLINFO_TLS_SESSION            7.34.0        7.48.0
 CURLINFO_TLS_SSL_PTR            7.48.0
 CURLINFO_TOTAL_TIME             7.4.1
+CURLINFO_TOTAL_TIME_T           7.61.0
 CURLINFO_TYPEMASK               7.4.1
 CURLIOCMD_NOP                   7.12.3
 CURLIOCMD_RESTARTREAD           7.12.3
diff --git a/include/curl/curl.h b/include/curl/curl.h
index 3fd4ca87d..42dfc78bc 100644
--- a/include/curl/curl.h
+++ b/include/curl/curl.h
@@ -2527,7 +2527,17 @@ typedef enum {
   CURLINFO_SCHEME           = CURLINFO_STRING + 49,
   /* Fill in new entries below here! */
 
-  CURLINFO_LASTONE          = 49
+  /* Preferably these would be defined conditionally based on the
+     sizeof curl_off_t being 64-bits */
+  CURLINFO_TOTAL_TIME_T     = CURLINFO_OFF_T + 50,
+  CURLINFO_NAMELOOKUP_TIME_T = CURLINFO_OFF_T + 51,
+  CURLINFO_CONNECT_TIME_T   = CURLINFO_OFF_T + 52,
+  CURLINFO_PRETRANSFER_TIME_T = CURLINFO_OFF_T + 53,
+  CURLINFO_STARTTRANSFER_TIME_T = CURLINFO_OFF_T + 54,
+  CURLINFO_REDIRECT_TIME_T  = CURLINFO_OFF_T + 55,
+  CURLINFO_APPCONNECT_TIME_T = CURLINFO_OFF_T + 56,
+
+  CURLINFO_LASTONE          = 56
 } CURLINFO;
 
 /* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
diff --git a/lib/getinfo.c b/lib/getinfo.c
index d280eebfa..14b456274 100644
--- a/lib/getinfo.c
+++ b/lib/getinfo.c
@@ -281,6 +281,28 @@ static CURLcode getinfo_offt(struct Curl_easy *data, 
CURLINFO info,
     *param_offt = (data->progress.flags & PGRS_UL_SIZE_KNOWN)?
       data->progress.size_ul:-1;
     break;
+  case CURLINFO_TOTAL_TIME_T:
+    *param_offt = data->progress.timespent;
+    break;
+  case CURLINFO_NAMELOOKUP_TIME_T:
+    *param_offt = data->progress.t_nslookup;
+    break;
+  case CURLINFO_CONNECT_TIME_T:
+    *param_offt = data->progress.t_connect;
+    break;
+  case CURLINFO_APPCONNECT_TIME_T:
+    *param_offt = data->progress.t_appconnect;
+    break;
+  case CURLINFO_PRETRANSFER_TIME_T:
+    *param_offt = data->progress.t_pretransfer;
+    break;
+  case CURLINFO_STARTTRANSFER_TIME_T:
+    *param_offt = data->progress.t_starttransfer;
+    break;
+  case CURLINFO_REDIRECT_TIME_T:
+    *param_offt = data->progress.t_redirect;
+    break;
+
   default:
     return CURLE_UNKNOWN_OPTION;
   }
diff --git a/tests/libtest/lib500.c b/tests/libtest/lib500.c
index 677ab73a7..2a6c58bb5 100644
--- a/tests/libtest/lib500.c
+++ b/tests/libtest/lib500.c
@@ -96,36 +96,50 @@ int test(char *URL)
     if(libtest_arg2) {
       FILE *moo = fopen(libtest_arg2, "wb");
       if(moo) {
-        double time_namelookup;
-        double time_connect;
-        double time_pretransfer;
-        double time_starttransfer;
-        double time_total;
+        curl_off_t time_namelookup;
+        curl_off_t time_connect;
+        curl_off_t time_pretransfer;
+        curl_off_t time_starttransfer;
+        curl_off_t time_total;
         fprintf(moo, "IP: %s\n", ipstr);
-        curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &time_namelookup);
-        curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &time_connect);
-        curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &time_pretransfer);
-        curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME,
+        curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME_T, &time_namelookup);
+        curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME_T, &time_connect);
+        curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME_T,
+                          &time_pretransfer);
+        curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME_T,
                           &time_starttransfer);
-        curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &time_total);
+        curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &time_total);
 
         /* since the timing will always vary we only compare relative
            differences between these 5 times */
         if(time_namelookup > time_connect) {
-          fprintf(moo, "namelookup vs connect: %f %f\n",
-                  time_namelookup, time_connect);
+          fprintf(moo, "namelookup vs connect: %" CURL_FORMAT_CURL_OFF_T
+                  ".%06ld %" CURL_FORMAT_CURL_OFF_T ".%06ld\n",
+                  (time_namelookup / 1000000),
+                  (long)(time_namelookup % 1000000),
+                  (time_connect / 1000000), (long)(time_connect % 1000000));
         }
         if(time_connect > time_pretransfer) {
-          fprintf(moo, "connect vs pretransfer: %f %f\n",
-                  time_connect, time_pretransfer);
+          fprintf(moo, "connect vs pretransfer: %" CURL_FORMAT_CURL_OFF_T
+                  ".%06ld %" CURL_FORMAT_CURL_OFF_T ".%06ld\n",
+                  (time_connect / 1000000), (long)(time_connect % 1000000),
+                  (time_pretransfer / 1000000),
+                  (long)(time_pretransfer % 1000000));
         }
         if(time_pretransfer > time_starttransfer) {
-          fprintf(moo, "pretransfer vs starttransfer: %f %f\n",
-                  time_pretransfer, time_starttransfer);
+          fprintf(moo, "pretransfer vs starttransfer: %" CURL_FORMAT_CURL_OFF_T
+                  ".%06ld %" CURL_FORMAT_CURL_OFF_T ".%06ld\n",
+                  (time_pretransfer / 1000000),
+                  (long)(time_pretransfer % 1000000),
+                  (time_starttransfer / 1000000),
+                  (long)(time_starttransfer % 1000000));
         }
         if(time_starttransfer > time_total) {
-          fprintf(moo, "starttransfer vs total: %f %f\n",
-                  time_starttransfer, time_total);
+          fprintf(moo, "starttransfer vs total: %" CURL_FORMAT_CURL_OFF_T
+                  ".%06ld %" CURL_FORMAT_CURL_OFF_T ".%06ld\n",
+                  (time_starttransfer / 1000000),
+                  (long)(time_starttransfer % 1000000),
+                  (time_total / 1000000), (long)(time_total % 1000000));
         }
 
         fclose(moo);

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]