SET_FILTER_KEY("header \"List-Id\"", H_LIST_ID);
extract_list_id_str(*key);
} else if (hentry[H_X_SEQUENCE].body != NULL) {
- guchar *p;
+ gchar *p;
SET_FILTER_KEY("X-Sequence", H_X_SEQUENCE);
p = *key;
while (*p != '\0') {
- while (*p != '\0' && !isspace(*p)) p++;
- while (isspace(*p)) p++;
- if (isdigit(*p)) {
+ while (*p != '\0' && !g_ascii_isspace(*p)) p++;
+ while (g_ascii_isspace(*p)) p++;
+ if (g_ascii_isdigit(*p)) {
*p = '\0';
break;
}
procmsg_msginfo_free(msginfo);
}
-
+ g_slist_free(mlist);
folder_item_remove_all_msg(trash);
}
}
GList *cur;
for (cur = folder_get_list(); cur != NULL; cur = cur->next) {
- trash = FOLDER(cur->data)->trash;
+ Folder *folder = FOLDER(cur->data);
+ trash = folder->trash;
procmsg_empty_trash(trash);
+ if (folder->account && folder->account->set_trash_folder &&
+ folder_find_item_from_identifier(folder->account->trash_folder))
+ procmsg_empty_trash(
+ folder_find_item_from_identifier(folder->account->trash_folder));
}
}
return (err != 0 ? -err : sent);
}
+/*!
+ *\brief Determine if a queue folder is empty
+ *
+ *\param queue Queue folder to process
+ *
+ *\return TRUE if the queue folder is empty, otherwise return FALSE
+ */
+gboolean procmsg_queue_is_empty(FolderItem *queue)
+{
+ GSList *list;
+ gboolean res = FALSE;
+ if (!queue)
+ queue = folder_get_default_queue();
+ g_return_val_if_fail(queue != NULL, TRUE);
+
+ folder_item_scan(queue);
+ list = folder_item_get_msg_list(queue);
+ res = (list == NULL);
+ procmsg_msg_list_free(list);
+ return res;
+}
+
gint procmsg_remove_special_headers(const gchar *in, const gchar *out)
{
FILE *fp, *outfp;
g_return_if_fail(msginfo);
- if ((tmpfp = procmime_get_first_text_content(msginfo)) == NULL) {
+ if (procmime_msginfo_is_encrypted(msginfo))
+ tmpfp = procmime_get_first_encrypted_text_content(msginfo);
+ else
+ tmpfp = procmime_get_first_text_content(msginfo);
+ if (tmpfp == NULL) {
g_warning("Can't get text part\n");
return;
}
g_snprintf(buf, sizeof(buf) - 1, cmdline, prtmp);
else {
if (cmdline)
- g_warning("Print command line is invalid: `%s'\n",
+ g_warning("Print command line is invalid: '%s'\n",
cmdline);
g_snprintf(buf, sizeof(buf) - 1, def_cmd, prtmp);
}
/* MARK flag */
if (!(old_flags & MSG_MARKED) && (new_flags & MSG_MARKED)) {
procmsg_update_unread_children(msginfo, TRUE);
+ item->marked_msgs++;
}
if ((old_flags & MSG_MARKED) && !(new_flags & MSG_MARKED)) {
procmsg_update_unread_children(msginfo, FALSE);
+ item->marked_msgs--;
}
}
if((filtering_rules != NULL) &&
filter_message_by_msginfo(filtering_rules, msginfo))
return TRUE;
+
+ hooks_invoke(MAIL_POSTFILTERING_HOOKLIST, msginfo);
return FALSE;
}
mimeinfo->content = MIMECONTENT_FILE;
mimeinfo->data.filename = g_strdup(tmpfile);
g_free(tmpfile);
- }
-
- tmp_msginfo = procheader_parse_file(mimeinfo->data.filename,
- flags, TRUE, FALSE);
-
- if (tmp_msginfo != NULL) {
- tmp_msginfo->folder = src_msginfo->folder;
- tmp_msginfo->plaintext_file = g_strdup(mimeinfo->data.filename);
+ tmp_msginfo = procheader_parse_file(mimeinfo->data.filename,
+ flags, TRUE, FALSE);
+ if (tmp_msginfo != NULL) {
+ tmp_msginfo->folder = src_msginfo->folder;
+ tmp_msginfo->plaintext_file = g_strdup(mimeinfo->data.filename);
+ } else {
+ g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
+ }
} else {
- g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
+ gchar *tmpfile = get_tmp_file();
+ FILE *fp = fopen(tmpfile, "wb");
+ if (fp && procmime_write_message_rfc822(mimeinfo, fp) >= 0) {
+ tmp_msginfo = procheader_parse_file(
+ tmpfile, flags, TRUE, FALSE);
+ }
+ if (fp)
+ fclose(fp);
+ if (tmp_msginfo != NULL) {
+ tmp_msginfo->folder = src_msginfo->folder;
+ tmp_msginfo->plaintext_file = g_strdup(tmpfile);
+ } else {
+ g_warning("procmsg_msginfo_new_from_mimeinfo(): Can't generate new msginfo");
+ }
+ g_free(tmpfile);
+
}
return tmp_msginfo;