diff options
author | Dan Winship <danw@src.gnome.org> | 2000-05-09 06:28:11 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2000-05-09 06:28:11 +0800 |
commit | 38165888d297d91e1bdf5f1ac6027b900b23b740 (patch) | |
tree | f4f75d5c426ff0e7422b22ddd543b90fdc0c1a05 /mail/mail-display.c | |
parent | 65ec43cb553420890c8d14b6c76ce2606674d893 (diff) | |
download | gsoc2013-evolution-38165888d297d91e1bdf5f1ac6027b900b23b740.tar.gz gsoc2013-evolution-38165888d297d91e1bdf5f1ac6027b900b23b740.tar.zst gsoc2013-evolution-38165888d297d91e1bdf5f1ac6027b900b23b740.zip |
Update for CamelStream CamelException changes.
* 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.
svn path=/trunk/; revision=2925
Diffstat (limited to 'mail/mail-display.c')
-rw-r--r-- | mail/mail-display.c | 24 |
1 files changed, 18 insertions, 6 deletions
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)); |