Index: bin/csh/Makefile diff -u bin/csh/Makefile.orig bin/csh/Makefile --- bin/csh/Makefile.orig Mon Apr 25 04:44:43 2005 +++ bin/csh/Makefile Wed Feb 15 00:20:08 2006 @@ -68,12 +68,30 @@ NLSLINKS_it_IT.ISO8859-1= it_CH.ISO8859-1 it_CH.ISO8859-15 it_IT.ISO8859-15 NLSLINKS_es_ES.ISO8859-1= es_ES.ISO8859-15 +.if defined(NO_NLS_CATALOGS) || defined(RESCUE) +CFLAGS+= -DNO_NLS_CATALOGS +.else +CFLAGS+= -DHAVE_ICONV +SRCS+= iconv_stub.c +# Folloing links can be installed from ports/shells/tcsh_nls: +# NLSLINKS_de_DE.ISO8859-1 += de_AT.UTF-8 de_CH.UTF-8 de_DE.UTF-8 +# NLSLINKS_el_GR.ISO8859-7 = el_GR.UTF-8 +# NLSLINKS_es_ES.ISO8859-1 += es_ES.UTF-8 +# NLSLINKS_et_EE.ISO8859-15 = et_EE.UTF-8 +# NLSLINKS_fi_FI.ISO8859-1 += fi_FI.UTF-8 +# NLSLINKS_fr_FR.ISO8859-1 += fr_BE.UTF-8 fr_CA.UTF-8 fr_CH.UTF-8 fr_FR.UTF-8 +# NLSLINKS_it_IT.ISO8859-1 += it_CH.UTF-8 it_IT.UTF-8 +# NLSLINKS_ja_JP.eucJP = ja_JP.SJIS ja_JP.UTF-8 +# NLSLINKS_ru_RU.KOI8-R = ru_RU.CP1251 ru_RU.CP866 ru_RU.ISO8859-5 ru_RU.UTF-8 +# NLSLINKS_uk_UA.KOI8-U = uk_UA.ISO8859-5 uk_UA.UTF-8 +.endif + NLSNAME= tcsh .for catalog in ${CATALOGS} NLS+= ${catalog:C/.*://} NLSSRCDIR_${catalog:C/.*://}= ${TCSHDIR}/nls/${catalog:C/:.*//} -NLSSRCFILES_${catalog:C/.*://}!= cd ${NLSSRCDIR_${catalog:C/.*://}}; echo set[0-9]* +NLSSRCFILES_${catalog:C/.*://}!= cd ${NLSSRCDIR_${catalog:C/.*://}}; echo charset set[0-9]* .endfor csh.1: tcsh.man Index: bin/csh/config.h diff -u bin/csh/config.h.orig bin/csh/config.h --- bin/csh/config.h.orig Thu May 5 05:21:57 2005 +++ bin/csh/config.h Tue Feb 14 19:05:07 2006 @@ -205,3 +205,7 @@ #include "config_p.h" #include "config_f.h" + +#ifndef NO_NLS_CATALOGS +#define NLS_CATALOGS +#endif Index: bin/csh/config_p.h diff -u bin/csh/config_p.h.orig bin/csh/config_p.h Index: bin/csh/iconv.h diff -u /dev/null bin/csh/iconv.h --- /dev/null Tue Feb 14 19:44:01 2006 +++ bin/csh/iconv.h Tue Feb 14 16:05:17 2006 @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2006 Hajimu UMEMOTO + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ICONV_H_ +#define _ICONV_H_ + +typedef void *iconv_t; +typedef size_t dl_iconv_t(iconv_t, const char **, size_t *, char **, size_t *); +typedef int dl_iconv_close_t(iconv_t); + +extern iconv_t dl_iconv_open(const char *, const char *); +extern dl_iconv_t *dl_iconv; +extern dl_iconv_close_t *dl_iconv_close; + +#define iconv_open dl_iconv_open +#define iconv dl_iconv +#define iconv_close dl_iconv_close + +#endif /* !_ICONV_H_ */ Index: bin/csh/iconv_stub.c diff -u -p /dev/null bin/csh/iconv_stub.c --- /dev/null Tue Feb 14 19:44:01 2006 +++ bin/csh/iconv_stub.c Tue Feb 14 17:40:21 2006 @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2006 Hajimu UMEMOTO + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#include +#include + +#include "iconv.h" + +#undef iconv_open +#undef iconv +#undef iconv_close + +#define ICONVLIB "libiconv.so" +#define ICONV_ENGINE "iconv" +#define ICONV_OPEN "iconv_open" +#define ICONV_CLOSE "iconv_close" + +typedef iconv_t iconv_open_t(const char *, const char *); + +dl_iconv_t *dl_iconv; +dl_iconv_close_t *dl_iconv_close; + +static int initialized; +static void *iconvlib; +static iconv_open_t *iconv_open; + +iconv_t +dl_iconv_open(const char *tocode, const char *fromcode) +{ + if (initialized) { + if (iconvlib == NULL) + return (iconv_t)-1; + } else { + initialized = 1; + iconvlib = dlopen(ICONVLIB, RTLD_LAZY | RTLD_GLOBAL); + if (iconvlib == NULL) + return (iconv_t)-1; + iconv_open = (iconv_open_t *)dlfunc(iconvlib, ICONV_OPEN); + dl_iconv = (dl_iconv_t *)dlfunc(iconvlib, ICONV_ENGINE); + dl_iconv_close = (dl_iconv_close_t *)dlfunc(iconvlib, + ICONV_CLOSE); + } + return iconv_open(tocode, fromcode); +} Index: contrib/tcsh/nls/C/charset diff -u /dev/null contrib/tcsh/nls/C/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/C/charset Sun Jul 25 06:52:49 2004 @@ -0,0 +1,3 @@ +$ codeset=US-ASCII +$set 255 +1 US-ASCII Index: contrib/tcsh/nls/et/charset diff -u /dev/null contrib/tcsh/nls/et/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/et/charset Sun Jul 25 06:52:49 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-1 +$set 255 +1 ISO-8859-1 Index: contrib/tcsh/nls/finnish/charset diff -u /dev/null contrib/tcsh/nls/finnish/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/finnish/charset Sun Jul 25 06:52:49 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-1 +$set 255 +1 ISO-8859-1 Index: contrib/tcsh/nls/french/charset diff -u /dev/null contrib/tcsh/nls/french/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/french/charset Sun Jul 25 06:52:50 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-1 +$set 255 +1 ISO-8859-1 Index: contrib/tcsh/nls/german/charset diff -u /dev/null contrib/tcsh/nls/german/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/german/charset Sun Jul 25 06:52:50 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-1 +$set 255 +1 ISO-8859-1 Index: contrib/tcsh/nls/greek/charset diff -u /dev/null contrib/tcsh/nls/greek/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/greek/charset Sun Jul 25 06:52:50 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-7 +$set 255 +1 ISO-8859-7 Index: contrib/tcsh/nls/italian/charset diff -u /dev/null contrib/tcsh/nls/italian/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/italian/charset Sun Jul 25 06:52:50 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-1 +$set 255 +1 ISO-8859-1 Index: contrib/tcsh/nls/ja/charset diff -u /dev/null contrib/tcsh/nls/ja/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/ja/charset Sun Jul 25 06:52:51 2004 @@ -0,0 +1,3 @@ +$ codeset=EUC-JP +$set 255 +1 EUC-JP Index: contrib/tcsh/nls/pl/charset diff -u /dev/null contrib/tcsh/nls/pl/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/pl/charset Sun Nov 21 13:36:11 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-2 +$set 255 +1 ISO-8859-2 Index: contrib/tcsh/nls/russian/charset diff -u /dev/null contrib/tcsh/nls/russian/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/russian/charset Sun Nov 21 13:36:11 2004 @@ -0,0 +1,3 @@ +$ codeset=KOI8-R +$set 255 +1 KOI8-R Index: contrib/tcsh/nls/spanish/charset diff -u /dev/null contrib/tcsh/nls/spanish/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/spanish/charset Sun Jul 25 06:52:51 2004 @@ -0,0 +1,3 @@ +$ codeset=ISO-8859-1 +$set 255 +1 ISO-8859-1 Index: contrib/tcsh/nls/ukrainian/charset diff -u /dev/null contrib/tcsh/nls/ukrainian/charset --- /dev/null Tue Feb 14 21:36:11 2006 +++ contrib/tcsh/nls/ukrainian/charset Sun Nov 21 13:36:11 2004 @@ -0,0 +1,3 @@ +$ codeset=KOI8-U +$set 255 +1 KOI8-U