Folder *folder = NULL;
FolderItem *item;
- g_return_val_if_fail(klass != NULL, NULL);
+ cm_return_val_if_fail(klass != NULL, NULL);
name = name ? name : path;
folder = klass->new_folder(name, path);
void folder_init(Folder *folder, const gchar *name)
{
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
folder_set_name(folder, name);
void folder_destroy(Folder *folder)
{
- g_return_if_fail(folder != NULL);
- g_return_if_fail(folder->klass->destroy_folder != NULL);
+ cm_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder->klass->destroy_folder != NULL);
folder_remove(folder);
{
FolderItem *item = NULL;
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
if (folder->klass->item_new) {
item = folder->klass->item_new(folder);
item = g_new0(FolderItem, 1);
}
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
item->stype = F_NORMAL;
item->name = g_strdup(name);
void folder_item_append(FolderItem *parent, FolderItem *item)
{
- g_return_if_fail(parent != NULL);
- g_return_if_fail(parent->folder != NULL);
- g_return_if_fail(parent->node != NULL);
- g_return_if_fail(item != NULL);
+ cm_return_if_fail(parent != NULL);
+ cm_return_if_fail(parent->folder != NULL);
+ cm_return_if_fail(parent->node != NULL);
+ cm_return_if_fail(item != NULL);
item->folder = parent->folder;
g_node_append(parent->node, item->node);
FolderUpdateData hookdata;
gchar *tags_file = NULL;
- g_return_if_fail(item != NULL);
- g_return_if_fail(item->folder != NULL);
- g_return_if_fail(item->folder->node != NULL);
+ cm_return_if_fail(item != NULL);
+ cm_return_if_fail(item->folder != NULL);
+ cm_return_if_fail(item->folder->node != NULL);
start_node = node = item->node;
{
GNode *node, *next;
- g_return_if_fail(item != NULL);
- g_return_if_fail(item->folder != NULL);
- g_return_if_fail(item->node != NULL);
+ cm_return_if_fail(item != NULL);
+ cm_return_if_fail(item->folder != NULL);
+ cm_return_if_fail(item->node != NULL);
node = item->node->children;
while (node != NULL) {
{
Folder *folder;
- g_return_if_fail(item != NULL);
+ cm_return_if_fail(item != NULL);
folder = item->folder;
if (folder) {
FolderItem *folder_item_parent(FolderItem *item)
{
- g_return_val_if_fail(item != NULL, NULL);
- g_return_val_if_fail(item->node != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item->node != NULL, NULL);
if (item->node->parent == NULL)
return NULL;
item->threaded = *attr->value == '1' ? TRUE : FALSE;
else if (!strcmp(attr->name, "hidereadmsgs"))
item->hide_read_msgs = *attr->value == '1' ? TRUE : FALSE;
+ else if (!strcmp(attr->name, "hidedelmsgs"))
+ item->hide_del_msgs = *attr->value == '1' ? TRUE : FALSE;
else if (!strcmp(attr->name, "reqretrcpt"))
item->ret_rcpt = *attr->value == '1' ? TRUE : FALSE;
else if (!strcmp(attr->name, "sort_key")) {
xml_tag_add_attr(tag, xml_attr_new("thread_collapsed", item->thread_collapsed ? "1" : "0"));
xml_tag_add_attr(tag, xml_attr_new("threaded", item->threaded ? "1" : "0"));
xml_tag_add_attr(tag, xml_attr_new("hidereadmsgs", item->hide_read_msgs ? "1" : "0"));
+ xml_tag_add_attr(tag, xml_attr_new("hidedelmsgs", item->hide_del_msgs ? "1" : "0"));
if (item->ret_rcpt)
xml_tag_add_attr(tag, xml_attr_new("reqretrcpt", "1"));
void folder_set_ui_func(Folder *folder, FolderUIFunc func, gpointer data)
{
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
folder->ui_func = func;
folder->ui_func_data = data;
void folder_set_name(Folder *folder, const gchar *name)
{
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
g_free(folder->name);
folder->name = name ? g_strdup(name) : NULL;
void folder_set_sort(Folder *folder, guint sort)
{
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
if (folder->sort != sort) {
folder_remove(folder);
{
GNode *node;
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
node = folder->node;
gint i;
FolderUpdateData hookdata;
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
if ((FOLDER_TYPE(folder) == F_IMAP ||
FOLDER_TYPE(folder) == F_NEWS) &&
{
FolderUpdateData hookdata;
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
folder_list = g_list_remove(folder_list, folder);
{
FolderItem *new_item;
- g_return_val_if_fail(parent != NULL, NULL);
+ cm_return_val_if_fail(parent != NULL, NULL);
new_item = parent->folder->klass->create_folder(parent->folder, parent, name);
if (new_item) {
FolderUpdateData hookdata;
new_item->cache = msgcache_new();
+ new_item->cache_dirty = TRUE;
+ new_item->mark_dirty = TRUE;
+ new_item->tags_dirty = TRUE;
hookdata.folder = new_item->folder;
hookdata.update_flags = FOLDER_TREE_CHANGED | FOLDER_ADD_FOLDERITEM;
{
gint retval;
- g_return_val_if_fail(item != NULL, -1);
- g_return_val_if_fail(newname != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(newname != NULL, -1);
retval = item->folder->klass->rename_folder(item->folder, item, newname);
FolderItem *item;
struct FuncToAllFoldersData *function_data = (struct FuncToAllFoldersData *) data;
- g_return_val_if_fail(node->data != NULL, FALSE);
+ cm_return_val_if_fail(node->data != NULL, FALSE);
item = FOLDER_ITEM(node->data);
- g_return_val_if_fail(item != NULL, FALSE);
+ cm_return_val_if_fail(item != NULL, FALSE);
function_data->function(item, function_data->data);
struct TotalMsgStatus *status = (struct TotalMsgStatus *)data;
gchar *id;
- g_return_val_if_fail(node->data != NULL, FALSE);
+ cm_return_val_if_fail(node->data != NULL, FALSE);
item = FOLDER_ITEM(node->data);
folder = list ? list->data:NULL;
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
d[0] = (gpointer)path;
d[1] = NULL;
folder = list ? list->data:NULL;
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
d[0] = (gpointer)path;
d[1] = NULL;
{
gchar *type_str;
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
type_str = folder->klass->idstr;
return g_strconcat("#", type_str, "/", folder->name, NULL);
gchar *id = NULL;
gchar *folder_id = NULL;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
if (item->path == NULL)
return NULL;
gchar *path;
FolderClass *class;
- g_return_val_if_fail(identifier != NULL, NULL);
+ cm_return_val_if_fail(identifier != NULL, NULL);
if (*identifier != '#')
return folder_find_item_from_path(identifier);
{
gchar *name = NULL;
- g_return_val_if_fail(item != NULL, g_strdup(""));
+ cm_return_val_if_fail(item != NULL, g_strdup(""));
switch (item->stype) {
case F_INBOX:
folder = list->data;
if (FOLDER_TYPE(folder) != F_MH) continue;
rootitem = FOLDER_ITEM(folder->node->data);
- g_return_if_fail(rootitem != NULL);
+ cm_return_if_fail(rootitem != NULL);
if (folder->inbox && folder->outbox && folder->draft &&
folder->queue && folder->trash)
{
Folder *folder;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
folder = item->folder;
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
return folder->klass->item_get_path(folder, item);
}
GSList *cur;
gint ret = 0;
- g_return_val_if_fail(item != NULL, -1);
- g_return_val_if_fail(item->folder != NULL, -1);
- g_return_val_if_fail(item->folder->klass != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(item->folder != NULL, -1);
+ cm_return_val_if_fail(item->folder->klass != NULL, -1);
if (item->no_select)
return -1;
GSList *mlist, *cur;
Folder *folder;
- g_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
if (item->no_select)
return -1;
gboolean update_flags = 0, old_uids_valid = FALSE;
GHashTable *subject_table = NULL;
- g_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
if (item->path == NULL) return -1;
folder = item->folder;
- g_return_val_if_fail(folder != NULL, -1);
- g_return_val_if_fail(folder->klass->get_num_list != NULL, -1);
+ cm_return_val_if_fail(folder != NULL, -1);
+ cm_return_val_if_fail(folder->klass->get_num_list != NULL, -1);
item->scanning = ITEM_SCANNING_WITH_FLAGS;
if (item->cache)
msgcache_destroy(item->cache);
item->cache = msgcache_new();
+ item->cache_dirty = TRUE;
+ item->mark_dirty = TRUE;
+ item->tags_dirty = TRUE;
cache_list = NULL;
}
MsgInfo *msginfo;
msginfo = msgcache_get_msg(item->cache, folder_cur_num);
- if (folder->klass->is_msg_changed && folder->klass->is_msg_changed(folder, item, msginfo)) {
+ 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);
debug_print("Remembering message %d to update...\n", folder_cur_num);
- } else {
+ } else if (msginfo) {
exists_list = g_slist_prepend(exists_list, msginfo);
if(prefs_common.thread_by_subject &&
gboolean folder_item_free_cache(FolderItem *item, gboolean force)
{
- g_return_val_if_fail(item != NULL, TRUE);
+ cm_return_val_if_fail(item != NULL, TRUE);
if (item->cache == NULL)
return TRUE;
{
Folder *folder = item->folder;
- g_return_if_fail(folder != NULL);
+ cm_return_if_fail(folder != NULL);
if (folder->klass->remove_cached_msg == NULL)
return;
static void folder_item_clean_local_files(FolderItem *item, gint days)
{
- g_return_if_fail(item != NULL);
- g_return_if_fail(item->folder != NULL);
+ cm_return_if_fail(item != NULL);
+ cm_return_if_fail(item->folder != NULL);
if (FOLDER_TYPE(item->folder) == F_IMAP ||
FOLDER_TYPE(item->folder) == F_NEWS) {
{
gchar *cache_file, *mark_file, *tags_file;
START_TIMING("");
- g_return_if_fail(item != NULL);
+ cm_return_if_fail(item != NULL);
if (item->path != NULL) {
cache_file = folder_item_get_cache_file(item);
mark_file = folder_item_get_mark_file(item);
tags_file = folder_item_get_tags_file(item);
item->cache = msgcache_read_cache(item, cache_file);
+ item->cache_dirty = FALSE;
+ item->mark_dirty = FALSE;
+ item->tags_dirty = FALSE;
if (!item->cache) {
MsgInfoList *list, *cur;
guint newcnt = 0, unreadcnt = 0;
MsgInfo *msginfo;
item->cache = msgcache_new();
+ item->cache_dirty = TRUE;
+ item->mark_dirty = TRUE;
+ item->tags_dirty = TRUE;
folder_item_scan_full(item, TRUE);
msgcache_read_mark(item->cache, mark_file);
g_free(tags_file);
} else {
item->cache = msgcache_new();
+ item->cache_dirty = TRUE;
+ item->mark_dirty = TRUE;
+ item->tags_dirty = TRUE;
}
+
END_TIMING();
folder_clean_cache_memory(item);
}
void folder_item_write_cache(FolderItem *item)
{
- gchar *cache_file, *mark_file, *tags_file;
+ gchar *cache_file = NULL, *mark_file = NULL, *tags_file = NULL;
FolderItemPrefs *prefs;
gint filemode = 0;
gchar *id;
debug_print("Save cache for folder %s\n", id);
g_free(id);
- cache_file = folder_item_get_cache_file(item);
- mark_file = folder_item_get_mark_file(item);
- tags_file = folder_item_get_tags_file(item);
+ if (item->cache_dirty)
+ cache_file = folder_item_get_cache_file(item);
+ if (item->cache_dirty || item->mark_dirty)
+ mark_file = folder_item_get_mark_file(item);
+ if (item->cache_dirty || item->tags_dirty)
+ tags_file = folder_item_get_tags_file(item);
if (msgcache_write(cache_file, mark_file, tags_file, item->cache) < 0) {
prefs = item->prefs;
if (prefs && prefs->enable_folder_chmod && prefs->folder_chmod) {
if (filemode & S_IROTH) filemode |= S_IWOTH;
chmod(cache_file, filemode);
}
- }
+ } else {
+ item->cache_dirty = FALSE;
+ item->mark_dirty = FALSE;
+ item->tags_dirty = FALSE;
+ }
if (!need_scan && item->folder->klass->set_mtime) {
if (item->mtime == last_mtime) {
Folder *folder;
MsgInfo *msginfo = NULL;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
if (item->no_select)
return NULL;
folder = item->folder;
Folder *folder;
MsgInfo *msginfo;
- g_return_val_if_fail(item != NULL, NULL);
- g_return_val_if_fail(msgid != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(msgid != NULL, NULL);
if (item->no_select)
return FALSE;
GSList *folder_item_get_msg_list(FolderItem *item)
{
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
if (item->no_select)
return FALSE;
if (item->cache == 0)
folder_item_read_cache(item);
- g_return_val_if_fail(item->cache != NULL, NULL);
+ cm_return_val_if_fail(item->cache != NULL, NULL);
return msgcache_get_msg_list(item->cache);
}
gchar *msgfile;
MsgInfo *msginfo;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
folder = item->folder;
- g_return_val_if_fail(folder->klass->fetch_msg != NULL, NULL);
+ cm_return_val_if_fail(folder->klass->fetch_msg != NULL, NULL);
if (item->no_select)
return NULL;
gchar *msgfile;
MsgInfo *msginfo;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
if (item->no_select)
return NULL;
GSList file_list;
MsgFileInfo fileinfo;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(file != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(file != NULL, -1);
fileinfo.msginfo = NULL;
fileinfo.file = (gchar *)file;
MsgFileInfo *fileinfo = NULL;
gboolean folderscan = FALSE;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(file_list != NULL, -1);
- g_return_val_if_fail(dest->folder != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(file_list != NULL, -1);
+ cm_return_val_if_fail(dest->folder != NULL, -1);
if (dest->no_select)
return -1;
new_item->threaded = src->threaded;
new_item->ret_rcpt = src->ret_rcpt;
new_item->hide_read_msgs = src->hide_read_msgs;
+ new_item->hide_del_msgs = src->hide_del_msgs;
new_item->sort_key = src->sort_key;
new_item->sort_type = src->sort_type;
gint total = 0, curmsg = 0;
MsgInfo *msginfo = NULL;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(msglist != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(msglist != NULL, -1);
folder = dest->folder;
- g_return_val_if_fail(folder->klass->copy_msg != NULL, -1);
+ cm_return_val_if_fail(folder->klass->copy_msg != NULL, -1);
if (dest->no_select)
return -1;
item->folder->klass->remove_msg(item->folder,
msginfo->folder,
msginfo->msgnum);
- remove_msginfo_from_cache(item, msginfo);
+ if (!item->folder->account || item->folder->account->imap_use_trash) {
+ remove_msginfo_from_cache(item, msginfo);
+ }
}
}
}
MsgInfo *msginfo = (MsgInfo *) l->data;
GTuples *tuples;
+ if (!msginfo)
+ continue;
tuples = g_relation_select(relation, msginfo, 0);
- if (tuples->len > 0) {
+ if (tuples && tuples->len > 0) {
num = GPOINTER_TO_INT(g_tuples_index(tuples, 0, 1));
g_tuples_destroy(tuples);
} else {
partial_mark_for_download(newmsginfo);
}
if (!MSG_IS_POSTFILTERED (msginfo->flags)) {
- procmsg_msginfo_set_flags ( msginfo, MSG_POSTFILTERED, 0);
- procmsg_msginfo_set_flags (newmsginfo, MSG_POSTFILTERED, 0);
- hooks_invoke (MAIL_POSTFILTERING_HOOKLIST, newmsginfo);
+ procmsg_msginfo_set_flags ( msginfo, MSG_POSTFILTERED, 0);
+ if (newmsginfo) {
+ procmsg_msginfo_set_flags (newmsginfo, MSG_POSTFILTERED, 0);
+ hooks_invoke (MAIL_POSTFILTERING_HOOKLIST, newmsginfo);
+ }
}
procmsg_msginfo_free(newmsginfo);
{
GSList list;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(msginfo != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(msginfo != NULL, -1);
list.data = msginfo;
list.next = NULL;
gint folder_item_move_msgs(FolderItem *dest, GSList *msglist)
{
gint result = -1;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(msglist != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(msglist != NULL, -1);
inc_lock();
result = do_copy_msgs(dest, msglist, TRUE);
inc_unlock();
{
GSList list;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(msginfo != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(msginfo != NULL, -1);
list.data = msginfo;
list.next = NULL;
gint folder_item_copy_msgs(FolderItem *dest, GSList *msglist)
{
gint result;
- g_return_val_if_fail(dest != NULL, -1);
- g_return_val_if_fail(msglist != NULL, -1);
+ cm_return_val_if_fail(dest != NULL, -1);
+ cm_return_val_if_fail(msglist != NULL, -1);
inc_lock();
result = do_copy_msgs(dest, msglist, FALSE);
gint ret;
MsgInfo *msginfo;
- g_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
folder = item->folder;
- g_return_val_if_fail(folder->klass->remove_msg != NULL, -1);
+ cm_return_val_if_fail(folder->klass->remove_msg != NULL, -1);
if (item->no_select)
return -1;
}
ret = folder->klass->remove_msg(folder, item, num);
- if (msginfo != NULL) {
- remove_msginfo_from_cache(item, msginfo);
- procmsg_msginfo_free(msginfo);
+ if (!item->folder->account || item->folder->account->imap_use_trash) {
+ if (msginfo != NULL) {
+ remove_msginfo_from_cache(item, msginfo);
+ procmsg_msginfo_free(msginfo);
+ }
}
return ret;
gint ret = 0;
GSList *real_list = NULL, *cur = NULL;
- g_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
folder = item->folder;
- g_return_val_if_fail(folder != NULL, -1);
+ cm_return_val_if_fail(folder != NULL, -1);
if (item->no_select)
return -1;
inc_lock();
return ret;
}
+gint folder_item_expunge(FolderItem *item)
+{
+ Folder *folder = item->folder;
+ gint result = 0;
+ if (folder == NULL)
+ return -1;
+ if (folder->klass->expunge) {
+ GSList *msglist = folder_item_get_msg_list(item);
+ GSList *cur;
+ result = folder->klass->expunge(folder, item);
+ if (result == 0) {
+ for (cur = msglist; cur; cur = cur->next) {
+ MsgInfo *msginfo = (MsgInfo *)cur->data;
+ if (MSG_IS_DELETED(msginfo->flags)) {
+ remove_msginfo_from_cache(item, msginfo);
+ }
+ }
+ }
+ procmsg_msg_list_free(msglist);
+ }
+ return result;
+}
+
gint folder_item_remove_all_msg(FolderItem *item)
{
Folder *folder;
gint result;
- g_return_val_if_fail(item != NULL, -1);
+ cm_return_val_if_fail(item != NULL, -1);
if (item->no_select)
return -1;
if (result == 0) {
folder_item_free_cache(item, TRUE);
item->cache = msgcache_new();
+ item->cache_dirty = TRUE;
+ item->mark_dirty = TRUE;
+ item->tags_dirty = TRUE;
}
} else {
MsgInfoList *msglist;
void folder_item_change_msg_flags(FolderItem *item, MsgInfo *msginfo, MsgPermFlags newflags)
{
- g_return_if_fail(item != NULL);
- g_return_if_fail(msginfo != NULL);
+ cm_return_if_fail(item != NULL);
+ cm_return_if_fail(msginfo != NULL);
+
+ item->mark_dirty = TRUE;
+
if (item->no_select)
return;
if (!folder)
return;
+ item->tags_dirty = TRUE;
+
if (folder->klass->commit_tags == NULL)
return;
{
Folder *folder;
- g_return_val_if_fail(item != NULL, FALSE);
+ cm_return_val_if_fail(item != NULL, FALSE);
if (item->no_select)
return FALSE;
folder = item->folder;
- g_return_val_if_fail(folder->klass->is_msg_changed != NULL, -1);
+ cm_return_val_if_fail(folder->klass->is_msg_changed != NULL, -1);
return folder->klass->is_msg_changed(folder, item, msginfo);
}
gchar *file;
gchar *old_file;
- g_return_val_if_fail(item != NULL, NULL);
- g_return_val_if_fail(item->path != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item->path != NULL, NULL);
path = folder_item_get_path(item);
- g_return_val_if_fail(path != NULL, NULL);
+ cm_return_val_if_fail(path != NULL, NULL);
if (!is_dir_exist(path))
make_dir_hier(path);
file = g_strconcat(path, G_DIR_SEPARATOR_S, CACHE_FILE, NULL);
gchar *file;
gchar *old_file;
- g_return_val_if_fail(item != NULL, NULL);
- g_return_val_if_fail(item->path != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item->path != NULL, NULL);
path = folder_item_get_path(item);
- g_return_val_if_fail(path != NULL, NULL);
+ cm_return_val_if_fail(path != NULL, NULL);
if (!is_dir_exist(path))
make_dir_hier(path);
file = g_strconcat(path, G_DIR_SEPARATOR_S, MARK_FILE, NULL);
* result when using another Claws mailbox from another install
* with different tags. */
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
identifier = folder_item_get_identifier(item);
- g_return_val_if_fail(identifier != NULL, NULL);
+ cm_return_val_if_fail(identifier != NULL, NULL);
#ifdef G_OS_WIN32
while (strchr(identifier, '/'))
Folder *folder = (Folder *) data;
FolderItem *item;
- g_return_val_if_fail(xmlnode != NULL, NULL);
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(xmlnode != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
if (strcmp2(xmlnode->tag->tag, "folderitem") != 0) {
g_warning("tag name != \"folderitem\"\n");
FolderClass *klass = NULL;
GNode *cur;
- g_return_val_if_fail(node->data != NULL, NULL);
+ cm_return_val_if_fail(node->data != NULL, NULL);
xmlnode = node->data;
if (strcmp2(xmlnode->tag->tag, "folder") != 0) {
return NULL;
folder = folder_new(klass, "", "");
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
if (klass->set_xml)
klass->set_xml(folder, xmlnode->tag);
FolderItem *item = (FolderItem *) nodedata;
XMLTag *tag;
- g_return_val_if_fail(item != NULL, NULL);
+ cm_return_val_if_fail(item != NULL, NULL);
if (item->folder->klass->item_get_xml != NULL)
tag = item->folder->klass->item_get_xml(item->folder, item);
XMLNode *xmlnode;
XMLTag *tag;
- g_return_val_if_fail(folder != NULL, NULL);
+ cm_return_val_if_fail(folder != NULL, NULL);
if (folder->klass->get_xml != NULL)
tag = folder->klass->get_xml(folder);
node = g_node_new(xmlnode);
- g_return_val_if_fail (folder->node != NULL, NULL);
+ cm_return_val_if_fail (folder->node != NULL, NULL);
if (folder->node->children) {
GNode *cur;
{
GHashTable *pptable;
- g_return_val_if_fail(folder, NULL);
+ cm_return_val_if_fail(folder, NULL);
pptable = g_hash_table_new(g_str_hash, g_str_equal);
folder_get_persist_prefs_recursive(folder->node, pptable);
return pptable;
static void folder_persist_prefs_free(GHashTable *pptable)
{
- g_return_if_fail(pptable);
+ cm_return_if_fail(pptable);
g_hash_table_foreach_remove(pptable, persist_prefs_free, NULL);
g_hash_table_destroy(pptable);
}
item->threaded = pp->threaded;
item->ret_rcpt = pp->ret_rcpt;
item->hide_read_msgs = pp->hide_read_msgs;
+ item->hide_del_msgs = pp->hide_del_msgs;
item->sort_key = pp->sort_key;
item->sort_type = pp->sort_type;
}
GNode *child, *cur;
gchar *id;
- g_return_if_fail(node != NULL);
- g_return_if_fail(item != NULL);
+ cm_return_if_fail(node != NULL);
+ cm_return_if_fail(item != NULL);
/* NOTE: item->path == NULL means top level folder; not interesting
* to store preferences of that one. */
if (item->path) {
id = folder_item_get_identifier(item);
pp = g_new0(PersistPrefs, 1);
- g_return_if_fail(pp != NULL);
+ cm_return_if_fail(pp != NULL);
pp->collapsed = item->collapsed;
pp->thread_collapsed = item->thread_collapsed;
pp->threaded = item->threaded;
pp->ret_rcpt = item->ret_rcpt;
pp->hide_read_msgs = item->hide_read_msgs;
+ pp->hide_del_msgs = item->hide_del_msgs;
pp->sort_key = item->sort_key;
pp->sort_type = item->sort_type;
g_hash_table_insert(pptable, id, pp);
guint total = 0, curmsg = 0;
gint last_apply_per_account;
- g_return_if_fail(item != NULL);
+ cm_return_if_fail(item != NULL);
if (item->no_select)
return;
{
FolderItem *cur = item;
+ if (!item)
+ return FALSE;
/* if we already know it, make it short */
if (item->parent_stype != -1) {
return (item->parent_stype == type);