Removed charset/locale charset lookup and iconv_open/close functions,
author1 <NotZed@Ximian.com>
Thu, 11 Oct 2001 22:08:20 +0000 (22:08 +0000)
committerMichael Zucci <zucchi@src.gnome.org>
Thu, 11 Oct 2001 22:08:20 +0000 (22:08 +0000)
2001-10-11    <NotZed@Ximian.com>

        * camel-charset-map.[ch]: Removed charset/locale charset lookup
        and iconv_open/close functions, moved to gal.  Fixed all callers.

15 files changed:
camel/ChangeLog
camel/camel-charset-map.c
camel/camel-charset-map.h
camel/camel-filter-search.c
camel/camel-folder-summary.c
camel/camel-mime-filter-charset.c
camel/camel-mime-message.c
camel/camel-mime-part-utils.c
camel/camel-mime-part.c
camel/camel-mime-utils.c
camel/camel-pgp-context.c
camel/camel-sasl-digest-md5.c
camel/camel-tcp-stream.c
camel/camel-uid-cache.c
camel/camel.c

index 85dc500..a5012ff 100644 (file)
@@ -1,3 +1,8 @@
+2001-10-11    <NotZed@Ximian.com>
+
+       * camel-charset-map.[ch]: Removed charset/locale charset lookup
+       and iconv_open/close functions, moved to gal.  Fixed all callers.
+
 2001-10-11  Jeffrey Stedfast  <fejj@ximian.com>
 
        * camel-tcp-stream-ssl.c (ssl_cert_is_saved): Same.
index fd53016..ff63f86 100644 (file)
@@ -203,7 +203,6 @@ void main(void)
 #include <string.h>
 #include <ctype.h>
 #include <glib.h>
-#include <e-util/e-msgport.h>
 #ifdef ENABLE_THREADS
 #include <pthread.h>
 #endif
@@ -211,157 +210,6 @@ void main(void)
 #include <alloca.h>
 #endif
 
