Macros | Functions | Variables
mime.c File Reference
#include "curl_setup.h"
#include <curl/curl.h>
#include "mime.h"
#include "non-ascii.h"
#include "rand.h"
#include "slist.h"
#include "strcase.h"
#include "curl_printf.h"
#include "curl_memory.h"
#include "memdebug.h"
Include dependency graph for mime.c:

Go to the source code of this file.

Macros

#define basename(x)   Curl_basename((x))
 
#define DISPOSITION_DEFAULT   "attachment"
 
#define FILE_CONTENTTYPE_DEFAULT   "application/octet-stream"
 
#define filesize(name, stat_data)   (stat_data.st_size)
 
#define fopen_read   fopen
 
#define MULTIPART_CONTENTTYPE_DEFAULT   "multipart/mixed"
 
#define QP_CR   3 /* Carriage return. */
 
#define QP_LF   4 /* Line-feed. */
 
#define QP_OK   1 /* Can be represented by itself. */
 
#define QP_SP   2 /* Space or tab. */
 
#define READ_ERROR   ((size_t) -1)
 

Functions

static CURLcode add_content_type (struct curl_slist **slp, const char *type, const char *boundary)
 
static void cleanup_encoder_state (mime_encoder_state *p)
 
static void cleanup_part_content (curl_mimepart *part)
 
static const char * ContentTypeForFilename (const char *filename)
 
static char * Curl_basename (char *path)
 
CURLcode Curl_mime_add_header (struct curl_slist **slp, const char *fmt,...)
 
curl_mimepartcurl_mime_addpart (curl_mime *mime)
 
void Curl_mime_cleanpart (curl_mimepart *part)
 
CURLcode curl_mime_data (curl_mimepart *part, const char *data, size_t datasize)
 
CURLcode curl_mime_data_cb (curl_mimepart *part, curl_off_t datasize, curl_read_callback readfunc, curl_seek_callback seekfunc, curl_free_callback freefunc, void *arg)
 
CURLcode curl_mime_encoder (curl_mimepart *part, const char *encoding)
 
CURLcode curl_mime_filedata (curl_mimepart *part, const char *filename)
 
CURLcode curl_mime_filename (curl_mimepart *part, const char *filename)
 
void curl_mime_free (curl_mime *mime)
 
CURLcode curl_mime_headers (curl_mimepart *part, struct curl_slist *headers, int take_ownership)
 
curl_mimecurl_mime_init (struct Curl_easy *easy)
 
void Curl_mime_initpart (curl_mimepart *part, struct Curl_easy *easy)
 
CURLcode curl_mime_name (curl_mimepart *part, const char *name)
 
CURLcode Curl_mime_prepare_headers (curl_mimepart *part, const char *contenttype, const char *disposition, enum mimestrategy strategy)
 
size_t Curl_mime_read (char *buffer, size_t size, size_t nitems, void *instream)
 
CURLcode Curl_mime_rewind (curl_mimepart *part)
 
curl_off_t Curl_mime_size (curl_mimepart *part)
 
CURLcode curl_mime_subparts (curl_mimepart *part, curl_mime *subparts)
 
CURLcode curl_mime_type (curl_mimepart *part, const char *mimetype)
 
static size_t encoder_7bit_read (char *buffer, size_t size, bool ateof, curl_mimepart *part)
 
static size_t encoder_base64_read (char *buffer, size_t size, bool ateof, curl_mimepart *part)
 
static curl_off_t encoder_base64_size (curl_mimepart *part)
 
static size_t encoder_nop_read (char *buffer, size_t size, bool ateof, curl_mimepart *part)
 
static curl_off_t encoder_nop_size (curl_mimepart *part)
 
static size_t encoder_qp_read (char *buffer, size_t size, bool ateof, curl_mimepart *part)
 
static curl_off_t encoder_qp_size (curl_mimepart *part)
 
static char * escape_string (const char *src)
 
static char * match_header (struct curl_slist *hdr, const char *lbl, size_t len)
 
static void mime_file_free (void *ptr)
 
