From: Thomas Roessler Date: Wed, 14 Feb 2001 23:35:28 +0000 (+0000) Subject: iconv-hook. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac5697558f9443d7a0dfa7af9afee42603ba36b9;p=neomutt iconv-hook. --- diff --git a/charset.c b/charset.c index a91f23f11..7003eaebd 100644 --- a/charset.c +++ b/charset.c @@ -195,10 +195,11 @@ PreferredMIMENames[] = { "PCK", "Shift_JIS" }, { "ko_KR-euc", "euc-kr" }, { "zh_TW-big5", "big5" }, - - - - + + /* seems to be common on some systems */ + + { "sjis", "Shift_JIS" }, + /* End of aliases. Please keep this line last. */ @@ -306,6 +307,8 @@ iconv_t mutt_iconv_open (const char *tocode, const char *fromcode, int flags) char fromcode1[SHORT_STRING]; char *tmp; + iconv_t cd; + mutt_canonical_charset (tocode1, sizeof (tocode1), tocode); if ((flags & M_ICONV_HOOK_TO) && (tmp = mutt_charset_hook (tocode1))) mutt_canonical_charset (tocode1, sizeof (tocode1), tmp); @@ -314,7 +317,10 @@ iconv_t mutt_iconv_open (const char *tocode, const char *fromcode, int flags) if ((flags & M_ICONV_HOOK_FROM) && (tmp = mutt_charset_hook (fromcode1))) mutt_canonical_charset (fromcode1, sizeof (fromcode1), tmp); - return iconv_open (tocode1, fromcode1); + if ((cd = iconv_open (tocode1, fromcode1)) != (iconv_t) -1) + return cd; + /* else */ + return iconv_open (mutt_iconv_hook (tocode1), mutt_iconv_hook (fromcode1)); } diff --git a/configure.in b/configure.in index 238cb7c35..4b4402653 100644 --- a/configure.in +++ b/configure.in @@ -905,4 +905,5 @@ AC_OUTPUT(Makefile intl/Makefile m4/Makefile dnl po/Makefile.in doc/Makefile contrib/Makefile dnl muttbug.sh dnl imap/Makefile dnl - Muttrc.head) + Muttrc.head dnl + doc/instdoc.sh) diff --git a/contrib/Makefile.in b/contrib/Makefile.in index 94b41635a..2c339d367 100644 --- a/contrib/Makefile.in +++ b/contrib/Makefile.in @@ -28,6 +28,8 @@ DISTFILES= Makefile.in language.txt language50.txt \ patch.slang-1.2.2.keypad.1 \ $(SAMPLES) +ICONV_DISTFILES=README make.sh + all clean: distclean: @@ -36,10 +38,13 @@ distclean: check: install: - $(top_srcdir)/mkinstalldirs $(DESTDIR)$(docdir)/samples + $(top_srcdir)/mkinstalldirs $(DESTDIR)$(docdir)/samples $(DESTDIR)$(docdir)/samples/iconv for f in $(SAMPLES) ; do \ $(INSTALL) -m 644 $(srcdir)/$$f $(DESTDIR)$(docdir)/samples ; \ done + for f in $(srcdir)/iconv/*.rc ; do \ + $(INSTALL) -m 644 $$f $(DESTDIR)$(docdir)/samples/iconv ; \ + done # Nothing needs to be done - uninstall in doc removes samples as well. # This is just so make uninstall doesn't fail. @@ -57,4 +62,12 @@ dist distdir: Makefile $(DISTFILES) ln $(srcdir)/$$file $(distdir) 2> /dev/null \ || cp -p $(srcdir)/$$file $(distdir); \ done - + mkdir -p $(distdir)/iconv + for file in $(ICONV_DISTFILES) ; do + ln $(srcdir)/iconv/$$file $(distdir)/iconv 2> /dev/null \ + || cp -p $(srcdir)/iconv/$$file $(distdir)/iconv; \ + done + for file in $(srcdir)/iconv/*.rc ; do + ln $$file $(distdir)/iconv 2> /dev/null \ + || cp -p $$file $(distdir)/iconv ; \ + done diff --git a/contrib/iconv/README b/contrib/iconv/README new file mode 100644 index 000000000..1a3135c68 --- /dev/null +++ b/contrib/iconv/README @@ -0,0 +1,15 @@ +This directory contains sample collections of iconv-hooks for +various platforms. The files have been auto-generated from the +source code of Bruno Haible's libiconv implementation, version 1.5.1. + +libiconv is available from . + +If you want to re-generate the files from a newer version of +libiconv, just type: + + rm -f *.rc + ./make.sh + +Note, however, that make.sh isn't guaranteed to run on any system +but the one used for generating these files. + diff --git a/contrib/iconv/iconv.aix-3.2.5.rc b/contrib/iconv/iconv.aix-3.2.5.rc new file mode 100644 index 000000000..45fe63200 --- /dev/null +++ b/contrib/iconv/iconv.aix-3.2.5.rc @@ -0,0 +1,2 @@ +iconv-hook CP850 IBM-850 +iconv-hook ISO-8859-1 ISO8859-1 diff --git a/contrib/iconv/iconv.aix-4.1.5.rc b/contrib/iconv/iconv.aix-4.1.5.rc new file mode 100644 index 000000000..6481a25bc --- /dev/null +++ b/contrib/iconv/iconv.aix-4.1.5.rc @@ -0,0 +1,13 @@ +iconv-hook CP1046 IBM-1046 +iconv-hook CP850 IBM-850 +iconv-hook CP856 IBM-856 +iconv-hook CP932 IBM-932 +iconv-hook EUC-CN IBM-eucCN +iconv-hook EUC-JP IBM-eucJP +iconv-hook EUC-KR IBM-eucKR +iconv-hook EUC-TW IBM-eucTW +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-6 ISO8859-6 +iconv-hook ISO-8859-8 ISO8859-8 diff --git a/contrib/iconv/iconv.aix-4.2.0.rc b/contrib/iconv/iconv.aix-4.2.0.rc new file mode 100644 index 000000000..aeb532741 --- /dev/null +++ b/contrib/iconv/iconv.aix-4.2.0.rc @@ -0,0 +1,18 @@ +iconv-hook BIG5 big5 +iconv-hook CP1046 IBM-1046 +iconv-hook CP850 IBM-850 +iconv-hook CP856 IBM-856 +iconv-hook CP922 IBM-922 +iconv-hook CP932 IBM-932 +iconv-hook EUC-CN IBM-eucCN +iconv-hook EUC-JP IBM-eucJP +iconv-hook EUC-KR IBM-eucKR +iconv-hook EUC-TW IBM-eucTW +iconv-hook ISO-8859-13 IBM-921 +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-6 ISO8859-6 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-8 ISO8859-8 +iconv-hook ISO-8859-9 ISO8859-9 diff --git a/contrib/iconv/iconv.aix-4.3.2.rc b/contrib/iconv/iconv.aix-4.3.2.rc new file mode 100644 index 000000000..f0aa365ce --- /dev/null +++ b/contrib/iconv/iconv.aix-4.3.2.rc @@ -0,0 +1,23 @@ +iconv-hook BIG5 big5 +iconv-hook CP1046 IBM-1046 +iconv-hook CP1124 IBM-1124 +iconv-hook CP1129 IBM-1129 +iconv-hook CP1252 IBM-1252 +iconv-hook CP850 IBM-850 +iconv-hook CP856 IBM-856 +iconv-hook CP922 IBM-922 +iconv-hook CP932 IBM-932 +iconv-hook CP943 IBM-943 +iconv-hook EUC-CN IBM-eucCN +iconv-hook EUC-JP IBM-eucJP +iconv-hook EUC-KR IBM-eucKR +iconv-hook EUC-TW IBM-eucTW +iconv-hook ISO-8859-13 IBM-921 +iconv-hook ISO-8859-15 ISO8859-15 +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-6 ISO8859-6 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-8 ISO8859-8 +iconv-hook ISO-8859-9 ISO8859-9 diff --git a/contrib/iconv/iconv.freebsd-3.3.rc b/contrib/iconv/iconv.freebsd-3.3.rc new file mode 100644 index 000000000..24e8bbbdb --- /dev/null +++ b/contrib/iconv/iconv.freebsd-3.3.rc @@ -0,0 +1,6 @@ +iconv-hook ASCII +iconv-hook CP866 +iconv-hook ISO-8859-15 +iconv-hook ISO-8859-1 +iconv-hook ISO-8859-2 +iconv-hook KOI8-R diff --git a/contrib/iconv/iconv.glibc-2.1.3.rc b/contrib/iconv/iconv.glibc-2.1.3.rc new file mode 100644 index 000000000..400329177 --- /dev/null +++ b/contrib/iconv/iconv.glibc-2.1.3.rc @@ -0,0 +1 @@ +iconv-hook ISO-8859-1 ANSI_X3.4-1968 diff --git a/contrib/iconv/iconv.glibc-2.1.90.rc b/contrib/iconv/iconv.glibc-2.1.90.rc new file mode 100644 index 000000000..3ba121e16 --- /dev/null +++ b/contrib/iconv/iconv.glibc-2.1.90.rc @@ -0,0 +1 @@ +iconv-hook ASCII ANSI_X3.4-1968 diff --git a/contrib/iconv/iconv.hpux-10.01.rc b/contrib/iconv/iconv.hpux-10.01.rc new file mode 100644 index 000000000..adf5e1933 --- /dev/null +++ b/contrib/iconv/iconv.hpux-10.01.rc @@ -0,0 +1,15 @@ +iconv-hook EUC-CN hp15CN +iconv-hook EUC-TW eucTW +iconv-hook HP-ARABIC8 arabic8 +iconv-hook HP-GREEK8 greek8 +iconv-hook HP-HEBREW8 hebrew8 +iconv-hook HP-ROMAN8 roman8 +iconv-hook HP-TURKISH8 turkish8 +iconv-hook ISO-8859-1 iso88591 +iconv-hook ISO-8859-2 iso88592 +iconv-hook ISO-8859-5 iso88595 +iconv-hook ISO-8859-6 iso88596 +iconv-hook ISO-8859-7 iso88597 +iconv-hook ISO-8859-8 iso88598 +iconv-hook ISO-8859-9 iso88599 +iconv-hook TIS-620 tis620 diff --git a/contrib/iconv/iconv.hpux-10.20.rc b/contrib/iconv/iconv.hpux-10.20.rc new file mode 100644 index 000000000..38bc1a137 --- /dev/null +++ b/contrib/iconv/iconv.hpux-10.20.rc @@ -0,0 +1,15 @@ +iconv-hook HP-ARABIC8 arabic8 +iconv-hook HP-GREEK8 greek8 +iconv-hook HP-HEBREW8 hebrew8 +iconv-hook HP-ROMAN8 roman8 +iconv-hook HP-TURKISH8 turkish8 +iconv-hook ISO-8859-15 iso885915 +iconv-hook ISO-8859-1 iso88591 +iconv-hook ISO-8859-2 iso88592 +iconv-hook ISO-8859-5 iso88595 +iconv-hook ISO-8859-6 iso88596 +iconv-hook ISO-8859-7 iso88597 +iconv-hook ISO-8859-8 iso88598 +iconv-hook ISO-8859-9 iso88599 +iconv-hook TIS-620 tis620 +iconv-hook UTF-8 utf8 diff --git a/contrib/iconv/iconv.hpux-11.00.rc b/contrib/iconv/iconv.hpux-11.00.rc new file mode 100644 index 000000000..81bda2ffd --- /dev/null +++ b/contrib/iconv/iconv.hpux-11.00.rc @@ -0,0 +1,21 @@ +iconv-hook BIG5 big5 +iconv-hook EUC-CN hp15CN +iconv-hook EUC-JP eucJP +iconv-hook EUC-KR eucKR +iconv-hook EUC-TW eucTW +iconv-hook HP-ARABIC8 arabic8 +iconv-hook HP-GREEK8 greek8 +iconv-hook HP-HEBREW8 hebrew8 +iconv-hook HP-KANA8 kana8 +iconv-hook HP-ROMAN8 roman8 +iconv-hook HP-TURKISH8 turkish8 +iconv-hook ISO-8859-15 iso885915 +iconv-hook ISO-8859-1 iso88591 +iconv-hook ISO-8859-2 iso88592 +iconv-hook ISO-8859-5 iso88595 +iconv-hook ISO-8859-6 iso88596 +iconv-hook ISO-8859-7 iso88597 +iconv-hook ISO-8859-8 iso88598 +iconv-hook ISO-8859-9 iso88599 +iconv-hook TIS-620 tis620 +iconv-hook UTF-8 utf8 diff --git a/contrib/iconv/iconv.irix-6.5.rc b/contrib/iconv/iconv.irix-6.5.rc new file mode 100644 index 000000000..4cdba041f --- /dev/null +++ b/contrib/iconv/iconv.irix-6.5.rc @@ -0,0 +1,9 @@ +iconv-hook EUC-CN eucCN +iconv-hook EUC-JP eucJP +iconv-hook EUC-KR eucKR +iconv-hook EUC-TW eucTW +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-9 ISO8859-9 diff --git a/contrib/iconv/iconv.osf1-4.0a.rc b/contrib/iconv/iconv.osf1-4.0a.rc new file mode 100644 index 000000000..3e4bbddfa --- /dev/null +++ b/contrib/iconv/iconv.osf1-4.0a.rc @@ -0,0 +1,3 @@ +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-9 ISO8859-9 diff --git a/contrib/iconv/iconv.osf1-4.0d.rc b/contrib/iconv/iconv.osf1-4.0d.rc new file mode 100644 index 000000000..837b02f8a --- /dev/null +++ b/contrib/iconv/iconv.osf1-4.0d.rc @@ -0,0 +1,4 @@ +iconv-hook CP850 cp850 +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-9 ISO8859-9 diff --git a/contrib/iconv/iconv.solaris-2.4.rc b/contrib/iconv/iconv.solaris-2.4.rc new file mode 100644 index 000000000..7981bf043 --- /dev/null +++ b/contrib/iconv/iconv.solaris-2.4.rc @@ -0,0 +1 @@ +iconv-hook bug diff --git a/contrib/iconv/iconv.solaris-2.5.1.rc b/contrib/iconv/iconv.solaris-2.5.1.rc new file mode 100644 index 000000000..673e46b82 --- /dev/null +++ b/contrib/iconv/iconv.solaris-2.5.1.rc @@ -0,0 +1 @@ +iconv-hook ISO-8859-1 ISO8859-1 diff --git a/contrib/iconv/iconv.solaris-2.6-cjk.rc b/contrib/iconv/iconv.solaris-2.6-cjk.rc new file mode 100644 index 000000000..d0cb0b2cb --- /dev/null +++ b/contrib/iconv/iconv.solaris-2.6-cjk.rc @@ -0,0 +1,11 @@ +iconv-hook EUC-CN gb2312 +iconv-hook EUC-JP eucJP +iconv-hook EUC-KR 5601 +iconv-hook EUC-TW cns11643 +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-4 ISO8859-4 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-9 ISO8859-9 +iconv-hook Shift_JIS PCK diff --git a/contrib/iconv/iconv.solaris-2.6.rc b/contrib/iconv/iconv.solaris-2.6.rc new file mode 100644 index 000000000..8ecdb4d5d --- /dev/null +++ b/contrib/iconv/iconv.solaris-2.6.rc @@ -0,0 +1,6 @@ +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-4 ISO8859-4 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-9 ISO8859-9 diff --git a/contrib/iconv/iconv.solaris-2.7.rc b/contrib/iconv/iconv.solaris-2.7.rc new file mode 100644 index 000000000..e4850b152 --- /dev/null +++ b/contrib/iconv/iconv.solaris-2.7.rc @@ -0,0 +1,12 @@ +iconv-hook ASCII 646 +iconv-hook ISO-8859-15 ISO8859-15 +iconv-hook ISO-8859-1 ISO8859-1 +iconv-hook ISO-8859-2 ISO8859-2 +iconv-hook ISO-8859-4 ISO8859-4 +iconv-hook ISO-8859-5 ISO8859-5 +iconv-hook ISO-8859-6 ISO8859-6 +iconv-hook ISO-8859-7 ISO8859-7 +iconv-hook ISO-8859-8 ISO8859-8 +iconv-hook ISO-8859-9 ISO8859-9 +iconv-hook KOI8-R koi8-r +iconv-hook TIS-620 TIS620.2533 diff --git a/contrib/iconv/make.sh b/contrib/iconv/make.sh new file mode 100755 index 000000000..777d00260 --- /dev/null +++ b/contrib/iconv/make.sh @@ -0,0 +1,25 @@ +#!/bin/sh -- + +# +# Create sample configuration files from the tables contained with libiconv. +# Copyright (C) 2001 Thomas Roessler +# +# This ugly shell script is free software; you can distribute and/or modify +# it under the terms of the GNU General Public License version 2 or later. +# + +LIBICONV="$1" +test -d $LIBICONV/libcharset/tools || { + echo "Sorry, I can't find libiconv's source!" >&2 ; + exit 1 ; +} + +for f in $LIBICONV/libcharset/tools/* ; do + rm -f tmp.rc. + ( head -3 $f | grep -q 'locale name.*locale charmap.*locale_charset' ) && ( + sed '1,/^$/d' $f | awk '($4 != $3) { printf ("iconv-hook %s %s\n", $4, $3); }' | \ + sed -e 's/^iconv-hook SJIS /iconv-hook Shift_JIS /gi' | + sort -u > tmp.rc ) + test -s tmp.rc && mv tmp.rc iconv.`basename $f`.rc + rm -f tmp.rc +done diff --git a/doc/Makefile.in b/doc/Makefile.in index cec97cc79..1f0132f8b 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -68,16 +68,16 @@ try-html: ../makedoc try-txt: ../makedoc test -f manual.txt || $(MAKE) manual.txt || cp $(srcdir)/manual.txt ./ -install: all +install: all instdoc $(top_srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/man1 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/man5 - $(INSTALL) -m 644 $(srcdir)/mutt.man $(DESTDIR)$(mandir)/man1/mutt.1 - $(INSTALL) -m 644 $(srcdir)/muttbug.man $(DESTDIR)$(mandir)/man1/flea.1 + ./instdoc $(srcdir)/mutt.man $(DESTDIR)$(mandir)/man1/mutt.1 + ./instdoc $(srcdir)/muttbug.man $(DESTDIR)$(mandir)/man1/flea.1 echo ".so $(mandir)/man1/flea.1" > $(DESTDIR)$(mandir)/man1/muttbug.1 - $(INSTALL) -m 644 $(srcdir)/dotlock.man \ + ./instdoc $(srcdir)/dotlock.man \ $(DESTDIR)$(mandir)/man1/mutt_dotlock.1 - $(INSTALL) -m 644 muttrc.man $(DESTDIR)$(mandir)/man5/muttrc.5 - $(INSTALL) -m 644 $(srcdir)/mbox.man $(DESTDIR)$(mandir)/man5/mbox.5 + ./instdoc muttrc.man $(DESTDIR)$(mandir)/man5/muttrc.5 + ./instdoc $(srcdir)/mbox.man $(DESTDIR)$(mandir)/man5/mbox.5 $(top_srcdir)/mkinstalldirs $(DESTDIR)$(docdir) for f in $(srcdir_DOCFILES) ; do \ $(INSTALL) -m 644 $(srcdir)/$$f $(DESTDIR)$(docdir) ; \ @@ -126,6 +126,10 @@ Makefile: Makefile.in ../config.status cd .. \ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status +instdoc.sh: instdoc.sh.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: Makefile $(DISTFILES) for file in $(DISTFILES) ; do \ diff --git a/doc/instdoc.sh.in b/doc/instdoc.sh.in new file mode 100644 index 000000000..953d92026 --- /dev/null +++ b/doc/instdoc.sh.in @@ -0,0 +1,25 @@ +#!/bin/sh -- + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +bindir=@bindir@ +libdir=@libdir@ +mandir=@mandir@ +sharedir=@sharedir@ +srcdir=@srcdir@ +docdir=@docdir@ +includedir=@includedir@ +top_srcdir=@top_srcdir@ +top_builddir=.. + +SOURCE="$1" +TARGET="$2" + + +rm -f "$TARGET" + +sed -e "s;/usr/local/bin/;$bindir/;g" \ + -e "s;/usr/local/doc/mutt/;$docdir/;g" \ + "$SOURCE" > $TARGET + +chmod 644 "$TARGET" diff --git a/doc/manual.sgml.head b/doc/manual.sgml.head index 635f16a4b..bda784518 100644 --- a/doc/manual.sgml.head +++ b/doc/manual.sgml.head @@ -918,10 +918,17 @@ sequence. Defining aliases for character sets