-#define cd(x)                  /* 'cache debug' */
-
-#ifdef ENABLE_THREADS
-static pthread_mutex_t iconv_charsets_lock = PTHREAD_MUTEX_INITIALIZER;
-#define ICONV_CHARSETS_LOCK() pthread_mutex_lock (&iconv_charsets_lock)
-#define ICONV_CHARSETS_UNLOCK() pthread_mutex_unlock (&iconv_charsets_lock)
-#else
-#define ICONV_CHARSETS_LOCK()
-#define ICONV_CHARSETS_UNLOCK()
-#endif /* ENABLE_THREADS */
-
-struct _iconv_cache_node {
-       EDListNode ln;
-
-       iconv_t ip;
-};
-
-struct _iconv_cache {
-       EDListNode ln;
-
-       char *conv;
-
-       EDList inuse;           /* opened ic's in use  - if both these lists empty == failed to open conversion */
-       EDList free;            /* opened ic's free */
-};
-
-#define CAMEL_ICONV_CACHE_SIZE (16)
-
-static EDList iconv_cache_list;
-
-static GHashTable *iconv_charsets = NULL;
-static char *locale_charset = NULL;
-
-struct {
-       char *charset;
-       char *iconv_name;
-} known_iconv_charsets[] = {
-       /* charset name, iconv-friendly charset name */
-       { "iso-8859-1",     "iso-8859-1" },
-       { "iso8859-1",      "iso-8859-1" },
-       /* the above mostly serves as an example for iso-style charsets,
-          but we have code that will populate the iso-*'s if/when they
-          show up in camel_charset_map_to_iconv() so I'm
-          not going to bother putting them all in here... */
-       { "windows-cp1251", "cp1251"     },
-       { "windows-1251",   "cp1251"     },
-       { "cp1251",         "cp1251"     },
-       /* the above mostly serves as an example for windows-style
-          charsets, but we have code that will parse and convert them
-          to their cp#### equivalents if/when they show up in
-          camel_charset_map_to_iconv() so I'm not going to bother
-          putting them all in here either... */
-       { "ks_c_5601-1987", "euc-kr"     },
-       { NULL,             NULL         }
-};
-
-
-static void
-shutdown_foreach (gpointer key, gpointer value, gpointer data)
-{
-       g_free (key);
-       g_free (value);
-}
-
-static void
-flush_iconv_entry(struct _iconv_cache *ic)
-{
-       struct _iconv_cache_node *node;
-
-       cd(printf("Flushing iconv cache entry: %s\n", ic->conv));
-
-       while ( (node = (struct _iconv_cache_node *)e_dlist_remhead(&ic->inuse)) ) {
-               iconv_close(node->ip);
-               g_free(node);
-       }
-       while ( (node = (struct _iconv_cache_node *)e_dlist_remhead(&ic->free)) ) {
-               iconv_close(node->ip);
-               g_free(node);
-       }
-       g_free(ic->conv);
-       g_free(ic);
-}
-
-static void
-camel_charset_map_shutdown (void)
-{
-       struct _iconv_cache *ic, *in;
-
-       g_hash_table_foreach (iconv_charsets, shutdown_foreach, NULL);
-       g_hash_table_destroy (iconv_charsets);
-       g_free (locale_charset);
-
-       ic = (struct _iconv_cache *)iconv_cache_list.head;
-       in = (struct _iconv_cache *)ic->ln.next;
-       while (in) {
-               flush_iconv_entry(ic);
-               ic = in;
-               in = (struct _iconv_cache *)in->ln.next;
-       }
-}
-
-void
-camel_charset_map_init (void)
-{
-       char *locale;
-       int i;
-       
-       if (iconv_charsets)
-               return;
-       
-       iconv_charsets = g_hash_table_new (g_strcase_hash, g_strcase_equal);
-       for (i = 0; known_iconv_charsets[i].charset != NULL; i++) {
-               g_hash_table_insert (iconv_charsets, g_strdup (known_iconv_charsets[i].charset),
-                                    g_strdup (known_iconv_charsets[i].iconv_name));
-       }
-       
-       e_dlist_init(&iconv_cache_list);
-       
-       locale = setlocale (LC_ALL, NULL);
-       
-       if (!locale || !strcmp (locale, "C") || !strcmp (locale, "POSIX")) {
-               /* The locale "C"  or  "POSIX"  is  a  portable  locale;  its
-                * LC_CTYPE  part  corresponds  to  the 7-bit ASCII character
-                * set.
-                */
-               
-               locale_charset = NULL;
-       } else {
-               /* A locale name is typically of  the  form  language[_terri-
-                * tory][.codeset][@modifier],  where  language is an ISO 639
-                * language code, territory is an ISO 3166 country code,  and
-                * codeset  is  a  character  set or encoding identifier like
-                * ISO-8859-1 or UTF-8.
-                */
-               char *p;
-               int len;
-               
-               p = strchr (locale, '@');
-               if (p == NULL)
-                       p = strchr (locale, '/');  /* This is a hack for Solaris systems */
-               
-               len = p ? (p - locale) : strlen (locale);
-               if ((p = strchr (locale, '.'))) {
-                       locale_charset = g_strndup (p + 1, len - (p - locale) + 1);
-                       g_strdown (locale_charset);
-               }
-       }
-       
-       g_atexit (camel_charset_map_shutdown);
-}
-
 void
 camel_charset_init (CamelCharset *c)
 {
@@ -444,161 +292,5 @@ camel_charset_best (const char *in, int len)
        return camel_charset_best_name (&charset);
 }
 