static size_t mime_file_read (char *buffer, size_t size, size_t nitems, void *instream)
 
static int mime_file_seek (void *instream, curl_off_t offset, int whence)
 
static void mime_mem_free (void *ptr)
 
static size_t mime_mem_read (char *buffer, size_t size, size_t nitems, void *instream)
 
static int mime_mem_seek (void *instream, curl_off_t offset, int whence)
 
static int mime_open_file (curl_mimepart *part)
 
static int mime_part_rewind (curl_mimepart *part)
 
static void mime_subparts_free (void *ptr)
 
static size_t mime_subparts_read (char *buffer, size_t size, size_t nitems, void *instream)
 
static int mime_subparts_seek (void *instream, curl_off_t offset, int whence)
 
static void mimesetstate (mime_state *state, enum mimestate tok, void *ptr)
 
static curl_off_t multipart_size (curl_mime *mime)
 
static int qp_lookahead_eol (mime_encoder_state *st, int ateof, size_t n)
 
static size_t read_encoded_part_content (curl_mimepart *part, char *buffer, size_t bufsize)
 
static size_t read_part_content (curl_mimepart *part, char *buffer, size_t bufsize)
 
static size_t readback_bytes (mime_state *state, char *buffer, size_t bufsize, const char *bytes, size_t numbytes, const char *trail)
 
static size_t readback_part (curl_mimepart *part, char *buffer, size_t bufsize)
 
static char * search_header (struct curl_slist *hdrlist, const char *hdr)
 
static size_t slist_size (struct curl_slist *s, size_t overhead, const char *skip)
 
static char * strippath (const char *fullfile)
 

Variables

static const char aschex []
 
static const char base64 []
 
static const mime_encoder encoders []
 
static const unsigned char qp_class []
 

Macro Definition Documentation

#define basename (   x)    Curl_basename((x))

Definition at line 264 of file mime.c.

#define DISPOSITION_DEFAULT   "attachment"

Definition at line 54 of file mime.c.

#define FILE_CONTENTTYPE_DEFAULT   "application/octet-stream"

Definition at line 52 of file mime.c.

#define filesize (   name,
  stat_data 
)    (stat_data.st_size)

Definition at line 127 of file mime.c.

#define fopen_read   fopen

Definition at line 128 of file mime.c.

#define MULTIPART_CONTENTTYPE_DEFAULT   "multipart/mixed"

Definition at line 53 of file mime.c.

#define QP_CR   3 /* Carriage return. */

Definition at line 90 of file mime.c.

#define QP_LF   4 /* Line-feed. */

Definition at line 91 of file mime.c.

#define QP_OK   1 /* Can be represented by itself. */

Definition at line 88 of file mime.c.

#define QP_SP   2 /* Space or tab. */

Definition at line 89 of file mime.c.

#define READ_ERROR   ((size_t) -1)

Definition at line 56 of file mime.c.

Function Documentation

static CURLcode add_content_type ( struct curl_slist **  slp,
const char *  type,
const char *  boundary 
)
static

Definition at line 1529 of file mime.c.

static void cleanup_encoder_state ( mime_encoder_state p)
static

Definition at line 342 of file mime.c.

static void cleanup_part_content ( curl_mimepart part)
static

Definition at line 1080 of file mime.c.

static const char* ContentTypeForFilename ( const char *  filename)
static

Definition at line 1538 of file mime.c.

static char* Curl_basename ( char *  path)
static

Definition at line 243 of file mime.c.

CURLcode Curl_mime_add_header ( struct curl_slist **  slp,
const char *  fmt,
  ... 
)

Definition at line 1507 of file mime.c.

curl_mimepart* curl_mime_addpart ( curl_mime mime)

Definition at line 1169 of file mime.c.

void Curl_mime_cleanpart ( curl_mimepart part)

Definition at line 1097 of file mime.c.

CURLcode curl_mime_data ( curl_mimepart part,
const char *  data,
size_t  datasize 
)

Definition at line 1230 of file mime.c.

