+2002-11-20 [christoph] 0.8.5claws172
+
+ * src/imap.c
+ fix MsgInfo retrieval for IMAP draft and queue folders
+ (closes bug [ 619558 ] Draft saving on IMAP box issue)
+
2002-11-19 [christoph] 0.8.5claws171
* src/compose.c
fix segfault, when draft saving does not get
the MsgInfo of the new message
- (closes bug [ 640699 ] Claws170: crash drafting
- mail ( IMAP ))
+ (closes bug [ 640699 ] Claws170: crash drafting mail ( IMAP ))
2002-11-19 [christoph] 0.8.5claws170
* src/procmsg.c
add parameter check for flag setting function
- (closes bug [ 640619 ] Claws169: crash
- - drafting a mail (IMAP))
+ (closes bug [ 640619 ] Claws169: crash - drafting a mail (IMAP))
2002-11-18 [paul] 0.8.5claws169
return nummsgs;
}
+static MsgInfo *imap_parse_msg(const gchar *file, FolderItem *item)
+{
+ MsgInfo *msginfo;
+ MsgFlags flags;
+
+ flags.perm_flags = MSG_NEW|MSG_UNREAD;
+ flags.tmp_flags = 0;
+
+ g_return_val_if_fail(item != NULL, NULL);
+ g_return_val_if_fail(file != NULL, NULL);
+
+ if (item->stype == F_QUEUE) {
+ MSG_SET_TMP_FLAGS(flags, MSG_QUEUED);
+ } else if (item->stype == F_DRAFT) {
+ MSG_SET_TMP_FLAGS(flags, MSG_DRAFT);
+ }
+
+ msginfo = procheader_parse_file(file, flags, FALSE, FALSE);
+ if (!msginfo) return NULL;
+
+ msginfo->folder = item;
+
+ return msginfo;
+}
+
+
MsgInfo *imap_get_msginfo(Folder *folder, FolderItem *item, gint uid)
{
IMAPSession *session;
- GSList *list;
MsgInfo *msginfo = NULL;
g_return_val_if_fail(folder != NULL, NULL);
session = imap_session_get(folder);
g_return_val_if_fail(session != NULL, NULL);
- list = imap_get_uncached_messages(session, item, uid, uid);
- if (list) {
- msginfo = (MsgInfo *)list->data;
- list->data = NULL;
- }
- procmsg_msg_list_free(list);
+ if (!(item->stype == F_QUEUE || item->stype == F_DRAFT)) {
+ GSList *list;
+ list = imap_get_uncached_messages(session, item, uid, uid);
+ if (list) {
+ msginfo = (MsgInfo *)list->data;
+ list->data = NULL;
+ }
+ procmsg_msg_list_free(list);
+ } else {
+ gchar *file;
+
+ file = imap_fetch_msg(folder, item, uid);
+ if (file != NULL) {
+ msginfo = imap_parse_msg(file, item);
+ if (msginfo != NULL)
+ msginfo->msgnum = uid;
+ g_free(file);
+ }
+ }
+
return msginfo;
}