added missing folder->destroy() initialisation for mbox folders
[claws.git] / src / mbox_folder.c
index 7f786e28a9c5dd4ced1f05f6eb6dc9bfb794beab..2157bfbe4103413bc7bf0d292ccd49d0870952f2 100644 (file)
@@ -47,7 +47,7 @@ static gchar * mbox_get_new_path(FolderItem * parent, gchar * name);
 static gchar * mbox_get_folderitem_name(gchar * name);
 
 MsgInfo *mbox_fetch_msginfo(Folder *folder, FolderItem *item, gint num);
-GSList *mbox_get_num_list(Folder *folder, FolderItem *item);
+gint mbox_get_num_list(Folder *folder, FolderItem *item, GSList **list);
 gboolean mbox_check_msgnum_validity(Folder *folder, FolderItem *item);
 
 Folder *mbox_folder_new(const gchar *name, const gchar *path)
@@ -88,6 +88,7 @@ static void mbox_folder_init(Folder *folder, const gchar *name, const gchar *pat
        folder->create_folder       = mbox_create_folder;
        folder->rename_folder       = mbox_rename_folder;
        folder->remove_folder       = mbox_remove_folder;
+       folder->destroy             = mbox_folder_destroy;
        folder->check_msgnum_validity
                                    = mbox_check_msgnum_validity;
 }
@@ -183,6 +184,7 @@ static gboolean mbox_file_lock_file(gchar * base)
                        g_warning(_("can't create %s\n"), lockfile);
                        unlink(lockfile);
                        g_free(lockfile);
+                       g_free(locklink);
                        return -1;
                }
                if (retry == 0)
@@ -193,7 +195,8 @@ static gboolean mbox_file_lock_file(gchar * base)
        }
        unlink(lockfile);
        g_free(lockfile);
-
+       g_free(locklink);
+       
        return TRUE;
 }
 
@@ -539,7 +542,7 @@ static mailfile * mailfile_init_from_file(FILE * f, gchar * filename)
        mf->count = msgnum;
 
        mailfile_error = MAILFILE_ERROR_NO_ERROR;
-
+       
        return mf;
 }
 
@@ -1927,6 +1930,7 @@ void mbox_change_flags(Folder * folder, FolderItem * item, MsgInfo * info)
        msg->flags = info->flags;
 
        cache->modification = TRUE;
+               
 }
 
 
@@ -1990,6 +1994,7 @@ static gboolean mbox_rewrite(gchar * mbox)
                fclose(new_fp);
                mbox_unlock_file(mbox_fp, mbox);
                fclose(mbox_fp);
+               g_free(new);
                return -1;
        }
 
@@ -2015,6 +2020,8 @@ static gboolean mbox_rewrite(gchar * mbox)
 
        mbox_cache_synchronize(mbox, FALSE);
 
+       g_free(new);
+       
        return result;
 }
 
@@ -2086,6 +2093,7 @@ static gboolean mbox_purge_deleted(gchar * mbox)
                fclose(new_fp);
                mbox_unlock_file(mbox_fp, mbox);
                fclose(mbox_fp);
+               g_free(new);
                return -1;
        }
 
@@ -2105,7 +2113,7 @@ static gboolean mbox_purge_deleted(gchar * mbox)
        debug_print("%i messages written - %s\n", count, mbox);
 
        mbox_cache_synchronize(mbox, FALSE);
-
+       g_free(new);
        return result;
 }
 
@@ -2248,19 +2256,17 @@ gint mbox_remove_folder(Folder *folder, FolderItem *item)
        return 0;
 }
 
-GSList *mbox_get_num_list(Folder *folder, FolderItem *item)
+gint mbox_get_num_list(Folder *folder, FolderItem *item, GSList **mlist)
 {
-       GSList *mlist;
        GList * l;
        FILE * fp;
        gchar * mbox_path;
-
-       mlist = NULL;
+       gint nummsgs = 0;
 
        mbox_path = mbox_folder_get_path(item);
 
        if (mbox_path == NULL)
-               return NULL;
+               return -1;
 
        mbox_purge_deleted(mbox_path);
 
@@ -2268,7 +2274,7 @@ GSList *mbox_get_num_list(Folder *folder, FolderItem *item)
        
        if (fp == NULL) {
                g_free(mbox_path);
-               return NULL;
+               return -1;
        }
 
        mbox_lockread_file(fp, mbox_path);
@@ -2284,7 +2290,8 @@ GSList *mbox_get_num_list(Folder *folder, FolderItem *item)
                msg = (struct _message *) l->data;
 
                if (MSG_IS_INVALID(msg->flags) || !MSG_IS_REALLY_DELETED(msg->flags)) {
-                       mlist = g_slist_append(mlist, GINT_TO_POINTER(msg->msgnum));
+                       *mlist = g_slist_append(*mlist, GINT_TO_POINTER(msg->msgnum));
+                       nummsgs++;
                } else {
                        MSG_SET_PERM_FLAGS(msg->flags, MSG_REALLY_DELETED);
                }
@@ -2296,7 +2303,7 @@ GSList *mbox_get_num_list(Folder *folder, FolderItem *item)
 
        fclose(fp);
 
-       return mlist;
+       return nummsgs;
 }
 
 MsgInfo *mbox_fetch_msginfo(Folder *folder, FolderItem *item, gint num)