aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2003-07-04 02:36:51 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2003-07-04 02:36:51 +0800
commita6f0914f29a46e353a17e36d0cb4f85424f58f3f (patch)
tree89e06a2007edde1781817076c546aa33e4197ffc
parent994243e216d8349af1a416e9222f4f66f4c45b12 (diff)
downloadgsoc2013-evolution-a6f0914f29a46e353a17e36d0cb4f85424f58f3f.tar.gz
gsoc2013-evolution-a6f0914f29a46e353a17e36d0cb4f85424f58f3f.tar.zst
gsoc2013-evolution-a6f0914f29a46e353a17e36d0cb4f85424f58f3f.zip
Strip the signature from the body text. Fixes bug #45523. While we're
2003-07-02 Jeffrey Stedfast <fejj@ximian.com> * mail-tools.c (mail_tool_forward_message): Strip the signature from the body text. Fixes bug #45523. While we're here, also fix the code to quote exactly the same way as the mail_tool_quote_message() function. (mail_tool_quote_message): The last arg should not be 'want_plain', because that arg is for whether or not the body should be quoted. * folder-browser.c (message_list_drag_data_get): Apply a From-filter when dragging as a test/uri-list and message/rfc822. Fixes bug #45617. Also free the uids ptrarray for the text/uri-list case. svn path=/trunk/; revision=21739
-rw-r--r--mail/ChangeLog15
-rw-r--r--mail/folder-browser.c46
-rw-r--r--mail/mail-tools.c50
3 files changed, 86 insertions, 25 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 48e05806ef..29173456fd 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,18 @@
+2003-07-02 Jeffrey Stedfast <fejj@ximian.com>
+
+ * mail-tools.c (mail_tool_forward_message): Strip the signature
+ from the body text. Fixes bug #45523. While we're here, also fix
+ the code to quote exactly the same way as the
+ mail_tool_quote_message() function.
+ (mail_tool_quote_message): The last arg should not be
+ 'want_plain', because that arg is for whether or not the body
+ should be quoted.
+
+ * folder-browser.c (message_list_drag_data_get): Apply a
+ From-filter when dragging as a test/uri-list and
+ message/rfc822. Fixes bug #45617. Also free the uids ptrarray for
+ the text/uri-list case.
+
2003-07-01 Dan Winship <danw@ximian.com>
* mail-display.c (pixbuf_for_mime_type): Gone
diff --git a/mail/folder-browser.c b/mail/folder-browser.c
index b2b9f2f2f3..e28ff18431 100644
--- a/mail/folder-browser.c
+++ b/mail/folder-browser.c
@@ -317,6 +317,8 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col,
{
const char *filename, *tmpdir;
CamelMimeMessage *message;
+ CamelMimeFilter *filter;
+ CamelStream *fstream;
CamelStream *stream;
char *uri_list;
int fd;
@@ -351,7 +353,7 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col,
fd = open (uri_list + 7, O_WRONLY | O_CREAT | O_EXCL, 0600);
if (fd == -1) {
/* cleanup and abort */
- camel_object_unref (CAMEL_OBJECT (message));
+ camel_object_unref (message);
for (i = 1; i < uids->len; i++)
g_free (uids->pdata[i]);
g_ptr_array_free (uids, TRUE);
@@ -359,20 +361,28 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col,
return;
}
- stream = camel_stream_fs_new_with_fd (fd);
+ fstream = camel_stream_fs_new_with_fd (fd);
- camel_stream_write (stream, "From - \n", 8);
+ stream = camel_stream_filter_new_with_stream (fstream);
+ filter = camel_mime_filter_from_new ();
+ camel_stream_filter_add (CAMEL_STREAM_FILTER (stream), filter);
+ camel_object_unref (filter);
+
+ camel_stream_write (fstream, "From - \n", 8);
camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), stream);
- camel_object_unref (CAMEL_OBJECT (message));
+ camel_object_unref (message);
for (i = 1; i < uids->len; i++) {
message = camel_folder_get_message (fb->folder, uids->pdata[i], NULL);
- camel_stream_write (stream, "From - \n", 8);
+ camel_stream_write (fstream, "From - \n", 8);
camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), stream);
- camel_object_unref (CAMEL_OBJECT (message));
+ camel_object_unref (message);
g_free (uids->pdata[i]);
}
- camel_object_unref (CAMEL_OBJECT (stream));
+ g_ptr_array_free (uids, TRUE);
+
+ camel_object_unref (stream);
+ camel_object_unref (fstream);
gtk_selection_data_set (selection_data, selection_data->target, 8,
uri_list, strlen (uri_list));
@@ -381,13 +391,16 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col,
break;
case DND_TARGET_TYPE_MESSAGE_RFC822:
{
- /* FIXME: this'll be fucking slow for the user... pthread this? */
+ CamelMimeFilter *filter;
CamelStream *stream;
- GByteArray *bytes;
+ CamelStream *mem;
- bytes = g_byte_array_new ();
- stream = camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), bytes);
+ mem = camel_stream_mem_new ();
+
+ stream = camel_stream_filter_new_with_stream (mem);
+ filter = camel_mime_filter_from_new ();
+ camel_stream_filter_add (CAMEL_STREAM_FILTER (stream), filter);
+ camel_object_unref (filter);
for (i = 0; i < uids->len; i++) {
CamelMimeMessage *message;
@@ -398,17 +411,18 @@ message_list_drag_data_get (ETree *tree, int row, ETreePath path, int col,
if (message) {
camel_stream_write (stream, "From - \n", 8);
camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), stream);
- camel_object_unref (CAMEL_OBJECT (message));
+ camel_object_unref (message);
}
}
g_ptr_array_free (uids, TRUE);
- camel_object_unref (CAMEL_OBJECT (stream));
+ camel_object_unref (stream);
gtk_selection_data_set (selection_data, selection_data->target, 8,
- bytes->data, bytes->len);
+ CAMEL_STREAM_MEM (mem)->buffer->data,
+ CAMEL_STREAM_MEM (mem)->buffer->len);
- g_byte_array_free (bytes, TRUE);
+ camel_object_unref (mem);
}
break;
case DND_TARGET_TYPE_X_EVOLUTION_MESSAGE:
diff --git a/mail/mail-tools.c b/mail/mail-tools.c
index 846d0d9dd7..758a4b512b 100644
--- a/mail/mail-tools.c
+++ b/mail/mail-tools.c
@@ -372,7 +372,7 @@ mail_tool_quote_message (CamelMimeMessage *message, const char *fmt, ...)
* am sure --Larry
*/
want_plain = FALSE;
- text = mail_get_message_body (contents, want_plain, want_plain);
+ text = mail_get_message_body (contents, want_plain, FALSE);
/* Set the quoted reply text. */
if (text) {
@@ -427,19 +427,51 @@ mail_tool_quote_message (CamelMimeMessage *message, const char *fmt, ...)
gchar *
mail_tool_forward_message (CamelMimeMessage *message, gboolean quoted)
{
- char *title, *body, *ret;
- gboolean send_html;
GConfClient *gconf;
+ char *text;
gconf = mail_config_get_gconf_client ();
- send_html = gconf_client_get_bool (gconf, "/apps/evolution/mail/composer/send_html", NULL);
- body = mail_get_message_body (CAMEL_DATA_WRAPPER (message), !send_html, quoted);
- title = _("Forwarded Message");
- ret = g_strdup_printf ("-----%s-----<br>%s", title, body ? body : "");
- g_free (body);
+ text = mail_get_message_body (CAMEL_DATA_WRAPPER (message), FALSE, FALSE);
- return ret;
+ if (text != NULL) {
+ char *sig, *p, *ret_text;
+
+ /* FIXME: this code should be merged with the quote_message() code above somehow... */
+
+ /* look for the signature and strip it off */
+ sig = text;
+ while ((p = strstr (sig, "\n-- \n")))
+ sig = p + 1;
+
+ if (sig != text)
+ *sig = '\0';
+
+ if (quoted) {
+ char *colour;
+
+ colour = gconf_client_get_string (gconf, "/apps/evolution/mail/display/citation_colour", NULL);
+
+ ret_text = g_strdup_printf ("-----%s-----<br>"
+ "<!--+GtkHTML:<DATA class=\"ClueFlow\" key=\"orig\" value=\"1\">-->"
+ "<font color=\"%s\">\n%s%s%s</font>"
+ "<!--+GtkHTML:<DATA class=\"ClueFlow\" clear=\"orig\">-->",
+ _("Forwarded Message"),
+ colour ? colour : "#737373",
+ "<blockquote type=cite><i>", text,
+ "</i></blockquote>");
+
+ g_free (colour);
+ } else {
+ ret_text = g_strdup_printf ("-----%s-----<br>%s", _("Forwarded Message"), text ? text : "");
+ }
+
+ g_free (text);
+
+ return ret_text;
+ }
+
+ return NULL;
}