CURLOPT_CHUNK_DATA.3 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. .\" generated by cd2nroff 0.1 from CURLOPT_CHUNK_DATA.md
  2. .TH CURLOPT_CHUNK_DATA 3 "2025-01-17" libcurl
  3. .SH NAME
  4. CURLOPT_CHUNK_DATA \- pointer passed to the FTP chunk callbacks
  5. .SH SYNOPSIS
  6. .nf
  7. #include <curl/curl.h>
  8. CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CHUNK_DATA, void *pointer);
  9. .fi
  10. .SH DESCRIPTION
  11. Pass a \fIpointer\fP that is untouched by libcurl and passed as the ptr
  12. argument to the \fICURLOPT_CHUNK_BGN_FUNCTION(3)\fP and
  13. \fICURLOPT_CHUNK_END_FUNCTION(3)\fP.
  14. .SH DEFAULT
  15. NULL
  16. .SH PROTOCOLS
  17. This functionality affects ftp only
  18. .SH EXAMPLE
  19. .nf
  20. #include <stdio.h>
  21. struct callback_data {
  22. FILE *output;
  23. };
  24. static long file_is_coming(struct curl_fileinfo *finfo,
  25. void *ptr,
  26. int remains)
  27. {
  28. struct callback_data *data = ptr;
  29. printf("%3d %40s %10luB ", remains, finfo->filename,
  30. (unsigned long)finfo->size);
  31. switch(finfo->filetype) {
  32. case CURLFILETYPE_DIRECTORY:
  33. printf(" DIR\\n");
  34. break;
  35. case CURLFILETYPE_FILE:
  36. printf("FILE ");
  37. break;
  38. default:
  39. printf("OTHER\\n");
  40. break;
  41. }
  42. if(finfo->filetype == CURLFILETYPE_FILE) {
  43. /* do not transfer files >= 50B */
  44. if(finfo->size > 50) {
  45. printf("SKIPPED\\n");
  46. return CURL_CHUNK_BGN_FUNC_SKIP;
  47. }
  48. data->output = fopen(finfo->filename, "wb");
  49. if(!data->output) {
  50. return CURL_CHUNK_BGN_FUNC_FAIL;
  51. }
  52. }
  53. return CURL_CHUNK_BGN_FUNC_OK;
  54. }
  55. int main()
  56. {
  57. /* data for callback */
  58. struct callback_data callback_info;
  59. CURL *curl = curl_easy_init();
  60. /* callback is called before download of concrete file started */
  61. curl_easy_setopt(curl, CURLOPT_CHUNK_BGN_FUNCTION, file_is_coming);
  62. curl_easy_setopt(curl, CURLOPT_CHUNK_DATA, &callback_info);
  63. }
  64. .fi
  65. .SH AVAILABILITY
  66. Added in curl 7.21.0
  67. .SH RETURN VALUE
  68. Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
  69. .SH SEE ALSO
  70. .BR CURLOPT_CHUNK_BGN_FUNCTION (3),
  71. .BR CURLOPT_WILDCARDMATCH (3)