-const char *
-camel_charset_locale_name (void)
-{
-       return locale_charset;
-}
-
-const char *
-camel_charset_to_iconv (const char *name)
-{
-       const char *charset;
-       
-       if (name == NULL)
-               return NULL;
-       
-       ICONV_CHARSETS_LOCK ();
-       charset = g_hash_table_lookup (iconv_charsets, name);
-       if (!charset) {
-               /* Attempt to friendlyify the charset */
-               char *new_charset, *p;
-               int len;
-               
-               if (!g_strncasecmp (name, "iso", 3) && name[3] != '-' && name[3] != '_') {
-                       /* Hack to convert charsets like ISO8859-1 to iconv-friendly ISO-8859-1 */
-                       len = strlen (name);
-                       new_charset = g_malloc (len + 2);
-                       memcpy (new_charset, name, 3);
-                       new_charset[3] = '-';
-                       memcpy (new_charset + 4, name + 3, len - 3);
-                       new_charset[len + 1] = '\0';
-               } else if (!g_strncasecmp (name, "windows-", 8)) {
-                       /* Convert charsets like windows-1251 and windows-cp1251 to iconv-friendly cp1251 */
-                       new_charset = (char *) name + 8;
-                       if (!g_strncasecmp (new_charset, "cp", 2))
-                               new_charset += 2;
-                       
-                       for (p = new_charset; *p && isdigit ((unsigned) *p); p++);
-                       if (*p == '\0')
-                               new_charset = g_strdup_printf ("cp%s", new_charset);
-                       else
-                               new_charset = g_strdup (name);
-               } else {
-                       /* *shrug* - add it to the hash table just the way it is? */
-                       new_charset = g_strdup (name);
-               }
-               
-               g_hash_table_insert (iconv_charsets, g_strdup (name), new_charset);
-               charset = new_charset;
-       }
-       ICONV_CHARSETS_UNLOCK ();
-       
-       return charset;
-}
-
-iconv_t camel_charset_iconv_open(const char *oto, const char *ofrom)
-{
-       const char *to, *from;
-       char *tofrom;
-       struct _iconv_cache *ic, *icnew = NULL;
-       struct _iconv_cache_node *node;
-       iconv_t ip;
-
-       to = camel_charset_to_iconv(oto);
-       from = camel_charset_to_iconv(ofrom);
-       tofrom = alloca(strlen(to) +strlen(from) + 1);
-       sprintf(tofrom, "%s%s", to, from);
-
-       ICONV_CHARSETS_LOCK();
-       ic = (struct _iconv_cache *)iconv_cache_list.head;
-       while (ic->ln.next) {
-               if (!strcasecmp(ic->conv, tofrom))
-                       break;
-               ic = (struct _iconv_cache *)ic->ln.next;
-       }
-
-       if (ic->ln.next == NULL) {
-               int extra = e_dlist_length(&iconv_cache_list) - CAMEL_ICONV_CACHE_SIZE;
-               struct _iconv_cache *old = (struct _iconv_cache *)iconv_cache_list.head,
-                       *next = (struct _iconv_cache *)old->ln.next;
-
-               /* flush any 'old' entries out, if we can */
-               while (extra>0 && next) {
-                       if (e_dlist_empty(&old->inuse)) {
-                               e_dlist_remove(&old->ln);
-                               flush_iconv_entry(old);
-                               extra--;
-                       }
-                       old = next;
-                       next = (struct _iconv_cache *)old->ln.next;
-               }
-
-               icnew = ic = g_malloc(sizeof(*ic));
-               e_dlist_init(&ic->inuse);
-               e_dlist_init(&ic->free);
-               ic->conv = g_strdup(tofrom);
-       } else {
-               e_dlist_remove(&ic->ln);
-       }
-
-       node = (struct _iconv_cache_node *)e_dlist_remhead(&ic->free);
-       if (node) {
-               cd(printf("Returning cached success of: %s to %s\n", from, to));
-               e_dlist_addhead(&ic->inuse, &node->ln);
-               ip = node->ip;
-       } else {
-               if (e_dlist_empty(&ic->inuse) && icnew == NULL) {
-                       cd(printf("returning cached failure of conversion: %s to %s\n", from, to));
-                       ip = (iconv_t)-1;
-               } else {
-                       ip = iconv_open(to, from);
-                       if (ip != (iconv_t)-1) {
-                               cd(printf("Creating cached opening of: %s to %s = %p\n", from, to, ip));
-                               node = g_malloc(sizeof(*node));
-                               node->ip = ip;
-                               e_dlist_addhead(&ic->inuse, &node->ln);
-                       }
-               }
-       }
-
-       e_dlist_addtail(&iconv_cache_list, &ic->ln);
-
-       ICONV_CHARSETS_UNLOCK();
-
-       return ip;
-}
-
-void camel_charset_iconv_close(iconv_t ip)
-{
-       struct _iconv_cache *ic;
-       struct _iconv_cache_node *node;
-
-       if (ip == (iconv_t)-1)
-               return;
-
-       ICONV_CHARSETS_LOCK();
-       ic = (struct _iconv_cache *)iconv_cache_list.tailpred;
-       while (ic->ln.prev) {
-               cd(printf("closing iconv %p, checking against name '%s'\n", ip, ic->conv));
-               node = (struct _iconv_cache_node *)ic->inuse.head;
-               while (node->ln.next) {
-                       cd(printf("closing iconv %p, checking against node '%p'\n", ip, node->ip));
-                       if (node->ip == ip) {
-                               e_dlist_remove(&node->ln);
-                               e_dlist_addhead(&ic->free, &node->ln);
-                               ICONV_CHARSETS_UNLOCK();
-                               return;
-                       }
-                       node = (struct _iconv_cache_node *)node->ln.next;
-               }
-               ic = (struct _iconv_cache *)ic->ln.prev;
-       }
-
-       ICONV_CHARSETS_UNLOCK();
-
-       g_warning("Trying to close iconv i dont know about: %p", ip);
-}
-
 #endif /* !BUILD_MAP */
 
