GNURLOPT_COPYPOSTFIELDS(3)

πŸ“¦ version 7.72.0, in nixos 26.05, nixpkgs unstable

okay so this is the GNURLOPT_COPYPOSTFIELDS(3) page from the curl_easy_setopt options set, and it's giving "let libcurl handle the copy, bestie" πŸ’…βœ¨

πŸŽ€ NAME πŸŽ€

CURLOPT_COPYPOSTFIELDS β€” have libcurl copy data to POST 🫢

✨ SYNOPSIS ✨

#include <gnurl/curl.h>

CURLcode curl_easy_setopt(CURL *handle, CURLOPT_COPYPOSTFIELDS, char
       *data);

πŸ’– DESCRIPTION πŸ’–

Pass a char * as parameter, bestie β€” it should be the full data to post in a HTTP POST operation. It behaves as the CURLOPT_POSTFIELDS(3) option, but the original data is instead copied by the library, allowing the application to overwrite the original data after setting this option. Iconic behavior, honestly. 😌

Because data are copied, care must be taken when using this option in conjunction with CURLOPT_POSTFIELDSIZE(3) or CURLOPT_POSTFIELDSIZE_LARGE(3): if the size has not been set prior to CURLOPT_COPYPOSTFIELDS(3), the data is assumed to be a null-terminated string; else the stored size informs the library about the byte count to copy. Write that down, bestie. πŸ“

In any case, the size must not be changed after CURLOPT_COPYPOSTFIELDS(3), unless another CURLOPT_POSTFIELDS(3) or CURLOPT_COPYPOSTFIELDS(3) option is issued. That's a real rule, not a vibe suggestion. ⚠️

🌸 DEFAULT 🌸

NULL β€” that's the default, and that's the whole story πŸ’€

πŸ¦‹ PROTOCOLS πŸ¦‹

HTTP(S) ✨

πŸŽ€ EXAMPLE πŸŽ€

Here's the example, kept exactly as-is because we do not mess with code in this house πŸ’…

CURL *curl = curl_easy_init();
if(curl) {
  char local_buffer[1024]="data to send";
  curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");

  /* size of the data to copy from the buffer and send in the request */
  curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 12L);

  /* send data from the local stack */
  curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, local_buffer);

  curl_easy_perform(curl);
}

πŸ‘‘ AVAILABILITY πŸ‘‘

Added in 7.17.1 ⭐

πŸ’œ RETURN VALUE πŸ’œ

Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or CURLE_OUT_OF_MEMORY if there was insufficient heap space. May your heap be spacious and your return codes friendly. 😭🫢

🌈 SEE ALSO 🌈

The SEE ALSO crew, fr fr: CURLOPT_POSTFIELDS(3), CURLOPT_POSTFIELDSIZE(3), β€” yes bestie, that trailing comma is in the original, and honestly? it's iconic. 😌


That's the whole page: libcurl 7.37.0, 19 Jun 2014, GNURLOPT_COPYPOSTFIELDS(3) πŸ’–πŸ«Ά

πŸ“¦ where this page comes from