From 923d20d27e5ad0114e116271786595c16b72ed27 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Mon, 6 Apr 2020 18:14:10 +0200 Subject: CURLOPT_WRITEFUNCTION.3: add inline example and new see-also --- docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 | 37 +++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 index 11edeb2e9..254246ec1 100644 --- a/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 +++ b/docs/libcurl/opts/CURLOPT_WRITEFUNCTION.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2018, Daniel Stenberg, , et al. +.\" * Copyright (C) 1998 - 2020, Daniel Stenberg, , et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -76,8 +76,37 @@ Support for the CURL_WRITEFUNC_PAUSE return code was added in version 7.18.0. .SH RETURN VALUE This will return CURLE_OK. .SH EXAMPLE -A common technique is to use this callback to store the incoming data into a -dynamically growing allocated buffer. Like in the getinmemory example: -https://curl.haxx.se/libcurl/c/getinmemory.html +.NF + struct memory { + char *response; + size_t size; + }; + + static size_t cb(void *data, size_t size, size_t nmemb, void *userp) + { + size_t realsize = size * nmemb; + struct memory *mem = (struct memory *)userp; + + char *ptr = realloc(mem->response, mem->size + realsize + 1); + if(ptr == NULL) + return 0; /* out of memory! */ + + mem->response = ptr; + memcpy(&(mem->response[mem->size]), data, realsize); + mem->size += realsize; + mem->response[mem->size] = 0; + + return realsize; + } + + struct memory chunk; + + /* send all data to this function */ + curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb); + + /* we pass our 'chunk' struct to the callback function */ + curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk); +.FI .SH "SEE ALSO" .BR CURLOPT_WRITEDATA "(3), " CURLOPT_READFUNCTION "(3), " +.BR CURLOPT_HEADERFUNCTION "(3), " -- cgit v1.2.1