index 749f02d..581e8e8 100644 (file)
@@ -30,8 +30,6 @@ struct _CamelCharset {
        int level;
 };
 
-void camel_charset_map_init (void);
-
 void camel_charset_init(CamelCharset *);
 void camel_charset_step(CamelCharset *, const char *in, int len);
 const char *camel_charset_best_name(CamelCharset *);
@@ -39,11 +37,4 @@ const char *camel_charset_best_name(CamelCharset *);
 /* helper function */
 const char *camel_charset_best(const char *in, int len);
 
-const char *camel_charset_locale_name (void);
-
-const char *camel_charset_to_iconv (const char *name);
-
-iconv_t camel_charset_iconv_open(const char *to, const char *from);
-void camel_charset_iconv_close(iconv_t ic);
-
 #endif /* ! _CAMEL_CHARSET_MAP_H */
index 45aec20..9366a2f 100644 (file)
@@ -34,6 +34,8 @@
 #include <string.h>
 #include <ctype.h>
 
+#include <gal/util/e-iconv.h>
+
 #include "e-util/e-sexp.h"
 
 #include "camel-mime-message.h"
@@ -129,7 +131,7 @@ check_header (struct _ESExp *f, int argc, struct _ESExpResult **argv, FilterMess
                        else {
                                ct = camel_mime_part_get_content_type(CAMEL_MIME_PART(fms->message));
                                if (ct)
-                                       charset = camel_charset_to_iconv(header_content_type_param(ct, "charset"));
+                                       charset = e_iconv_charset_name(header_content_type_param(ct, "charset"));
                        }
                }
 
index a83517e..9179b63 100644 (file)
@@ -29,6 +29,8 @@
 #include <errno.h>
 #include <stdlib.h>
 
+#include <gal/util/e-iconv.h>
+
 #include "camel-folder-summary.h"
 
 #include <camel/camel-file-utils.h>
@@ -1492,7 +1494,7 @@ message_info_new(CamelFolderSummary *s, struct _header_raw *h)
             && (strcasecmp(charset, "us-ascii") == 0))
                charset = NULL;
 
