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.
This commit is contained in:
parent
2577e51e90
commit
52ed7b035f
@ -1,4 +1,4 @@
|
||||
# $NetBSD: mi,v 1.787 2008/12/23 04:22:55 agc Exp $
|
||||
# $NetBSD: mi,v 1.788 2009/01/02 00:20:18 tnozaki Exp $
|
||||
#
|
||||
# Note: Don't delete entries from here - mark them as "obsolete" instead,
|
||||
# unless otherwise stated below.
|
||||
@ -2585,22 +2585,57 @@
|
||||
./usr/share/locale base-locale-share
|
||||
./usr/share/locale/af_ZA.ISO8859-1 base-locale-af
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_CTYPE base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_MESSAGES base-locale-af
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_MONETARY base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_NUMERIC base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_TIME base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-15 base-locale-af
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_CTYPE base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_MESSAGES base-locale-af
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_MONETARY base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_NUMERIC base-locale-af nls
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_TIME base-locale-af nls
|
||||
./usr/share/locale/be base-locale-be
|
||||
./usr/share/locale/be/LC_MESSAGES base-locale-be
|
||||
./usr/share/locale/be_BY.CP1251 base-locale-be
|
||||
./usr/share/locale/be_BY.CP1251/LC_CTYPE base-locale-be nls
|
||||
./usr/share/locale/be_BY.CP1251/LC_MESSAGES base-locale-be
|
||||
./usr/share/locale/be_BY.CP1251/LC_MESSAGES/SYS_LC_MESSAGES base-locale-be nls
|
||||
./usr/share/locale/be_BY.CP1251/LC_MONETARY base-locale-be nls
|
||||
./usr/share/locale/be_BY.CP1251/LC_NUMERIC base-locale-be nls
|
||||
./usr/share/locale/be_BY.CP1251/LC_TIME base-locale-be nls
|
||||
./usr/share/locale/be_BY.ISO8859-5 base-locale-be
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_CTYPE base-locale-be nls
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_MESSAGES base-locale-be
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_MESSAGES/SYS_LC_MESSAGES base-locale-be nls
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_MONETARY base-locale-be nls
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_NUMERIC base-locale-be nls
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_TIME base-locale-be nls
|
||||
./usr/share/locale/bg_BG.CP1251 base-locale-bg
|
||||
./usr/share/locale/bg_BG.CP1251/LC_CTYPE base-locale-bg nls
|
||||
./usr/share/locale/bg_BG.CP1251/LC_MESSAGES base-locale-bg
|
||||
./usr/share/locale/bg_BG.CP1251/LC_MESSAGES/SYS_LC_MESSAGES base-locale-bg nls
|
||||
./usr/share/locale/bg_BG.CP1251/LC_MONETARY base-locale-bg nls
|
||||
./usr/share/locale/bg_BG.CP1251/LC_NUMERIC base-locale-bg nls
|
||||
./usr/share/locale/bg_BG.CP1251/LC_TIME base-locale-bg nls
|
||||
./usr/share/locale/ca base-locale-ca
|
||||
./usr/share/locale/ca/LC_MESSAGES base-locale-ca
|
||||
./usr/share/locale/ca_ES.ISO8859-1 base-locale-ca
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_CTYPE base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_MESSAGES base-locale-ca
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_MONETARY base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_NUMERIC base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_TIME base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-15 base-locale-ca
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_CTYPE base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_MESSAGES base-locale-ca
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_MONETARY base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_NUMERIC base-locale-ca nls
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_TIME base-locale-ca nls
|
||||
./usr/share/locale/cs base-locale-cs
|
||||
./usr/share/locale/cs/LC_MESSAGES base-locale-cs
|
||||
./usr/share/locale/cs/LC_MESSAGES/grep.mo base-util_locale-cs nls
|
||||
@ -2608,14 +2643,29 @@
|
||||
./usr/share/locale/cs/LC_MESSAGES/texinfo.mo base-texinfo_locale-cs nls
|
||||
./usr/share/locale/cs_CZ.ISO8859-2 base-locale-cs
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_CTYPE base-locale-cs nls
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_MESSAGES base-locale-cs
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-cs nls
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_MONETARY base-locale-cs nls
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_NUMERIC base-locale-cs nls
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_TIME base-locale-cs nls
|
||||
./usr/share/locale/da base-locale-da
|
||||
./usr/share/locale/da/LC_MESSAGES base-locale-da
|
||||
./usr/share/locale/da/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/da/LC_MESSAGES/texinfo.mo base-texinfo_locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-1 base-locale-da
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_CTYPE base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_MESSAGES base-locale-da
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_MONETARY base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_NUMERIC base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_TIME base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-15 base-locale-da
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_CTYPE base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_MESSAGES base-locale-da
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_MONETARY base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_NUMERIC base-locale-da nls
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_TIME base-locale-da nls
|
||||
./usr/share/locale/de base-locale-de
|
||||
./usr/share/locale/de/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de/LC_MESSAGES/grep.mo base-util_locale-de nls
|
||||
@ -2624,51 +2674,148 @@
|
||||
./usr/share/locale/de_AT base-locale-de
|
||||
./usr/share/locale/de_AT.ISO8859-1 base-locale-de
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_CTYPE base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_MONETARY base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_NUMERIC base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_TIME base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-15 base-locale-de
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_CTYPE base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_MONETARY base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_NUMERIC base-locale-de nls
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_TIME base-locale-de nls
|
||||
./usr/share/locale/de_AT/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_AT/LC_MESSAGES/texinfo.mo base-texinfo_locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-1 base-locale-de
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_CTYPE base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_MONETARY base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_NUMERIC base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_TIME base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-15 base-locale-de
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_CTYPE base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_MONETARY base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_NUMERIC base-locale-de nls
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_TIME base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-1 base-locale-de
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_CTYPE base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_MONETARY base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_NUMERIC base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_TIME base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-15 base-locale-de
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_CTYPE base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_MESSAGES base-locale-de
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_MONETARY base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_NUMERIC base-locale-de nls
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_TIME base-locale-de nls
|
||||
./usr/share/locale/el base-locale-el
|
||||
./usr/share/locale/el/LC_MESSAGES base-locale-el
|
||||
./usr/share/locale/el/LC_MESSAGES/grep.mo base-util_locale-el nls
|
||||
./usr/share/locale/el_GR.ISO8859-7 base-locale-el
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_CTYPE base-locale-el nls
|
||||
./usr/share/locale/en@boldquot base-locale-share
|
||||
./usr/share/locale/en@boldquot/LC_MESSAGES base-locale-share
|
||||
./usr/share/locale/en@quot base-locale-share
|
||||
./usr/share/locale/en@quot/LC_MESSAGES base-locale-share
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_MESSAGES base-locale-el
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_MESSAGES/SYS_LC_MESSAGES base-locale-el nls
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_MONETARY base-locale-el nls
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_NUMERIC base-locale-el nls
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_TIME base-locale-el nls
|
||||
./usr/share/locale/en@boldquot base-locale-en
|
||||
./usr/share/locale/en@boldquot/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en@quot base-locale-en
|
||||
./usr/share/locale/en@quot/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_AU.ISO8859-1 base-locale-en
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-15 base-locale-en
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-1 base-locale-en
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-15 base-locale-en
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-1 base-locale-en
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-15 base-locale-en
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-1 base-locale-en
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-15 base-locale-en
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-1 base-locale-en
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-15 base-locale-en
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_US.US-ASCII base-locale-en
|
||||
./usr/share/locale/en_US.US-ASCII/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_US.US-ASCII/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_US.US-ASCII/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_US.US-ASCII/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_US.US-ASCII/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_US.US-ASCII/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/en_US.UTF-2 base-obsolete obsolete
|
||||
./usr/share/locale/en_US.UTF-2/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/en_US.UTF-8 base-locale-en
|
||||
./usr/share/locale/en_US.UTF-8/LC_CTYPE base-locale-en nls
|
||||
./usr/share/locale/en_US.UTF-8/LC_MESSAGES base-locale-en
|
||||
./usr/share/locale/en_US.UTF-8/LC_MESSAGES/SYS_LC_MESSAGES base-locale-en nls
|
||||
./usr/share/locale/en_US.UTF-8/LC_MONETARY base-locale-en nls
|
||||
./usr/share/locale/en_US.UTF-8/LC_NUMERIC base-locale-en nls
|
||||
./usr/share/locale/en_US.UTF-8/LC_TIME base-locale-en nls
|
||||
./usr/share/locale/eo base-locale-eo
|
||||
./usr/share/locale/eo/LC_MESSAGES base-locale-eo
|
||||
./usr/share/locale/eo/LC_MESSAGES/grep.mo base-util_locale-eo nls
|
||||
@ -2679,24 +2826,59 @@
|
||||
./usr/share/locale/es/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/es_ES.ISO8859-1 base-locale-es
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_CTYPE base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_MESSAGES base-locale-es
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_MONETARY base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_NUMERIC base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_TIME base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-15 base-locale-es
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_CTYPE base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_MESSAGES base-locale-es
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_MONETARY base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_NUMERIC base-locale-es nls
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_TIME base-locale-es nls
|
||||
./usr/share/locale/et base-locale-et
|
||||
./usr/share/locale/et/LC_MESSAGES base-locale-et
|
||||
./usr/share/locale/et/LC_MESSAGES/grep.mo base-util_locale-et nls
|
||||
./usr/share/locale/et/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/et_EE.ISO8859-15 base-locale-et
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_CTYPE base-locale-et nls
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_MESSAGES base-locale-et
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-et nls
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_MONETARY base-locale-et nls
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_NUMERIC base-locale-et nls
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_TIME base-locale-et nls
|
||||
./usr/share/locale/eu_ES.ISO8859-1 base-locale-eu
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_CTYPE base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_MESSAGES base-locale-eu
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_MONETARY base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_NUMERIC base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_TIME base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-15 base-locale-eu
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_CTYPE base-locale-eu nls
|
||||
./usr/share/locale/fi base-locale-share
|
||||
./usr/share/locale/fi/LC_MESSAGES base-locale-share
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_MESSAGES base-locale-eu
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_MONETARY base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_NUMERIC base-locale-eu nls
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_TIME base-locale-eu nls
|
||||
./usr/share/locale/fi base-locale-fi
|
||||
./usr/share/locale/fi/LC_MESSAGES base-locale-fi
|
||||
./usr/share/locale/fi_FI.ISO8859-1 base-locale-fi
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_CTYPE base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_MESSAGES base-locale-fi
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_MONETARY base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_NUMERIC base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_TIME base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-15 base-locale-fi
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_CTYPE base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_MESSAGES base-locale-fi
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_MONETARY base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_NUMERIC base-locale-fi nls
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_TIME base-locale-fi nls
|
||||
./usr/share/locale/fr base-locale-fr
|
||||
./usr/share/locale/fr/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr/LC_MESSAGES/grep.mo base-util_locale-fr nls
|
||||
@ -2704,20 +2886,60 @@
|
||||
./usr/share/locale/fr/LC_MESSAGES/texinfo.mo base-texinfo_locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-1 base-locale-fr
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-15 base-locale-fr
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-1 base-locale-fr
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-15 base-locale-fr
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-1 base-locale-fr
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-15 base-locale-fr
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-1 base-locale-fr
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-15 base-locale-fr
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_CTYPE base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_MESSAGES base-locale-fr
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_MONETARY base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_NUMERIC base-locale-fr nls
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_TIME base-locale-fr nls
|
||||
./usr/share/locale/gl base-locale-gl
|
||||
./usr/share/locale/gl/LC_MESSAGES base-locale-gl
|
||||
./usr/share/locale/gl/LC_MESSAGES/grep.mo base-util_locale-gl nls
|
||||
@ -2730,47 +2952,126 @@
|
||||
./usr/share/locale/hr/LC_MESSAGES/texinfo.mo base-texinfo_locale-hr nls
|
||||
./usr/share/locale/hr_HR.ISO8859-2 base-locale-hr
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_CTYPE base-locale-hr nls
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_MESSAGES base-locale-hr
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-hr nls
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_MONETARY base-locale-hr nls
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_NUMERIC base-locale-hr nls
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_TIME base-locale-hr nls
|
||||
./usr/share/locale/hu_HU.ISO8859-2 base-locale-hu
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_CTYPE base-locale-hu nls
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_MESSAGES base-locale-hu
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-hu nls
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_MONETARY base-locale-hu nls
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_NUMERIC base-locale-hu nls
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_TIME base-locale-hu nls
|
||||
./usr/share/locale/hy_AM.ARMSCII-8 base-locale-hy
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_CTYPE base-locale-hy nls
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_MESSAGES base-locale-hy
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_MESSAGES/SYS_LC_MESSAGES base-locale-hy nls
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_MONETARY base-locale-hy nls
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_NUMERIC base-locale-hy nls
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_TIME base-locale-hy nls
|
||||
./usr/share/locale/id base-locale-id
|
||||
./usr/share/locale/id/LC_MESSAGES base-locale-id
|
||||
./usr/share/locale/id/LC_MESSAGES/grep.mo base-util_locale-id nls
|
||||
./usr/share/locale/id/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/is_IS.ISO8859-1 base-locale-is
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_CTYPE base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_MESSAGES base-locale-is
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_MONETARY base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_NUMERIC base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_TIME base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-15 base-locale-is
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_CTYPE base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_MESSAGES base-locale-is
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_MONETARY base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_NUMERIC base-locale-is nls
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_TIME base-locale-is nls
|
||||
./usr/share/locale/it base-locale-it
|
||||
./usr/share/locale/it/LC_MESSAGES base-locale-it
|
||||
./usr/share/locale/it/LC_MESSAGES/grep.mo base-util_locale-it nls
|
||||
./usr/share/locale/it/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/it_CH.ISO8859-1 base-locale-it
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_CTYPE base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_MESSAGES base-locale-it
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_MONETARY base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_NUMERIC base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_TIME base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-15 base-locale-it
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_CTYPE base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_MESSAGES base-locale-it
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_MONETARY base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_NUMERIC base-locale-it nls
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_TIME base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-1 base-locale-it
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_CTYPE base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_MESSAGES base-locale-it
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_MONETARY base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_NUMERIC base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_TIME base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-15 base-locale-it
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_CTYPE base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_MESSAGES base-locale-it
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_MONETARY base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_NUMERIC base-locale-it nls
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_TIME base-locale-it nls
|
||||
./usr/share/locale/ja base-locale-ja
|
||||
./usr/share/locale/ja/LC_MESSAGES base-locale-ja
|
||||
./usr/share/locale/ja/LC_MESSAGES/grep.mo base-util_locale-ja nls
|
||||
./usr/share/locale/ja/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/ja/LC_MESSAGES/texinfo.mo base-texinfo_locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO2022-JP base-locale-ja
|
||||
./usr/share/locale/ja_JP.ISO2022-JP/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO2022-JP2 base-locale-ja
|
||||
./usr/share/locale/ja_JP.ISO2022-JP2/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO2022-JP base-obsolete obsolete
|
||||
./usr/share/locale/ja_JP.ISO2022-JP/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/ja_JP.ISO2022-JP2 base-obsolete obsolete
|
||||
./usr/share/locale/ja_JP.ISO2022-JP2/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP base-locale-ja
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_MESSAGES base-locale-ja
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_MONETARY base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_NUMERIC base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_TIME base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2 base-locale-ja
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_MESSAGES base-locale-ja
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_MONETARY base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_NUMERIC base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_TIME base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.SJIS base-locale-ja
|
||||
./usr/share/locale/ja_JP.SJIS/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.SJIS/LC_MESSAGES base-locale-ja
|
||||
./usr/share/locale/ja_JP.SJIS/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.SJIS/LC_MONETARY base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.SJIS/LC_NUMERIC base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.SJIS/LC_TIME base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ct base-locale-ja
|
||||
./usr/share/locale/ja_JP.ct/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ct/LC_MESSAGES base-locale-ja
|
||||
./usr/share/locale/ja_JP.ct/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ct/LC_MONETARY base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ct/LC_NUMERIC base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.ct/LC_TIME base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.eucJP base-locale-ja
|
||||
./usr/share/locale/ja_JP.eucJP/LC_CTYPE base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.eucJP/LC_MESSAGES base-locale-ja
|
||||
./usr/share/locale/ja_JP.eucJP/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.eucJP/LC_MONETARY base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.eucJP/LC_NUMERIC base-locale-ja nls
|
||||
./usr/share/locale/ja_JP.eucJP/LC_TIME base-locale-ja nls
|
||||
./usr/share/locale/kk_KZ.PT154 base-locale-kk
|
||||
./usr/share/locale/kk_KZ.PT154/LC_CTYPE base-locale-kk nls
|
||||
./usr/share/locale/kk_KZ.PT154/LC_MESSAGES base-locale-kk
|
||||
./usr/share/locale/kk_KZ.PT154/LC_MESSAGES/SYS_LC_MESSAGES base-locale-kk nls
|
||||
./usr/share/locale/kk_KZ.PT154/LC_MONETARY base-locale-kk nls
|
||||
./usr/share/locale/kk_KZ.PT154/LC_NUMERIC base-locale-kk nls
|
||||
./usr/share/locale/kk_KZ.PT154/LC_TIME base-locale-kk nls
|
||||
./usr/share/locale/ko base-locale-ko
|
||||
./usr/share/locale/ko/LC_MESSAGES base-locale-ko
|
||||
./usr/share/locale/ko/LC_MESSAGES/grep.mo base-locale-ko nls
|
||||
@ -2779,11 +3080,26 @@
|
||||
./usr/share/locale/ko_KR.UTF-8/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/ko_KR.eucKR base-locale-ko
|
||||
./usr/share/locale/ko_KR.eucKR/LC_CTYPE base-locale-ko nls
|
||||
./usr/share/locale/ko_KR.eucKR/LC_MESSAGES base-locale-ko
|
||||
./usr/share/locale/ko_KR.eucKR/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ko nls
|
||||
./usr/share/locale/ko_KR.eucKR/LC_MONETARY base-locale-ko nls
|
||||
./usr/share/locale/ko_KR.eucKR/LC_NUMERIC base-locale-ko nls
|
||||
./usr/share/locale/ko_KR.eucKR/LC_TIME base-locale-ko nls
|
||||
./usr/share/locale/locale.alias base-locale-share nls
|
||||
./usr/share/locale/lt_LT.ISO8859-13 base-locale-lt
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_CTYPE base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_MESSAGES base-locale-lt
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_MESSAGES/SYS_LC_MESSAGES base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_MONETARY base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_NUMERIC base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_TIME base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-4 base-locale-lt
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_CTYPE base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_MESSAGES base-locale-lt
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_MESSAGES/SYS_LC_MESSAGES base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_MONETARY base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_NUMERIC base-locale-lt nls
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_TIME base-locale-lt nls
|
||||
./usr/share/locale/nb base-locale-nb
|
||||
./usr/share/locale/nb/LC_MESSAGES base-locale-nb
|
||||
./usr/share/locale/nb/LC_MESSAGES/texinfo.mo base-texinfo_locale-nb nls
|
||||
@ -2794,18 +3110,48 @@
|
||||
./usr/share/locale/nl/LC_MESSAGES/texinfo.mo base-texinfo_locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-1 base-locale-nl
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_CTYPE base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_MESSAGES base-locale-nl
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_MONETARY base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_NUMERIC base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_TIME base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-15 base-locale-nl
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_CTYPE base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_MESSAGES base-locale-nl
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_MONETARY base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_NUMERIC base-locale-nl nls
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_TIME base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-1 base-locale-nl
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_CTYPE base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_MESSAGES base-locale-nl
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_MONETARY base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_NUMERIC base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_TIME base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-15 base-locale-nl
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_CTYPE base-locale-nl nls
|
||||
./usr/share/locale/nn base-locale-share
|
||||
./usr/share/locale/nn/LC_MESSAGES base-locale-share
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_MESSAGES base-locale-nl
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_MONETARY base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_NUMERIC base-locale-nl nls
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_TIME base-locale-nl nls
|
||||
./usr/share/locale/nn base-locale-nn
|
||||
./usr/share/locale/nn/LC_MESSAGES base-locale-nn
|
||||
./usr/share/locale/nn_NO.ISO8859-1 base-locale-nn
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_CTYPE base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_MESSAGES base-locale-nn
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_MONETARY base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_NUMERIC base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_TIME base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-15 base-locale-nn
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_CTYPE base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_MESSAGES base-locale-nn
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_MONETARY base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_NUMERIC base-locale-nn nls
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_TIME base-locale-nn nls
|
||||
./usr/share/locale/no base-locale-no
|
||||
./usr/share/locale/no/LC_MESSAGES base-locale-no
|
||||
./usr/share/locale/no/LC_MESSAGES/grep.mo base-locale-no nls
|
||||
@ -2815,8 +3161,18 @@
|
||||
./usr/share/locale/no@nynorsk/LC_MESSAGES base-locale-no
|
||||
./usr/share/locale/no_NO.ISO8859-1 base-locale-no
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_CTYPE base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_MESSAGES base-locale-no
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_MONETARY base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_NUMERIC base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_TIME base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-15 base-locale-no
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_CTYPE base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_MESSAGES base-locale-no
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_MONETARY base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_NUMERIC base-locale-no nls
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_TIME base-locale-no nls
|
||||
./usr/share/locale/pl base-locale-pl
|
||||
./usr/share/locale/pl/LC_MESSAGES base-locale-pl
|
||||
./usr/share/locale/pl/LC_MESSAGES/grep.mo base-locale-pl nls
|
||||
@ -2824,24 +3180,49 @@
|
||||
./usr/share/locale/pl/LC_MESSAGES/texinfo.mo base-texinfo_locale-pl nls
|
||||
./usr/share/locale/pl_PL.ISO8859-2 base-locale-pl
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_CTYPE base-locale-pl nls
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_MESSAGES base-locale-pl
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-pl nls
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_MONETARY base-locale-pl nls
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_NUMERIC base-locale-pl nls
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_TIME base-locale-pl nls
|
||||
./usr/share/locale/pt base-locale-pt
|
||||
./usr/share/locale/pt/LC_MESSAGES base-locale-pt
|
||||
./usr/share/locale/pt/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/pt_BR base-locale-pt
|
||||
./usr/share/locale/pt_BR.ISO8859-1 base-locale-pt
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_CTYPE base-locale-pt nls
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_MESSAGES base-locale-pt
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-pt nls
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_MONETARY base-locale-pt nls
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_NUMERIC base-locale-pt nls
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_TIME base-locale-pt nls
|
||||
./usr/share/locale/pt_BR/LC_MESSAGES base-locale-pt
|
||||
./usr/share/locale/pt_BR/LC_MESSAGES/grep.mo base-locale-pt nls
|
||||
./usr/share/locale/pt_BR/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/pt_PT.ISO8859-1 base-locale-pt
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_CTYPE base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_MESSAGES base-locale-pt
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_MONETARY base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_NUMERIC base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_TIME base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-15 base-locale-pt
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_CTYPE base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_MESSAGES base-locale-pt
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_MONETARY base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_NUMERIC base-locale-pt nls
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_TIME base-locale-pt nls
|
||||
./usr/share/locale/ro base-locale-ro
|
||||
./usr/share/locale/ro/LC_MESSAGES base-locale-ro
|
||||
./usr/share/locale/ro/LC_MESSAGES/texinfo.mo base-texinfo_locale-ro nls
|
||||
./usr/share/locale/ro_RO.ISO8859-2 base-locale-ro
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_CTYPE base-locale-ro nls
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_MESSAGES base-locale-ro
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ro nls
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_MONETARY base-locale-ro nls
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_NUMERIC base-locale-ro nls
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_TIME base-locale-ro nls
|
||||
./usr/share/locale/ru base-locale-ru
|
||||
./usr/share/locale/ru/LC_MESSAGES base-locale-ru
|
||||
./usr/share/locale/ru/LC_MESSAGES/grep.mo base-locale-ru nls
|
||||
@ -2849,14 +3230,39 @@
|
||||
./usr/share/locale/ru/LC_MESSAGES/texinfo.mo base-texinfo_locale-ru nls
|
||||
./usr/share/locale/ru_BY.CP1251 base-locale-ru
|
||||
./usr/share/locale/ru_BY.CP1251/LC_CTYPE base-locale-ru nls
|
||||
./usr/share/locale/ru_BY.CP1251/LC_MESSAGES base-locale-ru
|
||||
./usr/share/locale/ru_BY.CP1251/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ru nls
|
||||
./usr/share/locale/ru_BY.CP1251/LC_MONETARY base-locale-ru nls
|
||||
./usr/share/locale/ru_BY.CP1251/LC_NUMERIC base-locale-ru nls
|
||||
./usr/share/locale/ru_BY.CP1251/LC_TIME base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP1251 base-locale-ru
|
||||
./usr/share/locale/ru_RU.CP1251/LC_CTYPE base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP1251/LC_MESSAGES base-locale-ru
|
||||
./usr/share/locale/ru_RU.CP1251/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP1251/LC_MONETARY base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP1251/LC_NUMERIC base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP1251/LC_TIME base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP866 base-locale-ru
|
||||
./usr/share/locale/ru_RU.CP866/LC_CTYPE base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP866/LC_MESSAGES base-locale-ru
|
||||
./usr/share/locale/ru_RU.CP866/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP866/LC_MONETARY base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP866/LC_NUMERIC base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.CP866/LC_TIME base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.ISO8859-5 base-locale-ru
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_CTYPE base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_MESSAGES base-locale-ru
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_MONETARY base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_NUMERIC base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_TIME base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.KOI8-R base-locale-ru
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_CTYPE base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_MESSAGES base-locale-ru
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_MESSAGES/SYS_LC_MESSAGES base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_MONETARY base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_NUMERIC base-locale-ru nls
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_TIME base-locale-ru nls
|
||||
./usr/share/locale/ru_SU.CP866 base-obsolete obsolete
|
||||
./usr/share/locale/ru_SU.CP866/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/ru_SU.ISO8859-5 base-obsolete obsolete
|
||||
@ -2867,18 +3273,56 @@
|
||||
./usr/share/locale/sk/LC_MESSAGES base-locale-sk
|
||||
./usr/share/locale/sk_SK.ISO8859-2 base-locale-sk
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_CTYPE base-locale-sk nls
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_MESSAGES base-locale-sk nls
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sk nls
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_MONETARY base-locale-sk nls
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_NUMERIC base-locale-sk nls
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_TIME base-locale-sk nls
|
||||
./usr/share/locale/sl base-locale-sl
|
||||
./usr/share/locale/sl/LC_MESSAGES base-locale-sl
|
||||
./usr/share/locale/sl/LC_MESSAGES/grep.mo base-locale-sl nls
|
||||
./usr/share/locale/sl/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/sl_SI.ISO8859-2 base-locale-sl
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_CTYPE base-locale-sl nls
|
||||
./usr/share/locale/sr base-locale-share
|
||||
./usr/share/locale/sr/LC_MESSAGES base-locale-share
|
||||
./usr/share/locale/sr_YU.ISO8859-2 base-locale-sr
|
||||
./usr/share/locale/sr_YU.ISO8859-2/LC_CTYPE base-locale-sr nls
|
||||
./usr/share/locale/sr_YU.ISO8859-5 base-locale-sr
|
||||
./usr/share/locale/sr_YU.ISO8859-5/LC_CTYPE base-locale-sr nls
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_MESSAGES base-locale-sl
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sl nls
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_MONETARY base-locale-sl nls
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_NUMERIC base-locale-sl nls
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_TIME base-locale-sl nls
|
||||
./usr/share/locale/sr base-locale-sr
|
||||
./usr/share/locale/sr/LC_MESSAGES base-locale-sr
|
||||
./usr/share/locale/sr_ME.ISO8859-2 base-locale-sr
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_CTYPE base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_MESSAGES base-locale-sr
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_MONETARY base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_NUMERIC base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_TIME base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-5 base-locale-sr
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_CTYPE base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_MESSAGES base-locale-sr
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_MONETARY base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_NUMERIC base-locale-sr nls
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_TIME base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-2 base-locale-sr
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_CTYPE base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_MESSAGES base-locale-sr
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_MONETARY base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_NUMERIC base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_TIME base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-5 base-locale-sr
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_CTYPE base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_MESSAGES base-locale-sr
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_MONETARY base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_NUMERIC base-locale-sr nls
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_TIME base-locale-sr nls
|
||||
./usr/share/locale/sr_YU.ISO8859-2 base-obsolete obsolete
|
||||
./usr/share/locale/sr_YU.ISO8859-2/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/sr_YU.ISO8859-5 base-obsolete obsolete
|
||||
./usr/share/locale/sr_YU.ISO8859-5/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/sv base-locale-sv
|
||||
./usr/share/locale/sv/LC_MESSAGES base-locale-sv
|
||||
./usr/share/locale/sv/LC_MESSAGES/grep.mo base-util_locale-sv nls
|
||||
@ -2886,38 +3330,95 @@
|
||||
./usr/share/locale/sv/LC_MESSAGES/texinfo.mo base-texinfo_locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-1 base-locale-sv
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_CTYPE base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_MESSAGES base-locale-sv
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_MONETARY base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_NUMERIC base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_TIME base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-15 base-locale-sv
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_CTYPE base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_MESSAGES base-locale-sv
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_MESSAGES/SYS_LC_MESSAGES base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_MONETARY base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_NUMERIC base-locale-sv nls
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_TIME base-locale-sv nls
|
||||
./usr/share/locale/tr base-locale-tr
|
||||
./usr/share/locale/tr/LC_MESSAGES base-locale-tr
|
||||
./usr/share/locale/tr/LC_MESSAGES/tar.mo base-obsolete obsolete
|
||||
./usr/share/locale/tr/LC_MESSAGES/texinfo.mo base-texinfo_locale-tr nls
|
||||
./usr/share/locale/tr_TR.ISO8859-9 base-locale-tr
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_CTYPE base-locale-tr nls
|
||||
./usr/share/locale/uk base-locale-share
|
||||
./usr/share/locale/uk/LC_MESSAGES base-locale-share
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_MESSAGES base-locale-tr
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_MESSAGES/SYS_LC_MESSAGES base-locale-tr nls
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_MONETARY base-locale-tr nls
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_NUMERIC base-locale-tr nls
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_TIME base-locale-tr nls
|
||||
./usr/share/locale/uk base-locale-uk
|
||||
./usr/share/locale/uk/LC_MESSAGES base-locale-uk
|
||||
./usr/share/locale/uk_UA.CP1251 base-locale-uk
|
||||
./usr/share/locale/uk_UA.CP1251/LC_CTYPE base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.CP1251/LC_MESSAGES base-locale-uk
|
||||
./usr/share/locale/uk_UA.CP1251/LC_MESSAGES/SYS_LC_MESSAGES base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.CP1251/LC_MONETARY base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.CP1251/LC_NUMERIC base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.CP1251/LC_TIME base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.ISO8859-5 base-locale-uk
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_CTYPE base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_MESSAGES base-locale-uk
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_MESSAGES/SYS_LC_MESSAGES base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_MONETARY base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_NUMERIC base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_TIME base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.KOI8-U base-locale-uk
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_CTYPE base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES base-locale-uk
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES/SYS_LC_MESSAGES base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_MONETARY base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_NUMERIC base-locale-uk nls
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_TIME base-locale-uk nls
|
||||
./usr/share/locale/zh_CN base-locale-zh
|
||||
./usr/share/locale/zh_CN.GB18030 base-locale-zh
|
||||
./usr/share/locale/zh_CN.GB18030/LC_CTYPE base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.GB18030/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_CN.GB18030/LC_MESSAGES/SYS_LC_MESSAGES base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.GB18030/LC_MONETARY base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.GB18030/LC_NUMERIC base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.GB18030/LC_TIME base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.eucCN base-locale-zh
|
||||
./usr/share/locale/zh_CN.eucCN/LC_CTYPE base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.eucCN/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_CN.eucCN/LC_MESSAGES/SYS_LC_MESSAGES base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.eucCN/LC_MONETARY base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.eucCN/LC_NUMERIC base-locale-zh nls
|
||||
./usr/share/locale/zh_CN.eucCN/LC_TIME base-locale-zh nls
|
||||
./usr/share/locale/zh_CN/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_CN/LC_MESSAGES/texinfo.mo base-texinfo_locale-zh nls
|
||||
./usr/share/locale/zh_HK.Big5-HKSCS base-locale-zh
|
||||
./usr/share/locale/zh_HK.Big5-HKSCS/LC_CTYPE base-locale-zh nls
|
||||
./usr/share/locale/zh_HK.Big5-HKSCS base-obsolete obsolete
|
||||
./usr/share/locale/zh_HK.Big5-HKSCS/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/zh_HK.Big5hkscs base-locale-zh
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_CTYPE base-locale-zh nls
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_MESSAGES/SYS_LC_MESSAGES base-locale-zh nls
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_MONETARY base-locale-zh nls
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_NUMERIC base-locale-zh nls
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_TIME base-locale-zh nls
|
||||
./usr/share/locale/zh_TW base-locale-zh
|
||||
./usr/share/locale/zh_TW.BIG5 base-obsolete obsolete
|
||||
./usr/share/locale/zh_TW.BIG5/LC_CTYPE base-obsolete obsolete
|
||||
./usr/share/locale/zh_TW.Big5 base-locale-zh
|
||||
./usr/share/locale/zh_TW.Big5/LC_CTYPE base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.Big5/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_TW.Big5/LC_MESSAGES/SYS_LC_MESSAGES base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.Big5/LC_MONETARY base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.Big5/LC_NUMERIC base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.Big5/LC_TIME base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.eucTW base-locale-zh
|
||||
./usr/share/locale/zh_TW.eucTW/LC_CTYPE base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.eucTW/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_TW.eucTW/LC_MESSAGES/SYS_LC_MESSAGES base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.eucTW/LC_MONETARY base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.eucTW/LC_NUMERIC base-locale-zh nls
|
||||
./usr/share/locale/zh_TW.eucTW/LC_TIME base-locale-zh nls
|
||||
./usr/share/locale/zh_TW/LC_MESSAGES base-locale-zh
|
||||
./usr/share/locale/zh_TW/LC_MESSAGES/texinfo.mo base-texinfo_locale-zh nls
|
||||
./usr/share/man base-man-share
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile,v 1.21 2007/11/06 19:27:07 martin Exp $
|
||||
# $NetBSD: Makefile,v 1.22 2009/01/02 00:20:18 tnozaki Exp $
|
||||
#
|
||||
# Stubs to kill off some things from libc:
|
||||
# This save space on a boot system.
|
||||
@ -7,7 +7,8 @@
|
||||
.PATH.c: ${.CURDIR}/../../../lib/libc/gen ${.CURDIR}/../../../lib/libc/locale
|
||||
|
||||
CPPFLAGS+= -DSMALL
|
||||
CPPFLAGS.runetable.c+= -I ${HACKSRC}/../../../lib/libc -DALL_80_TO_FF_SW1
|
||||
CPPFLAGS.runetable.c+= -I${HACKSRC}/../../../lib/libc/citrus \
|
||||
-DALL_80_TO_FF_SW1
|
||||
|
||||
LIB= hack
|
||||
SRCS= getcap.c getgrent.c getnet.c getnetgr.c getpwent.c \
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile.inc,v 1.22 2007/11/06 19:27:07 martin Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.23 2009/01/02 00:20:18 tnozaki Exp $
|
||||
#
|
||||
# Include this fragment to build libhack.o
|
||||
# It is .o and not .a to make sure these are the
|
||||
@ -21,7 +21,8 @@ HACKOBJS+= getcap.o getgrent.o getnet.o getnetgr.o getpwent.o \
|
||||
localeconv.o multibyte.o perror.o runetable.o setlocale.o \
|
||||
strerror.o strsignal.o syslog.o utmp.o yplib.o
|
||||
|
||||
CPPFLAGS.runetable.c+= -I ${HACKSRC}/../../../lib/libc -DALL_80_TO_FF_SW1
|
||||
CPPFLAGS.runetable.c+= -I${HACKSRC}/../../../lib/libc/citrus \
|
||||
-DALL_80_TO_FF_SW1
|
||||
|
||||
libhack.o: ${HACKOBJS}
|
||||
${LD} -r -o $@ ${HACKOBJS}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: NetBSD.dist,v 1.386 2008/11/12 12:35:52 ad Exp $
|
||||
# $NetBSD: NetBSD.dist,v 1.387 2009/01/02 00:20:18 tnozaki Exp $
|
||||
# @(#)4.4BSD.dist 8.1 (Berkeley) 6/13/93
|
||||
|
||||
# Do not customize this file as it may be overwritten on upgrades.
|
||||
@ -755,76 +755,121 @@
|
||||
./usr/share/legal
|
||||
./usr/share/locale
|
||||
./usr/share/locale/af_ZA.ISO8859-1
|
||||
./usr/share/locale/af_ZA.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/af_ZA.ISO8859-15
|
||||
./usr/share/locale/af_ZA.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/be
|
||||
./usr/share/locale/be/LC_MESSAGES
|
||||
./usr/share/locale/be_BY.CP1251
|
||||
./usr/share/locale/be_BY.CP1251/LC_MESSAGES
|
||||
./usr/share/locale/be_BY.ISO8859-5
|
||||
./usr/share/locale/be_BY.ISO8859-5/LC_MESSAGES
|
||||
./usr/share/locale/bg_BG.CP1251
|
||||
./usr/share/locale/bg_BG.CP1251/LC_MESSAGES
|
||||
./usr/share/locale/ca
|
||||
./usr/share/locale/ca/LC_MESSAGES
|
||||
./usr/share/locale/ca_ES.ISO8859-1
|
||||
./usr/share/locale/ca_ES.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/ca_ES.ISO8859-15
|
||||
./usr/share/locale/ca_ES.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/cs
|
||||
./usr/share/locale/cs/LC_MESSAGES
|
||||
./usr/share/locale/cs_CZ.ISO8859-2
|
||||
./usr/share/locale/cs_CZ.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/da
|
||||
./usr/share/locale/da/LC_MESSAGES
|
||||
./usr/share/locale/da_DK.ISO8859-1
|
||||
./usr/share/locale/da_DK.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/da_DK.ISO8859-15
|
||||
./usr/share/locale/da_DK.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/de
|
||||
./usr/share/locale/de/LC_MESSAGES
|
||||
./usr/share/locale/de_AT
|
||||
./usr/share/locale/de_AT.ISO8859-1
|
||||
./usr/share/locale/de_AT.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/de_AT.ISO8859-15
|
||||
./usr/share/locale/de_AT.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/de_AT/LC_MESSAGES
|
||||
./usr/share/locale/de_CH.ISO8859-1
|
||||
./usr/share/locale/de_CH.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/de_CH.ISO8859-15
|
||||
./usr/share/locale/de_CH.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/de_DE.ISO8859-1
|
||||
./usr/share/locale/de_DE.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/de_DE.ISO8859-15
|
||||
./usr/share/locale/de_DE.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/el
|
||||
./usr/share/locale/el/LC_MESSAGES
|
||||
./usr/share/locale/el_GR.ISO8859-7
|
||||
./usr/share/locale/el_GR.ISO8859-7/LC_MESSAGES
|
||||
./usr/share/locale/en@boldquot
|
||||
./usr/share/locale/en@boldquot/LC_MESSAGES
|
||||
./usr/share/locale/en@quot
|
||||
./usr/share/locale/en@quot/LC_MESSAGES
|
||||
./usr/share/locale/en_AU.ISO8859-1
|
||||
./usr/share/locale/en_AU.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/en_AU.ISO8859-15
|
||||
./usr/share/locale/en_AU.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/en_CA.ISO8859-1
|
||||
./usr/share/locale/en_CA.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/en_CA.ISO8859-15
|
||||
./usr/share/locale/en_CA.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/en_GB.ISO8859-1
|
||||
./usr/share/locale/en_GB.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/en_GB.ISO8859-15
|
||||
./usr/share/locale/en_GB.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/en_NZ.ISO8859-1
|
||||
./usr/share/locale/en_NZ.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/en_NZ.ISO8859-15
|
||||
./usr/share/locale/en_NZ.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/en_US.ISO8859-1
|
||||
./usr/share/locale/en_US.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/en_US.ISO8859-15
|
||||
./usr/share/locale/en_US.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/en_US.US-ASCII
|
||||
./usr/share/locale/en_US.US-ASCII/LC_MESSAGES
|
||||
./usr/share/locale/en_US.UTF-8
|
||||
./usr/share/locale/en_US.UTF-8/LC_MESSAGES
|
||||
./usr/share/locale/eo
|
||||
./usr/share/locale/eo/LC_MESSAGES
|
||||
./usr/share/locale/es
|
||||
./usr/share/locale/es/LC_MESSAGES
|
||||
./usr/share/locale/es_ES.ISO8859-1
|
||||
./usr/share/locale/es_ES.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/es_ES.ISO8859-15
|
||||
./usr/share/locale/es_ES.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/et
|
||||
./usr/share/locale/et/LC_MESSAGES
|
||||
./usr/share/locale/et_EE.ISO8859-15
|
||||
./usr/share/locale/et_EE.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/eu_ES.ISO8859-1
|
||||
./usr/share/locale/eu_ES.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/eu_ES.ISO8859-15
|
||||
./usr/share/locale/eu_ES.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/fi
|
||||
./usr/share/locale/fi/LC_MESSAGES
|
||||
./usr/share/locale/fi_FI.ISO8859-1
|
||||
./usr/share/locale/fi_FI.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/fi_FI.ISO8859-15
|
||||
./usr/share/locale/fi_FI.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/fr
|
||||
./usr/share/locale/fr/LC_MESSAGES
|
||||
./usr/share/locale/fr_BE.ISO8859-1
|
||||
./usr/share/locale/fr_BE.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/fr_BE.ISO8859-15
|
||||
./usr/share/locale/fr_BE.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/fr_CA.ISO8859-1
|
||||
./usr/share/locale/fr_CA.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/fr_CA.ISO8859-15
|
||||
./usr/share/locale/fr_CA.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/fr_CH.ISO8859-1
|
||||
./usr/share/locale/fr_CH.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/fr_CH.ISO8859-15
|
||||
./usr/share/locale/fr_CH.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/fr_FR.ISO8859-1
|
||||
./usr/share/locale/fr_FR.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/fr_FR.ISO8859-15
|
||||
./usr/share/locale/fr_FR.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/gl
|
||||
./usr/share/locale/gl/LC_MESSAGES
|
||||
./usr/share/locale/he
|
||||
@ -832,100 +877,155 @@
|
||||
./usr/share/locale/hr
|
||||
./usr/share/locale/hr/LC_MESSAGES
|
||||
./usr/share/locale/hr_HR.ISO8859-2
|
||||
./usr/share/locale/hr_HR.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/hu_HU.ISO8859-2
|
||||
./usr/share/locale/hu_HU.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/hy_AM.ARMSCII-8
|
||||
./usr/share/locale/hy_AM.ARMSCII-8/LC_MESSAGES
|
||||
./usr/share/locale/id
|
||||
./usr/share/locale/id/LC_MESSAGES
|
||||
./usr/share/locale/is_IS.ISO8859-1
|
||||
./usr/share/locale/is_IS.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/is_IS.ISO8859-15
|
||||
./usr/share/locale/is_IS.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/it
|
||||
./usr/share/locale/it/LC_MESSAGES
|
||||
./usr/share/locale/it_CH.ISO8859-1
|
||||
./usr/share/locale/it_CH.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/it_CH.ISO8859-15
|
||||
./usr/share/locale/it_CH.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/it_IT.ISO8859-1
|
||||
./usr/share/locale/it_IT.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/it_IT.ISO8859-15
|
||||
./usr/share/locale/it_IT.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/ja
|
||||
./usr/share/locale/ja/LC_MESSAGES
|
||||
./usr/share/locale/ja_JP.ISO2022-JP
|
||||
./usr/share/locale/ja_JP.ISO2022-JP2
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP/LC_MESSAGES
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2
|
||||
./usr/share/locale/ja_JP.ISO-2022-JP-2/LC_MESSAGES
|
||||
./usr/share/locale/ja_JP.SJIS
|
||||
./usr/share/locale/ja_JP.SJIS/LC_MESSAGES
|
||||
./usr/share/locale/ja_JP.ct
|
||||
./usr/share/locale/ja_JP.ct/LC_MESSAGES
|
||||
./usr/share/locale/ja_JP.eucJP
|
||||
./usr/share/locale/ja_JP.eucJP/LC_MESSAGES
|
||||
./usr/share/locale/kk_KZ.PT154
|
||||
./usr/share/locale/kk_KZ.PT154/LC_MESSAGES
|
||||
./usr/share/locale/ko
|
||||
./usr/share/locale/ko/LC_MESSAGES
|
||||
./usr/share/locale/ko_KR.eucKR
|
||||
./usr/share/locale/lt_LT.ISO8859-4
|
||||
./usr/share/locale/ko_KR.eucKR/LC_MESSAGES
|
||||
./usr/share/locale/lt_LT.ISO8859-13
|
||||
./usr/share/locale/lt_LT.ISO8859-13/LC_MESSAGES
|
||||
./usr/share/locale/lt_LT.ISO8859-4
|
||||
./usr/share/locale/lt_LT.ISO8859-4/LC_MESSAGES
|
||||
./usr/share/locale/nb
|
||||
./usr/share/locale/nb/LC_MESSAGES
|
||||
./usr/share/locale/nl
|
||||
./usr/share/locale/nl/LC_MESSAGES
|
||||
./usr/share/locale/nl_BE.ISO8859-1
|
||||
./usr/share/locale/nl_BE.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/nl_BE.ISO8859-15
|
||||
./usr/share/locale/nl_BE.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/nl_NL.ISO8859-1
|
||||
./usr/share/locale/nl_NL.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/nl_NL.ISO8859-15
|
||||
./usr/share/locale/nl_NL.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/nn
|
||||
./usr/share/locale/nn/LC_MESSAGES
|
||||
./usr/share/locale/nn_NO.ISO8859-1
|
||||
./usr/share/locale/nn_NO.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/nn_NO.ISO8859-15
|
||||
./usr/share/locale/nn_NO.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/no
|
||||
./usr/share/locale/no/LC_MESSAGES
|
||||
./usr/share/locale/no@nynorsk
|
||||
./usr/share/locale/no@nynorsk/LC_MESSAGES
|
||||
./usr/share/locale/no_NO.ISO8859-1
|
||||
./usr/share/locale/no_NO.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/no_NO.ISO8859-15
|
||||
./usr/share/locale/no_NO.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/pl
|
||||
./usr/share/locale/pl/LC_MESSAGES
|
||||
./usr/share/locale/pl_PL.ISO8859-2
|
||||
./usr/share/locale/pl_PL.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/pt
|
||||
./usr/share/locale/pt/LC_MESSAGES
|
||||
./usr/share/locale/pt_BR
|
||||
./usr/share/locale/pt_BR/LC_MESSAGES
|
||||
./usr/share/locale/pt_BR.ISO8859-1
|
||||
./usr/share/locale/pt_BR.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/pt_BR/LC_MESSAGES
|
||||
./usr/share/locale/pt_PT.ISO8859-1
|
||||
./usr/share/locale/pt_PT.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/pt_PT.ISO8859-15
|
||||
./usr/share/locale/pt_PT.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/ro
|
||||
./usr/share/locale/ro/LC_MESSAGES
|
||||
./usr/share/locale/ro_RO.ISO8859-2
|
||||
./usr/share/locale/ro_RO.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/ru
|
||||
./usr/share/locale/ru/LC_MESSAGES
|
||||
./usr/share/locale/ru_BY.CP1251
|
||||
./usr/share/locale/ru_BY.CP1251/LC_MESSAGES
|
||||
./usr/share/locale/ru_RU.CP1251
|
||||
./usr/share/locale/ru_RU.CP1251/LC_MESSAGES
|
||||
./usr/share/locale/ru_RU.CP866
|
||||
./usr/share/locale/ru_RU.CP866/LC_MESSAGES
|
||||
./usr/share/locale/ru_RU.ISO8859-5
|
||||
./usr/share/locale/ru_RU.ISO8859-5/LC_MESSAGES
|
||||
./usr/share/locale/ru_RU.KOI8-R
|
||||
./usr/share/locale/ru_RU.KOI8-R/LC_MESSAGES
|
||||
./usr/share/locale/sk
|
||||
./usr/share/locale/sk/LC_MESSAGES
|
||||
./usr/share/locale/sk_SK.ISO8859-2
|
||||
./usr/share/locale/sk_SK.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/sl
|
||||
./usr/share/locale/sl/LC_MESSAGES
|
||||
./usr/share/locale/sl_SI.ISO8859-2
|
||||
./usr/share/locale/sl_SI.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/sr
|
||||
./usr/share/locale/sr/LC_MESSAGES
|
||||
./usr/share/locale/sr_YU.ISO8859-2
|
||||
./usr/share/locale/sr_YU.ISO8859-5
|
||||
./usr/share/locale/sr_ME.ISO8859-2
|
||||
./usr/share/locale/sr_ME.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/sr_ME.ISO8859-5
|
||||
./usr/share/locale/sr_ME.ISO8859-5/LC_MESSAGES
|
||||
./usr/share/locale/sr_RS.ISO8859-2
|
||||
./usr/share/locale/sr_RS.ISO8859-2/LC_MESSAGES
|
||||
./usr/share/locale/sr_RS.ISO8859-5
|
||||
./usr/share/locale/sr_RS.ISO8859-5/LC_MESSAGES
|
||||
./usr/share/locale/sv
|
||||
./usr/share/locale/sv/LC_MESSAGES
|
||||
./usr/share/locale/sv_SE.ISO8859-1
|
||||
./usr/share/locale/sv_SE.ISO8859-1/LC_MESSAGES
|
||||
./usr/share/locale/sv_SE.ISO8859-15
|
||||
./usr/share/locale/sv_SE.ISO8859-15/LC_MESSAGES
|
||||
./usr/share/locale/tr
|
||||
./usr/share/locale/tr/LC_MESSAGES
|
||||
./usr/share/locale/tr_TR.ISO8859-9
|
||||
./usr/share/locale/tr_TR.ISO8859-9/LC_MESSAGES
|
||||
./usr/share/locale/uk
|
||||
./usr/share/locale/uk/LC_MESSAGES
|
||||
./usr/share/locale/uk_UA.CP1251
|
||||
./usr/share/locale/uk_UA.CP1251/LC_MESSAGES
|
||||
./usr/share/locale/uk_UA.ISO8859-5
|
||||
./usr/share/locale/uk_UA.ISO8859-5/LC_MESSAGES
|
||||
./usr/share/locale/uk_UA.KOI8-U
|
||||
./usr/share/locale/uk_UA.KOI8-U/LC_MESSAGES
|
||||
./usr/share/locale/zh_CN
|
||||
./usr/share/locale/zh_CN.GB18030
|
||||
./usr/share/locale/zh_CN.eucCN
|
||||
./usr/share/locale/zh_CN/LC_MESSAGES
|
||||
./usr/share/locale/zh_HK.Big5-HKSCS
|
||||
./usr/share/locale/zh_CN.GB18030
|
||||
./usr/share/locale/zh_CN.GB18030/LC_MESSAGES
|
||||
./usr/share/locale/zh_CN.eucCN
|
||||
./usr/share/locale/zh_CN.eucCN/LC_MESSAGES
|
||||
./usr/share/locale/zh_HK.Big5hkscs
|
||||
./usr/share/locale/zh_HK.Big5hkscs/LC_MESSAGES
|
||||
./usr/share/locale/zh_TW
|
||||
./usr/share/locale/zh_TW.Big5
|
||||
./usr/share/locale/zh_TW.eucTW
|
||||
./usr/share/locale/zh_TW/LC_MESSAGES
|
||||
./usr/share/locale/zh_TW.Big5
|
||||
./usr/share/locale/zh_TW.Big5/LC_MESSAGES
|
||||
./usr/share/locale/zh_TW.eucTW
|
||||
./usr/share/locale/zh_TW.eucTW/LC_MESSAGES
|
||||
./usr/share/man
|
||||
./usr/share/man/cat1
|
||||
./usr/share/man/cat1/atari
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: locale.h,v 1.14 2005/02/03 04:39:32 perry Exp $ */
|
||||
/* $NetBSD: locale.h,v 1.15 2009/01/02 00:20:18 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
@ -75,6 +75,14 @@ struct lconv {
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
|
||||
#ifdef __SETLOCALE_SOURCE__
|
||||
|
||||
typedef struct _locale_impl_t *_locale_t;
|
||||
|
||||
#define _LC_GLOBAL_LOCALE ((_locale_t)-1)
|
||||
|
||||
#endif
|
||||
|
||||
__BEGIN_DECLS
|
||||
struct lconv *localeconv(void);
|
||||
#ifdef __SETLOCALE_SOURCE__
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile.inc,v 1.5 2004/07/21 20:27:46 tshiozak Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.6 2009/01/02 00:20:19 tnozaki Exp $
|
||||
|
||||
# sources
|
||||
.PATH: ${ARCHDIR}/citrus ${.CURDIR}/citrus
|
||||
@ -7,12 +7,23 @@ CITRUS?= yes
|
||||
|
||||
.if ${CITRUS} == "yes"
|
||||
MODULE_SHLIB_MAJOR!= . ${NETBSDSRCDIR}/lib/i18n_module/shlib_version ; echo $$major
|
||||
CPPFLAGS+= -DI18NMODULE_MAJOR=${MODULE_SHLIB_MAJOR} -DCITRUS
|
||||
|
||||
SRCS+= citrus_bcs.c citrus_csmapper.c citrus_ctype.c citrus_ctype_fallback.c \
|
||||
CPPFLAGS.citrus_module.c+=-DI18NMODULE_MAJOR=${MODULE_SHLIB_MAJOR}
|
||||
SRCS+= citrus_bcs.c citrus_bcs_strtol.c citrus_bcs_strtoul.c \
|
||||
citrus_csmapper.c citrus_ctype.c citrus_ctype_fallback.c \
|
||||
citrus_db.c citrus_db_hash.c citrus_esdb.c citrus_hash.c \
|
||||
citrus_iconv.c citrus_lookup.c \
|
||||
citrus_mapper.c citrus_memstream.c citrus_mmap.c citrus_module.c \
|
||||
citrus_none.c citrus_stdenc.c
|
||||
|
||||
SRCS+= citrus_lc_ctype.c \
|
||||
citrus_lc_monetary.c \
|
||||
citrus_lc_numeric.c \
|
||||
citrus_lc_time.c \
|
||||
citrus_lc_messages.c
|
||||
CPPFLAGS.citrus_bcs_strtol.c+= -I${LIBCDIR}/../../common/lib/libc/stdlib
|
||||
CPPFLAGS.citrus_bcs_strtoul.c+= -I${LIBCDIR}/../../common/lib/libc/stdlib
|
||||
CPPFLAGS.citrus_lc_ctype.c+= -I${LIBCDIR}/locale
|
||||
CPPFLAGS.citrus_lc_monetary.c+= -I${LIBCDIR}/locale
|
||||
CPPFLAGS.citrus_lc_numeric.c+= -I${LIBCDIR}/locale
|
||||
CPPFLAGS.citrus_lc_time.c+= -I${LIBCDIR}/locale
|
||||
CPPFLAGS.citrus_lc_messages.c+= -I${LIBCDIR}/locale
|
||||
.endif
|
||||
|
48
lib/libc/citrus/citrus_aliasname_local.h
Normal file
48
lib/libc/citrus/citrus_aliasname_local.h
Normal file
@ -0,0 +1,48 @@
|
||||
/* $NetBSD: citrus_aliasname_local.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_ALIASNAME_LOCAL_H_
|
||||
#define _CITRUS_ALIASNAME_LOCAL_H_
|
||||
|
||||
static __inline const char *
|
||||
__unaliasname(const char *dbname, const char *alias,
|
||||
void *buf, size_t bufsize)
|
||||
{
|
||||
return _lookup_simple(dbname, alias,
|
||||
buf, bufsize, _LOOKUP_CASE_SENSITIVE);
|
||||
}
|
||||
|
||||
static __inline int
|
||||
__isforcemapping(const char *name)
|
||||
{
|
||||
_DIAGASSERT(name != NULL);
|
||||
|
||||
return _bcs_strcasecmp("/force", name);
|
||||
}
|
||||
|
||||
#endif /*_CITRUS_ALIASNAME_LOCAL_H_*/
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: citrus_bcs.h,v 1.4 2008/02/09 14:56:20 junyoung Exp $ */
|
||||
/* $NetBSD: citrus_bcs.h,v 1.5 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2003 Citrus Project,
|
||||
@ -87,6 +87,12 @@ const char *_citrus_bcs_skip_nonws_len(const char * __restrict,
|
||||
void _citrus_bcs_trunc_rws_len(const char * __restrict, size_t * __restrict);
|
||||
void _citrus_bcs_convert_to_lower(char *);
|
||||
void _citrus_bcs_convert_to_upper(char *);
|
||||
|
||||
long int _citrus_bcs_strtol(
|
||||
const char * __restrict, char ** __restrict, int);
|
||||
unsigned long int _citrus_bcs_strtoul(
|
||||
const char * __restrict, char ** __restrict, int);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
59
lib/libc/citrus/citrus_bcs_strtol.c
Normal file
59
lib/libc/citrus/citrus_bcs_strtol.c
Normal file
@ -0,0 +1,59 @@
|
||||
/* $NetBSD: citrus_bcs_strtol.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2005 The DragonFly Project. All rights reserved.
|
||||
* Copyright (c) 2003, 2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: citrus_bcs_strtol.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_bcs.h"
|
||||
|
||||
#define _FUNCNAME _bcs_strtol
|
||||
#define __INT long int
|
||||
#define __INT_MIN LONG_MIN
|
||||
#define __INT_MAX LONG_MAX
|
||||
|
||||
#undef isspace
|
||||
#define isspace(c) _bcs_isspace(c)
|
||||
|
||||
#undef isdigit
|
||||
#define isdigit(c) _bcs_isdigit(c)
|
||||
|
||||
#undef isalpha
|
||||
#define isalpha(c) _bcs_isalpha(c)
|
||||
|
||||
#undef isupper
|
||||
#define isupper(c) _bcs_isupper(c)
|
||||
|
||||
#include "_strtol.h"
|
64
lib/libc/citrus/citrus_bcs_strtoul.c
Normal file
64
lib/libc/citrus/citrus_bcs_strtoul.c
Normal file
@ -0,0 +1,64 @@
|
||||
/* $NetBSD: citrus_bcs_strtoul.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2005 The DragonFly Project. All rights reserved.
|
||||
* Copyright (c) 2003, 2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_bcs_strtoul.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
#if HAVE_NBTOOL_CONFIG_H
|
||||
#include "nbtool_config.h"
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_bcs.h"
|
||||
|
||||
#define _FUNCNAME _bcs_strtoul
|
||||
#define __UINT unsigned long int
|
||||
#define __UINT_MAX ULONG_MAX
|
||||
|
||||
#undef isspace
|
||||
#define isspace(c) _bcs_isspace(c)
|
||||
|
||||
#undef isdigit
|
||||
#define isdigit(c) _bcs_isdigit(c)
|
||||
|
||||
#undef isalpha
|
||||
#define isalpha(c) _bcs_isalpha(c)
|
||||
|
||||
#undef isupper
|
||||
#define isupper(c) _bcs_isupper(c)
|
||||
|
||||
#include "_strtoul.h"
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: citrus_csmapper.c,v 1.8 2008/02/09 14:56:20 junyoung Exp $ */
|
||||
/* $NetBSD: citrus_csmapper.c,v 1.9 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2003 Citrus Project,
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_csmapper.c,v 1.8 2008/02/09 14:56:20 junyoung Exp $");
|
||||
__RCSID("$NetBSD: citrus_csmapper.c,v 1.9 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
@ -208,7 +208,7 @@ parse_line(struct parse_arg *pa, struct _region *r)
|
||||
"%.*s", (int)(z1.end-z1.begin), z1.begin);
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%.*s", (int)(z2.end-z2.begin), z2.begin);
|
||||
pa->norm = strtoul(buf, NULL, 0);
|
||||
pa->norm = _bcs_strtoul(buf, NULL, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
55
lib/libc/citrus/citrus_fix_grouping.h
Normal file
55
lib/libc/citrus/citrus_fix_grouping.h
Normal file
@ -0,0 +1,55 @@
|
||||
/* $NetBSD: citrus_fix_grouping.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_FIX_GROUPING_H_
|
||||
#define _CITRUS_FIX_GROUPING_H_
|
||||
|
||||
#define _CITRUS_LC_GROUPING_VALUE_MIN 0
|
||||
#define _CITRUS_LC_GROUPING_VALUE_MAX 126
|
||||
#define _CITRUS_LC_GROUPING_VALUE_NO_FUTHER 127
|
||||
|
||||
#if CHAR_MAX != _CITRUS_LC_GROUPING_VALUE_NO_FUTHER
|
||||
static __inline void
|
||||
_citrus_fixup_char_max_md(char *grouping)
|
||||
{
|
||||
char *p;
|
||||
|
||||
_DIAGASSERT(grouping != NULL);
|
||||
|
||||
for (p = grouping; *p != '\0'; ++p) {
|
||||
if (*p == _CITRUS_LC_GROUPING_VALUE_NO_FUTHER)
|
||||
*p = (char)CHAR_MAX;
|
||||
}
|
||||
}
|
||||
#define _CITRUS_FIXUP_CHAR_MAX_MD(grouping) \
|
||||
_citrus_fixup_char_max_md(__UNCONST(grouping))
|
||||
#else
|
||||
#define _CITRUS_FIXUP_CHAR_MAX_MD(grouping) /* nothing to do */
|
||||
#endif
|
||||
|
||||
#endif /*_CITRUS_FIX_GROUPING_H_*/
|
150
lib/libc/citrus/citrus_lc_ctype.c
Normal file
150
lib/libc/citrus/citrus_lc_ctype.c
Normal file
@ -0,0 +1,150 @@
|
||||
/* $NetBSD: citrus_lc_ctype.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_lc_ctype.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_region.h"
|
||||
#include "citrus_lookup.h"
|
||||
#include "citrus_aliasname_local.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
|
||||
#include "rune.h"
|
||||
#include "rune_local.h"
|
||||
#include "multibyte.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_citrus_LC_CTYPE_, name)
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template(_decl).h
|
||||
*/
|
||||
#define _CATEGORY_TYPE _RuneLocale
|
||||
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
static int
|
||||
_citrus_LC_CTYPE_create_impl(const char * __restrict root,
|
||||
const char * __restrict name, _RuneLocale ** __restrict pdata)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
FILE *fp;
|
||||
_RuneLocale *data;
|
||||
int ret;
|
||||
|
||||
_DIAGASSERT(root != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/LC_CTYPE", root, name);
|
||||
fp = fopen(path, "r");
|
||||
if (fp == NULL)
|
||||
return ENOENT;
|
||||
data = _Read_RuneMagi(fp);
|
||||
if (data == NULL) {
|
||||
data = _Read_CTypeAsRune(fp);
|
||||
if (data == NULL) {
|
||||
fclose(fp);
|
||||
return EFTYPE;
|
||||
}
|
||||
}
|
||||
fclose(fp);
|
||||
ret = _citrus_ctype_open(&data->rl_citrus_ctype, data->rl_encoding,
|
||||
data->rl_variable, data->rl_variable_len, _PRIVSIZE);
|
||||
if (!ret)
|
||||
ret = __runetable_to_netbsd_ctype(data);
|
||||
if (ret || __MB_LEN_MAX_RUNTIME <
|
||||
_citrus_ctype_get_mb_cur_max(data->rl_citrus_ctype)) {
|
||||
_NukeRune(data);
|
||||
return EINVAL;
|
||||
}
|
||||
*pdata = data;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
|
||||
_RuneLocale * __restrict data)
|
||||
{
|
||||
_DIAGASSERT(cache != NULL);
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
cache->ctype_tab = data->rl_ctype_tab;
|
||||
cache->tolower_tab = data->rl_tolower_tab;
|
||||
cache->toupper_tab = data->rl_toupper_tab;
|
||||
cache->mb_cur_max = _citrus_ctype_get_mb_cur_max(data->rl_citrus_ctype);
|
||||
cache->items[(size_t)CODESET] = data->rl_codeset;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_RuneLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
__mb_cur_max = _citrus_ctype_get_mb_cur_max(data->rl_citrus_ctype);
|
||||
_ctype_ = data->rl_ctype_tab;
|
||||
_tolower_tab_ = data->rl_tolower_tab;
|
||||
_toupper_tab_ = data->rl_toupper_tab;
|
||||
_CurrentRuneLocale = data;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_CTYPE
|
||||
#define _CATEGORY_NAME "LC_CTYPE"
|
||||
#define _CATEGORY_DEFAULT _DefaultRuneLocale
|
||||
|
||||
#include "nb_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_citrus_LC_CTYPE_);
|
163
lib/libc/citrus/citrus_lc_messages.c
Normal file
163
lib/libc/citrus/citrus_lc_messages.c
Normal file
@ -0,0 +1,163 @@
|
||||
/* $NetBSD: citrus_lc_messages.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_lc_messages.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_types.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_region.h"
|
||||
#include "citrus_lookup.h"
|
||||
#include "citrus_aliasname_local.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_mmap.h"
|
||||
#include "citrus_hash.h"
|
||||
#include "citrus_db.h"
|
||||
#include "citrus_db_hash.h"
|
||||
#include "citrus_memstream.h"
|
||||
#include "rune.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_citrus_LC_MESSAGES_, name)
|
||||
|
||||
#include "nb_lc_messages_misc.h"
|
||||
#include "citrus_lc_template_decl.h"
|
||||
|
||||
static __inline void
|
||||
_citrus_LC_MESSAGES_uninit(_MessagesLocale *data)
|
||||
{
|
||||
free(__UNCONST(data->yesexpr));
|
||||
free(__UNCONST(data->noexpr));
|
||||
free(__UNCONST(data->yesstr));
|
||||
free(__UNCONST(data->nostr));
|
||||
}
|
||||
|
||||
#include "citrus_lc_messages.h"
|
||||
|
||||
struct _citrus_LC_MESSAGES_key {
|
||||
const char *name;
|
||||
size_t offset;
|
||||
};
|
||||
|
||||
#define OFFSET(field) (offsetof(_MessagesLocale, field))
|
||||
static const struct _citrus_LC_MESSAGES_key keys[] = {
|
||||
{ _CITRUS_LC_MESSAGES_SYM_YESEXPR, OFFSET(yesexpr) },
|
||||
{ _CITRUS_LC_MESSAGES_SYM_NOEXPR, OFFSET(noexpr ) },
|
||||
{ _CITRUS_LC_MESSAGES_SYM_YESSTR, OFFSET(yesstr ) },
|
||||
{ _CITRUS_LC_MESSAGES_SYM_NOSTR, OFFSET(nostr ) },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_MESSAGES_init_normal(_MessagesLocale * __restrict data,
|
||||
struct _citrus_db * __restrict db)
|
||||
{
|
||||
const struct _citrus_LC_MESSAGES_key *key;
|
||||
char **p;
|
||||
const char *s;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(db != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys[0]; key->name != NULL; ++key) {
|
||||
if (_db_lookupstr_by_s(db, key->name, &s, NULL))
|
||||
goto fatal;
|
||||
p = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p = strdup(s);
|
||||
if (*p == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_MESSAGES_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_MESSAGES_init_fallback(_MessagesLocale * __restrict data,
|
||||
struct _memstream * __restrict ms)
|
||||
{
|
||||
const struct _citrus_LC_MESSAGES_key *key;
|
||||
char **p;
|
||||
const char *s;
|
||||
size_t n;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(ms != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys[0]; key->name != NULL; ++key) {
|
||||
if ((s = _memstream_getln(ms, &n)) == NULL)
|
||||
goto fatal;
|
||||
p = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p = strndup(s, n - 1);
|
||||
if (*p == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_MESSAGES_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by citrus_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_DB "LC_MESSAGES/SYS_LC_MESSAGES"
|
||||
#define _CATEGORY_MAGIC _CITRUS_LC_MESSAGES_MAGIC_1
|
||||
|
||||
#include "citrus_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_citrus_LC_MESSAGES_);
|
47
lib/libc/citrus/citrus_lc_messages.h
Normal file
47
lib/libc/citrus/citrus_lc_messages.h
Normal file
@ -0,0 +1,47 @@
|
||||
/* $NetBSD: citrus_lc_messages.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_LC_MESSAGES_H_
|
||||
#define _CITRUS_LC_MESSAGES_H_
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_MESSAGES_MAGIC_1 "CtrsME10"
|
||||
#define _CITRUS_LC_MESSAGES_SYM_VERSION "version"
|
||||
#define _CITRUS_LC_MESSAGES_VERSION 0x00000001
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_MESSAGES_SYM_YESEXPR "yesexpr"
|
||||
#define _CITRUS_LC_MESSAGES_SYM_NOEXPR "noexpr"
|
||||
#define _CITRUS_LC_MESSAGES_SYM_YESSTR "yesstr"
|
||||
#define _CITRUS_LC_MESSAGES_SYM_NOSTR "nostr"
|
||||
|
||||
#endif /*_CITRUS_LC_MESSAGES_H_*/
|
220
lib/libc/citrus/citrus_lc_monetary.c
Normal file
220
lib/libc/citrus/citrus_lc_monetary.c
Normal file
@ -0,0 +1,220 @@
|
||||
/* $NetBSD: citrus_lc_monetary.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_lc_monetary.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_types.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_region.h"
|
||||
#include "citrus_lookup.h"
|
||||
#include "citrus_aliasname_local.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_mmap.h"
|
||||
#include "citrus_hash.h"
|
||||
#include "citrus_db.h"
|
||||
#include "citrus_db_hash.h"
|
||||
#include "citrus_memstream.h"
|
||||
#include "rune.h"
|
||||
|
||||
#include "fix_grouping.h"
|
||||
#include "citrus_fix_grouping.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_citrus_LC_MONETARY_, name)
|
||||
|
||||
#include "nb_lc_monetary_misc.h"
|
||||
#include "citrus_lc_template_decl.h"
|
||||
|
||||
static __inline void
|
||||
_citrus_LC_MONETARY_uninit(_MonetaryLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
free(__UNCONST(data->int_curr_symbol));
|
||||
free(__UNCONST(data->currency_symbol));
|
||||
free(__UNCONST(data->mon_decimal_point));
|
||||
free(__UNCONST(data->mon_thousands_sep));
|
||||
free(__UNCONST(data->mon_grouping));
|
||||
free(__UNCONST(data->positive_sign));
|
||||
free(__UNCONST(data->negative_sign));
|
||||
}
|
||||
|
||||
#include "citrus_lc_monetary.h"
|
||||
|
||||
struct _citrus_LC_MONETARY_key {
|
||||
const char *name;
|
||||
size_t offset;
|
||||
};
|
||||
|
||||
#define OFFSET(field) (offsetof(_MonetaryLocale, field))
|
||||
static const struct _citrus_LC_MONETARY_key keys_string[] = {
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_CURR_SYMBOL, OFFSET(int_curr_symbol ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_CURRENCY_SYMBOL, OFFSET(currency_symbol ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_MON_DECIMAL_POINT, OFFSET(mon_decimal_point ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_MON_THOUSANDS_SEP, OFFSET(mon_thousands_sep ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_MON_GROUPING, OFFSET(mon_grouping ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_POSITIVE_SIGN, OFFSET(positive_sign ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_NEGATIVE_SIGN, OFFSET(negative_sign ) },
|
||||
{ NULL, (size_t)0 }
|
||||
};
|
||||
static const struct _citrus_LC_MONETARY_key keys_char[] = {
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_FRAC_DIGITS, OFFSET(int_frac_digits ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_FRAC_DIGITS, OFFSET(frac_digits ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_P_CS_PRECEDES, OFFSET(p_cs_precedes ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_P_SEP_BY_SPACE, OFFSET(p_sep_by_space ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_N_CS_PRECEDES, OFFSET(n_cs_precedes ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_N_SEP_BY_SPACE, OFFSET(n_sep_by_space ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_P_SIGN_POSN, OFFSET(p_sign_posn ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_N_SIGN_POSN, OFFSET(n_sign_posn ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_P_CS_PRECEDES, OFFSET(int_p_cs_precedes ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_N_CS_PRECEDES, OFFSET(int_n_cs_precedes ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_P_SEP_BY_SPACE, OFFSET(int_p_sep_by_space) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_N_SEP_BY_SPACE, OFFSET(int_n_sep_by_space) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_P_SIGN_POSN, OFFSET(int_p_sign_posn ) },
|
||||
{ _CITRUS_LC_MONETARY_SYM_INT_N_SIGN_POSN, OFFSET(int_n_sign_posn ) },
|
||||
{ NULL, (size_t)0 }
|
||||
};
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_MONETARY_init_normal(_MonetaryLocale * __restrict data,
|
||||
struct _citrus_db * __restrict db)
|
||||
{
|
||||
const struct _citrus_LC_MONETARY_key *key;
|
||||
char **p_string, *p_char;
|
||||
const char *s;
|
||||
uint8_t u8;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(db != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys_string[0]; key->name != NULL; ++key) {
|
||||
if (_db_lookupstr_by_s(db, key->name, &s, NULL))
|
||||
goto fatal;
|
||||
p_string = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p_string = strdup(s);
|
||||
if (*p_string == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
for (key = &keys_char[0]; key->name != NULL; ++key) {
|
||||
if (_db_lookup8_by_s(db, key->name, &u8, NULL))
|
||||
goto fatal;
|
||||
p_char = ((char *)(void *)data) + key->offset;
|
||||
*p_char = (char)(unsigned char)u8;
|
||||
}
|
||||
_CITRUS_FIXUP_CHAR_MAX_MD(data->mon_grouping);
|
||||
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_MONETARY_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_MONETARY_init_fallback(_MonetaryLocale * __restrict data,
|
||||
struct _memstream * __restrict ms)
|
||||
{
|
||||
const struct _citrus_LC_MONETARY_key *key;
|
||||
char **p_string, *p_char;
|
||||
const char *s;
|
||||
size_t n;
|
||||
char *t;
|
||||
long int l;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(ms != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys_string[0]; key->name != NULL; ++key) {
|
||||
if ((s = _memstream_getln(ms, &n)) == NULL)
|
||||
goto fatal;
|
||||
p_string = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p_string = strndup(s, n - 1);
|
||||
if (*p_string == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
for (key = &keys_char[0]; key->name != NULL; ++key) {
|
||||
if ((s = _memstream_getln(ms, &n)) == NULL)
|
||||
goto fatal;
|
||||
t = strndup(s, n - 1);
|
||||
if (t == NULL)
|
||||
goto fatal;
|
||||
s = (const char *)t;
|
||||
l = _bcs_strtol(s, &t, 0);
|
||||
if (s == t || l < 0 || l > 0x7fL) {
|
||||
free(t);
|
||||
goto fatal;
|
||||
}
|
||||
free(t);
|
||||
p_char = ((char *)(void *)data) + key->offset;
|
||||
*p_char = (char)(l & 0x7fL);
|
||||
}
|
||||
data->mon_grouping =
|
||||
__fix_locale_grouping_str(data->mon_grouping);
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_MONETARY_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by citrus_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_DB "LC_MONETARY"
|
||||
#define _CATEGORY_MAGIC _CITRUS_LC_MONETARY_MAGIC_1
|
||||
|
||||
#include "citrus_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_citrus_LC_MONETARY_);
|
64
lib/libc/citrus/citrus_lc_monetary.h
Normal file
64
lib/libc/citrus/citrus_lc_monetary.h
Normal file
@ -0,0 +1,64 @@
|
||||
/* $NetBSD: citrus_lc_monetary.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_LC_MONETARY_H_
|
||||
#define _CITRUS_LC_MONETARY_H_
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_MONETARY_MAGIC_1 "CtrsMO10"
|
||||
#define _CITRUS_LC_MONETARY_SYM_VERSION "version"
|
||||
#define _CITRUS_LC_MONETARY_VERSION 0x00000001
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_CURR_SYMBOL "int_curr_symbol"
|
||||
#define _CITRUS_LC_MONETARY_SYM_CURRENCY_SYMBOL "currency_symbol"
|
||||
#define _CITRUS_LC_MONETARY_SYM_MON_DECIMAL_POINT "mon_decimal_point"
|
||||
#define _CITRUS_LC_MONETARY_SYM_MON_THOUSANDS_SEP "mon_thousands_sep"
|
||||
#define _CITRUS_LC_MONETARY_SYM_MON_GROUPING "mon_grouping"
|
||||
#define _CITRUS_LC_MONETARY_SYM_POSITIVE_SIGN "positive_sign"
|
||||
#define _CITRUS_LC_MONETARY_SYM_NEGATIVE_SIGN "negative_sign"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_FRAC_DIGITS "int_frac_digits"
|
||||
#define _CITRUS_LC_MONETARY_SYM_FRAC_DIGITS "frac_digits"
|
||||
#define _CITRUS_LC_MONETARY_SYM_P_CS_PRECEDES "p_cs_precedes"
|
||||
#define _CITRUS_LC_MONETARY_SYM_P_SEP_BY_SPACE "p_sep_by_space"
|
||||
#define _CITRUS_LC_MONETARY_SYM_N_CS_PRECEDES "n_cs_precedes"
|
||||
#define _CITRUS_LC_MONETARY_SYM_N_SEP_BY_SPACE "n_sep_by_space"
|
||||
#define _CITRUS_LC_MONETARY_SYM_P_SIGN_POSN "p_sign_posn"
|
||||
#define _CITRUS_LC_MONETARY_SYM_N_SIGN_POSN "n_sign_posn"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_P_CS_PRECEDES "int_p_cs_precedes"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_N_CS_PRECEDES "int_n_cs_precedes"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_P_SEP_BY_SPACE "int_p_sep_by_space"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_N_SEP_BY_SPACE "int_n_sep_by_space"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_P_SIGN_POSN "int_p_sign_posn"
|
||||
#define _CITRUS_LC_MONETARY_SYM_INT_N_SIGN_POSN "int_n_sign_posn"
|
||||
|
||||
#endif /*_CITRUS_LC_MONETARY_H_*/
|
169
lib/libc/citrus/citrus_lc_numeric.c
Normal file
169
lib/libc/citrus/citrus_lc_numeric.c
Normal file
@ -0,0 +1,169 @@
|
||||
/* $NetBSD: citrus_lc_numeric.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_lc_numeric.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_types.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_region.h"
|
||||
#include "citrus_lookup.h"
|
||||
#include "citrus_aliasname_local.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_mmap.h"
|
||||
#include "citrus_hash.h"
|
||||
#include "citrus_db.h"
|
||||
#include "citrus_db_hash.h"
|
||||
#include "citrus_memstream.h"
|
||||
#include "rune.h"
|
||||
|
||||
#include "fix_grouping.h"
|
||||
#include "citrus_fix_grouping.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_citrus_LC_NUMERIC_, name)
|
||||
|
||||
#include "nb_lc_numeric_misc.h"
|
||||
#include "citrus_lc_template_decl.h"
|
||||
|
||||
static __inline void
|
||||
_citrus_LC_NUMERIC_uninit(_NumericLocale *data)
|
||||
{
|
||||
free(__UNCONST(data->decimal_point));
|
||||
free(__UNCONST(data->thousands_sep));
|
||||
free(__UNCONST(data->grouping));
|
||||
}
|
||||
|
||||
#include "citrus_lc_numeric.h"
|
||||
|
||||
struct _citrus_LC_NUMERIC_key {
|
||||
const char *name;
|
||||
size_t offset;
|
||||
};
|
||||
|
||||
#define OFFSET(field) (offsetof(_NumericLocale, field))
|
||||
static const struct _citrus_LC_NUMERIC_key keys[] = {
|
||||
{ _CITRUS_LC_NUMERIC_SYM_DECIMAL_POINT, OFFSET(decimal_point) },
|
||||
{ _CITRUS_LC_NUMERIC_SYM_THOUSANDS_SEP, OFFSET(thousands_sep) },
|
||||
{ _CITRUS_LC_NUMERIC_SYM_GROUPING, OFFSET(grouping ) },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_NUMERIC_init_normal(_NumericLocale * __restrict data,
|
||||
struct _citrus_db * __restrict db)
|
||||
{
|
||||
const struct _citrus_LC_NUMERIC_key *key;
|
||||
char **p;
|
||||
const char *s;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(db != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys[0]; key->name != NULL; ++key) {
|
||||
if (_db_lookupstr_by_s(db, key->name, &s, NULL))
|
||||
goto fatal;
|
||||
p = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p = strdup(s);
|
||||
if (*p == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
_CITRUS_FIXUP_CHAR_MAX_MD(data->grouping);
|
||||
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_NUMERIC_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_NUMERIC_init_fallback(_NumericLocale * __restrict data,
|
||||
struct _memstream * __restrict ms)
|
||||
{
|
||||
const struct _citrus_LC_NUMERIC_key *key;
|
||||
char **p;
|
||||
const char *s;
|
||||
size_t n;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(ms != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys[0]; key->name != NULL; ++key) {
|
||||
if ((s = _memstream_getln(ms, &n)) == NULL)
|
||||
goto fatal;
|
||||
p = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p = strndup(s, n - 1);
|
||||
if (*p == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
data->grouping =
|
||||
__fix_locale_grouping_str(data->grouping);
|
||||
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_NUMERIC_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by citrus_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_DB "LC_NUMERIC"
|
||||
#define _CATEGORY_MAGIC _CITRUS_LC_NUMERIC_MAGIC_1
|
||||
|
||||
#include "citrus_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_citrus_LC_NUMERIC_);
|
46
lib/libc/citrus/citrus_lc_numeric.h
Normal file
46
lib/libc/citrus/citrus_lc_numeric.h
Normal file
@ -0,0 +1,46 @@
|
||||
/* $NetBSD: citrus_lc_numeric.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_LC_NUMERIC_H_
|
||||
#define _CITRUS_LC_NUMERIC_H_
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_NUMERIC_MAGIC_1 "CtrsNU10"
|
||||
#define _CITRUS_LC_NUMERIC_SYM_VERSION "version"
|
||||
#define _CITRUS_LC_NUMERIC_VERSION 0x00000001
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_NUMERIC_SYM_DECIMAL_POINT "decimal_point"
|
||||
#define _CITRUS_LC_NUMERIC_SYM_THOUSANDS_SEP "thousands_sep"
|
||||
#define _CITRUS_LC_NUMERIC_SYM_GROUPING "grouping"
|
||||
|
||||
#endif /*_CITRUS_LC_NUMERIC_H_*/
|
74
lib/libc/citrus/citrus_lc_template.h
Normal file
74
lib/libc/citrus/citrus_lc_template.h
Normal file
@ -0,0 +1,74 @@
|
||||
/* $NetBSD: citrus_lc_template.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_LC_TEMPLATE_H_
|
||||
#define _CITRUS_LC_TEMPLATE_H_
|
||||
|
||||
static __inline int
|
||||
_PREFIX(create_impl)(const char * __restrict root,
|
||||
const char * __restrict name, _CATEGORY_TYPE ** __restrict pdata)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
int ret;
|
||||
struct _region file;
|
||||
struct _citrus_db *db;
|
||||
struct _memstream ms;
|
||||
_CATEGORY_TYPE *data;
|
||||
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/" _CATEGORY_DB, root, name);
|
||||
ret = _map_file(&file, path);
|
||||
if (ret) {
|
||||
ret = ENOENT;
|
||||
} else {
|
||||
data = malloc(sizeof(*data));
|
||||
if (!data) {
|
||||
ret = ENOMEM;
|
||||
} else {
|
||||
ret = _db_open(&db, &file, _CATEGORY_MAGIC,
|
||||
&_db_hash_std, NULL);
|
||||
if (!ret) {
|
||||
ret = _PREFIX(init_normal)(data, db);
|
||||
_db_close(db);
|
||||
} else {
|
||||
_memstream_bind(&ms, &file);
|
||||
ret = _PREFIX(init_fallback)(data, &ms);
|
||||
}
|
||||
if (!ret)
|
||||
*pdata = data;
|
||||
else
|
||||
free(data);
|
||||
}
|
||||
_unmap_file(&file);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include "nb_lc_template.h"
|
||||
|
||||
#endif /* _CITRUS_LC_TEMPLATE_H_ */
|
42
lib/libc/citrus/citrus_lc_template_decl.h
Normal file
42
lib/libc/citrus/citrus_lc_template_decl.h
Normal file
@ -0,0 +1,42 @@
|
||||
/* $NetBSD: citrus_lc_template_decl.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_LC_TEMPLATE_DECL_H_
|
||||
#define _CITRUS_LC_TEMPLATE_DECL_H_
|
||||
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
static __inline int
|
||||
_PREFIX(init_normal)(_CATEGORY_TYPE * __restrict,
|
||||
struct _citrus_db * __restrict db);
|
||||
|
||||
static __inline int
|
||||
_PREFIX(init_fallback)(_CATEGORY_TYPE * __restrict,
|
||||
struct _memstream * __restrict);
|
||||
|
||||
#endif /*_CITRUS_LC_TEMPLATE_DECL_H_*/
|
214
lib/libc/citrus/citrus_lc_time.c
Normal file
214
lib/libc/citrus/citrus_lc_time.c
Normal file
@ -0,0 +1,214 @@
|
||||
/* $NetBSD: citrus_lc_time.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_lc_time.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_types.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_region.h"
|
||||
#include "citrus_lookup.h"
|
||||
#include "citrus_aliasname_local.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_mmap.h"
|
||||
#include "citrus_hash.h"
|
||||
#include "citrus_db.h"
|
||||
#include "citrus_db_hash.h"
|
||||
#include "citrus_memstream.h"
|
||||
#include "rune.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_citrus_LC_TIME_, name)
|
||||
|
||||
#include "nb_lc_time_misc.h"
|
||||
#include "citrus_lc_template_decl.h"
|
||||
|
||||
static __inline void
|
||||
_citrus_LC_TIME_uninit(_TimeLocale *data)
|
||||
{
|
||||
size_t i, j;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
for (i = ABDAY_IDX(ABDAY_1), j = ABDAY_IDX(ABDAY_7); i <= j; ++i)
|
||||
free(__UNCONST(data->abday[i]));
|
||||
for (i = DAY_IDX(DAY_1), j = DAY_IDX(DAY_7); i <= j; ++i)
|
||||
free(__UNCONST(data->day[i]));
|
||||
for (i = ABMON_IDX(ABMON_1), j = ABMON_IDX(ABMON_12); i <= j; ++i)
|
||||
free(__UNCONST(data->abmon[i]));
|
||||
for (i = MON_IDX(MON_1), j = MON_IDX(MON_12); i <= j; ++i)
|
||||
free(__UNCONST(data->mon[i]));
|
||||
for (i = AM_PM_IDX(AM_STR), j = AM_PM_IDX(PM_STR); i <= j; ++i)
|
||||
free(__UNCONST(data->am_pm[i]));
|
||||
free(__UNCONST(data->d_t_fmt));
|
||||
free(__UNCONST(data->d_fmt));
|
||||
free(__UNCONST(data->t_fmt));
|
||||
free(__UNCONST(data->t_fmt_ampm));
|
||||
}
|
||||
|
||||
#include "citrus_lc_time.h"
|
||||
|
||||
struct _citrus_LC_TIME_key {
|
||||
const char *name;
|
||||
size_t offset;
|
||||
};
|
||||
|
||||
#define OFFSET(field) offsetof(_TimeLocale, field)
|
||||
static const struct _citrus_LC_TIME_key keys[] = {
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_1, OFFSET(abday[ABDAY_IDX(ABDAY_1)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_2, OFFSET(abday[ABDAY_IDX(ABDAY_2)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_3, OFFSET(abday[ABDAY_IDX(ABDAY_3)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_4, OFFSET(abday[ABDAY_IDX(ABDAY_4)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_5, OFFSET(abday[ABDAY_IDX(ABDAY_5)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_6, OFFSET(abday[ABDAY_IDX(ABDAY_6)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABDAY_7, OFFSET(abday[ABDAY_IDX(ABDAY_7)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_1, OFFSET(day[DAY_IDX(DAY_1)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_2, OFFSET(day[DAY_IDX(DAY_2)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_3, OFFSET(day[DAY_IDX(DAY_3)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_4, OFFSET(day[DAY_IDX(DAY_4)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_5, OFFSET(day[DAY_IDX(DAY_5)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_6, OFFSET(day[DAY_IDX(DAY_6)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_DAY_7, OFFSET(day[DAY_IDX(DAY_7)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_1, OFFSET(abmon[ABMON_IDX(ABMON_1)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_2, OFFSET(abmon[ABMON_IDX(ABMON_2)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_3, OFFSET(abmon[ABMON_IDX(ABMON_3)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_4, OFFSET(abmon[ABMON_IDX(ABMON_4)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_5, OFFSET(abmon[ABMON_IDX(ABMON_5)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_6, OFFSET(abmon[ABMON_IDX(ABMON_6)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_7, OFFSET(abmon[ABMON_IDX(ABMON_7)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_8, OFFSET(abmon[ABMON_IDX(ABMON_8)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_9, OFFSET(abmon[ABMON_IDX(ABMON_9)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_10, OFFSET(abmon[ABMON_IDX(ABMON_10)]) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_11, OFFSET(abmon[ABMON_IDX(ABMON_11)]) },
|
||||
{ _CITRUS_LC_TIME_SYM_ABMON_12, OFFSET(abmon[ABMON_IDX(ABMON_12)]) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_1, OFFSET(mon[MON_IDX(MON_1)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_2, OFFSET(mon[MON_IDX(MON_2)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_3, OFFSET(mon[MON_IDX(MON_3)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_4, OFFSET(mon[MON_IDX(MON_4)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_5, OFFSET(mon[MON_IDX(MON_5)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_6, OFFSET(mon[MON_IDX(MON_6)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_7, OFFSET(mon[MON_IDX(MON_7)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_8, OFFSET(mon[MON_IDX(MON_8)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_9, OFFSET(mon[MON_IDX(MON_9)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_10, OFFSET(mon[MON_IDX(MON_10)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_11, OFFSET(mon[MON_IDX(MON_11)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_MON_12, OFFSET(mon[MON_IDX(MON_12)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_AM_STR, OFFSET(am_pm[AM_PM_IDX(AM_STR)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_PM_STR, OFFSET(am_pm[AM_PM_IDX(PM_STR)] ) },
|
||||
{ _CITRUS_LC_TIME_SYM_D_T_FMT, OFFSET(d_t_fmt ) },
|
||||
{ _CITRUS_LC_TIME_SYM_D_FMT, OFFSET(d_fmt ) },
|
||||
{ _CITRUS_LC_TIME_SYM_T_FMT, OFFSET(t_fmt ) },
|
||||
{ _CITRUS_LC_TIME_SYM_T_FMT, OFFSET(t_fmt_ampm ) },
|
||||
{ NULL, 0 }
|
||||
};
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_TIME_init_normal(_TimeLocale * __restrict data,
|
||||
struct _citrus_db * __restrict db)
|
||||
{
|
||||
const struct _citrus_LC_TIME_key *key;
|
||||
char **p;
|
||||
const char *s;
|
||||
|
||||
_DIAGASSERT(data != NULL);
|
||||
_DIAGASSERT(db != NULL);
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys[0]; key->name != NULL; ++key) {
|
||||
if (_db_lookupstr_by_s(db, key->name, &s, NULL))
|
||||
goto fatal;
|
||||
p = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p = strdup(s);
|
||||
if (*p == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_TIME_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
static __inline int
|
||||
_citrus_LC_TIME_init_fallback(_TimeLocale * __restrict data,
|
||||
struct _memstream * __restrict ms)
|
||||
{
|
||||
const struct _citrus_LC_TIME_key *key;
|
||||
char **p;
|
||||
const char *s;
|
||||
size_t n;
|
||||
|
||||
memset(data, 0, sizeof(*data));
|
||||
for (key = &keys[0]; key->name != NULL; ++key) {
|
||||
if ((s = _memstream_getln(ms, &n)) == NULL)
|
||||
goto fatal;
|
||||
p = (char **)(void *)
|
||||
(((char *)(void *)data) + key->offset);
|
||||
*p = strndup(s, n - 1);
|
||||
if (*p == NULL)
|
||||
goto fatal;
|
||||
}
|
||||
return 0;
|
||||
|
||||
fatal:
|
||||
_citrus_LC_TIME_uninit(data);
|
||||
return EFTYPE;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by citrus_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_DB "LC_TIME"
|
||||
#define _CATEGORY_MAGIC _CITRUS_LC_TIME_MAGIC_1
|
||||
|
||||
#include "citrus_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_citrus_LC_TIME_);
|
87
lib/libc/citrus/citrus_lc_time.h
Normal file
87
lib/libc/citrus/citrus_lc_time.h
Normal file
@ -0,0 +1,87 @@
|
||||
/* $NetBSD: citrus_lc_time.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _CITRUS_LC_TIME_H_
|
||||
#define _CITRUS_LC_TIME_H_
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_TIME_MAGIC_1 "CtrsTI10"
|
||||
#define _CITRUS_LC_TIME_SYM_VERSION "version"
|
||||
#define _CITRUS_LC_TIME_VERSION 0x00000001
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_1 "abday1"
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_2 "abday2"
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_3 "abday3"
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_4 "abday4"
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_5 "abday5"
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_6 "abday6"
|
||||
#define _CITRUS_LC_TIME_SYM_ABDAY_7 "abday7"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_1 "day1"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_2 "day2"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_3 "day3"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_4 "day4"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_5 "day5"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_6 "day6"
|
||||
#define _CITRUS_LC_TIME_SYM_DAY_7 "day7"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_1 "abmon_1"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_2 "abmon_2"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_3 "abmon_3"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_4 "abmon_4"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_5 "abmon_5"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_6 "abmon_6"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_7 "abmon_7"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_8 "abmon_8"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_9 "abmon_9"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_10 "abmon_10"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_11 "abmon_11"
|
||||
#define _CITRUS_LC_TIME_SYM_ABMON_12 "abmon_12"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_1 "mon_1"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_2 "mon_2"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_3 "mon_3"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_4 "mon_4"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_5 "mon_5"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_6 "mon_6"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_7 "mon_7"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_8 "mon_8"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_9 "mon_9"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_10 "mon_10"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_11 "mon_11"
|
||||
#define _CITRUS_LC_TIME_SYM_MON_12 "mon_12"
|
||||
#define _CITRUS_LC_TIME_SYM_AM_STR "am_str"
|
||||
#define _CITRUS_LC_TIME_SYM_PM_STR "pm_str"
|
||||
#define _CITRUS_LC_TIME_SYM_D_T_FMT "d_t_fmt"
|
||||
#define _CITRUS_LC_TIME_SYM_D_FMT "d_fmt"
|
||||
#define _CITRUS_LC_TIME_SYM_T_FMT "t_fmt"
|
||||
#define _CITRUS_LC_TIME_SYM_T_FMT_AMPM "t_fmt_ampm"
|
||||
|
||||
#endif /*_CITRUS_LC_TIME_H_*/
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: citrus_module.c,v 1.7 2008/06/14 16:01:07 tnozaki Exp $ */
|
||||
/* $NetBSD: citrus_module.c,v 1.8 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)1999, 2000, 2001, 2002 Citrus Project,
|
||||
@ -89,7 +89,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_module.c,v 1.7 2008/06/14 16:01:07 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: citrus_module.c,v 1.8 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
@ -101,6 +101,8 @@ __RCSID("$NetBSD: citrus_module.c,v 1.7 2008/06/14 16:01:07 tnozaki Exp $");
|
||||
#include <unistd.h>
|
||||
#include <stddef.h>
|
||||
#include <paths.h>
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_module.h"
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -136,7 +138,7 @@ _getdewey(int dewey[], char *cp)
|
||||
if (*cp < '0' || '9' < *cp)
|
||||
return 0;
|
||||
|
||||
dewey[n++] = (int)strtol(cp, &cp, 10);
|
||||
dewey[n++] = (int)_bcs_strtol(cp, &cp, 10);
|
||||
}
|
||||
|
||||
return n;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: citrus_namespace.h,v 1.6 2005/10/29 18:02:04 tshiozak Exp $ */
|
||||
/* $NetBSD: citrus_namespace.h,v 1.7 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2003 Citrus Project,
|
||||
@ -56,6 +56,8 @@
|
||||
#define _bcs_trunc_rws_len _citrus_bcs_trunc_rws_len
|
||||
#define _bcs_convert_to_lower _citrus_bcs_convert_to_lower
|
||||
#define _bcs_convert_to_upper _citrus_bcs_convert_to_upper
|
||||
#define _bcs_strtol _citrus_bcs_strtol
|
||||
#define _bcs_strtoul _citrus_bcs_strtoul
|
||||
#endif /* _CITRUS_BCS_NO_NAMESPACE */
|
||||
|
||||
/* citrus_csmapper */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: citrus_euc.c,v 1.12 2008/06/14 16:01:07 tnozaki Exp $ */
|
||||
/* $NetBSD: citrus_euc.c,v 1.13 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2002 Citrus Project,
|
||||
@ -60,7 +60,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: citrus_euc.c,v 1.12 2008/06/14 16:01:07 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: citrus_euc.c,v 1.13 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
@ -74,6 +74,7 @@ __RCSID("$NetBSD: citrus_euc.c,v 1.12 2008/06/14 16:01:07 tnozaki Exp $");
|
||||
#include <limits.h>
|
||||
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_types.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
@ -153,7 +154,7 @@ _citrus_EUC_parse_variable(_EUCEncodingInfo *ei,
|
||||
|
||||
ei->mb_cur_max = 1;
|
||||
for (x = 0; x < 4; ++x) {
|
||||
ei->count[x] = (int) strtol(v, (char **)&e, 0);
|
||||
ei->count[x] = (int)_bcs_strtol(v, (char **)&e, 0);
|
||||
if (v == e || !(v = e) || ei->count[x]<1 || ei->count[x]>4) {
|
||||
return (EFTYPE);
|
||||
}
|
||||
@ -161,14 +162,14 @@ _citrus_EUC_parse_variable(_EUCEncodingInfo *ei,
|
||||
ei->mb_cur_max = ei->count[x];
|
||||
while (*v == ' ' || *v == '\t')
|
||||
++v;
|
||||
ei->bits[x] = (int) strtol(v, (char **)&e, 0);
|
||||
ei->bits[x] = (int)_bcs_strtol(v, (char **)&e, 0);
|
||||
if (v == e || !(v = e)) {
|
||||
return (EFTYPE);
|
||||
}
|
||||
while (*v == ' ' || *v == '\t')
|
||||
++v;
|
||||
}
|
||||
ei->mask = (int)strtol(v, (char **)&e, 0);
|
||||
ei->mask = (int)_bcs_strtol(v, (char **)&e, 0);
|
||||
if (v == e || !(v = e)) {
|
||||
return (EFTYPE);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile.inc,v 1.165 2008/12/05 13:08:53 ad Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.166 2009/01/02 00:20:19 tnozaki Exp $
|
||||
# from: @(#)Makefile.inc 8.6 (Berkeley) 5/4/95
|
||||
|
||||
# gen sources
|
||||
@ -154,3 +154,5 @@ MLINKS+=ttyname.3 isatty.3 ttyname.3 ttyslot.3 ttyname.3 ttyname_r.3
|
||||
MLINKS+=unvis.3 strunvis.3 unvis.3 strunvisx.3
|
||||
MLINKS+=vis.3 svis.3 vis.3 strvis.3 vis.3 strvisx.3 vis.3 strsvis.3 \
|
||||
vis.3 strsvisx.3
|
||||
|
||||
CPPFLAGS.isctype.c+= -I${LIBCDIR}/locale
|
||||
|
@ -1,13 +1,8 @@
|
||||
/* $NetBSD: isctype.c,v 1.16 2003/08/07 16:42:52 agc Exp $ */
|
||||
/* $NetBSD: isctype.c,v 1.17 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989 The Regents of the University of California.
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -17,14 +12,11 @@
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* 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 REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* 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)
|
||||
@ -36,124 +28,88 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)isctype.c 5.2 (Berkeley) 6/1/90";
|
||||
#else
|
||||
__RCSID("$NetBSD: isctype.c,v 1.16 2003/08/07 16:42:52 agc Exp $");
|
||||
#endif
|
||||
__RCSID("$NetBSD: isctype.c,v 1.17 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#define _ANSI_LIBRARY
|
||||
#include "namespace.h"
|
||||
#include <sys/types.h>
|
||||
#include <ctype.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#if EOF != -1
|
||||
#error "EOF != -1"
|
||||
#endif
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#define _CTYPE_TAB(table, i) \
|
||||
(((*_current_locale())->cache.table + 1)[i])
|
||||
|
||||
#undef isalnum
|
||||
int
|
||||
isalnum(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & (_U|_L|_N));
|
||||
#undef isalpha
|
||||
#undef iscntrl
|
||||
#undef isdigit
|
||||
#undef isgraph
|
||||
#undef islower
|
||||
#undef isprint
|
||||
#undef ispunct
|
||||
#undef isspace
|
||||
#undef isupper
|
||||
#undef isxdigit
|
||||
|
||||
#define _ISCTYPE_FUNC(name, bit) \
|
||||
int \
|
||||
is##name(int c) \
|
||||
{ \
|
||||
return (int)(_CTYPE_TAB(ctype_tab, c) & (bit)); \
|
||||
}
|
||||
|
||||
#undef isalpha
|
||||
int
|
||||
isalpha(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & (_U|_L));
|
||||
}
|
||||
_ISCTYPE_FUNC(alnum, _U|_L|_N )
|
||||
_ISCTYPE_FUNC(alpha, _U|_L )
|
||||
_ISCTYPE_FUNC(cntrl, _C )
|
||||
_ISCTYPE_FUNC(digit, _N )
|
||||
_ISCTYPE_FUNC(graph, _P|_U|_L|_N )
|
||||
_ISCTYPE_FUNC(lower, _L )
|
||||
_ISCTYPE_FUNC(print, _P|_U|_L|_N|_B)
|
||||
_ISCTYPE_FUNC(punct, _P )
|
||||
_ISCTYPE_FUNC(space, _S )
|
||||
_ISCTYPE_FUNC(upper, _U )
|
||||
_ISCTYPE_FUNC(xdigit, _N|_X )
|
||||
|
||||
#undef isblank
|
||||
int
|
||||
isblank(c)
|
||||
int c;
|
||||
isblank(int c)
|
||||
{
|
||||
return(c == ' ' || c == '\t');
|
||||
/* XXX: FIXME */
|
||||
return c == ' ' || c == '\t';
|
||||
}
|
||||
|
||||
#undef iscntrl
|
||||
#undef toupper
|
||||
int
|
||||
iscntrl(c)
|
||||
int c;
|
||||
toupper(int c)
|
||||
{
|
||||
return((_ctype_ + 1)[c] & _C);
|
||||
return (int)_CTYPE_TAB(toupper_tab, c);
|
||||
}
|
||||
|
||||
#undef isdigit
|
||||
#undef tolower
|
||||
int
|
||||
isdigit(c)
|
||||
int c;
|
||||
tolower(int c)
|
||||
{
|
||||
return((_ctype_ + 1)[c] & _N);
|
||||
}
|
||||
|
||||
#undef isgraph
|
||||
int
|
||||
isgraph(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & (_P|_U|_L|_N));
|
||||
}
|
||||
|
||||
#undef islower
|
||||
int
|
||||
islower(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & _L);
|
||||
}
|
||||
|
||||
#undef isprint
|
||||
int
|
||||
isprint(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & (_P|_U|_L|_N|_B));
|
||||
}
|
||||
|
||||
#undef ispunct
|
||||
int
|
||||
ispunct(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & _P);
|
||||
}
|
||||
|
||||
#undef isspace
|
||||
int
|
||||
isspace(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & _S);
|
||||
}
|
||||
|
||||
#undef isupper
|
||||
int
|
||||
isupper(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & _U);
|
||||
}
|
||||
|
||||
#undef isxdigit
|
||||
int
|
||||
isxdigit(c)
|
||||
int c;
|
||||
{
|
||||
return((_ctype_ + 1)[c] & (_N|_X));
|
||||
return (int)_CTYPE_TAB(tolower_tab, c);
|
||||
}
|
||||
|
||||
#undef _toupper
|
||||
int
|
||||
_toupper(c)
|
||||
int c;
|
||||
_toupper(int c)
|
||||
{
|
||||
return (c - 'a' + 'A');
|
||||
}
|
||||
|
||||
#undef _tolower
|
||||
int
|
||||
_tolower(c)
|
||||
int c;
|
||||
_tolower(int c)
|
||||
{
|
||||
return (c - 'A' + 'a');
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: tolower_.c,v 1.9 2003/07/26 19:24:45 salo Exp $ */
|
||||
/* $NetBSD: tolower_.c,v 1.10 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Written by J.T. Conklin <jtc@NetBSD.org>.
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_RCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: tolower_.c,v 1.9 2003/07/26 19:24:45 salo Exp $");
|
||||
__RCSID("$NetBSD: tolower_.c,v 1.10 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_RCS and not lint */
|
||||
|
||||
#include <stdio.h>
|
||||
@ -54,11 +54,3 @@ const short _C_tolower_[1 + 256] = {
|
||||
};
|
||||
|
||||
const short *_tolower_tab_ = _C_tolower_;
|
||||
|
||||
#undef tolower
|
||||
int
|
||||
tolower(c)
|
||||
int c;
|
||||
{
|
||||
return((_tolower_tab_ + 1)[c]);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: toupper_.c,v 1.9 2003/07/26 19:24:45 salo Exp $ */
|
||||
/* $NetBSD: toupper_.c,v 1.10 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Written by J.T. Conklin <jtc@NetBSD.org>.
|
||||
@ -7,7 +7,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_RCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: toupper_.c,v 1.9 2003/07/26 19:24:45 salo Exp $");
|
||||
__RCSID("$NetBSD: toupper_.c,v 1.10 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_RCS and not lint */
|
||||
|
||||
#include <stdio.h>
|
||||
@ -54,11 +54,3 @@ const short _C_toupper_[1 + 256] = {
|
||||
};
|
||||
|
||||
const short *_toupper_tab_ = _C_toupper_;
|
||||
|
||||
#undef toupper
|
||||
int
|
||||
toupper(c)
|
||||
int c;
|
||||
{
|
||||
return((_toupper_tab_ + 1)[c]);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile.inc,v 1.2 2003/07/04 06:05:30 tshiozak Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.3 2009/01/02 00:20:19 tnozaki Exp $
|
||||
|
||||
.PATH: ${ARCHDIR}/iconv ${.CURDIR}/iconv
|
||||
|
||||
@ -7,5 +7,7 @@ MAN+= iconv.3
|
||||
MLINKS+=iconv.3 iconv_open.3 iconv.3 iconv_close.3
|
||||
|
||||
.if ${CITRUS} == "yes"
|
||||
CPPFLAGS+= -DCITRUS_ICONV
|
||||
CPPFLAGS.iconv.c+= -DHAVE_CITRUS -I${LIBCDIR}/citrus
|
||||
.else
|
||||
CPPFLAGS.iconv.c+= -UHAVE_CITRUS
|
||||
.endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: iconv.c,v 1.6 2006/11/03 20:16:28 christos Exp $ */
|
||||
/* $NetBSD: iconv.c,v 1.7 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2003 Citrus Project,
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: iconv.c,v 1.6 2006/11/03 20:16:28 christos Exp $");
|
||||
__RCSID("$NetBSD: iconv.c,v 1.7 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
@ -45,13 +45,13 @@ __weak_alias(iconv_open, _iconv_open)
|
||||
__weak_alias(iconv_close, _iconv_close)
|
||||
#endif
|
||||
|
||||
#ifdef CITRUS_ICONV
|
||||
#ifdef HAVE_CITRUS
|
||||
#include <sys/types.h>
|
||||
#include <citrus/citrus_types.h>
|
||||
#include <citrus/citrus_module.h>
|
||||
#include <citrus/citrus_esdb.h>
|
||||
#include <citrus/citrus_hash.h>
|
||||
#include <citrus/citrus_iconv.h>
|
||||
#include "citrus_types.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_esdb.h"
|
||||
#include "citrus_hash.h"
|
||||
#include "citrus_iconv.h"
|
||||
|
||||
#define ISBADF(_h_) (!(_h_) || (_h_) == (iconv_t)-1)
|
||||
|
||||
|
@ -1,21 +1,16 @@
|
||||
# from: @(#)Makefile.inc 5.1 (Berkeley) 2/18/91
|
||||
# $NetBSD: Makefile.inc,v 1.52 2008/05/17 03:49:54 ginsbach Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.53 2009/01/02 00:20:19 tnozaki Exp $
|
||||
|
||||
# locale sources
|
||||
.PATH: ${ARCHDIR}/locale ${.CURDIR}/locale
|
||||
|
||||
SRCS+= _def_messages.c _def_monetary.c _def_numeric.c _def_time.c \
|
||||
ctypeio.c lcmessages.c lcmonetary.c lcnumeric.c lctime.c \
|
||||
localeconv.c localeio.c nl_langinfo.c setlocale.c setlocale1.c \
|
||||
setlocale32.c __mb_cur_max.c wcscoll.c wcsftime.c \
|
||||
setlocale.c setlocale1.c setlocale32.c __mb_cur_max.c \
|
||||
current_locale.c global_locale.c fix_grouping.c \
|
||||
localeconv.c nl_langinfo.c \
|
||||
generic_lc_all.c dummy_lc_collate.c \
|
||||
wcstol.c wcstoll.c wcstoimax.c wcstoul.c wcstoull.c wcstoumax.c \
|
||||
wcsxfrm.c aliasname.c
|
||||
MAN+= nl_langinfo.3 setlocale.3 wcstol.3 wcscoll.3 wcsxfrm.3
|
||||
|
||||
SRCS+= wcstod.c wcstof.c wcstold.c
|
||||
MAN+= wcstod.3
|
||||
|
||||
MLINKS+=setlocale.3 localeconv.3
|
||||
wcstod.c wcstof.c wcstold.c wcscoll.c wcsxfrm.c wcsftime.c
|
||||
|
||||
.if ${CITRUS} == "no"
|
||||
RUNE= no
|
||||
@ -25,19 +20,41 @@ RUNE?= yes
|
||||
|
||||
.if ${RUNE} == "no"
|
||||
# singlebyte locale - dummy
|
||||
SRCS+= multibyte_sb.c iswctype_sb.c
|
||||
CPPFLAGS+=-UWITH_RUNE
|
||||
CPPFLAGS+= -UWITH_RUNE
|
||||
SRCS+= aliasname.c bsdctype.c localeio.c \
|
||||
multibyte_sb.c iswctype_sb.c \
|
||||
localeio_lc_ctype.c localeio_lc_monetary.c \
|
||||
localeio_lc_numeric.c localeio_lc_time.c
|
||||
.else
|
||||
# citrus multibyte locale support
|
||||
# we have quirk for libc.a - see the last part of lib/libc/Makefile
|
||||
CPPFLAGS+=-DWITH_RUNE -I${.CURDIR}
|
||||
SRCS+= ___runetype_mb.c _wctrans.c iswctype.c multibyte_c90.c \
|
||||
multibyte_amd1.c rune.c runeglue.c runetable.c setrunelocale.c
|
||||
CPPFLAGS+= -DWITH_RUNE -I${.CURDIR}
|
||||
SRCS+= _wctrans.c _wctype.c rune.c runeglue.c runetable.c \
|
||||
multibyte_c90.c multibyte_amd1.c iswctype_mb.c
|
||||
CPPFLAGS.rune.c+= -I${LIBCDIR}/citrus
|
||||
CPPFLAGS.runeglue.c+= -I${LIBCDIR}/citrus
|
||||
CPPFLAGS.runetable.c+= -I${LIBCDIR}/citrus
|
||||
CPPFLAGS.multibyte_c90.c+= -I${LIBCDIR}/citrus
|
||||
CPPFLAGS.multibyte_amd1.c+= -I${LIBCDIR}/citrus
|
||||
.endif
|
||||
MAN+= btowc.3 iswalnum.3 iswctype.3 towlower.3 towctrans.3 mblen.3 mbrlen.3 \
|
||||
mbrtowc.3 mbsinit.3 mbsrtowcs.3 mbstowcs.3 mbtowc.3 wcrtomb.3 wcwidth.3 \
|
||||
wcsftime.3 wcsrtombs.3 wcstombs.3 wctob.3 wctomb.3 wctrans.3 wctype.3
|
||||
|
||||
MAN+= setlocale.3 nl_langinfo.3
|
||||
|
||||
MAN+= mbtowc.3 mbstowcs.3 wctomb.3 wcstombs.3 mblen.3 \
|
||||
|
||||
MAN+= btowc.3 mbrtowc.3 mbsrtowcs.3 \
|
||||
wctob.3 wcrtomb.3 wcsrtombs.3 \
|
||||
mbrlen.3 mbsinit.3
|
||||
|
||||
MAN+= iswalnum.3 wctype.3 iswctype.3 \
|
||||
towlower.3 wctrans.3 towctrans.3 \
|
||||
wcwidth.3
|
||||
|
||||
MAN+= wcstol.3 wcstod.3 \
|
||||
wcscoll.3 wcsxfrm.3 \
|
||||
wcsftime.3
|
||||
|
||||
MLINKS+=setlocale.3 localeconv.3
|
||||
|
||||
MLINKS+=iswalnum.3 iswalpha.3 iswalnum.3 iswblank.3 \
|
||||
iswalnum.3 iswcntrl.3 iswalnum.3 iswdigit.3 \
|
||||
@ -45,7 +62,9 @@ MLINKS+=iswalnum.3 iswalpha.3 iswalnum.3 iswblank.3 \
|
||||
iswalnum.3 iswprint.3 iswalnum.3 iswpunct.3 \
|
||||
iswalnum.3 iswspace.3 iswalnum.3 iswupper.3 \
|
||||
iswalnum.3 iswxdigit.3
|
||||
|
||||
MLINKS+=towlower.3 towupper.3
|
||||
|
||||
MLINKS+=wcstod.3 wcstof.3 wcstod.3 wcstold.3
|
||||
MLINKS+=wcstol.3 wcstoll.3 wcstol.3 wcstoimax.3 \
|
||||
wcstol.3 wcstoul.3 wcstol.3 wcstoull.3 wcstol.3 wcstoumax.3
|
||||
|
@ -1,73 +0,0 @@
|
||||
/* $NetBSD: ___runetype_mb.c,v 1.10 2005/02/10 19:19:57 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Paul Borman at Krystal Technologies.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: ___runetype_mb.c,v 1.10 2005/02/10 19:19:57 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <wctype.h>
|
||||
#include "rune.h"
|
||||
#include "rune_local.h"
|
||||
|
||||
_RuneType
|
||||
___runetype_mb(c)
|
||||
wint_t c;
|
||||
{
|
||||
__nbrune_t c0;
|
||||
uint32_t x;
|
||||
_RuneRange *rr;
|
||||
_RuneEntry *base, *re;
|
||||
|
||||
if (c == WEOF)
|
||||
return (0U);
|
||||
|
||||
c0 = (__nbrune_t)c; /* XXX assumes wint_t = int */
|
||||
rr = &_CurrentRuneLocale->rl_runetype_ext;
|
||||
base = rr->rr_rune_ranges;
|
||||
for (x = rr->rr_nranges; x; x >>= 1) {
|
||||
re = base + (x >> 1);
|
||||
if (re->re_min <= c0 && re->re_max >= c0) {
|
||||
if (re->re_rune_types)
|
||||
return (re->re_rune_types[c0 - re->re_min]);
|
||||
else
|
||||
return (re->re_map);
|
||||
} else if (c0 > re->re_max) {
|
||||
base = re + 1;
|
||||
x--;
|
||||
}
|
||||
}
|
||||
|
||||
return (0U);
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: _wctrans.c,v 1.6 2005/02/10 19:19:57 tnozaki Exp $ */
|
||||
/* $NetBSD: _wctrans.c,v 1.7 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2003 Citrus Project,
|
||||
@ -60,7 +60,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: _wctrans.c,v 1.6 2005/02/10 19:19:57 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: _wctrans.c,v 1.7 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
@ -88,7 +88,7 @@ _wctrans_init(_RuneLocale *rl)
|
||||
}
|
||||
|
||||
/*
|
||||
* _wctrans_ext:
|
||||
* _towctrans_ext:
|
||||
* translate a character (extended part)
|
||||
*/
|
||||
wint_t
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: _wctrans_local.h,v 1.2 2003/04/06 18:33:23 tshiozak Exp $ */
|
||||
/* $NetBSD: _wctrans_local.h,v 1.3 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2003 Citrus Project,
|
||||
@ -29,8 +29,10 @@
|
||||
#ifndef _WCTRANS_LOCAL_H_
|
||||
#define _WCTRANS_LOCAL_H_
|
||||
|
||||
__BEGIN_DECLS
|
||||
wint_t _towctrans_ext(wint_t, _WCTransEntry *);
|
||||
void _wctrans_init(_RuneLocale *);
|
||||
__END_DECLS
|
||||
|
||||
static __inline wint_t
|
||||
_towctrans(wint_t c, _WCTransEntry *te)
|
||||
@ -55,4 +57,4 @@ _wctrans_upper(_RuneLocale *rl)
|
||||
return (&rl->rl_wctrans[_WCTRANS_INDEX_UPPER]);
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /*_WCTRANS_LOCAL_H_*/
|
||||
|
147
lib/libc/locale/_wctype.c
Normal file
147
lib/libc/locale/_wctype.c
Normal file
@ -0,0 +1,147 @@
|
||||
/* $NetBSD: _wctype.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Paul Borman at Krystal Technologies.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: _wctype.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "rune.h"
|
||||
#include "_wctrans_local.h"
|
||||
#include "_wctype_local.h"
|
||||
|
||||
_RuneType
|
||||
_runetype_priv(_RuneLocale const *rl, wint_t wc)
|
||||
{
|
||||
__nbrune_t wc0;
|
||||
_RuneRange const *rr;
|
||||
_RuneEntry *base, *re;
|
||||
uint32_t x;
|
||||
|
||||
_DIAGASSERT(rl != NULL);
|
||||
|
||||
if (wc == WEOF)
|
||||
return 0U;
|
||||
if (_RUNE_ISCACHED(wc))
|
||||
return rl->rl_runetype[(size_t)wc];
|
||||
wc0 = (__nbrune_t)wc;
|
||||
rr = &rl->rl_runetype_ext;
|
||||
_DIAGASSERT(rr != NULL);
|
||||
base = rr->rr_rune_ranges;
|
||||
for (x = rr->rr_nranges; x != (uint32_t)0; x >>= 1) {
|
||||
re = base + (x >> 1);
|
||||
if (re->re_min <= wc0 && re->re_max >= wc0) {
|
||||
if (re->re_rune_types)
|
||||
return re->re_rune_types[wc0 - re->re_min];
|
||||
else
|
||||
return re->re_map;
|
||||
} else if (wc0 > re->re_max) {
|
||||
base = re + 1;
|
||||
--x;
|
||||
}
|
||||
}
|
||||
return (_RuneType)0U;
|
||||
}
|
||||
|
||||
int
|
||||
_iswctype_priv(_RuneLocale const *rl,
|
||||
wint_t wc, _WCTypeEntry const *te)
|
||||
{
|
||||
return !!(_runetype_priv(rl, wc) & te->te_mask);
|
||||
}
|
||||
|
||||
wint_t
|
||||
_towctrans_priv(_RuneLocale const *rl,
|
||||
wint_t wc, _WCTransEntry const *te)
|
||||
{
|
||||
__nbrune_t wc0;
|
||||
_RuneRange *rr;
|
||||
_RuneEntry *base, *re;
|
||||
uint32_t x;
|
||||
|
||||
_DIAGASSERT(rl != NULL);
|
||||
_DIAGASSERT(te != NULL);
|
||||
|
||||
if (wc == WEOF)
|
||||
return wc;
|
||||
if (te->te_name == NULL)
|
||||
_wctrans_init(__UNCONST(rl));
|
||||
if (_RUNE_ISCACHED(wc))
|
||||
return te->te_cached[(size_t)wc];
|
||||
wc0 = (__nbrune_t)wc;
|
||||
rr = te->te_extmap;
|
||||
_DIAGASSERT(rr != NULL);
|
||||
base = rr->rr_rune_ranges;
|
||||
for (x = rr->rr_nranges; x != (uint32_t)0; x >>= 1) {
|
||||
re = base + (x >> 1);
|
||||
if (re->re_min <= wc0 && re->re_max >= wc0) {
|
||||
return re->re_map + wc0 - re->re_min;
|
||||
} else if (wc0 >= re->re_max) {
|
||||
base = re + 1;
|
||||
--x;
|
||||
}
|
||||
}
|
||||
return wc;
|
||||
}
|
38
lib/libc/locale/_wctype_local.h
Normal file
38
lib/libc/locale/_wctype_local.h
Normal file
@ -0,0 +1,38 @@
|
||||
/* $NetBSD: _wctype_local.h,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _WCTYPE_LOCAL_H_
|
||||
#define _WCTYPE_LOCAL_H_
|
||||
|
||||
__BEGIN_DECLS
|
||||
_RuneType _runetype_priv(_RuneLocale const *, wint_t);
|
||||
int _iswctype_priv(_RuneLocale const *, wint_t, _WCTypeEntry const *);
|
||||
wint_t _towctrans_priv(_RuneLocale const *, wint_t, _WCTransEntry const *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /*_WCTYPE_LOCAL_H_*/
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: aliasname.c,v 1.2 2005/02/09 21:35:46 kleink Exp $ */
|
||||
/* $NetBSD: aliasname.c,v 1.3 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2002 YAMAMOTO Takashi,
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: aliasname.c,v 1.2 2005/02/09 21:35:46 kleink Exp $");
|
||||
__RCSID("$NetBSD: aliasname.c,v 1.3 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
@ -50,7 +50,7 @@ const char *
|
||||
__unaliasname(const char *dbname, const char *alias, void *buf, size_t bufsize)
|
||||
{
|
||||
FILE *fp = NULL;
|
||||
const char *result = alias;
|
||||
const char *result = NULL;
|
||||
size_t resultlen;
|
||||
size_t aliaslen;
|
||||
const char *p;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: aliasname_local.h,v 1.1 2002/02/13 07:45:52 yamt Exp $ */
|
||||
/* $NetBSD: aliasname_local.h,v 1.2 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2002 YAMAMOTO Takashi,
|
||||
@ -26,4 +26,49 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _ALIASNAME_LOCAL_H_
|
||||
#define _ALIASNAME_LOCAL_H_
|
||||
|
||||
const char *__unaliasname(const char *, const char *, void *, size_t);
|
||||
|
||||
static __inline int
|
||||
__isforcemapping(const char *name)
|
||||
{
|
||||
/* don't use strcasecmp, it owes locale. */
|
||||
return
|
||||
name[0] == '/' &&
|
||||
(name[1] == 'F' || name[1] == 'f') &&
|
||||
(name[2] == 'O' || name[2] == 'o') &&
|
||||
(name[3] == 'R' || name[3] == 'r') &&
|
||||
(name[4] == 'C' || name[4] == 'c') &&
|
||||
(name[5] == 'E' || name[5] == 'e') &&
|
||||
name[6] == '\0';
|
||||
}
|
||||
|
||||
#endif /*_ALIASNAME_LOCAL_H_*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* $NetBSD: wcswidth.c,v 1.5 2008/08/12 21:59:27 tnozaki Exp $ */
|
||||
/* $NetBSD: bsdctype.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)1999 Citrus Project,
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -24,37 +24,23 @@
|
||||
* 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.
|
||||
*
|
||||
* citrus Id: wcswidth.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: wcswidth.c,v 1.5 2008/08/12 21:59:27 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: bsdctype.c,v 1.1 2009/01/02 00:20:19 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
#include <assert.h>
|
||||
#include <wchar.h>
|
||||
#include <sys/types.h>
|
||||
#define _CTYPE_PRIVATE
|
||||
#include <ctype.h>
|
||||
|
||||
int
|
||||
wcswidth(s, n)
|
||||
const wchar_t *s;
|
||||
size_t n;
|
||||
{
|
||||
int w, x;
|
||||
#include "bsdctype.h"
|
||||
|
||||
_DIAGASSERT(s != NULL);
|
||||
const _BSDCTypeLocale _DefaultBSDCTypeLocale = {
|
||||
_C_ctype_,
|
||||
_C_tolower_,
|
||||
_C_toupper_
|
||||
};
|
||||
|
||||
w = 0;
|
||||
while (n && *s) {
|
||||
x = wcwidth(*s);
|
||||
if (x < 0)
|
||||
return -1;
|
||||
w += x;
|
||||
s++;
|
||||
n--;
|
||||
}
|
||||
|
||||
return w;
|
||||
}
|
||||
const _BSDCTypeLocale *_CurrentBSDCTypeLocale = &_DefaultBSDCTypeLocale;
|
41
lib/libc/locale/bsdctype.h
Normal file
41
lib/libc/locale/bsdctype.h
Normal file
@ -0,0 +1,41 @@
|
||||
/* $NetBSD: bsdctype.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _BSDCTYPE_H_
|
||||
#define _BSDCTYPE_H_
|
||||
|
||||
typedef struct _BSDCTypeLocale {
|
||||
const unsigned char *ctype_tab;
|
||||
const short *tolower_tab;
|
||||
const short *toupper_tab;
|
||||
} _BSDCTypeLocale;
|
||||
|
||||
extern const _BSDCTypeLocale _DefaultBSDCTypeLocale;
|
||||
extern const _BSDCTypeLocale *_CurrentBSDCTypeLocale;
|
||||
|
||||
#endif /*_BSDCTYPE_H_*/
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: ctypeio.c,v 1.7 2005/11/29 03:11:59 christos Exp $ */
|
||||
/* $NetBSD: ctypeio.c,v 1.8 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Christos Zoulas. All rights reserved.
|
||||
@ -31,72 +31,76 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: ctypeio.c,v 1.7 2005/11/29 03:11:59 christos Exp $");
|
||||
__RCSID("$NetBSD: ctypeio.c,v 1.8 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <assert.h>
|
||||
#define _CTYPE_PRIVATE
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define _CTYPE_PRIVATE
|
||||
#include <ctype.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "bsdctype.h"
|
||||
#include "ctypeio.h"
|
||||
|
||||
int
|
||||
__loadctype(name)
|
||||
const char *name;
|
||||
__loadctype(const char * __restrict path, _BSDCTypeLocale ** __restrict pdata)
|
||||
{
|
||||
FILE *fp;
|
||||
char id[sizeof(_CTYPE_ID) - 1];
|
||||
u_int32_t i, len;
|
||||
unsigned char *new_ctype = NULL;
|
||||
short *new_toupper = NULL, *new_tolower = NULL;
|
||||
uint32_t i, len;
|
||||
char *ptr;
|
||||
uint8_t *new_ctype;
|
||||
int16_t *new_tolower, *new_toupper;
|
||||
_BSDCTypeLocale *data;
|
||||
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(path != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
if ((fp = fopen(name, "r")) == NULL)
|
||||
return 0;
|
||||
fp = fopen(path, "r");
|
||||
if (fp == NULL)
|
||||
return ENOENT;
|
||||
|
||||
if (fread(id, sizeof(id), 1, fp) != 1)
|
||||
goto bad;
|
||||
if (fread(id, sizeof(id), 1, fp) != 1 ||
|
||||
memcmp(id, _CTYPE_ID, sizeof(id)) != 0)
|
||||
goto bad0;
|
||||
|
||||
if (memcmp(id, _CTYPE_ID, sizeof(id)) != 0)
|
||||
goto bad;
|
||||
if (fread(&i, sizeof(uint32_t), 1, fp) != 1 ||
|
||||
(i = ntohl(i)) != _CTYPE_REV)
|
||||
goto bad0;
|
||||
|
||||
if (fread(&i, sizeof(u_int32_t), 1, fp) != 1)
|
||||
goto bad;
|
||||
if (fread(&len, sizeof(uint32_t), 1, fp) != 1 ||
|
||||
(len = ntohl(len)) != _CTYPE_NUM_CHARS)
|
||||
goto bad0;
|
||||
|
||||
if ((i = ntohl(i)) != _CTYPE_REV)
|
||||
goto bad;
|
||||
ptr = malloc(sizeof(*data) + ((sizeof(uint8_t) +
|
||||
sizeof(int16_t) + sizeof(int16_t)) * (len + 1)));
|
||||
if (ptr == NULL)
|
||||
return ENOMEM;
|
||||
|
||||
if (fread(&len, sizeof(u_int32_t), 1, fp) != 1)
|
||||
goto bad;
|
||||
data = (_BSDCTypeLocale *)(void *)ptr;
|
||||
ptr += sizeof(*data);
|
||||
|
||||
if ((len = ntohl(len)) != _CTYPE_NUM_CHARS)
|
||||
goto bad;
|
||||
(new_ctype = (void *)ptr)[0] = (uint8_t)0;
|
||||
ptr += sizeof(uint8_t);
|
||||
if (fread((void *)ptr, sizeof(uint8_t), len, fp) != len)
|
||||
goto bad1;
|
||||
ptr += sizeof(uint8_t) * len;
|
||||
|
||||
if ((new_ctype = malloc(sizeof(u_int8_t) * (1 + len))) == NULL)
|
||||
goto bad;
|
||||
(new_toupper = (void *)ptr)[0] = (int16_t)EOF;
|
||||
ptr += sizeof(int16_t);
|
||||
if (fread((void *)ptr, sizeof(int16_t), len, fp) != len)
|
||||
goto bad1;
|
||||
ptr += sizeof(int16_t) * len;
|
||||
|
||||
new_ctype[0] = 0;
|
||||
if (fread(&new_ctype[1], sizeof(u_int8_t), len, fp) != len)
|
||||
goto bad;
|
||||
|
||||
if ((new_toupper = malloc(sizeof(int16_t) * (1 + len))) == NULL)
|
||||
goto bad;
|
||||
|
||||
new_toupper[0] = EOF;
|
||||
if (fread(&new_toupper[1], sizeof(int16_t), len, fp) != len)
|
||||
goto bad;
|
||||
|
||||
if ((new_tolower = malloc(sizeof(int16_t) * (1 + len))) == NULL)
|
||||
goto bad;
|
||||
|
||||
new_tolower[0] = EOF;
|
||||
if (fread(&new_tolower[1], sizeof(int16_t), len, fp) != len)
|
||||
goto bad;
|
||||
(new_tolower = (void *)ptr)[0] = (int16_t)EOF;
|
||||
ptr += sizeof(int16_t);
|
||||
if (fread((void *)ptr, sizeof(int16_t), len, fp) != len)
|
||||
goto bad1;
|
||||
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
for (i = 1; i <= len; i++) {
|
||||
@ -105,73 +109,18 @@ __loadctype(name)
|
||||
}
|
||||
#endif
|
||||
|
||||
(void) fclose(fp);
|
||||
if (_ctype_ != _C_ctype_)
|
||||
free(__UNCONST(_ctype_));
|
||||
_ctype_ = new_ctype;
|
||||
if (_toupper_tab_ != _C_toupper_)
|
||||
free(__UNCONST(_toupper_tab_));
|
||||
_toupper_tab_ = new_toupper;
|
||||
if (_tolower_tab_ != _C_tolower_)
|
||||
free(__UNCONST(_tolower_tab_));
|
||||
_tolower_tab_ = new_tolower;
|
||||
fclose(fp);
|
||||
|
||||
return 1;
|
||||
bad:
|
||||
free(new_tolower);
|
||||
free(new_toupper);
|
||||
free(new_ctype);
|
||||
(void) fclose(fp);
|
||||
return 0;
|
||||
}
|
||||
data->ctype_tab = (const unsigned char *)new_ctype;
|
||||
data->toupper_tab = (const short *)new_toupper;
|
||||
data->tolower_tab = (const short *)new_tolower;
|
||||
|
||||
int
|
||||
__savectype(name, new_ctype, new_toupper, new_tolower)
|
||||
const char *name;
|
||||
unsigned char *new_ctype;
|
||||
short *new_toupper, *new_tolower;
|
||||
{
|
||||
FILE *fp;
|
||||
u_int32_t i, len = _CTYPE_NUM_CHARS;
|
||||
*pdata = data;
|
||||
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(new_ctype != NULL);
|
||||
_DIAGASSERT(new_toupper != NULL);
|
||||
_DIAGASSERT(new_tolower != NULL);
|
||||
|
||||
if ((fp = fopen(name, "w")) == NULL)
|
||||
return 0;
|
||||
|
||||
if (fwrite(_CTYPE_ID, sizeof(_CTYPE_ID) - 1, 1, fp) != 1)
|
||||
goto bad;
|
||||
|
||||
i = htonl(_CTYPE_REV);
|
||||
if (fwrite(&i, sizeof(u_int32_t), 1, fp) != 1)
|
||||
goto bad;
|
||||
|
||||
i = htonl(len);
|
||||
if (fwrite(&i, sizeof(u_int32_t), 1, fp) != 1)
|
||||
goto bad;
|
||||
|
||||
if (fwrite(&new_ctype[1], sizeof(u_int8_t), len, fp) != len)
|
||||
goto bad;
|
||||
|
||||
#if BYTE_ORDER == LITTLE_ENDIAN
|
||||
for (i = 1; i <= len; i++) {
|
||||
new_toupper[i] = htons(new_toupper[i]);
|
||||
new_tolower[i] = htons(new_tolower[i]);
|
||||
}
|
||||
#endif
|
||||
if (fwrite(&new_toupper[1], sizeof(int16_t), len, fp) != len)
|
||||
goto bad;
|
||||
|
||||
if (fwrite(&new_tolower[1], sizeof(int16_t), len, fp) != len)
|
||||
goto bad;
|
||||
|
||||
|
||||
(void) fclose(fp);
|
||||
return 1;
|
||||
bad:
|
||||
(void) fclose(fp);
|
||||
return 0;
|
||||
bad1:
|
||||
free(data);
|
||||
bad0:
|
||||
return EFTYPE;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: ctypeio.h,v 1.1 1997/06/02 09:52:48 kleink Exp $ */
|
||||
/* $NetBSD: ctypeio.h,v 1.2 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Christos Zoulas. All rights reserved.
|
||||
@ -30,6 +30,5 @@
|
||||
*/
|
||||
|
||||
__BEGIN_DECLS
|
||||
int __loadctype __P((const char *));
|
||||
int __savectype __P((const char *, unsigned char *, short *, short *));
|
||||
int __loadctype(const char * __restrict, _BSDCTypeLocale ** __restrict pdata);
|
||||
__END_DECLS
|
||||
|
49
lib/libc/locale/current_locale.c
Normal file
49
lib/libc/locale/current_locale.c
Normal file
@ -0,0 +1,49 @@
|
||||
/* $NetBSD: current_locale.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: current_locale.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
static struct _locale_impl_t *__current_locale = &_global_locale;
|
||||
|
||||
struct _locale_impl_t **
|
||||
_current_locale()
|
||||
{
|
||||
return &__current_locale;
|
||||
}
|
54
lib/libc/locale/dummy_lc_collate.c
Normal file
54
lib/libc/locale/dummy_lc_collate.c
Normal file
@ -0,0 +1,54 @@
|
||||
/* $NetBSD: dummy_lc_collate.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: dummy_lc_collate.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
/*
|
||||
* macro required by dummy_lc_template.h
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_dummy_LC_COLLATE_,name)
|
||||
|
||||
#define _CATEGORY_ID LC_COLLATE
|
||||
#define _CATEGORY_NAME "LC_COLLATE"
|
||||
|
||||
#include "dummy_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_dummy_LC_COLLATE_);
|
56
lib/libc/locale/dummy_lc_template.h
Normal file
56
lib/libc/locale/dummy_lc_template.h
Normal file
@ -0,0 +1,56 @@
|
||||
/* $NetBSD: dummy_lc_template.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _DUMMY_LC_TEMPLATE_H_
|
||||
#define _DUMMY_LC_TEMPLATE_H_
|
||||
|
||||
#include "generic_lc_template_decl.h"
|
||||
|
||||
static const char *
|
||||
_PREFIX(setlocale)(const char * __restrict name,
|
||||
struct _locale_impl_t * __restrict locale)
|
||||
{
|
||||
if (name != NULL) {
|
||||
if (*name == '\0')
|
||||
name = _get_locale_env(_CATEGORY_NAME);
|
||||
if (strcmp(name, locale->part_name[(size_t)_CATEGORY_ID])) {
|
||||
if (!strcmp(_C_LOCALE, name))
|
||||
name = _C_LOCALE;
|
||||
else if (!strcmp(_POSIX_LOCALE, name))
|
||||
name = _POSIX_LOCALE;
|
||||
else
|
||||
return NULL;
|
||||
locale->part_name[(size_t)_CATEGORY_ID] = name;
|
||||
}
|
||||
}
|
||||
return locale->part_name[(size_t)_CATEGORY_ID];
|
||||
}
|
||||
|
||||
#include "generic_lc_template.h"
|
||||
|
||||
#endif /*_DUMMY_LC_TEMPLATE_H_*/
|
103
lib/libc/locale/fix_grouping.c
Normal file
103
lib/libc/locale/fix_grouping.c
Normal file
@ -0,0 +1,103 @@
|
||||
/* $NetBSD: fix_grouping.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2001 Alexey Zelkin <phantom@FreeBSD.org>
|
||||
* 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.
|
||||
*
|
||||
* Original version ID:
|
||||
* FreeBSD: fix_grouping.c,v 1.8 2003/06/26 10:46:16 phantom Exp
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: fix_grouping.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <ctype.h>
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "fix_grouping.h"
|
||||
|
||||
#ifndef NBCHAR_MAX
|
||||
#define NBCHAR_MAX CHAR_MAX
|
||||
#endif
|
||||
|
||||
static const char nogrouping[] = { NBCHAR_MAX, '\0' };
|
||||
|
||||
/* don't use libc's isdigit, it owes locale. */
|
||||
#undef isdigit
|
||||
#define isdigit(c) (c >= '0' && c <= '9')
|
||||
|
||||
/*
|
||||
* Internal helper used to convert grouping sequences from string
|
||||
* representation into POSIX specified form, i.e.
|
||||
*
|
||||
* "3;3;-1" -> "\003\003\177\000"
|
||||
*/
|
||||
|
||||
const char *
|
||||
__fix_locale_grouping_str(const char *str)
|
||||
{
|
||||
char *src, *dst;
|
||||
char n;
|
||||
|
||||
if (str == NULL || *str == '\0') {
|
||||
return nogrouping;
|
||||
}
|
||||
|
||||
for (src = __UNCONST(str), dst = __UNCONST(str); *src != '\0'; src++) {
|
||||
|
||||
/* input string examples: "3;3", "3;2;-1" */
|
||||
if (*src == ';')
|
||||
continue;
|
||||
|
||||
if (*src == '-' && *(src+1) == '1') {
|
||||
*dst++ = NBCHAR_MAX;
|
||||
src++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!isdigit((unsigned char)*src)) {
|
||||
/* broken grouping string */
|
||||
return nogrouping;
|
||||
}
|
||||
|
||||
/* assume all numbers <= 99 */
|
||||
n = *src - '0';
|
||||
if (isdigit((unsigned char)*(src+1))) {
|
||||
src++;
|
||||
n *= 10;
|
||||
n += *src - '0';
|
||||
}
|
||||
|
||||
*dst = n;
|
||||
/* NOTE: assume all input started with "0" as 'no grouping' */
|
||||
if (*dst == '\0')
|
||||
return (dst == __UNCONST(str)) ? nogrouping : str;
|
||||
dst++;
|
||||
}
|
||||
*dst = '\0';
|
||||
return str;
|
||||
}
|
36
lib/libc/locale/fix_grouping.h
Normal file
36
lib/libc/locale/fix_grouping.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* $NetBSD: fix_grouping.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _FIX_GROUPING_H_
|
||||
#define _FIX_GROUPING_H_
|
||||
|
||||
__BEGIN_DECLS
|
||||
const char *__fix_locale_grouping_str(const char *);
|
||||
__END_DECLS
|
||||
|
||||
#endif /*_FIX_GROUPING_H_*/
|
118
lib/libc/locale/generic_lc_all.c
Normal file
118
lib/libc/locale/generic_lc_all.c
Normal file
@ -0,0 +1,118 @@
|
||||
/* $NetBSD: generic_lc_all.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: generic_lc_all.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_generic_LC_ALL_, name)
|
||||
|
||||
#include "generic_lc_template_decl.h"
|
||||
|
||||
const char *
|
||||
_generic_LC_ALL_setlocale(const char * __restrict name,
|
||||
struct _locale_impl_t * __restrict locale)
|
||||
{
|
||||
_locale_category_t *l;
|
||||
char head[_LOCALENAME_LEN_MAX * (_LC_LAST - 1)], *tail;
|
||||
const char *tokens[_LC_LAST], *s, *t;
|
||||
int i, j;
|
||||
|
||||
l = _find_category(1);
|
||||
_DIAGASSERT(l != NULL);
|
||||
if (name != NULL) {
|
||||
strlcpy(&head[0], name, sizeof(head));
|
||||
tokens[1] = &head[0];
|
||||
tail = strchr(tokens[1], '/');
|
||||
if (tail == NULL) {
|
||||
for (i = 2; i < _LC_LAST; ++i)
|
||||
tokens[i] = tokens[1];
|
||||
} else {
|
||||
*tail++ = '\0';
|
||||
for (i = 2; i < _LC_LAST - 1; ++i) {
|
||||
tokens[i] = (const char *)tail;
|
||||
tail = strchr(tokens[i], '/');
|
||||
if (tail == NULL)
|
||||
return NULL;
|
||||
*tail++ = '\0';
|
||||
}
|
||||
tokens[_LC_LAST - 1] = (const char *)tail;
|
||||
tail = strchr(tokens[i], '/');
|
||||
if (tail == NULL)
|
||||
return NULL;
|
||||
}
|
||||
(*l->setlocale)(tokens[1], locale);
|
||||
}
|
||||
s = (*l->setlocale)(NULL, locale);
|
||||
_DIAGASSERT(s != NULL);
|
||||
strlcpy(&locale->query[0], s, sizeof(locale->query));
|
||||
for (i = 2, j = 0; i < _LC_LAST; ++i) {
|
||||
l = _find_category(i);
|
||||
_DIAGASSERT(l != NULL);
|
||||
if (name != NULL)
|
||||
(*l->setlocale)(tokens[1], locale);
|
||||
t = (*l->setlocale)(NULL, locale);
|
||||
_DIAGASSERT(t != NULL);
|
||||
if (j == 0) {
|
||||
if (!strcmp(s, t))
|
||||
continue;
|
||||
for (j = 2; j < i; ++j) {
|
||||
strlcat(&locale->query[0], "/",
|
||||
sizeof(locale->query));
|
||||
strlcat(&locale->query[0], s,
|
||||
sizeof(locale->query));
|
||||
}
|
||||
}
|
||||
strlcat(&locale->query[0], "/", sizeof(locale->query));
|
||||
strlcat(&locale->query[0], t, sizeof(locale->query));
|
||||
}
|
||||
return (const char *)&locale->query[0];
|
||||
}
|
||||
|
||||
/*
|
||||
* macro requrired by generic_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_ALL
|
||||
|
||||
#include "generic_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_generic_LC_ALL_);
|
45
lib/libc/locale/generic_lc_template.h
Normal file
45
lib/libc/locale/generic_lc_template.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* $NetBSD: generic_lc_template.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _GENERIC_LC_TEMPLATE_H_
|
||||
#define _GENERIC_LC_TEMPLATE_H_
|
||||
|
||||
#ifdef __lint__
|
||||
#define STATIC /**/
|
||||
#else
|
||||
#define STATIC static
|
||||
#endif
|
||||
|
||||
#define _LOCALE_CATEGORY_ENTRY(name) \
|
||||
STATIC const _locale_category_t name##desc = { \
|
||||
.category = _CATEGORY_ID, \
|
||||
.setlocale = &name##setlocale, \
|
||||
}; \
|
||||
__link_set_add_data(all_categories, name##desc)
|
||||
|
||||
#endif /*_GENERIC_LC_TEMPLATE_H_*/
|
35
lib/libc/locale/generic_lc_template_decl.h
Normal file
35
lib/libc/locale/generic_lc_template_decl.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* $NetBSD: generic_lc_template_decl.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _GENERIC_LC_TEMPLATE_DECL_H_
|
||||
#define _GENERIC_LC_TEMPLATE_DECL_H_
|
||||
|
||||
static const char * _PREFIX(setlocale)(const char * __restrict,
|
||||
struct _locale_impl_t * __restrict);
|
||||
|
||||
#endif /*_GENERIC_LC_TEMPLATE_DECL_H_*/
|
170
lib/libc/locale/global_locale.c
Normal file
170
lib/libc/locale/global_locale.c
Normal file
@ -0,0 +1,170 @@
|
||||
/* $NetBSD: global_locale.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: global_locale.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
#define _CTYPE_PRIVATE
|
||||
#include <ctype.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
#ifdef WITH_RUNE
|
||||
#include "rune.h"
|
||||
#else
|
||||
#include "bsdctype.h"
|
||||
#endif
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
struct _locale_impl_t _global_locale =
|
||||
{
|
||||
.cache = {
|
||||
.ctype_tab = (const unsigned char *)&_C_ctype_[0],
|
||||
.tolower_tab = (const short *)&_C_tolower_[0],
|
||||
.toupper_tab = (const short *)&_C_toupper_[0],
|
||||
.mb_cur_max = (size_t)1,
|
||||
.ldata = {
|
||||
.decimal_point = __UNCONST("."),
|
||||
.thousands_sep = __UNCONST(""),
|
||||
.grouping = __UNCONST(""),
|
||||
.int_curr_symbol = __UNCONST(""),
|
||||
.currency_symbol = __UNCONST(""),
|
||||
.mon_decimal_point = __UNCONST(""),
|
||||
.mon_thousands_sep = __UNCONST(""),
|
||||
.mon_grouping = __UNCONST(""),
|
||||
.positive_sign = __UNCONST(""),
|
||||
.negative_sign = __UNCONST(""),
|
||||
.int_frac_digits = CHAR_MAX,
|
||||
.frac_digits = CHAR_MAX,
|
||||
.p_cs_precedes = CHAR_MAX,
|
||||
.p_sep_by_space = CHAR_MAX,
|
||||
.n_cs_precedes = CHAR_MAX,
|
||||
.n_sep_by_space = CHAR_MAX,
|
||||
.p_sign_posn = CHAR_MAX,
|
||||
.n_sign_posn = CHAR_MAX,
|
||||
.int_p_cs_precedes = CHAR_MAX,
|
||||
.int_n_cs_precedes = CHAR_MAX,
|
||||
.int_p_sep_by_space = CHAR_MAX,
|
||||
.int_n_sep_by_space = CHAR_MAX,
|
||||
.int_p_sign_posn = CHAR_MAX,
|
||||
.int_n_sign_posn = CHAR_MAX,
|
||||
},
|
||||
.items = {
|
||||
[(size_t)D_T_FMT ] = "%a %b %e %H:%M:%S %Y",
|
||||
[(size_t)D_FMT ] = "%m/%d/%y",
|
||||
[(size_t)T_FMT ] = "%H:%M:%S",
|
||||
[(size_t)T_FMT_AMPM ] = "%I:%M:%S %p",
|
||||
[(size_t)AM_STR ] = "AM",
|
||||
[(size_t)PM_STR ] = "PM",
|
||||
[(size_t)DAY_1 ] = "Sun",
|
||||
[(size_t)DAY_2 ] = "Mon",
|
||||
[(size_t)DAY_3 ] = "Tue",
|
||||
[(size_t)DAY_4 ] = "Wed",
|
||||
[(size_t)DAY_5 ] = "Thu",
|
||||
[(size_t)DAY_6 ] = "Fri",
|
||||
[(size_t)DAY_7 ] = "Sat",
|
||||
[(size_t)ABDAY_1 ] = "Sunday",
|
||||
[(size_t)ABDAY_2 ] = "Monday",
|
||||
[(size_t)ABDAY_3 ] = "Tuesday",
|
||||
[(size_t)ABDAY_4 ] = "Wednesday",
|
||||
[(size_t)ABDAY_5 ] = "Thursday",
|
||||
[(size_t)ABDAY_6 ] = "Friday",
|
||||
[(size_t)ABDAY_7 ] = "Saturday",
|
||||
[(size_t)MON_1 ] = "Jan",
|
||||
[(size_t)MON_2 ] = "Feb",
|
||||
[(size_t)MON_3 ] = "Mar",
|
||||
[(size_t)MON_4 ] = "Apr",
|
||||
[(size_t)MON_5 ] = "May",
|
||||
[(size_t)MON_6 ] = "Jun",
|
||||
[(size_t)MON_7 ] = "Jul",
|
||||
[(size_t)MON_8 ] = "Aug",
|
||||
[(size_t)MON_9 ] = "Sep",
|
||||
[(size_t)MON_10 ] = "Oct",
|
||||
[(size_t)MON_11 ] = "Nov",
|
||||
[(size_t)MON_12 ] = "Dec",
|
||||
[(size_t)ABMON_1 ] = "January",
|
||||
[(size_t)ABMON_2 ] = "February",
|
||||
[(size_t)ABMON_3 ] = "March",
|
||||
[(size_t)ABMON_4 ] = "April",
|
||||
[(size_t)ABMON_5 ] = "May",
|
||||
[(size_t)ABMON_6 ] = "June",
|
||||
[(size_t)ABMON_7 ] = "July",
|
||||
[(size_t)ABMON_8 ] = "Augst",
|
||||
[(size_t)ABMON_9 ] = "September",
|
||||
[(size_t)ABMON_10 ] = "October",
|
||||
[(size_t)ABMON_11 ] = "November",
|
||||
[(size_t)ABMON_12 ] = "December",
|
||||
[(size_t)RADIXCHAR ] = ".",
|
||||
[(size_t)THOUSEP ] = "",
|
||||
[(size_t)YESSTR ] = "yes",
|
||||
[(size_t)YESEXPR ] = "^[Yy]",
|
||||
[(size_t)NOSTR ] = "no",
|
||||
[(size_t)NOEXPR ] = "^[Nn]",
|
||||
[(size_t)CRNCYSTR ] = NULL,
|
||||
[(size_t)CODESET ] = "646",
|
||||
[(size_t)ERA ] = NULL,
|
||||
[(size_t)ERA_D_FMT ] = NULL,
|
||||
[(size_t)ERA_D_T_FMT] = NULL,
|
||||
[(size_t)ERA_T_FMT ] = NULL,
|
||||
[(size_t)ALT_DIGITS ] = NULL,
|
||||
},
|
||||
},
|
||||
.query = /*_C_LOCALE*/ { 'C', '\0' },
|
||||
.part_name = {
|
||||
[(size_t)LC_ALL ] = _C_LOCALE,
|
||||
[(size_t)LC_COLLATE ] = _C_LOCALE,
|
||||
[(size_t)LC_CTYPE ] = _C_LOCALE,
|
||||
[(size_t)LC_MONETARY] = _C_LOCALE,
|
||||
[(size_t)LC_NUMERIC ] = _C_LOCALE,
|
||||
[(size_t)LC_TIME ] = _C_LOCALE,
|
||||
[(size_t)LC_MESSAGES] = _C_LOCALE,
|
||||
},
|
||||
.part_impl = {
|
||||
[(size_t)LC_ALL ] = (_locale_part_t)NULL,
|
||||
[(size_t)LC_COLLATE ] = (_locale_part_t)NULL,
|
||||
[(size_t)LC_CTYPE ] = (_locale_part_t)
|
||||
#ifdef WITH_RUNE
|
||||
__UNCONST(&_DefaultRuneLocale),
|
||||
#else
|
||||
__UNCONST(&_DefaultBSDCTypeLocale),
|
||||
#endif
|
||||
[(size_t)LC_MONETARY] = (_locale_part_t)
|
||||
__UNCONST(&_DefaultMonetaryLocale),
|
||||
[(size_t)LC_NUMERIC ] = (_locale_part_t)
|
||||
__UNCONST(&_DefaultNumericLocale),
|
||||
[(size_t)LC_MESSAGES] = (_locale_part_t)
|
||||
__UNCONST(&_DefaultMessagesLocale),
|
||||
},
|
||||
};
|
@ -1,282 +0,0 @@
|
||||
/* $NetBSD: iswctype.c,v 1.16 2008/08/12 20:51:25 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989 The Regents of the University of California.
|
||||
* All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: iswctype.c,v 1.16 2008/08/12 20:51:25 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
#include "rune.h"
|
||||
#include "runetype.h"
|
||||
#include "rune_local.h"
|
||||
#include "_wctrans_local.h"
|
||||
|
||||
#ifdef __weak_alias
|
||||
__weak_alias(wcwidth,_wcwidth)
|
||||
#endif
|
||||
|
||||
#ifdef lint
|
||||
#define __inline
|
||||
#endif
|
||||
|
||||
static __inline _RuneType __runetype_w __P((wint_t));
|
||||
static __inline int __isctype_w __P((wint_t, _RuneType));
|
||||
static __inline wint_t __toupper_w __P((wint_t));
|
||||
static __inline wint_t __tolower_w __P((wint_t));
|
||||
|
||||
static __inline _RuneType
|
||||
__runetype_w(c)
|
||||
wint_t c;
|
||||
{
|
||||
_RuneLocale *rl = _CurrentRuneLocale;
|
||||
|
||||
return (_RUNE_ISCACHED(c) ?
|
||||
rl->rl_runetype[c] : ___runetype_mb(c));
|
||||
}
|
||||
|
||||
static __inline int
|
||||
__isctype_w(c, f)
|
||||
wint_t c;
|
||||
_RuneType f;
|
||||
{
|
||||
return (!!(__runetype_w(c) & f));
|
||||
}
|
||||
|
||||
static __inline wint_t
|
||||
__toupper_w(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (_towctrans(c, _wctrans_upper(_CurrentRuneLocale)));
|
||||
}
|
||||
|
||||
static __inline wint_t
|
||||
__tolower_w(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (_towctrans(c, _wctrans_lower(_CurrentRuneLocale)));
|
||||
}
|
||||
|
||||
#undef iswalnum
|
||||
int
|
||||
iswalnum(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_A|_CTYPE_D));
|
||||
}
|
||||
|
||||
#undef iswalpha
|
||||
int
|
||||
iswalpha(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_A));
|
||||
}
|
||||
|
||||
#undef iswblank
|
||||
int
|
||||
iswblank(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_B));
|
||||
}
|
||||
|
||||
#undef iswcntrl
|
||||
int
|
||||
iswcntrl(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_C));
|
||||
}
|
||||
|
||||
#undef iswdigit
|
||||
int
|
||||
iswdigit(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_D));
|
||||
}
|
||||
|
||||
#undef iswgraph
|
||||
int
|
||||
iswgraph(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_G));
|
||||
}
|
||||
|
||||
#undef iswlower
|
||||
int
|
||||
iswlower(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_L));
|
||||
}
|
||||
|
||||
#undef iswprint
|
||||
int
|
||||
iswprint(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_R));
|
||||
}
|
||||
|
||||
#undef iswpunct
|
||||
int
|
||||
iswpunct(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_P));
|
||||
}
|
||||
|
||||
#undef iswspace
|
||||
int
|
||||
iswspace(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_S));
|
||||
}
|
||||
|
||||
#undef iswupper
|
||||
int
|
||||
iswupper(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_U));
|
||||
}
|
||||
|
||||
#undef iswxdigit
|
||||
int
|
||||
iswxdigit(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__isctype_w((c), _CTYPE_X));
|
||||
}
|
||||
|
||||
#undef towupper
|
||||
wint_t
|
||||
towupper(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__toupper_w(c));
|
||||
}
|
||||
|
||||
#undef towlower
|
||||
wint_t
|
||||
towlower(c)
|
||||
wint_t c;
|
||||
{
|
||||
return (__tolower_w(c));
|
||||
}
|
||||
|
||||
int
|
||||
wcwidth(c)
|
||||
wchar_t c;
|
||||
{
|
||||
_RuneType x;
|
||||
|
||||
if (c == L'\0')
|
||||
return 0;
|
||||
x = __runetype_w(c);
|
||||
if (x & _CTYPE_R)
|
||||
return ((unsigned)x & _CTYPE_SWM) >> _CTYPE_SWS;
|
||||
return -1;
|
||||
}
|
||||
|
||||
#undef wctrans
|
||||
wctrans_t
|
||||
wctrans(charclass)
|
||||
const char *charclass;
|
||||
{
|
||||
int i;
|
||||
_RuneLocale *rl = _CurrentRuneLocale;
|
||||
|
||||
if (rl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name==NULL)
|
||||
_wctrans_init(rl);
|
||||
|
||||
for (i=0; i<_WCTRANS_NINDEXES; i++)
|
||||
if (!strcmp(rl->rl_wctrans[i].te_name, charclass))
|
||||
return ((wctrans_t)&rl->rl_wctrans[i]);
|
||||
|
||||
return ((wctrans_t)NULL);
|
||||
}
|
||||
|
||||
#undef towctrans
|
||||
wint_t
|
||||
towctrans(c, desc)
|
||||
wint_t c;
|
||||
wctrans_t desc;
|
||||
{
|
||||
if (desc==NULL) {
|
||||
errno = EINVAL;
|
||||
return (c);
|
||||
}
|
||||
return (_towctrans(c, (_WCTransEntry *)desc));
|
||||
}
|
||||
|
||||
#undef wctype
|
||||
wctype_t
|
||||
wctype(const char *property)
|
||||
{
|
||||
int i;
|
||||
_RuneLocale *rl = _CurrentRuneLocale;
|
||||
|
||||
for (i=0; i<_WCTYPE_NINDEXES; i++)
|
||||
if (!strcmp(rl->rl_wctype[i].te_name, property))
|
||||
return ((wctype_t)&rl->rl_wctype[i]);
|
||||
return ((wctype_t)NULL);
|
||||
}
|
||||
|
||||
#undef iswctype
|
||||
int
|
||||
iswctype(wint_t c, wctype_t charclass)
|
||||
{
|
||||
|
||||
/*
|
||||
* SUSv3: If charclass is 0, iswctype() shall return 0.
|
||||
*/
|
||||
if (charclass == (wctype_t)0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return (__isctype_w(c, ((_WCTypeEntry *)charclass)->te_mask));
|
||||
}
|
189
lib/libc/locale/iswctype_mb.c
Normal file
189
lib/libc/locale/iswctype_mb.c
Normal file
@ -0,0 +1,189 @@
|
||||
/* $NetBSD: iswctype_mb.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: iswctype_mb.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wctype.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "rune.h"
|
||||
#include "_wctype_local.h"
|
||||
#include "_wctrans_local.h"
|
||||
|
||||
#define _RUNE_LOCALE() ((_RuneLocale const *) \
|
||||
(*_current_locale())->part_impl[(size_t)LC_CTYPE])
|
||||
|
||||
#define _ISWCTYPE_FUNC(name, index) \
|
||||
int \
|
||||
isw##name(wint_t wc) \
|
||||
{ \
|
||||
_RuneLocale const *rl; \
|
||||
_WCTypeEntry const *te; \
|
||||
\
|
||||
rl = _RUNE_LOCALE(); \
|
||||
te = &rl->rl_wctype[index]; \
|
||||
return _iswctype_priv(rl, wc, te); \
|
||||
}
|
||||
_ISWCTYPE_FUNC(alnum, _WCTYPE_INDEX_ALNUM)
|
||||
_ISWCTYPE_FUNC(alpha, _WCTYPE_INDEX_ALPHA)
|
||||
_ISWCTYPE_FUNC(blank, _WCTYPE_INDEX_BLANK)
|
||||
_ISWCTYPE_FUNC(cntrl, _WCTYPE_INDEX_CNTRL)
|
||||
_ISWCTYPE_FUNC(digit, _WCTYPE_INDEX_DIGIT)
|
||||
_ISWCTYPE_FUNC(graph, _WCTYPE_INDEX_GRAPH)
|
||||
_ISWCTYPE_FUNC(lower, _WCTYPE_INDEX_LOWER)
|
||||
_ISWCTYPE_FUNC(print, _WCTYPE_INDEX_PRINT)
|
||||
_ISWCTYPE_FUNC(punct, _WCTYPE_INDEX_PUNCT)
|
||||
_ISWCTYPE_FUNC(space, _WCTYPE_INDEX_SPACE)
|
||||
_ISWCTYPE_FUNC(upper, _WCTYPE_INDEX_UPPER)
|
||||
_ISWCTYPE_FUNC(xdigit, _WCTYPE_INDEX_XDIGIT)
|
||||
|
||||
#define _TOWCTRANS_FUNC(name, index) \
|
||||
wint_t \
|
||||
tow##name(wint_t wc) \
|
||||
{ \
|
||||
_RuneLocale const *rl; \
|
||||
_WCTransEntry const *te; \
|
||||
\
|
||||
rl = _RUNE_LOCALE(); \
|
||||
te = &rl->rl_wctrans[index]; \
|
||||
return _towctrans_priv(rl, wc, te); \
|
||||
}
|
||||
_TOWCTRANS_FUNC(upper, _WCTRANS_INDEX_UPPER)
|
||||
_TOWCTRANS_FUNC(lower, _WCTRANS_INDEX_LOWER)
|
||||
|
||||
wctype_t
|
||||
wctype(const char *charclass)
|
||||
{
|
||||
_RuneLocale const *rl;
|
||||
size_t i;
|
||||
|
||||
rl = _RUNE_LOCALE();
|
||||
for (i = 0; i < _WCTYPE_NINDEXES; ++i) {
|
||||
if (!strcmp(rl->rl_wctype[i].te_name, charclass))
|
||||
return (wctype_t)__UNCONST(&rl->rl_wctype[i]);
|
||||
}
|
||||
return (wctype_t)NULL;
|
||||
}
|
||||
|
||||
wctrans_t
|
||||
wctrans(const char *charmap)
|
||||
{
|
||||
_RuneLocale const *rl;
|
||||
size_t i;
|
||||
|
||||
rl = _RUNE_LOCALE();
|
||||
if (rl->rl_wctrans[_WCTRANS_INDEX_LOWER].te_name == NULL)
|
||||
_wctrans_init(__UNCONST(rl));
|
||||
for (i = 0; i < _WCTRANS_NINDEXES; ++i) {
|
||||
if (!strcmp(rl->rl_wctrans[i].te_name, charmap))
|
||||
return (wctrans_t)__UNCONST(&rl->rl_wctype[i]);
|
||||
}
|
||||
return (wctrans_t)NULL;
|
||||
}
|
||||
|
||||
int
|
||||
iswctype(wint_t wc, wctype_t charclass)
|
||||
{
|
||||
_RuneLocale const *rl;
|
||||
_WCTypeEntry const *te;
|
||||
|
||||
if (charclass == NULL) {
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
}
|
||||
rl = _RUNE_LOCALE();
|
||||
te = (_WCTypeEntry const *)charclass;
|
||||
return _iswctype_priv(rl, wc, te);
|
||||
}
|
||||
|
||||
wint_t
|
||||
towctrans(wint_t wc, wctrans_t charmap)
|
||||
{
|
||||
_RuneLocale const *rl;
|
||||
_WCTransEntry const *te;
|
||||
|
||||
if (charmap == NULL) {
|
||||
errno = EINVAL;
|
||||
return wc;
|
||||
}
|
||||
rl = _RUNE_LOCALE();
|
||||
te = (_WCTransEntry const *)charmap;
|
||||
return _towctrans_priv(rl, wc, te);
|
||||
}
|
||||
|
||||
__weak_alias(wcwidth,_wcwidth)
|
||||
|
||||
int
|
||||
wcwidth(wchar_t wc)
|
||||
{
|
||||
_RuneLocale const *rl;
|
||||
_RuneType x;
|
||||
|
||||
if (wc == L'\0')
|
||||
return 0;
|
||||
rl = _RUNE_LOCALE();
|
||||
x = _runetype_priv(rl, wc);
|
||||
if (x & _CTYPE_R)
|
||||
return ((unsigned)x & _CTYPE_SWM) >> _CTYPE_SWS;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
wcswidth(const wchar_t * __restrict ws, size_t wn)
|
||||
{
|
||||
_RuneLocale const *rl;
|
||||
_RuneType x;
|
||||
int width;
|
||||
|
||||
_DIAGASSERT(ws != NULL);
|
||||
|
||||
rl = _RUNE_LOCALE();
|
||||
width = 0;
|
||||
while (wn > 0 && *ws != L'\0') {
|
||||
x = _runetype_priv(rl, *ws);
|
||||
if ((x & _CTYPE_R) == 0)
|
||||
return -1;
|
||||
width += ((unsigned)x & _CTYPE_SWM) >> _CTYPE_SWS;
|
||||
++ws, --wn;
|
||||
}
|
||||
return width;
|
||||
}
|
@ -1,13 +1,8 @@
|
||||
/* $NetBSD: iswctype_sb.c,v 1.5 2008/08/12 20:51:25 tnozaki Exp $ */
|
||||
/* $NetBSD: iswctype_sb.c,v 1.6 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989 The Regents of the University of California.
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
* (c) UNIX System Laboratories, Inc.
|
||||
* All or some portions of this file are derived from material licensed
|
||||
* to the University of California by American Telephone and Telegraph
|
||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
||||
* the permission of UNIX System Laboratories, Inc.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -17,14 +12,11 @@
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* 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 REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* 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)
|
||||
@ -36,134 +28,171 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: iswctype_sb.c,v 1.5 2008/08/12 20:51:25 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: iswctype_sb.c,v 1.6 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <wchar.h>
|
||||
#include <wctype.h>
|
||||
#include "namespace.h"
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wctype.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#undef iswalnum
|
||||
int
|
||||
iswalnum(c)
|
||||
wint_t c;
|
||||
#define _ISWCTYPE_FUNC(name) \
|
||||
int \
|
||||
isw##name(wint_t wc) \
|
||||
{ \
|
||||
int c; \
|
||||
\
|
||||
c = (wc == WEOF) ? EOF : (unsigned char)wc; \
|
||||
return is##name(c); \
|
||||
}
|
||||
_ISWCTYPE_FUNC(alnum)
|
||||
_ISWCTYPE_FUNC(alpha)
|
||||
_ISWCTYPE_FUNC(blank)
|
||||
_ISWCTYPE_FUNC(cntrl)
|
||||
_ISWCTYPE_FUNC(digit)
|
||||
_ISWCTYPE_FUNC(graph)
|
||||
_ISWCTYPE_FUNC(lower)
|
||||
_ISWCTYPE_FUNC(print)
|
||||
_ISWCTYPE_FUNC(punct)
|
||||
_ISWCTYPE_FUNC(space)
|
||||
_ISWCTYPE_FUNC(upper)
|
||||
_ISWCTYPE_FUNC(xdigit)
|
||||
|
||||
#define _TOWCTRANS_FUNC(name) \
|
||||
wint_t \
|
||||
tow##name(wint_t wc) \
|
||||
{ \
|
||||
c = (wc == WEOF) ? EOF : (unsigned char)wc; \
|
||||
return to##name(c); \
|
||||
}
|
||||
_TOWCTRANS_FUNC(upper)
|
||||
_TOWCTRANS_FUNC(lower)
|
||||
|
||||
struct _wctype_priv_t {
|
||||
const char *name;
|
||||
int (*iswctype)(wint_t);
|
||||
};
|
||||
|
||||
static const struct _wctype_priv_t _wctype_decl[] = {
|
||||
{ "alnum", &iswalnum },
|
||||
{ "alpha", &iswalpha },
|
||||
{ "blank", &iswblank },
|
||||
{ "cntrl", &iswcntrl },
|
||||
{ "digit", &iswdigit },
|
||||
{ "graph", &iswgraph },
|
||||
{ "lower", &iswlower },
|
||||
{ "print", &iswprint },
|
||||
{ "punct", &iswpunct },
|
||||
{ "space", &iswspace },
|
||||
{ "upper", &iswupper },
|
||||
{ "xdigit", &iswxdigit },
|
||||
};
|
||||
static const size_t _wctype_decl_size =
|
||||
sizeof(_wctype_decl) / sizeof(struct _wctype_priv_t);
|
||||
|
||||
wctype_t
|
||||
wctype(const char *charclass)
|
||||
{
|
||||
return isalnum((int)c);
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < _wctype_decl_size; ++i) {
|
||||
if (!strcmp(charclass, _wctype_decl[i].name))
|
||||
return (wctype_t)__UNCONST(&_wctype_decl[i]);
|
||||
}
|
||||
return (wctrans_t)NULL;
|
||||
}
|
||||
|
||||
#undef iswalpha
|
||||
int
|
||||
iswalpha(c)
|
||||
wint_t c;
|
||||
struct _wctrans_priv_t {
|
||||
const char *name;
|
||||
wint_t (*towctrans)(wint_t);
|
||||
};
|
||||
|
||||
static const struct _wctrans_priv_t _wctrans_decl[] = {
|
||||
{ "upper", &towupper },
|
||||
{ "lower", &towlower },
|
||||
};
|
||||
static const size_t _wctrans_decl_size =
|
||||
sizeof(_wctrans_decl) / sizeof(struct _wctrans_priv_t);
|
||||
|
||||
wctrans_t
|
||||
/*ARGSUSED*/
|
||||
wctrans(const char *charmap)
|
||||
{
|
||||
return isalpha((int)c);
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < _wctrans_decl_size; ++i) {
|
||||
if (!strcmp(charmap, _wctrans_decl[i].name))
|
||||
return (wctrans_t)__UNCONST(&_wctrans_decl[i]);
|
||||
}
|
||||
return (wctrans_t)NULL;
|
||||
}
|
||||
|
||||
#undef iswblank
|
||||
int
|
||||
iswblank(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isblank((int)c);
|
||||
}
|
||||
|
||||
#undef iswcntrl
|
||||
int
|
||||
iswcntrl(c)
|
||||
wint_t c;
|
||||
{
|
||||
return iscntrl((int)c);
|
||||
}
|
||||
|
||||
#undef iswdigit
|
||||
int
|
||||
iswdigit(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isdigit((int)c);
|
||||
}
|
||||
|
||||
#undef iswgraph
|
||||
int
|
||||
iswgraph(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isgraph((int)c);
|
||||
}
|
||||
|
||||
#undef iswlower
|
||||
int
|
||||
iswlower(c)
|
||||
wint_t c;
|
||||
{
|
||||
return islower((int)c);
|
||||
}
|
||||
|
||||
#undef iswprint
|
||||
int
|
||||
iswprint(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isprint((int)c);
|
||||
}
|
||||
|
||||
#undef iswpunct
|
||||
int
|
||||
iswpunct(c)
|
||||
wint_t c;
|
||||
{
|
||||
return ispunct((int)c);
|
||||
}
|
||||
|
||||
#undef iswspace
|
||||
int
|
||||
iswspace(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isspace((int)c);
|
||||
}
|
||||
|
||||
#undef iswupper
|
||||
int
|
||||
iswupper(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isupper((int)c);
|
||||
}
|
||||
|
||||
#undef iswxdigit
|
||||
int
|
||||
iswxdigit(c)
|
||||
wint_t c;
|
||||
{
|
||||
return isxdigit((int)c);
|
||||
}
|
||||
|
||||
#undef towupper
|
||||
wint_t
|
||||
towupper(c)
|
||||
wint_t c;
|
||||
{
|
||||
return toupper((int)c);
|
||||
}
|
||||
|
||||
#undef towlower
|
||||
wint_t
|
||||
towlower(c)
|
||||
wint_t c;
|
||||
{
|
||||
return tolower((int)c);
|
||||
}
|
||||
|
||||
#undef wcwidth
|
||||
int
|
||||
/*ARGSUSED*/
|
||||
wcwidth(c)
|
||||
wchar_t c;
|
||||
iswctype(wint_t wc, wctype_t charclass)
|
||||
{
|
||||
if (c == L'\0')
|
||||
const struct _wctype_priv_t *p;
|
||||
|
||||
p = (const struct _wctype_priv_t *)(void *)charclass;
|
||||
if (p < &_wctype_decl[0] || p > &_wctype_decl[_wctype_decl_size - 1]) {
|
||||
errno = EINVAL;
|
||||
return 0;
|
||||
if (isprint((int)c))
|
||||
}
|
||||
return (*p->iswctype)(wc);
|
||||
}
|
||||
|
||||
wint_t
|
||||
/*ARGSUSED*/
|
||||
towctrans(wint_t wc, wctrans_t charmap)
|
||||
{
|
||||
const struct _wctrans_priv_t *p;
|
||||
|
||||
p = (const struct _wctrans_priv_t *)(void *)charmap;
|
||||
if (p < &_wctrans_decl[0] || p > &_wctrans_decl[_wctrans_decl_size - 1]) {
|
||||
errno = EINVAL;
|
||||
return wc;
|
||||
}
|
||||
return (*p->towctrans)(wc);
|
||||
}
|
||||
|
||||
__weak_alias(wcwidth,_wcwidth)
|
||||
|
||||
int
|
||||
wcwidth(wchar_t wc)
|
||||
{
|
||||
int c;
|
||||
|
||||
switch (wc) {
|
||||
case L'\0':
|
||||
return 0;
|
||||
case WEOF:
|
||||
c = EOF;
|
||||
break;
|
||||
default:
|
||||
c = (unsigned char)wc;
|
||||
}
|
||||
if (isprint(c))
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int
|
||||
wcswidth(const wchar_t * __restrict ws, size_t wn)
|
||||
{
|
||||
const wchar_t *pws;
|
||||
int c;
|
||||
|
||||
pws = ws;
|
||||
while (wn > 0 && *ws != L'\0') {
|
||||
c = (*ws == WEOF) ? EOF : (unsigned char)*ws;
|
||||
if (!isprint(c))
|
||||
return -1;
|
||||
++ws, --wn;
|
||||
}
|
||||
return (int)(ws - pws);
|
||||
}
|
||||
|
@ -1,33 +0,0 @@
|
||||
/* $NetBSD: lcmessages.h,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by Brian Ginsbach.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
||||
*/
|
||||
|
||||
__BEGIN_DECLS
|
||||
int __loadmessages(const char *);
|
||||
__END_DECLS
|
@ -1,130 +0,0 @@
|
||||
/* $NetBSD: lcmonetary.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by Brian Ginsbach.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: lcmonetary.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "localeio.h"
|
||||
#include "lcmonetary.h"
|
||||
|
||||
#define NSTRINGS \
|
||||
(offsetof(_MonetaryLocale, int_frac_digits)/sizeof(const char **))
|
||||
#define NCHARS \
|
||||
(offsetof(_MonetaryLocale, int_n_sign_posn) - \
|
||||
offsetof(_MonetaryLocale, int_frac_digits) + 1)
|
||||
|
||||
int
|
||||
__loadmonetary(const char *filename)
|
||||
{
|
||||
const char **gpp;
|
||||
|
||||
_DIAGASSERT(filename != NULL);
|
||||
|
||||
if (!__loadlocale(filename, NSTRINGS, NCHARS, sizeof(_MonetaryLocale),
|
||||
&_CurrentMonetaryLocale, &_DefaultMonetaryLocale)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
gpp = __UNCONST(&_CurrentMonetaryLocale->mon_grouping);
|
||||
*gpp = __convertgrouping(_CurrentMonetaryLocale->mon_grouping);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef LOCALE_DEBUG
|
||||
|
||||
#include "namespace.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
__dumpmonetarylocale()
|
||||
{
|
||||
const char *gp;
|
||||
|
||||
(void)printf("int_curr_symbol = \"%s\"\n",
|
||||
_CurrentMonetaryLocale->int_curr_symbol);
|
||||
(void)printf("currency_symbol = \"%s\"\n",
|
||||
_CurrentMonetaryLocale->currency_symbol);
|
||||
(void)printf("mon_decimal_point = \"%s\"\n",
|
||||
_CurrentMonetaryLocale->mon_decimal_point);
|
||||
(void)printf("mon_thousands_sep = \"%s\"\n",
|
||||
_CurrentMonetaryLocale->mon_thousands_sep);
|
||||
(void)printf("mon_grouping = ");
|
||||
for (gp = _CurrentMonetaryLocale->mon_grouping; *gp != '\0'; gp++) {
|
||||
if (gp != _CurrentMonetaryLocale->mon_grouping)
|
||||
(void)fputc(';', stdout);
|
||||
(void)printf("%d", *gp);
|
||||
}
|
||||
(void)fputc('\n', stdout);
|
||||
(void)printf("positive_sign = \"%s\"\n",
|
||||
_CurrentMonetaryLocale->positive_sign);
|
||||
(void)printf("negative_sign = \"%s\"\n",
|
||||
_CurrentMonetaryLocale->negative_sign);
|
||||
(void)printf("int_frac_digits = %d\n",
|
||||
_CurrentMonetaryLocale->int_frac_digits);
|
||||
(void)printf("frac_digits = %d\n",
|
||||
_CurrentMonetaryLocale->frac_digits);
|
||||
(void)printf("p_cs_precedes = %d\n",
|
||||
_CurrentMonetaryLocale->p_cs_precedes);
|
||||
(void)printf("p_sep_by_space = %d\n",
|
||||
_CurrentMonetaryLocale->p_sep_by_space);
|
||||
(void)printf("n_cs_precedes = %d\n",
|
||||
_CurrentMonetaryLocale->n_cs_precedes);
|
||||
(void)printf("n_sep_by_space = %d\n",
|
||||
_CurrentMonetaryLocale->n_sep_by_space);
|
||||
(void)printf("p_sign_posn = %d\n",
|
||||
_CurrentMonetaryLocale->p_sign_posn);
|
||||
(void)printf("n_sign_posn = %d\n",
|
||||
_CurrentMonetaryLocale->n_sign_posn);
|
||||
(void)printf("int_p_cs_precedes = %d\n",
|
||||
_CurrentMonetaryLocale->int_p_cs_precedes);
|
||||
(void)printf("int_n_cs_precedes = %d\n",
|
||||
_CurrentMonetaryLocale->int_n_cs_precedes);
|
||||
(void)printf("int_p_sep_by_space = %d\n",
|
||||
_CurrentMonetaryLocale->int_p_sep_by_space);
|
||||
(void)printf("int_n_sep_by_space = %d\n",
|
||||
_CurrentMonetaryLocale->int_n_sep_by_space);
|
||||
(void)printf("int_p_sign_posn = %d\n",
|
||||
_CurrentMonetaryLocale->int_p_sign_posn);
|
||||
(void)printf("int_n_sign_posn = %d\n",
|
||||
_CurrentMonetaryLocale->int_n_sign_posn);
|
||||
}
|
||||
#endif
|
@ -1,33 +0,0 @@
|
||||
/* $NetBSD: lcmonetary.h,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by Brian Ginsbach.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
||||
*/
|
||||
|
||||
__BEGIN_DECLS
|
||||
int __loadmonetary(const char *);
|
||||
__END_DECLS
|
@ -1,30 +0,0 @@
|
||||
/* $NetBSD: lcnumeric.h,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation.
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
||||
*/
|
||||
|
||||
__BEGIN_DECLS
|
||||
int __loadnumeric(const char *);
|
||||
__END_DECLS
|
@ -1,33 +0,0 @@
|
||||
/* $NetBSD: lctime.h,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
||||
*/
|
||||
|
||||
__BEGIN_DECLS
|
||||
int __loadtime(const char *);
|
||||
__END_DECLS
|
@ -1,85 +1,48 @@
|
||||
/* $NetBSD: localeconv.c,v 1.14 2007/05/26 13:14:13 tnozaki Exp $ */
|
||||
/* $NetBSD: localeconv.c,v 1.15 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Written by J.T. Conklin <jtc@NetBSD.org>.
|
||||
* Public domain.
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: localeconv.c,v 1.14 2007/05/26 13:14:13 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: localeconv.c,v 1.15 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/types.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
|
||||
/*
|
||||
* The localeconv() function constructs a struct lconv from the current
|
||||
* monetary and numeric locales.
|
||||
*
|
||||
* Because localeconv() may be called many times (especially by library
|
||||
* routines like printf() & strtod()), the appropriate members of the
|
||||
* lconv structure are computed only when the monetary or numeric
|
||||
* locale has been changed.
|
||||
*/
|
||||
int __mlocale_changed = 1;
|
||||
int __nlocale_changed = 1;
|
||||
#include "setlocale_local.h"
|
||||
|
||||
/*
|
||||
* Return the current locale conversion.
|
||||
*/
|
||||
struct lconv *
|
||||
localeconv()
|
||||
{
|
||||
static struct lconv ret;
|
||||
struct _locale_impl_t *impl;
|
||||
|
||||
if (__mlocale_changed) {
|
||||
/* LC_MONETARY */
|
||||
ret.int_curr_symbol =
|
||||
__UNCONST(_CurrentMonetaryLocale->int_curr_symbol);
|
||||
ret.currency_symbol =
|
||||
__UNCONST(_CurrentMonetaryLocale->currency_symbol);
|
||||
ret.mon_decimal_point =
|
||||
__UNCONST(_CurrentMonetaryLocale->mon_decimal_point);
|
||||
ret.mon_thousands_sep =
|
||||
__UNCONST(_CurrentMonetaryLocale->mon_thousands_sep);
|
||||
ret.mon_grouping =
|
||||
__UNCONST(_CurrentMonetaryLocale->mon_grouping);
|
||||
ret.positive_sign =
|
||||
__UNCONST(_CurrentMonetaryLocale->positive_sign);
|
||||
ret.negative_sign =
|
||||
__UNCONST(_CurrentMonetaryLocale->negative_sign);
|
||||
ret.int_frac_digits = _CurrentMonetaryLocale->int_frac_digits;
|
||||
ret.frac_digits = _CurrentMonetaryLocale->frac_digits;
|
||||
ret.p_cs_precedes = _CurrentMonetaryLocale->p_cs_precedes;
|
||||
ret.p_sep_by_space = _CurrentMonetaryLocale->p_sep_by_space;
|
||||
ret.n_cs_precedes = _CurrentMonetaryLocale->n_cs_precedes;
|
||||
ret.n_sep_by_space = _CurrentMonetaryLocale->n_sep_by_space;
|
||||
ret.p_sign_posn = _CurrentMonetaryLocale->p_sign_posn;
|
||||
ret.n_sign_posn = _CurrentMonetaryLocale->n_sign_posn;
|
||||
ret.int_p_cs_precedes =
|
||||
_CurrentMonetaryLocale->int_p_cs_precedes;
|
||||
ret.int_n_cs_precedes =
|
||||
_CurrentMonetaryLocale->int_n_cs_precedes;
|
||||
ret.int_p_sep_by_space =
|
||||
_CurrentMonetaryLocale->int_p_sep_by_space;
|
||||
ret.int_n_sep_by_space =
|
||||
_CurrentMonetaryLocale->int_n_sep_by_space;
|
||||
ret.int_p_sign_posn = _CurrentMonetaryLocale->int_p_sign_posn;
|
||||
ret.int_n_sign_posn = _CurrentMonetaryLocale->int_n_sign_posn;
|
||||
__mlocale_changed = 0;
|
||||
}
|
||||
|
||||
if (__nlocale_changed) {
|
||||
/* LC_NUMERIC */
|
||||
ret.decimal_point =
|
||||
__UNCONST(_CurrentNumericLocale->decimal_point);
|
||||
ret.thousands_sep =
|
||||
__UNCONST(_CurrentNumericLocale->thousands_sep);
|
||||
ret.grouping =
|
||||
__UNCONST(_CurrentNumericLocale->grouping);
|
||||
__nlocale_changed = 0;
|
||||
}
|
||||
|
||||
return (&ret);
|
||||
impl = *_current_locale();
|
||||
return &impl->cache.ldata;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: localeio.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/* $NetBSD: localeio.c,v 1.2 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -30,16 +30,16 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: localeio.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $");
|
||||
__RCSID("$NetBSD: localeio.c,v 1.2 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "namespace.h"
|
||||
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <locale.h>
|
||||
@ -51,10 +51,10 @@ __RCSID("$NetBSD: localeio.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $");
|
||||
#include "localeio.h"
|
||||
|
||||
int
|
||||
__loadlocale(const char *name, size_t nstr, size_t nbytes, size_t localesize,
|
||||
void *currentlocale, const void *defaultlocale)
|
||||
__loadlocale(const char *name, size_t nstr, size_t nbytes,
|
||||
size_t localesize, void *currentlocale)
|
||||
{
|
||||
int fd, i;
|
||||
int fd, i, ret;
|
||||
unsigned char **ap, *buf, *bp, *cp, *cbp, *ebp;
|
||||
unsigned char ***locale;
|
||||
struct stat st;
|
||||
@ -63,29 +63,37 @@ __loadlocale(const char *name, size_t nstr, size_t nbytes, size_t localesize,
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(localesize != 0);
|
||||
_DIAGASSERT(currentlocale != NULL);
|
||||
_DIAGASSERT(defaultlocale != NULL);
|
||||
|
||||
if ((fd = open(name, O_RDONLY)) == -1)
|
||||
return 0;
|
||||
return ENOENT;
|
||||
|
||||
if ((fstat(fd, &st) == -1) || (st.st_size <= 0))
|
||||
if ((fstat(fd, &st) == -1) || !S_ISREG(st.st_mode) ||
|
||||
(st.st_size <= 0)) {
|
||||
ret = EFTYPE;
|
||||
goto error1;
|
||||
}
|
||||
|
||||
bufsize = localesize + (size_t)st.st_size;
|
||||
if ((buf = malloc(bufsize)) == NULL)
|
||||
if ((buf = malloc(bufsize)) == NULL) {
|
||||
ret = ENOMEM;
|
||||
goto error1;
|
||||
}
|
||||
|
||||
bp = buf + localesize;
|
||||
if (read(fd, bp, (size_t)st.st_size) != st.st_size)
|
||||
if (read(fd, bp, (size_t)st.st_size) != st.st_size) {
|
||||
ret = EFTYPE;
|
||||
goto error2;
|
||||
}
|
||||
|
||||
ap = (unsigned char **)(void *)buf;
|
||||
for (i = 0, ebp = buf + bufsize; i < nstr; i++) {
|
||||
ap[i] = bp;
|
||||
while (bp != ebp && *bp != '\n')
|
||||
bp++;
|
||||
if (bp == ebp)
|
||||
if (bp == ebp) {
|
||||
ret = EFTYPE;
|
||||
goto error2;
|
||||
}
|
||||
*bp++ = '\0';
|
||||
}
|
||||
|
||||
@ -95,8 +103,10 @@ __loadlocale(const char *name, size_t nstr, size_t nbytes, size_t localesize,
|
||||
|
||||
while (bp != ebp && *bp != '\n')
|
||||
bp++;
|
||||
if (bp == ebp)
|
||||
if (bp == ebp) {
|
||||
ret = EFTYPE;
|
||||
goto error2;
|
||||
}
|
||||
/* ignore overflow/underflow and bad characters */
|
||||
n = (unsigned char)strtol((char *)cbp, NULL, 0);
|
||||
cp[i] = (unsigned char)(n & CHAR_MAX);
|
||||
@ -104,51 +114,15 @@ __loadlocale(const char *name, size_t nstr, size_t nbytes, size_t localesize,
|
||||
}
|
||||
|
||||
locale = currentlocale;
|
||||
if (*locale != defaultlocale)
|
||||
free(*locale);
|
||||
|
||||
*locale = (unsigned char **)(void *)buf;
|
||||
(void)close(fd);
|
||||
return 1;
|
||||
return 0;
|
||||
|
||||
error2:
|
||||
free(buf);
|
||||
|
||||
error1:
|
||||
(void)close(fd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Convert a grouping sequence string into POSIX form.
|
||||
*
|
||||
* Examples: "3;3;-1" -> "\003\003\177\000"
|
||||
* "3" -> "\003\000"
|
||||
*/
|
||||
|
||||
static const char nogrouping[] = { CHAR_MAX, '\0' };
|
||||
|
||||
const char *
|
||||
__convertgrouping(const char *str)
|
||||
{
|
||||
char *src, *dst;
|
||||
|
||||
_DIAGASSERT(str != NULL);
|
||||
|
||||
src = dst = __UNCONST(str);
|
||||
|
||||
while (*src != '\0') {
|
||||
char *ep;
|
||||
int n;
|
||||
|
||||
if ((n = strtol(src, &ep, 0)) >= CHAR_MAX ||
|
||||
((*ep != ';') && (*ep != '\0')))
|
||||
return nogrouping; /* invalid grouping string */
|
||||
|
||||
*dst++ = n & CHAR_MAX;
|
||||
src = (*ep == ';')? ep + 1 : ep;
|
||||
}
|
||||
*dst = '\0';
|
||||
|
||||
return (dst == str)? nogrouping : str;
|
||||
return ret;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: localeio.h,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/* $NetBSD: localeio.h,v 1.2 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -29,6 +29,5 @@
|
||||
*/
|
||||
|
||||
__BEGIN_DECLS
|
||||
int __loadlocale(const char *, size_t, size_t, size_t, void *, const void *);
|
||||
const char * __convertgrouping(const char *);
|
||||
int __loadlocale(const char *, size_t, size_t, size_t, void *);
|
||||
__END_DECLS
|
||||
|
114
lib/libc/locale/localeio_lc_ctype.c
Normal file
114
lib/libc/locale/localeio_lc_ctype.c
Normal file
@ -0,0 +1,114 @@
|
||||
/* $NetBSD: localeio_lc_ctype.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: localeio_lc_ctype.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "aliasname_local.h"
|
||||
#include "bsdctype.h"
|
||||
#include "ctypeio.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_localeio_LC_CTYPE_, name)
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template(_decl).h
|
||||
*/
|
||||
#define _CATEGORY_TYPE _BSDCTypeLocale
|
||||
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
static int
|
||||
/*ARGSUSED*/
|
||||
_localeio_LC_CTYPE_create_impl(const char * __restrict root,
|
||||
const char * __restrict name, _BSDCTypeLocale ** __restrict pdata)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
|
||||
_DIAGASSERT(root != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/LC_CTYPE", root, name);
|
||||
return __loadctype(path, pdata);
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
|
||||
_BSDCTypeLocale * __restrict data)
|
||||
{
|
||||
_DIAGASSERT(cache != NULL);
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
cache->ctype_tab = data->ctype_tab;
|
||||
cache->tolower_tab = data->tolower_tab;
|
||||
cache->toupper_tab = data->toupper_tab;
|
||||
cache->mb_cur_max = (size_t)1;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_BSDCTypeLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
_ctype_ = data->ctype_tab;
|
||||
_tolower_tab_ = data->tolower_tab;
|
||||
_toupper_tab_ = data->toupper_tab;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_CTYPE
|
||||
#define _CATEGORY_NAME "LC_CTYPE"
|
||||
#define _CATEGORY_DEFAULT _DefaultBSDCTypeLocale
|
||||
|
||||
#include "nb_lc_template.h"
|
||||
#include "generic_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_localeio_LC_CTYPE_);
|
@ -1,4 +1,5 @@
|
||||
/* $NetBSD: lcmessages.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/* $NetBSD: localeio_lc_messages.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -30,42 +31,53 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: lcmessages.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $");
|
||||
__RCSID("$NetBSD: localeio_lc_messages.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "aliasname_local.h"
|
||||
#include "localeio.h"
|
||||
#include "lcmessages.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_localeio_LC_MESSAGES_, name)
|
||||
|
||||
#include "nb_lc_messages_misc.h"
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
#define NSTRINGS (sizeof(_MessagesLocale)/sizeof(const char **))
|
||||
|
||||
int
|
||||
__loadmessages(const char *filename)
|
||||
static int
|
||||
_localeio_LC_MESSAGES_create_impl(const char * __restrict root,
|
||||
const char * __restrict name, _MessagesLocale ** __restrict pdata)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
|
||||
_DIAGASSERT(filename != NULL);
|
||||
_DIAGASSERT(root != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
return __loadlocale(filename, NSTRINGS, 0, sizeof(_MessagesLocale),
|
||||
&_CurrentMessagesLocale, &_DefaultMessagesLocale);
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/LC_MESSAGES/SYS_LC_MESSAGES", root, name);
|
||||
return __loadlocale(path, NSTRINGS, 0, sizeof(_MessagesLocale),
|
||||
(void *)pdata);
|
||||
}
|
||||
|
||||
#ifdef LOCALE_DEBUG
|
||||
|
||||
#include "namespace.h"
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
__dumptimelocale()
|
||||
{
|
||||
|
||||
(void)printf("yesexpr = \"%s\"\n", _CurrentMessagesLocale->yesexpr);
|
||||
(void)printf("noexpr = \"%s\"\n", _CurrentMessagesLocale->noexpr);
|
||||
(void)printf("yesstr = \"%s\"\n", _CurrentMessagesLocale->yesstr);
|
||||
(void)printf("nostr = \"%s\"\n", _CurrentMessagesLocale->nostr);
|
||||
}
|
||||
#endif /* LOCALE_DEBUG */
|
||||
#include "nb_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_localeio_LC_MESSAGES_);
|
95
lib/libc/locale/localeio_lc_monetary.c
Normal file
95
lib/libc/locale/localeio_lc_monetary.c
Normal file
@ -0,0 +1,95 @@
|
||||
/* $NetBSD: localeio_lc_monetary.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to The NetBSD Foundation
|
||||
* by Brian Ginsbach.
|
||||
*
|
||||
* 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 NETBSD FOUNDATION, INC. 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 FOUNDATION 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: localeio_lc_monetary.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "aliasname_local.h"
|
||||
#include "fix_grouping.h"
|
||||
#include "localeio.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_localeio_LC_MONETARY_, name)
|
||||
|
||||
#include "nb_lc_monetary_misc.h"
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
#define NSTRINGS \
|
||||
(offsetof(_MonetaryLocale, int_frac_digits)/sizeof(const char **))
|
||||
#define NCHARS \
|
||||
(offsetof(_MonetaryLocale, int_n_sign_posn) - \
|
||||
offsetof(_MonetaryLocale, int_frac_digits) + 1)
|
||||
|
||||
static int
|
||||
_localeio_LC_MONETARY_create_impl(const char * __restrict root,
|
||||
const char * __restrict name, _MonetaryLocale ** __restrict pdata)
|
||||
{
|
||||
char path[PATH_MAX + 1];
|
||||
int ret;
|
||||
|
||||
_DIAGASSERT(root != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/LC_MONETARY", root, name);
|
||||
ret = __loadlocale(path, NSTRINGS, NCHARS, sizeof(_MonetaryLocale),
|
||||
(void *)pdata);
|
||||
if (!ret) {
|
||||
(*pdata)->mon_grouping =
|
||||
__fix_locale_grouping_str((*pdata)->mon_grouping);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#include "nb_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_localeio_LC_MONETARY_);
|
@ -1,4 +1,5 @@
|
||||
/* $NetBSD: lctime.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/* $NetBSD: localeio_lc_numeric.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -30,63 +31,60 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: lctime.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $");
|
||||
__RCSID("$NetBSD: localeio_lc_numeric.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "localeio.h"
|
||||
#include "lctime.h"
|
||||
|
||||
#define NSTRINGS (sizeof(_TimeLocale)/sizeof(const char **))
|
||||
|
||||
int
|
||||
__loadtime(const char *filename)
|
||||
{
|
||||
|
||||
_DIAGASSERT(filename != NULL);
|
||||
|
||||
return (__loadlocale(filename, NSTRINGS, 0, sizeof(_TimeLocale),
|
||||
&_CurrentTimeLocale, &_DefaultTimeLocale));
|
||||
}
|
||||
|
||||
#ifdef LOCALE_DEBUG
|
||||
|
||||
#include "namespace.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void
|
||||
__dumptimelocale()
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "aliasname_local.h"
|
||||
#include "fix_grouping.h"
|
||||
#include "localeio.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_localeio_LC_NUMERIC_, name)
|
||||
|
||||
#include "nb_lc_numeric_misc.h"
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
#define NSTRINGS (sizeof(_NumericLocale)/sizeof(const char **))
|
||||
|
||||
static int
|
||||
_localeio_LC_NUMERIC_create_impl(const char * __restrict root,
|
||||
const char * __restrict name, _NumericLocale ** __restrict pdata)
|
||||
{
|
||||
int i;
|
||||
char path[PATH_MAX + 1];
|
||||
int ret;
|
||||
|
||||
for (i = 0; i < 7; i++)
|
||||
(void)printf("abday[%d] = \"%s\"\n",
|
||||
i, _CurrentTimeLocale->abday[i]);
|
||||
_DIAGASSERT(root != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
for (i = 0; i < 7; i++)
|
||||
(void)printf("day[%d] = \"%s\"\n",
|
||||
i, _CurrentTimeLocale->day[i]);
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
(void)printf("abmon[%d] = \"%s\"\n",
|
||||
i, _CurrentTimeLocale->abmon[i]);
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
(void)printf("mon[%d] = \"%s\"\n",
|
||||
i, _CurrentTimeLocale->mon[i]);
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
(void)printf("am_pm[%d] = \"%s\"\n",
|
||||
i, _CurrentTimeLocale->am_pm[i]);
|
||||
|
||||
(void)printf("d_t_fmt = \"%s\"\n", _CurrentTimeLocale->d_t_fmt);
|
||||
(void)printf("d_fmt = \"%s\"\n", _CurrentTimeLocale->d_fmt);
|
||||
(void)printf("t_fmt = \"%s\"\n", _CurrentTimeLocale->t_fmt);
|
||||
(void)printf("t_fmt_ampm = \"%s\"\n", _CurrentTimeLocale->t_fmt_ampm);
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/LC_NUMERIC", root, name);
|
||||
ret = __loadlocale(path, NSTRINGS, 0, sizeof(_NumericLocale),
|
||||
(void *)pdata);
|
||||
if (!ret) {
|
||||
(*pdata)->grouping =
|
||||
__fix_locale_grouping_str((*pdata)->grouping);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif /* LOCALE_DEBUG */
|
||||
|
||||
#include "nb_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_localeio_LC_NUMERIC_);
|
@ -1,4 +1,5 @@
|
||||
/* $NetBSD: lcnumeric.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $ */
|
||||
/* $NetBSD: localeio_lc_time.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2008, The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -30,57 +31,54 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: lcnumeric.c,v 1.1 2008/05/17 03:49:54 ginsbach Exp $");
|
||||
__RCSID("$NetBSD: localeio_lc_time.c,v 1.1 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include "reentrant.h"
|
||||
#include <sys/types.h>
|
||||
#include <sys/localedef.h>
|
||||
|
||||
#include <sys/queue.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "localeio.h"
|
||||
#include "lcnumeric.h"
|
||||
|
||||
#define NSTRINGS (sizeof(_NumericLocale)/sizeof(const char **))
|
||||
|
||||
int
|
||||
__loadnumeric(const char *filename)
|
||||
{
|
||||
const char **gpp;
|
||||
|
||||
_DIAGASSERT(filename != NULL);
|
||||
|
||||
if (!__loadlocale(filename, NSTRINGS, 0, sizeof(_NumericLocale),
|
||||
&_CurrentNumericLocale, &_DefaultNumericLocale)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
gpp = __UNCONST(&_CurrentNumericLocale->grouping);
|
||||
*gpp = __convertgrouping(_CurrentNumericLocale->grouping);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef LOCALE_DEBUG
|
||||
|
||||
#include "namespace.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#include <limits.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
void
|
||||
__dumpnumericlocale()
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "aliasname_local.h"
|
||||
#include "fix_grouping.h"
|
||||
#include "localeio.h"
|
||||
|
||||
/*
|
||||
* macro required by all template headers
|
||||
*/
|
||||
#define _PREFIX(name) __CONCAT(_localeio_LC_TIME_, name)
|
||||
|
||||
#include "nb_lc_time_misc.h"
|
||||
#include "nb_lc_template_decl.h"
|
||||
|
||||
#define NSTRINGS (sizeof(_TimeLocale)/sizeof(const char **))
|
||||
|
||||
static int
|
||||
_localeio_LC_TIME_create_impl(const char * __restrict root,
|
||||
const char * __restrict name, _TimeLocale ** __restrict pdata)
|
||||
{
|
||||
const char *gp;
|
||||
char path[PATH_MAX + 1];
|
||||
|
||||
(void)printf("decimal_point = \"%s\"\n",
|
||||
_CurrentNumericLocale->decimal_point);
|
||||
(void)printf("thousands_sep = \"%s\"\n",
|
||||
_CurrentNumericLocale->thousands_sep);
|
||||
(void)printf("grouping = ");
|
||||
for (gp = _CurrentNumericLocale->grouping; *gp != '\0'; gp++) {
|
||||
if (gp != _CurrentNumericLocale->grouping)
|
||||
(void)fputc(';', stdout);
|
||||
(void)printf("\\%03o", *gp);
|
||||
}
|
||||
_DIAGASSERT(root != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(pdata != NULL);
|
||||
|
||||
snprintf(path, sizeof(path),
|
||||
"%s/%s/LC_TIME", root, name);
|
||||
return __loadlocale(path, NSTRINGS, 0, sizeof(_TimeLocale),
|
||||
(void *)pdata);
|
||||
}
|
||||
#endif /* LOCALE_DEBUG */
|
||||
|
||||
#include "nb_lc_template.h"
|
||||
_LOCALE_CATEGORY_ENTRY(_localeio_LC_TIME_);
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: multibyte.h,v 1.3 2003/04/29 14:53:12 scw Exp $ */
|
||||
/* $NetBSD: multibyte.h,v 1.4 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2002 Citrus Project,
|
||||
@ -123,4 +123,4 @@ _fixup_ps(_RuneLocale *rl, mbstate_t *ps, int forceinit)
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /*_MULTIBYTE_H_*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* $NetBSD: multibyte_amd1.c,v 1.5 2003/03/05 20:18:16 tshiozak Exp $ */
|
||||
/* $NetBSD: multibyte_amd1.c,v 1.6 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2002 Citrus Project,
|
||||
* Copyright (c)2002, 2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -28,25 +28,37 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: multibyte_amd1.c,v 1.5 2003/03/05 20:18:16 tshiozak Exp $");
|
||||
__RCSID("$NetBSD: multibyte_amd1.c,v 1.6 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
#include <wchar.h>
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <citrus/citrus_module.h>
|
||||
#include <citrus/citrus_ctype.h>
|
||||
#include <assert.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <wchar.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
#include "rune.h"
|
||||
#include "multibyte.h"
|
||||
|
||||
#define _RUNE_LOCALE() \
|
||||
((_RuneLocale *)(*_current_locale())->part_impl[(size_t)LC_CTYPE])
|
||||
|
||||
#define _CITRUS_CTYPE() \
|
||||
(_RUNE_LOCALE()->rl_citrus_ctype)
|
||||
|
||||
size_t
|
||||
mbrlen(const char *s, size_t n, mbstate_t *ps)
|
||||
{
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
_fixup_ps(_CurrentRuneLocale, ps, s==NULL);
|
||||
_fixup_ps(_RUNE_LOCALE(), ps, s == NULL);
|
||||
|
||||
err0 = _citrus_ctype_mbrlen(_ps_to_ctype(ps), s, n,
|
||||
_ps_to_private(ps), &ret);
|
||||
@ -67,7 +79,7 @@ mbsinit(const mbstate_t *ps)
|
||||
return 1;
|
||||
|
||||
if (_ps_to_runelocale(ps) == NULL)
|
||||
rl = _CurrentRuneLocale;
|
||||
rl = _RUNE_LOCALE();
|
||||
else
|
||||
rl = _ps_to_runelocale(ps);
|
||||
|
||||
@ -86,7 +98,7 @@ mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps)
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
_fixup_ps(_CurrentRuneLocale, ps, s==NULL);
|
||||
_fixup_ps(_RUNE_LOCALE(), ps, s == NULL);
|
||||
|
||||
err0 = _citrus_ctype_mbrtowc(_ps_to_ctype(ps), pwc, s, n,
|
||||
_ps_to_private(ps), &ret);
|
||||
@ -102,7 +114,7 @@ mbsrtowcs(wchar_t *pwcs, const char **s, size_t n, mbstate_t *ps)
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
_fixup_ps(_CurrentRuneLocale, ps, s==NULL);
|
||||
_fixup_ps(_RUNE_LOCALE(), ps, s == NULL);
|
||||
|
||||
err0 = _citrus_ctype_mbsrtowcs(_ps_to_ctype(ps), pwcs, s, n,
|
||||
_ps_to_private(ps), &ret);
|
||||
@ -118,7 +130,7 @@ wcrtomb(char *s, wchar_t wc, mbstate_t *ps)
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
_fixup_ps(_CurrentRuneLocale, ps, s==NULL);
|
||||
_fixup_ps(_RUNE_LOCALE(), ps, s == NULL);
|
||||
|
||||
err0 = _citrus_ctype_wcrtomb(_ps_to_ctype(ps), s, wc,
|
||||
_ps_to_private(ps), &ret);
|
||||
@ -134,7 +146,7 @@ wcsrtombs(char *s, const wchar_t **ppwcs, size_t n, mbstate_t *ps)
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
_fixup_ps(_CurrentRuneLocale, ps, s==NULL);
|
||||
_fixup_ps(_RUNE_LOCALE(), ps, s == NULL);
|
||||
|
||||
err0 = _citrus_ctype_wcsrtombs(_ps_to_ctype(ps), s, ppwcs, n,
|
||||
_ps_to_private(ps), &ret);
|
||||
@ -150,7 +162,7 @@ btowc(int c)
|
||||
wint_t ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_btowc(_to_cur_ctype(), c, &ret);
|
||||
err0 = _citrus_ctype_btowc(_CITRUS_CTYPE(), c, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
@ -163,7 +175,7 @@ wctob(wint_t wc)
|
||||
int ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_wctob(_to_cur_ctype(), wc, &ret);
|
||||
err0 = _citrus_ctype_wctob(_CITRUS_CTYPE(), wc, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* $NetBSD: multibyte_c90.c,v 1.4 2003/03/05 20:18:16 tshiozak Exp $ */
|
||||
/* $NetBSD: multibyte_c90.c,v 1.5 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2002 Citrus Project,
|
||||
* Copyright (c)2002, 2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -28,18 +28,29 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: multibyte_c90.c,v 1.4 2003/03/05 20:18:16 tshiozak Exp $");
|
||||
__RCSID("$NetBSD: multibyte_c90.c,v 1.5 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#include <citrus/citrus_module.h>
|
||||
#include <citrus/citrus_ctype.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
#include "rune.h"
|
||||
#include "multibyte.h"
|
||||
|
||||
#define _RUNE_LOCALE() \
|
||||
((_RuneLocale *)(*_current_locale())->part_impl[(size_t)LC_CTYPE])
|
||||
|
||||
#define _CITRUS_CTYPE() \
|
||||
(_RUNE_LOCALE()->rl_citrus_ctype)
|
||||
|
||||
int
|
||||
mblen(const char *s, size_t n)
|
||||
@ -47,7 +58,7 @@ mblen(const char *s, size_t n)
|
||||
int ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_mblen(_to_cur_ctype(), s, n, &ret);
|
||||
err0 = _citrus_ctype_mblen(_CITRUS_CTYPE(), s, n, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
@ -60,7 +71,7 @@ mbstowcs(wchar_t *pwcs, const char *s, size_t n)
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_mbstowcs(_to_cur_ctype(), pwcs, s, n, &ret);
|
||||
err0 = _citrus_ctype_mbstowcs(_CITRUS_CTYPE(), pwcs, s, n, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
@ -73,7 +84,7 @@ mbtowc(wchar_t *pw, const char *s, size_t n)
|
||||
int ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_mbtowc(_to_cur_ctype(), pw, s, n, &ret);
|
||||
err0 = _citrus_ctype_mbtowc(_CITRUS_CTYPE(), pw, s, n, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
@ -86,7 +97,7 @@ wcstombs(char *s, const wchar_t *wcs, size_t n)
|
||||
size_t ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_wcstombs(_to_cur_ctype(), s, wcs, n, &ret);
|
||||
err0 = _citrus_ctype_wcstombs(_CITRUS_CTYPE(), s, wcs, n, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
@ -99,7 +110,7 @@ wctomb(char *s, wchar_t wc)
|
||||
int ret;
|
||||
int err0;
|
||||
|
||||
err0 = _citrus_ctype_wctomb(_to_cur_ctype(), s, wc, &ret);
|
||||
err0 = _citrus_ctype_wctomb(_CITRUS_CTYPE(), s, wc, &ret);
|
||||
if (err0)
|
||||
errno = err0;
|
||||
|
||||
|
65
lib/libc/locale/nb_lc_messages_misc.h
Normal file
65
lib/libc/locale/nb_lc_messages_misc.h
Normal file
@ -0,0 +1,65 @@
|
||||
/* $NetBSD: nb_lc_messages_misc.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _NB_LC_MESSAGES_MISC_H_
|
||||
#define _NB_LC_MESSAGES_MISC_H_
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template(_decl).h
|
||||
*/
|
||||
#define _CATEGORY_TYPE _MessagesLocale
|
||||
|
||||
static __inline void
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
|
||||
_MessagesLocale * __restrict data)
|
||||
{
|
||||
_DIAGASSERT(cache != NULL);
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
cache->items[(size_t)YESSTR ] = data->yesstr;
|
||||
cache->items[(size_t)YESEXPR] = data->yesexpr;
|
||||
cache->items[(size_t)NOSTR ] = data->nostr;
|
||||
cache->items[(size_t)NOEXPR ] = data->noexpr;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_MessagesLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
_CurrentMessagesLocale = data;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_MESSAGES
|
||||
#define _CATEGORY_NAME "LC_MESSAGES"
|
||||
#define _CATEGORY_DEFAULT _DefaultMessagesLocale
|
||||
|
||||
#endif /*_NB_LC_MESSAGES_MISC_H_*/
|
85
lib/libc/locale/nb_lc_monetary_misc.h
Normal file
85
lib/libc/locale/nb_lc_monetary_misc.h
Normal file
@ -0,0 +1,85 @@
|
||||
/* $NetBSD: nb_lc_monetary_misc.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _NB_LC_MONETARY_MISC_H_
|
||||
#define _NB_LC_MONETARY_MISC_H_
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template(_decl).h
|
||||
*/
|
||||
#define _CATEGORY_TYPE _MonetaryLocale
|
||||
|
||||
static __inline void
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
|
||||
_MonetaryLocale * __restrict data)
|
||||
{
|
||||
_DIAGASSERT(cache != NULL);
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
cache->ldata.int_curr_symbol = __UNCONST(data->int_curr_symbol);
|
||||
cache->ldata.currency_symbol = __UNCONST(data->currency_symbol);
|
||||
cache->ldata.mon_decimal_point = __UNCONST(data->mon_decimal_point);
|
||||
cache->ldata.mon_thousands_sep = __UNCONST(data->mon_thousands_sep);
|
||||
cache->ldata.mon_grouping = __UNCONST(data->mon_grouping);
|
||||
cache->ldata.positive_sign = __UNCONST(data->positive_sign);
|
||||
cache->ldata.negative_sign = __UNCONST(data->negative_sign);
|
||||
|
||||
cache->ldata.int_frac_digits = data->int_frac_digits;
|
||||
cache->ldata.frac_digits = data->frac_digits;
|
||||
cache->ldata.p_cs_precedes = data->p_cs_precedes;
|
||||
cache->ldata.p_sep_by_space = data->p_sep_by_space;
|
||||
cache->ldata.n_cs_precedes = data->n_cs_precedes;
|
||||
cache->ldata.n_sep_by_space = data->n_sep_by_space;
|
||||
cache->ldata.p_sign_posn = data->p_sign_posn;
|
||||
cache->ldata.n_sign_posn = data->n_sign_posn;
|
||||
cache->ldata.int_p_cs_precedes = data->int_p_cs_precedes;
|
||||
cache->ldata.int_n_cs_precedes = data->int_n_cs_precedes;
|
||||
cache->ldata.int_p_sep_by_space = data-> int_p_sep_by_space;
|
||||
cache->ldata.int_n_sep_by_space = data->int_n_sep_by_space;
|
||||
cache->ldata.int_p_sign_posn = data->int_p_sign_posn;
|
||||
cache->ldata.int_n_sign_posn = data->int_n_sign_posn;
|
||||
|
||||
cache->items[(size_t)CRNCYSTR] = NULL; /* NOT IMPLEMENTED YET */
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_MonetaryLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
_CurrentMonetaryLocale = data;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_MONETARY
|
||||
#define _CATEGORY_NAME "LC_MONETARY"
|
||||
#define _CATEGORY_DEFAULT _DefaultMonetaryLocale
|
||||
|
||||
#endif /*_RUNE_LC_MONETARY_MISC_H_*/
|
67
lib/libc/locale/nb_lc_numeric_misc.h
Normal file
67
lib/libc/locale/nb_lc_numeric_misc.h
Normal file
@ -0,0 +1,67 @@
|
||||
/* $NetBSD: nb_lc_numeric_misc.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _NB_LC_NUMERIC_MISC_H_
|
||||
#define _NB_LC_NUMERIC_MISC_H_
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template(_decl).h
|
||||
*/
|
||||
#define _CATEGORY_TYPE _NumericLocale
|
||||
|
||||
static __inline void
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
|
||||
_NumericLocale * __restrict data)
|
||||
{
|
||||
_DIAGASSERT(cache != NULL);
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
cache->ldata.decimal_point = __UNCONST(data->decimal_point);
|
||||
cache->ldata.thousands_sep = __UNCONST(data->thousands_sep);
|
||||
cache->ldata.grouping = __UNCONST(data->grouping);
|
||||
|
||||
cache->items[(size_t)RADIXCHAR] = data->decimal_point;
|
||||
cache->items[(size_t)THOUSEP ] = data->thousands_sep;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_NumericLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
_CurrentNumericLocale = data;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_NUMERIC
|
||||
#define _CATEGORY_NAME "LC_NUMERIC"
|
||||
#define _CATEGORY_DEFAULT _DefaultNumericLocale
|
||||
|
||||
#endif /*_NB_LC_NUMERIC_MISC_H_*/
|
@ -1,7 +1,7 @@
|
||||
/* $NetBSD: setrunelocale.c,v 1.18 2008/04/28 20:23:00 martin Exp $ */
|
||||
/* $NetBSD: nb_lc_template.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)1999 Citrus Project,
|
||||
* Copyright (c)1999, 2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
@ -87,180 +87,162 @@
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: setrunelocale.c,v 1.18 2008/04/28 20:23:00 martin Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
#ifndef _NB_LC_TEMPLATE_H_
|
||||
#define _NB_LC_TEMPLATE_H_
|
||||
|
||||
#include "namespace.h"
|
||||
#define _nb_part_t _PREFIX(part_t)
|
||||
#define _nb_part_cache _PREFIX(part_cache)
|
||||
#define _nb_default_c _PREFIX(default_c)
|
||||
#define _nb_default_posix _PREFIX(default_posix)
|
||||
#define _nb_mutex _PREFIX(mutex)
|
||||
|
||||
#include "rune.h"
|
||||
#include <assert.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stddef.h>
|
||||
#include <unistd.h>
|
||||
#include <locale.h>
|
||||
#include <citrus/citrus_module.h>
|
||||
#include <citrus/citrus_ctype.h>
|
||||
#include "rune_local.h"
|
||||
#include "multibyte.h"
|
||||
typedef struct _nb_part_t {
|
||||
char name[_LOCALENAME_LEN_MAX];
|
||||
_CATEGORY_TYPE *impl;
|
||||
SIMPLEQ_ENTRY(_nb_part_t) entry;
|
||||
} _nb_part_t;
|
||||
|
||||
struct localetable {
|
||||
char path[PATH_MAX];
|
||||
_RuneLocale *runelocale;
|
||||
struct localetable *next;
|
||||
static SIMPLEQ_HEAD(, _nb_part_t) _nb_part_cache =
|
||||
SIMPLEQ_HEAD_INITIALIZER(_nb_part_cache);
|
||||
|
||||
static const _nb_part_t _nb_default_c = {
|
||||
_C_LOCALE,
|
||||
__UNCONST(&_CATEGORY_DEFAULT),
|
||||
{ NULL },
|
||||
};
|
||||
static struct localetable *localetable_head;
|
||||
|
||||
_RuneLocale *
|
||||
_findrunelocale(path)
|
||||
char *path;
|
||||
{
|
||||
struct localetable *lt;
|
||||
static const _nb_part_t _nb_default_posix = {
|
||||
_POSIX_LOCALE,
|
||||
__UNCONST(&_CATEGORY_DEFAULT),
|
||||
{ NULL },
|
||||
};
|
||||
|
||||
_DIAGASSERT(path != NULL);
|
||||
|
||||
/* ones which we have seen already */
|
||||
for (lt = localetable_head; lt; lt = lt->next)
|
||||
if (strcmp(path, lt->path) == 0)
|
||||
return lt->runelocale;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int
|
||||
_newrunelocale(path)
|
||||
char *path;
|
||||
{
|
||||
struct localetable *lt;
|
||||
FILE *fp;
|
||||
_RuneLocale *rl;
|
||||
int ret;
|
||||
|
||||
_DIAGASSERT(path != NULL);
|
||||
|
||||
if (strlen(path) + 1 > sizeof(lt->path))
|
||||
return EINVAL;
|
||||
|
||||
rl = _findrunelocale(path);
|
||||
if (rl)
|
||||
return 0;
|
||||
|
||||
if ((fp = fopen(path, "r")) == NULL)
|
||||
return ENOENT;
|
||||
|
||||
if ((rl = _Read_RuneMagi(fp)) != NULL)
|
||||
goto found;
|
||||
/* necessary for backward compatibility */
|
||||
if ((rl = _Read_CTypeAsRune(fp)) != NULL)
|
||||
goto found;
|
||||
|
||||
fclose(fp);
|
||||
return EFTYPE;
|
||||
|
||||
found:
|
||||
fclose(fp);
|
||||
|
||||
rl->rl_citrus_ctype = NULL;
|
||||
ret = _citrus_ctype_open(&rl->rl_citrus_ctype, rl->rl_encoding,
|
||||
rl->rl_variable, rl->rl_variable_len,
|
||||
_PRIVSIZE);
|
||||
if (!ret)
|
||||
ret = __runetable_to_netbsd_ctype(rl);
|
||||
if (ret) {
|
||||
_NukeRune(rl);
|
||||
return ret;
|
||||
}
|
||||
if (__MB_LEN_MAX_RUNTIME <
|
||||
_citrus_ctype_get_mb_cur_max(rl->rl_citrus_ctype)) {
|
||||
_NukeRune(rl);
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
/* register it */
|
||||
lt = malloc(sizeof(struct localetable));
|
||||
if (lt == NULL) {
|
||||
_NukeRune(rl);
|
||||
return ENOMEM;
|
||||
}
|
||||
strlcpy(lt->path, path, sizeof(lt->path));
|
||||
lt->runelocale = rl;
|
||||
lt->next = localetable_head;
|
||||
localetable_head = lt;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static int
|
||||
delrunelocale(path)
|
||||
char *path;
|
||||
{
|
||||
struct localetable *lt, *prev;
|
||||
_RuneLocale *rl;
|
||||
|
||||
_DIAGASSERT(path != NULL);
|
||||
|
||||
prev = NULL;
|
||||
for (lt = localetable_head; lt; prev = lt, lt = prev->next)
|
||||
if (strcmp(path, lt->path) == 0)
|
||||
break;
|
||||
if (!lt)
|
||||
return ENOENT;
|
||||
|
||||
/* remove runelocale registeration */
|
||||
if (prev)
|
||||
prev->next = lt->next;
|
||||
else
|
||||
localetable_head = lt->next;
|
||||
lt->next = NULL;
|
||||
free(lt);
|
||||
|
||||
/* cleanup everything */
|
||||
rl = lt->runelocale;
|
||||
dlclose(rl->rl_rune_RuneModule);
|
||||
rl->rl_rune_RuneModule = NULL;
|
||||
_NukeRune(rl);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#ifdef _REENTRANT
|
||||
static mutex_t _nb_mutex = MUTEX_INITIALIZER;
|
||||
#endif
|
||||
|
||||
int
|
||||
_xpg4_setrunelocale(encoding)
|
||||
const char *encoding;
|
||||
static int
|
||||
_PREFIX(load_sub)(const char * __restrict name, const char * __restrict real,
|
||||
_nb_part_t ** __restrict part, int force)
|
||||
{
|
||||
char path[PATH_MAX];
|
||||
_RuneLocale *rl;
|
||||
int error;
|
||||
_nb_part_t *p, *q;
|
||||
int ret;
|
||||
|
||||
_DIAGASSERT(encoding != NULL);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(part != NULL);
|
||||
|
||||
if (!strcmp(encoding, "C") || !strcmp(encoding, "POSIX")) {
|
||||
rl = &_DefaultRuneLocale;
|
||||
goto found;
|
||||
if (!strcmp(_C_LOCALE, name)) {
|
||||
p = __UNCONST(&_nb_default_c);
|
||||
} else if (!strcmp(_POSIX_LOCALE, name)) {
|
||||
p = __UNCONST(&_nb_default_posix);
|
||||
} else {
|
||||
SIMPLEQ_FOREACH(p, &_nb_part_cache, entry) {
|
||||
if (!strcmp((const char *)&p->name[0], name))
|
||||
goto found;
|
||||
}
|
||||
p = malloc(sizeof(*p));
|
||||
if (p == NULL)
|
||||
return ENOMEM;
|
||||
if (force) {
|
||||
p->impl = __UNCONST(&_CATEGORY_DEFAULT);
|
||||
} else {
|
||||
_DIAGASSERT(_PathLocale != NULL);
|
||||
ret = _PREFIX(create_impl)((const char *)_PathLocale,
|
||||
name, &p->impl);
|
||||
if (ret) {
|
||||
free(p);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
strlcpy(&p->name[0], name, sizeof(p->name));
|
||||
SIMPLEQ_INSERT_TAIL(&_nb_part_cache, p, entry);
|
||||
}
|
||||
|
||||
snprintf(path, sizeof(path), "%s/%s/LC_CTYPE", _PathLocale, encoding);
|
||||
|
||||
error = _newrunelocale(path);
|
||||
if (error)
|
||||
return error;
|
||||
rl = _findrunelocale(path);
|
||||
if (!rl)
|
||||
return ENOENT;
|
||||
|
||||
found:
|
||||
_ctype_ = rl->rl_ctype_tab;
|
||||
_tolower_tab_ = rl->rl_tolower_tab;
|
||||
_toupper_tab_ = rl->rl_toupper_tab;
|
||||
_CurrentRuneLocale = rl;
|
||||
__mb_cur_max = _citrus_ctype_get_mb_cur_max(rl->rl_citrus_ctype);
|
||||
|
||||
if (real != NULL) {
|
||||
q = malloc(sizeof(*q));
|
||||
if (q == NULL)
|
||||
return ENOMEM;
|
||||
strlcpy(&q->name[0], real, sizeof(p->name));
|
||||
q->impl = p->impl;
|
||||
SIMPLEQ_INSERT_TAIL(&_nb_part_cache, q, entry);
|
||||
p = q;
|
||||
}
|
||||
*part = p;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __inline int
|
||||
_PREFIX(load)(const char * __restrict name,
|
||||
_nb_part_t ** __restrict part)
|
||||
{
|
||||
int ret, force;
|
||||
char path[PATH_MAX + 1], loccat[PATH_MAX + 1], buf[PATH_MAX + 1];
|
||||
const char *aliaspath, *alias;
|
||||
|
||||
#define _LOAD_SUB_ALIAS(key) \
|
||||
do { \
|
||||
alias = __unaliasname(aliaspath, key, &buf[0], sizeof(buf)); \
|
||||
if (alias != NULL) { \
|
||||
ret = (force = !__isforcemapping(alias)) \
|
||||
? _PREFIX(load_sub)(name, NULL, part, force) \
|
||||
: _PREFIX(load_sub)(alias, name, part, force); \
|
||||
_DIAGASSERT(!ret || !force); \
|
||||
goto done; \
|
||||
} \
|
||||
} while (/*CONSTCOND*/0)
|
||||
|
||||
/* (1) non-aliased file */
|
||||
mutex_lock(&_nb_mutex);
|
||||
ret = _PREFIX(load_sub)(name, NULL, part, 0);
|
||||
if (ret != ENOENT)
|
||||
goto done;
|
||||
|
||||
/* (2) lookup locname/catname type alias */
|
||||
_DIAGASSERT(_PathLocale != NULL);
|
||||
snprintf(&path[0], sizeof(path),
|
||||
"%s/" _LOCALE_ALIAS_NAME, _PathLocale);
|
||||
aliaspath = (const char *)&path[0];
|
||||
snprintf(&loccat[0], sizeof(loccat),
|
||||
"%s/" _CATEGORY_NAME, name);
|
||||
_LOAD_SUB_ALIAS((const char *)&loccat[0]);
|
||||
|
||||
/* (3) lookup locname type alias */
|
||||
_LOAD_SUB_ALIAS(name);
|
||||
|
||||
done:
|
||||
mutex_unlock(&_nb_mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const char *
|
||||
_PREFIX(setlocale)(const char * __restrict name,
|
||||
struct _locale_impl_t * __restrict locale)
|
||||
{
|
||||
_nb_part_t *part;
|
||||
|
||||
/* name may be NULL */
|
||||
_DIAGASSERT(locale != NULL);
|
||||
|
||||
if (name != NULL) {
|
||||
if (*name == '\0')
|
||||
name = _get_locale_env(_CATEGORY_NAME);
|
||||
_DIAGASSERT(name != NULL);
|
||||
_DIAGASSERT(locale->part_name[(size_t)_CATEGORY_ID] != NULL);
|
||||
if (strcmp(name, locale->part_name[(size_t)_CATEGORY_ID])) {
|
||||
if (_PREFIX(load)(name, &part))
|
||||
return NULL;
|
||||
locale->part_name[(size_t)_CATEGORY_ID]
|
||||
= &part->name[0];
|
||||
locale->part_impl[(size_t)_CATEGORY_ID]
|
||||
= part->impl;
|
||||
_PREFIX(build_cache)(&locale->cache, part->impl);
|
||||
if (locale == &_global_locale)
|
||||
_PREFIX(fixup)(part->impl);
|
||||
}
|
||||
}
|
||||
return locale->part_name[(size_t)_CATEGORY_ID];
|
||||
}
|
||||
|
||||
#include "generic_lc_template.h"
|
||||
|
||||
#endif /*_NB_LC_TEMPLATE_H_*/
|
45
lib/libc/locale/nb_lc_template_decl.h
Normal file
45
lib/libc/locale/nb_lc_template_decl.h
Normal file
@ -0,0 +1,45 @@
|
||||
/* $NetBSD: nb_lc_template_decl.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _NB_LC_TEMPLATE_DECL_H_
|
||||
#define _NB_LC_TEMPLATE_DECL_H_
|
||||
|
||||
#include "generic_lc_template_decl.h"
|
||||
|
||||
static __inline int
|
||||
_PREFIX(create_impl)(const char * __restrict,
|
||||
const char * __restrict, _CATEGORY_TYPE ** __restrict);
|
||||
|
||||
static __inline void
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict,
|
||||
_CATEGORY_TYPE * __restrict);
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_CATEGORY_TYPE *);
|
||||
|
||||
#endif /*_NB_LC_TEMPLATE_DECL_H_*/
|
91
lib/libc/locale/nb_lc_time_misc.h
Normal file
91
lib/libc/locale/nb_lc_time_misc.h
Normal file
@ -0,0 +1,91 @@
|
||||
/* $NetBSD: nb_lc_time_misc.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _NB_LC_TIME_MISC_H_
|
||||
#define _NB_LC_TIME_MISC_H_
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template(_decl).h
|
||||
*/
|
||||
#define _CATEGORY_TYPE _TimeLocale
|
||||
|
||||
#define ABDAY_IDX(idx) ((size_t)idx - (size_t)ABDAY_1)
|
||||
#define DAY_IDX(idx) ((size_t)idx - (size_t)DAY_1)
|
||||
#define ABMON_IDX(idx) ((size_t)idx - (size_t)ABMON_1)
|
||||
#define MON_IDX(idx) ((size_t)idx - (size_t)MON_1)
|
||||
#define AM_PM_IDX(idx) ((size_t)idx - (size_t)AM_STR)
|
||||
|
||||
static __inline void
|
||||
/*ARGSUSED*/
|
||||
_PREFIX(build_cache)(struct _locale_cache_t * __restrict cache,
|
||||
_TimeLocale * __restrict data)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
_DIAGASSERT(cache != NULL);
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
for (i = (size_t)ABDAY_1; i <= ABDAY_7; ++i)
|
||||
cache->items[i] = data->abday[ABDAY_IDX(i)];
|
||||
for (i = (size_t)DAY_1; i <= DAY_7; ++i)
|
||||
cache->items[i] = data->day[DAY_IDX(i)];
|
||||
for (i = (size_t)ABMON_1; i <= ABMON_12; ++i)
|
||||
cache->items[i] = data->abmon[ABMON_IDX(i)];
|
||||
for (i = (size_t)MON_1; i <= MON_12; ++i)
|
||||
cache->items[i] = data->mon[MON_IDX(i)];
|
||||
for (i = (size_t)AM_STR; i <= PM_STR; ++i)
|
||||
cache->items[i] = data->am_pm[AM_PM_IDX(i)];
|
||||
cache->items[(size_t)D_T_FMT ] = data->d_t_fmt;
|
||||
cache->items[(size_t)D_FMT ] = data->d_fmt;
|
||||
cache->items[(size_t)T_FMT ] = data->t_fmt;
|
||||
cache->items[(size_t)T_FMT_AMPM ] = data->t_fmt_ampm;
|
||||
|
||||
/* NOT IMPLEMENTED YET */
|
||||
cache->items[(size_t)ERA ] = NULL;
|
||||
cache->items[(size_t)ERA_D_FMT ] = NULL;
|
||||
cache->items[(size_t)ERA_D_T_FMT] = NULL;
|
||||
cache->items[(size_t)ERA_T_FMT ] = NULL;
|
||||
cache->items[(size_t)ALT_DIGITS ] = NULL;
|
||||
}
|
||||
|
||||
static __inline void
|
||||
_PREFIX(fixup)(_TimeLocale *data)
|
||||
{
|
||||
_DIAGASSERT(data != NULL);
|
||||
|
||||
_CurrentTimeLocale = data;
|
||||
}
|
||||
|
||||
/*
|
||||
* macro required by nb_lc_template.h
|
||||
*/
|
||||
#define _CATEGORY_ID LC_TIME
|
||||
#define _CATEGORY_NAME "LC_TIME"
|
||||
#define _CATEGORY_DEFAULT _DefaultTimeLocale
|
||||
|
||||
#endif /*_NB_LC_TIME_MISC_H_*/
|
@ -1,126 +1,56 @@
|
||||
/* $NetBSD: nl_langinfo.c,v 1.11 2005/11/29 03:11:59 christos Exp $ */
|
||||
/* $NetBSD: nl_langinfo.c,v 1.12 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Written by J.T. Conklin <jtc@NetBSD.org>.
|
||||
* Public domain.
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: nl_langinfo.c,v 1.11 2005/11/29 03:11:59 christos Exp $");
|
||||
__RCSID("$NetBSD: nl_langinfo.c,v 1.12 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/localedef.h>
|
||||
#include <locale.h>
|
||||
#include <nl_types.h>
|
||||
#include <sys/types.h>
|
||||
#include <langinfo.h>
|
||||
#include "rune.h"
|
||||
#include "runetype.h"
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
char *
|
||||
nl_langinfo(item)
|
||||
nl_item item;
|
||||
nl_langinfo(nl_item item)
|
||||
{
|
||||
const char *s;
|
||||
struct _locale_impl_t *impl;
|
||||
|
||||
switch (item) {
|
||||
case D_T_FMT:
|
||||
s = _CurrentTimeLocale->d_t_fmt;
|
||||
break;
|
||||
case D_FMT:
|
||||
s = _CurrentTimeLocale->d_fmt;
|
||||
break;
|
||||
case T_FMT:
|
||||
s = _CurrentTimeLocale->t_fmt;
|
||||
break;
|
||||
case T_FMT_AMPM:
|
||||
s = _CurrentTimeLocale->t_fmt_ampm;
|
||||
break;
|
||||
case AM_STR:
|
||||
case PM_STR:
|
||||
s = _CurrentTimeLocale->am_pm[(size_t)(item - AM_STR)];
|
||||
break;
|
||||
case DAY_1:
|
||||
case DAY_2:
|
||||
case DAY_3:
|
||||
case DAY_4:
|
||||
case DAY_5:
|
||||
case DAY_6:
|
||||
case DAY_7:
|
||||
s = _CurrentTimeLocale->day[(size_t)(item - DAY_1)];
|
||||
break;
|
||||
case ABDAY_1:
|
||||
case ABDAY_2:
|
||||
case ABDAY_3:
|
||||
case ABDAY_4:
|
||||
case ABDAY_5:
|
||||
case ABDAY_6:
|
||||
case ABDAY_7:
|
||||
s = _CurrentTimeLocale->abday[(size_t)(item - ABDAY_1)];
|
||||
break;
|
||||
case MON_1:
|
||||
case MON_2:
|
||||
case MON_3:
|
||||
case MON_4:
|
||||
case MON_5:
|
||||
case MON_6:
|
||||
case MON_7:
|
||||
case MON_8:
|
||||
case MON_9:
|
||||
case MON_10:
|
||||
case MON_11:
|
||||
case MON_12:
|
||||
s = _CurrentTimeLocale->mon[(size_t)(item - MON_1)];
|
||||
break;
|
||||
case ABMON_1:
|
||||
case ABMON_2:
|
||||
case ABMON_3:
|
||||
case ABMON_4:
|
||||
case ABMON_5:
|
||||
case ABMON_6:
|
||||
case ABMON_7:
|
||||
case ABMON_8:
|
||||
case ABMON_9:
|
||||
case ABMON_10:
|
||||
case ABMON_11:
|
||||
case ABMON_12:
|
||||
s = _CurrentTimeLocale->abmon[(size_t)(item - ABMON_1)];
|
||||
break;
|
||||
case RADIXCHAR:
|
||||
s = _CurrentNumericLocale->decimal_point;
|
||||
break;
|
||||
case THOUSEP:
|
||||
s = _CurrentNumericLocale->thousands_sep;
|
||||
break;
|
||||
case YESSTR:
|
||||
s = _CurrentMessagesLocale->yesstr;
|
||||
break;
|
||||
case YESEXPR:
|
||||
s = _CurrentMessagesLocale->yesexpr;
|
||||
break;
|
||||
case NOSTR:
|
||||
s = _CurrentMessagesLocale->nostr;
|
||||
break;
|
||||
case NOEXPR:
|
||||
s = _CurrentMessagesLocale->noexpr;
|
||||
break;
|
||||
case CRNCYSTR: /* XXX */
|
||||
s = "";
|
||||
break;
|
||||
case CODESET:
|
||||
#ifdef WITH_RUNE
|
||||
s = _CurrentRuneLocale->rl_codeset;
|
||||
#else
|
||||
s = NULL;
|
||||
#endif
|
||||
if (!s)
|
||||
s = "";
|
||||
break;
|
||||
default:
|
||||
s = "";
|
||||
break;
|
||||
if (item >= D_T_FMT && item <= ALT_DIGITS) {
|
||||
impl = *_current_locale();
|
||||
s = impl->cache.items[(size_t)item];
|
||||
}
|
||||
|
||||
/* The return value should be really const, but the interface says OW */
|
||||
if (s == NULL)
|
||||
s = "";
|
||||
return __UNCONST(s);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: rune.c,v 1.30 2007/09/29 07:55:45 tnozaki Exp $ */
|
||||
/* $NetBSD: rune.c,v 1.31 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)1999 Citrus Project,
|
||||
@ -63,7 +63,7 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)rune.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: rune.c,v 1.30 2007/09/29 07:55:45 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: rune.c,v 1.31 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
@ -76,8 +76,11 @@ __RCSID("$NetBSD: rune.c,v 1.30 2007/09/29 07:55:45 tnozaki Exp $");
|
||||
#include <wchar.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <citrus/citrus_module.h>
|
||||
#include <citrus/citrus_ctype.h>
|
||||
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
|
||||
#include "bsdctype.h"
|
||||
#include "rune.h"
|
||||
#include "rune_local.h"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: rune.h,v 1.12 2007/09/03 20:31:56 drochner Exp $ */
|
||||
/* $NetBSD: rune.h,v 1.13 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
@ -89,10 +89,7 @@
|
||||
extern size_t __mb_len_max_runtime;
|
||||
#define __MB_LEN_MAX_RUNTIME __mb_len_max_runtime
|
||||
|
||||
extern _RuneLocale _DefaultRuneLocale;
|
||||
extern _RuneLocale *_CurrentRuneLocale;
|
||||
extern const char *_PathLocale;
|
||||
|
||||
#define _LOCALE_ALIAS_NAME "locale.alias"
|
||||
extern const _RuneLocale _DefaultRuneLocale;
|
||||
extern const _RuneLocale *_CurrentRuneLocale;
|
||||
|
||||
#endif /*! _RUNE_H_ */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: rune_local.h,v 1.10 2008/04/01 19:19:33 drochner Exp $ */
|
||||
/* $NetBSD: rune_local.h,v 1.11 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2000 Citrus Project,
|
||||
@ -30,19 +30,11 @@
|
||||
#define _RUNE_LOCAL_H_
|
||||
|
||||
/* rune.c */
|
||||
extern _RuneLocale *_Read_RuneMagi __P((FILE *fp));
|
||||
extern _RuneLocale *_Read_CTypeAsRune __P((FILE *fp));
|
||||
extern void _NukeRune __P((_RuneLocale *));
|
||||
|
||||
/* setrunelocale.c */
|
||||
extern int _xpg4_setrunelocale __P((const char *));
|
||||
extern _RuneLocale *_findrunelocale __P((char *));
|
||||
extern int _newrunelocale __P((char *));
|
||||
extern _RuneLocale *_Read_RuneMagi(FILE *fp);
|
||||
extern _RuneLocale *_Read_CTypeAsRune(FILE *fp);
|
||||
extern void _NukeRune(_RuneLocale *);
|
||||
|
||||
/* runeglue.c */
|
||||
extern int __runetable_to_netbsd_ctype __P((_RuneLocale *));
|
||||
|
||||
/* ___runetype_mb.c */
|
||||
extern _RuneType ___runetype_mb __P((wint_t));
|
||||
extern int __runetable_to_netbsd_ctype(_RuneLocale *);
|
||||
|
||||
#endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: runeglue.c,v 1.13 2008/11/06 19:59:42 christos Exp $ */
|
||||
/* $NetBSD: runeglue.c,v 1.14 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)1999 Citrus Project,
|
||||
@ -35,7 +35,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: runeglue.c,v 1.13 2008/11/06 19:59:42 christos Exp $");
|
||||
__RCSID("$NetBSD: runeglue.c,v 1.14 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#define _CTYPE_PRIVATE
|
||||
@ -47,8 +47,8 @@ __RCSID("$NetBSD: runeglue.c,v 1.13 2008/11/06 19:59:42 christos Exp $");
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <wchar.h>
|
||||
#include "citrus/citrus_module.h"
|
||||
#include "citrus/citrus_ctype.h"
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
#include "rune.h"
|
||||
#include "rune_local.h"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: runetable.c,v 1.17 2008/08/12 21:25:31 tnozaki Exp $ */
|
||||
/* $NetBSD: runetable.c,v 1.18 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1993
|
||||
@ -39,7 +39,7 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)table.c 8.1 (Berkeley) 6/27/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: runetable.c,v 1.17 2008/08/12 21:25:31 tnozaki Exp $");
|
||||
__RCSID("$NetBSD: runetable.c,v 1.18 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
@ -49,12 +49,12 @@ __RCSID("$NetBSD: runetable.c,v 1.17 2008/08/12 21:25:31 tnozaki Exp $");
|
||||
#include <locale.h>
|
||||
#include <assert.h>
|
||||
#include <wchar.h>
|
||||
#include <citrus/citrus_module.h>
|
||||
#include <citrus/citrus_ctype.h>
|
||||
#include "citrus_module.h"
|
||||
#include "citrus_ctype.h"
|
||||
#include "rune.h"
|
||||
#include "rune_local.h"
|
||||
|
||||
_RuneLocale _DefaultRuneLocale = {
|
||||
const _RuneLocale _DefaultRuneLocale = {
|
||||
_RUNE_MAGIC_1,
|
||||
"NONE",
|
||||
_DEFAULT_INVALID_RUNE,
|
||||
@ -349,6 +349,4 @@ _RuneLocale _DefaultRuneLocale = {
|
||||
_C_toupper_
|
||||
};
|
||||
|
||||
_RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
|
||||
|
||||
const char *_PathLocale;
|
||||
const _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
|
||||
|
@ -1,11 +1,8 @@
|
||||
/* $NetBSD: setlocale.c,v 1.54 2008/06/12 20:33:23 ginsbach Exp $ */
|
||||
/* $NetBSD: setlocale.c,v 1.55 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993, 2008
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* This code is derived from software contributed to Berkeley by
|
||||
* Paul Borman at Krystal Technologies.
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@ -15,14 +12,11 @@
|
||||
* 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.
|
||||
* 3. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* 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 REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* 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)
|
||||
@ -34,427 +28,84 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)setlocale.c 8.1 (Berkeley) 7/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: setlocale.c,v 1.54 2008/06/12 20:33:23 ginsbach Exp $");
|
||||
#endif
|
||||
__RCSID("$NetBSD: setlocale.c,v 1.55 2009/01/02 00:20:20 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#define _CTYPE_PRIVATE
|
||||
|
||||
#include "namespace.h"
|
||||
#include <sys/localedef.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include <langinfo.h>
|
||||
#define __SETLOCALE_SOURCE__
|
||||
#include <locale.h>
|
||||
#include <paths.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#ifdef WITH_RUNE
|
||||
#include "rune.h"
|
||||
#include "rune_local.h"
|
||||
#else
|
||||
#include "ctypeio.h"
|
||||
|
||||
#include "setlocale_local.h"
|
||||
|
||||
const char *_PathLocale = NULL;
|
||||
|
||||
__link_set_decl(all_categories, _locale_category_t);
|
||||
|
||||
#ifndef __lint__
|
||||
static
|
||||
#endif
|
||||
#include "lcmessages.h"
|
||||
#include "lcmonetary.h"
|
||||
#include "lcnumeric.h"
|
||||
#include "lctime.h"
|
||||
|
||||
#ifdef CITRUS
|
||||
#include <citrus/citrus_namespace.h>
|
||||
#include <citrus/citrus_region.h>
|
||||
#include <citrus/citrus_lookup.h>
|
||||
#include <citrus/citrus_bcs.h>
|
||||
#else
|
||||
#include <locale/aliasname_local.h>
|
||||
#define _lookup_alias(p, a, b, s, c) __unaliasname((p), (a), (b), (s))
|
||||
#define _bcs_strcasecmp(a, b) strcasecmp((a), (b))
|
||||
#endif
|
||||
|
||||
#define _LOCALE_SYM_FORCE "/force"
|
||||
|
||||
/*
|
||||
* Category names for getenv()
|
||||
*/
|
||||
static const char *const categories[_LC_LAST] = {
|
||||
"LC_ALL",
|
||||
"LC_COLLATE",
|
||||
"LC_CTYPE",
|
||||
"LC_MONETARY",
|
||||
"LC_NUMERIC",
|
||||
"LC_TIME",
|
||||
"LC_MESSAGES"
|
||||
const _locale_category_t dummy = {
|
||||
.category = _LC_LAST, /* XXX */
|
||||
.setlocale = NULL,
|
||||
};
|
||||
|
||||
/*
|
||||
* Current locales for each category
|
||||
*/
|
||||
static char current_categories[_LC_LAST][32] = {
|
||||
"C",
|
||||
"C",
|
||||
"C",
|
||||
"C",
|
||||
"C",
|
||||
"C",
|
||||
"C"
|
||||
};
|
||||
__link_set_add_data(all_categories, dummy);
|
||||
|
||||
/*
|
||||
* The locales we are going to try and load
|
||||
*/
|
||||
static char new_categories[_LC_LAST][32];
|
||||
_locale_category_t *
|
||||
_find_category(int category)
|
||||
{
|
||||
_locale_category_t * const *p;
|
||||
|
||||
static char current_locale_string[_LC_LAST * 33];
|
||||
__link_set_foreach(p, all_categories) {
|
||||
if ((*p)->category == category)
|
||||
return *p;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char *currentlocale __P((void));
|
||||
static void revert_to_default __P((int));
|
||||
static int force_locale_enable __P((int));
|
||||
static int load_locale_sub __P((int, const char *, int));
|
||||
static char *loadlocale __P((int));
|
||||
static const char *__get_locale_env __P((int));
|
||||
const char *
|
||||
_get_locale_env(const char *category)
|
||||
{
|
||||
const char *name;
|
||||
|
||||
/* 1. check LC_ALL */
|
||||
name = (const char *)getenv("LC_ALL");
|
||||
if (name == NULL || *name == '\0') {
|
||||
/* 2. check LC_* */
|
||||
name = (const char *)getenv(category);
|
||||
if (name == NULL || *name == '\0') {
|
||||
/* 3. check LANG */
|
||||
name = getenv("LANG");
|
||||
}
|
||||
}
|
||||
if (name == NULL || *name == '\0' || strchr(name, '/'))
|
||||
/* 4. if none is set, fall to "C" */
|
||||
name = _C_LOCALE;
|
||||
return name;
|
||||
}
|
||||
|
||||
char *
|
||||
__setlocale(category, locale)
|
||||
int category;
|
||||
const char *locale;
|
||||
__setlocale(int category, const char *name)
|
||||
{
|
||||
int i, loadlocale_success;
|
||||
size_t len;
|
||||
const char *env, *r;
|
||||
_locale_category_t *l;
|
||||
struct _locale_impl_t *impl;
|
||||
|
||||
if (issetugid() ||
|
||||
((!_PathLocale && !(_PathLocale = getenv("PATH_LOCALE"))) ||
|
||||
!*_PathLocale))
|
||||
_PathLocale = _PATH_LOCALE;
|
||||
|
||||
if (category < 0 || category >= _LC_LAST)
|
||||
return (NULL);
|
||||
|
||||
if (!locale)
|
||||
return (category ?
|
||||
current_categories[category] : currentlocale());
|
||||
|
||||
/*
|
||||
* Default to the current locale for everything.
|
||||
*/
|
||||
for (i = 1; i < _LC_LAST; ++i)
|
||||
(void)strlcpy(new_categories[i], current_categories[i],
|
||||
sizeof(new_categories[i]));
|
||||
|
||||
/*
|
||||
* Now go fill up new_categories from the locale argument
|
||||
*/
|
||||
if (!*locale) {
|
||||
if (category == LC_ALL) {
|
||||
for (i = 1; i < _LC_LAST; ++i) {
|
||||
env = __get_locale_env(i);
|
||||
(void)strlcpy(new_categories[i], env,
|
||||
sizeof(new_categories[i]));
|
||||
}
|
||||
}
|
||||
else {
|
||||
env = __get_locale_env(category);
|
||||
(void)strlcpy(new_categories[category], env,
|
||||
sizeof(new_categories[category]));
|
||||
}
|
||||
} else if (category) {
|
||||
(void)strlcpy(new_categories[category], locale,
|
||||
sizeof(new_categories[category]));
|
||||
} else {
|
||||
if ((r = strchr(locale, '/')) == 0) {
|
||||
for (i = 1; i < _LC_LAST; ++i) {
|
||||
(void)strlcpy(new_categories[i], locale,
|
||||
sizeof(new_categories[i]));
|
||||
}
|
||||
} else {
|
||||
for (i = 1;;) {
|
||||
_DIAGASSERT(*r == '/' || *r == 0);
|
||||
_DIAGASSERT(*locale != 0);
|
||||
if (*locale == '/')
|
||||
return (NULL); /* invalid format. */
|
||||
len = r - locale;
|
||||
if (len + 1 > sizeof(new_categories[i]))
|
||||
return (NULL); /* too long */
|
||||
(void)memcpy(new_categories[i], locale, len);
|
||||
new_categories[i][len] = '\0';
|
||||
if (*r == 0)
|
||||
break;
|
||||
_DIAGASSERT(*r == '/');
|
||||
if (*(locale = ++r) == 0)
|
||||
/* slash followed by NUL */
|
||||
return (NULL);
|
||||
/* skip until NUL or '/' */
|
||||
while (*r && *r != '/')
|
||||
r++;
|
||||
if (++i == _LC_LAST)
|
||||
return (NULL); /* too many slashes. */
|
||||
}
|
||||
if (i + 1 != _LC_LAST)
|
||||
return (NULL); /* too few slashes. */
|
||||
if (category >= LC_ALL && category < _LC_LAST) {
|
||||
l = _find_category(category);
|
||||
if (l != NULL) {
|
||||
if (issetugid() || ((_PathLocale == NULL &&
|
||||
(_PathLocale = getenv("PATH_LOCALE")) == NULL) ||
|
||||
*_PathLocale == '\0'))
|
||||
_PathLocale = _PATH_LOCALE;
|
||||
impl = *_current_locale();
|
||||
return __UNCONST((*l->setlocale)(name, impl));
|
||||
}
|
||||
}
|
||||
|
||||
if (category)
|
||||
return (loadlocale(category));
|
||||
|
||||
loadlocale_success = 0;
|
||||
for (i = 1; i < _LC_LAST; ++i) {
|
||||
if (loadlocale(i) != NULL)
|
||||
loadlocale_success = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* If all categories failed, return NULL; we don't need to back
|
||||
* changes off, since none happened.
|
||||
*/
|
||||
if (!loadlocale_success)
|
||||
return NULL;
|
||||
|
||||
return (currentlocale());
|
||||
}
|
||||
|
||||
static char *
|
||||
currentlocale()
|
||||
{
|
||||
int i;
|
||||
|
||||
(void)strlcpy(current_locale_string, current_categories[1],
|
||||
sizeof(current_locale_string));
|
||||
|
||||
for (i = 2; i < _LC_LAST; ++i)
|
||||
if (strcmp(current_categories[1], current_categories[i])) {
|
||||
(void)snprintf(current_locale_string,
|
||||
sizeof(current_locale_string), "%s/%s/%s/%s/%s/%s",
|
||||
current_categories[1], current_categories[2],
|
||||
current_categories[3], current_categories[4],
|
||||
current_categories[5], current_categories[6]);
|
||||
break;
|
||||
}
|
||||
return (current_locale_string);
|
||||
}
|
||||
|
||||
static void
|
||||
revert_to_default(category)
|
||||
int category;
|
||||
{
|
||||
switch (category) {
|
||||
case LC_CTYPE:
|
||||
#ifdef WITH_RUNE
|
||||
(void)_xpg4_setrunelocale("C");
|
||||
#else
|
||||
if (_ctype_ != _C_ctype_) {
|
||||
/* LINTED const castaway */
|
||||
free((void *)_ctype_);
|
||||
_ctype_ = _C_ctype_;
|
||||
}
|
||||
if (_toupper_tab_ != _C_toupper_) {
|
||||
/* LINTED const castaway */
|
||||
free((void *)_toupper_tab_);
|
||||
_toupper_tab_ = _C_toupper_;
|
||||
}
|
||||
if (_tolower_tab_ != _C_tolower_) {
|
||||
/* LINTED const castaway */
|
||||
free((void *)_tolower_tab_);
|
||||
_tolower_tab_ = _C_tolower_;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case LC_TIME:
|
||||
if (_CurrentTimeLocale != &_DefaultTimeLocale) {
|
||||
free(__UNCONST(_CurrentTimeLocale));
|
||||
_CurrentTimeLocale = &_DefaultTimeLocale;
|
||||
}
|
||||
break;
|
||||
case LC_MESSAGES:
|
||||
if (_CurrentMessagesLocale != &_DefaultMessagesLocale) {
|
||||
free(__UNCONST(_CurrentMessagesLocale));
|
||||
_CurrentMessagesLocale = &_DefaultMessagesLocale;
|
||||
}
|
||||
break;
|
||||
case LC_COLLATE:
|
||||
break;
|
||||
case LC_MONETARY:
|
||||
if (_CurrentMonetaryLocale != &_DefaultMonetaryLocale) {
|
||||
free(__UNCONST(_CurrentMonetaryLocale));
|
||||
_CurrentMonetaryLocale = &_DefaultMonetaryLocale;
|
||||
}
|
||||
break;
|
||||
case LC_NUMERIC:
|
||||
if (_CurrentNumericLocale != &_DefaultNumericLocale) {
|
||||
free(__UNCONST(_CurrentNumericLocale));
|
||||
_CurrentNumericLocale = &_DefaultNumericLocale;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
force_locale_enable(category)
|
||||
int category;
|
||||
{
|
||||
revert_to_default(category);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
load_locale_sub(category, locname, isspecial)
|
||||
int category;
|
||||
const char *locname;
|
||||
int isspecial;
|
||||
{
|
||||
char name[PATH_MAX];
|
||||
int len;
|
||||
|
||||
/* check for the default locales */
|
||||
if (!strcmp(new_categories[category], "C") ||
|
||||
!strcmp(new_categories[category], "POSIX")) {
|
||||
revert_to_default(category);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* check whether special symbol */
|
||||
if (isspecial && _bcs_strcasecmp(locname, _LOCALE_SYM_FORCE) == 0)
|
||||
return force_locale_enable(category);
|
||||
|
||||
/* sanity check */
|
||||
if (strchr(locname, '/') != NULL)
|
||||
return -1;
|
||||
|
||||
len = snprintf(name, sizeof(name), "%s/%s/%s",
|
||||
_PathLocale, locname, categories[category]);
|
||||
if (len < 0 || len >= sizeof(name))
|
||||
return -1;
|
||||
|
||||
switch (category) {
|
||||
case LC_CTYPE:
|
||||
#ifdef WITH_RUNE
|
||||
if (_xpg4_setrunelocale(__UNCONST(locname)))
|
||||
return -1;
|
||||
#else
|
||||
if (!__loadctype(name))
|
||||
return -1;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case LC_MESSAGES:
|
||||
len += snprintf(name + len, sizeof(name) - len, "/%s",
|
||||
categories[category]);
|
||||
if (len >= sizeof(name))
|
||||
return -1;
|
||||
if (!__loadmessages(name))
|
||||
#ifdef notyet
|
||||
return -1;
|
||||
#else
|
||||
/*
|
||||
* XXX we don't have LC_MESSAGES support yet,
|
||||
* but catopen may use the value of LC_MESSAGES category.
|
||||
* so return successfully if locale directory is present.
|
||||
*/
|
||||
/* local */
|
||||
{
|
||||
struct stat st;
|
||||
|
||||
(void)snprintf(name, sizeof(name), "%s/%s",
|
||||
_PathLocale, locname);
|
||||
if (stat(name, &st) < 0)
|
||||
return -1;
|
||||
if (!S_ISDIR(st.st_mode))
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
|
||||
case LC_TIME:
|
||||
if (!__loadtime(name))
|
||||
return -1;
|
||||
break;
|
||||
case LC_COLLATE:
|
||||
return -1;
|
||||
case LC_MONETARY:
|
||||
if (!__loadmonetary(name))
|
||||
return -1;
|
||||
break;
|
||||
case LC_NUMERIC:
|
||||
if (!__loadnumeric(name))
|
||||
return -1;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char *
|
||||
loadlocale(category)
|
||||
int category;
|
||||
{
|
||||
char aliaspath[PATH_MAX], loccat[PATH_MAX], buf[PATH_MAX];
|
||||
const char *alias;
|
||||
|
||||
_DIAGASSERT(0 < category && category < _LC_LAST);
|
||||
|
||||
if (strcmp(new_categories[category], current_categories[category]) == 0)
|
||||
return (current_categories[category]);
|
||||
|
||||
/* (1) non-aliased file */
|
||||
if (!load_locale_sub(category, new_categories[category], 0))
|
||||
goto success;
|
||||
|
||||
/* (2) lookup locname/catname type alias */
|
||||
(void)snprintf(aliaspath, sizeof(aliaspath),
|
||||
"%s/" _LOCALE_ALIAS_NAME, _PathLocale);
|
||||
(void)snprintf(loccat, sizeof(loccat), "%s/%s",
|
||||
new_categories[category], categories[category]);
|
||||
alias = _lookup_alias(aliaspath, loccat, buf, sizeof(buf),
|
||||
_LOOKUP_CASE_SENSITIVE);
|
||||
if (!load_locale_sub(category, alias, 1))
|
||||
goto success;
|
||||
|
||||
/* (3) lookup locname type alias */
|
||||
alias = _lookup_alias(aliaspath, new_categories[category],
|
||||
buf, sizeof(buf), _LOOKUP_CASE_SENSITIVE);
|
||||
if (!load_locale_sub(category, alias, 1))
|
||||
goto success;
|
||||
|
||||
return NULL;
|
||||
|
||||
success:
|
||||
(void)strlcpy(current_categories[category],
|
||||
new_categories[category],
|
||||
sizeof(current_categories[category]));
|
||||
return current_categories[category];
|
||||
}
|
||||
|
||||
static const char *
|
||||
__get_locale_env(category)
|
||||
int category;
|
||||
{
|
||||
const char *env;
|
||||
|
||||
_DIAGASSERT(category != LC_ALL);
|
||||
|
||||
/* 1. check LC_ALL. */
|
||||
env = getenv(categories[0]);
|
||||
|
||||
/* 2. check LC_* */
|
||||
if (!env || !*env)
|
||||
env = getenv(categories[category]);
|
||||
|
||||
/* 3. check LANG */
|
||||
if (!env || !*env)
|
||||
env = getenv("LANG");
|
||||
|
||||
/* 4. if none is set, fall to "C" */
|
||||
if (!env || !*env || strchr(env, '/'))
|
||||
env = "C";
|
||||
|
||||
return env;
|
||||
}
|
||||
|
74
lib/libc/locale/setlocale_local.h
Normal file
74
lib/libc/locale/setlocale_local.h
Normal file
@ -0,0 +1,74 @@
|
||||
/* $NetBSD: setlocale_local.h,v 1.1 2009/01/02 00:20:20 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)2008 Citrus Project,
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef _SETLOCALE_LOCAL_H_
|
||||
#define _SETLOCALE_LOCAL_H_
|
||||
|
||||
#define _LOCALENAME_LEN_MAX 33
|
||||
|
||||
#define _C_LOCALE "C"
|
||||
#define _POSIX_LOCALE "POSIX"
|
||||
|
||||
extern const char *_PathLocale;
|
||||
#define _LOCALE_ALIAS_NAME "locale.alias"
|
||||
|
||||
typedef void *_locale_part_t;
|
||||
|
||||
struct _locale_cache_t {
|
||||
const unsigned char *ctype_tab;
|
||||
const short *tolower_tab;
|
||||
const short *toupper_tab;
|
||||
size_t mb_cur_max;
|
||||
struct lconv ldata;
|
||||
const char *items[ALT_DIGITS + 1];
|
||||
};
|
||||
|
||||
struct _locale_impl_t {
|
||||
struct _locale_cache_t cache;
|
||||
char query[_LOCALENAME_LEN_MAX * (_LC_LAST - 1)];
|
||||
const char *part_name[_LC_LAST];
|
||||
_locale_part_t part_impl[_LC_LAST];
|
||||
};
|
||||
|
||||
typedef const char *(*_locale_set_t)(const char * __restrict,
|
||||
struct _locale_impl_t * __restrict);
|
||||
|
||||
typedef struct {
|
||||
const char* name;
|
||||
int category;
|
||||
_locale_set_t setlocale;
|
||||
} _locale_category_t;
|
||||
|
||||
__BEGIN_DECLS
|
||||
_locale_category_t *_find_category(int);
|
||||
const char *_get_locale_env(const char *);
|
||||
struct _locale_impl_t _global_locale;
|
||||
struct _locale_impl_t **_current_locale(void);
|
||||
__END_DECLS
|
||||
|
||||
#endif /*_SETLOCALE_LOCAL_H_*/
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: Makefile.inc,v 1.8 1996/05/13 23:29:32 jtc Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.9 2009/01/02 00:20:21 tnozaki Exp $
|
||||
|
||||
.PATH: ${.CURDIR}/nls
|
||||
|
||||
@ -7,3 +7,10 @@ MAN+= catclose.3 catgets.3 catopen.3
|
||||
|
||||
# indirect reference stubs, to be removed soon.
|
||||
SRCS+= _catclose.c _catgets.c _catopen.c
|
||||
|
||||
.if ${CITRUS} == "yes"
|
||||
CPPFLAGS.catopen.c+= -DHAVE_CITRUS -I${LIBCDIR}/citrus
|
||||
.else
|
||||
CPPFLAGS.catopen.c+= -UHAVE_CITRUS -I${LIBCDIR}/locale
|
||||
.endif
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: catopen.c,v 1.25 2008/04/28 20:23:00 martin Exp $ */
|
||||
/* $NetBSD: catopen.c,v 1.26 2009/01/02 00:20:21 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||
@ -31,7 +31,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: catopen.c,v 1.25 2008/04/28 20:23:00 martin Exp $");
|
||||
__RCSID("$NetBSD: catopen.c,v 1.26 2009/01/02 00:20:21 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#define _NLS_PRIVATE
|
||||
@ -50,13 +50,14 @@ __RCSID("$NetBSD: catopen.c,v 1.25 2008/04/28 20:23:00 martin Exp $");
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef CITRUS
|
||||
#include <citrus/citrus_namespace.h>
|
||||
#include <citrus/citrus_region.h>
|
||||
#include <citrus/citrus_lookup.h>
|
||||
#ifdef HAVE_CITRUS
|
||||
#include "citrus_namespace.h"
|
||||
#include "citrus_bcs.h"
|
||||
#include "citrus_region.h"
|
||||
#include "citrus_lookup.h"
|
||||
#include "citrus_aliasname_local.h"
|
||||
#else
|
||||
#include <locale/aliasname_local.h>
|
||||
#define _lookup_alias(p, a, b, s, c) __unaliasname((p), (a), (b), (s))
|
||||
#include "aliasname_local.h"
|
||||
#endif
|
||||
|
||||
#define NLS_ALIAS_DB "/usr/share/nls/nls.alias"
|
||||
@ -77,7 +78,7 @@ _catopen(name, oflag)
|
||||
{
|
||||
char tmppath[PATH_MAX+1];
|
||||
const char *nlspath;
|
||||
const char *lang;
|
||||
const char *lang, *reallang;
|
||||
char *t;
|
||||
const char *s, *u;
|
||||
nl_catd catd;
|
||||
@ -101,8 +102,9 @@ _catopen(name, oflag)
|
||||
if (lang == NULL || strchr(lang, '/'))
|
||||
lang = NLS_DEFAULT_LANG;
|
||||
|
||||
lang = _lookup_alias(NLS_ALIAS_DB, lang, langbuf, sizeof(langbuf),
|
||||
_LOOKUP_CASE_SENSITIVE);
|
||||
reallang = __unaliasname(NLS_ALIAS_DB, lang, langbuf, sizeof(langbuf));
|
||||
if (reallang == NULL)
|
||||
reallang = lang;
|
||||
|
||||
s = nlspath;
|
||||
t = tmppath;
|
||||
@ -111,7 +113,7 @@ _catopen(name, oflag)
|
||||
if (*s == '%') {
|
||||
switch (*(++s)) {
|
||||
case 'L': /* locale */
|
||||
u = lang;
|
||||
u = reallang;
|
||||
while (*u && t < tmppath + PATH_MAX)
|
||||
*t++ = *u++;
|
||||
break;
|
||||
|
@ -1,5 +1,5 @@
|
||||
# from: @(#)Makefile.inc 8.1 (Berkeley) 6/4/93
|
||||
# $NetBSD: Makefile.inc,v 1.67 2007/02/17 09:32:58 wiz Exp $
|
||||
# $NetBSD: Makefile.inc,v 1.68 2009/01/02 00:20:21 tnozaki Exp $
|
||||
|
||||
# string sources
|
||||
.PATH: ${ARCHDIR}/string ${.CURDIR}/string
|
||||
@ -13,8 +13,10 @@ SRCS+= bm.c strcasecmp.c strncasecmp.c strcasestr.c strcoll.c strdup.c \
|
||||
SRCS+= wcscat.c wcschr.c wcscmp.c wcscpy.c wcscspn.c wcslcat.c wcslcpy.c \
|
||||
wcslen.c wcsncat.c wcscasecmp.c wcsdup.c wcsncasecmp.c \
|
||||
wcsncmp.c wcsncpy.c wcspbrk.c wcsrchr.c wcsspn.c wcsstr.c wcstok.c \
|
||||
wcswcs.c wcswidth.c \
|
||||
wmemchr.c wmemcmp.c wmemcpy.c wmemmove.c wmemset.c
|
||||
wcswcs.c wmemchr.c wmemcmp.c wmemcpy.c wmemmove.c wmemset.c
|
||||
CPPFLAGS.wcscmp.c+= -I${LIBCDIR}/locale
|
||||
CPPFLAGS.wcsncmp.c+= -I${LIBCDIR}/locale
|
||||
CPPFLAGS.wmemcmp.c+= -I${LIBCDIR}/locale
|
||||
|
||||
# namespace protection wrappers
|
||||
SRCS+= _strlcat.c _strlcpy.c _strerror_r.c
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: wcscmp.c,v 1.5 2003/08/07 16:43:54 agc Exp $ */
|
||||
/* $NetBSD: wcscmp.c,v 1.6 2009/01/02 00:20:21 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
@ -37,13 +37,13 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)strcmp.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: wcscmp.c,v 1.5 2003/08/07 16:43:54 agc Exp $");
|
||||
__RCSID("$NetBSD: wcscmp.c,v 1.6 2009/01/02 00:20:21 tnozaki Exp $");
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
#include <wchar.h>
|
||||
#include "locale/runetype.h"
|
||||
#include "runetype.h"
|
||||
|
||||
/*
|
||||
* Compare strings.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: wcsncmp.c,v 1.5 2003/08/07 16:43:54 agc Exp $ */
|
||||
/* $NetBSD: wcsncmp.c,v 1.6 2009/01/02 00:20:21 tnozaki Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1989, 1993
|
||||
@ -34,13 +34,13 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)strncmp.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: wcsncmp.c,v 1.5 2003/08/07 16:43:54 agc Exp $");
|
||||
__RCSID("$NetBSD: wcsncmp.c,v 1.6 2009/01/02 00:20:21 tnozaki Exp $");
|
||||
#endif
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
#include <wchar.h>
|
||||
#include "locale/runetype.h"
|
||||
#include "runetype.h"
|
||||
|
||||
int
|
||||
wcsncmp(s1, s2, n)
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: wmemcmp.c,v 1.3 2003/04/06 18:33:23 tshiozak Exp $ */
|
||||
/* $NetBSD: wmemcmp.c,v 1.4 2009/01/02 00:20:21 tnozaki Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c)1999 Citrus Project,
|
||||
@ -30,12 +30,12 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
__RCSID("$NetBSD: wmemcmp.c,v 1.3 2003/04/06 18:33:23 tshiozak Exp $");
|
||||
__RCSID("$NetBSD: wmemcmp.c,v 1.4 2009/01/02 00:20:21 tnozaki Exp $");
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <assert.h>
|
||||
#include <wchar.h>
|
||||
#include "locale/runetype.h"
|
||||
#include "runetype.h"
|
||||
|
||||
int
|
||||
wmemcmp(s1, s2, n)
|
||||
|
@ -1,5 +1,5 @@
|
||||
# $NetBSD: Makefile,v 1.3 2007/09/18 15:12:08 tnozaki Exp $
|
||||
# $NetBSD: Makefile,v 1.4 2009/01/02 00:20:23 tnozaki Exp $
|
||||
|
||||
SUBDIR+= ctype1 ctype2 ctype3 mbtowc wctomb
|
||||
SUBDIR+= ctype1 ctype2 ctype3 wcstod mbtowc wctomb
|
||||
|
||||
.include <bsd.subdir.mk>
|
||||
|
@ -1,10 +1,10 @@
|
||||
# $NetBSD: Makefile,v 1.3 2004/03/19 08:07:28 jmc Exp $
|
||||
# $NetBSD: Makefile,v 1.4 2009/01/02 00:20:23 tnozaki Exp $
|
||||
|
||||
NOMAN= # defined
|
||||
|
||||
PROG= ctype1
|
||||
|
||||
TESTS= en_US.UTF-8 ja_JP.ISO2022-JP ja_JP.SJIS ja_JP.eucJP
|
||||
TESTS= en_US.UTF-8 ja_JP.ISO-2022-JP ja_JP.SJIS ja_JP.eucJP
|
||||
|
||||
INPUTS= ${TESTS:S/$/.in/}
|
||||
EXPECTS= ${TESTS:S/$/.exp/}
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: en_US.UTF-8.exp.uue,v 1.1 2004/03/19 08:07:28 jmc Exp $
|
||||
# $NetBSD: en_US.UTF-8.exp.uue,v 1.2 2009/01/02 00:20:24 tnozaki Exp $
|
||||
|
||||
begin 664 en_US.UTF-8.exp
|
||||
M6P%_75O"@-^_75O@H(#OO[]=6_"0@(#WO[^_75OXB("`@/N_O[^_75O\A("`
|
||||
@ -7,7 +7,7 @@ M,#`U0B`@,'@P,#@P("`P>#`W1D8@(#!X,#`U1"`@,'@P,#5"("`P>#`X,#`@
|
||||
M(#!X1D9&1B`@,'@P,#5$("`P>#`P-4(@(#!X,3`P,#`@(#!X,49&1D9&("`P
|
||||
M>#`P-40@(#!X,#`U0B`@,'@R,#`P,#`@(#!X,T9&1D9&1B`@,'@P,#5$("`P
|
||||
M>#`P-4(@(#!X-#`P,#`P,"`@,'@W1D9&1D9&1B`@,'@P,#5$("`P>#`P,$$@
|
||||
M(`IW:61T:#H*,2`P(#`@,2`Q(#`@,"`Q(#$@,"`P(#$@,2`P(#`@,2`Q(#`@
|
||||
;,"`Q(#$@,"`P(#$@,"`*=V-S=VED=&@],3(*
|
||||
M(`IW:61T:#H*,2`M,2`M,2`Q(#$@+3$@+3$@,2`Q("TQ("TQ(#$@,2`M,2`M
|
||||
H,2`Q(#$@+3$@+3$@,2`Q("TQ("TQ(#$@+3$@"G=C<W=I9'1H/2TQ"B`M
|
||||
`
|
||||
end
|
||||
|
@ -1,11 +1,11 @@
|
||||
# $NetBSD: ja_JP.ISO2022-JP.exp.uue,v 1.1 2004/03/19 08:07:28 jmc Exp $
|
||||
# $NetBSD: ja_JP.ISO-2022-JP.exp.uue,v 1.1 2009/01/02 00:20:24 tnozaki Exp $
|
||||
|
||||
begin 664 ja_JP.ISO2022-JP.exp
|
||||
begin 664 ja_JP.ISO-2022-JP.exp
|
||||
M&R1"(THC22-3)$<D.2$C&RA"86%A81LD0B0B)"0D)B0H)"H;*$(*"C!X-#(P
|
||||
M,#(S-$$@(#!X-#(P,#(S-#D@(#!X-#(P,#(S-3,@(#!X-#(P,#(T-#<@(#!X
|
||||
M-#(P,#(T,SD@(#!X-#(P,#(Q,C,@(#!X,#`V,2`@,'@P,#8Q("`P>#`P-C$@
|
||||
M(#!X,#`V,2`@,'@T,C`P,C0R,B`@,'@T,C`P,C0R-"`@,'@T,C`P,C0R-B`@
|
||||
M,'@T,C`P,C0R."`@,'@T,C`P,C0R02`@,'@P,#!!("`*=VED=&@Z"C(@,B`R
|
||||
H(#(@,B`R(#$@,2`Q(#$@,B`R(#(@,B`R(#`@"G=C<W=I9'1H/3(V"C(@
|
||||
I(#(@,B`R(#$@,2`Q(#$@,B`R(#(@,B`R("TQ(`IW8W-W:61T:#TM,0H@
|
||||
`
|
||||
end
|
@ -1,4 +1,4 @@
|
||||
# $NetBSD: ja_JP.ISO2022-JP.in.uue,v 1.1 2004/03/19 08:07:28 jmc Exp $
|
||||
# $NetBSD: ja_JP.ISO-2022-JP.in.uue,v 1.1 2009/01/02 00:20:24 tnozaki Exp $
|
||||
|
||||
begin 644 ja_JP.ISO2022-JP.in
|
||||
G&R1"(THC22-3)$<D.2$C&RA"86%A81LD0B0B)"0D)B0H)"H;*$(*
|
@ -1,10 +1,10 @@
|
||||
# $NetBSD: ja_JP.SJIS.exp.uue,v 1.1 2004/03/19 08:07:28 jmc Exp $
|
||||
# $NetBSD: ja_JP.SJIS.exp.uue,v 1.2 2009/01/02 00:20:24 tnozaki Exp $
|
||||
|
||||
begin 664 ja_JP.SJIS.exp
|
||||
M@G*":8)H@G*"Q8*W@4)A86%A@J""HH*D@J:"J`H*,'@X,C<R("`P>#@R-CD@
|
||||
M(#!X.#(V."`@,'@X,C<R("`P>#@R0S4@(#!X.#)"-R`@,'@X,30R("`P>#`P
|
||||
M-C$@(#!X,#`V,2`@,'@P,#8Q("`P>#`P-C$@(#!X.#)!,"`@,'@X,D$R("`P
|
||||
M>#@R030@(#!X.#)!-B`@,'@X,D$X("`P>#`P,$$@(`IW:61T:#H*,B`R(#(@
|
||||
I,B`R(#(@,B`Q(#$@,2`Q(#(@,B`R(#(@,B`P(`IW8W-W:61T:#TR.`HR
|
||||
J,B`R(#(@,B`Q(#$@,2`Q(#(@,B`R(#(@,B`M,2`*=V-S=VED=&@]+3$*
|
||||
`
|
||||
end
|
||||
|
@ -1,10 +1,10 @@
|
||||
# $NetBSD: ja_JP.eucJP.exp.uue,v 1.1 2004/03/19 08:07:28 jmc Exp $
|
||||
# $NetBSD: ja_JP.eucJP.exp.uue,v 1.2 2009/01/02 00:20:24 tnozaki Exp $
|
||||
|
||||
begin 664 ja_JP.eucJP.exp
|
||||
MH\6CU:/#I,>DN:&C86%A8:2BI*2DIJ2HI*H*"C!X03-#-2`@,'A!,T0U("`P
|
||||
M>$$S0S,@(#!X031#-R`@,'A!-$(Y("`P>$$Q03,@(#!X,#`V,2`@,'@P,#8Q
|
||||
M("`P>#`P-C$@(#!X,#`V,2`@,'A!-$$R("`P>$$T030@(#!X031!-B`@,'A!
|
||||
M-$$X("`P>$$T04$@(#!X,#`P02`@"G=I9'1H.@HR(#(@,B`R(#(@,B`Q(#$@
|
||||
=,2`Q(#(@,B`R(#(@,B`P(`IW8W-W:61T:#TR-@HR
|
||||
>,2`Q(#(@,B`R(#(@,B`M,2`*=V-S=VED=&@]+3$*
|
||||
`
|
||||
end
|
||||
|
@ -1,10 +1,10 @@
|
||||
# $NetBSD: Makefile,v 1.4 2004/03/19 10:04:54 skrll Exp $
|
||||
# $NetBSD: Makefile,v 1.5 2009/01/02 00:20:24 tnozaki Exp $
|
||||
|
||||
NOMAN= # defined
|
||||
|
||||
PROG= mbrtowc
|
||||
|
||||
TESTS= C en_US.UTF-8 ja_JP.ISO2022-JP2 ja_JP.SJIS ja_JP.eucJP
|
||||
TESTS= C en_US.UTF-8 ja_JP.ISO-2022-JP-2 ja_JP.SJIS ja_JP.eucJP
|
||||
|
||||
INPUTS= ${TESTS:S/$/.in/}
|
||||
OUTPUTS= ${TESTS:S/$/.out/}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user