diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2017-06-15 15:26:00 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2017-06-19 09:27:42 +0200 | 
| commit | 3b80d3ca46b12e52342199f4a8452624bb6e33e2 (patch) | |
| tree | ca9a3520a701148074c1061f65089e985144cbc6 /lib | |
| parent | 6208547002b4d897c14364661ca4e2e5d0b80006 (diff) | |
getinfo: return sizes as curl_off_t
This change introduces new alternatives for the existing six
curl_easy_getinfo() options that return sizes or speeds as doubles. The
new versions are named like the old ones but with an appended '_T':
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T
CURLINFO_CONTENT_LENGTH_UPLOAD_T
CURLINFO_SIZE_DOWNLOAD_T
CURLINFO_SIZE_UPLOAD_T
CURLINFO_SPEED_DOWNLOAD_T
CURLINFO_SPEED_UPLOAD_T
Closes #1511
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/getinfo.c | 37 | 
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/getinfo.c b/lib/getinfo.c index b94a5359a..dc3a107e9 100644 --- a/lib/getinfo.c +++ b/lib/getinfo.c @@ -248,6 +248,37 @@ static CURLcode getinfo_long(struct Curl_easy *data, CURLINFO info,  #define DOUBLE_SECS(x) (double)(x)/1000000 +static CURLcode getinfo_offt(struct Curl_easy *data, CURLINFO info, +                             curl_off_t *param_offt) +{ +  switch(info) { +  case CURLINFO_SIZE_UPLOAD_T: +    *param_offt = data->progress.uploaded; +    break; +  case CURLINFO_SIZE_DOWNLOAD_T: +    *param_offt = data->progress.downloaded; +    break; +  case CURLINFO_SPEED_DOWNLOAD_T: +    *param_offt =  data->progress.dlspeed; +    break; +  case CURLINFO_SPEED_UPLOAD_T: +    *param_offt = data->progress.ulspeed; +    break; +  case CURLINFO_CONTENT_LENGTH_DOWNLOAD_T: +    *param_offt = (data->progress.flags & PGRS_DL_SIZE_KNOWN)? +      data->progress.size_dl:-1; +    break; +  case CURLINFO_CONTENT_LENGTH_UPLOAD_T: +    *param_offt = (data->progress.flags & PGRS_UL_SIZE_KNOWN)? +      data->progress.size_ul:-1; +    break; +  default: +    return CURLE_UNKNOWN_OPTION; +  } + +  return CURLE_OK; +} +  static CURLcode getinfo_double(struct Curl_easy *data, CURLINFO info,                                 double *param_doublep)  { @@ -396,6 +427,7 @@ CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info, ...)    va_list arg;    long *param_longp = NULL;    double *param_doublep = NULL; +  curl_off_t *param_offt = NULL;    const char **param_charp = NULL;    struct curl_slist **param_slistp = NULL;    curl_socket_t *param_socketp = NULL; @@ -424,6 +456,11 @@ CURLcode Curl_getinfo(struct Curl_easy *data, CURLINFO info, ...)      if(param_doublep)        result = getinfo_double(data, info, param_doublep);      break; +  case CURLINFO_OFF_T: +    param_offt = va_arg(arg, curl_off_t *); +    if(param_offt) +      result = getinfo_offt(data, info, param_offt); +    break;    case CURLINFO_SLIST:      param_slistp = va_arg(arg, struct curl_slist **);      if(param_slistp)  | 
