fixed crash on reply and IMAP queue folder malfunction.
authorHiroyuki Yamamoto <hiro-y@kcn.ne.jp>
Thu, 2 May 2002 01:53:39 +0000 (01:53 +0000)
committerHiroyuki Yamamoto <hiro-y@kcn.ne.jp>
Thu, 2 May 2002 01:53:39 +0000 (01:53 +0000)
ChangeLog.claws
configure.in
src/compose.c
src/imap.c

index 44b2a2ea1e90cc40f9f6250d19861075bbe02665..beaad1520ebccf6b8a9c8384d3adca4a2d82ba8d 100644 (file)
@@ -1,3 +1,14 @@
+2002-05-02 [hiro]      0.7.5claws4
+
+       * src/compose.c
+               compose_queue_sub():
+               check if queue folder exists (closes #550397).
+               removed directory creation since it should be handled
+               transparently.
+       * src/imap.c
+               imap_add_msg(): return UID for appended message
+               (closes #548842).
+
 2002-04-30 [paul]      0.7.5claws3
 
        * src/summaryview.c
index 9f02652e8d70d17e542e00c701ceb4a028e56b9b..c4804969c3d4d8f14d926ff7c0bb9f292a824c9e 100644 (file)
@@ -8,7 +8,7 @@ MINOR_VERSION=7
 MICRO_VERSION=5
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=claws3
+EXTRA_VERSION=claws4
 VERSION=$MAJOR_VERSION.$MINOR_VERSION.$MICRO_VERSION$EXTRA_VERSION
 
 dnl set $target
index 02033164d98264f68ae88b1c6cfede58da439593..4d239cd382ada011333aa373133ed58609bd3da9 100644 (file)
@@ -3225,7 +3225,7 @@ static gint compose_queue(Compose *compose, gint *msgnum, FolderItem **item)
 static gint compose_queue_sub(Compose *compose, gint *msgnum, FolderItem **item, gboolean check_subject)
 {
        FolderItem *queue;
-       gchar *tmp, *tmp2, *queue_path;
+       gchar *tmp, *tmp2;
        FILE *fp, *src_fp;
        GSList *cur;
        gchar buf[BUFFSIZE];
@@ -3399,15 +3399,17 @@ static gint compose_queue_sub(Compose *compose, gint *msgnum, FolderItem **item,
        }
 
        queue = account_get_special_folder(compose->account, F_QUEUE);
+       if (!queue) {
+               g_warning(_("can't find queue folder\n"));
+               unlink(tmp);
+               g_free(tmp);
+               return -1;
+       }
        folder_item_scan(queue);
-       queue_path = folder_item_get_path(queue);
-       if (!is_dir_exist(queue_path))
-               make_dir_hier(queue_path);
        if ((num = folder_item_add_msg(queue, tmp, TRUE)) < 0) {
                g_warning(_("can't queue the message\n"));
                unlink(tmp);
                g_free(tmp);
-               g_free(queue_path);
                return -1;
        }
        unlink(tmp);
index 35fd86c83d61eda34ffc3e4537b0501b37a06ae1..a7799353303dd23f705dac6f2ed463e8afca5783 100644 (file)
@@ -618,6 +618,8 @@ gint imap_add_msg(Folder *folder, FolderItem *dest, const gchar *file,
 {
        gchar *destdir;
        IMAPSession *session;
+       gint messages, recent, unseen;
+       guint32 uid_next, uid_validity;
        gint ok;
 
        g_return_val_if_fail(folder != NULL, -1);
@@ -627,6 +629,14 @@ gint imap_add_msg(Folder *folder, FolderItem *dest, const gchar *file,
        session = imap_session_get(folder);
        if (!session) return -1;
 
+       ok = imap_status(session, IMAP_FOLDER(folder), dest->path,
+                        &messages, &recent, &uid_next, &uid_validity, &unseen);
+       statusbar_pop_all();
+       if (ok != IMAP_SUCCESS) {
+               g_warning(_("can't append message %s\n"), file);
+               return -1;
+       }
+
        destdir = imap_get_real_path(IMAP_FOLDER(folder), dest->path);
        ok = imap_cmd_append(SESSION(session)->sock, destdir, file);
        g_free(destdir);
@@ -641,7 +651,7 @@ gint imap_add_msg(Folder *folder, FolderItem *dest, const gchar *file,
                        FILE_OP_ERROR(file, "unlink");
        }
 
-       return 0;
+       return uid_next;
 }
 
 static gint imap_do_copy(Folder *folder, FolderItem *dest, MsgInfo *msginfo,