#include <w32lib.h>
#endif
+#include "alertpanel.h"
#include "folder.h"
#include "session.h"
#include "inc.h"
if (folder) {
folder_add(folder);
folder_unloaded_list = g_slist_remove(folder_unloaded_list, node);
+ xml_free_tree(node);
}
cur = NULL;
continue;
return NULL;
}
item->folder = folder;
- folder->node = item->node = g_node_new(item);
+ folder->node = item->node;
folder->data = NULL;
return folder;
account = account_find_from_id(atoi(attr->value));
if (!account)
- g_warning("account_id: %s not found\n", attr->value);
+ g_warning("account_id: %s not found", attr->value);
else {
folder->account = account;
account->folder = folder;
item->data = NULL;
item->parent_stype = -1;
- item->sort_key = SORT_BY_DATE;
- item->sort_type = SORT_ASCENDING;
+ item->sort_key = prefs_common.default_sort_key;
+ item->sort_type = prefs_common.default_sort_type;
item->prefs = folder_item_prefs_new();
account = account_find_from_id(atoi(attr->value));
if (!account)
- g_warning("account_id: %s not found\n", attr->value);
+ g_warning("account_id: %s not found", attr->value);
else
item->account = account;
} else if (!strcmp(attr->name, "apply_sub")) {
xmlnode = node->data;
if (strcmp2(xmlnode->tag->tag, "folderlist") != 0) {
- g_warning("wrong folder list\n");
+ g_warning("wrong folder list");
xml_free_tree(node);
return -1;
}
if (xml_file_put_xml_decl(pfile->fp) < 0) {
prefs_file_close_revert(pfile);
- g_warning("failed to start write folder list.\n");
+ g_warning("failed to start write folder list.");
return;
}
tag = xml_tag_new("folderlist");
if (xml_write_tree(rootnode, pfile->fp) < 0) {
prefs_file_close_revert(pfile);
- g_warning("failed to write folder list.\n");
+ g_warning("failed to write folder list.");
} else if (prefs_file_close(pfile) < 0) {
- g_warning("failed to write folder list.\n");
+ g_warning("failed to write folder list.");
}
xml_free_tree(rootnode);
}
continue;
if (folder->klass->create_tree(folder) < 0) {
- g_warning("%s: can't create the folder tree.\n",
+ g_warning("%s: can't create the folder tree.",
LOCAL_FOLDER(folder)->rootpath);
continue;
}
ret = syncronize_flags(item, msglist);
- for (cur = msglist; cur != NULL; cur = g_slist_next(cur))
- procmsg_msginfo_free((MsgInfo *) cur->data);
+ for (cur = msglist; cur != NULL; cur = g_slist_next(cur)) {
+ procmsg_msginfo_free((MsgInfo **)&(cur->data));
+ }
g_slist_free(msglist);
msginfo = (MsgInfo *) cur->data;
if (MSG_IS_NEW(msginfo->flags))
procmsg_msginfo_unset_flags(msginfo, MSG_NEW, 0);
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
}
g_slist_free(mlist);
folder_item_update_thaw();
if (msginfo && folder->klass->is_msg_changed && folder->klass->is_msg_changed(folder, item, msginfo)) {
msgcache_remove_msg(item->cache, msginfo->msgnum);
new_list = g_slist_prepend(new_list, GINT_TO_POINTER(msginfo->msgnum));
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
debug_print("Remembering message %d to update...\n", folder_cur_num);
} else if (msginfo) {
}
for(cache_list_cur = cache_list; cache_list_cur != NULL; cache_list_cur = g_slist_next(cache_list_cur))
- procmsg_msginfo_free((MsgInfo *) cache_list_cur->data);
+ procmsg_msginfo_free((MsgInfo **)&(cache_list_cur->data));
g_slist_free(cache_list);
g_slist_free(folder_list);
if (to_filter != NULL) {
for (elem = to_filter; elem; elem = g_slist_next(elem)) {
MsgInfo *msginfo = (MsgInfo *)elem->data;
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
}
g_slist_free(to_filter);
}
totalcnt++;
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
}
folder_item_set_batch(item, FALSE);
g_slist_free(exists_list);
/* check for attachments */
if (mimeinfo != NULL) {
g_node_children_foreach(mimeinfo->node, G_TRAVERSE_ALL, msginfo_set_mime_flags, msginfo);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
procmsg_msginfo_set_flags(msginfo, 0, MSG_SCANNED);
}
}
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
}
return msgfile;
/* check for attachments */
if (mimeinfo != NULL) {
g_node_children_foreach(mimeinfo->node, G_TRAVERSE_ALL, msginfo_set_mime_flags, msginfo);
- procmime_mimeinfo_free_all(mimeinfo);
+ procmime_mimeinfo_free_all(&mimeinfo);
procmsg_msginfo_set_flags(msginfo, 0, MSG_SCANNED);
}
}
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
}
return msgfile;
remove_space(hentry[0].body);
if ((msginfo = msgcache_get_msg_by_id(dest->cache, hentry[0].body)) != NULL) {
msgnum = msginfo->msgnum;
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
debug_print("found message as uid %d\n", msgnum);
}
if (!folderscan &&
((newmsginfo = get_msginfo(dest, num)) != NULL)) {
add_msginfo_to_cache(dest, newmsginfo, NULL);
- procmsg_msginfo_free(newmsginfo);
+ procmsg_msginfo_free(&newmsginfo);
} else if ((newmsginfo = msgcache_get_msg(dest->cache, num)) != NULL) {
/* TODO: set default flags */
- procmsg_msginfo_free(newmsginfo);
+ procmsg_msginfo_free(&newmsginfo);
}
}
}
log_message(LOG_PROTOCOL, copy ?_("Copying %s to %s...\n"):_("Moving %s to %s...\n"),
src->name, new_item->path);
- mlist = folder_item_get_msg_list(src);
-
- if (mlist != NULL) {
- if (copy)
- folder_item_copy_msgs(new_item, mlist);
- else
- folder_item_move_msgs(new_item, mlist);
- procmsg_msg_list_free(mlist);
- }
-
/*copy prefs*/
folder_item_prefs_copy_prefs(src, new_item);
new_item->sort_key = src->sort_key;
new_item->sort_type = src->sort_type;
+ mlist = folder_item_get_msg_list(src);
+
+ if (mlist != NULL) {
+ if (copy)
+ folder_item_copy_msgs(new_item, mlist);
+ else
+ folder_item_move_msgs(new_item, mlist);
+ procmsg_msg_list_free(mlist);
+ }
+
prefs_matcher_write_config();
/* recurse */
item->folder->klass->remove_msg(item->folder,
msginfo->folder,
msginfo->msgnum);
- if (!item->folder->account || item->folder->account->imap_use_trash) {
- remove_msginfo_from_cache(item, msginfo);
- }
+ remove_msginfo_from_cache(item, msginfo);
}
}
}
hooks_invoke (MAIL_POSTFILTERING_HOOKLIST, newmsginfo);
}
}
- procmsg_msginfo_free(newmsginfo);
+ procmsg_msginfo_free(&newmsginfo);
if (num > lastnum)
msginfo = msgcache_get_msg(item->cache, num);
if (msginfo && MSG_IS_LOCKED(msginfo->flags)) {
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free(&msginfo);
return -1;
}
ret = folder->klass->remove_msg(folder, item, num);
- if (!item->folder->account || item->folder->account->imap_use_trash) {
- if (msginfo != NULL) {
- if (ret == 0)
- remove_msginfo_from_cache(item, msginfo);
- procmsg_msginfo_free(msginfo);
- }
+ if (msginfo != NULL) {
+ if (ret == 0)
+ remove_msginfo_from_cache(item, msginfo);
+ procmsg_msginfo_free(&msginfo);
}
return ret;
#endif
path = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
- "tagsdb", G_DIR_SEPARATOR_S,
+ TAGS_DIR, G_DIR_SEPARATOR_S,
identifier, NULL);
g_free(identifier);
cm_return_val_if_fail(folder != NULL, NULL);
if (strcmp2(xmlnode->tag->tag, "folderitem") != 0) {
- g_warning("tag name != \"folderitem\"\n");
+ g_warning("tag name != \"folderitem\"");
return NULL;
}
item = folder_item_new(folder, "", "");
+ g_node_destroy(item->node);
if (folder->klass->item_set_xml != NULL)
folder->klass->item_set_xml(folder, item, xmlnode->tag);
else
xmlnode = node->data;
if (strcmp2(xmlnode->tag->tag, "folder") != 0) {
- g_warning("tag name != \"folder\"\n");
+ g_warning("tag name != \"folder\"");
return NULL;
}
list = xmlnode->tag->attr;
|| post_global_processing)
filtering_move_and_copy_msgs(mlist);
for (cur = mlist ; cur != NULL ; cur = cur->next) {
- MsgInfo * msginfo = (MsgInfo *)cur->data;
- procmsg_msginfo_free(msginfo);
+ procmsg_msginfo_free((MsgInfo **)&(cur->data));
}
g_slist_free(mlist);
return matched_count;
}
+/* Tests if a local (on disk) folder name is acceptable. */
+gboolean folder_local_name_ok(const gchar *name)
+{
+#ifdef G_OS_WIN32
+ if (name[0] == '.' || name[strlen(name) - 1] == '.') {
+ alertpanel_error(_("A folder name cannot begin or end with a dot."));
+ return FALSE;
+ }
+ if (name[strlen(name) - 1] == ' ') {
+ alertpanel_error(_("A folder name can not end with a space."));
+ return FALSE;
+ }
+#endif
+
+ return TRUE;
+}