gnurl_mime_filedata(3)

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

πŸ’… gnurl_mime_filedata(3) πŸ’…

okay bestie, this one’s from the libgnurl Manual and it’s all about making a MIME part’s body come from a file. No cap, it’s lowkey iconic.


πŸŽ€ NAME πŸŽ€

curl_mime_filedata β€” set a mime part’s body data from a file contents.


✨ SYNOPSIS ✨

       #include <gnurl/curl.h>

       CURLcode curl_mime_filedata(curl_mimepart * part,  const char *
       filename);

🌸 DESCRIPTION 🌸

curl_mime_filedata(3) sets a mime part’s body content from the named file’s contents. It’s the alternative to curl_mime_data(3) for setting data to a mime part, iykyk.

part is the part you’re assigning contents to.

filename points to the null-terminated file’s path name. The pointer can be NULL to detach the previous part contents settings. The filename storage can safely be reused after this call.

Side effect alert 🚨: the part’s remote file name gets set to the base name of the given filename if it is a valid named file. This can be undone or overridden by a subsequent call to curl_mime_filename(3).

The contents of the file are read during the file transfer in a streaming manner, so huge files can get transferred without using much memory. That therefore requires that the file is kept intact during the entire request. Periodt.

If the file size cannot be determined before actually reading it (such as for a device or named pipe), the whole mime structure containing the part will be transferred as chunks by HTTP and rejected by IMAP. πŸ’€

Setting a part’s contents twice is valid: only the value set by the last call is retained. Slay.


🌈 AVAILABILITY 🌈

As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0.


🫢 RETURN VALUE 🫢

CURLE_OK or a CURL error code upon failure.

CURLE_READ_ERROR is only an indication that the file is not yet readable: it can be safely ignored at this time, but the file must be made readable before the pertaining easy handle is performed. Don’t forget that part, bestie.


πŸ¦‹ EXAMPLE πŸ¦‹

Here’s the vibe:

        curl_mime *mime;
        curl_mimepart *part;

        /* create a mime handle */
        mime = curl_mime_init(easy);

        /* add a part */
        part = curl_mime_addpart(mime);

        /* send data from this file */
        curl_mime_filedata(part, "image.png");

        /* set name */
        curl_mime_name(part, "data");

πŸ‘‘ SEE ALSO πŸ‘‘


xoxo, your Unix bestie β€” libcurl 7.56.0, 22 August 2017, gnurl_mime_filedata(3) πŸ’–

πŸ“¦ where this page comes from