aboutsummaryrefslogtreecommitdiff
path: root/libsylph
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2012-07-27 04:06:25 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2012-07-27 04:06:25 +0000
commitcc0f803be0553bfb6f76941bf4147f813be09948 (patch)
treece6f3521a4d1af479425cdb2f0d303b8e9932f73 /libsylph
parente7e1c6bb0d384d829192c2a1d41b347866bf5481 (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.c23
-rw-r--r--libsylph/mbox.h3
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__ */