static void nntp_prefetch_free(struct generic_message_t * msg) { if (msg->msg_message != NULL) { mmap_string_unref(msg->msg_message); msg->msg_message = NULL; } }
static void imap_fetch_result_free(mailmessage * msg_info, char * msg) { if (msg != NULL) { if (mmap_string_unref(msg) != 0) free(msg); } }
static gint news_get_article(Folder *folder, gint num, gchar *filename) { size_t len; char *result = NULL; int r; r = nntp_threaded_article(folder, num, &result, &len); if (r == NEWSNNTP_NO_ERROR) { if (str_write_to_file(result, filename) < 0) { mmap_string_unref(result); return -1; } mmap_string_unref(result); } return r; }
static void unregister_result_mmapstr(struct mailprivacy * privacy, char * str) { chashdatum key; mmap_string_unref(str); key.data = &str; key.len = sizeof(str); chash_delete(privacy->mmapstr, &key, NULL); }
static void mailpop3_multiline_response_free(char * str) { mmap_string_unref(str); }
static void newsnntp_multiline_response_free(char * str) { mmap_string_unref(str); }
static int mime_data_replace(struct mailprivacy * privacy, int encoding_type, struct mailmime_data * data, int reencode) { char filename[PATH_MAX]; FILE * f; size_t written; char * dup_filename; int res; int r; int decoded; if (data->dt_type != MAILMIME_DATA_TEXT) { res = MAIL_NO_ERROR; goto err; } f = mailprivacy_get_tmp_file(privacy, filename, sizeof(filename)); if (f == NULL) { res = MAIL_ERROR_FILE; goto err; } decoded = 0; if (reencode) { if (encoding_type != -1) { char * content; size_t content_len; size_t cur_token; cur_token = 0; r = mailmime_part_parse(data->dt_data.dt_text.dt_data, data->dt_data.dt_text.dt_length, &cur_token, encoding_type, &content, &content_len); if (r == MAILIMF_NO_ERROR) { /* write decoded */ written = fwrite(content, 1, content_len, f); if (written != content_len) { fclose(f); unlink(filename); res = MAIL_ERROR_FILE; goto err; } mmap_string_unref(content); decoded = 1; data->dt_encoded = 0; } } } if (!decoded) { written = fwrite(data->dt_data.dt_text.dt_data, 1, data->dt_data.dt_text.dt_length, f); if (written != data->dt_data.dt_text.dt_length) { fclose(f); unlink(filename); res = MAIL_ERROR_FILE; goto err; } } fclose(f); dup_filename = strdup(filename); if (dup_filename == NULL) { unlink(filename); res = MAIL_ERROR_MEMORY; goto err; } data->dt_type = MAILMIME_DATA_FILE; data->dt_data.dt_filename = dup_filename; return MAIL_NO_ERROR; err: return res; }
int mailprivacy_fetch_decoded_to_file(struct mailprivacy * privacy, char * filename, size_t size, mailmessage * msg, struct mailmime * mime) { int r; int res; FILE * f; char * content; size_t content_len; size_t written; struct mailmime_single_fields single_fields; int encoding; size_t cur_token; char * parsed_content; size_t parsed_content_len; mailmime_single_fields_init(&single_fields, mime->mm_mime_fields, mime->mm_content_type); if (single_fields.fld_encoding != NULL) encoding = single_fields.fld_encoding->enc_type; else encoding = MAILMIME_MECHANISM_8BIT; r = mailprivacy_msg_fetch_section(privacy, msg, mime, &content, &content_len); if (r != MAIL_NO_ERROR) { res = MAIL_ERROR_FETCH; goto err; } cur_token = 0; r = mailmime_part_parse(content, content_len, &cur_token, encoding, &parsed_content, &parsed_content_len); mailprivacy_msg_fetch_result_free(privacy, msg, content); if (r != MAILIMF_NO_ERROR) { res = MAIL_ERROR_PARSE; goto err; } f = mailprivacy_get_tmp_file(privacy, filename, size); if (f == NULL) { res = MAIL_ERROR_FETCH; goto free_fetch; } written = fwrite(parsed_content, 1, parsed_content_len, f); if (written != parsed_content_len) { res = MAIL_ERROR_FILE; goto close; } fclose(f); mmap_string_unref(parsed_content); return MAIL_NO_ERROR; close: fclose(f); unlink(filename); free_fetch: mmap_string_unref(parsed_content); err: return res; }
static int imap_get_bodystructure(mailmessage * msg_info, struct mailmime ** result) { int r; char key[PATH_MAX]; char filename[PATH_MAX]; char * str; size_t len; if (msg_info->msg_mime != NULL) { * result = msg_info->msg_mime; return MAIL_NO_ERROR; } generate_key_from_message(key, PATH_MAX, msg_info, MAILIMAP_MSG_ATT_BODYSTRUCTURE); build_cache_name(filename, PATH_MAX, msg_info, key); r = generic_cache_read(filename, &str, &len); if (r == MAIL_NO_ERROR) { size_t cur_index; struct mailmime * mime; cur_index = 0; r = mailmime_parse(str, len, &cur_index, &mime); mmap_string_unref(str); cleanup_mime(mime); msg_info->msg_mime = mime; * result = mime; return MAIL_NO_ERROR; } r = mailmessage_get_bodystructure(get_ancestor(msg_info), result); if (r == MAIL_NO_ERROR) { int col; FILE * f; msg_info->msg_mime = get_ancestor(msg_info)->msg_mime; get_ancestor(msg_info)->msg_mime = NULL; f = fopen(filename, "w"); if (f == NULL) { return MAIL_ERROR_FILE; } col = 0; r = mailmime_write(f, &col, msg_info->msg_mime); if (r != MAILIMF_NO_ERROR) { fclose(f); return MAIL_ERROR_FILE; } fclose(f); } return r; }
void mailmbox_fetch_result_free(char * msg) { mmap_string_unref(msg); }
static void fetch_result_free(mailmessage * msg_info, char * content) { mmap_string_unref(content); }
void mailmessage_generic_fetch_result_free(mailmessage * msg_info, char * msg) { mmap_string_unref(msg); }
LIBETPAN_EXPORT void charconv_buffer_free(char * str) { mmap_string_unref(str); }