|  | .\" ************************************************************************** | 
|  | .\" *                                  _   _ ____  _ | 
|  | .\" *  Project                     ___| | | |  _ \| | | 
|  | .\" *                             / __| | | | |_) | | | 
|  | .\" *                            | (__| |_| |  _ <| |___ | 
|  | .\" *                             \___|\___/|_| \_\_____| | 
|  | .\" * | 
|  | .\" * Copyright (C) 1998 - 2020, 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 https://curl.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. | 
|  | .\" * | 
|  | .\" ************************************************************************** | 
|  | .\" | 
|  | .TH CURLOPT_XFERINFOFUNCTION 3 "17 Jun 2014" "libcurl 7.37.0" "curl_easy_setopt options" | 
|  | .SH NAME | 
|  | CURLOPT_XFERINFOFUNCTION \- callback to progress meter function | 
|  | .SH SYNOPSIS | 
|  | #include <curl/curl.h> | 
|  |  | 
|  | int progress_callback(void *clientp, | 
|  | curl_off_t dltotal, | 
|  | curl_off_t dlnow, | 
|  | curl_off_t ultotal, | 
|  | curl_off_t ulnow); | 
|  |  | 
|  | CURLcode curl_easy_setopt(CURL *handle, CURLOPT_XFERINFOFUNCTION, progress_callback); | 
|  | .SH DESCRIPTION | 
|  | Pass a pointer to your callback function, which should match the prototype | 
|  | shown above. | 
|  |  | 
|  | This function gets called by libcurl instead of its internal equivalent with a | 
|  | frequent interval. While data is being transferred it will be called very | 
|  | frequently, and during slow periods like when nothing is being transferred it | 
|  | can slow down to about one call per second. | 
|  |  | 
|  | \fIclientp\fP is the pointer set with \fICURLOPT_XFERINFODATA(3)\fP, it is not | 
|  | used by libcurl but is only passed along from the application to the callback. | 
|  |  | 
|  | The callback gets told how much data libcurl will transfer and has | 
|  | transferred, in number of bytes. \fIdltotal\fP is the total number of bytes | 
|  | libcurl expects to download in this transfer. \fIdlnow\fP is the number of | 
|  | bytes downloaded so far. \fIultotal\fP is the total number of bytes libcurl | 
|  | expects to upload in this transfer. \fIulnow\fP is the number of bytes | 
|  | uploaded so far. | 
|  |  | 
|  | Unknown/unused argument values passed to the callback will be set to zero | 
|  | (like if you only download data, the upload size will remain 0). Many times | 
|  | the callback will be called one or more times first, before it knows the data | 
|  | sizes so a program must be made to handle that. | 
|  |  | 
|  | If your callback function returns CURL_PROGRESSFUNC_CONTINUE it will cause | 
|  | libcurl to continue executing the default progress function. | 
|  |  | 
|  | Returning any other non-zero value from this callback will cause libcurl to | 
|  | abort the transfer and return \fICURLE_ABORTED_BY_CALLBACK\fP. | 
|  |  | 
|  | If you transfer data with the multi interface, this function will not be | 
|  | called during periods of idleness unless you call the appropriate libcurl | 
|  | function that performs transfers. | 
|  |  | 
|  | \fICURLOPT_NOPROGRESS(3)\fP must be set to 0 to make this function actually | 
|  | get called. | 
|  | .SH DEFAULT | 
|  | By default, libcurl has an internal progress meter. That's rarely wanted by | 
|  | users. | 
|  | .SH PROTOCOLS | 
|  | All | 
|  | .SH EXAMPLE | 
|  | https://curl.se/libcurl/c/progressfunc.html | 
|  | .SH AVAILABILITY | 
|  | Added in 7.32.0. This callback replaces \fICURLOPT_PROGRESSFUNCTION(3)\fP | 
|  | .SH RETURN VALUE | 
|  | Returns CURLE_OK. | 
|  | .SH "SEE ALSO" | 
|  | .BR CURLOPT_XFERINFODATA "(3), " CURLOPT_NOPROGRESS "(3), " |