From facc88c777a0c97ffa72c9d7c71f7144eb41ccfe Mon Sep 17 00:00:00 2001 From: Paul Mangan Date: Sat, 1 Oct 2005 07:56:18 +0000 Subject: [PATCH] 2005-10-01 [paul] 1.9.14cvs64 * src/export.c * src/import.c synchronise import_mbox() and export_mbox() * src/mbox.c proc_mbox(): add alert if file cannot be opened export_list_to_mbox(): test if dest file exists, prompt user to overwrite if it does. add alert if file cannot be created Patch by wwp --- ChangeLog-gtk2.claws | 13 +++++++++++++ PATCHSETS | 1 + configure.ac | 2 +- src/export.c | 23 +++++++++++++---------- src/import.c | 43 +++++++++++++++++++++++++------------------ src/mbox.c | 12 ++++++++++++ 6 files changed, 65 insertions(+), 29 deletions(-) diff --git a/ChangeLog-gtk2.claws b/ChangeLog-gtk2.claws index c3be5cb7d..e97c9e12f 100644 --- a/ChangeLog-gtk2.claws +++ b/ChangeLog-gtk2.claws @@ -1,3 +1,16 @@ +2005-10-01 [paul] 1.9.14cvs64 + * src/export.c + * src/import.c + synchronise import_mbox() and export_mbox() + * src/mbox.c + proc_mbox(): add alert if file cannot be opened + export_list_to_mbox(): test if dest file exists, + prompt user to overwrite if it does. add alert + if file cannot be created + + Patch by wwp + + 2005-09-30 [paul] 1.9.14cvs63 * src/addressbook.c diff --git a/PATCHSETS b/PATCHSETS index 8f804b188..5c368a523 100644 --- a/PATCHSETS +++ b/PATCHSETS @@ -832,3 +832,4 @@ ( cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/plugins/pgpinline/pgpinline.c; ) > 1.9.14cvs61.patchset ( cvs diff -u -r 1.1.2.9 -r 1.1.2.10 src/partial_download.c; cvs diff -u -r 1.56.2.40 -r 1.56.2.41 src/pop.c; ) > 1.9.14cvs62.patchset ( cvs diff -u -r 1.60.2.32 -r 1.60.2.33 src/addressbook.c; cvs diff -u -r 1.65.2.40 -r 1.65.2.41 src/codeconv.c; cvs diff -u -r 1.1.4.13 -r 1.1.4.14 src/common/xml.c; cvs diff -u -r 1.1.2.9 -r 1.1.2.10 src/plugins/pgpcore/sgpgme.c; ) > 1.9.14cvs63.patchset +( cvs diff -u -r 1.8.2.9 -r 1.8.2.10 src/export.c; cvs diff -u -r 1.13.2.9 -r 1.13.2.10 src/import.c; cvs diff -u -r 1.28.2.9 -r 1.28.2.10 src/mbox.c; ) > 1.9.14cvs64.patchset diff --git a/configure.ac b/configure.ac index 64ed93132..f25ce0d15 100644 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ MINOR_VERSION=9 MICRO_VERSION=14 INTERFACE_AGE=0 BINARY_AGE=0 -EXTRA_VERSION=63 +EXTRA_VERSION=64 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/export.c b/src/export.c index 7104490a7..411c85ff2 100644 --- a/src/export.c +++ b/src/export.c @@ -72,21 +72,25 @@ gint export_mbox(FolderItem *default_src) gint ok = 0; gchar *src_id = NULL; - if (!window) + if (!window) { export_create(); - else + } + else { gtk_widget_show(window); + } change_dir(sylpheed_get_startup_dir()); - if (default_src && default_src->path) + if (default_src && default_src->path) { src_id = folder_item_get_identifier(default_src); + } if (src_id) { gtk_entry_set_text(GTK_ENTRY(src_entry), src_id); g_free(src_id); - } else + } else { gtk_entry_set_text(GTK_ENTRY(src_entry), ""); + } gtk_entry_set_text(GTK_ENTRY(file_entry), ""); gtk_widget_grab_focus(file_entry); @@ -101,21 +105,20 @@ gint export_mbox(FolderItem *default_src) srcdir = gtk_entry_get_text(GTK_ENTRY(src_entry)); utf8mbox = gtk_entry_get_text(GTK_ENTRY(file_entry)); if (utf8mbox && *utf8mbox) { - const gchar *src_codeset = CS_UTF_8; - const gchar *dest_codeset = conv_get_locale_charset_str(); gchar *mbox; - mbox = conv_codeset_strdup(utf8mbox, src_codeset, dest_codeset); + mbox = g_filename_from_utf8(utf8mbox, -1, NULL, NULL, NULL); if (!mbox) { - g_warning("faild to convert character set\n"); + g_warning("Failed to convert character set.\n"); mbox = g_strdup(utf8mbox); } src = folder_find_item_from_identifier(srcdir); - if (!src) + if (!src) { g_warning("Can't find the folder.\n"); - else + } else { ok = export_to_mbox(src, mbox); + } g_free(mbox); } diff --git a/src/import.c b/src/import.c index 632421186..ced583827 100644 --- a/src/import.c +++ b/src/import.c @@ -38,6 +38,7 @@ #include #include +#include "sylpheed.h" #include "main.h" #include "inc.h" #include "mbox.h" @@ -71,20 +72,26 @@ gint import_mbox(FolderItem *default_dest) gint ok = 0; gchar *dest_id = NULL; - if (!window) + if (!window) { import_create(); - else + } + else { gtk_widget_show(window); + } - gtk_entry_set_text(GTK_ENTRY(file_entry), ""); - if (default_dest && default_dest->path) + change_dir(sylpheed_get_startup_dir()); + + if (default_dest && default_dest->path) { dest_id = folder_item_get_identifier(default_dest); + } if (dest_id) { gtk_entry_set_text(GTK_ENTRY(dest_entry), dest_id); g_free(dest_id); - } else + } else { gtk_entry_set_text(GTK_ENTRY(dest_entry), ""); + } + gtk_entry_set_text(GTK_ENTRY(file_entry), ""); gtk_widget_grab_focus(file_entry); manage_window_set_transient(GTK_WINDOW(window)); @@ -92,34 +99,34 @@ gint import_mbox(FolderItem *default_dest) gtk_main(); if (import_ack) { - const gchar *utf8filename, *destdir; + const gchar *utf8mbox, *destdir; FolderItem *dest; - utf8filename = gtk_entry_get_text(GTK_ENTRY(file_entry)); + utf8mbox = gtk_entry_get_text(GTK_ENTRY(file_entry)); destdir = gtk_entry_get_text(GTK_ENTRY(dest_entry)); - if (utf8filename && *utf8filename) { - gchar *filename; - - filename = g_filename_from_utf8 - (utf8filename, -1, NULL, NULL, NULL); - if (!filename) { - g_warning("faild to convert character set\n"); - filename = g_strdup(utf8filename); + if (utf8mbox && *utf8mbox) { + gchar *mbox; + + mbox = g_filename_from_utf8(utf8mbox, -1, NULL, NULL, NULL); + if (!mbox) { + g_warning("Failed to convert character set.\n"); + mbox = g_strdup(utf8mbox); } if (!destdir || !*destdir) { dest = folder_find_item_from_path(INBOX_DIR); - } else + } else { dest = folder_find_item_from_identifier (destdir); + } if (!dest) { g_warning("Can't find the folder.\n"); } else { - ok = proc_mbox(dest, filename, FALSE); + ok = proc_mbox(dest, mbox, FALSE); } - g_free(filename); + g_free(mbox); } } diff --git a/src/mbox.c b/src/mbox.c index ca612480d..79906d087 100644 --- a/src/mbox.c +++ b/src/mbox.c @@ -41,6 +41,7 @@ #include "account.h" #include "utils.h" #include "filtering.h" +#include "alertpanel.h" #define MSGBUFSIZE 8192 @@ -71,6 +72,7 @@ gint proc_mbox(FolderItem *dest, const gchar *mbox, gboolean apply_filter) if ((mbox_fp = g_fopen(mbox, "rb")) == NULL) { FILE_OP_ERROR(mbox, "fopen"); + alertpanel_error(_("Could not open mbox file:\n%s\n"), mbox); return -1; } @@ -378,8 +380,18 @@ gint export_list_to_mbox(GSList *mlist, const gchar *mbox) FILE *mbox_fp; gchar buf[BUFFSIZE]; + if (g_file_test(mbox, G_FILE_TEST_EXISTS) == TRUE) { + if (alertpanel_full(_("Overwrite mbox file"), + _("This file already exists. Do you want to overwrite it?"), + _("Overwrite"), GTK_STOCK_CANCEL, NULL, FALSE, + NULL, ALERT_WARNING, G_ALERTALTERNATE) + == G_ALERTALTERNATE) + return -1; + } + if ((mbox_fp = g_fopen(mbox, "wb")) == NULL) { FILE_OP_ERROR(mbox, "fopen"); + alertpanel_error(_("Could not create mbox file:\n%s\n"), mbox); return -1; } -- 2.25.1