From f88d865bf4612ee9ce6b311952ae6d2f2bbf05c0 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 12 Aug 2019 09:20:04 +0200 Subject: CURLOPT_READFUNCTION.3: provide inline example ... instead of mentioning one in another place --- docs/libcurl/opts/CURLOPT_READFUNCTION.3 | 33 ++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) (limited to 'docs/libcurl') diff --git a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 b/docs/libcurl/opts/CURLOPT_READFUNCTION.3 index df6681c38..30b0925eb 100644 --- a/docs/libcurl/opts/CURLOPT_READFUNCTION.3 +++ b/docs/libcurl/opts/CURLOPT_READFUNCTION.3 @@ -69,8 +69,37 @@ The default internal read callback is fread(). .SH PROTOCOLS This is used for all protocols when doing uploads. .SH EXAMPLE -Here's an example setting a read callback for reading that to upload to an FTP -site: https://curl.haxx.se/libcurl/c/ftpupload.html +.nf +size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userdata) +{ + FILE *readhere = (FILE *)userdata; + curl_off_t nread; + + /* copy as much data as possible into the 'ptr' buffer, but no more than + 'size' * 'nmemb' bytes! */ + size_t retcode = fread(ptr, size, nmemb, readhere); + + nread = (curl_off_t)retcode; + + fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T + " bytes from file\\n", nread); + return retcode; +} + +void setup(char *uploadthis) +{ + FILE *file = fopen("rb", uploadthis); + CURLcode result; + + /* set callback to use */ + curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback); + + /* pass in suitable argument to callback */ + curl_easy_setopt(curl, CURLOPT_READDATA, uploadthis); + + result = curl_easy_perform(curl); +} +.fi .SH AVAILABILITY CURL_READFUNC_PAUSE return code was added in 7.18.0 and CURL_READFUNC_ABORT was added in 7.12.1. -- cgit v1.2.3