diff options
author | 2013-06-01 20:02:53 +0000 | |
---|---|---|
committer | 2013-06-01 20:02:53 +0000 | |
commit | aea97d72339db4bb9e3d2dc59e5bd289dc100b4f (patch) | |
tree | b0c4423e41a1d5cc20d261a3c0ba705c2a97efac | |
parent | fix wrong fn name in debug (diff) | |
download | wireguard-openbsd-aea97d72339db4bb9e3d2dc59e5bd289dc100b4f.tar.xz wireguard-openbsd-aea97d72339db4bb9e3d2dc59e5bd289dc100b4f.zip |
Change the naming scheme used for directories in /usr/share/locale to
eliminate redundant copies of LC_CTYPE files.
Instead of names using "language_territory.codeset" permutations, use just
the codeset component to name directories storing LC_CTYPE files. Suggested
by bluhm@ while discussing the idea of using symlinks in /usr/share/locale
like FreeBSD does.
Future locale features which store language and/or territory specific data
can name directories after language or territory names.
-rw-r--r-- | lib/libc/locale/setlocale.c | 10 | ||||
-rw-r--r-- | lib/libc/locale/setrunelocale.c | 16 | ||||
-rw-r--r-- | share/locale/ctype/Makefile | 297 |
3 files changed, 40 insertions, 283 deletions
diff --git a/lib/libc/locale/setlocale.c b/lib/libc/locale/setlocale.c index daba2fec108..3fe0b7345df 100644 --- a/lib/libc/locale/setlocale.c +++ b/lib/libc/locale/setlocale.c @@ -1,4 +1,4 @@ -/* $OpenBSD: setlocale.c,v 1.18 2011/03/15 22:27:48 stsp Exp $ */ +/* $OpenBSD: setlocale.c,v 1.19 2013/06/01 20:02:53 stsp Exp $ */ /* * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. @@ -211,9 +211,6 @@ revert_to_default(int category) static int load_locale_sub(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")) { @@ -225,11 +222,6 @@ load_locale_sub(int category, const char *locname, int isspecial) if (strchr(locname, '/') != NULL) return -1; - len = snprintf(name, sizeof(name), "%s/%s/%s", - _PATH_LOCALE, locname, categories[category]); - if (len < 0 || len >= sizeof(name)) - return -1; - switch (category) { case LC_CTYPE: if (_xpg4_setrunelocale(locname)) diff --git a/lib/libc/locale/setrunelocale.c b/lib/libc/locale/setrunelocale.c index 880eedebb0a..247f6854ee8 100644 --- a/lib/libc/locale/setrunelocale.c +++ b/lib/libc/locale/setrunelocale.c @@ -1,4 +1,4 @@ -/* $OpenBSD: setrunelocale.c,v 1.9 2013/05/30 18:35:55 stsp Exp $ */ +/* $OpenBSD: setrunelocale.c,v 1.10 2013/06/01 20:02:53 stsp Exp $ */ /* $NetBSD: setrunelocale.c,v 1.14 2003/08/07 16:43:07 agc Exp $ */ /*- @@ -171,17 +171,27 @@ found: } int -_xpg4_setrunelocale(const char *encoding) +_xpg4_setrunelocale(const char *locname) { char path[PATH_MAX]; _RuneLocale *rl; int error, len; + const char *dot, *encoding; - if (!strcmp(encoding, "C") || !strcmp(encoding, "POSIX")) { + if (!strcmp(locname, "C") || !strcmp(locname, "POSIX")) { rl = &_DefaultRuneLocale; goto found; } + /* Assumes "language[_territory][.codeset]" locale name. */ + dot = strrchr(locname, '.'); + if (dot == NULL) { + /* No encoding specified. Fall back to ASCII. */ + rl = &_DefaultRuneLocale; + goto found; + } + + encoding = dot + 1; len = snprintf(path, sizeof(path), "%s/%s/LC_CTYPE", _PATH_LOCALE, encoding); if (len < 0 || len >= sizeof(path)) diff --git a/share/locale/ctype/Makefile b/share/locale/ctype/Makefile index 59cb0e0d09a..e141cbb16b7 100644 --- a/share/locale/ctype/Makefile +++ b/share/locale/ctype/Makefile @@ -5,295 +5,50 @@ NOMAN= # defined # pull LOCALEDIR and other declarations .include <bsd.own.mk> -LOCALES += ar_SD.UTF-8 - LOCALESRC_ar_SD.UTF-8 = en_US.UTF-8 +LOCALES += UTF-8 + LOCALESRC_UTF-8 = en_US.UTF-8 -LOCALES += ar_SY.UTF-8 - LOCALESRC_ar_SY.UTF-8 = en_US.UTF-8 +LOCALES += CP1251 + LOCALESRC_CP1251 = bg_BG.CP1251 -LOCALES += bg_BG.CP1251 - LOCALESRC_bg_BG.CP1251 = bg_BG.CP1251 +LOCALES += ISO8859-1 + LOCALESRC_ISO8859-1 = en_US.ISO_8859-1 -LOCALES += ca_ES.ISO8859-1 - LOCALESRC_ca_ES.ISO8859-1 = en_US.ISO_8859-1 +LOCALES += ISO8859-15 + LOCALESRC_ISO8859-15 = en_US.DIS_8859-15 -LOCALES += ca_ES.ISO8859-15 - LOCALESRC_ca_ES.ISO8859-15 = en_US.DIS_8859-15 +LOCALES += ISO8859-2 + LOCALESRC_ISO8859-2 = en_US.ISO_8859-2 -LOCALES += cs_CZ.ISO8859-2 - LOCALESRC_cs_CZ.ISO8859-2 = en_US.ISO_8859-2 +LOCALES += ISO8859-7 + LOCALESRC_ISO8859-7 = el_GR.ISO8859-7 -LOCALES += da_DK.ISO8859-1 - LOCALESRC_da_DK.ISO8859-1 = en_US.ISO_8859-1 +LOCALES += ARMSCII-8 + LOCALESRC_ARMSCII-8 = hy_AM.ARMSCII-8 -LOCALES += da_DK.ISO8859-15 - LOCALESRC_da_DK.ISO8859-15 = en_US.DIS_8859-15 +LOCALES += ISO8859-4 + LOCALESRC_ISO8859-4 = en_US.ISO_8859-4 -LOCALES += de_AT.ISO8859-1 - LOCALESRC_de_AT.ISO8859-1 = en_US.ISO_8859-1 +LOCALES += ISO8859-13 + LOCALESRC_ISO8859-13 = lt_LT.ISO8859-13 -LOCALES += de_AT.ISO8859-15 - LOCALESRC_de_AT.ISO8859-15 = en_US.DIS_8859-15 +LOCALES += CP866 + LOCALESRC_CP866 = ru_RU.CP866 -LOCALES += de_CH.ISO8859-1 - LOCALESRC_de_CH.ISO8859-1 = en_US.ISO_8859-1 +LOCALES += KOI8-R + LOCALESRC_KOI8-R = ru_RU.KOI8-R -LOCALES += de_CH.ISO8859-15 - LOCALESRC_de_CH.ISO8859-15 = en_US.DIS_8859-15 +LOCALES += ISO8859-5 + LOCALESRC_ISO8859-5 = ru_RU.ISO_8859-5 -LOCALES += de_DE.ISO8859-1 - LOCALESRC_de_DE.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += de_DE.ISO8859-15 - LOCALESRC_de_DE.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += de_DE.UTF-8 - LOCALESRC_de_DE.UTF-8 = en_US.UTF-8 - -LOCALES += el_GR.ISO8859-7 - LOCALESRC_el_GR.ISO8859-7 = el_GR.ISO8859-7 - -LOCALES += en_AU.ISO8859-1 - LOCALESRC_en_AU.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += en_AU.ISO8859-15 - LOCALESRC_en_AU.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += en_CA.ISO8859-1 - LOCALESRC_en_CA.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += en_CA.ISO8859-15 - LOCALESRC_en_CA.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += en_GB.ISO8859-1 - LOCALESRC_en_GB.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += en_GB.ISO8859-15 - LOCALESRC_en_GB.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += en_US.ISO8859-1 - LOCALESRC_en_US.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += en_US.ISO8859-15 - LOCALESRC_en_US.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += en_US.UTF-8 - LOCALESRC_en_US.UTF-8 = en_US.UTF-8 - -LOCALES += es_ES.ISO8859-1 - LOCALESRC_es_ES.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += es_ES.ISO8859-15 - LOCALESRC_es_ES.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += es_ES.UTF-8 - LOCALESRC_es_ES.UTF-8 = en_US.UTF-8 - -LOCALES += fa_IR.UTF-8 - LOCALESRC_fa_IR.UTF-8 = en_US.UTF-8 - -LOCALES += fi_FI.ISO8859-1 - LOCALESRC_fi_FI.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += fi_FI.ISO8859-15 - LOCALESRC_fi_FI.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += fr_BE.ISO8859-1 - LOCALESRC_fr_BE.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += fr_BE.ISO8859-15 - LOCALESRC_fr_BE.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += fr_BE.UTF-8 - LOCALESRC_fr_BE.UTF-8 = en_US.UTF-8 - -LOCALES += fr_CA.ISO8859-1 - LOCALESRC_fr_CA.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += fr_CA.ISO8859-15 - LOCALESRC_fr_CA.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += fr_CA.UTF-8 - LOCALESRC_fr_CA.UTF-8 = en_US.UTF-8 - -LOCALES += fr_CH.ISO8859-1 - LOCALESRC_fr_CH.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += fr_CH.ISO8859-15 - LOCALESRC_fr_CH.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += fr_CH.UTF-8 - LOCALESRC_fr_CH.UTF-8 = en_US.UTF-8 - -LOCALES += fr_FR.ISO8859-1 - LOCALESRC_fr_FR.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += fr_FR.ISO8859-15 - LOCALESRC_fr_FR.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += fr_FR.UTF-8 - LOCALESRC_fr_FR.UTF-8 = en_US.UTF-8 - -LOCALES += hr_HR.ISO8859-2 - LOCALESRC_hr_HR.ISO8859-2 = en_US.ISO_8859-2 - -LOCALES += hu_HU.ISO8859-2 - LOCALESRC_hu_HU.ISO8859-2 = en_US.ISO_8859-2 - -LOCALES += hu_HU.UTF-8 - LOCALESRC_hu_HU.UTF-8 = en_US.UTF-8 - -LOCALES += hy_AM.ARMSCII-8 - LOCALESRC_hy_AM.ARMSCII-8 = hy_AM.ARMSCII-8 - -LOCALES += is_IS.ISO8859-1 - LOCALESRC_is_IS.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += is_IS.ISO8859-15 - LOCALESRC_is_IS.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += it_CH.ISO8859-1 - LOCALESRC_it_CH.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += it_CH.ISO8859-15 - LOCALESRC_it_CH.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += it_CH.UTF-8 - LOCALESRC_it_CH.UTF-8 = en_US.UTF-8 - -LOCALES += it_IT.ISO8859-1 - LOCALESRC_it_IT.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += it_IT.ISO8859-15 - LOCALESRC_it_IT.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += it_IT.UTF-8 - LOCALESRC_it_IT.UTF-8 = en_US.UTF-8 - -#LOCALES += ja_JP.ct -# LOCALESRC_ja_JP.ct = ja_JP.CTEXT - -#LOCALES += ja_JP.eucJP -# LOCALESRC_ja_JP.eucJP = ja_JP.eucJP - -#LOCALES += ja_JP.ISO2022-JP -# LOCALESRC_ja_JP.ISO2022-JP = ja_JP.ISO-2022-JP - -#LOCALES += ja_JP.ISO2022-JP2 -# LOCALESRC_ja_JP.ISO2022-JP2 = ja_JP.ISO-2022-JP-2 - -#LOCALES += ja_JP.SJIS -# LOCALESRC_ja_JP.SJIS = ja_JP.SJIS - -LOCALES += ja_JP.UTF-8 - LOCALESRC_ja_JP.UTF-8 = en_US.UTF-8 - -#LOCALES += ko_KR.eucKR -# LOCALESRC_ko_KR.eucKR = ko_KR.eucKR - -LOCALES += ko_KR.UTF-8 - LOCALESRC_ko_KR.UTF-8 = en_US.UTF-8 - -LOCALES += lt_LT.ISO8859-4 - LOCALESRC_lt_LT.ISO8859-4 = en_US.ISO_8859-4 - -LOCALES += lt_LT.ISO8859-13 - LOCALESRC_lt_LT.ISO8859-13 = lt_LT.ISO8859-13 - -LOCALES += nl_BE.ISO8859-1 - LOCALESRC_nl_BE.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += nl_BE.ISO8859-15 - LOCALESRC_nl_BE.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += nl_NL.ISO8859-1 - LOCALESRC_nl_NL.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += nl_NL.ISO8859-15 - LOCALESRC_nl_NL.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += no_NO.ISO8859-1 - LOCALESRC_no_NO.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += no_NO.ISO8859-15 - LOCALESRC_no_NO.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += pl_PL.ISO8859-2 - LOCALESRC_pl_PL.ISO8859-2 = en_US.ISO_8859-2 - -LOCALES += pl_PL.UTF-8 - LOCALESRC_pl_PL.UTF-8 = en_US.UTF-8 - -LOCALES += pt_PT.ISO8859-1 - LOCALESRC_pt_PT.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += pt_PT.UTF-8 - LOCALESRC_pt_PT.UTF-8 = en_US.UTF-8 - -LOCALES += pt_PT.ISO8859-15 - LOCALESRC_pt_PT.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += ro_RO.UTF-8 - LOCALESRC_ro_RO.UTF-8 = en_US.UTF-8 - -LOCALES += ru_RU.CP866 - LOCALESRC_ru_RU.CP866 = ru_RU.CP866 - -LOCALES += ru_RU.KOI8-R - LOCALESRC_ru_RU.KOI8-R = ru_RU.KOI8-R - -LOCALES += ru_RU.ISO8859-5 - LOCALESRC_ru_RU.ISO8859-5 = ru_RU.ISO_8859-5 - -LOCALES += ru_RU.UTF-8 - LOCALESRC_ru_RU.UTF-8 = en_US.UTF-8 - -LOCALES += sk_SK.ISO8859-2 - LOCALESRC_sk_SK.ISO8859-2 = en_US.ISO_8859-2 - -LOCALES += sl_SI.ISO8859-2 - LOCALESRC_sl_SI.ISO8859-2 = en_US.ISO_8859-2 - -LOCALES += sv_SE.ISO8859-1 - LOCALESRC_sv_SE.ISO8859-1 = en_US.ISO_8859-1 - -LOCALES += sv_SE.ISO8859-15 - LOCALESRC_sv_SE.ISO8859-15 = en_US.DIS_8859-15 - -LOCALES += sv_SE.UTF-8 - LOCALESRC_sv_SE.UTF-8 = en_US.UTF-8 - -LOCALES += uk_UA.KOI8-U - LOCALESRC_uk_UA.KOI8-U = uk_UA.KOI8-U - -#LOCALES += zh_CN.eucCN -# LOCALESRC_zh_CN.eucCN = zh_CN.eucCN - -#LOCALES += zh_CN.GB18030 -# LOCALESRC_zh_CN.GB18030 = zh_CN.GB18030 - -LOCALES += zh_CN.UTF-8 - LOCALESRC_zh_CN.UTF-8 = en_US.UTF-8 - -#LOCALES += zh_TW.Big5 -# LOCALESRC_zh_TW.Big5 = zh_TW.BIG5 - -# XXX: EUC-TW is not EUC! -#LOCALES += zh_TW.eucTW -# LOCALESRC_zh_TW.eucTW = zh_TW.eucTW - -LOCALES += zh_TW.UTF-8 - LOCALESRC_zh_TW.UTF-8 = en_US.UTF-8 +LOCALES += KOI8-U + LOCALESRC_KOI8-U = uk_UA.KOI8-U all: ${LOCALES:S/$/.out/g} realall: ${LOCALES:S/$/.out/g} -.for locale in ${LOCALES} -LOCALESRCS+= ${LOCALESRC_${locale}} -.endfor CLEANFILES+= ${LOCALES:S/$/.out/g} -# TODO: more use of symlinks? FILES= ${LOCALES:S/$/.out/g} .for locale in ${LOCALES} FILESDIR_${locale}.out= ${LOCALEDIR}/${locale} |