CURLcode curl_mime_data_cb ( curl_mimepart part,
curl_off_t  datasize,
curl_read_callback  readfunc,
curl_seek_callback  seekfunc,
curl_free_callback  freefunc,
void *  arg 
)

Definition at line 1369 of file mime.c.

CURLcode curl_mime_encoder ( curl_mimepart part,
const char *  encoding 
)

Definition at line 1329 of file mime.c.

CURLcode curl_mime_filedata ( curl_mimepart part,
const char *  filename 
)

Definition at line 1262 of file mime.c.

CURLcode curl_mime_filename ( curl_mimepart part,
const char *  filename 
)

Definition at line 1212 of file mime.c.

void curl_mime_free ( curl_mime mime)

Definition at line 1110 of file mime.c.

CURLcode curl_mime_headers ( curl_mimepart part,
struct curl_slist headers,
int  take_ownership 
)

Definition at line 1352 of file mime.c.

curl_mime* curl_mime_init ( struct Curl_easy easy)

Definition at line 1132 of file mime.c.

void Curl_mime_initpart ( curl_mimepart part,
struct Curl_easy easy 
)

Definition at line 1161 of file mime.c.

CURLcode curl_mime_name ( curl_mimepart part,
const char *  name 
)

Definition at line 1194 of file mime.c.

CURLcode Curl_mime_prepare_headers ( curl_mimepart part,
const char *  contenttype,
const char *  disposition,
enum mimestrategy  strategy 
)

Definition at line 1577 of file mime.c.

size_t Curl_mime_read ( char *  buffer,
size_t  size,
size_t  nitems,
void *  instream 
)

Definition at line 1428 of file mime.c.

CURLcode Curl_mime_rewind ( curl_mimepart part)

Definition at line 1437 of file mime.c.

curl_off_t Curl_mime_size ( curl_mimepart part)

Definition at line 1484 of file mime.c.

CURLcode curl_mime_subparts ( curl_mimepart part,
curl_mime subparts 
)

Definition at line 1392 of file mime.c.

CURLcode curl_mime_type ( curl_mimepart part,
const char *  mimetype 
)

Definition at line 1311 of file mime.c.

static size_t encoder_7bit_read ( char *  buffer,
size_t  size,
bool  ateof,
curl_mimepart part 
)
static

Definition at line 374 of file mime.c.

static size_t encoder_base64_read ( char *  buffer,
size_t  size,
bool  ateof,
curl_mimepart part 
)
static

Definition at line 397 of file mime.c.

static curl_off_t encoder_base64_size ( curl_mimepart part)
static

Definition at line 470 of file mime.c.

static size_t encoder_nop_read ( char *  buffer,
size_t  size,
bool  ateof,
curl_mimepart part 
)
static

Definition at line 351 of file mime.c.

static curl_off_t encoder_nop_size ( curl_mimepart part)
static

Definition at line 367 of file mime.c.

static size_t encoder_qp_read ( char *  buffer,
size_t  size,
bool  ateof,
curl_mimepart part 
)
static

Definition at line 504 of file mime.c.

static curl_off_t encoder_qp_size ( curl_mimepart part)
static

Definition at line 606 of file mime.c.

static char* escape_string ( const char *  src)
static

Definition at line 278 of file mime.c.

static char* match_header ( struct curl_slist hdr,
const char *  lbl,
size_t  len 
)
static

Definition at line 304 of file mime.c.

static void mime_file_free ( void *  ptr)
static

Definition at line 697 of file mime.c.

static size_t mime_file_read ( char *  buffer,
size_t  size,
size_t  nitems,
void *  instream 
)
static

Definition at line 672 of file mime.c.

static int mime_file_seek ( void *  instream,
curl_off_t  offset,
int  whence 
)
static

Definition at line 683 of file mime.c.

static void mime_mem_free ( void *  ptr)
static

Definition at line 654 of file mime.c.

static size_t mime_mem_read ( char *  buffer,
size_t  size,
size_t  nitems,
void *  instream 
)
static

Definition at line 616 of file mime.c.

