From e39d94c5ef8d88c726a29f2cfa994a6a0d90be5a Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Tue, 10 Jul 2001 22:06:56 +0000 Subject: New function to parse an HTML meta-tag. 2001-07-10 Jeffrey Stedfast * camel-mime-utils.c (html_meta_param_list_decode): New function to parse an HTML meta-tag. * camel-mime-part-utils.c (simple_data_wrapper_construct_from_parser): If the Content-Type did not contain a charset parameter and it's also a text/html part, we have 1 last place to look - in the META html tags. *sigh* * camel-mime-message.c (camel_mime_message_get_source): s/gint/unsigned since that's what it should be. svn path=/trunk/; revision=10976 --- camel/camel-mime-utils.c | 64 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 6 deletions(-) (limited to 'camel/camel-mime-utils.c') diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c index 10730a4301..bf166faa4b 100644 --- a/camel/camel-mime-utils.c +++ b/camel/camel-mime-utils.c @@ -1626,18 +1626,18 @@ header_encode_phrase (const unsigned char *in) /* these are all internal parser functions */ static char * -decode_token(const char **in) +decode_token (const char **in) { const char *inptr = *in; const char *start; - - header_decode_lwsp(&inptr); + + header_decode_lwsp (&inptr); start = inptr; - while (is_ttoken(*inptr)) + while (is_ttoken (*inptr)) inptr++; - if (inptr>start) { + if (inptr > start) { *in = inptr; - return g_strndup(start, inptr-start); + return g_strndup (start, inptr - start); } else { return NULL; } @@ -2719,6 +2719,58 @@ header_param_list_decode(const char *in) return header_decode_param_list(&in); } +struct _header_param * +html_meta_param_list_decode (const char *in, int inlen) +{ + struct _header_param *params = NULL, *last = NULL; + const char *inptr, *inend; + + if (in == NULL) + return NULL; + + inptr = in; + inend = inptr + inlen; + + if (*inptr != '<') + return NULL; + + if (!g_strncasecmp (inptr, "next = NULL; + param->name = name; + param->value = value; + + if (last) { + last->next = param; + last = param; + } else { + last = params = param; + } + } + + return params; +} + /* FIXME: I wrote this in a quick & dirty fasion - it may not be 100% correct */ static char * header_encode_param (const unsigned char *in, gboolean *encoded) -- cgit v1.2.3