Revision 3141 libsylph/mbox.c

mbox.c (revision 3141)
474 474
gint export_to_mbox(FolderItem *src, const gchar *mbox)
475 475
{
476 476
	GSList *mlist;
477
	gint ret = 0;
478

  
479
	mlist = folder_item_get_msg_list(src, TRUE);
480
	if (mlist) {
481
		ret = export_msgs_to_mbox(src, mlist, mbox);
482
		procmsg_msg_list_free(mlist);
483
	}
484

  
485
	return ret;
486
}
487

  
488
/* store MLIST into one MBOX file. */
489
gint export_msgs_to_mbox(FolderItem *src, GSList *mlist, const gchar *mbox)
490
{
477 491
	GSList *cur;
478 492
	MsgInfo *msginfo;
479 493
	FILE *msg_fp;
......
484 498

  
485 499
	g_return_val_if_fail(src != NULL, -1);
486 500
	g_return_val_if_fail(src->folder != NULL, -1);
501
	g_return_val_if_fail(mlist != NULL, -1);
487 502
	g_return_val_if_fail(mbox != NULL, -1);
488 503

  
489 504
	debug_print(_("Exporting messages from %s into %s...\n"),
......
496 511

  
497 512
	cur_ac = account_get_current_account();
498 513

  
499
	mlist = folder_item_get_msg_list(src, TRUE);
500 514
	length = g_slist_length(mlist);
501 515

  
502 516
	for (cur = mlist; cur != NULL; cur = cur->next) {
......
507 521
			src->folder->ui_func(src->folder, src, src->folder->ui_func_data ? src->folder->ui_func_data : GINT_TO_POINTER(count));
508 522

  
509 523
		msg_fp = procmsg_open_message(msginfo);
510
		if (!msg_fp) {
511
			procmsg_msginfo_free(msginfo);
524
		if (!msg_fp)
512 525
			continue;
513
		}
514 526

  
515 527
		strncpy2(buf,
516 528
			 msginfo->from ? msginfo->from :
......
530 542
		fputc('\n', mbox_fp);
531 543

  
532 544
		fclose(msg_fp);
533
		procmsg_msginfo_free(msginfo);
534 545
	}
535 546

  
536
	g_slist_free(mlist);
537

  
538 547
	fclose(mbox_fp);
539 548

  
540 549
	return 0;

Also available in: Unified diff