/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2009 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
{
GNode *node, *start_node;
FolderUpdateData hookdata;
+ gchar *tags_file = NULL;
g_return_if_fail(item != NULL);
g_return_if_fail(item->folder != NULL);
msgcache_destroy(item->cache);
item->cache = NULL;
}
+ tags_file = folder_item_get_tags_file(item);
+ if (tags_file)
+ claws_unlink(tags_file);
+ g_free(tags_file);
hookdata.folder = item->folder;
hookdata.update_flags = FOLDER_TREE_CHANGED | FOLDER_REMOVE_FOLDERITEM;
FolderItem *folder_create_folder(FolderItem *parent, const gchar *name)
{
FolderItem *new_item;
+
+ g_return_val_if_fail(parent != NULL, NULL);
new_item = parent->folder->klass->create_folder(parent->folder, parent, name);
if (new_item) {
FolderItem *child;
for (node = item->node->children; node != NULL; node = node->next) {
- gchar *base;
child = FOLDER_ITEM(node->data);
- base = g_path_get_basename(child->path);
- if (strcmp2(base, name) == 0) {
- g_free(base);
+ if (strcmp2(child->name, name) == 0) {
return child;
}
- g_free(base);
}
return NULL;
}
/* Move to next folder number */
- folder_list_cur = folder_list_cur->next;
+ if (folder_list_cur)
+ folder_list_cur = folder_list_cur->next;
if (folder_list_cur != NULL)
folder_cur_num = GPOINTER_TO_INT(folder_list_cur->data);
debug_print("Removed message %d from cache.\n", cache_cur_num);
/* Move to next cache number */
- cache_list_cur = cache_list_cur->next;
+ if (cache_list_cur)
+ cache_list_cur = cache_list_cur->next;
if (cache_list_cur != NULL)
cache_cur_num = ((MsgInfo *)cache_list_cur->data)->msgnum;
}
/* Move to next folder and cache number */
- cache_list_cur = cache_list_cur->next;
- folder_list_cur = folder_list_cur->next;
+ if (cache_list_cur)
+ cache_list_cur = cache_list_cur->next;
+
+ if (folder_list_cur)
+ folder_list_cur = folder_list_cur->next;
if (cache_list_cur != NULL)
cache_cur_num = ((MsgInfo *)cache_list_cur->data)->msgnum;
return;
last_mtime = item->mtime;
- need_scan = item->folder->klass->scan_required(item->folder, item);
+ if (item->folder->klass->scan_required)
+ need_scan = item->folder->klass->scan_required(item->folder, item);
+ else
+ need_scan = TRUE;
id = folder_item_get_identifier(item);
debug_print("Save cache for folder %s\n", id);
lastnum = num;
if (num >= 0 && remove_source) {
- if (g_unlink(fileinfo->file) < 0)
+ if (claws_unlink(fileinfo->file) < 0)
FILE_OP_ERROR(fileinfo->file, "unlink");
}
cache = folder_item_get_cache_file(item);
if (is_file_exist(cache))
- g_unlink(cache);
+ claws_unlink(cache);
g_free(cache);
}