diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2012-07-27 04:06:25 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2012-07-27 04:06:25 +0000 |
commit | cc0f803be0553bfb6f76941bf4147f813be09948 (patch) | |
tree | ce6f3521a4d1af479425cdb2f0d303b8e9932f73 /libsylph | |
parent | e7e1c6bb0d384d829192c2a1d41b347866bf5481 (diff) |
added 'Export only selected messages' option to the export dialog.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@3141 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph')
-rw-r--r-- | libsylph/mbox.c | 23 | ||||
-rw-r--r-- | libsylph/mbox.h | 3 |
2 files changed, 19 insertions, 7 deletions
diff --git a/libsylph/mbox.c b/libsylph/mbox.c index e2b7d053..a88e555e 100644 --- a/libsylph/mbox.c +++ b/libsylph/mbox.c @@ -474,6 +474,20 @@ void empty_mbox(const gchar *mbox) gint export_to_mbox(FolderItem *src, const gchar *mbox) { GSList *mlist; + gint ret = 0; + + mlist = folder_item_get_msg_list(src, TRUE); + if (mlist) { + ret = export_msgs_to_mbox(src, mlist, mbox); + procmsg_msg_list_free(mlist); + } + + return ret; +} + +/* store MLIST into one MBOX file. */ +gint export_msgs_to_mbox(FolderItem *src, GSList *mlist, const gchar *mbox) +{ GSList *cur; MsgInfo *msginfo; FILE *msg_fp; @@ -484,6 +498,7 @@ gint export_to_mbox(FolderItem *src, const gchar *mbox) g_return_val_if_fail(src != NULL, -1); g_return_val_if_fail(src->folder != NULL, -1); + g_return_val_if_fail(mlist != NULL, -1); g_return_val_if_fail(mbox != NULL, -1); debug_print(_("Exporting messages from %s into %s...\n"), @@ -496,7 +511,6 @@ gint export_to_mbox(FolderItem *src, const gchar *mbox) cur_ac = account_get_current_account(); - mlist = folder_item_get_msg_list(src, TRUE); length = g_slist_length(mlist); for (cur = mlist; cur != NULL; cur = cur->next) { @@ -507,10 +521,8 @@ gint export_to_mbox(FolderItem *src, const gchar *mbox) src->folder->ui_func(src->folder, src, src->folder->ui_func_data ? src->folder->ui_func_data : GINT_TO_POINTER(count)); msg_fp = procmsg_open_message(msginfo); - if (!msg_fp) { - procmsg_msginfo_free(msginfo); + if (!msg_fp) continue; - } strncpy2(buf, msginfo->from ? msginfo->from : @@ -530,11 +542,8 @@ gint export_to_mbox(FolderItem *src, const gchar *mbox) fputc('\n', mbox_fp); fclose(msg_fp); - procmsg_msginfo_free(msginfo); } - g_slist_free(mlist); - fclose(mbox_fp); return 0; diff --git a/libsylph/mbox.h b/libsylph/mbox.h index cd2f7352..22300ddf 100644 --- a/libsylph/mbox.h +++ b/libsylph/mbox.h @@ -49,5 +49,8 @@ void empty_mbox (const gchar *mbox); gint export_to_mbox (FolderItem *src, const gchar *mbox); +gint export_msgs_to_mbox(FolderItem *src, + GSList *mlist, + const gchar *mbox); #endif /* __MBOX_H__ */ |