diff options
-rw-r--r-- | camel/ChangeLog | 8 | ||||
-rw-r--r-- | camel/camel-mime-part.c | 11 | ||||
-rw-r--r-- | camel/camel-stream-b64.c | 8 | ||||
-rw-r--r-- | camel/camel-stream-b64.h | 2 |
4 files changed, 22 insertions, 7 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index c095ee4025..862a84656b 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,13 @@ 2000-03-02 bertrand <bertrand@helixcode.com> + * camel-stream-b64.c (camel_stream_b64_write_to_stream): + use CamelStreamB64 type for the input stream. + + * camel-mime-part.c (_get_content_object): remove + debugging trace + (_write_content_to_stream): implement the b64 + encoding the new way (that is using camel_stream_b64) + * camel-data-wrapper.c (my_write_to_stream): fix implementation so that it writes properly to the output stream even. diff --git a/camel/camel-mime-part.c b/camel/camel-mime-part.c index b6e5b55c36..7244ab3c0d 100644 --- a/camel/camel-mime-part.c +++ b/camel/camel-mime-part.c @@ -630,7 +630,6 @@ _get_content_object (CamelMedium *medium) break; } - printf ("*************************** encoding : %d\n", mime_part->encoding); camel_mime_part_construct_content_from_stream (mime_part, decoded_stream); } else { @@ -662,6 +661,7 @@ _write_content_to_stream (CamelMimePart *mime_part, CamelStream *stream) { CamelMedium *medium = CAMEL_MEDIUM (mime_part); CamelStream *wrapper_stream; + CamelStreamB64 *stream_b64; CamelDataWrapper *content = medium->content; CAMEL_LOG_FULL_DEBUG ( "Entering CamelMimePart::_write_content_to_stream\n"); @@ -675,9 +675,16 @@ _write_content_to_stream (CamelMimePart *mime_part, CamelStream *stream) camel_data_wrapper_write_to_stream (content, stream); break; case CAMEL_MIME_PART_ENCODING_BASE64: + /* encode the data wrapper output stream in base 64 ... */ wrapper_stream = camel_data_wrapper_get_output_stream (content); + stream_b64 = CAMEL_STREAM_B64 (camel_stream_b64_new_with_input_stream (wrapper_stream)); + camel_stream_b64_set_mode (stream_b64, CAMEL_STREAM_B64_ENCODER); - gmime_encode_base64_to_stream (wrapper_stream, stream); + /* ... and write it to the output stream in a blocking way */ + camel_stream_b64_write_to_stream (stream_b64, stream); + + /* now free the intermediate b64 stream */ + gtk_object_unref (GTK_OBJECT (stream_b64)); break; default: g_warning ("Encoding type `%s' not supported.", diff --git a/camel/camel-stream-b64.c b/camel/camel-stream-b64.c index cedc9f914f..df4f755fac 100644 --- a/camel/camel-stream-b64.c +++ b/camel/camel-stream-b64.c @@ -552,7 +552,7 @@ my_reset (CamelStream *stream) void -camel_stream_b64_write_to_stream (CamelStream *stream, +camel_stream_b64_write_to_stream (CamelStreamB64 *stream_b64, CamelStream *output_stream) { gchar tmp_buf[4096]; @@ -565,10 +565,10 @@ camel_stream_b64_write_to_stream (CamelStream *stream, * to an output stream. */ g_assert (output_stream); - g_assert (stream); + g_assert (stream_b64); - while (!camel_stream_eos (stream)) { - nb_read = camel_stream_read (stream, tmp_buf, 4096); + while (!camel_stream_eos (CAMEL_STREAM (stream_b64))) { + nb_read = camel_stream_read (CAMEL_STREAM (stream_b64), tmp_buf, 4096); nb_written = 0; while (nb_written < nb_read) nb_written += camel_stream_write (output_stream, tmp_buf, nb_read); diff --git a/camel/camel-stream-b64.h b/camel/camel-stream-b64.h index 2d2932951d..5d93f122eb 100644 --- a/camel/camel-stream-b64.h +++ b/camel/camel-stream-b64.h @@ -118,7 +118,7 @@ void camel_stream_b64_set_mode (CamelStreamB6 /* utility function that writes the whole de/en-coded stream to an output stream */ -void camel_stream_b64_write_to_stream (CamelStream *stream, +void camel_stream_b64_write_to_stream (CamelStreamB64 *stream, CamelStream *output_stream); |