static int mime_mem_seek ( void *  instream,
curl_off_t  offset,
int  whence 
)
static

Definition at line 634 of file mime.c.

static int mime_open_file ( curl_mimepart part)
static

Definition at line 662 of file mime.c.

static int mime_part_rewind ( curl_mimepart part)
static

Definition at line 1014 of file mime.c.

static void mime_subparts_free ( void *  ptr)
static

Definition at line 1072 of file mime.c.

static size_t mime_subparts_read ( char *  buffer,
size_t  size,
size_t  nitems,
void *  instream 
)
static

Definition at line 921 of file mime.c.

static int mime_subparts_seek ( void *  instream,
curl_off_t  offset,
int  whence 
)
static

Definition at line 1047 of file mime.c.

static void mimesetstate ( mime_state state,
enum mimestate  tok,
void *  ptr 
)
static

Definition at line 269 of file mime.c.

static curl_off_t multipart_size ( curl_mime mime)
static

Definition at line 1457 of file mime.c.

static int qp_lookahead_eol ( mime_encoder_state st,
int  ateof,
size_t  n 
)
static

Definition at line 490 of file mime.c.

static size_t read_encoded_part_content ( curl_mimepart part,
char *  buffer,
size_t  bufsize 
)
static

Definition at line 757 of file mime.c.

static size_t read_part_content ( curl_mimepart part,
char *  buffer,
size_t  bufsize 
)
static

Definition at line 746 of file mime.c.

static size_t readback_bytes ( mime_state state,
char *  buffer,
size_t  bufsize,
const char *  bytes,
size_t  numbytes,
const char *  trail 
)
static

Definition at line 714 of file mime.c.

static size_t readback_part ( curl_mimepart part,
char *  buffer,
size_t  bufsize 
)
static

Definition at line 817 of file mime.c.

static char* search_header ( struct curl_slist hdrlist,
const char *  hdr 
)
static

Definition at line 315 of file mime.c.

static size_t slist_size ( struct curl_slist s,
size_t  overhead,
const char *  skip 
)
static

Definition at line 1444 of file mime.c.

static char* strippath ( const char *  fullfile)
static

Definition at line 326 of file mime.c.

Variable Documentation

const char aschex[]
static
Initial value:
=
"\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46"

Definition at line 121 of file mime.c.

const char base64[]
static
Initial value:
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

Definition at line 81 of file mime.c.

const mime_encoder encoders[]
static
Initial value:
= {
{"8bit", encoder_nop_read, encoder_nop_size},
{"7bit", encoder_7bit_read, encoder_nop_size},
{"quoted-printable", encoder_qp_read, encoder_qp_size},
{ZERO_NULL, ZERO_NULL, ZERO_NULL}
}
static size_t encoder_7bit_read(char *buffer, size_t size, bool ateof, curl_mimepart *part)
Definition: mime.c:374
static size_t encoder_base64_read(char *buffer, size_t size, bool ateof, curl_mimepart *part)
Definition: mime.c:397
static curl_off_t encoder_nop_size(curl_mimepart *part)
Definition: mime.c:367
static size_t encoder_nop_read(char *buffer, size_t size, bool ateof, curl_mimepart *part)
Definition: mime.c:351
#define ZERO_NULL
Definition: curlx.c:131
static curl_off_t encoder_base64_size(curl_mimepart *part)
Definition: mime.c:470
static size_t encoder_qp_read(char *buffer, size_t size, bool ateof, curl_mimepart *part)
Definition: mime.c:504
static curl_off_t encoder_qp_size(curl_mimepart *part)
Definition: mime.c:606

Definition at line 71 of file mime.c.

const unsigned char qp_class[]
static
Initial value:
= {
0, 0, 0, 0, 0, 0, 0, 0,
0, QP_SP, QP_LF, 0, 0, QP_CR, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
}
#define QP_OK
Definition: mime.c:88
#define QP_CR
Definition: mime.c:90
#define QP_SP
Definition: mime.c:89
#define QP_LF
Definition: mime.c:91

Definition at line 92 of file mime.c.



rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:17