From a5cd99a2635e4d199ba06e94c01d628e35573a35 Mon Sep 17 00:00:00 2001 From: bertrand Date: Fri, 28 May 1999 17:57:28 +0000 Subject: More header parsing code. 1999-05-28 bertrand * camel/camel-mime-part.c (_parse_header_pair): (_init_header_name_table): More header parsing code. svn path=/trunk/; revision=953 --- camel/camel-mime-part.c | 64 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 5 deletions(-) (limited to 'camel') diff --git a/camel/camel-mime-part.c b/camel/camel-mime-part.c index 1a18aeeb4b..f4c02b7d7f 100644 --- a/camel/camel-mime-part.c +++ b/camel/camel-mime-part.c @@ -26,6 +26,7 @@ #include #include "gmime-content-field.h" #include "gstring-util.h" +#include "camel-log.h" typedef enum { @@ -34,6 +35,7 @@ typedef enum { HEADER_DISPOSITION, HEADER_CONTENT_ID, HEADER_ENCODING, + HEADER_CONTENT_MD5, HEADER_CONTENT_LANGUAGES } CamelHeaderType; static GHashTable *header_name_table; @@ -76,6 +78,9 @@ _init_header_name_table() header_name_table = g_hash_table_new (g_string_hash, g_string_equal_for_hash); g_hash_table_insert (header_name_table, g_string_new ("Content-Description"), (gpointer)HEADER_DESCRIPTION); g_hash_table_insert (header_name_table, g_string_new ("Content-Disposition"), (gpointer)HEADER_DISPOSITION); + g_hash_table_insert (header_name_table, g_string_new ("Content-id"), (gpointer)HEADER_CONTENT_ID); + g_hash_table_insert (header_name_table, g_string_new ("Content-Transfer-Encoding"), (gpointer)HEADER_ENCODING); + g_hash_table_insert (header_name_table, g_string_new ("Content-MD5"), (gpointer)HEADER_CONTENT_MD5); } @@ -536,15 +541,64 @@ static gboolean _parse_header_pair (CamelMimePart *mime_part, GString *header_name, GString *header_value) { CamelHeaderType header_type; + gboolean header_handled = FALSE; + + header_type = (CamelHeaderType) g_hash_table_lookup (header_name_table, header_name); switch (header_type) { case HEADER_DESCRIPTION: - printf("found HEADER_DESCRIPTION\n"); - return TRUE; + CAMEL_LOG (FULL_DEBUG, + "CamelMimePart::parse_header_pair found HEADER_DESCRIPTION: %s\n", + header_value->str ); + + camel_mime_part_set_description (mime_part, header_value); + header_handled = TRUE; break; - + + case HEADER_DISPOSITION: + CAMEL_LOG (FULL_DEBUG, + "CamelMimePart::parse_header_pair found HEADER_DISPOSITION: %s\n", + header_value->str ); + + camel_mime_part_set_disposition (mime_part, header_value); + header_handled = TRUE; + break; + + case HEADER_CONTENT_ID: + CAMEL_LOG (FULL_DEBUG, + "CamelMimePart::parse_header_pair found HEADER_CONTENT_ID: %s\n", + header_value->str ); + + CMP_CLASS(mime_part)->set_content_id (mime_part, header_value); + header_handled = TRUE; + break; + + case HEADER_ENCODING: + CAMEL_LOG (FULL_DEBUG, + "CamelMimePart::parse_header_pair found HEADER_ENCODING: %s\n", + header_value->str ); + + camel_mime_part_set_encoding (mime_part, header_value); + header_handled = TRUE; + break; + + case HEADER_CONTENT_MD5: + CAMEL_LOG (FULL_DEBUG, + "CamelMimePart::parse_header_pair found HEADER_CONTENT_MD5: %s\n", + header_value->str ); + + CMP_CLASS(mime_part)->set_content_MD5 (mime_part, header_value); + header_handled = TRUE; + break; + + } - return FALSE; - + + + if (header_handled) { + g_string_free (header_name, TRUE); + return TRUE; + } else return FALSE; + } -- cgit