2008-05-05 [colin] 3.4.0cvs24
authorColin Leroy <colin@colino.net>
Mon, 5 May 2008 07:20:29 +0000 (07:20 +0000)
committerColin Leroy <colin@colino.net>
Mon, 5 May 2008 07:20:29 +0000 (07:20 +0000)
* src/mimeview.c
Don't overwrite temporary files with same
name when drag and dropping. Fixes bug 1599,
'attach multiple files with the same name from
one mail to another'

ChangeLog
PATCHSETS
configure.ac
src/mimeview.c

index 50bfb72..df9a225 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-05 [colin]     3.4.0cvs24
+
+       * src/mimeview.c
+               Don't overwrite temporary files with same
+               name when drag and dropping. Fixes bug 1599,
+               'attach multiple files with the same name from 
+               one mail to another'
+
 2008-05-04 [paul]      3.4.0cvs23
 
        * src/compose.c
index 9489327..3f32ce1 100644 (file)
--- a/PATCHSETS
+++ b/PATCHSETS
 ( cvs diff -u -r 1.43.2.96 -r 1.43.2.97 src/toolbar.c;  ) > 3.4.0cvs21.patchset
 ( cvs diff -u -r 1.58.2.38 -r 1.58.2.39 po/de.po;  ) > 3.4.0cvs22.patchset
 ( cvs diff -u -r 1.382.2.446 -r 1.382.2.447 src/compose.c;  cvs diff -u -r 1.204.2.167 -r 1.204.2.168 src/prefs_common.c;  ) > 3.4.0cvs23.patchset
+( cvs diff -u -r 1.83.2.128 -r 1.83.2.129 src/mimeview.c;  ) > 3.4.0cvs24.patchset
index 2085cdd..9086a95 100644 (file)
@@ -11,7 +11,7 @@ MINOR_VERSION=4
 MICRO_VERSION=0
 INTERFACE_AGE=0
 BINARY_AGE=0
-EXTRA_VERSION=23
+EXTRA_VERSION=24
 EXTRA_RELEASE=
 EXTRA_GTK2_VERSION=
 
index a728fcd..bd22db9 100644 (file)
@@ -1431,6 +1431,7 @@ static void mimeview_drag_data_get(GtkWidget          *widget,
        gchar *filename = NULL, *uriname, *tmp;
        MimeInfo *partinfo;
        gint err;
+       gint count = 0;
 
        if (!mimeview->opened) return;
        if (!mimeview->file) return;
@@ -1484,6 +1485,30 @@ static void mimeview_drag_data_get(GtkWidget         *widget,
        filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
                               tmp, NULL);
 
+check_new_file:
+       if (is_file_exist(filename)) {
+               gchar *ext = NULL;
+               gchar *prefix = NULL;
+               gchar *new_name = NULL;
+               if (strrchr(tmp, '.')) {
+                       prefix = g_strdup(tmp);
+                       ext = g_strdup(strrchr(tmp, '.'));
+                       *(strrchr(prefix, '.')) = '\0';
+               } else {
+                       prefix = g_strdup(tmp);
+                       ext = g_strdup("");
+               }
+               count++;
+               new_name = g_strdup_printf("%s.%d%s", prefix, count, ext);
+               g_free(prefix);
+               g_free(ext);
+               g_free(filename);
+               filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
+                              new_name, NULL);
+               g_free(new_name);
+               goto check_new_file;
+       }
+
        g_free(tmp);
 
        if ((err = procmime_get_part(filename, partinfo)) < 0)