Lines Matching refs:mimeinfo

64 	MimeInfo *mimeinfo;  in procmime_mimeinfo_new()  local
66 mimeinfo = g_new0(MimeInfo, 1); in procmime_mimeinfo_new()
68 mimeinfo->content = MIMECONTENT_EMPTY; in procmime_mimeinfo_new()
69 mimeinfo->data.filename = NULL; in procmime_mimeinfo_new()
71 mimeinfo->type = MIMETYPE_UNKNOWN; in procmime_mimeinfo_new()
72 mimeinfo->encoding_type = ENC_UNKNOWN; in procmime_mimeinfo_new()
73 mimeinfo->typeparameters = g_hash_table_new(g_str_hash, g_str_equal); in procmime_mimeinfo_new()
75 mimeinfo->disposition = DISPOSITIONTYPE_UNKNOWN; in procmime_mimeinfo_new()
76 mimeinfo->dispositionparameters in procmime_mimeinfo_new()
79 mimeinfo->node = g_node_new(mimeinfo); in procmime_mimeinfo_new()
81 return mimeinfo; in procmime_mimeinfo_new()
111 MimeInfo *mimeinfo = (MimeInfo *) node->data; in free_func() local
113 switch (mimeinfo->content) { in free_func()
115 if (mimeinfo->tmp) in free_func()
116 claws_unlink(mimeinfo->data.filename); in free_func()
117 g_free(mimeinfo->data.filename); in free_func()
121 if (mimeinfo->tmp) in free_func()
122 g_free(mimeinfo->data.mem); in free_func()
127 g_free(mimeinfo->subtype); in free_func()
128 g_free(mimeinfo->description); in free_func()
129 g_free(mimeinfo->id); in free_func()
130 g_free(mimeinfo->location); in free_func()
132 g_hash_table_foreach_remove(mimeinfo->typeparameters, in free_func()
134 g_hash_table_destroy(mimeinfo->typeparameters); in free_func()
135 g_hash_table_foreach_remove(mimeinfo->dispositionparameters, in free_func()
137 g_hash_table_destroy(mimeinfo->dispositionparameters); in free_func()
139 if (mimeinfo->privacy) in free_func()
140 privacy_free_privacydata(mimeinfo->privacy); in free_func()
142 g_free(mimeinfo); in free_func()
149 MimeInfo *mimeinfo = *mimeinfo_ptr; in procmime_mimeinfo_free_all() local
152 if (!mimeinfo) in procmime_mimeinfo_free_all()
155 node = mimeinfo->node; in procmime_mimeinfo_free_all()
163 MimeInfo *procmime_mimeinfo_parent(MimeInfo *mimeinfo) in procmime_mimeinfo_parent() argument
165 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_mimeinfo_parent()
166 cm_return_val_if_fail(mimeinfo->node != NULL, NULL); in procmime_mimeinfo_parent()
168 if (mimeinfo->node->parent == NULL) in procmime_mimeinfo_parent()
170 return (MimeInfo *) mimeinfo->node->parent->data; in procmime_mimeinfo_parent()
173 MimeInfo *procmime_mimeinfo_next(MimeInfo *mimeinfo) in procmime_mimeinfo_next() argument
175 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_mimeinfo_next()
176 cm_return_val_if_fail(mimeinfo->node != NULL, NULL); in procmime_mimeinfo_next()
178 if (mimeinfo->node->children) in procmime_mimeinfo_next()
179 return (MimeInfo *) mimeinfo->node->children->data; in procmime_mimeinfo_next()
180 if (mimeinfo->node->next) in procmime_mimeinfo_next()
181 return (MimeInfo *) mimeinfo->node->next->data; in procmime_mimeinfo_next()
183 if (mimeinfo->node->parent == NULL) in procmime_mimeinfo_next()
186 while (mimeinfo->node->parent != NULL) { in procmime_mimeinfo_next()
187 mimeinfo = (MimeInfo *) mimeinfo->node->parent->data; in procmime_mimeinfo_next()
188 if (mimeinfo->node->next) in procmime_mimeinfo_next()
189 return (MimeInfo *) mimeinfo->node->next->data; in procmime_mimeinfo_next()
198 MimeInfo *mimeinfo; in procmime_scan_message() local
208 mimeinfo = procmime_scan_file(filename); in procmime_scan_message()
210 mimeinfo = procmime_scan_queue_file(filename); in procmime_scan_message()
213 return mimeinfo; in procmime_scan_message()
219 MimeInfo *mimeinfo; in procmime_scan_message_short() local
229 mimeinfo = procmime_scan_file_short(filename); in procmime_scan_message_short()
231 mimeinfo = procmime_scan_queue_file_short(filename); in procmime_scan_message_short()
234 return mimeinfo; in procmime_scan_message_short()
246 const gchar *procmime_mimeinfo_get_parameter(MimeInfo *mimeinfo, const gchar *name) in procmime_mimeinfo_get_parameter() argument
250 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_mimeinfo_get_parameter()
253 value = g_hash_table_lookup(mimeinfo->dispositionparameters, name); in procmime_mimeinfo_get_parameter()
255 value = g_hash_table_lookup(mimeinfo->typeparameters, name); in procmime_mimeinfo_get_parameter()
282 gboolean procmime_decode_content(MimeInfo *mimeinfo) in procmime_decode_content() argument
296 cm_return_val_if_fail(mimeinfo != NULL, FALSE); in procmime_decode_content()
300 : mimeinfo->encoding_type; in procmime_decode_content()
305 mimeinfo->type == MIMETYPE_TEXT && in procmime_decode_content()
306 !strcasecmp(mimeinfo->subtype, "plain")) { in procmime_decode_content()
307 if (procmime_mimeinfo_get_parameter(mimeinfo, "format") != NULL && in procmime_decode_content()
308 !strcasecmp(procmime_mimeinfo_get_parameter(mimeinfo, "format"),"flowed")) in procmime_decode_content()
311 procmime_mimeinfo_get_parameter(mimeinfo, "delsp") != NULL && in procmime_decode_content()
312 !strcasecmp(procmime_mimeinfo_get_parameter(mimeinfo, "delsp"),"yes")) in procmime_decode_content()
324 if (mimeinfo->type == MIMETYPE_MULTIPART || mimeinfo->type == MIMETYPE_MESSAGE) in procmime_decode_content()
327 if (mimeinfo->data.filename == NULL) in procmime_decode_content()
330 infp = claws_fopen(mimeinfo->data.filename, "rb"); in procmime_decode_content()
332 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_decode_content()
335 if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_decode_content()
336 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_decode_content()
349 readend = mimeinfo->offset + mimeinfo->length; in procmime_decode_content()
377 if (mimeinfo->type == MIMETYPE_TEXT || in procmime_decode_content()
378 mimeinfo->type == MIMETYPE_MESSAGE) { in procmime_decode_content()
484 if (mimeinfo->tmp) in procmime_decode_content()
485 claws_unlink(mimeinfo->data.filename); in procmime_decode_content()
486 g_free(mimeinfo->data.filename); in procmime_decode_content()
487 mimeinfo->data.filename = tmpfilename; in procmime_decode_content()
488 mimeinfo->tmp = TRUE; in procmime_decode_content()
489 mimeinfo->offset = 0; in procmime_decode_content()
490 mimeinfo->length = statbuf.st_size; in procmime_decode_content()
491 mimeinfo->encoding_type = ENC_BINARY; in procmime_decode_content()
499 gboolean procmime_encode_content(MimeInfo *mimeinfo, EncodingType encoding) in procmime_encode_content() argument
507 if (mimeinfo->content == MIMECONTENT_EMPTY) in procmime_encode_content()
510 if (mimeinfo->encoding_type != ENC_UNKNOWN && in procmime_encode_content()
511 mimeinfo->encoding_type != ENC_BINARY && in procmime_encode_content()
512 mimeinfo->encoding_type != ENC_7BIT && in procmime_encode_content()
513 mimeinfo->encoding_type != ENC_8BIT) in procmime_encode_content()
514 if(!procmime_decode_content(mimeinfo)) in procmime_encode_content()
523 if (mimeinfo->content == MIMECONTENT_FILE && mimeinfo->data.filename) { in procmime_encode_content()
524 if ((infp = claws_fopen(mimeinfo->data.filename, "rb")) == NULL) { in procmime_encode_content()
525 g_warning("Can't open file %s", mimeinfo->data.filename); in procmime_encode_content()
529 } else if (mimeinfo->content == MIMECONTENT_MEM) { in procmime_encode_content()
530 infp = str_open_as_stream(mimeinfo->data.mem); in procmime_encode_content()
546 if (mimeinfo->type == MIMETYPE_TEXT || in procmime_encode_content()
547 mimeinfo->type == MIMETYPE_MESSAGE) { in procmime_encode_content()
548 if (mimeinfo->content == MIMECONTENT_FILE) { in procmime_encode_content()
550 if (canonicalize_file(mimeinfo->data.filename, tmp_file) < 0) { in procmime_encode_content()
565 gchar *out = canonicalize_str(mimeinfo->data.mem); in procmime_encode_content()
637 if (mimeinfo->content == MIMECONTENT_FILE) { in procmime_encode_content()
638 if (mimeinfo->tmp && (mimeinfo->data.filename != NULL)) in procmime_encode_content()
639 claws_unlink(mimeinfo->data.filename); in procmime_encode_content()
640 g_free(mimeinfo->data.filename); in procmime_encode_content()
641 } else if (mimeinfo->content == MIMECONTENT_MEM) { in procmime_encode_content()
642 if (mimeinfo->tmp && (mimeinfo->data.mem != NULL)) in procmime_encode_content()
643 g_free(mimeinfo->data.mem); in procmime_encode_content()
650 mimeinfo->content = MIMECONTENT_FILE; in procmime_encode_content()
651 mimeinfo->data.filename = tmpfilename; in procmime_encode_content()
652 mimeinfo->tmp = TRUE; in procmime_encode_content()
653 mimeinfo->offset = 0; in procmime_encode_content()
654 mimeinfo->length = statbuf.st_size; in procmime_encode_content()
655 mimeinfo->encoding_type = encoding; in procmime_encode_content()
660 static gint procmime_get_part_to_stream(FILE *outfp, MimeInfo *mimeinfo) in procmime_get_part_to_stream() argument
668 cm_return_val_if_fail(mimeinfo != NULL, -1); in procmime_get_part_to_stream()
670 if (mimeinfo->encoding_type != ENC_BINARY && !procmime_decode_content(mimeinfo)) in procmime_get_part_to_stream()
673 if ((infp = claws_fopen(mimeinfo->data.filename, "rb")) == NULL) { in procmime_get_part_to_stream()
675 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_get_part_to_stream()
678 if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_get_part_to_stream()
680 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_get_part_to_stream()
685 restlength = mimeinfo->length; in procmime_get_part_to_stream()
702 gint procmime_get_part(const gchar *outfile, MimeInfo *mimeinfo) in procmime_get_part() argument
716 result = procmime_get_part_to_stream(outfp, mimeinfo); in procmime_get_part()
728 gboolean procmime_scan_text_content(MimeInfo *mimeinfo, in procmime_scan_text_content() argument
740 cm_return_val_if_fail(mimeinfo != NULL, TRUE); in procmime_scan_text_content()
743 if (!procmime_decode_content(mimeinfo)) in procmime_scan_text_content()
753 if ((r = procmime_get_part_to_stream(tmpfp, mimeinfo)) < 0) { in procmime_scan_text_content()
760 procmime_mimeinfo_get_parameter(mimeinfo, "charset"); in procmime_scan_text_content()
774 if (mimeinfo->type == MIMETYPE_TEXT && !g_ascii_strcasecmp(mimeinfo->subtype, "html")) { in procmime_scan_text_content()
786 } else if (mimeinfo->type == MIMETYPE_TEXT && !g_ascii_strcasecmp(mimeinfo->subtype, "enriched")) { in procmime_scan_text_content()
798 …} else if (mimeinfo->type == MIMETYPE_TEXT && mimeinfo->disposition != DISPOSITIONTYPE_ATTACHMENT)… in procmime_scan_text_content()
831 FILE *procmime_get_text_content(MimeInfo *mimeinfo) in procmime_get_text_content() argument
841 err = procmime_scan_text_content(mimeinfo, scan_fputs_cb, outfp); in procmime_get_text_content()
852 FILE *procmime_get_binary_content(MimeInfo *mimeinfo) in procmime_get_binary_content() argument
856 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_get_binary_content()
858 if (!procmime_decode_content(mimeinfo)) in procmime_get_binary_content()
863 if (procmime_get_part_to_stream(outfp, mimeinfo) < 0) { in procmime_get_binary_content()
875 MimeInfo *mimeinfo, *partinfo; in procmime_get_first_text_content() local
883 mimeinfo = procmime_scan_message_short(msginfo); in procmime_get_first_text_content()
885 mimeinfo = procmime_scan_message(msginfo); in procmime_get_first_text_content()
886 if (!mimeinfo) return NULL; in procmime_get_first_text_content()
888 partinfo = mimeinfo; in procmime_get_first_text_content()
900 procmime_mimeinfo_free_all(&mimeinfo); in procmime_get_first_text_content()
907 procmime_mimeinfo_free_all(&mimeinfo); in procmime_get_first_text_content()
910 procmime_mimeinfo_free_all(&mimeinfo); in procmime_get_first_text_content()
918 MimeInfo *mimeinfo = (MimeInfo *) node->data; in find_encrypted_func() local
921 if (privacy_mimeinfo_is_encrypted(mimeinfo)) { in find_encrypted_func()
922 *encinfo = mimeinfo; in find_encrypted_func()
944 MimeInfo *mimeinfo, *partinfo, *encinfo; in procmime_get_first_encrypted_text_content() local
948 mimeinfo = procmime_scan_message(msginfo); in procmime_get_first_encrypted_text_content()
949 if (!mimeinfo) { in procmime_get_first_encrypted_text_content()
953 partinfo = mimeinfo; in procmime_get_first_encrypted_text_content()
962 partinfo = mimeinfo; in procmime_get_first_encrypted_text_content()
972 procmime_mimeinfo_free_all(&mimeinfo); in procmime_get_first_encrypted_text_content()
979 MimeInfo *mimeinfo, *partinfo; in procmime_msginfo_is_encrypted() local
984 mimeinfo = procmime_scan_message(msginfo); in procmime_msginfo_is_encrypted()
985 if (!mimeinfo) { in procmime_msginfo_is_encrypted()
989 partinfo = mimeinfo; in procmime_msginfo_is_encrypted()
991 procmime_mimeinfo_free_all(&mimeinfo); in procmime_msginfo_is_encrypted()
996 gchar *procmime_get_tmp_file_name(MimeInfo *mimeinfo) in procmime_get_tmp_file_name() argument
1003 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_get_tmp_file_name()
1007 if ((mimeinfo->type == MIMETYPE_TEXT) && !g_ascii_strcasecmp(mimeinfo->subtype, "html")) in procmime_get_tmp_file_name()
1012 basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "filename"); in procmime_get_tmp_file_name()
1014 basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "name"); in procmime_get_tmp_file_name()
1386 static void procmime_parse_message_rfc822(MimeInfo *mimeinfo, gboolean short_scan) in procmime_parse_message_rfc822() argument
1411 procmime_decode_content(mimeinfo); in procmime_parse_message_rfc822()
1413 fp = claws_fopen(mimeinfo->data.filename, "rb"); in procmime_parse_message_rfc822()
1415 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_parse_message_rfc822()
1418 if (fseek(fp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_parse_message_rfc822()
1419 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_parse_message_rfc822()
1458 len = mimeinfo->length - (content_start - mimeinfo->offset); in procmime_parse_message_rfc822()
1461 procmime_parse_mimepart(mimeinfo, in procmime_parse_message_rfc822()
1466 mimeinfo->data.filename, content_start, in procmime_parse_message_rfc822()
1475 static void procmime_parse_disposition_notification(MimeInfo *mimeinfo, in procmime_parse_disposition_notification() argument
1487 procmime_decode_content(mimeinfo); in procmime_parse_disposition_notification()
1490 fp = claws_fopen(mimeinfo->data.filename, "rb"); in procmime_parse_disposition_notification()
1492 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_parse_disposition_notification()
1495 if (fseek(fp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_parse_disposition_notification()
1496 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_parse_disposition_notification()
1585 static void procmime_parse_multipart(MimeInfo *mimeinfo, gboolean short_scan) in procmime_parse_multipart() argument
1612 boundary = g_hash_table_lookup(mimeinfo->typeparameters, "boundary"); in procmime_parse_multipart()
1617 procmime_decode_content(mimeinfo); in procmime_parse_multipart()
1619 fp = claws_fopen(mimeinfo->data.filename, "rb"); in procmime_parse_multipart()
1621 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_parse_multipart()
1625 if (fseek(fp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_parse_multipart()
1626 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_parse_multipart()
1632 if (ftell(fp) - 1 > (mimeinfo->offset + mimeinfo->length)) in procmime_parse_multipart()
1642 result = procmime_parse_mimepart(mimeinfo, in procmime_parse_multipart()
1647 mimeinfo->data.filename, lastoffset, in procmime_parse_multipart()
1672 result = procmime_parse_mimepart(mimeinfo, in procmime_parse_multipart()
1677 mimeinfo->data.filename, lastoffset, in procmime_parse_multipart()
1680 mimeinfo->broken = TRUE; in procmime_parse_multipart()
1856 static void procmime_parse_content_type(const gchar *content_type, MimeInfo *mimeinfo) in procmime_parse_content_type() argument
1859 cm_return_if_fail(mimeinfo != NULL); in procmime_parse_content_type()
1864 mimeinfo->type = MIMETYPE_TEXT; in procmime_parse_content_type()
1865 mimeinfo->subtype = g_strdup("plain"); in procmime_parse_content_type()
1866 if (g_hash_table_lookup(mimeinfo->typeparameters, in procmime_parse_content_type()
1868 g_hash_table_insert(mimeinfo->typeparameters, in procmime_parse_content_type()
1884 mimeinfo->type = procmime_get_media_type(type); in procmime_parse_content_type()
1885 mimeinfo->subtype = g_strstrip(g_strdup(subtype)); in procmime_parse_content_type()
1889 parse_parameters(params, mimeinfo->typeparameters); in procmime_parse_content_type()
1895 static void procmime_parse_content_disposition(const gchar *content_disposition, MimeInfo *mimeinfo) in procmime_parse_content_disposition() argument
1900 cm_return_if_fail(mimeinfo != NULL); in procmime_parse_content_disposition()
1910 mimeinfo->disposition = DISPOSITIONTYPE_INLINE; in procmime_parse_content_disposition()
1912 mimeinfo->disposition = DISPOSITIONTYPE_ATTACHMENT; in procmime_parse_content_disposition()
1914 mimeinfo->disposition = DISPOSITIONTYPE_ATTACHMENT; in procmime_parse_content_disposition()
1917 parse_parameters(params, mimeinfo->dispositionparameters); in procmime_parse_content_disposition()
1923 static void procmime_parse_content_encoding(const gchar *content_encoding, MimeInfo *mimeinfo) in procmime_parse_content_encoding() argument
1929 mimeinfo->encoding_type = enc_table->enc_type; in procmime_parse_content_encoding()
1933 mimeinfo->encoding_type = ENC_UNKNOWN; in procmime_parse_content_encoding()
1962 static gboolean procmime_mimeparser_parse(MimeParser *parser, MimeInfo *mimeinfo) in procmime_mimeparser_parse() argument
1965 return parser->parse(parser, mimeinfo); in procmime_mimeparser_parse()
1982 MimeInfo *mimeinfo; in procmime_parse_mimepart() local
1988 mimeinfo = procmime_mimeinfo_new(); in procmime_parse_mimepart()
1989 mimeinfo->content = MIMECONTENT_FILE; in procmime_parse_mimepart()
1997 procmime_mimeinfo_free_all(&mimeinfo); in procmime_parse_mimepart()
2000 g_node_append(parent->node, mimeinfo->node); in procmime_parse_mimepart()
2002 mimeinfo->data.filename = g_strdup(filename); in procmime_parse_mimepart()
2003 mimeinfo->offset = offset; in procmime_parse_mimepart()
2004 mimeinfo->length = length; in procmime_parse_mimepart()
2008 procmime_parse_content_type(content_type, mimeinfo); in procmime_parse_mimepart()
2010 mimeinfo->type = MIMETYPE_TEXT; in procmime_parse_mimepart()
2011 mimeinfo->subtype = g_strdup("plain"); in procmime_parse_mimepart()
2012 if (g_hash_table_lookup(mimeinfo->typeparameters, in procmime_parse_mimepart()
2014 g_hash_table_insert(mimeinfo->typeparameters, in procmime_parse_mimepart()
2023 procmime_parse_content_encoding(content_encoding, mimeinfo); in procmime_parse_mimepart()
2025 mimeinfo->encoding_type = ENC_UNKNOWN; in procmime_parse_mimepart()
2029 mimeinfo->description = g_strdup(content_description); in procmime_parse_mimepart()
2031 mimeinfo->description = NULL; in procmime_parse_mimepart()
2034 mimeinfo->id = g_strdup(content_id); in procmime_parse_mimepart()
2036 mimeinfo->id = NULL; in procmime_parse_mimepart()
2039 mimeinfo->location = g_strdup(content_location); in procmime_parse_mimepart()
2041 mimeinfo->location = NULL; in procmime_parse_mimepart()
2045 procmime_parse_content_disposition(content_disposition, mimeinfo); in procmime_parse_mimepart()
2047 mimeinfo->disposition = DISPOSITIONTYPE_UNKNOWN; in procmime_parse_mimepart()
2050 if ((parser = procmime_get_mimeparser_for_type(mimeinfo->type, mimeinfo->subtype)) != NULL) { in procmime_parse_mimepart()
2051 parsed = procmime_mimeparser_parse(parser, mimeinfo); in procmime_parse_mimepart()
2054 switch (mimeinfo->type) { in procmime_parse_mimepart()
2056 if (g_ascii_strcasecmp(mimeinfo->subtype, "plain") == 0 && short_scan) { in procmime_parse_mimepart()
2062 if (g_ascii_strcasecmp(mimeinfo->subtype, "rfc822") == 0) { in procmime_parse_mimepart()
2063 procmime_parse_message_rfc822(mimeinfo, short_scan); in procmime_parse_mimepart()
2065 if (g_ascii_strcasecmp(mimeinfo->subtype, "disposition-notification") == 0) { in procmime_parse_mimepart()
2066 procmime_parse_disposition_notification(mimeinfo, in procmime_parse_mimepart()
2072 procmime_parse_multipart(mimeinfo, short_scan); in procmime_parse_mimepart()
2076 if (g_ascii_strcasecmp(mimeinfo->subtype, "octet-stream") == 0 in procmime_parse_mimepart()
2079 procmime_parse_disposition_notification(mimeinfo, in procmime_parse_mimepart()
2106 MimeInfo *mimeinfo = (MimeInfo *) node->data; in output_func() local
2112 (mimeinfo->type <= MIMETYPE_UNKNOWN)? typenames[mimeinfo->type] : "unknown", in output_func()
2113 mimeinfo->subtype, mimeinfo->offset, mimeinfo->length, mimeinfo->encoding_type); in output_func()
2118 static void output_mime_structure(MimeInfo *mimeinfo, int indent) in output_mime_structure() argument
2120 g_node_traverse(mimeinfo->node, G_PRE_ORDER, G_TRAVERSE_ALL, -1, output_func, NULL); in output_mime_structure()
2125 MimeInfo *mimeinfo; in procmime_scan_file_with_offset() local
2133 mimeinfo = procmime_mimeinfo_new(); in procmime_scan_file_with_offset()
2134 mimeinfo->content = MIMECONTENT_FILE; in procmime_scan_file_with_offset()
2135 mimeinfo->encoding_type = ENC_UNKNOWN; in procmime_scan_file_with_offset()
2136 mimeinfo->type = MIMETYPE_MESSAGE; in procmime_scan_file_with_offset()
2137 mimeinfo->subtype = g_strdup("rfc822"); in procmime_scan_file_with_offset()
2138 mimeinfo->data.filename = g_strdup(filename); in procmime_scan_file_with_offset()
2139 mimeinfo->offset = offset; in procmime_scan_file_with_offset()
2140 mimeinfo->length = buf.st_size - offset; in procmime_scan_file_with_offset()
2142 procmime_parse_message_rfc822(mimeinfo, short_scan); in procmime_scan_file_with_offset()
2144 output_mime_structure(mimeinfo, 0); in procmime_scan_file_with_offset()
2146 return mimeinfo; in procmime_scan_file_with_offset()
2151 MimeInfo *mimeinfo; in procmime_scan_file_full() local
2155 mimeinfo = procmime_scan_file_with_offset(filename, 0, short_scan); in procmime_scan_file_full()
2157 return mimeinfo; in procmime_scan_file_full()
2173 MimeInfo *mimeinfo; in procmime_scan_queue_file_full() local
2204 mimeinfo = procmime_scan_file_with_offset(filename, offset, short_scan); in procmime_scan_queue_file_full()
2206 return mimeinfo; in procmime_scan_queue_file_full()
2363 int procmime_write_mime_header(MimeInfo *mimeinfo, FILE *fp) in procmime_write_mime_header() argument
2372 if (mimeinfo->type == type_table->type) { in procmime_write_mime_header()
2374 "Content-Type: %s/%s", type_table->str, mimeinfo->subtype); in procmime_write_mime_header()
2384 g_hash_table_foreach(mimeinfo->typeparameters, write_parameters, pdata); in procmime_write_mime_header()
2393 if (mimeinfo->encoding_type != ENC_UNKNOWN) in procmime_write_mime_header()
2394 …TRY(fprintf(fp, "Content-Transfer-Encoding: %s\n", procmime_get_encoding_str(mimeinfo->encoding_ty… in procmime_write_mime_header()
2396 if (mimeinfo->description != NULL) in procmime_write_mime_header()
2397 TRY(fprintf(fp, "Content-Description: %s\n", mimeinfo->description) >= 0); in procmime_write_mime_header()
2399 if (mimeinfo->id != NULL) in procmime_write_mime_header()
2400 TRY(fprintf(fp, "Content-ID: %s\n", mimeinfo->id) >= 0); in procmime_write_mime_header()
2402 if (mimeinfo->location != NULL) in procmime_write_mime_header()
2403 TRY(fprintf(fp, "Content-Location: %s\n", mimeinfo->location) >= 0); in procmime_write_mime_header()
2405 if (mimeinfo->disposition != DISPOSITIONTYPE_UNKNOWN) { in procmime_write_mime_header()
2408 if (mimeinfo->disposition == DISPOSITIONTYPE_INLINE) in procmime_write_mime_header()
2410 else if (mimeinfo->disposition == DISPOSITIONTYPE_ATTACHMENT) in procmime_write_mime_header()
2425 g_hash_table_foreach(mimeinfo->dispositionparameters, write_parameters, pdata); in procmime_write_mime_header()
2439 static gint procmime_write_message_rfc822(MimeInfo *mimeinfo, FILE *fp) in procmime_write_message_rfc822() argument
2451 switch (mimeinfo->content) { in procmime_write_message_rfc822()
2453 if ((infp = claws_fopen(mimeinfo->data.filename, "rb")) == NULL) { in procmime_write_message_rfc822()
2454 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_write_message_rfc822()
2457 if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_write_message_rfc822()
2458 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_write_message_rfc822()
2490 len = strlen(mimeinfo->data.mem); in procmime_write_message_rfc822()
2491 if (claws_fwrite(mimeinfo->data.mem, sizeof(gchar), len, fp) < len) { in procmime_write_message_rfc822()
2501 childnode = mimeinfo->node->children; in procmime_write_message_rfc822()
2515 static gint procmime_write_multipart(MimeInfo *mimeinfo, FILE *fp) in procmime_write_multipart() argument
2526 boundary = g_hash_table_lookup(mimeinfo->typeparameters, "boundary"); in procmime_write_multipart()
2528 switch (mimeinfo->content) { in procmime_write_multipart()
2530 if ((infp = claws_fopen(mimeinfo->data.filename, "rb")) == NULL) { in procmime_write_multipart()
2531 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_write_multipart()
2534 if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_write_multipart()
2535 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_write_multipart()
2553 str = g_strdup(mimeinfo->data.mem); in procmime_write_multipart()
2570 childnode = mimeinfo->node->children; in procmime_write_multipart()
2594 gint procmime_write_mimeinfo(MimeInfo *mimeinfo, FILE *fp) in procmime_write_mimeinfo() argument
2600 if (G_NODE_IS_LEAF(mimeinfo->node)) { in procmime_write_mimeinfo()
2601 switch (mimeinfo->content) { in procmime_write_mimeinfo()
2603 if ((infp = claws_fopen(mimeinfo->data.filename, "rb")) == NULL) { in procmime_write_mimeinfo()
2604 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_write_mimeinfo()
2607 copy_file_part_to_fp(infp, mimeinfo->offset, mimeinfo->length, fp); in procmime_write_mimeinfo()
2612 len = strlen(mimeinfo->data.mem); in procmime_write_mimeinfo()
2613 if (claws_fwrite(mimeinfo->data.mem, sizeof(gchar), len, fp) < len) in procmime_write_mimeinfo()
2622 switch (mimeinfo->type) { in procmime_write_mimeinfo()
2624 if (g_ascii_strcasecmp(mimeinfo->subtype, "rfc822") == 0) { in procmime_write_mimeinfo()
2625 return procmime_write_message_rfc822(mimeinfo, fp); in procmime_write_mimeinfo()
2630 return procmime_write_multipart(mimeinfo, fp); in procmime_write_mimeinfo()
2642 gchar *procmime_get_part_file_name(MimeInfo *mimeinfo) in procmime_get_part_file_name() argument
2646 if ((mimeinfo->type == MIMETYPE_TEXT) && !g_ascii_strcasecmp(mimeinfo->subtype, "html")) in procmime_get_part_file_name()
2652 basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "filename"); in procmime_get_part_file_name()
2654 basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "name"); in procmime_get_part_file_name()
2670 void *procmime_get_part_as_string(MimeInfo *mimeinfo, in procmime_get_part_as_string() argument
2677 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_get_part_as_string()
2679 if (mimeinfo->encoding_type != ENC_BINARY && in procmime_get_part_as_string()
2680 !procmime_decode_content(mimeinfo)) in procmime_get_part_as_string()
2683 if (mimeinfo->content == MIMECONTENT_MEM) in procmime_get_part_as_string()
2684 return g_strdup(mimeinfo->data.mem); in procmime_get_part_as_string()
2686 if ((infp = claws_fopen(mimeinfo->data.filename, "rb")) == NULL) { in procmime_get_part_as_string()
2687 FILE_OP_ERROR(mimeinfo->data.filename, "claws_fopen"); in procmime_get_part_as_string()
2691 if (fseek(infp, mimeinfo->offset, SEEK_SET) < 0) { in procmime_get_part_as_string()
2692 FILE_OP_ERROR(mimeinfo->data.filename, "fseek"); in procmime_get_part_as_string()
2697 length = mimeinfo->length; in procmime_get_part_as_string()
2709 FILE_OP_ERROR(mimeinfo->data.filename, "fread"); in procmime_get_part_as_string()
2725 GInputStream *procmime_get_part_as_inputstream(MimeInfo *mimeinfo) in procmime_get_part_as_inputstream() argument
2727 cm_return_val_if_fail(mimeinfo != NULL, NULL); in procmime_get_part_as_inputstream()
2729 if (mimeinfo->encoding_type != ENC_BINARY && in procmime_get_part_as_inputstream()
2730 !procmime_decode_content(mimeinfo)) { in procmime_get_part_as_inputstream()
2734 if (mimeinfo->content == MIMECONTENT_MEM) { in procmime_get_part_as_inputstream()
2738 mimeinfo->data.mem, in procmime_get_part_as_inputstream()
2739 mimeinfo->length, NULL); in procmime_get_part_as_inputstream()
2742 procmime_get_part_as_string(mimeinfo, FALSE), in procmime_get_part_as_inputstream()
2743 mimeinfo->length, g_free); in procmime_get_part_as_inputstream()
2747 GdkPixbuf *procmime_get_part_as_pixbuf(MimeInfo *mimeinfo, GError **error) in procmime_get_part_as_pixbuf() argument
2755 stream = procmime_get_part_as_inputstream(mimeinfo); in procmime_get_part_as_pixbuf()