-       charset = camel_charset_to_iconv(charset);
+       charset = e_iconv_charset_name(charset);
 
        subject = summary_format_string(h, "subject", charset);
        from = summary_format_address(h, "from");
@@ -1742,7 +1744,7 @@ content_info_new (CamelFolderSummary *s, struct _header_raw *h)
        
        ci = camel_folder_summary_content_info_new (s);
        
-       charset = camel_charset_locale_name ();
+       charset = e_iconv_locale_charset();
        ci->id = header_msgid_decode (header_raw_find (&h, "content-id", NULL));
        ci->description = header_decode_string (header_raw_find (&h, "content-description", NULL), NULL);
        ci->encoding = header_content_encoding_decode (header_raw_find (&h, "content-transfer-encoding", NULL));
@@ -2447,7 +2449,7 @@ camel_message_info_new_from_header (struct _header_raw *header)
            && (strcasecmp(charset, "us-ascii") == 0))
                charset = NULL;
 
-       charset = camel_charset_to_iconv(charset);
+       charset = e_iconv_charset_name(charset);
        
        subject = summary_format_string(header, "subject", charset);
        from = summary_format_address(header, "from");
index bb9dd06..4154d44 100644 (file)
@@ -24,6 +24,8 @@
 #include <string.h>
 #include <errno.h>
 
+#include <gal/util/e-iconv.h>
+
 #include "camel-mime-filter-charset.h"
 #include "camel-charset-map.h"
 
@@ -61,7 +63,7 @@ camel_mime_filter_charset_finalize(CamelObject *o)
        g_free(f->from);
        g_free(f->to);
        if (f->ic != (iconv_t)-1) {
-               camel_charset_iconv_close(f->ic);
+               e_iconv_close(f->ic);
                f->ic = (iconv_t) -1;
        }
 }
