diff options
| author | Kirill Volinsky <mataes2007@gmail.com> | 2013-11-10 18:02:01 +0000 | 
|---|---|---|
| committer | Kirill Volinsky <mataes2007@gmail.com> | 2013-11-10 18:02:01 +0000 | 
| commit | ac48668a549fe76648e0ac3f93c9943383e043f5 (patch) | |
| tree | bcfcf258bd003db20b1ee41fbbff173c8f340031 /plugins/FTPFileYM/curl/docs/examples/progressfunc.c | |
| parent | 64e1340acd813704c9e9009b0a4e6fc9a3fb5adf (diff) | |
curl folder renamed
git-svn-id: http://svn.miranda-ng.org/main/trunk@6858 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/FTPFileYM/curl/docs/examples/progressfunc.c')
| -rw-r--r-- | plugins/FTPFileYM/curl/docs/examples/progressfunc.c | 84 | 
1 files changed, 84 insertions, 0 deletions
diff --git a/plugins/FTPFileYM/curl/docs/examples/progressfunc.c b/plugins/FTPFileYM/curl/docs/examples/progressfunc.c new file mode 100644 index 0000000000..51a9c9b5e5 --- /dev/null +++ b/plugins/FTPFileYM/curl/docs/examples/progressfunc.c @@ -0,0 +1,84 @@ +/*************************************************************************** + *                                  _   _ ____  _ + *  Project                     ___| | | |  _ \| | + *                             / __| | | | |_) | | + *                            | (__| |_| |  _ <| |___ + *                             \___|\___/|_| \_\_____| + * + * Copyright (C) 1998 - 2011, 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 + * are also available at http://curl.haxx.se/docs/copyright.html. + * + * You may opt to use, copy, modify, merge, publish, distribute and/or sell + * copies of the Software, and permit persons to whom the Software is + * furnished to do so, under the terms of the COPYING file. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ***************************************************************************/ +#include <stdio.h> +#include <curl/curl.h> + +#define STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES         6000 +#define MINIMAL_PROGRESS_FUNCTIONALITY_INTERVAL     3 + +struct myprogress { +  double lastruntime; +  CURL *curl; +}; + +static int progress(void *p, +                    double dltotal, double dlnow, +                    double ultotal, double ulnow) +{ +  struct myprogress *myp = (struct myprogress *)p; +  CURL *curl = myp->curl; +  double curtime = 0; + +  curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &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, "UP: %g of %g  DOWN: %g of %g\r\n", +          ulnow, ultotal, dlnow, dltotal); + +  if(dlnow > STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES) +    return 1; +  return 0; +} + +int main(void) +{ +  CURL *curl; +  CURLcode res = CURLE_OK; +  struct myprogress prog; + +  curl = curl_easy_init(); +  if(curl) { +    prog.lastruntime = 0; +    prog.curl = curl; + +    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); +    curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress); +    /* pass the struct pointer into the progress function */ +    curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &prog); +    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); +    res = curl_easy_perform(curl); + +    if(res != CURLE_OK) +      fprintf(stderr, "%s\n", curl_easy_strerror(res)); + +    /* always cleanup */ +    curl_easy_cleanup(curl); +  } +  return (int)res; +}  | 
