Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
0
/*!
 *\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);
}
Beispiel #4
0
Datei: mh.c Projekt: buzz/claws
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;
}