<<< Date Index >>>     <<< Thread Index >>>

[PATCH] always use iconv-hook (Re: What should go into 1.5.7?)



[bug] Iconv-hook has no effect if an already-existing charset is given
as a first argument.



[purpose] Some iconv implementation has eucJP-ms, which has more
characters than euc-jp. So some users may want to do

        iconv-hook euc-jp eucJP-ms

to overwrite euc-jp. This patch allows you to do so.



[cons] No side effects found so far.
This patch has been used since mutt-1.5.4 days.



[credit] The first author of this patch was:
"MORIYAMA, Masayuki" (Fri, 11 Jul 2003 22:37:50 +0900)
(he is an expert on charsets field in Japan.)

-- 
tamo
Some iconv implementation has eucJP-ms, which has more characters
than euc-jp. So some users may want to do 'iconv-hook euc-jp eucJP-ms'
to overwrite euc-jp. This patch allows you to do so.

--- mutt-1.5.6.orig/PATCHES     Mon Feb  2 02:42:47 2004
+++ mutt-1.5.6/PATCHES  Sat Feb 14 10:02:10 2004
@@ -0,0 +1 @@
+patch-1.5.6.msyk+tamo.iconv.1
--- mutt-1.5.6.orig/charset.c   Tue Jan 21 21:25:21 2003
+++ mutt-1.5.6/charset.c        Sat Feb 14 10:02:03 2004
@@ -196,6 +196,7 @@
   /* seems to be common on some systems */
 
   { "sjis",            "Shift_JIS"     },
+  { "euc-jp-ms",       "eucJP-ms"      },
 
 
   /*
@@ -325,10 +325,13 @@
   if ((flags & M_ICONV_HOOK_FROM) && (tmp = mutt_charset_hook (fromcode1)))
     mutt_canonical_charset (fromcode1, sizeof (fromcode1), tmp);
 
-  if ((cd = iconv_open (tocode1, fromcode1)) != (iconv_t) -1)
+  tocode2 = mutt_iconv_hook (tocode1);
+  tocode2 = (tocode2) ? tocode2 : tocode1;
+  fromcode2 = mutt_iconv_hook (fromcode1);
+  fromcode2 = (fromcode2) ? fromcode2 : fromcode1;
+
+  if ((cd = iconv_open (tocode2, fromcode2)) != (iconv_t) -1)
     return cd;
-  if ((tocode2 = mutt_iconv_hook (tocode1)) && (fromcode2 = mutt_iconv_hook 
(fromcode1)))
-    return iconv_open (tocode2, fromcode2);
   
   return (iconv_t) -1;
 }
--- mutt-1.5.6.orig/mbyte.c     Tue Jan 21 21:25:21 2003
+++ mutt-1.5.6/mbyte.c  Sat Feb 14 10:01:29 2004
@@ -67,10 +67,10 @@
     Charset_is_utf8 = 1;
 #ifndef HAVE_WC_FUNCS
   else if (!strcmp(buffer, "euc-jp") || !strcmp(buffer, "shift_jis")
-       || !strcmp(buffer, "cp932"))
+       || !strcmp(buffer, "cp932") || !ascii_strcasecmp(buffer, "eucJP-ms"))
   {
     charset_is_ja = 1;
-    charset_to_utf8 = iconv_open ("UTF-8", charset);
-    charset_from_utf8 = iconv_open (charset, "UTF-8");
+    charset_to_utf8 = mutt_iconv_open ("UTF-8", charset, 0);
+    charset_from_utf8 = mutt_iconv_open (charset, "UTF-8", 0);
   }
 #endif
 
--- mutt-1.5.4.orig/hook.c  Tue Jan 21 21:25:21 2003
+++ mutt-1.5.4/hook.c   Sun May 11 16:08:16 2003
@@ -88,7 +88,7 @@
     memset (&pattern, 0, sizeof (pattern));
     pattern.data = safe_strdup (path);
   }
-  else if (DefaultHook && !(data & (M_CHARSETHOOK | M_ACCOUNTHOOK))
+  else if (DefaultHook && !(data & (M_CHARSETHOOK|M_ICONVHOOK|M_ACCOUNTHOOK))
            && (!WithCrypto || !(data & M_CRYPTHOOK))
       )
   {
@@ -157,7 +157,7 @@
   {
     rx = safe_malloc (sizeof (regex_t));
 #ifdef M_CRYPTHOOK
-    if ((rc = REGCOMP (rx, NONULL(pattern.data), ((data & 
(M_CRYPTHOOK|M_CHARSETHOOK)) ? REG_ICASE : 0))) != 0)
+    if ((rc = REGCOMP (rx, NONULL(pattern.data), ((data & 
(M_CRYPTHOOK|M_CHARSETHOOK|M_ICONVHOOK)) ? REG_ICASE : 0))) != 0)
 #else
     if ((rc = REGCOMP (rx, NONULL(pattern.data), (data & 
(M_CHARSETHOOK|M_ICONVHOOK)) ? REG_ICASE : 0)) != 0)
 #endif /* M_CRYPTHOOK */