diff options
Diffstat (limited to 'camel/camel-mime-utils.c')
-rw-r--r-- | camel/camel-mime-utils.c | 77 |
1 files changed, 38 insertions, 39 deletions
diff --git a/camel/camel-mime-utils.c b/camel/camel-mime-utils.c index b12c116b28..9513d920e3 100644 --- a/camel/camel-mime-utils.c +++ b/camel/camel-mime-utils.c @@ -46,10 +46,9 @@ #include <regex.h> #include <glib.h> -#include <glib/gunicode.h> -#include "e-time-utils.h" +#include <gal/util/e-iconv.h> +#include <e-util/e-time-utils.h> -#include "camel-iconv.h" #include "camel-mime-utils.h" #include "camel-charset-map.h" #include "camel-service.h" /* for camel_gethostbyname() */ @@ -1012,7 +1011,7 @@ rfc2047_decode_word(const char *in, size_t len) d(printf("found ?, encoding is '%c'\n", inptr[0])); inptr++; tmplen = inend-inptr-2; - decword = alloca(tmplen); /* this will always be more-than-enough room */ + decword = g_alloca (tmplen); /* this will always be more-than-enough room */ switch(toupper(inptr[0])) { case 'Q': inlen = quoted_decode(inptr+2, tmplen, decword); @@ -1033,7 +1032,7 @@ rfc2047_decode_word(const char *in, size_t len) if (inlen > 0) { /* yuck, all this snot is to setup iconv! */ tmplen = inptr - in - 3; - encname = alloca (tmplen + 1); + encname = g_alloca (tmplen + 1); memcpy (encname, in + 2, tmplen); encname[tmplen] = '\0'; @@ -1049,30 +1048,30 @@ rfc2047_decode_word(const char *in, size_t len) if (p) *p = '\0'; - charset = camel_charset_canonical_name (encname); + charset = e_iconv_charset_name (encname); inbuf = decword; outlen = inlen * 6 + 16; - outbase = alloca (outlen); + outbase = g_alloca (outlen); outbuf = outbase; retry: - ic = camel_iconv_open ("UTF-8", charset); + ic = e_iconv_open ("UTF-8", charset); if (ic != (iconv_t) -1) { - ret = camel_iconv (ic, &inbuf, &inlen, &outbuf, &outlen); + ret = e_iconv (ic, &inbuf, &inlen, &outbuf, &outlen); if (ret != (size_t) -1) { - camel_iconv (ic, NULL, 0, &outbuf, &outlen); + e_iconv (ic, NULL, 0, &outbuf, &outlen); *outbuf = 0; decoded = g_strdup (outbase); } - camel_iconv_close (ic); + e_iconv_close (ic); } else { w(g_warning ("Cannot decode charset, header display may be corrupt: %s: %s", charset, strerror (errno))); if (!retried) { - charset = camel_charset_locale_name (); + charset = e_iconv_locale_charset (); if (!charset) charset = "iso-8859-1"; @@ -1120,24 +1119,24 @@ append_8bit (GString *out, const char *inbuf, size_t inlen, const char *charset) size_t outlen; iconv_t ic; - ic = camel_iconv_open ("UTF-8", charset); + ic = e_iconv_open ("UTF-8", charset); if (ic == (iconv_t) -1) return FALSE; outlen = inlen * 6 + 16; outbuf = outbase = g_malloc(outlen); - if (camel_iconv (ic, &inbuf, &inlen, &outbuf, &outlen) == (size_t) -1) { + if (e_iconv (ic, &inbuf, &inlen, &outbuf, &outlen) == (size_t) -1) { w(g_warning("Conversion to '%s' failed: %s", charset, strerror (errno))); g_free(outbase); - camel_iconv_close (ic); + e_iconv_close (ic); return FALSE; } *outbuf = 0; g_string_append(out, outbase); g_free(outbase); - camel_iconv_close (ic); + e_iconv_close (ic); return TRUE; @@ -1151,9 +1150,9 @@ header_decode_text (const char *in, size_t inlen, const char *default_charset) const char *inptr, *inend, *start, *chunk, *locale_charset; char *dword = NULL; - locale_charset = camel_charset_locale_name (); + locale_charset = e_iconv_locale_charset (); - out = g_string_new(""); + out = g_string_new (""); inptr = in; inend = inptr + inlen; chunk = NULL; @@ -1224,14 +1223,14 @@ rfc2047_encode_word(GString *outstring, const char *in, size_t len, const char * /* convert utf8->encoding */ bufflen = len * 6 + 16; - buffer = alloca (bufflen); + buffer = g_alloca (bufflen); inlen = len; inptr = in; - ascii = alloca (bufflen); + ascii = g_alloca (bufflen); if (strcasecmp (type, "UTF-8") != 0) - ic = camel_iconv_open (type, "UTF-8"); + ic = e_iconv_open (type, "UTF-8"); while (inlen) { size_t convlen, proclen; @@ -1279,13 +1278,13 @@ rfc2047_encode_word(GString *outstring, const char *in, size_t len, const char * hopefully-small-enough chunks, and leave it at that */ convlen = MIN(inlen, CAMEL_FOLD_PREENCODED); p = inptr; - if (camel_iconv (ic, &inptr, &convlen, &out, &outlen) == (size_t) -1) { + if (e_iconv (ic, &inptr, &convlen, &out, &outlen) == (size_t) -1) { w(g_warning("Conversion problem: conversion truncated: %s", strerror (errno))); /* blah, we include it anyway, better than infinite loop ... */ inptr = p + convlen; } else { /* make sure we flush out any shift state */ - camel_iconv (ic, NULL, 0, &out, &outlen); + e_iconv (ic, NULL, 0, &out, &outlen); } inlen -= (inptr - p); } @@ -1310,7 +1309,7 @@ rfc2047_encode_word(GString *outstring, const char *in, size_t len, const char * } if (ic != (iconv_t) -1) - camel_iconv_close (ic); + e_iconv_close (ic); } @@ -1867,7 +1866,7 @@ rfc2184_decode (const char *in, size_t len) return NULL; encoding = g_strndup (in, inptr - in); - charset = camel_charset_canonical_name (encoding); + charset = e_iconv_charset_name (encoding); g_free (encoding); inptr = memchr (inptr + 1, '\'', inend - inptr - 1); @@ -1884,22 +1883,22 @@ rfc2184_decode (const char *in, size_t len) inbuf = decword = hex_decode (inptr, inend - inptr); inlen = strlen (inbuf); - ic = camel_iconv_open ("UTF-8", charset); + ic = e_iconv_open ("UTF-8", charset); if (ic != (iconv_t) -1) { size_t ret; outlen = inlen * 6 + 16; outbuf = outbase = g_malloc (outlen); - ret = camel_iconv (ic, &inbuf, &inlen, &outbuf, &outlen); + ret = e_iconv (ic, &inbuf, &inlen, &outbuf, &outlen); if (ret != (size_t) -1) { - camel_iconv (ic, NULL, 0, &outbuf, &outlen); + e_iconv (ic, NULL, 0, &outbuf, &outlen); *outbuf = '\0'; g_free (decoded); decoded = outbase; } - camel_iconv_close (ic); + e_iconv_close (ic); } else { decoded = decword; } @@ -2039,21 +2038,21 @@ header_decode_param (const char **in, char **paramp, char **valuep, int *is_rfc2 inbuf = value; inlen = strlen (inbuf); - charset = camel_charset_locale_name (); - ic = camel_iconv_open ("UTF-8", charset ? charset : "ISO-8859-1"); + charset = e_iconv_locale_charset (); + ic = e_iconv_open ("UTF-8", charset ? charset : "ISO-8859-1"); if (ic != (iconv_t) -1) { size_t ret; outlen = inlen * 6 + 16; outbuf = outbase = g_malloc (outlen); - ret = camel_iconv (ic, &inbuf, &inlen, &outbuf, &outlen); + ret = e_iconv (ic, &inbuf, &inlen, &outbuf, &outlen); if (ret != (size_t) -1) { - camel_iconv (ic, NULL, 0, &outbuf, &outlen); + e_iconv (ic, NULL, 0, &outbuf, &outlen); *outbuf = '\0'; } - camel_iconv_close (ic); + e_iconv_close (ic); g_free (value); value = outbase; @@ -2968,7 +2967,7 @@ header_encode_param (const unsigned char *in, gboolean *encoded) charset = "iso-8859-1"; if (strcasecmp (charset, "UTF-8") != 0) - cd = camel_iconv_open (charset, "UTF-8"); + cd = e_iconv_open (charset, "UTF-8"); if (cd == (iconv_t) -1) { charset = "UTF-8"; @@ -2984,13 +2983,13 @@ header_encode_param (const unsigned char *in, gboolean *encoded) outptr = outbuf = g_malloc (outleft); inbuf = in; - if (camel_iconv (cd, &inbuf, &inleft, &outptr, &outleft) == (size_t) -1) { + if (e_iconv (cd, &inbuf, &inleft, &outptr, &outleft) == (size_t) -1) { w(g_warning ("Conversion problem: conversion truncated: %s", strerror (errno))); } else { - camel_iconv (cd, NULL, 0, &outptr, &outleft); + e_iconv (cd, NULL, 0, &outptr, &outleft); } - camel_iconv_close (cd); + e_iconv_close (cd); inptr = outbuf; inend = outptr; @@ -3547,7 +3546,7 @@ header_raw_append_parse(struct _header_raw **list, const char *header, int offse printf("Invalid header line: '%s'\n", header); return; } - name = alloca(fieldlen+1); + name = g_alloca (fieldlen + 1); memcpy(name, header, fieldlen); name[fieldlen] = 0; |