{
FILE *infp, *outfp;
gint len;
- gchar *tmpfilename;
+ gchar *tmpfilename, *tmpout;
struct stat statbuf;
- if (mimeinfo->encoding_type != ENC_UNKNOWN ||
- mimeinfo->encoding_type != ENC_BINARY ||
- mimeinfo->encoding_type != ENC_7BIT ||
+ if (mimeinfo->encoding_type != ENC_UNKNOWN &&
+ mimeinfo->encoding_type != ENC_BINARY &&
+ mimeinfo->encoding_type != ENC_7BIT &&
mimeinfo->encoding_type != ENC_8BIT)
if(!procmime_decode_content(mimeinfo))
return FALSE;
return FALSE;
}
+ if (mimeinfo->content == MIMECONTENT_MEM) {
+ infp = get_tmpfile_in_dir(get_mime_tmp_dir(), &tmpout);
+ if (infp)
+ fclose(infp);
+ else
+ return FALSE;
+
+ str_write_to_file(mimeinfo->data.mem, tmpout);
+ g_free(mimeinfo->data.mem);
+ mimeinfo->tmp = TRUE;
+ mimeinfo->data.filename = tmpout;
+ }
+
if ((infp = fopen(mimeinfo->data.filename, "rb")) == NULL) {
g_warning("Can't open file %s\n", mimeinfo->data.filename);
+ if (mimeinfo->content == MIMECONTENT_MEM) {
+ unlink(mimeinfo->data.filename);
+ g_free(mimeinfo->data.filename);
+ mimeinfo->data.filename = NULL;
+ }
return FALSE;
}
mimeinfo->offset = 0;
mimeinfo->length = statbuf.st_size;
mimeinfo->encoding_type = encoding;
+ mimeinfo->content = MIMECONTENT_FILE;
return TRUE;
}