Index: ObsoleteFiles.inc =================================================================== --- ObsoleteFiles.inc +++ ObsoleteFiles.inc @@ -52,6 +52,31 @@ # xargs -n1 | sort | uniq -d; # done +# 20220222: new iconv encoder trait added +OLD_LIBS+=usr/lib/i18n/libBIG5.so.4 +OLD_LIBS+=usr/lib/i18n/libDECHanyu.so.4 +OLD_LIBS+=usr/lib/i18n/libEUC.so.4 +OLD_LIBS+=usr/lib/i18n/libEUCTW.so.4 +OLD_LIBS+=usr/lib/i18n/libGBK2K.so.4 +OLD_LIBS+=usr/lib/i18n/libHZ.so.4 +OLD_LIBS+=usr/lib/i18n/libISO2022.so.4 +OLD_LIBS+=usr/lib/i18n/libJOHAB.so.4 +OLD_LIBS+=usr/lib/i18n/libMSKanji.so.4 +OLD_LIBS+=usr/lib/i18n/libUES.so.4 +OLD_LIBS+=usr/lib/i18n/libUTF1632.so.4 +OLD_LIBS+=usr/lib/i18n/libUTF7.so.4 +OLD_LIBS+=usr/lib/i18n/libUTF8.so.4 +OLD_LIBS+=usr/lib/i18n/libVIQR.so.4 +OLD_LIBS+=usr/lib/i18n/libZW.so.4 +OLD_LIBS+=usr/lib/i18n/libiconv_none.so.4 +OLD_LIBS+=usr/lib/i18n/libiconv_std.so.4 +OLD_LIBS+=usr/lib/i18n/libmapper_646.so.4 +OLD_LIBS+=usr/lib/i18n/libmapper_none.so.4 +OLD_LIBS+=usr/lib/i18n/libmapper_parallel.so.4 +OLD_LIBS+=usr/lib/i18n/libmapper_serial.so.4 +OLD_LIBS+=usr/lib/i18n/libmapper_std.so.4 +OLD_LIBS+=usr/lib/i18n/libmapper_zone.so.4 + # 20220210: unwind.h moved to /usr/include OLD_FILES+=usr/include/c++/v1/unwind-arm.h OLD_FILES+=usr/include/c++/v1/unwind-itanium.h Index: lib/libc/iconv/citrus_module.c =================================================================== --- lib/libc/iconv/citrus_module.c +++ lib/libc/iconv/citrus_module.c @@ -106,7 +106,7 @@ #include #include -#define I18NMODULE_MAJOR 4 +#define I18NMODULE_MAJOR 5 #include "citrus_namespace.h" #include "citrus_bcs.h" Index: lib/libc/iconv/citrus_namespace.h =================================================================== --- lib/libc/iconv/citrus_namespace.h +++ lib/libc/iconv/citrus_namespace.h @@ -223,6 +223,7 @@ #define _stdenc_wctomb _citrus_stdenc_wctomb #define _stdenc_put_state_reset _citrus_stdenc_put_state_reset #define _stdenc_get_state_size _citrus_stdenc_get_state_size +#define _stdenc_get_mb_cur_min _citrus_stdenc_get_mb_cur_min #define _stdenc_get_mb_cur_max _citrus_stdenc_get_mb_cur_max #define _stdenc_get_state_desc _citrus_stdenc_get_state_desc #define _STDENC_SDID_GENERIC _CITRUS_STDENC_SDID_GENERIC Index: lib/libc/iconv/citrus_stdenc.h =================================================================== --- lib/libc/iconv/citrus_stdenc.h +++ lib/libc/iconv/citrus_stdenc.h @@ -115,6 +115,20 @@ return (ce->ce_traits->et_state_size); } +static __inline size_t +_citrus_stdenc_get_mb_cur_min(struct _citrus_stdenc *ce) +{ + + return (ce->ce_traits->et_mb_cur_min); +} + +static __inline size_t +_citrus_stdenc_get_mb_cur_max(struct _citrus_stdenc *ce) +{ + + return (ce->ce_traits->et_mb_cur_max); +} + static __inline int _citrus_stdenc_get_state_desc(struct _citrus_stdenc * __restrict ce, void * __restrict ps, int id, Index: lib/libc/iconv/citrus_stdenc_local.h =================================================================== --- lib/libc/iconv/citrus_stdenc_local.h +++ lib/libc/iconv/citrus_stdenc_local.h @@ -149,6 +149,8 @@ /* version 0x00000001 */ size_t et_state_size; size_t et_mb_cur_max; + /* version 0x00000002 */ + size_t et_mb_cur_min; }; struct _citrus_stdenc { Index: lib/libc/iconv/citrus_stdenc_template.h =================================================================== --- lib/libc/iconv/citrus_stdenc_template.h +++ lib/libc/iconv/citrus_stdenc_template.h @@ -49,6 +49,11 @@ #define _CE_TO_EI(_ce_) (_TO_EI((_ce_)->ce_closure)) #define _TO_STATE(_ps_) ((_ENCODING_STATE*)(_ps_)) +#ifndef _ENCODING_MB_CUR_MIN +/* Assume one byte minimum unless otherwise specified. */ +#define _ENCODING_MB_CUR_MIN(_ei_) 1 +#endif + /* ---------------------------------------------------------------------- * templates for public functions */ @@ -87,6 +92,7 @@ ce->ce_closure = ei; et->et_state_size = sizeof(_ENCODING_STATE); et->et_mb_cur_max = _ENCODING_MB_CUR_MAX(_CE_TO_EI(ce)); + et->et_mb_cur_min = _ENCODING_MB_CUR_MIN(_CE_TO_EI(ce)); return (0); } Index: lib/libiconv_modules/Makefile.inc =================================================================== --- lib/libiconv_modules/Makefile.inc +++ lib/libiconv_modules/Makefile.inc @@ -2,7 +2,7 @@ .PATH: ${SRCTOP}/lib/libc/iconv -SHLIB_MAJOR= 4 +SHLIB_MAJOR= 5 CFLAGS+= -I${SRCTOP}/lib/libc/iconv CFLAGS+= -Dbool=_Bool Index: lib/libiconv_modules/UTF1632/citrus_utf1632.c =================================================================== --- lib/libiconv_modules/UTF1632/citrus_utf1632.c +++ lib/libiconv_modules/UTF1632/citrus_utf1632.c @@ -77,6 +77,7 @@ typedef struct { int preffered_endian; unsigned int cur_max; + unsigned int cur_min; uint32_t mode; } _UTF1632EncodingInfo; @@ -84,6 +85,7 @@ #define _ENCODING_INFO _UTF1632EncodingInfo #define _ENCODING_STATE _UTF1632State #define _ENCODING_MB_CUR_MAX(_ei_) ((_ei_)->cur_max) +#define _ENCODING_MB_CUR_MIN(_ei_) ((_ei_)->cur_min) #define _ENCODING_IS_STATE_DEPENDENT 0 #define _STATE_NEEDS_EXPLICIT_INIT(_ps_) 0 @@ -390,6 +392,7 @@ parse_variable(ei, var, lenvar); + ei->cur_min = ((ei->mode&_MODE_UTF32) == 0) ? 2 : 4; ei->cur_max = ((ei->mode&_MODE_UTF32) == 0) ? 6 : 8; /* 6: endian + surrogate */ /* 8: endian + normal */ Index: lib/libiconv_modules/UTF8/citrus_utf8.c =================================================================== --- lib/libiconv_modules/UTF8/citrus_utf8.c +++ lib/libiconv_modules/UTF8/citrus_utf8.c @@ -125,6 +125,7 @@ #define _FUNCNAME(m) _citrus_UTF8_##m #define _ENCODING_INFO _UTF8EncodingInfo #define _ENCODING_STATE _UTF8State +#define _ENCODING_MB_CUR_MIN(_ei_) 1 #define _ENCODING_MB_CUR_MAX(_ei_) 6 #define _ENCODING_IS_STATE_DEPENDENT 0 #define _STATE_NEEDS_EXPLICIT_INIT(_ps_) 0 Index: tools/build/mk/OptionalObsoleteFiles.inc =================================================================== --- tools/build/mk/OptionalObsoleteFiles.inc +++ tools/build/mk/OptionalObsoleteFiles.inc @@ -2441,6 +2441,52 @@ OLD_FILES+=usr/bin/mkesdb OLD_FILES+=usr/include/_libiconv_compat.h OLD_FILES+=usr/include/iconv.h +OLD_LIBS+=usr/lib/i18n/libBIG5.so.5 +OLD_FILES+=usr/lib/i18n/libBIG5.so +OLD_LIBS+=usr/lib/i18n/libDECHanyu.so.5 +OLD_FILES+=usr/lib/i18n/libDECHanyu.so +OLD_LIBS+=usr/lib/i18n/libEUC.so.5 +OLD_FILES+=usr/lib/i18n/libEUC.so +OLD_LIBS+=usr/lib/i18n/libEUCTW.so.5 +OLD_FILES+=usr/lib/i18n/libEUCTW.so +OLD_LIBS+=usr/lib/i18n/libGBK2K.so.5 +OLD_FILES+=usr/lib/i18n/libGBK2K.so +OLD_LIBS+=usr/lib/i18n/libHZ.so.5 +OLD_FILES+=usr/lib/i18n/libHZ.so +OLD_LIBS+=usr/lib/i18n/libISO2022.so.5 +OLD_FILES+=usr/lib/i18n/libISO2022.so +OLD_LIBS+=usr/lib/i18n/libJOHAB.so.5 +OLD_FILES+=usr/lib/i18n/libJOHAB.so +OLD_LIBS+=usr/lib/i18n/libMSKanji.so.5 +OLD_FILES+=usr/lib/i18n/libMSKanji.so +OLD_LIBS+=usr/lib/i18n/libUES.so.5 +OLD_FILES+=usr/lib/i18n/libUES.so +OLD_LIBS+=usr/lib/i18n/libUTF1632.so.5 +OLD_FILES+=usr/lib/i18n/libUTF1632.so +OLD_LIBS+=usr/lib/i18n/libUTF7.so.5 +OLD_FILES+=usr/lib/i18n/libUTF7.so +OLD_LIBS+=usr/lib/i18n/libUTF8.so.5 +OLD_FILES+=usr/lib/i18n/libUTF8.so +OLD_LIBS+=usr/lib/i18n/libVIQR.so.5 +OLD_FILES+=usr/lib/i18n/libVIQR.so +OLD_LIBS+=usr/lib/i18n/libZW.so.5 +OLD_FILES+=usr/lib/i18n/libZW.so +OLD_LIBS+=usr/lib/i18n/libiconv_none.so.5 +OLD_FILES+=usr/lib/i18n/libiconv_none.so +OLD_LIBS+=usr/lib/i18n/libiconv_std.so.5 +OLD_FILES+=usr/lib/i18n/libiconv_std.so +OLD_LIBS+=usr/lib/i18n/libmapper_646.so.5 +OLD_FILES+=usr/lib/i18n/libmapper_646.so +OLD_LIBS+=usr/lib/i18n/libmapper_none.so.5 +OLD_FILES+=usr/lib/i18n/libmapper_none.so +OLD_LIBS+=usr/lib/i18n/libmapper_parallel.so.5 +OLD_FILES+=usr/lib/i18n/libmapper_parallel.so +OLD_LIBS+=usr/lib/i18n/libmapper_serial.so.5 +OLD_FILES+=usr/lib/i18n/libmapper_serial.so +OLD_LIBS+=usr/lib/i18n/libmapper_std.so.5 +OLD_FILES+=usr/lib/i18n/libmapper_std.so +OLD_LIBS+=usr/lib/i18n/libmapper_zone.so.5 +OLD_FILES+=usr/lib/i18n/libmapper_zone.so OLD_FILES+=usr/share/man/man1/iconv.1.gz OLD_FILES+=usr/share/man/man1/mkcsmapper.1.gz OLD_FILES+=usr/share/man/man1/mkesdb.1.gz @@ -2454,6 +2500,7 @@ OLD_FILES+=usr/share/man/man3/iconv_open_into.3.gz OLD_FILES+=usr/share/man/man3/iconvctl.3.gz OLD_FILES+=usr/share/man/man3/iconvlist.3.gz +OLD_DIRS+=usr/lib/i18n OLD_DIRS+=usr/share/i18n OLD_DIRS+=usr/share/i18n/esdb OLD_DIRS+=usr/share/i18n/esdb/ISO-2022