From e9c6d8921cce940e590f763a881794323a9e6703 Mon Sep 17 00:00:00 2001 From: bertrand Date: Tue, 3 Aug 1999 10:19:39 +0000 Subject: Multipart Mime message parsing works with plain text parts. Woohooo :)))) Making it work with other types is now just a matter of writing the various data wrappers. And display them will just be a matter of writing the good bonobo components. 1999-08-03 bertrand * camel/camel-simple-data-wrapper.c (_construct_from_stream): more debugging output + nb_bytes_read is now a signed int to avoid bug when eos is encountered. * camel/camel-mime-part.c (_construct_from_stream): sync to data_wrapper_repository function name changes. Use default "text/plain" type when conten-type field is not found. (following RFC 2046 spec). * camel/data-wrapper-repository.c (data_wrapper_repository_set_data_wrapper_type): (data_wrapper_repository_get_data_wrapper_type): change function name prefix (s/data_wrapper/data_wrapper_repository/) * camel/camel-multipart.c (_read_part): add `\n` at eol but not before boundary. * camel/gmime-utils.c (get_header_table_from_stream): correct implementation of end of stream detection. svn path=/trunk/; revision=1070 --- camel/camel-simple-data-wrapper.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'camel/camel-simple-data-wrapper.c') diff --git a/camel/camel-simple-data-wrapper.c b/camel/camel-simple-data-wrapper.c index eaf62bb0a7..a2203a52e8 100644 --- a/camel/camel-simple-data-wrapper.c +++ b/camel/camel-simple-data-wrapper.c @@ -122,28 +122,36 @@ static void _construct_from_stream (CamelDataWrapper *data_wrapper, CamelStream *stream) { CamelSimpleDataWrapper *simple_data_wrapper = CAMEL_SIMPLE_DATA_WRAPPER (data_wrapper); - guint current_index; - guint nb_bytes_read; - guint nb_bytes_left; + gint nb_bytes_read; static gchar *tmp_buf; GByteArray *array; + CAMEL_LOG_FULL_DEBUG ("CamelSimpleDataWrapper:: Entering _construct_from_stream\n"); g_assert (data_wrapper); g_assert (stream); - if (!tmp_buf) tmp_buf = g_new (gchar, _CMSDW_TMP_BUF_SIZE); - + if (!tmp_buf) { + CAMEL_LOG_FULL_DEBUG ("CamelSimpleDataWrapper::construct_from_stream allocating new temp buffer " + "with %d bytes\n", _CMSDW_TMP_BUF_SIZE); + tmp_buf = g_new (gchar, _CMSDW_TMP_BUF_SIZE); + } + array = simple_data_wrapper->byte_array; - if (array) + if (array) { + CAMEL_LOG_FULL_DEBUG ("CamelSimpleDataWrapper::construct_from_stream freeing old byte array\n"); g_byte_array_free (array, FALSE); + } array = g_byte_array_new(); + CAMEL_LOG_FULL_DEBUG ("CamelSimpleDataWrapper::construct_from_stream new byte array address:%p\n", array); simple_data_wrapper->byte_array = array; - do { + nb_bytes_read = camel_stream_read (stream, tmp_buf, _CMSDW_TMP_BUF_SIZE); + while (nb_bytes_read>0) { + CAMEL_LOG_FULL_DEBUG ("CamelSimpleDataWrapper::construct_from_stream read %d bytes from stream\n", nb_bytes_read); + if (nb_bytes_read>0) g_byte_array_append (array, tmp_buf, nb_bytes_read); nb_bytes_read = camel_stream_read (stream, tmp_buf, _CMSDW_TMP_BUF_SIZE); - if (nb_bytes_read) g_byte_array_append (array, tmp_buf, nb_bytes_read); - } while (nb_bytes_read); + }; CAMEL_LOG_FULL_DEBUG ("CamelSimpleDataWrapper:: Leaving _construct_from_stream\n"); } -- cgit v1.2.3