CURLOPT_PROGRESSDATA.3 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. .\" generated by cd2nroff 0.1 from CURLOPT_PROGRESSDATA.md
  2. .TH CURLOPT_PROGRESSDATA 3 "2025-01-17" libcurl
  3. .SH NAME
  4. CURLOPT_PROGRESSDATA \- pointer passed to the progress callback
  5. .SH SYNOPSIS
  6. .nf
  7. #include <curl/curl.h>
  8. CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PROGRESSDATA, void *pointer);
  9. .fi
  10. .SH DESCRIPTION
  11. Pass a \fIpointer\fP that is untouched by libcurl and passed as the first
  12. argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION(3)\fP.
  13. .SH DEFAULT
  14. NULL
  15. .SH PROTOCOLS
  16. This functionality affects all supported protocols
  17. .SH EXAMPLE
  18. .nf
  19. struct progress {
  20. char *private;
  21. size_t size;
  22. };
  23. static size_t progress_callback(void *clientp,
  24. double dltotal,
  25. double dlnow,
  26. double ultotal,
  27. double ulnow)
  28. {
  29. struct progress *memory = clientp;
  30. printf("private: %p\\n", memory->private);
  31. /* use the values */
  32. return 0; /* all is good */
  33. }
  34. int main(void)
  35. {
  36. CURL *curl = curl_easy_init();
  37. if(curl) {
  38. struct progress data;
  39. /* pass struct to callback */
  40. curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &data);
  41. curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_callback);
  42. curl_easy_perform(curl);
  43. }
  44. }
  45. .fi
  46. .SH AVAILABILITY
  47. Added in curl 7.1
  48. .SH RETURN VALUE
  49. Returns CURLE_OK
  50. .SH SEE ALSO
  51. .BR CURLOPT_PROGRESSFUNCTION (3),
  52. .BR CURLOPT_XFERINFOFUNCTION (3)