aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog9
-rw-r--r--camel/camel-data-wrapper.c6
-rw-r--r--camel/camel-stream-b64.c15
3 files changed, 24 insertions, 6 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index d41d94a239..c095ee4025 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,12 @@
+2000-03-02 bertrand <bertrand@helixcode.com>
+
+ * camel-data-wrapper.c (my_write_to_stream):
+ fix implementation so that it writes properly
+ to the output stream even.
+
+ * camel-stream-b64.c (camel_stream_b64_write_to_stream):
+ fix implementation.
+
2000-02-29 bertrand <bertrand@helixcode.com>
* camel-stream-b64.c (camel_stream_b64_write_to_stream): new
diff --git a/camel/camel-data-wrapper.c b/camel/camel-data-wrapper.c
index 8fc258ac24..7110adcc60 100644
--- a/camel/camel-data-wrapper.c
+++ b/camel/camel-data-wrapper.c
@@ -236,6 +236,7 @@ my_write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
{
gchar tmp_buf[4096];
gint nb_read;
+ gint nb_written;
CamelStream *output_stream;
/*
@@ -249,8 +250,9 @@ my_write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
while (!camel_stream_eos (output_stream)) {
nb_read = camel_stream_read (output_stream, tmp_buf, 4096);
- if (nb_read)
- camel_stream_write (stream, tmp_buf, nb_read);
+ nb_written = 0;
+ while (nb_written < nb_read)
+ nb_written += camel_stream_write (stream, tmp_buf, nb_read);
}
}
diff --git a/camel/camel-stream-b64.c b/camel/camel-stream-b64.c
index 29c89ba92b..cedc9f914f 100644
--- a/camel/camel-stream-b64.c
+++ b/camel/camel-stream-b64.c
@@ -557,18 +557,25 @@ camel_stream_b64_write_to_stream (CamelStream *stream,
{
gchar tmp_buf[4096];
gint nb_read;
+ gint nb_written;
/*
* default implementation that uses the input
- * stream and stream it in a blocking way.
+ * stream and stream it in a blocking way
+ * to an output stream.
*/
g_assert (output_stream);
g_assert (stream);
- while (!camel_stream_eos (output_stream)) {
+ while (!camel_stream_eos (stream)) {
nb_read = camel_stream_read (stream, tmp_buf, 4096);
- if (nb_read)
- camel_stream_write (output_stream, tmp_buf, nb_read);
+ nb_written = 0;
+ while (nb_written < nb_read)
+ nb_written += camel_stream_write (output_stream, tmp_buf, nb_read);
}
}
+
+
+
+