aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog10
-rw-r--r--mail/mail-display.c24
-rw-r--r--mail/mail-format.c18
3 files changed, 37 insertions, 15 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 69a9cb8a86..e6f2d4605b 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,13 @@
+2000-05-08 Dan Winship <danw@helixcode.com>
+
+ * mail-display.c (save_data_cb):
+ (on_url_requested): Update for CamelStream CamelException changes.
+
+ * mail-format.c: Pass NULL for a CamelException in a bunch of
+ places... the user will see that the data is not being displayed,
+ and there's not a lot we can do, and none of these things should
+ be failing anyway. Maybe fix this later.
+
2000-05-07 NotZed <NotZed@HelixCode.com>
* message-list.c (ml_value_at): Size moved to message info, rather
diff --git a/mail/mail-display.c b/mail/mail-display.c
index bee6e9cc74..0e7eac06e1 100644
--- a/mail/mail-display.c
+++ b/mail/mail-display.c
@@ -44,6 +44,7 @@ save_data_cb (GtkWidget *widget, gpointer user_data)
gtk_widget_get_ancestor (widget, GTK_TYPE_FILE_SELECTION);
char *name, buf[1024];
int fd, nread;
+ CamelException *ex;
name = gtk_file_selection_get_filename (file_select);
@@ -69,14 +70,24 @@ save_data_cb (GtkWidget *widget, gpointer user_data)
return;
}
- camel_stream_reset (output);
- do {
- nread = camel_stream_read (output, buf, sizeof (buf));
+ ex = camel_exception_new ();
+ camel_stream_reset (output, ex);
+ while (!camel_exception_is_set (ex) && !camel_stream_eos (output)) {
+ nread = camel_stream_read (output, buf, sizeof (buf), ex);
if (nread > 0)
write (fd, buf, nread);
- } while (!camel_stream_eos (output));
+ }
close (fd);
+ if (camel_exception_is_set (ex)) {
+ char *msg;
+
+ msg = g_strdup_printf ("Could not write data: %s",
+ camel_exception_get_description (ex));
+ gnome_error_dialog_parented (msg, GTK_WINDOW (file_select));
+ }
+ camel_exception_free (ex);
+
gtk_widget_destroy (GTK_WIDGET (file_select));
}
@@ -163,9 +174,10 @@ on_url_requested (GtkHTML *html, const char *url, GtkHTMLStreamHandle handle,
output = camel_data_wrapper_get_output_stream (data);
g_return_if_fail (CAMEL_IS_STREAM (output));
- camel_stream_reset (output);
+ camel_stream_reset (output, NULL);
do {
- nread = camel_stream_read (output, buf, sizeof (buf));
+ nread = camel_stream_read (output, buf,
+ sizeof (buf), NULL);
if (nread > 0)
gtk_html_write (html, handle, buf, nread);
} while (!camel_stream_eos (output));
diff --git a/mail/mail-format.c b/mail/mail-format.c
index 12026a5ce7..486b4da0b5 100644
--- a/mail/mail-format.c
+++ b/mail/mail-format.c
@@ -418,7 +418,7 @@ get_data_wrapper_text (CamelDataWrapper *data)
ba = g_byte_array_new ();
memstream = camel_stream_mem_new_with_byte_array (ba);
- camel_data_wrapper_write_to_stream (data, memstream);
+ camel_data_wrapper_write_to_stream (data, memstream, NULL);
text = g_malloc (ba->len + 1);
memcpy (text, ba->data, ba->len);
text[ba->len] = '\0';
@@ -485,14 +485,14 @@ handle_text_plain_flowed (CamelMimePart *part, CamelMimeMessage *root,
/* Get the output stream of the data wrapper. */
wrapper_output_stream = camel_data_wrapper_get_output_stream (wrapper);
- camel_stream_reset (wrapper_output_stream);
+ camel_stream_reset (wrapper_output_stream, NULL);
buffer = camel_stream_buffer_new (wrapper_output_stream,
CAMEL_STREAM_BUFFER_READ);
do {
/* Read next chunk of text. */
line = camel_stream_buffer_read_line (
- CAMEL_STREAM_BUFFER (buffer));
+ CAMEL_STREAM_BUFFER (buffer), NULL);
if (!line)
break;
@@ -593,7 +593,7 @@ handle_text_enriched (CamelMimePart *part, CamelMimeMessage *root, GtkBox *box)
ba = g_byte_array_new ();
memstream = camel_stream_mem_new_with_byte_array (ba);
- camel_data_wrapper_write_to_stream (wrapper, memstream);
+ camel_data_wrapper_write_to_stream (wrapper, memstream, NULL);
g_byte_array_append (ba, "", 1);
p = ba->data;
@@ -688,12 +688,12 @@ handle_text_html (CamelMimePart *part, CamelMimeMessage *root, GtkBox *box)
/* Get the output stream of the data wrapper. */
wrapper_output_stream = camel_data_wrapper_get_output_stream (wrapper);
- camel_stream_reset (wrapper_output_stream);
+ camel_stream_reset (wrapper_output_stream, NULL);
do {
/* Read next chunk of text. */
nb_bytes_read = camel_stream_read (wrapper_output_stream,
- tmp_buffer, 4096);
+ tmp_buffer, 4096, NULL);
/* If there's any text, write it to the stream */
if (nb_bytes_read > 0) {
@@ -1057,7 +1057,7 @@ handle_via_bonobo (CamelMimePart *part, CamelMimeMessage *root, GtkBox *box)
/* Write the data to a CamelStreamMem... */
ba = g_byte_array_new ();
cstream = camel_stream_mem_new_with_byte_array (ba);
- camel_data_wrapper_write_to_stream (wrapper, cstream);
+ camel_data_wrapper_write_to_stream (wrapper, cstream, NULL);
/* ...convert the CamelStreamMem to a BonoboStreamMem... */
bstream = bonobo_stream_mem_create (ba->data, ba->len, TRUE, FALSE);
@@ -1350,8 +1350,8 @@ mail_generate_forward (CamelMimeMessage *mime_message,
stream = camel_stream_fs_new_with_fd (fd);
camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (mime_message),
- stream);
- camel_stream_flush (stream);
+ stream, NULL);
+ camel_stream_flush (stream, NULL);
gtk_object_unref (GTK_OBJECT (stream));
composer = E_MSG_COMPOSER (e_msg_composer_new ());