@@ -231,10 +233,7 @@ camel_mime_filter_charset_new_convert (const char *from_charset, const char *to_
 {
        CamelMimeFilterCharset *new = CAMEL_MIME_FILTER_CHARSET (camel_object_new (camel_mime_filter_charset_get_type ()));
        
-       from_charset = camel_charset_to_iconv (from_charset);
-       to_charset = camel_charset_to_iconv (to_charset);
-       
-       new->ic = camel_charset_iconv_open (to_charset, from_charset);
+       new->ic = e_iconv_open (to_charset, from_charset);
        if (new->ic == (iconv_t) -1) {
                g_warning("Cannot create charset conversion from %s to %s: %s", from_charset, to_charset, strerror(errno));
                camel_object_unref ((CamelObject *)new);
index 53edc4f..8cc530c 100644 (file)
@@ -32,6 +32,8 @@
 #include <stdio.h>
 #include <string.h>
 
+#include <gal/util/e-iconv.h>
+
 #include "camel-mime-message.h"
 #include "camel-multipart.h"
 #include "camel-stream-mem.h"
@@ -537,7 +539,7 @@ process_header (CamelMedium *medium, const char *header_name, const char *header
        case HEADER_SUBJECT:
                g_free (message->subject);
                if (((CamelMimePart *)message)->content_type)
-                       charset = camel_charset_to_iconv(header_content_type_param(((CamelMimePart *)message)->content_type, "charset"));
+                       charset = e_iconv_charset_name(header_content_type_param(((CamelMimePart *)message)->content_type, "charset"));
                else
                        charset = NULL;
                message->subject = g_strstrip (header_decode_string (header_value, charset));
index 8314330..597b1e9 100644 (file)
@@ -31,6 +31,8 @@
 #include <unistd.h>
 #include <errno.h>
 
+#include <gal/util/e-iconv.h>
+
 #include "string-utils.h"
 #include "camel-mime-part-utils.h"
 #include "camel-mime-message.h"
@@ -80,7 +82,7 @@ check_html_charset(char *buffer, int length)
                            && (val = camel_html_parser_attr(hp, "content"))
                            && (ct = header_content_type_decode(val))) {
                                charset = header_content_type_param(ct, "charset");
-                               charset = camel_charset_to_iconv (charset);
+                               charset = e_iconv_charset_name (charset);
                                header_content_type_unref(ct);
                        }
                        break;
@@ -105,7 +107,7 @@ static GByteArray *convert_buffer(GByteArray *in, const char *to, const char *fr
 
        d(printf("converting buffer from %s to %s: '%.*s'\n", from, to, (int)in->len, in->data));
 
-       ic = camel_charset_iconv_open(to, from);
+       ic = e_iconv_open(to, from);
        if (ic == (iconv_t) -1) {
                g_warning("Cannot convert from '%s' to '%s': %s", from, to, strerror(errno));
                return NULL;
@@ -146,7 +148,7 @@ static GByteArray *convert_buffer(GByteArray *in, const char *to, const char *fr
                break;
        } while (1);
 
-       camel_charset_iconv_close(ic);
+       e_iconv_close(ic);
 
        return out;
 }
@@ -188,7 +190,7 @@ simple_data_wrapper_construct_from_parser (CamelDataWrapper *dw, CamelMimeParser
        ct = camel_mime_parser_content_type(mp);
        if (header_content_type_is(ct, "text", "*")) {
                charset = header_content_type_param(ct, "charset");
-               charset = camel_charset_to_iconv (charset);
+               charset = e_iconv_charset_name(charset);
                
                if (fdec) {
                        d(printf("Adding CRLF conversion filter\n"));
index 5e6d6b3..547c448 100644 (file)
@@ -30,6 +30,9 @@
 #include <string.h>
 #include <stdio.h>
 #include <ctype.h>
+
+#include <gal/util/e-iconv.h>
+
 #include "hash-table-utils.h"
 #include "camel-mime-parser.h"
 #include "camel-stream-mem.h"
@@ -213,7 +216,7 @@ process_header(CamelMedium *medium, const char *header_name, const char *header_
        case HEADER_DESCRIPTION: /* raw header->utf8 conversion */
                g_free (mime_part->description);
                if (mime_part->content_type)
-                       charset = camel_charset_to_iconv(header_content_type_param(mime_part->content_type, "charset"));
+                       charset = e_iconv_charset_name(header_content_type_param(mime_part->content_type, "charset"));
                else
                        charset = NULL;
                mime_part->description = g_strstrip (header_decode_string (header_value, charset));
index 2a1a929..451c9c8 100644 (file)
@@ -48,6 +48,7 @@
 
 #include <glib.h>
 #include <gal/unicode/gunicode.h>
+#include <gal/util/e-iconv.h>
 
 #include "camel-mime-utils.h"
 #include "camel-charset-map.h"
@@ -1109,7 +1110,7 @@ rfc2047_decode_word(const char *in, int len)
                        memcpy (encname, in + 2, tmplen);
                        encname[tmplen] = '\0';
                        
-                       charset = camel_charset_to_iconv (encname);
+                       charset = e_iconv_charset_name (encname);
                        
                        inbuf = decword;
                        
@@ -1118,7 +1119,7 @@ rfc2047_decode_word(const char *in, int len)
                        outbuf = outbase;
                        
                retry:
-                       ic = camel_charset_iconv_open ("UTF-8", charset);
+                       ic = e_iconv_open ("UTF-8", charset);
                        if (ic != (iconv_t)-1) {
                                ret = iconv (ic, &inbuf, &inlen, &outbuf, &outlen);
                                if (ret >= 0) {
@@ -1126,13 +1127,13 @@ rfc2047_decode_word(const char *in, int len)
                                        *outbuf = 0;
                                        decoded = g_strdup (outbase);
                                }
-                               camel_charset_iconv_close (ic);
+                               e_iconv_close (ic);
                        } else {
                                w(g_warning ("Cannot decode charset, header display may be corrupt: %s: %s",
                                             charset, g_strerror (errno)));
                                
                                if (!retried) {
-                                       charset = camel_charset_locale_name ();
+                                       charset = e_iconv_locale_charset ();
                                        if (!charset)
                                                charset = "iso-8859-1";
                                        
@@ -1192,7 +1193,7 @@ append_8bit (GString *out, const char *inbuf, int inlen, const char *charset)
        int outlen;
        iconv_t ic;
        
-       ic = camel_charset_iconv_open ("UTF-8", charset);
+       ic = e_iconv_open ("UTF-8", charset);
        if (ic == (iconv_t) -1)
                return FALSE;
 
@@ -1202,14 +1203,14 @@ append_8bit (GString *out, const char *inbuf, int inlen, const char *charset)
        if (iconv(ic, &inbuf, &inlen, &outbuf, &outlen) == -1) {
                w(g_warning("Conversion to '%s' failed: %s", charset, strerror(errno)));
                g_free(outbase);
-               camel_charset_iconv_close(ic);
+               e_iconv_close(ic);
                return FALSE;
        }
 
        *outbuf = 0;
        g_string_append(out, outbase);
        g_free(outbase);
-       camel_charset_iconv_close(ic);
+       e_iconv_close(ic);
 
        return TRUE;
        
@@ -1223,7 +1224,7 @@ header_decode_text (const char *in, int 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("");
        inptr = in;
@@ -1303,7 +1304,7 @@ rfc2047_encode_word(GString *outstring, const char *in, int len, const char *typ
        ascii = alloca (bufflen);
        
        if (strcasecmp (type, "UTF-8") != 0)
-               ic = camel_charset_iconv_open (type, "UTF-8");
+               ic = e_iconv_open (type, "UTF-8");
        
        while (inlen) {
                int convlen, i, proclen;
@@ -1381,7 +1382,7 @@ rfc2047_encode_word(GString *outstring, const char *in, int len, const char *typ
        }
 
        if (ic != (iconv_t) -1)
-               camel_charset_iconv_close(ic);
+               e_iconv_close(ic);
 }
 
 
@@ -1939,7 +1940,7 @@ rfc2184_decode (const char *in, int len)
                return NULL;
        
        encoding = g_strndup (in, inptr - in);
-       charset = camel_charset_to_iconv (encoding);
+       charset = e_iconv_charset_name (encoding);
        g_free (encoding);
        
        inptr = memchr (inptr + 1, '\'', inend - inptr - 1);
@@ -1956,7 +1957,7 @@ rfc2184_decode (const char *in, int len)
                inbuf = decword = hex_decode (inptr, inend - inptr);
                inlen = strlen (inbuf);
                
-               ic = camel_charset_iconv_open("UTF-8", charset);
+               ic = e_iconv_open("UTF-8", charset);
                if (ic != (iconv_t) -1) {
                        int ret;
                        
@@ -1971,7 +1972,7 @@ rfc2184_decode (const char *in, int len)
                                decoded = outbase;
                        }
                        
-                       camel_charset_iconv_close(ic);
+                       e_iconv_close(ic);
                } else {
                        decoded = decword;
                }
@@ -2110,8 +2111,8 @@ 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_charset_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) {
                        int ret;
                        
@@ -2124,7 +2125,7 @@ header_decode_param (const char **in, char **paramp, char **valuep, int *is_rfc2
                                *outbuf = '\0';
                        }
                        
-                       camel_charset_iconv_close (ic);
+                       e_iconv_close (ic);
                        
                        g_free (value);
                        value = outbase;
index 180a1a1..575b600 100644 (file)
@@ -52,6 +52,7 @@
 
 #include <iconv.h>
 #include <gal/unicode/gunicode.h>
+#include <gal/util/e-iconv.h>
 
 #define d(x)
 
@@ -999,11 +1000,11 @@ pgp_verify (CamelCipherContext *ctx, CamelCipherHash hash, CamelStream *istream,
                
                desc = outbuf = g_new (unsigned char, outlen + 1);
                
-               locale = camel_charset_locale_name ();
+               locale = e_iconv_locale_charset();
                if (!locale)
                        locale = "iso-8859-1";
                
-               cd = camel_charset_iconv_open ("UTF-8", locale);
+               cd = e_iconv_open ("UTF-8", locale);
                if (cd != (iconv_t) -1) {
                        const char *inbuf;
                        int ret;
@@ -1013,7 +1014,7 @@ pgp_verify (CamelCipherContext *ctx, CamelCipherHash hash, CamelStream *istream,
                        if (ret >= 0) {
                                iconv (cd, NULL, 0, &outbuf, &outlen);
                        }
-                       camel_charset_iconv_close (cd);
+                       e_iconv_close (cd);
                        
                        *outbuf = '\0';
                } else {
index b2f2427..7a34fa5 100644 (file)
@@ -33,7 +33,7 @@
 #include "camel-mime-utils.h"
 #include "camel-charset-map.h"
 #include <e-util/md5-utils.h>
-
+#include <gal/util/e-iconv.h>
 
 #define d(x)
 
@@ -698,11 +698,11 @@ digest_response (struct _DigestResponse *resp)
                const char *buf;
                iconv_t cd;
                
-               charset = camel_charset_locale_name ();
+               charset = e_iconv_locale_charset();
                if (!charset)
                        charset = "iso-8859-1";
                
-               cd = camel_charset_iconv_open (resp->charset, charset);
+               cd = e_iconv_open (resp->charset, charset);
                
                len = strlen (resp->username);
                outlen = 2 * len; /* plenty of space */
@@ -720,7 +720,7 @@ digest_response (struct _DigestResponse *resp)
                }
                
                if (cd != (iconv_t) -1)
-                       camel_charset_iconv_close (cd);
+                       e_iconv_close (cd);
                
                g_byte_array_append (buffer, username, strlen (username));
                g_free (username);
index 30a483f..f63c6be 100644 (file)
@@ -41,8 +41,7 @@ static gpointer tcp_get_socket (CamelTcpStream *stream);
 static void
 camel_tcp_stream_class_init (CamelTcpStreamClass *camel_tcp_stream_class)
 {
-       CamelStreamClass *camel_stream_class =
-               CAMEL_STREAM_CLASS (camel_tcp_stream_class);
+       /*CamelStreamClass *camel_stream_class = CAMEL_STREAM_CLASS (camel_tcp_stream_class);*/
        
        parent_class = CAMEL_STREAM_CLASS (camel_type_get_global_classfuncs (CAMEL_STREAM_TYPE));
        
index 37cbde3..15e463c 100644 (file)
@@ -178,7 +178,7 @@ camel_uid_cache_get_new_uids (CamelUIDCache *cache, GPtrArray *uids)
                struct _uid_state *state;
                
                uid = uids->pdata[i];
-               if (g_hash_table_lookup_extended (cache->uids, uid, &old_uid, &state)) {
+               if (g_hash_table_lookup_extended (cache->uids, uid, (void **)&old_uid, (void **)&state)) {
                        g_hash_table_remove (cache->uids, uid);
                        g_free (old_uid);
                } else {
@@ -210,7 +210,7 @@ camel_uid_cache_save_uid (CamelUIDCache *cache, const char *uid)
        
        g_return_if_fail (uid != NULL);
        
-       if (g_hash_table_lookup_extended (cache->uids, uid, &old_uid, &state)) {
+       if (g_hash_table_lookup_extended (cache->uids, uid, (void **)&old_uid, (void **)&state)) {
                state->save = TRUE;
                state->level = cache->level;
        } else {
index 854fe1e..ab6795f 100644 (file)
@@ -65,8 +65,6 @@ camel_init (const char *configdir, gboolean nss_init)
        if (getenv ("CAMEL_VERBOSE_DEBUG"))
                camel_verbose_debug = TRUE;
        
-       camel_charset_map_init ();
-       
 #ifdef HAVE_NSS
        if (nss_init) {
                PR_Init (PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 10);