gchar *procmsg_get_message_file(MsgInfo *msginfo) { gchar *filename = NULL; g_return_val_if_fail(msginfo != NULL, NULL); filename = folder_item_fetch_msg(msginfo->folder, msginfo->msgnum); if (!filename) debug_print("can't fetch message %d\n", msginfo->msgnum); return filename; }
gchar *procmsg_get_message_file_path(MsgInfo *msginfo) { gchar *file; g_return_val_if_fail(msginfo != NULL, NULL); if (msginfo->plaintext_file) file = g_strdup(msginfo->plaintext_file); else { file = folder_item_fetch_msg(msginfo->folder, msginfo->msgnum); } return file; }
/*! *\brief Send messages in queue * *\param queue Queue folder to process *\param save_msgs Unused * *\return Number of messages sent, negative if an error occurred * positive if no error occurred */ gint procmsg_send_queue(FolderItem *queue, gboolean save_msgs) { gint sent = 0, err = 0; GSList *list, *elem; if (!queue) queue = folder_get_default_queue(); g_return_val_if_fail(queue != NULL, -1); folder_item_scan(queue); list = folder_item_get_msg_list(queue); for (elem = list; elem != NULL; elem = elem->next) { gchar *file; MsgInfo *msginfo; msginfo = (MsgInfo *)(elem->data); if (!MSG_IS_LOCKED(msginfo->flags)) { file = folder_item_fetch_msg(queue, msginfo->msgnum); if (file) { if (procmsg_send_message_queue(file) < 0) { g_warning("Sending queued message %d failed.\n", msginfo->msgnum); err++; } else { /* CLAWS: * We save in procmsg_send_message_queue because * we need the destination folder from the queue * header if (save_msgs) procmsg_save_to_outbox (queue->folder->outbox, file, TRUE); */ sent++; folder_item_remove_msg(queue, msginfo->msgnum); } g_free(file); } } /* FIXME: supposedly if only one message is locked, and queue * is being flushed, the following free says something like * "freeing msg ## in folder (nil)". */ procmsg_msginfo_free(msginfo); } return (err != 0 ? -err : sent); }
static gboolean mh_renumber_msg(MsgInfo *info) { gchar *src, *dest; gboolean result = FALSE; guint num; cm_return_val_if_fail(info != NULL, FALSE); src = folder_item_fetch_msg(info->folder, info->msgnum); dest = mh_get_new_msg_filename(info->folder); num = info->folder->last_num + 1; if (move_file(src, dest, FALSE) == 0) { msgcache_remove_msg(info->folder->cache, info->msgnum); info->msgnum = num; msgcache_add_msg(info->folder->cache, info); result = TRUE; } g_free(src); g_free(dest); return result; }