diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2011-09-13 22:47:34 +0200 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2011-09-13 22:48:55 +0200 | 
| commit | 6790a543d4b692e0f62971804606fdcbcf84a292 (patch) | |
| tree | 19ec95eb63809c0641584fe8a6653b31a75f6341 | |
| parent | 2411adb40bad8717d1da542bdff5e22cf2ae1a2b (diff) | |
progressfunc: a simple CURLOPT_PROGRESSFUNCTION example
| -rw-r--r-- | docs/examples/.gitignore | 1 | ||||
| -rw-r--r-- | docs/examples/Makefile.inc | 3 | ||||
| -rw-r--r-- | docs/examples/progressfunc.c | 58 | 
3 files changed, 61 insertions, 1 deletions
diff --git a/docs/examples/.gitignore b/docs/examples/.gitignore index 7443de010..2ee9df154 100644 --- a/docs/examples/.gitignore +++ b/docs/examples/.gitignore @@ -26,6 +26,7 @@ multi-single  persistant  post-callback  postit2 +progressfunc  resolve  rtsp  sendrecv diff --git a/docs/examples/Makefile.inc b/docs/examples/Makefile.inc index d1ae9ddbb..bf7337dd8 100644 --- a/docs/examples/Makefile.inc +++ b/docs/examples/Makefile.inc @@ -4,7 +4,8 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \    https multi-app multi-debugcallback multi-double multi-post multi-single \    persistant post-callback postit2 sepheaders simple simplepost simplessl  \    sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \ -  smtp-multi simplesmtp smtp-tls rtsp externalsocket resolve +  smtp-multi simplesmtp smtp-tls rtsp externalsocket resolve \ +  progressfunc  # These examples require external dependencies that may not be commonly  # available on POSIX systems, so don't bother attempting to compile them here. diff --git a/docs/examples/progressfunc.c b/docs/examples/progressfunc.c new file mode 100644 index 000000000..42ed3287b --- /dev/null +++ b/docs/examples/progressfunc.c @@ -0,0 +1,58 @@ +/*************************************************************************** + *                                  _   _ ____  _ + *  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 + +static int progress(void *p, +                    double dltotal, double dlnow, +                    double ultotal, double ulnow) +{ +  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=0; + +  curl = curl_easy_init(); +  if(curl) { +    curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); +    curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress); +    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L); +    res = curl_easy_perform(curl); + +    if(res) +      fprintf(stderr, "%s\n", curl_easy_strerror(res)); + +    /* always cleanup */ +    curl_easy_cleanup(curl); +  } +  return (int)res; +}  | 
