]> granicus.if.org Git - curl/commitdiff
CURLOPT_READFUNCTION.3: provide inline example
authorDaniel Stenberg <daniel@haxx.se>
Mon, 12 Aug 2019 07:20:04 +0000 (09:20 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 12 Aug 2019 07:20:52 +0000 (09:20 +0200)
... instead of mentioning one in another place

docs/libcurl/opts/CURLOPT_READFUNCTION.3

index df6681c384ed605c925396f51b8d710e855be829..30b0925eb3d6aaf9bd39311f45e146deec417224 100644 (file)
@@ -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.