/*
- * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
+ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
+ * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
*/
#ifdef HAVE_CONFIG_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")) {
item->last_seen = 0;
}
}
+ /* options without meaning in drafts */
+ if (item->stype == F_DRAFT)
+ item->hide_read_msgs =
+ item->hide_del_msgs =
+ item->hide_read_threads = FALSE;
}
XMLTag *folder_item_get_xml(Folder *folder, FolderItem *item)
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);
}
}
}
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);
gboolean folder_local_name_ok(const gchar *name)
{
#ifdef G_OS_WIN32
- if (name[0] == '.' || new_folder[strlen(name) - 1]) {
- alertpanel_error(_("A folder name cannot begin or end with a dot.");
+ 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