| History log of /src/usr.bin/mklocale/yacc.y |
| Revision | | Date | Author | Comments |
| 1.36 |
| 05-Jan-2024 |
rin | mklocale(1): Add range check for TODIGIT, rather than disabling it
PR lib/57798
Digit value specified by TODIGIT is storaged as lowest 8 bits of _RuneType, see lib/libc/locale/runetype_file.h:
https://nxr.netbsd.org/xref/src/lib/libc/locale/runetype_file.h#56
The symptom reported in the PR is due to missing range check for this value; values of 256 and above were mistakenly treated as other flag bits in _RuneType.
For example, U+5146 has numerical value 1000,000,000,000 == 0xe8d4a51000 where __BITS(30, 31) == _RUNETYPE_SW3 are turned on. This is why wcwidth(3) returned 3 for this character.
This apparently affected not only character width, but also other attributes storaged in _RuneType.
IIUC, digit value attributes in _RuneType have never been utilized until now, but preserve these if digit fits within (0, 256). This should be safer for pulling this up into netbsd-10. Also, these attributes may be useful to implement some I18N features as suggested by uwe@ in the PR.
netbsd-[98] is not affected as these use old UTF-8 ctype definitions.
|
| 1.35 |
| 28-Dec-2023 |
rin | mklocale: XXX: Neglect TODIGIT at the moment
PR lib/57798
It was implemented with an assumption that all digit characters can be mapped to numerical values <= 255.
This is no longer true for Unicode, and results in, e.g., wrong return values of wcwidth(3) for U+5146 or U+16B60.
As a workaround, neglect TODIGIT for now, as done for OpenBSD: https://github.com/OpenBSD/src/commit/4efe9bdeb34
XXX At least netbsd-10 should be fixed, but it requires some tests.
|
| 1.34 |
| 13-Oct-2019 |
christos | branches: 1.34.8; use strlcpy instead of strncpy.
|
| 1.33 |
| 03-Sep-2016 |
dholland | branches: 1.33.14; __dead should come first; also remove more K&Risms.
|
| 1.32 |
| 03-Sep-2016 |
sevan | Remove K&R __P macros. Remove main() function prototype if present. Mark usage() as __dead if not already. Binaries generated with & without these patches were compared with diff -r.
|
| 1.31 |
| 13-Jun-2010 |
tnozaki | 1. split runetype_local.h -> runetype_file.h and remove renameing _Rune* -> _NBRune* namespace protection.
FreeBSD traditionaly exposes struct _Rune* in runetype.h which included by ctype.h. it may cause conflicting type error in our cross build process, former we use renaming namespace to avoid this problem, now i reworked more resonable way.
2. merge rune_local.h to runetype_local.h, and remove it. 3. split bsdctype.h -> bsdctype_{file,local}.h
|
| 1.30 |
| 12-Jun-2010 |
tnozaki | use _FileRune* instead of _Rune*.
|
| 1.29 |
| 22-May-2010 |
tnozaki | yacc.y: s/_CTYPE_NUM_CHARS/_CTYPE_CACHED_SIZE/ ldef.h: remove redundant include, ctype_local.h is already included by runetype_local.h.
|
| 1.28 |
| 22-May-2010 |
tnozaki | 1. hide _CTYPE_PRIVATE section in ctype.h, move them to private header ctype_local.h. 2. do not use _CTYPE_NUM_CHARS macro to read data from LC_CTYPE(old BSDCTYPE style) database. because 1<<CHAR_BIT is MD, so i added MI macro _CTYPE_CACHE_SIZE(1<<8). 3. remove _NB_CACHED_RUNE macro, use _CTYPE_CACHE_SIZE instead.
|
| 1.27 |
| 05-Jan-2009 |
tnozaki | 1. reworking PR lib/40317: libnbcompat already contains empty fparseln.lo so previous fix doesn't work correctly. i've just added broken fparseln check to configure script.
2. reworking cross build breakage under FreeBSD/MacOS X. FreeBSD/MacOS X still have public /usr/include/runetype.h derived from 4.4BSD-Lite. so i renamed out private header from src/lib/libc/locale/runetype.h to src/lib/libc/locale/runetype_local.h to solve this problems.
3. fix build breakage when CITRUS=no was set.
|
| 1.26 |
| 02-Jan-2009 |
tnozaki | 1. fixes PR lib/40317, don't use libc's fparseln(3). it is non-portable function, toolchain should link it yourself.
2. fixes crossbuild breakage reported by Chiristoph Egger on current-user, FreeBSD and MacOS X still make Rune* as public API in their ctype.h. so added namespace protection NB* by including src/lib/libc/locale/rune.h instead of src/lib/libc/locale/runetype.h.
|
| 1.25 |
| 02-Jan-2009 |
tnozaki | Fixes PR lib/39662, shortcomings in LC_{MONETARY,NUMERIC,TIME,MESSAGES} db format. ok'ed by core and releng. (thanks for agc@, snj@ and i'm sorry for long time patience).
[libc] - localeio.[ch] and lc*.[ch] in src/lib/libc/locale was replaced by new locale-db implementation using citrus_db backend, see src/lib/libc/citrus/citrus_lc_*.[ch]. - add citrus_bcs_strtou?l.c. don't use strtou?l locale implementation internally, because they're locale-aware function. - add some stubs for multi-locale issue, see {current,global}_locale.c. - remove some obsolete file, setrunelocale.c, ___runetype_mb.c. - remove __savectype() from ctypeio.[ch].
[tools] - mklocale(1): add new option ``-t'' that generates new style LC_{MONETARY,NUMERIC,TIME,MESSAGES} locale-db format. - chrtbl(1): added ctypeio.[ch] for __savectype().
[locale-db] - added en_US.US-ASCII locale. - removed some shareable locale definition file: en_US.US-ASCII -> en_US.ISO8859-1, en_US.UTF-8 zh_CN.eucCN -> zh_CN.GB18030 and more...see src/share/locale/*/Makefile. - remove obsoleted locale sr_YU, added new locale sr_ME, sr_RS. - change locale name ja_JP.ISO2022-JP* -> ja_JP.ISO-2022-JP* for X11's locale.alias file alignments. - fix regression test, wrong wcs?width(3), NAN/INF usage.
i tested release-build following arch: i386, amd64, hpc{mips,arm,sh}, sparc64, vax.
citrus_lc_*.[ch] also can read old-plain-text style locale-db. so that backward compatibility is keeped, but lc*.[ch] can't read new citrus_db'ed locale-db and localeio.c never check sanity, so forward compatibility is broken ;-<
old mklocale(1) doesn't know -t option, so you have to rebuild toolchain.
|
| 1.24 |
| 05-Jan-2004 |
jmmv | branches: 1.24.40; Homogenize usage messages: make the 'usage' word all lowercase, as this seems to be the most common practice in our tree.
|
| 1.23 |
| 27-Oct-2003 |
lukem | Overhaul how `build.sh tools' are used:
* Rename "config.h" to "nbtool_config.h" and HAVE_CONFIG_H to HAVE_NBTOOL_CONFIG_H. This makes in more obvious in the source when we're using tools/compat/config.h versus "standard autoconf" config.h
* Consistently move the inclusion of nbtool_config.h to before <sys/cdefs.h> so that the former can provide __RCSID() (et al), and there's no need to protect those macros any more.
These changes should make it easier to "tool-ify" a program by adding: #if HAVE_NBTOOL_CONFIG_H #include "nbtool_config.h" #endif to the top of the source files (for the general case).
|
| 1.22 |
| 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22365, verified by myself.
|
| 1.21 |
| 14-Jul-2003 |
itojun | strdup is easier
|
| 1.20 |
| 12-May-2003 |
tshiozak | zero-clear the file structures, to fixate paddings. this change solves the illness pointed out by Nino Dehne in tech-userlevel list.
|
| 1.19 |
| 21-Apr-2003 |
bjh21 | This is a host tool, so check if __RCSID is defined before using it.
|
| 1.18 |
| 21-Apr-2003 |
christos | enable RCSID..
|
| 1.17 |
| 11-Mar-2003 |
tshiozak | changes for cross build on FreeBSD box. - rename some macros and types defined in runetype.h. - move declarations of some global symbols to rune.h from runetype.h. - make sure the target sources use rune.h and mklocale use runetype.h. I tested them on FreeBSD-4.6.2 box (./build.sh -m i386 tools).
|
| 1.16 |
| 10-Mar-2003 |
tshiozak | rename _CTYPE_x to _RUNETYPE_x for avoiding compile error on FreeBSD.
|
| 1.15 |
| 10-Mar-2003 |
tshiozak | some changes around mklocale: - clean up cpp directives. - stop including rune.h from mklocale. - stop using _BSD_RUNE_T macro. instead, use int32_t directly in runetype.h. - move _DEFAULT_INVALID_RUNE to runetype.h. These were for historical reason on porting rune from FreeBSD, but it seems that these are no longer reasonable but troublesome under the current NetBSD build system. additionally: - runetype.h -> locale/runetype.h in mklocale, because this might conflict to FreeBSD's one.
|
| 1.14 |
| 10-Mar-2003 |
tshiozak | revoke using PRIu32 macro and add fallback for UINT32_C macro, because these do not exist on rather older systems. XXX: I wonder someone will add them to tools/compat.
|
| 1.13 |
| 03-Mar-2003 |
tshiozak | use UINT32_C and PRIu32 macros instead of 0x...U and %u.
|
| 1.12 |
| 03-Mar-2003 |
tshiozak | sync with the last change of runetype.h; %ld -> %u.
|
| 1.11 |
| 27-Jan-2003 |
uwe | On FreeBSD host define _DONT_USE_CTYPE_INLINE_ before including ctype.h. We pull in our _RuneLocale, while the inlines are for the host _RuneLocale.
|
| 1.10 |
| 26-Apr-2002 |
bjh21 | branches: 1.10.2; Include <arpa/inet.h> for ntohl and htonl on POSIX systems. Also include its prerequisites for compiling on older NetBSD versions.
|
| 1.9 |
| 17-Mar-2002 |
tshiozak | refine i18n stuffs. - add libc/citrus directory. this directory contains the common stuffs not only for locale but also other facilities relating to i18n (e.g. iconv). - To keep the binary compatibility for the ctype modules easily, the interface between libc and the modules is simplified. - For the future integrated extension, module pool is renamed from "/usr/lib/runemodule" to "/usr/lib/i18n". In the future, this directory will contain the modules for "iconv", "collation", etc. - some cosmetic changes. - Bug fix for runetype.h; __attribute__((__packed__)) is placed at the wrong position and it is invalid unintentionally. But, the all members of the structures seem well-aligned. Thus, this bug causes no problem, hopefully.
HEADS UP: - /usr/lib/rumemodule is obsoleted. If you use the multibyte locales, you need to install /usr/lib/i18n/* from sys/lib/i18n_module . - The binary compatibility of /usr/share/locale/*/LC_CTYPE is probably kept. Perhaps, the bug fix about __packed__ mentioned above breaks the compatibility... Be careful especially on 64bit platforms.
|
| 1.8 |
| 31-Jan-2002 |
tv | Roll in fixes to permit cross-compiling from non-NetBSD hosts. This round has been tested on Solaris/x86 and Linux hosts.
* Add host tools cap_mkdb, ctags, m4, uudecode. * Protect __RCSID() and __COPYRIGHT() better. * Reduce the number of places that need to include "config.h", to keep sources closer to their "vanilla" versions. * Add more compat #defines and autoconf-checked functions.
|
| 1.7 |
| 29-Jan-2002 |
tv | Make almost all tools compile and run properly on non-NetBSD hosts. (In particular, most tools now run correctly on Solaris 7.)
|
| 1.6 |
| 20-Oct-2001 |
jmc | Convert default invalid to to use the #define now available in rune.h
|
| 1.5 |
| 28-Jan-2001 |
thorpej | If the new locale's variable data is length 0, don't bother trying to write it. fwrite(3) is a noop in that case anyway, and the error detection logic here was screwing up on the 0 return from fwrite(3) (that return value is mandated by SUSv2 for size or count of 0).
While here, improve the error messgages given to the user.
|
| 1.4 |
| 28-Jan-2001 |
thorpej | Make this build with WARNS=2.
|
| 1.3 |
| 22-Dec-2000 |
itojun | cleanup #if around __RCS
|
| 1.2 |
| 22-Dec-2000 |
itojun | populate citrus xpg4dl locale definitions into /usr/share. if there are any mistakes, please report (i only speak English/Japanese). currently, only singlebyte locales are usable.
TODO: enable multibyte handler in libc - there still are few design discussions, but we are almost ready.
|
| 1.1 |
| 28-May-2000 |
minoura | branches: 1.1.2; file yacc.y was initially added on branch minoura-xpg4dl.
|
| 1.1.2.2 |
| 23-Jun-2000 |
minoura | Import of most recent XPG4DL dated 2000.06.23.
|
| 1.1.2.1 |
| 28-May-2000 |
minoura | Citrus Project XPG4DL, an implementation of I18N (locale) framework, is imported.
|
| 1.10.2.1 |
| 23-Jul-2004 |
tron | Apply patch (request by dbj in ticket 1723): Fix building the netbsd-1-6 branch under Darwin/MacOS.
|
| 1.24.40.3 |
| 15-Jan-2009 |
snj | Pull up following revision(s) (requested by jmcneill in ticket #270): lib/libc/locale/fix_grouping.c: revision 1.3 lib/libc/locale/iswctype_sb.c: revision 1.7 lib/libc/locale/rune.h: revision 1.14 lib/libc/locale/runetype.h: file removal lib/libc/locale/runetype_local.h: revision 1.1 lib/libc/stdio/fparseln.c: revision 1.8 lib/libc/string/wcscmp.c: revision 1.7 lib/libc/string/wcsncmp.c: revision 1.7 lib/libc/string/wmemcmp.c: revision 1.5 tools/compat/configure: regen tools/compat/configure.ac: revision 1.68 tools/compat/nbtool_config.h.in: regen usr.bin/mklocale/Makefile: revision 1.15 usr.bin/mklocale/lex.l: revision 1.16 usr.bin/mklocale/yacc.y: revision 1.27 1. reworking PR lib/40317: libnbcompat already contains empty fparseln.lo so previous fix doesn't work correctly. i've just added broken fparseln check to configure script. 2. reworking cross build breakage under FreeBSD/MacOS X. FreeBSD/MacOS X still have public /usr/include/runetype.h derived from 4.4BSD-Lite. so i renamed out private header from src/lib/libc/locale/runetype.h to src/lib/libc/locale/runetype_local.h to solve this problems. 3. fix build breakage when CITRUS=no was set.
|
| 1.24.40.2 |
| 15-Jan-2009 |
snj | Pull up following revision(s) (requested by jmcneill in ticket #270): usr.bin/mklocale/Makefile: revision 1.13 usr.bin/mklocale/lex.l: revision 1.15 usr.bin/mklocale/yacc.y: revision 1.26 1. fixes PR lib/40317, don't use libc's fparseln(3). it is non-portable function, toolchain should link it yourself. 2. fixes crossbuild breakage reported by Chiristoph Egger on current-user, FreeBSD and MacOS X still make Rune* as public API in their ctype.h. so added namespace protection NB* by including src/lib/libc/locale/rune.h instead of src/lib/libc/locale/runetype.h.
|
| 1.24.40.1 |
| 15-Jan-2009 |
snj | Pull up following revision(s) (requested by tnozaki in ticket #222): distrib/sets/lists/base/mi: revision 1.788 distrib/utils/libhack/Makefile.inc: revision 1.23 distrib/utils/libhack/Makefile: revision 1.22 etc/mtree/NetBSD.dist: revision 1.387 include/locale.h: revision 1.15 lib/libc/citrus/Makefile.inc: revision 1.6 lib/libc/citrus/citrus_aliasname_local.h: revision 1.1 lib/libc/citrus/citrus_bcs.h: revision 1.5 lib/libc/citrus/citrus_bcs_strtol.c: revision 1.1 lib/libc/citrus/citrus_bcs_strtoul.c: revision 1.1 lib/libc/citrus/citrus_csmapper.c: revision 1.9 lib/libc/citrus/citrus_fix_grouping.h: revision 1.1 lib/libc/citrus/citrus_lc_ctype.c: revision 1.1 lib/libc/citrus/citrus_lc_messages.c: revision 1.1 lib/libc/citrus/citrus_lc_messages.h: revision 1.1 lib/libc/citrus/citrus_lc_monetary.c: revision 1.1 lib/libc/citrus/citrus_lc_monetary.h: revision 1.1 lib/libc/citrus/citrus_lc_numeric.c: revision 1.1 lib/libc/citrus/citrus_lc_numeric.h: revision 1.1 lib/libc/citrus/citrus_lc_template.h: revision 1.1 lib/libc/citrus/citrus_lc_template_decl.h: revision 1.1 lib/libc/citrus/citrus_lc_time.c: revision 1.1 lib/libc/citrus/citrus_lc_time.h: revision 1.1 lib/libc/citrus/citrus_module.c: revision 1.8 lib/libc/citrus/citrus_namespace.h: revision 1.7 lib/libc/citrus/modules/citrus_euc.c: revision 1.13 lib/libc/gen/Makefile.inc: revision 1.166 lib/libc/gen/isctype.c: revision 1.17 via patch lib/libc/gen/tolower_.c: revision 1.10 lib/libc/gen/toupper_.c: revision 1.10 lib/libc/iconv/Makefile.inc: revision 1.3 lib/libc/iconv/iconv.c: revision 1.7 lib/libc/locale/Makefile.inc: revision 1.53 lib/libc/locale/___runetype_mb.c: file removal lib/libc/locale/_wctrans.c: revision 1.7 lib/libc/locale/_wctrans_local.h: revision 1.3 lib/libc/locale/_wctype.c: revision 1.1 lib/libc/locale/_wctype_local.h: revision 1.1 lib/libc/locale/aliasname.c: revision 1.3 lib/libc/locale/aliasname_local.h: revision 1.2 lib/libc/locale/bsdctype.c: revision 1.1 lib/libc/locale/bsdctype.h: revision 1.1 lib/libc/locale/ctypeio.c: revision 1.8 lib/libc/locale/ctypeio.h: revision 1.2 lib/libc/locale/current_locale.c: revision 1.1 lib/libc/locale/dummy_lc_collate.c: revision 1.1 lib/libc/locale/dummy_lc_template.h: revision 1.1 lib/libc/locale/fix_grouping.c: revision 1.1 lib/libc/locale/fix_grouping.h: revision 1.1 lib/libc/locale/generic_lc_all.c: revision 1.1 lib/libc/locale/generic_lc_template.h: revision 1.1 lib/libc/locale/generic_lc_template_decl.h: revision 1.1 lib/libc/locale/global_locale.c: revision 1.1 lib/libc/locale/iswctype.c: file removal lib/libc/locale/iswctype_mb.c: revision 1.1 lib/libc/locale/iswctype_sb.c: revision 1.6 lib/libc/locale/lcmessages.c: file removal lib/libc/locale/lcmessages.h: file removal lib/libc/locale/lcmonetary.c: file removal lib/libc/locale/lcmonetary.h: file removal lib/libc/locale/lcnumeric.c: file removal lib/libc/locale/lcnumeric.h: file removal lib/libc/locale/lctime.c: file removal lib/libc/locale/lctime.h: file removal lib/libc/locale/localeconv.c: revision 1.15 lib/libc/locale/localeio.c: revision 1.2 lib/libc/locale/localeio.h: revision 1.2 lib/libc/locale/localeio_lc_ctype.c: revision 1.1 lib/libc/locale/localeio_lc_messages.c: revision 1.1 lib/libc/locale/localeio_lc_monetary.c: revision 1.1 lib/libc/locale/localeio_lc_numeric.c: revision 1.1 lib/libc/locale/localeio_lc_time.c: revision 1.1 lib/libc/locale/multibyte.h: revision 1.4 lib/libc/locale/multibyte_amd1.c: revision 1.6 lib/libc/locale/multibyte_c90.c: revision 1.5 lib/libc/locale/nb_lc_messages_misc.h: revision 1.1 lib/libc/locale/nb_lc_monetary_misc.h: revision 1.1 lib/libc/locale/nb_lc_numeric_misc.h: revision 1.1 lib/libc/locale/nb_lc_template.h: revision 1.1 lib/libc/locale/nb_lc_template_decl.h: revision 1.1 lib/libc/locale/nb_lc_time_misc.h: revision 1.1 lib/libc/locale/nl_langinfo.c: revision 1.12 lib/libc/locale/rune.c: revision 1.31 lib/libc/locale/rune.h: revision 1.13 lib/libc/locale/rune_local.h: revision 1.11 lib/libc/locale/runeglue.c: revision 1.14 lib/libc/locale/runetable.c: revision 1.18 lib/libc/locale/setlocale.c: revision 1.55 via patch lib/libc/locale/setlocale_local.h: revision 1.1 lib/libc/locale/setrunelocale.c: file removal lib/libc/nls/Makefile.inc: revision 1.9 lib/libc/nls/catopen.c: revision 1.26 lib/libc/string/Makefile.inc: revision 1.68 lib/libc/string/wcscmp.c: revision 1.6 lib/libc/string/wcsncmp.c: revision 1.6 lib/libc/string/wcswidth.c: file removal lib/libc/string/wmemcmp.c: revision 1.4 regress/lib/libc/locale/Makefile: revision 1.4 regress/lib/libc/locale/ctype1/Makefile: revision 1.4 regress/lib/libc/locale/ctype1/en_US.UTF-8.exp.uue: revision 1.2 regress/lib/libc/locale/ctype1/ja_JP.ISO-2022-JP.exp.uue: revision 1.1 regress/lib/libc/locale/ctype1/ja_JP.ISO-2022-JP.in.uue: revision 1.1 regress/lib/libc/locale/ctype1/ja_JP.ISO2022-JP.exp.uue: file removal regress/lib/libc/locale/ctype1/ja_JP.ISO2022-JP.in.uue: file removal regress/lib/libc/locale/ctype1/ja_JP.SJIS.exp.uue: revision 1.2 regress/lib/libc/locale/ctype1/ja_JP.eucJP.exp.uue: revision 1.2 regress/lib/libc/locale/ctype2/Makefile: revision 1.5 regress/lib/libc/locale/ctype2/ja_JP.ISO-2022-JP-2.in.uue: revision 1.1 regress/lib/libc/locale/ctype2/ja_JP.ISO2022-JP2.in.uue: file removal regress/lib/libc/locale/ctype3/Makefile: revision 1.5 regress/lib/libc/locale/mbtowc/Makefile: revision 1.3 regress/lib/libc/locale/mbtowc/ja_JP.ISO-2022-JP: revision 1.1 regress/lib/libc/locale/mbtowc/ja_JP.ISO2022-JP: file removal regress/lib/libc/locale/wcstod/wcstod_test.c: revision 1.2 share/locale/Makefile.locale: revision 1.1 share/locale/Makefile: revision 1.5 share/locale/ctype/Makefile: revision 1.28 share/locale/locale.alias: revision 1.11 share/locale/messages/Makefile: revision 1.5 share/locale/messages/en_US.ISO8859-1.src: file removal share/locale/messages/en_US.US-ASCII.src: revision 1.1 share/locale/messages/ja_JP.ISO-2022-JP.src: revision 1.1 share/locale/messages/ja_JP.ct.src: revision 1.1 share/locale/messages/sr_ME.ISO8859-2.src: revision 1.1 share/locale/messages/sr_ME.ISO8859-5.src: revision 1.1 share/locale/messages/sr_YU.ISO8859-2.src: file removal share/locale/messages/sr_YU.ISO8859-5.src: file removal share/locale/messages/sr_YU.UTF-8.src: file removal share/locale/messages/zh_CN.GB18030.src: file removal share/locale/messages/zh_TW.eucTW.src: revision 1.1 share/locale/monetary/Makefile: revision 1.5 share/locale/monetary/af_ZA.ISO8859-1.src: revision 1.2 share/locale/monetary/am_ET.UTF-8.src: revision 1.2 share/locale/monetary/be_BY.CP1131.src: file removal share/locale/monetary/be_BY.CP1251.src: revision 1.2 share/locale/monetary/be_BY.ISO8859-5.src: revision 1.2 share/locale/monetary/be_BY.UTF-8.src: revision 1.2 share/locale/monetary/bg_BG.CP1251.src: revision 1.2 share/locale/monetary/bg_BG.UTF-8.src: revision 1.2 share/locale/monetary/ca_ES.ISO8859-1.src: revision 1.2 share/locale/monetary/cs_CZ.ISO8859-2.src: revision 1.2 share/locale/monetary/cs_CZ.UTF-8.src: revision 1.2 share/locale/monetary/da_DK.ISO8859-1.src: revision 1.2 share/locale/monetary/de_AT.ISO8859-1.src: revision 1.2 share/locale/monetary/de_CH.ISO8859-1.src: revision 1.2 share/locale/monetary/de_DE.ISO8859-1.src: revision 1.2 share/locale/monetary/el_GR.ISO8859-7.src: revision 1.2 share/locale/monetary/en_AU.ISO8859-1.src: revision 1.2 share/locale/monetary/en_CA.ISO8859-1.src: revision 1.2 share/locale/monetary/en_GB.ISO8859-1.src: revision 1.2 share/locale/monetary/en_GB.UTF-8.src: revision 1.2 share/locale/monetary/en_IE.UTF-8.src: revision 1.2 share/locale/monetary/en_NZ.ISO8859-1.src: revision 1.2 share/locale/monetary/en_US.ISO8859-1.src: revision 1.2 share/locale/monetary/en_US.US-ASCII.src: revision 1.1 share/locale/monetary/es_ES.ISO8859-1.src: revision 1.2 share/locale/monetary/et_EE.ISO8859-15.src: revision 1.2 share/locale/monetary/fi_FI.ISO8859-1.src: revision 1.2 share/locale/monetary/fr_BE.ISO8859-1.src: revision 1.2 share/locale/monetary/fr_CA.ISO8859-1.src: revision 1.2 share/locale/monetary/fr_FR.ISO8859-1.src: revision 1.2 share/locale/monetary/he_IL.UTF-8.src: revision 1.2 share/locale/monetary/hi_IN.ISCII-DEV.src: revision 1.2 share/locale/monetary/hr_HR.ISO8859-2.src: revision 1.2 share/locale/monetary/hu_HU.ISO8859-2.src: revision 1.2 share/locale/monetary/hy_AM.ARMSCII-8.src: revision 1.2 share/locale/monetary/hy_AM.UTF-8.src: revision 1.2 share/locale/monetary/is_IS.ISO8859-1.src: revision 1.2 share/locale/monetary/it_IT.ISO8859-1.src: revision 1.2 share/locale/monetary/ja_JP.ISO-2022-JP.src: revision 1.1 share/locale/monetary/ja_JP.UTF-8.src: revision 1.2 share/locale/monetary/ja_JP.eucJP.src: revision 1.2 share/locale/monetary/kk_KZ.PT154.src: revision 1.2 share/locale/monetary/kk_KZ.UTF-8.src: revision 1.2 share/locale/monetary/ko_KR.UTF-8.src: revision 1.2 share/locale/monetary/ko_KR.eucKR.src: revision 1.2 share/locale/monetary/lt_LT.ISO8859-13.src: revision 1.2 share/locale/monetary/mn_MN.UTF-8.src: revision 1.2 share/locale/monetary/nl_BE.ISO8859-1.src: revision 1.2 share/locale/monetary/nl_NL.ISO8859-1.src: revision 1.2 share/locale/monetary/no_NO.ISO8859-1.src: revision 1.2 share/locale/monetary/pl_PL.ISO8859-2.src: revision 1.2 share/locale/monetary/pl_PL.UTF-8.src: revision 1.2 share/locale/monetary/pt_BR.ISO8859-1.src: revision 1.2 share/locale/monetary/pt_PT.ISO8859-1.src: revision 1.2 share/locale/monetary/ro_RO.ISO8859-2.src: revision 1.2 share/locale/monetary/ru_RU.CP1251.src: revision 1.2 share/locale/monetary/ru_RU.CP866.src: revision 1.2 share/locale/monetary/ru_RU.ISO8859-5.src: revision 1.2 share/locale/monetary/ru_RU.KOI8-R.src: revision 1.2 share/locale/monetary/ru_RU.UTF-8.src: revision 1.2 share/locale/monetary/sk_SK.ISO8859-2.src: revision 1.2 share/locale/monetary/sl_SI.ISO8859-2.src: revision 1.2 share/locale/monetary/sr_ME.ISO8859-2.src: revision 1.1 share/locale/monetary/sr_RS.ISO8859-2.src: revision 1.1 share/locale/monetary/sr_YU.ISO8859-2.src: revision 1.2 share/locale/monetary/sr_YU.ISO8859-5.src: revision 1.2 share/locale/monetary/sr_YU.UTF-8.src: revision 1.2 share/locale/monetary/sv_SE.ISO8859-1.src: revision 1.2 share/locale/monetary/tr_TR.ISO8859-9.src: revision 1.2 share/locale/monetary/uk_UA.CP1251.src: revision 1.2 share/locale/monetary/uk_UA.ISO8859-5.src: revision 1.2 share/locale/monetary/uk_UA.KOI8-U.src: revision 1.2 share/locale/monetary/uk_UA.UTF-8.src: revision 1.2 share/locale/monetary/zh_CN.GB18030.src: revision 1.2 share/locale/monetary/zh_CN.UTF-8.src: revision 1.2 share/locale/monetary/zh_CN.eucCN.src: revision 1.2 share/locale/monetary/zh_HK.Big5hkscs.src: revision 1.1 share/locale/monetary/zh_HK.UTF-8.src: revision 1.2 share/locale/monetary/zh_TW.Big5.src: revision 1.2 share/locale/numeric/Makefile: revision 1.4 share/locale/numeric/am_ET.UTF-8.src: file removal share/locale/numeric/en_US.ISO8859-1.src: file removal share/locale/numeric/en_US.US-ASCII.src: revision 1.1 share/locale/numeric/ja_JP.eucJP.src: file removal share/locale/numeric/ko_KR.eucKR.src: file removal share/locale/numeric/mn_MN.UTF-8.src: file removal share/locale/numeric/sr_ME.ISO8859-2.src: revision 1.1 share/locale/numeric/sr_YU.ISO8859-2.src: file removal share/locale/numeric/sr_YU.ISO8859-5.src: file removal share/locale/numeric/zh_CN.eucCN.src: file removal share/locale/time/Makefile: revision 1.5 share/locale/time/en_US.ISO8859-1.src: file removal share/locale/time/en_US.US-ASCII.src: revision 1.1 share/locale/time/ja_JP.ISO-2022-JP.src: revision 1.1 share/locale/time/ja_JP.ct.src: revision 1.1 share/locale/time/sr_ME.ISO8859-2.src: revision 1.1 share/locale/time/sr_ME.ISO8859-5.src: revision 1.1 share/locale/time/sr_ME.UTF-8.src: revision 1.1 share/locale/time/sr_YU.ISO8859-2.src: file removal share/locale/time/sr_YU.ISO8859-5.src: file removal share/locale/time/sr_YU.UTF-8.src: file removal share/locale/time/zh_CN.GB18030.src: file removal share/locale/time/zh_TW.eucTW.src: revision 1.1 usr.bin/locale/locale.c: revision 1.6 usr.bin/mklocale/Makefile: revision 1.12 usr.bin/mklocale/lex.l: revision 1.14 usr.bin/mklocale/mklocaledb.c: revision 1.1 usr.bin/mklocale/yacc.y: revision 1.25 usr.sbin/chrtbl/Makefile: revision 1.8 usr.sbin/chrtbl/ctypeio.c: revision 1.1 usr.sbin/chrtbl/ctypeio.h: revision 1.1 Fixes PR lib/39662, shortcomings in LC_{MONETARY,NUMERIC,TIME,MESSAGES} db format. ok'ed by core and releng. (thanks for agc@, snj@ and i'm sorry for long time patience). [libc] - localeio.[ch] and lc*.[ch] in src/lib/libc/locale was replaced by new locale-db implementation using citrus_db backend, see src/lib/libc/citrus/citrus_lc_*.[ch]. - add citrus_bcs_strtou?l.c. don't use strtou?l locale implementation internally, because they're locale-aware function. - add some stubs for multi-locale issue, see {current,global}_locale.c. - remove some obsolete file, setrunelocale.c, ___runetype_mb.c. - remove __savectype() from ctypeio.[ch]. [tools] - mklocale(1): add new option ``-t'' that generates new style LC_{MONETARY,NUMERIC,TIME,MESSAGES} locale-db format. - chrtbl(1): added ctypeio.[ch] for __savectype(). [locale-db] - added en_US.US-ASCII locale. - removed some shareable locale definition file: en_US.US-ASCII -> en_US.ISO8859-1, en_US.UTF-8 zh_CN.eucCN -> zh_CN.GB18030 and more...see src/share/locale/*/Makefile. - remove obsoleted locale sr_YU, added new locale sr_ME, sr_RS. - change locale name ja_JP.ISO2022-JP* -> ja_JP.ISO-2022-JP* for X11's locale.alias file alignments. - fix regression test, wrong wcs?width(3), NAN/INF usage.
i tested release-build following arch: i386, amd64, hpc{mips,arm,sh}, sparc64, vax.
citrus_lc_*.[ch] also can read old-plain-text style locale-db. so that backward compatibility is keeped, but lc*.[ch] can't read new citrus_db'ed locale-db and localeio.c never check sanity, so forward compatibility is broken ;-< old mklocale(1) doesn't know -t option, so you have to rebuild toolchain.
|
| 1.33.14.1 |
| 13-Apr-2020 |
martin | Mostly merge changes from HEAD upto 20200411
|
| 1.34.8.1 |
| 14-Jan-2024 |
martin | Pull up following revision(s) (requested by rin in ticket #538):
usr.bin/mklocale/yacc.y: revision 1.35 usr.bin/mklocale/yacc.y: revision 1.36 usr.bin/mklocale/mklocale.1: revision 1.18 usr.bin/mklocale/mklocale.1: revision 1.19
mklocale: XXX: Neglect TODIGIT at the moment PR lib/57798
It was implemented with an assumption that all digit characters can be mapped to numerical values <= 255. This is no longer true for Unicode, and results in, e.g., wrong return values of wcwidth(3) for U+5146 or U+16B60.
As a workaround, neglect TODIGIT for now, as done for OpenBSD: https://github.com/OpenBSD/src/commit/4efe9bdeb34 XXX
At least netbsd-10 should be fixed, but it requires some tests.
mklocale(1): Add range check for TODIGIT, rather than disabling it PR lib/57798
Digit value specified by TODIGIT is storaged as lowest 8 bits of _RuneType, see lib/libc/locale/runetype_file.h: https://nxr.netbsd.org/xref/src/lib/libc/locale/runetype_file.h#56
The symptom reported in the PR is due to missing range check for this value; values of 256 and above were mistakenly treated as other flag bits in _RuneType.
For example, U+5146 has numerical value 1000,000,000,000 == 0xe8d4a51000 where __BITS(30, 31) == _RUNETYPE_SW3 are turned on.
This is why wcwidth(3) returned 3 for this character.
This apparently affected not only character width, but also other attributes storaged in _RuneType.
IIUC, digit value attributes in _RuneType have never been utilized until now, but preserve these if digit fits within (0, 256). This should be safer for pulling this up into netbsd-10. Also, these attributes may be useful to implement some I18N features as suggested by uwe@ in the PR.
netbsd-[98] is not affected as these use old UTF-8 ctype definitions.
|