Lines Matching refs:mime
29 #include "mime.h"
658 /* Argument is a pointer to the mime part. */
705 /* Argument is a pointer to the mime part. */
757 /* Argument is a pointer to the mime structure. */
913 /* Readback a mime part. */
997 /* Readback from mime. Warning: not a read callback function. */
1001 curl_mime *mime = (curl_mime *) instream;
1007 curl_mimepart *part = mime->state.ptr;
1008 switch(mime->state.state) {
1011 mimesetstate(&mime->state, MIMESTATE_BOUNDARY1, mime->firstpart);
1015 mime->state.offset += 2;
1018 sz = readback_bytes(&mime->state, buffer, nitems, STRCONST("\r\n--"),
1021 mimesetstate(&mime->state, MIMESTATE_BOUNDARY2, part);
1025 sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
1028 sz = readback_bytes(&mime->state, buffer, nitems, mime->boundary,
1031 mimesetstate(&mime->state, MIMESTATE_CONTENT, part);
1036 mimesetstate(&mime->state, MIMESTATE_END, NULL);
1047 mimesetstate(&mime->state, MIMESTATE_BOUNDARY1, part->nextpart);
1054 break; /* other values not used in mime state. */
1102 curl_mime *mime = (curl_mime *) instream;
1109 if(mime->state.state == MIMESTATE_BEGIN)
1112 for(part = mime->firstpart; part; part = part->nextpart) {
1119 mimesetstate(&mime->state, MIMESTATE_BEGIN, NULL);
1146 curl_mime *mime = (curl_mime *) ptr;
1148 if(mime && mime->parent) {
1149 mime->parent->freefunc = NULL; /* Be sure we won't be called again. */
1150 cleanup_part_content(mime->parent); /* Avoid dangling pointer in part. */
1152 curl_mime_free(mime);
1158 curl_mime *mime = (curl_mime *) ptr;
1160 if(mime && mime->parent) {
1161 mime->parent->freefunc = NULL; /* Be sure we won't be called again. */
1162 cleanup_part_content(mime->parent); /* Avoid dangling pointer in part. */
1163 mime->parent = NULL;
1182 /* Recursively delete a mime handle and its parts. */
1183 void curl_mime_free(curl_mime *mime)
1187 if(mime) {
1188 mime_subparts_unbind(mime); /* Be sure it's not referenced anymore. */
1189 while(mime->firstpart) {
1190 part = mime->firstpart;
1191 mime->firstpart = part->nextpart;
1195 free(mime);
1202 curl_mime *mime;
1229 mime = curl_mime_init(data);
1230 res = mime? curl_mime_subparts(dst, mime): CURLE_OUT_OF_MEMORY;
1234 d = curl_mime_addpart(mime);
1280 /* Create a mime handle. */
1283 curl_mime *mime;
1285 mime = (curl_mime *) malloc(sizeof(*mime));
1287 if(mime) {
1288 mime->parent = NULL;
1289 mime->firstpart = NULL;
1290 mime->lastpart = NULL;
1292 memset(mime->boundary, '-', MIME_BOUNDARY_DASHES);
1294 (unsigned char *) &mime->boundary[MIME_BOUNDARY_DASHES],
1297 free(mime);
1300 mimesetstate(&mime->state, MIMESTATE_BEGIN, NULL);
1303 return mime;
1306 /* Initialize a mime part. */
1314 /* Create a mime part and append it to a mime handle's part list. */
1315 curl_mimepart *curl_mime_addpart(curl_mime *mime)
1319 if(!mime)
1326 part->parent = mime;
1328 if(mime->lastpart)
1329 mime->lastpart->nextpart = part;
1331 mime->firstpart = part;
1333 mime->lastpart = part;
1339 /* Set mime part name. */
1356 /* Set mime part remote file name. */
1373 /* Set mime part content from memory data. */
1401 /* Set mime part content from named local file. */
1450 /* Set mime part type. */
1467 /* Set mime data transfer encoder. */
1490 /* Set mime part headers. */
1508 /* Set mime part content from callback. */
1531 /* Set mime part content from subparts. */
1580 /* Readback from top mime. */
1604 /* Rewind mime stream. */
1624 static curl_off_t multipart_size(curl_mime *mime)
1630 if(!mime)
1636 for(part = mime->firstpart; part; part = part->nextpart) {
1649 /* Get/compute mime size. */
1763 curl_mime *mime = NULL;
1804 mime = (curl_mime *) part->arg;
1805 if(mime)
1806 boundary = mime->boundary;
1882 if(part->kind == MIMEKIND_MULTIPART && mime) {
1888 for(subpart = mime->firstpart; subpart; subpart = subpart->nextpart) {
1905 curl_mime *mime = (curl_mime *) part->arg;
1907 if(mime) {
1910 for(subpart = mime->firstpart; subpart; subpart = subpart->nextpart)
1928 void curl_mime_free(curl_mime *mime)
1930 (void) mime;
1933 curl_mimepart *curl_mime_addpart(curl_mime *mime)
1935 (void) mime;