summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstsp <stsp@openbsd.org>2013-06-01 20:02:53 +0000
committerstsp <stsp@openbsd.org>2013-06-01 20:02:53 +0000
commitaea97d72339db4bb9e3d2dc59e5bd289dc100b4f (patch)
treeb0c4423e41a1d5cc20d261a3c0ba705c2a97efac
parentfix wrong fn name in debug (diff)
downloadwireguard-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.c10
-rw-r--r--lib/libc/locale/setrunelocale.c16
-rw-r--r--share/locale/ctype/Makefile297
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}