Compare commits
45 Commits
Author | SHA1 | Date |
---|---|---|
Florian Weimer | 1a48e2b943 | |
Florian Weimer | d015587991 | |
Florian Weimer | d0db0e9cf6 | |
Florian Weimer | 957a5db45d | |
Florian Weimer | 14a54ab09c | |
Carlos O'Donell | d2384bac2e | |
Florian Weimer | d723b49e72 | |
Florian Weimer | 30163b24c8 | |
Florian Weimer | 1bdba01854 | |
Florian Weimer | cc9621cd19 | |
Florian Weimer | 48fa0d009d | |
Florian Weimer | fb3b1025ce | |
Florian Weimer | cf31c32499 | |
Florian Weimer | e7871dc745 | |
Florian Weimer | 9665a7aade | |
Florian Weimer | e44ca4b8ae | |
Florian Weimer | 3a28610eaa | |
Florian Weimer | 39c94bf6b7 | |
Florian Weimer | 658a3be009 | |
Florian Weimer | 3fb5edda8e | |
Florian Weimer | 3a772d0fd4 | |
Florian Weimer | a6060e7baa | |
Florian Weimer | f929de27b9 | |
Florian Weimer | 8d21d21b5d | |
Florian Weimer | 4036357674 | |
Florian Weimer | 77db5a02e7 | |
Florian Weimer | 8ab27a7bef | |
Florian Weimer | 769d807ffc | |
Florian Weimer | 57a4f74f4b | |
Florian Weimer | 608037578b | |
Florian Weimer | 358b272a18 | |
Florian Weimer | 96607f5434 | |
Florian Weimer | 7f3ef159d0 | |
Florian Weimer | 3528d1b928 | |
Florian Weimer | 61dc9c8b9d | |
Florian Weimer | fb93b16951 | |
Florian Weimer | 512e08766b | |
Florian Weimer | 9512708e42 | |
Florian Weimer | 19400997dd | |
Florian Weimer | d43610c362 | |
Florian Weimer | cb37f54dd5 | |
Florian Weimer | 157a6383c2 | |
Florian Weimer | 9dc918bfda | |
Florian Weimer | 8ce0b90ecb | |
Florian Weimer | b8a2275781 |
|
@ -0,0 +1,6 @@
|
|||
# Release tarballs.
|
||||
/glibc-*.tar.[gx]z
|
||||
# Generated (source) RPMs.
|
||||
/*.rpm
|
||||
# Expanded source trees.
|
||||
/glibc-*/
|
|
@ -0,0 +1,25 @@
|
|||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed Jul 4 16:16:57 2018 +0200
|
||||
|
||||
Makeconfig (ASFLAGS): Always append required assembler flags.
|
||||
|
||||
Submitted upstream here:
|
||||
|
||||
https://sourceware.org/ml/libc-alpha/2018-07/msg00077.html
|
||||
|
||||
Otherwise, we lose essential flags such as -Wa,--noexecstack due to
|
||||
the way += works in make due to the ASFLAGS command line override.
|
||||
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index b0b27f0113ac18b8..92e76d6200bbcd5b 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -1047,7 +1047,7 @@ endif
|
||||
ifndef ASFLAGS
|
||||
ASFLAGS := $(filter -g% -fdebug-prefix-map=%,$(CFLAGS))
|
||||
endif
|
||||
-ASFLAGS += -Werror=undef $(ASFLAGS-config) $(asflags-cpu)
|
||||
+override ASFLAGS += -Werror=undef $(ASFLAGS-config) $(asflags-cpu)
|
||||
|
||||
ifndef BUILD_CC
|
||||
BUILD_CC = $(CC)
|
|
@ -0,0 +1,24 @@
|
|||
commit 16e349c550942d274d3193ccedaa88855e3ac690
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Fri Mar 2 11:29:24 2018 +0100
|
||||
|
||||
Remove --quiet argument when installing locales
|
||||
|
||||
Using this argument hides problems. I would like to see when something fails.
|
||||
|
||||
* localedata/Makefile: Remove --quiet argument when
|
||||
installing locales
|
||||
|
||||
diff --git a/localedata/Makefile b/localedata/Makefile
|
||||
index c9a973ee0704501b..32e0fd337612862b 100644
|
||||
--- a/localedata/Makefile
|
||||
+++ b/localedata/Makefile
|
||||
@@ -212,7 +212,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-locales-dir
|
||||
@locale=`echo $@ | sed -e 's/^install-//'`; \
|
||||
charset=`echo $$locale | sed -e 's,.*/,,'`; \
|
||||
locale=`echo $$locale | sed -e 's,/[^/]*,,'`; \
|
||||
- flags="--quiet -c"; \
|
||||
+ flags="-c"; \
|
||||
if [ "$$charset" = 'SHIFT_JIS' ] \
|
||||
|| [ "$$charset" = 'SHIFT_JISX0213' ]; then \
|
||||
flags="$$flags --no-warnings=ascii"; \
|
|
@ -0,0 +1,131 @@
|
|||
commit 61e613fb97aa619ae4fabac3f106d5fffe15eacb
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Wed Dec 13 14:39:54 2017 +0100
|
||||
|
||||
Collation order of @-. and space has changed in new iso14651_t1_common file, adapt test files
|
||||
|
||||
* localedata/da_DK.ISO-8859-1.in: In the new iso14651_t1_common file
|
||||
downloaded from ISO, the collation order of @-. and space has changed.
|
||||
Therefore, this test file needed to be adapted.
|
||||
* localedata/fr_CA.UTF-8.in: Likewise.
|
||||
* localedata/fr_FR.UTF-8.in: Likewise.
|
||||
* localedata/uk_UA.UTF-8.in: Likewise.
|
||||
|
||||
diff --git a/localedata/da_DK.ISO-8859-1.in b/localedata/da_DK.ISO-8859-1.in
|
||||
index e9d2620d5da8a013..9a0e7bc04d49dad2 100644
|
||||
--- a/localedata/da_DK.ISO-8859-1.in
|
||||
+++ b/localedata/da_DK.ISO-8859-1.in
|
||||
@@ -2,8 +2,8 @@ A
|
||||
ANDRE
|
||||
ANDRÉ
|
||||
ANDREAS
|
||||
-AS
|
||||
A/S
|
||||
+AS
|
||||
CA
|
||||
ÇA
|
||||
CB
|
||||
@@ -12,8 +12,8 @@ DA
|
||||
ÐA
|
||||
DB
|
||||
ÐC
|
||||
-DSB
|
||||
D.S.B.
|
||||
+DSB
|
||||
DSC
|
||||
EKSTRA-ARBEJDE
|
||||
EKSTRABUD
|
||||
diff --git a/localedata/fr_CA.UTF-8.in b/localedata/fr_CA.UTF-8.in
|
||||
index 1c05d69f5a4e0068..c98a8e7fb8eda079 100644
|
||||
--- a/localedata/fr_CA.UTF-8.in
|
||||
+++ b/localedata/fr_CA.UTF-8.in
|
||||
@@ -4,8 +4,8 @@
|
||||
Aalborg
|
||||
aide
|
||||
aïeul
|
||||
-air
|
||||
@@@air
|
||||
+air
|
||||
air@@@
|
||||
Ã…lborg
|
||||
août
|
||||
@@ -22,10 +22,10 @@ casanier
|
||||
cølibat
|
||||
colon
|
||||
côlon
|
||||
-COOP
|
||||
CO-OP
|
||||
-coop
|
||||
+COOP
|
||||
co-op
|
||||
+coop
|
||||
Copenhagen
|
||||
COTE
|
||||
cote
|
||||
@@ -58,8 +58,9 @@ lésé
|
||||
L'Haÿ-les-Roses
|
||||
MÂCON
|
||||
maçon
|
||||
-McArthur
|
||||
Mc Arthur
|
||||
+McArthur
|
||||
+Mc Arthurb
|
||||
Mc Mahon
|
||||
MODÈLE
|
||||
modelé
|
||||
diff --git a/localedata/fr_FR.UTF-8.in b/localedata/fr_FR.UTF-8.in
|
||||
index 070eb4dc0dce815c..f719dc2210052c28 100644
|
||||
--- a/localedata/fr_FR.UTF-8.in
|
||||
+++ b/localedata/fr_FR.UTF-8.in
|
||||
@@ -4,8 +4,8 @@
|
||||
Aalborg
|
||||
aide
|
||||
aïeul
|
||||
-air
|
||||
@@@air
|
||||
+air
|
||||
air@@@
|
||||
Ã…lborg
|
||||
août
|
||||
@@ -22,10 +22,10 @@ casanier
|
||||
cølibat
|
||||
colon
|
||||
côlon
|
||||
-coop
|
||||
co-op
|
||||
-COOP
|
||||
+coop
|
||||
CO-OP
|
||||
+COOP
|
||||
Copenhagen
|
||||
cote
|
||||
COTE
|
||||
@@ -58,8 +58,9 @@ lèse
|
||||
L'Haÿ-les-Roses
|
||||
maçon
|
||||
MÂCON
|
||||
-McArthur
|
||||
Mc Arthur
|
||||
+McArthur
|
||||
+Mc Arthurb
|
||||
Mc Mahon
|
||||
modelé
|
||||
MODÈLE
|
||||
diff --git a/localedata/uk_UA.UTF-8.in b/localedata/uk_UA.UTF-8.in
|
||||
index ff4d284d61bfd139..14ee847d9c3c3e5a 100644
|
||||
--- a/localedata/uk_UA.UTF-8.in
|
||||
+++ b/localedata/uk_UA.UTF-8.in
|
||||
@@ -10,11 +10,11 @@
|
||||
ґрати
|
||||
ебонітовий
|
||||
екÑ<C2BA>порт
|
||||
-екÑ<C2BA>поÑ<C2BE>ол
|
||||
екÑ<C2BA>-поÑ<C2BE>ол
|
||||
+екÑ<C2BA>поÑ<C2BE>ол
|
||||
екÑ<C2BA>поцентр
|
||||
-екÑ<C2BA>працівник
|
||||
екÑ<C2BA>-працівник
|
||||
+екÑ<C2BA>працівник
|
||||
елаÑ<C2B0>тичніÑ<E28093>Ñ‚ÑŒ
|
||||
електрика
|
||||
ельбор
|
|
@ -0,0 +1,43 @@
|
|||
commit ffa8106c727607fb365f2b93649fe3ea182dffe4
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Fri Dec 15 07:19:45 2017 +0100
|
||||
|
||||
Fix posix/bug-regex5.c test case, adapt to iso14651_t1_common upate
|
||||
|
||||
This test case tests how many collating elements are defined in
|
||||
da_DK.ISO-8859-1 locale. The da_DK locale source defines 4:
|
||||
|
||||
collating-element <A-A> from "<U0041><U0041>"
|
||||
collating-element <A-a> from "<U0041><U0061>"
|
||||
collating-element <a-A> from "<U0061><U0041>"
|
||||
collating-element <a-a> from "<U0061><U0061>"
|
||||
|
||||
The new iso14651_t1_common file defines more collating elements, two
|
||||
of them are in the ISO-8859-1 range:
|
||||
|
||||
collating-element <U004C_00B7> from "<U004C><U00B7>" % decomposition of LATIN CAPITAL LETTER L WITH MIDDLE DOT
|
||||
collating-element <U006C_00B7> from "<U006C><U00B7>" % decomposition of LATIN SMALL LETTER L WITH MIDDLE DOT
|
||||
|
||||
So the total count is now 6 instead of 4.
|
||||
|
||||
* posix/bug-regex5.c: Fix test case because with the new
|
||||
iso14651_t1_common file, the da_DK locale now has 6 collating elements
|
||||
in the ISO-8859-1 range instead of 4 with the old iso14651_t1_common
|
||||
file.
|
||||
|
||||
diff --git a/posix/bug-regex5.c b/posix/bug-regex5.c
|
||||
index fd18b19df4e75ee1..573da231e3a4de36 100644
|
||||
--- a/posix/bug-regex5.c
|
||||
+++ b/posix/bug-regex5.c
|
||||
@@ -53,9 +53,9 @@ main (void)
|
||||
printf ("No collating element!\n");
|
||||
return 1;
|
||||
}
|
||||
- else if (found != 4)
|
||||
+ else if (found != 6)
|
||||
{
|
||||
- printf ("expected 4 collating elements, found %d\n", found);
|
||||
+ printf ("expected 6 collating elements, found %d\n", found);
|
||||
return 1;
|
||||
}
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
commit cc5351f2c0502826f8b4143f3646d44e334ff7b8
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Tue Jan 23 17:29:36 2018 +0100
|
||||
|
||||
Fix test cases tst-fnmatch and tst-regexloc for the new iso14651_t1_common file.
|
||||
|
||||
See:
|
||||
|
||||
http://pubs.opengroup.org/onlinepubs/7908799/xbd/re.html
|
||||
|
||||
> A range expression represents the set of collating elements that fall
|
||||
> between two elements in the current collation sequence,
|
||||
> inclusively. It is expressed as the starting point and the ending
|
||||
> point separated by a hyphen (-).
|
||||
>
|
||||
> Range expressions must not be used in portable applications because
|
||||
> their behaviour is dependent on the collating sequence. Ranges will be
|
||||
> treated according to the current collating sequence, and include such
|
||||
> characters that fall within the range based on that collating
|
||||
> sequence, regardless of character values. This, however, means that
|
||||
> the interpretation will differ depending on collating sequence. If,
|
||||
> for instance, one collating sequence defines ä as a variant of a,
|
||||
> while another defines it as a letter following z, then the expression
|
||||
> [ä-z] is valid in the first language and invalid in the second.
|
||||
|
||||
Therefore, using [a-z] does not make much sense except in the C/POSIX locale.
|
||||
The new iso14651_t1_common lists upper case and lower case Latin characters
|
||||
in a different order than the old one which causes surprising results
|
||||
for example in the de_DE locale: [a-z] now includes A because A comes
|
||||
after a in iso14651_t1_common but does not include Z because that comes
|
||||
after z in iso14651_t1_common.
|
||||
|
||||
* posix/tst-fnmatch.input: Fix results for range expressions
|
||||
for non C locales.
|
||||
* posix/tst-regexloc.c: Do not use a range expression for
|
||||
de_DE.ISO-8859-1 locale.
|
||||
|
||||
diff --git a/posix/tst-fnmatch.input b/posix/tst-fnmatch.input
|
||||
index 88b3f739a59333d5..589fb2a94038dbe3 100644
|
||||
--- a/posix/tst-fnmatch.input
|
||||
+++ b/posix/tst-fnmatch.input
|
||||
@@ -418,21 +418,47 @@ C "-" "[Z-\\]]" NOMATCH
|
||||
# Following are tests outside the scope of IEEE 2003.2 since they are using
|
||||
# locales other than the C locale. The main focus of the tests is on the
|
||||
# handling of ranges and the recognition of character (vs bytes).
|
||||
+#
|
||||
+# See:
|
||||
+#
|
||||
+# http://pubs.opengroup.org/onlinepubs/7908799/xbd/re.html
|
||||
+#
|
||||
+# > A range expression represents the set of collating elements that fall
|
||||
+# > between two elements in the current collation sequence,
|
||||
+# > inclusively. It is expressed as the starting point and the ending
|
||||
+# > point separated by a hyphen (-).
|
||||
+# >
|
||||
+# > Range expressions must not be used in portable applications because
|
||||
+# > their behaviour is dependent on the collating sequence. Ranges will be
|
||||
+# > treated according to the current collating sequence, and include such
|
||||
+# > characters that fall within the range based on that collating
|
||||
+# > sequence, regardless of character values. This, however, means that
|
||||
+# > the interpretation will differ depending on collating sequence. If,
|
||||
+# > for instance, one collating sequence defines ä as a variant of a,
|
||||
+# > while another defines it as a letter following z, then the expression
|
||||
+# > [ä-z] is valid in the first language and invalid in the second.
|
||||
+#
|
||||
+# Therefore, using [a-z] does not make much sense except in the C/POSIX locale.
|
||||
+# The new iso14651_t1_common lists upper case and lower case Latin characters
|
||||
+# in a different order than the old one which causes surprising results
|
||||
+# for example in the de_DE locale: [a-z] now includes A because A comes
|
||||
+# after a in iso14651_t1_common but does not include Z because that comes
|
||||
+# after z in iso14651_t1_common.
|
||||
de_DE.ISO-8859-1 "a" "[a-z]" 0
|
||||
de_DE.ISO-8859-1 "z" "[a-z]" 0
|
||||
de_DE.ISO-8859-1 "ä" "[a-z]" 0
|
||||
de_DE.ISO-8859-1 "ö" "[a-z]" 0
|
||||
de_DE.ISO-8859-1 "ü" "[a-z]" 0
|
||||
-de_DE.ISO-8859-1 "A" "[a-z]" NOMATCH
|
||||
+de_DE.ISO-8859-1 "A" "[a-z]" 0 # surprising but correct!
|
||||
de_DE.ISO-8859-1 "Z" "[a-z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "Ä" "[a-z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "Ö" "[a-z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "Ü" "[a-z]" NOMATCH
|
||||
+de_DE.ISO-8859-1 "Ä" "[a-z]" 0 # surprising but correct!
|
||||
+de_DE.ISO-8859-1 "Ö" "[a-z]" 0 # surprising but correct!
|
||||
+de_DE.ISO-8859-1 "Ü" "[a-z]" 0 # surprising but correct!
|
||||
de_DE.ISO-8859-1 "a" "[A-Z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "z" "[A-Z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "ä" "[A-Z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "ö" "[A-Z]" NOMATCH
|
||||
-de_DE.ISO-8859-1 "ü" "[A-Z]" NOMATCH
|
||||
+de_DE.ISO-8859-1 "z" "[A-Z]" 0 # surprising but correct!
|
||||
+de_DE.ISO-8859-1 "ä" "[A-Z]" 0 # surprising but correct!
|
||||
+de_DE.ISO-8859-1 "ö" "[A-Z]" 0 # surprising but correct!
|
||||
+de_DE.ISO-8859-1 "ü" "[A-Z]" 0 # surprising but correct!
|
||||
de_DE.ISO-8859-1 "A" "[A-Z]" 0
|
||||
de_DE.ISO-8859-1 "Z" "[A-Z]" 0
|
||||
de_DE.ISO-8859-1 "Ä" "[A-Z]" 0
|
||||
@@ -515,16 +541,16 @@ de_DE.UTF-8 "z" "[a-z]" 0
|
||||
de_DE.UTF-8 "ä" "[a-z]" 0
|
||||
de_DE.UTF-8 "ö" "[a-z]" 0
|
||||
de_DE.UTF-8 "ü" "[a-z]" 0
|
||||
-de_DE.UTF-8 "A" "[a-z]" NOMATCH
|
||||
+de_DE.UTF-8 "A" "[a-z]" 0 # surprising but correct!
|
||||
de_DE.UTF-8 "Z" "[a-z]" NOMATCH
|
||||
-de_DE.UTF-8 "Ä" "[a-z]" NOMATCH
|
||||
-de_DE.UTF-8 "Ö" "[a-z]" NOMATCH
|
||||
-de_DE.UTF-8 "Ü" "[a-z]" NOMATCH
|
||||
+de_DE.UTF-8 "Ä" "[a-z]" 0 # surprising but correct!
|
||||
+de_DE.UTF-8 "Ö" "[a-z]" 0 # surprising but correct!
|
||||
+de_DE.UTF-8 "Ü" "[a-z]" 0 # surprising but correct!
|
||||
de_DE.UTF-8 "a" "[A-Z]" NOMATCH
|
||||
-de_DE.UTF-8 "z" "[A-Z]" NOMATCH
|
||||
-de_DE.UTF-8 "ä" "[A-Z]" NOMATCH
|
||||
-de_DE.UTF-8 "ö" "[A-Z]" NOMATCH
|
||||
-de_DE.UTF-8 "ü" "[A-Z]" NOMATCH
|
||||
+de_DE.UTF-8 "z" "[A-Z]" 0 # surprising but correct!
|
||||
+de_DE.UTF-8 "ä" "[A-Z]" 0 # surprising but correct!
|
||||
+de_DE.UTF-8 "ö" "[A-Z]" 0 # surprising but correct!
|
||||
+de_DE.UTF-8 "ü" "[A-Z]" 0 # surprising but correct!
|
||||
de_DE.UTF-8 "A" "[A-Z]" 0
|
||||
de_DE.UTF-8 "Z" "[A-Z]" 0
|
||||
de_DE.UTF-8 "Ä" "[A-Z]" 0
|
||||
diff --git a/posix/tst-regexloc.c b/posix/tst-regexloc.c
|
||||
index 60235b4d3b3e396e..7fbc496d0ce5117f 100644
|
||||
--- a/posix/tst-regexloc.c
|
||||
+++ b/posix/tst-regexloc.c
|
||||
@@ -29,8 +29,8 @@ do_test (void)
|
||||
|
||||
if (setlocale (LC_ALL, "de_DE.ISO-8859-1") == NULL)
|
||||
puts ("cannot set locale");
|
||||
- else if (regcomp (&re, "[a-f]*", 0) != REG_NOERROR)
|
||||
- puts ("cannot compile expression \"[a-f]*\"");
|
||||
+ else if (regcomp (&re, "[abcdef]*", 0) != REG_NOERROR)
|
||||
+ puts ("cannot compile expression \"[abcdef]*\"");
|
||||
else if (regexec (&re, "abcdefCDEF", 1, mat, 0) == REG_NOMATCH)
|
||||
puts ("no match");
|
||||
else
|
|
@ -0,0 +1,48 @@
|
|||
commit 242596394db9dad6147bb2b7bcb53d8a7610e1d0
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Mon Jan 1 15:33:50 2018 +0100
|
||||
|
||||
Improve gen-locales.mk and gen-locale.sh to make test files with @ options work
|
||||
|
||||
With out this, adding collation test files like localedata/gez_ER.UTF-8@abegede.in
|
||||
does not work for locales which contain @ modifiers.
|
||||
|
||||
* gen-locales.mk: Make test files which contain @ modifiers in their
|
||||
name work.
|
||||
* localedata/gen-locale.sh: Likewise.
|
||||
|
||||
diff --git a/gen-locales.mk b/gen-locales.mk
|
||||
index fd88b5bef16c0fa5..9c523d2a0585216c 100644
|
||||
--- a/gen-locales.mk
|
||||
+++ b/gen-locales.mk
|
||||
@@ -1,8 +1,8 @@
|
||||
# defines target $(gen-locales) that generates the locales given in $(LOCALES)
|
||||
|
||||
-LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^ ]*/\1/g')
|
||||
+LOCALE_SRCS := $(shell echo "$(LOCALES)"|sed 's/\([^ .]*\)[^@ ]*\(@[^ ]*\)\?/\1\2/g')
|
||||
CHARMAPS := $(shell echo "$(LOCALES)" | \
|
||||
- sed -e 's/[^ .]*[.]\([^ ]*\)/\1/g' -e s/SJIS/SHIFT_JIS/g)
|
||||
+ sed -e 's/[^ .]*[.]\([^@ ]*\)\(@[^@ ]*\)*/\1/g' -e s/SJIS/SHIFT_JIS/g)
|
||||
CTYPE_FILES = $(addsuffix /LC_CTYPE,$(LOCALES))
|
||||
gen-locales := $(addprefix $(common-objpfx)localedata/,$(CTYPE_FILES))
|
||||
|
||||
diff --git a/localedata/gen-locale.sh b/localedata/gen-locale.sh
|
||||
index 1bba5fee92457647..b91e42af13cda1f6 100644
|
||||
--- a/localedata/gen-locale.sh
|
||||
+++ b/localedata/gen-locale.sh
|
||||
@@ -49,7 +49,8 @@ generate_locale ()
|
||||
|
||||
locfile=`echo $locfile|sed 's|.*/\([^/]*/LC_CTYPE\)|\1|'`
|
||||
locale=`echo $locfile|sed 's|\([^.]*\)[.].*/LC_CTYPE|\1|'`
|
||||
-charmap=`echo $locfile|sed 's|[^.]*[.]\(.*\)/LC_CTYPE|\1|'`
|
||||
+charmap=`echo $locfile|sed 's|[^.]*[.]\([^@ ]*\)\(@[^ ]*\)\?/LC_CTYPE|\1|'`
|
||||
+modifier=`echo $locfile|sed 's|[^.]*[.]\([^@ ]*\)\(@[^ ]*\)\?/LC_CTYPE|\2|'`
|
||||
|
||||
echo "Generating locale $locale.$charmap: this might take a while..."
|
||||
|
||||
@@ -73,4 +74,4 @@ if [ "$charmap_real" = 'SHIFT_JIS' ] \
|
||||
flags="$flags --no-warnings=ascii"
|
||||
fi
|
||||
|
||||
-generate_locale $charmap_real $locale $locale.$charmap "$flags"
|
||||
+generate_locale $charmap_real $locale$modifier $locale.$charmap$modifier "$flags"
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,56 @@
|
|||
commit 06061c30d615b2862ac360f11384092c92022ea7
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Tue Jan 30 18:04:31 2018 +0100
|
||||
|
||||
Necessary changes after updating the iso14651_t1_common file
|
||||
|
||||
* localedata/locales/iso14651_t1_common: Necessary changes
|
||||
to make the file downloaded from ISO usable by glibc.
|
||||
|
||||
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
|
||||
index 989f3322c0ce99be..9546a785fc44b671 100644
|
||||
--- a/localedata/locales/iso14651_t1_common
|
||||
+++ b/localedata/locales/iso14651_t1_common
|
||||
@@ -1,7 +1,14 @@
|
||||
-% escape_char /
|
||||
-% comment_char %
|
||||
+escape_char /
|
||||
+comment_char %
|
||||
|
||||
-% LC_COLLATE
|
||||
+% This file is part of the GNU C Library and contains locale data.
|
||||
+% The Free Software Foundation does not claim any copyright interest
|
||||
+% in the locale data contained in this file. The foregoing does not
|
||||
+% affect the license of the GNU C Library as a whole. It does not
|
||||
+% exempt you from the conditions of the license if your use would
|
||||
+% otherwise be governed by that license.
|
||||
+
|
||||
+LC_COLLATE
|
||||
|
||||
% Decomment the lines above to create an
|
||||
% LC_COLLATE definition in the style of ISO/IEC TR 14652:2004.
|
||||
@@ -21867,10 +21874,11 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
|
||||
<SFFFF> % Largest primary weight
|
||||
|
||||
-
|
||||
-% order_start forward;forward;forward;forward,position
|
||||
-
|
||||
-% order_start forward;backward;forward;forward,position
|
||||
+ifdef DIACRIT_BACKWARD
|
||||
+order_start forward;backward;forward;forward,position
|
||||
+else
|
||||
+order_start forward;forward;forward;forward,position
|
||||
+endif
|
||||
|
||||
% Decomment the first order_start line to specify directions for each level.
|
||||
% To tailor for French accent handling, instead decomment the second
|
||||
@@ -52612,7 +52620,7 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
|
||||
order_end
|
||||
|
||||
-% END LC_COLLATE
|
||||
+END LC_COLLATE
|
||||
|
||||
% Decomment the line above to create a 14652-style
|
||||
% LC_COLLATE definition.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,342 @@
|
|||
commit 3e7089bf28ed1fd77e644bb3ce7405aff7847e61
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Mon Dec 11 20:00:24 2017 +0100
|
||||
|
||||
Add convenience symbols like <AFTER-A>, <BEFORE-A> to iso14651_t1_common
|
||||
|
||||
* localedata/locales/iso14651_t1_common: Add some convenient collation
|
||||
symbols like <AFTER-A>, <BEFORE-A> to make tailoring easier using
|
||||
rules similar to those in CLDR.
|
||||
|
||||
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
|
||||
index c976136e1c26afc2..443e689da0ee03dc 100644
|
||||
--- a/localedata/locales/iso14651_t1_common
|
||||
+++ b/localedata/locales/iso14651_t1_common
|
||||
@@ -339,6 +339,68 @@ collating-symbol <S1F000>..<S1F9FF> % Symbols from SMP
|
||||
|
||||
collating-symbol <SFFFF> % Guaranteed largest symbol value. Keep at end of this list
|
||||
|
||||
+% Convenience first level collation symbols added here
|
||||
+% to make tailoring easier using rules similar to those in CLDR.
|
||||
+
|
||||
+collating-symbol <BEFORE-A>
|
||||
+collating-symbol <AFTER-A>
|
||||
+collating-symbol <BEFORE-B>
|
||||
+collating-symbol <AFTER-B>
|
||||
+collating-symbol <BEFORE-C>
|
||||
+collating-symbol <AFTER-C>
|
||||
+collating-symbol <BEFORE-D>
|
||||
+collating-symbol <AFTER-D>
|
||||
+collating-symbol <BEFORE-E>
|
||||
+collating-symbol <AFTER-E>
|
||||
+collating-symbol <BEFORE-F>
|
||||
+collating-symbol <AFTER-F>
|
||||
+collating-symbol <BEFORE-G>
|
||||
+collating-symbol <AFTER-G>
|
||||
+collating-symbol <BEFORE-H>
|
||||
+collating-symbol <AFTER-H>
|
||||
+collating-symbol <BEFORE-I>
|
||||
+collating-symbol <AFTER-I>
|
||||
+collating-symbol <BEFORE-J>
|
||||
+collating-symbol <AFTER-J>
|
||||
+collating-symbol <BEFORE-K>
|
||||
+collating-symbol <AFTER-K>
|
||||
+collating-symbol <BEFORE-L>
|
||||
+collating-symbol <AFTER-L>
|
||||
+collating-symbol <BEFORE-M>
|
||||
+collating-symbol <AFTER-M>
|
||||
+collating-symbol <BEFORE-N>
|
||||
+collating-symbol <AFTER-N>
|
||||
+collating-symbol <BEFORE-O>
|
||||
+collating-symbol <AFTER-O>
|
||||
+collating-symbol <BEFORE-P>
|
||||
+collating-symbol <AFTER-P>
|
||||
+collating-symbol <BEFORE-Q>
|
||||
+collating-symbol <AFTER-Q>
|
||||
+collating-symbol <BEFORE-R>
|
||||
+collating-symbol <AFTER-R>
|
||||
+collating-symbol <BEFORE-S>
|
||||
+collating-symbol <AFTER-S>
|
||||
+collating-symbol <BEFORE-T>
|
||||
+collating-symbol <AFTER-T>
|
||||
+collating-symbol <BEFORE-U>
|
||||
+collating-symbol <AFTER-U>
|
||||
+collating-symbol <BEFORE-V>
|
||||
+collating-symbol <AFTER-V>
|
||||
+collating-symbol <BEFORE-W>
|
||||
+collating-symbol <AFTER-W>
|
||||
+collating-symbol <BEFORE-X>
|
||||
+collating-symbol <AFTER-X>
|
||||
+collating-symbol <BEFORE-Y>
|
||||
+collating-symbol <AFTER-Y>
|
||||
+collating-symbol <BEFORE-Z>
|
||||
+collating-symbol <AFTER-Z>
|
||||
+collating-symbol <BEFORE-THORN>
|
||||
+collating-symbol <AFTER-THORN>
|
||||
+collating-symbol <BEFORE-EZH>
|
||||
+collating-symbol <AFTER-EZH>
|
||||
+collating-symbol <BEFORE-LATIN>
|
||||
+collating-symbol <AFTER-LATIN>
|
||||
+
|
||||
% Special fourth-level collating symbol
|
||||
|
||||
collating-symbol <PLAIN> % Maximal level 4 weight
|
||||
@@ -8225,6 +8287,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0037> % DIGIT SEVEN
|
||||
<S0038> % DIGIT EIGHT
|
||||
<S0039> % DIGIT NINE
|
||||
+<BEFORE-LATIN>
|
||||
+<BEFORE-A>
|
||||
<S0061> % LATIN SMALL LETTER A
|
||||
<S1D00> % LATIN LETTER SMALL CAPITAL A
|
||||
<S2C65> % LATIN SMALL LETTER A WITH STROKE
|
||||
@@ -8238,6 +8302,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S1D90> % LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK
|
||||
<S0252> % LATIN SMALL LETTER TURNED ALPHA
|
||||
<SAB64> % LATIN SMALL LETTER INVERTED ALPHA
|
||||
+<AFTER-A>
|
||||
+<BEFORE-B>
|
||||
<S0062> % LATIN SMALL LETTER B
|
||||
<S0299> % LATIN LETTER SMALL CAPITAL B
|
||||
<S0180> % LATIN SMALL LETTER B WITH STROKE
|
||||
@@ -8249,6 +8315,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0253> % LATIN SMALL LETTER B WITH HOOK
|
||||
<S0183> % LATIN SMALL LETTER B WITH TOPBAR
|
||||
<SA7B5> % LATIN SMALL LETTER BETA
|
||||
+<AFTER-B>
|
||||
+<BEFORE-C>
|
||||
<S0063> % LATIN SMALL LETTER C
|
||||
<S1D04> % LATIN LETTER SMALL CAPITAL C
|
||||
<S023C> % LATIN SMALL LETTER C WITH STROKE
|
||||
@@ -8258,6 +8326,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0255> % LATIN SMALL LETTER C WITH CURL
|
||||
<S2184> % LATIN SMALL LETTER REVERSED C
|
||||
<SA73F> % LATIN SMALL LETTER REVERSED C WITH DOT
|
||||
+<AFTER-C>
|
||||
+<BEFORE-D>
|
||||
<S0064> % LATIN SMALL LETTER D
|
||||
<S1D05> % LATIN LETTER SMALL CAPITAL D
|
||||
<S1D06> % LATIN LETTER SMALL CAPITAL ETH
|
||||
@@ -8270,6 +8340,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0221> % LATIN SMALL LETTER D WITH CURL
|
||||
<SA771> % LATIN SMALL LETTER DUM
|
||||
<S1E9F> % LATIN SMALL LETTER DELTA
|
||||
+<AFTER-D>
|
||||
+<BEFORE-E>
|
||||
<S0065> % LATIN SMALL LETTER E
|
||||
<S1D07> % LATIN LETTER SMALL CAPITAL E
|
||||
<SAB32> % LATIN SMALL LETTER BLACKLETTER E
|
||||
@@ -8293,6 +8365,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S025E> % LATIN SMALL LETTER CLOSED REVERSED OPEN E
|
||||
<S029A> % LATIN SMALL LETTER CLOSED OPEN E
|
||||
<S0264> % LATIN SMALL LETTER RAMS HORN
|
||||
+<AFTER-E>
|
||||
+<BEFORE-F>
|
||||
<S0066> % LATIN SMALL LETTER F
|
||||
<SA730> % LATIN LETTER SMALL CAPITAL F
|
||||
<SAB35> % LATIN SMALL LETTER LENIS F
|
||||
@@ -8302,6 +8376,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0192> % LATIN SMALL LETTER F WITH HOOK
|
||||
<S214E> % TURNED SMALL F
|
||||
<SA7FB> % LATIN EPIGRAPHIC LETTER REVERSED F
|
||||
+<AFTER-F>
|
||||
+<BEFORE-G>
|
||||
<S0067> % LATIN SMALL LETTER G
|
||||
<S0261> % LATIN SMALL LETTER SCRIPT G
|
||||
<SAB36> % LATIN SMALL LETTER SCRIPT G WITH CROSSED-TAIL
|
||||
@@ -8314,6 +8390,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA77F> % LATIN SMALL LETTER TURNED INSULAR G
|
||||
<S0263> % LATIN SMALL LETTER GAMMA
|
||||
<S01A3> % LATIN SMALL LETTER OI
|
||||
+<AFTER-G>
|
||||
+<BEFORE-H>
|
||||
<S0068> % LATIN SMALL LETTER H
|
||||
<S029C> % LATIN LETTER SMALL CAPITAL H
|
||||
<S0195> % LATIN SMALL LETTER HV
|
||||
@@ -8325,6 +8403,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0267> % LATIN SMALL LETTER HENG WITH HOOK
|
||||
<S02BB> % MODIFIER LETTER TURNED COMMA
|
||||
<S02BD> % MODIFIER LETTER REVERSED COMMA
|
||||
+<AFTER-H>
|
||||
+<BEFORE-I>
|
||||
<S0069> % LATIN SMALL LETTER I
|
||||
<S0131> % LATIN SMALL LETTER DOTLESS I
|
||||
<S026A> % LATIN LETTER SMALL CAPITAL I
|
||||
@@ -8336,6 +8416,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S1D96> % LATIN SMALL LETTER I WITH RETROFLEX HOOK
|
||||
<S0269> % LATIN SMALL LETTER IOTA
|
||||
<S1D7C> % LATIN SMALL LETTER IOTA WITH STROKE
|
||||
+<AFTER-I>
|
||||
+<BEFORE-J>
|
||||
<S006A> % LATIN SMALL LETTER J
|
||||
<S0237> % LATIN SMALL LETTER DOTLESS J
|
||||
<S1D0A> % LATIN LETTER SMALL CAPITAL J
|
||||
@@ -8343,6 +8425,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S029D> % LATIN SMALL LETTER J WITH CROSSED-TAIL
|
||||
<S025F> % LATIN SMALL LETTER DOTLESS J WITH STROKE
|
||||
<S0284> % LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK
|
||||
+<AFTER-J>
|
||||
+<BEFORE-K>
|
||||
<S006B> % LATIN SMALL LETTER K
|
||||
<S1D0B> % LATIN LETTER SMALL CAPITAL K
|
||||
<S1D84> % LATIN SMALL LETTER K WITH PALATAL HOOK
|
||||
@@ -8352,6 +8436,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA743> % LATIN SMALL LETTER K WITH DIAGONAL STROKE
|
||||
<SA745> % LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
|
||||
<S029E> % LATIN SMALL LETTER TURNED K
|
||||
+<AFTER-K>
|
||||
+<BEFORE-L>
|
||||
<S006C> % LATIN SMALL LETTER L
|
||||
<S029F> % LATIN LETTER SMALL CAPITAL L
|
||||
<SA747> % LATIN SMALL LETTER BROKEN L
|
||||
@@ -8373,6 +8459,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA781> % LATIN SMALL LETTER TURNED L
|
||||
<S019B> % LATIN SMALL LETTER LAMBDA WITH STROKE
|
||||
<S028E> % LATIN SMALL LETTER TURNED Y
|
||||
+<AFTER-L>
|
||||
+<BEFORE-M>
|
||||
<S006D> % LATIN SMALL LETTER M
|
||||
<S1D0D> % LATIN LETTER SMALL CAPITAL M
|
||||
<S1D6F> % LATIN SMALL LETTER M WITH MIDDLE TILDE
|
||||
@@ -8382,6 +8470,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA7FD> % LATIN EPIGRAPHIC LETTER INVERTED M
|
||||
<SA7FF> % LATIN EPIGRAPHIC LETTER ARCHAIC M
|
||||
<SA773> % LATIN SMALL LETTER MUM
|
||||
+<AFTER-M>
|
||||
+<BEFORE-N>
|
||||
<S006E> % LATIN SMALL LETTER N
|
||||
<S0274> % LATIN LETTER SMALL CAPITAL N
|
||||
<S1D3B> % MODIFIER LETTER CAPITAL REVERSED N
|
||||
@@ -8397,6 +8487,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA774> % LATIN SMALL LETTER NUM
|
||||
<S014B> % LATIN SMALL LETTER ENG
|
||||
<SAB3C> % LATIN SMALL LETTER ENG WITH CROSSED-TAIL
|
||||
+<AFTER-N>
|
||||
+<BEFORE-O>
|
||||
<S006F> % LATIN SMALL LETTER O
|
||||
<S1D0F> % LATIN LETTER SMALL CAPITAL O
|
||||
<S1D11> % LATIN SMALL LETTER SIDEWAYS O
|
||||
@@ -8426,6 +8518,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA7B7> % LATIN SMALL LETTER OMEGA
|
||||
<S0223> % LATIN SMALL LETTER OU
|
||||
<S1D15> % LATIN LETTER SMALL CAPITAL OU
|
||||
+<AFTER-O>
|
||||
+<BEFORE-P>
|
||||
<S0070> % LATIN SMALL LETTER P
|
||||
<S1D18> % LATIN LETTER SMALL CAPITAL P
|
||||
<S1D7D> % LATIN SMALL LETTER P WITH STROKE
|
||||
@@ -8438,12 +8532,16 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA7FC> % LATIN EPIGRAPHIC LETTER REVERSED P
|
||||
<S0278> % LATIN SMALL LETTER PHI
|
||||
<S2C77> % LATIN SMALL LETTER TAILLESS PHI
|
||||
+<AFTER-P>
|
||||
+<BEFORE-Q>
|
||||
<S0071> % LATIN SMALL LETTER Q
|
||||
<SA757> % LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
|
||||
<SA759> % LATIN SMALL LETTER Q WITH DIAGONAL STROKE
|
||||
<S02A0> % LATIN SMALL LETTER Q WITH HOOK
|
||||
<S024B> % LATIN SMALL LETTER Q WITH HOOK TAIL
|
||||
<S0138> % LATIN SMALL LETTER KRA
|
||||
+<AFTER-Q>
|
||||
+<BEFORE-R>
|
||||
<S0072> % LATIN SMALL LETTER R
|
||||
<SAB45> % LATIN SMALL LETTER STIRRUP R
|
||||
<S0280> % LATIN LETTER SMALL CAPITAL R
|
||||
@@ -8473,6 +8571,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SA775> % LATIN SMALL LETTER RUM
|
||||
<SA776> % LATIN LETTER SMALL CAPITAL RUM
|
||||
<SA75D> % LATIN SMALL LETTER RUM ROTUNDA
|
||||
+<AFTER-R>
|
||||
+<BEFORE-S>
|
||||
<S0073> % LATIN SMALL LETTER S
|
||||
<SA731> % LATIN LETTER SMALL CAPITAL S
|
||||
<S1D74> % LATIN SMALL LETTER S WITH MIDDLE TILDE
|
||||
@@ -8488,6 +8588,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0285> % LATIN SMALL LETTER SQUAT REVERSED ESH
|
||||
<S1D98> % LATIN SMALL LETTER ESH WITH RETROFLEX HOOK
|
||||
<S0286> % LATIN SMALL LETTER ESH WITH CURL
|
||||
+<AFTER-S>
|
||||
+<BEFORE-T>
|
||||
<S0074> % LATIN SMALL LETTER T
|
||||
<S1D1B> % LATIN LETTER SMALL CAPITAL T
|
||||
<S0167> % LATIN SMALL LETTER T WITH STROKE
|
||||
@@ -8499,6 +8601,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0236> % LATIN SMALL LETTER T WITH CURL
|
||||
<SA777> % LATIN SMALL LETTER TUM
|
||||
<S0287> % LATIN SMALL LETTER TURNED T
|
||||
+<AFTER-T>
|
||||
+<BEFORE-U>
|
||||
<S0075> % LATIN SMALL LETTER U
|
||||
<S1D1C> % LATIN LETTER SMALL CAPITAL U
|
||||
<SAB4E> % LATIN SMALL LETTER U WITH SHORT RIGHT LEG
|
||||
@@ -8521,6 +8625,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0270> % LATIN SMALL LETTER TURNED M WITH LONG LEG
|
||||
<S028A> % LATIN SMALL LETTER UPSILON
|
||||
<S1D7F> % LATIN SMALL LETTER UPSILON WITH STROKE
|
||||
+<AFTER-U>
|
||||
+<BEFORE-V>
|
||||
<S0076> % LATIN SMALL LETTER V
|
||||
<S1D20> % LATIN LETTER SMALL CAPITAL V
|
||||
<SA75F> % LATIN SMALL LETTER V WITH DIAGONAL STROKE
|
||||
@@ -8530,10 +8636,14 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S2C74> % LATIN SMALL LETTER V WITH CURL
|
||||
<S1EFD> % LATIN SMALL LETTER MIDDLE-WELSH V
|
||||
<S028C> % LATIN SMALL LETTER TURNED V
|
||||
+<AFTER-V>
|
||||
+<BEFORE-W>
|
||||
<S0077> % LATIN SMALL LETTER W
|
||||
<S1D21> % LATIN LETTER SMALL CAPITAL W
|
||||
<S2C73> % LATIN SMALL LETTER W WITH HOOK
|
||||
<S028D> % LATIN SMALL LETTER TURNED W
|
||||
+<AFTER-W>
|
||||
+<BEFORE-X>
|
||||
<S0078> % LATIN SMALL LETTER X
|
||||
<S1D8D> % LATIN SMALL LETTER X WITH PALATAL HOOK
|
||||
<SAB56> % LATIN SMALL LETTER X WITH LOW RIGHT RING
|
||||
@@ -8543,6 +8653,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<SAB53> % LATIN SMALL LETTER CHI
|
||||
<SAB54> % LATIN SMALL LETTER CHI WITH LOW RIGHT RING
|
||||
<SAB55> % LATIN SMALL LETTER CHI WITH LOW LEFT SERIF
|
||||
+<AFTER-X>
|
||||
+<BEFORE-Y>
|
||||
<S0079> % LATIN SMALL LETTER Y
|
||||
<S028F> % LATIN LETTER SMALL CAPITAL Y
|
||||
<S024F> % LATIN SMALL LETTER Y WITH STROKE
|
||||
@@ -8550,6 +8662,8 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S1EFF> % LATIN SMALL LETTER Y WITH LOOP
|
||||
<SAB5A> % LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
|
||||
<S021D> % LATIN SMALL LETTER YOGH
|
||||
+<AFTER-Y>
|
||||
+<BEFORE-Z>
|
||||
<S007A> % LATIN SMALL LETTER Z
|
||||
<S1D22> % LATIN LETTER SMALL CAPITAL Z
|
||||
<S01B6> % LATIN SMALL LETTER Z WITH STROKE
|
||||
@@ -8561,15 +8675,20 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0240> % LATIN SMALL LETTER Z WITH SWASH TAIL
|
||||
<S2C6C> % LATIN SMALL LETTER Z WITH DESCENDER
|
||||
<SA763> % LATIN SMALL LETTER VISIGOTHIC Z
|
||||
+<AFTER-Z>
|
||||
+<BEFORE-EZH>
|
||||
<S0292> % LATIN SMALL LETTER EZH
|
||||
<S1D23> % LATIN LETTER SMALL CAPITAL EZH
|
||||
<S01B9> % LATIN SMALL LETTER EZH REVERSED
|
||||
<S1D9A> % LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
|
||||
<S01BA> % LATIN SMALL LETTER EZH WITH TAIL
|
||||
<S0293> % LATIN SMALL LETTER EZH WITH CURL
|
||||
+<AFTER-EZH>
|
||||
+<BEFORE-THORN>
|
||||
<S00FE> % LATIN SMALL LETTER THORN
|
||||
<SA765> % LATIN SMALL LETTER THORN WITH STROKE
|
||||
<SA767> % LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
|
||||
+<AFTER-THORN>
|
||||
<S01BF> % LATIN LETTER WYNN
|
||||
<SA769> % LATIN SMALL LETTER VEND
|
||||
<SAB60> % LATIN SMALL LETTER SAKHA YAT
|
||||
@@ -8612,6 +8731,7 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
<S0298> % LATIN LETTER BILABIAL CLICK
|
||||
<S02AC> % LATIN LETTER BILABIAL PERCUSSIVE
|
||||
<S02AD> % LATIN LETTER BIDENTAL PERCUSSIVE
|
||||
+<AFTER-LATIN>
|
||||
<S03B1> % GREEK SMALL LETTER ALPHA
|
||||
<S03B2> % GREEK SMALL LETTER BETA
|
||||
<S03B3> % GREEK SMALL LETTER GAMMA
|
|
@ -0,0 +1,949 @@
|
|||
commit a93fecdcece3e2178834f4b4868b2309b0158753
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Wed Jan 31 06:18:47 2018 +0100
|
||||
|
||||
iso14651_t1_common: make the fourth level the codepoint for characters which are ignorable on all 4 levels
|
||||
|
||||
Entries for characters which have “IGNORE” on all 4 levels like:
|
||||
|
||||
<U0001> IGNORE;IGNORE;IGNORE;IGNORE % START OF HEADING (in ISO 6429)
|
||||
|
||||
are changed into:
|
||||
|
||||
<U0001> IGNORE;IGNORE;IGNORE;<U0001> % START OF HEADING (in ISO 6429)
|
||||
|
||||
i.e. putting the code point of the character into the fourth level
|
||||
instead of “IGNORE”. Without that change, all such characters
|
||||
would compare equal which would make a wcscoll test case fail.
|
||||
It is better to have a clearly defined sort order even for characters
|
||||
like this so it is good to use the code point as a tie-break.
|
||||
|
||||
* localedata/locales/iso14651_t1_common: Use the code point of a
|
||||
character in the fourth collation level instead of IGNORE for all
|
||||
entries which have IGNORE on all 4 levels.
|
||||
|
||||
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
|
||||
index 443e689da0ee03dc..2d5fdfa87bb93fc8 100644
|
||||
--- a/localedata/locales/iso14651_t1_common
|
||||
+++ b/localedata/locales/iso14651_t1_common
|
||||
@@ -54817,463 +54817,463 @@ endif
|
||||
|
||||
% <Uxxxx> <Base>;<Accent>;<Case>;<Special>
|
||||
|
||||
-<U0000> IGNORE;IGNORE;IGNORE;IGNORE % NULL (in ISO 6429)
|
||||
-<U0001> IGNORE;IGNORE;IGNORE;IGNORE % START OF HEADING (in ISO 6429)
|
||||
-<U0002> IGNORE;IGNORE;IGNORE;IGNORE % START OF TEXT (in ISO 6429)
|
||||
-<U0003> IGNORE;IGNORE;IGNORE;IGNORE % END OF TEXT (in ISO 6429)
|
||||
-<U0004> IGNORE;IGNORE;IGNORE;IGNORE % END OF TRANSMISSION (in ISO 6429)
|
||||
-<U0005> IGNORE;IGNORE;IGNORE;IGNORE % ENQUIRY (in ISO 6429)
|
||||
-<U0006> IGNORE;IGNORE;IGNORE;IGNORE % ACKNOWLEDGE (in ISO 6429)
|
||||
-<U0007> IGNORE;IGNORE;IGNORE;IGNORE % BELL (in ISO 6429)
|
||||
-<U0008> IGNORE;IGNORE;IGNORE;IGNORE % BACKSPACE (in ISO 6429)
|
||||
-<U000E> IGNORE;IGNORE;IGNORE;IGNORE % SHIFT OUT (in ISO 6429)
|
||||
-<U000F> IGNORE;IGNORE;IGNORE;IGNORE % SHIFT IN (in ISO 6429)
|
||||
-<U0010> IGNORE;IGNORE;IGNORE;IGNORE % DATA LINK ESCAPE (in ISO 6429)
|
||||
-<U0011> IGNORE;IGNORE;IGNORE;IGNORE % DEVICE CONTROL ONE (in ISO 6429)
|
||||
-<U0012> IGNORE;IGNORE;IGNORE;IGNORE % DEVICE CONTROL TWO (in ISO 6429)
|
||||
-<U0013> IGNORE;IGNORE;IGNORE;IGNORE % DEVICE CONTROL THREE (in ISO 6429)
|
||||
-<U0014> IGNORE;IGNORE;IGNORE;IGNORE % DEVICE CONTROL FOUR (in ISO 6429)
|
||||
-<U0015> IGNORE;IGNORE;IGNORE;IGNORE % NEGATIVE ACKNOWLEDGE (in ISO 6429)
|
||||
-<U0016> IGNORE;IGNORE;IGNORE;IGNORE % SYNCHRONOUS IDLE (in ISO 6429)
|
||||
-<U0017> IGNORE;IGNORE;IGNORE;IGNORE % END OF TRANSMISSION BLOCK (in ISO 6429)
|
||||
-<U0018> IGNORE;IGNORE;IGNORE;IGNORE % CANCEL (in ISO 6429)
|
||||
-<U0019> IGNORE;IGNORE;IGNORE;IGNORE % END OF MEDIUM (in ISO 6429)
|
||||
-<U001A> IGNORE;IGNORE;IGNORE;IGNORE % SUBSTITUTE (in ISO 6429)
|
||||
-<U001B> IGNORE;IGNORE;IGNORE;IGNORE % ESCAPE (in ISO 6429)
|
||||
-<U001C> IGNORE;IGNORE;IGNORE;IGNORE % FILE SEPARATOR (in ISO 6429)
|
||||
-<U001D> IGNORE;IGNORE;IGNORE;IGNORE % GROUP SEPARATOR (in ISO 6429)
|
||||
-<U001E> IGNORE;IGNORE;IGNORE;IGNORE % RECORD SEPARATOR (in ISO 6429)
|
||||
-<U001F> IGNORE;IGNORE;IGNORE;IGNORE % UNIT SEPARATOR (in ISO 6429)
|
||||
-<U007F> IGNORE;IGNORE;IGNORE;IGNORE % DELETE (in ISO 6429)
|
||||
-<U0080> IGNORE;IGNORE;IGNORE;IGNORE % <control>
|
||||
-<U0081> IGNORE;IGNORE;IGNORE;IGNORE % <control>
|
||||
-<U0082> IGNORE;IGNORE;IGNORE;IGNORE % BREAK PERMITTED HERE (in ISO 6429)
|
||||
-<U0083> IGNORE;IGNORE;IGNORE;IGNORE % NO BREAK HERE (in ISO 6429)
|
||||
-<U0084> IGNORE;IGNORE;IGNORE;IGNORE % <control>
|
||||
-<U0086> IGNORE;IGNORE;IGNORE;IGNORE % START OF SELECTED AREA (in ISO 6429)
|
||||
-<U0087> IGNORE;IGNORE;IGNORE;IGNORE % END OF SELECTED AREA (in ISO 6429)
|
||||
-<U0088> IGNORE;IGNORE;IGNORE;IGNORE % CHARACTER TABULATION SET (in ISO 6429)
|
||||
-<U0089> IGNORE;IGNORE;IGNORE;IGNORE % CHARACTER TABULATION WITH JUSTIFICATION (in ISO 6429)
|
||||
-<U008A> IGNORE;IGNORE;IGNORE;IGNORE % LINE TABULATION SET (in ISO 6429)
|
||||
-<U008B> IGNORE;IGNORE;IGNORE;IGNORE % PARTIAL LINE FORWARD (in ISO 6429)
|
||||
-<U008C> IGNORE;IGNORE;IGNORE;IGNORE % PARTIAL LINE BACKWARD (in ISO 6429)
|
||||
-<U008D> IGNORE;IGNORE;IGNORE;IGNORE % PARTIAL LINE FEED (in ISO 6429)
|
||||
-<U008E> IGNORE;IGNORE;IGNORE;IGNORE % SINGLE SHIFT TWO (in ISO 6429)
|
||||
-<U008F> IGNORE;IGNORE;IGNORE;IGNORE % SINGLE SHIFT THREE (in ISO 6429)
|
||||
-<U0090> IGNORE;IGNORE;IGNORE;IGNORE % DEVICE CONTROL STRING (in ISO 6429)
|
||||
-<U0091> IGNORE;IGNORE;IGNORE;IGNORE % PRIVATE USE ONE (in ISO 6429)
|
||||
-<U0092> IGNORE;IGNORE;IGNORE;IGNORE % PRIVATE USE TWO (in ISO 6429)
|
||||
-<U0093> IGNORE;IGNORE;IGNORE;IGNORE % SET TRANSMIT STATE (in ISO 6429)
|
||||
-<U0094> IGNORE;IGNORE;IGNORE;IGNORE % CANCEL CHARACTER (in ISO 6429)
|
||||
-<U0095> IGNORE;IGNORE;IGNORE;IGNORE % MESSAGE WAITING (in ISO 6429)
|
||||
-<U0096> IGNORE;IGNORE;IGNORE;IGNORE % START OF GUARDED AREA (in ISO 6429)
|
||||
-<U0097> IGNORE;IGNORE;IGNORE;IGNORE % END OF GUARDED AREA (in ISO 6429)
|
||||
-<U0098> IGNORE;IGNORE;IGNORE;IGNORE % START OF STRING (in ISO 6429)
|
||||
-<U0099> IGNORE;IGNORE;IGNORE;IGNORE % <control>
|
||||
-<U009A> IGNORE;IGNORE;IGNORE;IGNORE % SINGLE CHARACTER INTRODUCER (in ISO 6429)
|
||||
-<U009B> IGNORE;IGNORE;IGNORE;IGNORE % CONTROL SEQUENCE INTRODUCER (in ISO 6429)
|
||||
-<U009C> IGNORE;IGNORE;IGNORE;IGNORE % STRING TERMINATOR (in ISO 6429)
|
||||
-<U009D> IGNORE;IGNORE;IGNORE;IGNORE % OPERATING SYSTEM COMMAND (in ISO 6429)
|
||||
-<U009E> IGNORE;IGNORE;IGNORE;IGNORE % PRIVACY MESSAGE (in ISO 6429)
|
||||
-<U009F> IGNORE;IGNORE;IGNORE;IGNORE % APPLICATION PROGRAM COMMAND (in ISO 6429)
|
||||
-<U00AD> IGNORE;IGNORE;IGNORE;IGNORE % SOFT HYPHEN
|
||||
-<U061C> IGNORE;IGNORE;IGNORE;IGNORE % ARABIC LETTER MARK
|
||||
-<U070F> IGNORE;IGNORE;IGNORE;IGNORE % SYRIAC ABBREVIATION MARK
|
||||
-<U08E2> IGNORE;IGNORE;IGNORE;IGNORE % ARABIC DISPUTED END OF AYAH
|
||||
-<U180B> IGNORE;IGNORE;IGNORE;IGNORE % MONGOLIAN FREE VARIATION SELECTOR ONE
|
||||
-<U180C> IGNORE;IGNORE;IGNORE;IGNORE % MONGOLIAN FREE VARIATION SELECTOR TWO
|
||||
-<U180D> IGNORE;IGNORE;IGNORE;IGNORE % MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||
-<U180E> IGNORE;IGNORE;IGNORE;IGNORE % MONGOLIAN VOWEL SEPARATOR
|
||||
-<U200B> IGNORE;IGNORE;IGNORE;IGNORE % ZERO WIDTH SPACE
|
||||
-<U200C> IGNORE;IGNORE;IGNORE;IGNORE % ZERO WIDTH NON-JOINER
|
||||
-<U200D> IGNORE;IGNORE;IGNORE;IGNORE % ZERO WIDTH JOINER
|
||||
-<U200E> IGNORE;IGNORE;IGNORE;IGNORE % LEFT-TO-RIGHT MARK
|
||||
-<U200F> IGNORE;IGNORE;IGNORE;IGNORE % RIGHT-TO-LEFT MARK
|
||||
-<U202A> IGNORE;IGNORE;IGNORE;IGNORE % LEFT-TO-RIGHT EMBEDDING
|
||||
-<U202B> IGNORE;IGNORE;IGNORE;IGNORE % RIGHT-TO-LEFT EMBEDDING
|
||||
-<U202C> IGNORE;IGNORE;IGNORE;IGNORE % POP DIRECTIONAL FORMATTING
|
||||
-<U202D> IGNORE;IGNORE;IGNORE;IGNORE % LEFT-TO-RIGHT OVERRIDE
|
||||
-<U202E> IGNORE;IGNORE;IGNORE;IGNORE % RIGHT-TO-LEFT OVERRIDE
|
||||
-<U2060> IGNORE;IGNORE;IGNORE;IGNORE % WORD JOINER
|
||||
-<U2066> IGNORE;IGNORE;IGNORE;IGNORE % LEFT-TO-RIGHT ISOLATE
|
||||
-<U2067> IGNORE;IGNORE;IGNORE;IGNORE % RIGHT-TO-LEFT ISOLATE
|
||||
-<U2068> IGNORE;IGNORE;IGNORE;IGNORE % FIRST STRONG ISOLATE
|
||||
-<U2069> IGNORE;IGNORE;IGNORE;IGNORE % POP DIRECTIONAL ISOLATE
|
||||
-<U206A> IGNORE;IGNORE;IGNORE;IGNORE % INHIBIT SYMMETRIC SWAPPING
|
||||
-<U206B> IGNORE;IGNORE;IGNORE;IGNORE % ACTIVATE SYMMETRIC SWAPPING
|
||||
-<U206C> IGNORE;IGNORE;IGNORE;IGNORE % INHIBIT ARABIC FORM SHAPING
|
||||
-<U206D> IGNORE;IGNORE;IGNORE;IGNORE % ACTIVATE ARABIC FORM SHAPING
|
||||
-<U206E> IGNORE;IGNORE;IGNORE;IGNORE % NATIONAL DIGIT SHAPES
|
||||
-<U206F> IGNORE;IGNORE;IGNORE;IGNORE % NOMINAL DIGIT SHAPES
|
||||
-<UFE00> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-1
|
||||
-<UFE01> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-2
|
||||
-<UFE02> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-3
|
||||
-<UFE03> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-4
|
||||
-<UFE04> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-5
|
||||
-<UFE05> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-6
|
||||
-<UFE06> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-7
|
||||
-<UFE07> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-8
|
||||
-<UFE08> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-9
|
||||
-<UFE09> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-10
|
||||
-<UFE0A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-11
|
||||
-<UFE0B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-12
|
||||
-<UFE0C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-13
|
||||
-<UFE0D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-14
|
||||
-<UFE0E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-15
|
||||
-<UFE0F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-16
|
||||
-<UFEFF> IGNORE;IGNORE;IGNORE;IGNORE % ZERO WIDTH NO-BREAK SPACE
|
||||
-<UFFF9> IGNORE;IGNORE;IGNORE;IGNORE % INTERLINEAR ANNOTATION ANCHOR
|
||||
-<UFFFA> IGNORE;IGNORE;IGNORE;IGNORE % INTERLINEAR ANNOTATION SEPARATOR
|
||||
-<UFFFB> IGNORE;IGNORE;IGNORE;IGNORE % INTERLINEAR ANNOTATION TERMINATOR
|
||||
-<U0001BCA0> IGNORE;IGNORE;IGNORE;IGNORE % SHORTHAND FORMAT LETTER OVERLAP
|
||||
-<U0001BCA1> IGNORE;IGNORE;IGNORE;IGNORE % SHORTHAND FORMAT CONTINUING OVERLAP
|
||||
-<U0001BCA2> IGNORE;IGNORE;IGNORE;IGNORE % SHORTHAND FORMAT DOWN STEP
|
||||
-<U0001BCA3> IGNORE;IGNORE;IGNORE;IGNORE % SHORTHAND FORMAT UP STEP
|
||||
-<U0001D173> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL BEGIN BEAM
|
||||
-<U0001D174> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL END BEAM
|
||||
-<U0001D175> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL BEGIN TIE
|
||||
-<U0001D176> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL END TIE
|
||||
-<U0001D177> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL BEGIN SLUR
|
||||
-<U0001D178> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL END SLUR
|
||||
-<U0001D179> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL BEGIN PHRASE
|
||||
-<U0001D17A> IGNORE;IGNORE;IGNORE;IGNORE % MUSICAL SYMBOL END PHRASE
|
||||
-<U000E0001> IGNORE;IGNORE;IGNORE;IGNORE % LANGUAGE TAG
|
||||
-<U000E0020> IGNORE;IGNORE;IGNORE;IGNORE % TAG SPACE
|
||||
-<U000E0021> IGNORE;IGNORE;IGNORE;IGNORE % TAG EXCLAMATION MARK
|
||||
-<U000E0022> IGNORE;IGNORE;IGNORE;IGNORE % TAG QUOTATION MARK
|
||||
-<U000E0023> IGNORE;IGNORE;IGNORE;IGNORE % TAG NUMBER SIGN
|
||||
-<U000E0024> IGNORE;IGNORE;IGNORE;IGNORE % TAG DOLLAR SIGN
|
||||
-<U000E0025> IGNORE;IGNORE;IGNORE;IGNORE % TAG PERCENT SIGN
|
||||
-<U000E0026> IGNORE;IGNORE;IGNORE;IGNORE % TAG AMPERSAND
|
||||
-<U000E0027> IGNORE;IGNORE;IGNORE;IGNORE % TAG APOSTROPHE
|
||||
-<U000E0028> IGNORE;IGNORE;IGNORE;IGNORE % TAG LEFT PARENTHESIS
|
||||
-<U000E0029> IGNORE;IGNORE;IGNORE;IGNORE % TAG RIGHT PARENTHESIS
|
||||
-<U000E002A> IGNORE;IGNORE;IGNORE;IGNORE % TAG ASTERISK
|
||||
-<U000E002B> IGNORE;IGNORE;IGNORE;IGNORE % TAG PLUS SIGN
|
||||
-<U000E002C> IGNORE;IGNORE;IGNORE;IGNORE % TAG COMMA
|
||||
-<U000E002D> IGNORE;IGNORE;IGNORE;IGNORE % TAG HYPHEN-MINUS
|
||||
-<U000E002E> IGNORE;IGNORE;IGNORE;IGNORE % TAG FULL STOP
|
||||
-<U000E002F> IGNORE;IGNORE;IGNORE;IGNORE % TAG SOLIDUS
|
||||
-<U000E0030> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT ZERO
|
||||
-<U000E0031> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT ONE
|
||||
-<U000E0032> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT TWO
|
||||
-<U000E0033> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT THREE
|
||||
-<U000E0034> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT FOUR
|
||||
-<U000E0035> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT FIVE
|
||||
-<U000E0036> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT SIX
|
||||
-<U000E0037> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT SEVEN
|
||||
-<U000E0038> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT EIGHT
|
||||
-<U000E0039> IGNORE;IGNORE;IGNORE;IGNORE % TAG DIGIT NINE
|
||||
-<U000E003A> IGNORE;IGNORE;IGNORE;IGNORE % TAG COLON
|
||||
-<U000E003B> IGNORE;IGNORE;IGNORE;IGNORE % TAG SEMICOLON
|
||||
-<U000E003C> IGNORE;IGNORE;IGNORE;IGNORE % TAG LESS-THAN SIGN
|
||||
-<U000E003D> IGNORE;IGNORE;IGNORE;IGNORE % TAG EQUALS SIGN
|
||||
-<U000E003E> IGNORE;IGNORE;IGNORE;IGNORE % TAG GREATER-THAN SIGN
|
||||
-<U000E003F> IGNORE;IGNORE;IGNORE;IGNORE % TAG QUESTION MARK
|
||||
-<U000E0040> IGNORE;IGNORE;IGNORE;IGNORE % TAG COMMERCIAL AT
|
||||
-<U000E0041> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER A
|
||||
-<U000E0042> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER B
|
||||
-<U000E0043> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER C
|
||||
-<U000E0044> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER D
|
||||
-<U000E0045> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER E
|
||||
-<U000E0046> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER F
|
||||
-<U000E0047> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER G
|
||||
-<U000E0048> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER H
|
||||
-<U000E0049> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER I
|
||||
-<U000E004A> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER J
|
||||
-<U000E004B> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER K
|
||||
-<U000E004C> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER L
|
||||
-<U000E004D> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER M
|
||||
-<U000E004E> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER N
|
||||
-<U000E004F> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER O
|
||||
-<U000E0050> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER P
|
||||
-<U000E0051> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER Q
|
||||
-<U000E0052> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER R
|
||||
-<U000E0053> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER S
|
||||
-<U000E0054> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER T
|
||||
-<U000E0055> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER U
|
||||
-<U000E0056> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER V
|
||||
-<U000E0057> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER W
|
||||
-<U000E0058> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER X
|
||||
-<U000E0059> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER Y
|
||||
-<U000E005A> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN CAPITAL LETTER Z
|
||||
-<U000E005B> IGNORE;IGNORE;IGNORE;IGNORE % TAG LEFT SQUARE BRACKET
|
||||
-<U000E005C> IGNORE;IGNORE;IGNORE;IGNORE % TAG REVERSE SOLIDUS
|
||||
-<U000E005D> IGNORE;IGNORE;IGNORE;IGNORE % TAG RIGHT SQUARE BRACKET
|
||||
-<U000E005E> IGNORE;IGNORE;IGNORE;IGNORE % TAG CIRCUMFLEX ACCENT
|
||||
-<U000E005F> IGNORE;IGNORE;IGNORE;IGNORE % TAG LOW LINE
|
||||
-<U000E0060> IGNORE;IGNORE;IGNORE;IGNORE % TAG GRAVE ACCENT
|
||||
-<U000E0061> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER A
|
||||
-<U000E0062> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER B
|
||||
-<U000E0063> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER C
|
||||
-<U000E0064> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER D
|
||||
-<U000E0065> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER E
|
||||
-<U000E0066> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER F
|
||||
-<U000E0067> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER G
|
||||
-<U000E0068> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER H
|
||||
-<U000E0069> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER I
|
||||
-<U000E006A> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER J
|
||||
-<U000E006B> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER K
|
||||
-<U000E006C> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER L
|
||||
-<U000E006D> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER M
|
||||
-<U000E006E> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER N
|
||||
-<U000E006F> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER O
|
||||
-<U000E0070> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER P
|
||||
-<U000E0071> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER Q
|
||||
-<U000E0072> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER R
|
||||
-<U000E0073> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER S
|
||||
-<U000E0074> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER T
|
||||
-<U000E0075> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER U
|
||||
-<U000E0076> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER V
|
||||
-<U000E0077> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER W
|
||||
-<U000E0078> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER X
|
||||
-<U000E0079> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER Y
|
||||
-<U000E007A> IGNORE;IGNORE;IGNORE;IGNORE % TAG LATIN SMALL LETTER Z
|
||||
-<U000E007B> IGNORE;IGNORE;IGNORE;IGNORE % TAG LEFT CURLY BRACKET
|
||||
-<U000E007C> IGNORE;IGNORE;IGNORE;IGNORE % TAG VERTICAL LINE
|
||||
-<U000E007D> IGNORE;IGNORE;IGNORE;IGNORE % TAG RIGHT CURLY BRACKET
|
||||
-<U000E007E> IGNORE;IGNORE;IGNORE;IGNORE % TAG TILDE
|
||||
-<U000E007F> IGNORE;IGNORE;IGNORE;IGNORE % CANCEL TAG
|
||||
-<U000E0100> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-17
|
||||
-<U000E0101> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-18
|
||||
-<U000E0102> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-19
|
||||
-<U000E0103> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-20
|
||||
-<U000E0104> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-21
|
||||
-<U000E0105> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-22
|
||||
-<U000E0106> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-23
|
||||
-<U000E0107> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-24
|
||||
-<U000E0108> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-25
|
||||
-<U000E0109> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-26
|
||||
-<U000E010A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-27
|
||||
-<U000E010B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-28
|
||||
-<U000E010C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-29
|
||||
-<U000E010D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-30
|
||||
-<U000E010E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-31
|
||||
-<U000E010F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-32
|
||||
-<U000E0110> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-33
|
||||
-<U000E0111> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-34
|
||||
-<U000E0112> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-35
|
||||
-<U000E0113> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-36
|
||||
-<U000E0114> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-37
|
||||
-<U000E0115> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-38
|
||||
-<U000E0116> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-39
|
||||
-<U000E0117> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-40
|
||||
-<U000E0118> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-41
|
||||
-<U000E0119> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-42
|
||||
-<U000E011A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-43
|
||||
-<U000E011B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-44
|
||||
-<U000E011C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-45
|
||||
-<U000E011D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-46
|
||||
-<U000E011E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-47
|
||||
-<U000E011F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-48
|
||||
-<U000E0120> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-49
|
||||
-<U000E0121> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-50
|
||||
-<U000E0122> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-51
|
||||
-<U000E0123> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-52
|
||||
-<U000E0124> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-53
|
||||
-<U000E0125> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-54
|
||||
-<U000E0126> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-55
|
||||
-<U000E0127> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-56
|
||||
-<U000E0128> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-57
|
||||
-<U000E0129> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-58
|
||||
-<U000E012A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-59
|
||||
-<U000E012B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-60
|
||||
-<U000E012C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-61
|
||||
-<U000E012D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-62
|
||||
-<U000E012E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-63
|
||||
-<U000E012F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-64
|
||||
-<U000E0130> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-65
|
||||
-<U000E0131> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-66
|
||||
-<U000E0132> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-67
|
||||
-<U000E0133> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-68
|
||||
-<U000E0134> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-69
|
||||
-<U000E0135> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-70
|
||||
-<U000E0136> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-71
|
||||
-<U000E0137> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-72
|
||||
-<U000E0138> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-73
|
||||
-<U000E0139> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-74
|
||||
-<U000E013A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-75
|
||||
-<U000E013B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-76
|
||||
-<U000E013C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-77
|
||||
-<U000E013D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-78
|
||||
-<U000E013E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-79
|
||||
-<U000E013F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-80
|
||||
-<U000E0140> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-81
|
||||
-<U000E0141> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-82
|
||||
-<U000E0142> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-83
|
||||
-<U000E0143> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-84
|
||||
-<U000E0144> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-85
|
||||
-<U000E0145> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-86
|
||||
-<U000E0146> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-87
|
||||
-<U000E0147> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-88
|
||||
-<U000E0148> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-89
|
||||
-<U000E0149> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-90
|
||||
-<U000E014A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-91
|
||||
-<U000E014B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-92
|
||||
-<U000E014C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-93
|
||||
-<U000E014D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-94
|
||||
-<U000E014E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-95
|
||||
-<U000E014F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-96
|
||||
-<U000E0150> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-97
|
||||
-<U000E0151> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-98
|
||||
-<U000E0152> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-99
|
||||
-<U000E0153> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-100
|
||||
-<U000E0154> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-101
|
||||
-<U000E0155> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-102
|
||||
-<U000E0156> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-103
|
||||
-<U000E0157> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-104
|
||||
-<U000E0158> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-105
|
||||
-<U000E0159> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-106
|
||||
-<U000E015A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-107
|
||||
-<U000E015B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-108
|
||||
-<U000E015C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-109
|
||||
-<U000E015D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-110
|
||||
-<U000E015E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-111
|
||||
-<U000E015F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-112
|
||||
-<U000E0160> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-113
|
||||
-<U000E0161> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-114
|
||||
-<U000E0162> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-115
|
||||
-<U000E0163> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-116
|
||||
-<U000E0164> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-117
|
||||
-<U000E0165> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-118
|
||||
-<U000E0166> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-119
|
||||
-<U000E0167> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-120
|
||||
-<U000E0168> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-121
|
||||
-<U000E0169> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-122
|
||||
-<U000E016A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-123
|
||||
-<U000E016B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-124
|
||||
-<U000E016C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-125
|
||||
-<U000E016D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-126
|
||||
-<U000E016E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-127
|
||||
-<U000E016F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-128
|
||||
-<U000E0170> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-129
|
||||
-<U000E0171> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-130
|
||||
-<U000E0172> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-131
|
||||
-<U000E0173> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-132
|
||||
-<U000E0174> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-133
|
||||
-<U000E0175> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-134
|
||||
-<U000E0176> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-135
|
||||
-<U000E0177> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-136
|
||||
-<U000E0178> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-137
|
||||
-<U000E0179> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-138
|
||||
-<U000E017A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-139
|
||||
-<U000E017B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-140
|
||||
-<U000E017C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-141
|
||||
-<U000E017D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-142
|
||||
-<U000E017E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-143
|
||||
-<U000E017F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-144
|
||||
-<U000E0180> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-145
|
||||
-<U000E0181> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-146
|
||||
-<U000E0182> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-147
|
||||
-<U000E0183> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-148
|
||||
-<U000E0184> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-149
|
||||
-<U000E0185> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-150
|
||||
-<U000E0186> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-151
|
||||
-<U000E0187> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-152
|
||||
-<U000E0188> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-153
|
||||
-<U000E0189> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-154
|
||||
-<U000E018A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-155
|
||||
-<U000E018B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-156
|
||||
-<U000E018C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-157
|
||||
-<U000E018D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-158
|
||||
-<U000E018E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-159
|
||||
-<U000E018F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-160
|
||||
-<U000E0190> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-161
|
||||
-<U000E0191> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-162
|
||||
-<U000E0192> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-163
|
||||
-<U000E0193> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-164
|
||||
-<U000E0194> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-165
|
||||
-<U000E0195> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-166
|
||||
-<U000E0196> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-167
|
||||
-<U000E0197> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-168
|
||||
-<U000E0198> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-169
|
||||
-<U000E0199> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-170
|
||||
-<U000E019A> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-171
|
||||
-<U000E019B> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-172
|
||||
-<U000E019C> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-173
|
||||
-<U000E019D> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-174
|
||||
-<U000E019E> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-175
|
||||
-<U000E019F> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-176
|
||||
-<U000E01A0> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-177
|
||||
-<U000E01A1> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-178
|
||||
-<U000E01A2> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-179
|
||||
-<U000E01A3> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-180
|
||||
-<U000E01A4> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-181
|
||||
-<U000E01A5> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-182
|
||||
-<U000E01A6> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-183
|
||||
-<U000E01A7> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-184
|
||||
-<U000E01A8> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-185
|
||||
-<U000E01A9> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-186
|
||||
-<U000E01AA> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-187
|
||||
-<U000E01AB> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-188
|
||||
-<U000E01AC> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-189
|
||||
-<U000E01AD> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-190
|
||||
-<U000E01AE> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-191
|
||||
-<U000E01AF> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-192
|
||||
-<U000E01B0> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-193
|
||||
-<U000E01B1> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-194
|
||||
-<U000E01B2> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-195
|
||||
-<U000E01B3> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-196
|
||||
-<U000E01B4> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-197
|
||||
-<U000E01B5> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-198
|
||||
-<U000E01B6> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-199
|
||||
-<U000E01B7> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-200
|
||||
-<U000E01B8> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-201
|
||||
-<U000E01B9> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-202
|
||||
-<U000E01BA> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-203
|
||||
-<U000E01BB> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-204
|
||||
-<U000E01BC> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-205
|
||||
-<U000E01BD> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-206
|
||||
-<U000E01BE> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-207
|
||||
-<U000E01BF> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-208
|
||||
-<U000E01C0> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-209
|
||||
-<U000E01C1> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-210
|
||||
-<U000E01C2> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-211
|
||||
-<U000E01C3> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-212
|
||||
-<U000E01C4> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-213
|
||||
-<U000E01C5> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-214
|
||||
-<U000E01C6> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-215
|
||||
-<U000E01C7> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-216
|
||||
-<U000E01C8> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-217
|
||||
-<U000E01C9> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-218
|
||||
-<U000E01CA> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-219
|
||||
-<U000E01CB> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-220
|
||||
-<U000E01CC> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-221
|
||||
-<U000E01CD> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-222
|
||||
-<U000E01CE> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-223
|
||||
-<U000E01CF> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-224
|
||||
-<U000E01D0> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-225
|
||||
-<U000E01D1> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-226
|
||||
-<U000E01D2> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-227
|
||||
-<U000E01D3> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-228
|
||||
-<U000E01D4> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-229
|
||||
-<U000E01D5> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-230
|
||||
-<U000E01D6> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-231
|
||||
-<U000E01D7> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-232
|
||||
-<U000E01D8> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-233
|
||||
-<U000E01D9> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-234
|
||||
-<U000E01DA> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-235
|
||||
-<U000E01DB> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-236
|
||||
-<U000E01DC> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-237
|
||||
-<U000E01DD> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-238
|
||||
-<U000E01DE> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-239
|
||||
-<U000E01DF> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-240
|
||||
-<U000E01E0> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-241
|
||||
-<U000E01E1> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-242
|
||||
-<U000E01E2> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-243
|
||||
-<U000E01E3> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-244
|
||||
-<U000E01E4> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-245
|
||||
-<U000E01E5> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-246
|
||||
-<U000E01E6> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-247
|
||||
-<U000E01E7> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-248
|
||||
-<U000E01E8> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-249
|
||||
-<U000E01E9> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-250
|
||||
-<U000E01EA> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-251
|
||||
-<U000E01EB> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-252
|
||||
-<U000E01EC> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-253
|
||||
-<U000E01ED> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-254
|
||||
-<U000E01EE> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-255
|
||||
-<U000E01EF> IGNORE;IGNORE;IGNORE;IGNORE % VARIATION SELECTOR-256
|
||||
+<U0000> IGNORE;IGNORE;IGNORE;<U0000> % NULL (in ISO 6429)
|
||||
+<U0001> IGNORE;IGNORE;IGNORE;<U0001> % START OF HEADING (in ISO 6429)
|
||||
+<U0002> IGNORE;IGNORE;IGNORE;<U0002> % START OF TEXT (in ISO 6429)
|
||||
+<U0003> IGNORE;IGNORE;IGNORE;<U0003> % END OF TEXT (in ISO 6429)
|
||||
+<U0004> IGNORE;IGNORE;IGNORE;<U0004> % END OF TRANSMISSION (in ISO 6429)
|
||||
+<U0005> IGNORE;IGNORE;IGNORE;<U0005> % ENQUIRY (in ISO 6429)
|
||||
+<U0006> IGNORE;IGNORE;IGNORE;<U0006> % ACKNOWLEDGE (in ISO 6429)
|
||||
+<U0007> IGNORE;IGNORE;IGNORE;<U0007> % BELL (in ISO 6429)
|
||||
+<U0008> IGNORE;IGNORE;IGNORE;<U0008> % BACKSPACE (in ISO 6429)
|
||||
+<U000E> IGNORE;IGNORE;IGNORE;<U000E> % SHIFT OUT (in ISO 6429)
|
||||
+<U000F> IGNORE;IGNORE;IGNORE;<U000F> % SHIFT IN (in ISO 6429)
|
||||
+<U0010> IGNORE;IGNORE;IGNORE;<U0010> % DATA LINK ESCAPE (in ISO 6429)
|
||||
+<U0011> IGNORE;IGNORE;IGNORE;<U0011> % DEVICE CONTROL ONE (in ISO 6429)
|
||||
+<U0012> IGNORE;IGNORE;IGNORE;<U0012> % DEVICE CONTROL TWO (in ISO 6429)
|
||||
+<U0013> IGNORE;IGNORE;IGNORE;<U0013> % DEVICE CONTROL THREE (in ISO 6429)
|
||||
+<U0014> IGNORE;IGNORE;IGNORE;<U0014> % DEVICE CONTROL FOUR (in ISO 6429)
|
||||
+<U0015> IGNORE;IGNORE;IGNORE;<U0015> % NEGATIVE ACKNOWLEDGE (in ISO 6429)
|
||||
+<U0016> IGNORE;IGNORE;IGNORE;<U0016> % SYNCHRONOUS IDLE (in ISO 6429)
|
||||
+<U0017> IGNORE;IGNORE;IGNORE;<U0017> % END OF TRANSMISSION BLOCK (in ISO 6429)
|
||||
+<U0018> IGNORE;IGNORE;IGNORE;<U0018> % CANCEL (in ISO 6429)
|
||||
+<U0019> IGNORE;IGNORE;IGNORE;<U0019> % END OF MEDIUM (in ISO 6429)
|
||||
+<U001A> IGNORE;IGNORE;IGNORE;<U001A> % SUBSTITUTE (in ISO 6429)
|
||||
+<U001B> IGNORE;IGNORE;IGNORE;<U001B> % ESCAPE (in ISO 6429)
|
||||
+<U001C> IGNORE;IGNORE;IGNORE;<U001C> % FILE SEPARATOR (in ISO 6429)
|
||||
+<U001D> IGNORE;IGNORE;IGNORE;<U001D> % GROUP SEPARATOR (in ISO 6429)
|
||||
+<U001E> IGNORE;IGNORE;IGNORE;<U001E> % RECORD SEPARATOR (in ISO 6429)
|
||||
+<U001F> IGNORE;IGNORE;IGNORE;<U001F> % UNIT SEPARATOR (in ISO 6429)
|
||||
+<U007F> IGNORE;IGNORE;IGNORE;<U007F> % DELETE (in ISO 6429)
|
||||
+<U0080> IGNORE;IGNORE;IGNORE;<U0080> % <control>
|
||||
+<U0081> IGNORE;IGNORE;IGNORE;<U0081> % <control>
|
||||
+<U0082> IGNORE;IGNORE;IGNORE;<U0082> % BREAK PERMITTED HERE (in ISO 6429)
|
||||
+<U0083> IGNORE;IGNORE;IGNORE;<U0083> % NO BREAK HERE (in ISO 6429)
|
||||
+<U0084> IGNORE;IGNORE;IGNORE;<U0084> % <control>
|
||||
+<U0086> IGNORE;IGNORE;IGNORE;<U0086> % START OF SELECTED AREA (in ISO 6429)
|
||||
+<U0087> IGNORE;IGNORE;IGNORE;<U0087> % END OF SELECTED AREA (in ISO 6429)
|
||||
+<U0088> IGNORE;IGNORE;IGNORE;<U0088> % CHARACTER TABULATION SET (in ISO 6429)
|
||||
+<U0089> IGNORE;IGNORE;IGNORE;<U0089> % CHARACTER TABULATION WITH JUSTIFICATION (in ISO 6429)
|
||||
+<U008A> IGNORE;IGNORE;IGNORE;<U008A> % LINE TABULATION SET (in ISO 6429)
|
||||
+<U008B> IGNORE;IGNORE;IGNORE;<U008B> % PARTIAL LINE FORWARD (in ISO 6429)
|
||||
+<U008C> IGNORE;IGNORE;IGNORE;<U008C> % PARTIAL LINE BACKWARD (in ISO 6429)
|
||||
+<U008D> IGNORE;IGNORE;IGNORE;<U008D> % PARTIAL LINE FEED (in ISO 6429)
|
||||
+<U008E> IGNORE;IGNORE;IGNORE;<U008E> % SINGLE SHIFT TWO (in ISO 6429)
|
||||
+<U008F> IGNORE;IGNORE;IGNORE;<U008F> % SINGLE SHIFT THREE (in ISO 6429)
|
||||
+<U0090> IGNORE;IGNORE;IGNORE;<U0090> % DEVICE CONTROL STRING (in ISO 6429)
|
||||
+<U0091> IGNORE;IGNORE;IGNORE;<U0091> % PRIVATE USE ONE (in ISO 6429)
|
||||
+<U0092> IGNORE;IGNORE;IGNORE;<U0092> % PRIVATE USE TWO (in ISO 6429)
|
||||
+<U0093> IGNORE;IGNORE;IGNORE;<U0093> % SET TRANSMIT STATE (in ISO 6429)
|
||||
+<U0094> IGNORE;IGNORE;IGNORE;<U0094> % CANCEL CHARACTER (in ISO 6429)
|
||||
+<U0095> IGNORE;IGNORE;IGNORE;<U0095> % MESSAGE WAITING (in ISO 6429)
|
||||
+<U0096> IGNORE;IGNORE;IGNORE;<U0096> % START OF GUARDED AREA (in ISO 6429)
|
||||
+<U0097> IGNORE;IGNORE;IGNORE;<U0097> % END OF GUARDED AREA (in ISO 6429)
|
||||
+<U0098> IGNORE;IGNORE;IGNORE;<U0098> % START OF STRING (in ISO 6429)
|
||||
+<U0099> IGNORE;IGNORE;IGNORE;<U0099> % <control>
|
||||
+<U009A> IGNORE;IGNORE;IGNORE;<U009A> % SINGLE CHARACTER INTRODUCER (in ISO 6429)
|
||||
+<U009B> IGNORE;IGNORE;IGNORE;<U009B> % CONTROL SEQUENCE INTRODUCER (in ISO 6429)
|
||||
+<U009C> IGNORE;IGNORE;IGNORE;<U009C> % STRING TERMINATOR (in ISO 6429)
|
||||
+<U009D> IGNORE;IGNORE;IGNORE;<U009D> % OPERATING SYSTEM COMMAND (in ISO 6429)
|
||||
+<U009E> IGNORE;IGNORE;IGNORE;<U009E> % PRIVACY MESSAGE (in ISO 6429)
|
||||
+<U009F> IGNORE;IGNORE;IGNORE;<U009F> % APPLICATION PROGRAM COMMAND (in ISO 6429)
|
||||
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD> % SOFT HYPHEN
|
||||
+<U061C> IGNORE;IGNORE;IGNORE;<U061C> % ARABIC LETTER MARK
|
||||
+<U070F> IGNORE;IGNORE;IGNORE;<U070F> % SYRIAC ABBREVIATION MARK
|
||||
+<U08E2> IGNORE;IGNORE;IGNORE;<U08E2> % ARABIC DISPUTED END OF AYAH
|
||||
+<U180B> IGNORE;IGNORE;IGNORE;<U180B> % MONGOLIAN FREE VARIATION SELECTOR ONE
|
||||
+<U180C> IGNORE;IGNORE;IGNORE;<U180C> % MONGOLIAN FREE VARIATION SELECTOR TWO
|
||||
+<U180D> IGNORE;IGNORE;IGNORE;<U180D> % MONGOLIAN FREE VARIATION SELECTOR THREE
|
||||
+<U180E> IGNORE;IGNORE;IGNORE;<U180E> % MONGOLIAN VOWEL SEPARATOR
|
||||
+<U200B> IGNORE;IGNORE;IGNORE;<U200B> % ZERO WIDTH SPACE
|
||||
+<U200C> IGNORE;IGNORE;IGNORE;<U200C> % ZERO WIDTH NON-JOINER
|
||||
+<U200D> IGNORE;IGNORE;IGNORE;<U200D> % ZERO WIDTH JOINER
|
||||
+<U200E> IGNORE;IGNORE;IGNORE;<U200E> % LEFT-TO-RIGHT MARK
|
||||
+<U200F> IGNORE;IGNORE;IGNORE;<U200F> % RIGHT-TO-LEFT MARK
|
||||
+<U202A> IGNORE;IGNORE;IGNORE;<U202A> % LEFT-TO-RIGHT EMBEDDING
|
||||
+<U202B> IGNORE;IGNORE;IGNORE;<U202B> % RIGHT-TO-LEFT EMBEDDING
|
||||
+<U202C> IGNORE;IGNORE;IGNORE;<U202C> % POP DIRECTIONAL FORMATTING
|
||||
+<U202D> IGNORE;IGNORE;IGNORE;<U202D> % LEFT-TO-RIGHT OVERRIDE
|
||||
+<U202E> IGNORE;IGNORE;IGNORE;<U202E> % RIGHT-TO-LEFT OVERRIDE
|
||||
+<U2060> IGNORE;IGNORE;IGNORE;<U2060> % WORD JOINER
|
||||
+<U2066> IGNORE;IGNORE;IGNORE;<U2066> % LEFT-TO-RIGHT ISOLATE
|
||||
+<U2067> IGNORE;IGNORE;IGNORE;<U2067> % RIGHT-TO-LEFT ISOLATE
|
||||
+<U2068> IGNORE;IGNORE;IGNORE;<U2068> % FIRST STRONG ISOLATE
|
||||
+<U2069> IGNORE;IGNORE;IGNORE;<U2069> % POP DIRECTIONAL ISOLATE
|
||||
+<U206A> IGNORE;IGNORE;IGNORE;<U206A> % INHIBIT SYMMETRIC SWAPPING
|
||||
+<U206B> IGNORE;IGNORE;IGNORE;<U206B> % ACTIVATE SYMMETRIC SWAPPING
|
||||
+<U206C> IGNORE;IGNORE;IGNORE;<U206C> % INHIBIT ARABIC FORM SHAPING
|
||||
+<U206D> IGNORE;IGNORE;IGNORE;<U206D> % ACTIVATE ARABIC FORM SHAPING
|
||||
+<U206E> IGNORE;IGNORE;IGNORE;<U206E> % NATIONAL DIGIT SHAPES
|
||||
+<U206F> IGNORE;IGNORE;IGNORE;<U206F> % NOMINAL DIGIT SHAPES
|
||||
+<UFE00> IGNORE;IGNORE;IGNORE;<UFE00> % VARIATION SELECTOR-1
|
||||
+<UFE01> IGNORE;IGNORE;IGNORE;<UFE01> % VARIATION SELECTOR-2
|
||||
+<UFE02> IGNORE;IGNORE;IGNORE;<UFE02> % VARIATION SELECTOR-3
|
||||
+<UFE03> IGNORE;IGNORE;IGNORE;<UFE03> % VARIATION SELECTOR-4
|
||||
+<UFE04> IGNORE;IGNORE;IGNORE;<UFE04> % VARIATION SELECTOR-5
|
||||
+<UFE05> IGNORE;IGNORE;IGNORE;<UFE05> % VARIATION SELECTOR-6
|
||||
+<UFE06> IGNORE;IGNORE;IGNORE;<UFE06> % VARIATION SELECTOR-7
|
||||
+<UFE07> IGNORE;IGNORE;IGNORE;<UFE07> % VARIATION SELECTOR-8
|
||||
+<UFE08> IGNORE;IGNORE;IGNORE;<UFE08> % VARIATION SELECTOR-9
|
||||
+<UFE09> IGNORE;IGNORE;IGNORE;<UFE09> % VARIATION SELECTOR-10
|
||||
+<UFE0A> IGNORE;IGNORE;IGNORE;<UFE0A> % VARIATION SELECTOR-11
|
||||
+<UFE0B> IGNORE;IGNORE;IGNORE;<UFE0B> % VARIATION SELECTOR-12
|
||||
+<UFE0C> IGNORE;IGNORE;IGNORE;<UFE0C> % VARIATION SELECTOR-13
|
||||
+<UFE0D> IGNORE;IGNORE;IGNORE;<UFE0D> % VARIATION SELECTOR-14
|
||||
+<UFE0E> IGNORE;IGNORE;IGNORE;<UFE0E> % VARIATION SELECTOR-15
|
||||
+<UFE0F> IGNORE;IGNORE;IGNORE;<UFE0F> % VARIATION SELECTOR-16
|
||||
+<UFEFF> IGNORE;IGNORE;IGNORE;<UFEFF> % ZERO WIDTH NO-BREAK SPACE
|
||||
+<UFFF9> IGNORE;IGNORE;IGNORE;<UFFF9> % INTERLINEAR ANNOTATION ANCHOR
|
||||
+<UFFFA> IGNORE;IGNORE;IGNORE;<UFFFA> % INTERLINEAR ANNOTATION SEPARATOR
|
||||
+<UFFFB> IGNORE;IGNORE;IGNORE;<UFFFB> % INTERLINEAR ANNOTATION TERMINATOR
|
||||
+<U0001BCA0> IGNORE;IGNORE;IGNORE;<U0001BCA0> % SHORTHAND FORMAT LETTER OVERLAP
|
||||
+<U0001BCA1> IGNORE;IGNORE;IGNORE;<U0001BCA1> % SHORTHAND FORMAT CONTINUING OVERLAP
|
||||
+<U0001BCA2> IGNORE;IGNORE;IGNORE;<U0001BCA2> % SHORTHAND FORMAT DOWN STEP
|
||||
+<U0001BCA3> IGNORE;IGNORE;IGNORE;<U0001BCA3> % SHORTHAND FORMAT UP STEP
|
||||
+<U0001D173> IGNORE;IGNORE;IGNORE;<U0001D173> % MUSICAL SYMBOL BEGIN BEAM
|
||||
+<U0001D174> IGNORE;IGNORE;IGNORE;<U0001D174> % MUSICAL SYMBOL END BEAM
|
||||
+<U0001D175> IGNORE;IGNORE;IGNORE;<U0001D175> % MUSICAL SYMBOL BEGIN TIE
|
||||
+<U0001D176> IGNORE;IGNORE;IGNORE;<U0001D176> % MUSICAL SYMBOL END TIE
|
||||
+<U0001D177> IGNORE;IGNORE;IGNORE;<U0001D177> % MUSICAL SYMBOL BEGIN SLUR
|
||||
+<U0001D178> IGNORE;IGNORE;IGNORE;<U0001D178> % MUSICAL SYMBOL END SLUR
|
||||
+<U0001D179> IGNORE;IGNORE;IGNORE;<U0001D179> % MUSICAL SYMBOL BEGIN PHRASE
|
||||
+<U0001D17A> IGNORE;IGNORE;IGNORE;<U0001D17A> % MUSICAL SYMBOL END PHRASE
|
||||
+<U000E0001> IGNORE;IGNORE;IGNORE;<U000E0001> % LANGUAGE TAG
|
||||
+<U000E0020> IGNORE;IGNORE;IGNORE;<U000E0020> % TAG SPACE
|
||||
+<U000E0021> IGNORE;IGNORE;IGNORE;<U000E0021> % TAG EXCLAMATION MARK
|
||||
+<U000E0022> IGNORE;IGNORE;IGNORE;<U000E0022> % TAG QUOTATION MARK
|
||||
+<U000E0023> IGNORE;IGNORE;IGNORE;<U000E0023> % TAG NUMBER SIGN
|
||||
+<U000E0024> IGNORE;IGNORE;IGNORE;<U000E0024> % TAG DOLLAR SIGN
|
||||
+<U000E0025> IGNORE;IGNORE;IGNORE;<U000E0025> % TAG PERCENT SIGN
|
||||
+<U000E0026> IGNORE;IGNORE;IGNORE;<U000E0026> % TAG AMPERSAND
|
||||
+<U000E0027> IGNORE;IGNORE;IGNORE;<U000E0027> % TAG APOSTROPHE
|
||||
+<U000E0028> IGNORE;IGNORE;IGNORE;<U000E0028> % TAG LEFT PARENTHESIS
|
||||
+<U000E0029> IGNORE;IGNORE;IGNORE;<U000E0029> % TAG RIGHT PARENTHESIS
|
||||
+<U000E002A> IGNORE;IGNORE;IGNORE;<U000E002A> % TAG ASTERISK
|
||||
+<U000E002B> IGNORE;IGNORE;IGNORE;<U000E002B> % TAG PLUS SIGN
|
||||
+<U000E002C> IGNORE;IGNORE;IGNORE;<U000E002C> % TAG COMMA
|
||||
+<U000E002D> IGNORE;IGNORE;IGNORE;<U000E002D> % TAG HYPHEN-MINUS
|
||||
+<U000E002E> IGNORE;IGNORE;IGNORE;<U000E002E> % TAG FULL STOP
|
||||
+<U000E002F> IGNORE;IGNORE;IGNORE;<U000E002F> % TAG SOLIDUS
|
||||
+<U000E0030> IGNORE;IGNORE;IGNORE;<U000E0030> % TAG DIGIT ZERO
|
||||
+<U000E0031> IGNORE;IGNORE;IGNORE;<U000E0031> % TAG DIGIT ONE
|
||||
+<U000E0032> IGNORE;IGNORE;IGNORE;<U000E0032> % TAG DIGIT TWO
|
||||
+<U000E0033> IGNORE;IGNORE;IGNORE;<U000E0033> % TAG DIGIT THREE
|
||||
+<U000E0034> IGNORE;IGNORE;IGNORE;<U000E0034> % TAG DIGIT FOUR
|
||||
+<U000E0035> IGNORE;IGNORE;IGNORE;<U000E0035> % TAG DIGIT FIVE
|
||||
+<U000E0036> IGNORE;IGNORE;IGNORE;<U000E0036> % TAG DIGIT SIX
|
||||
+<U000E0037> IGNORE;IGNORE;IGNORE;<U000E0037> % TAG DIGIT SEVEN
|
||||
+<U000E0038> IGNORE;IGNORE;IGNORE;<U000E0038> % TAG DIGIT EIGHT
|
||||
+<U000E0039> IGNORE;IGNORE;IGNORE;<U000E0039> % TAG DIGIT NINE
|
||||
+<U000E003A> IGNORE;IGNORE;IGNORE;<U000E003A> % TAG COLON
|
||||
+<U000E003B> IGNORE;IGNORE;IGNORE;<U000E003B> % TAG SEMICOLON
|
||||
+<U000E003C> IGNORE;IGNORE;IGNORE;<U000E003C> % TAG LESS-THAN SIGN
|
||||
+<U000E003D> IGNORE;IGNORE;IGNORE;<U000E003D> % TAG EQUALS SIGN
|
||||
+<U000E003E> IGNORE;IGNORE;IGNORE;<U000E003E> % TAG GREATER-THAN SIGN
|
||||
+<U000E003F> IGNORE;IGNORE;IGNORE;<U000E003F> % TAG QUESTION MARK
|
||||
+<U000E0040> IGNORE;IGNORE;IGNORE;<U000E0040> % TAG COMMERCIAL AT
|
||||
+<U000E0041> IGNORE;IGNORE;IGNORE;<U000E0041> % TAG LATIN CAPITAL LETTER A
|
||||
+<U000E0042> IGNORE;IGNORE;IGNORE;<U000E0042> % TAG LATIN CAPITAL LETTER B
|
||||
+<U000E0043> IGNORE;IGNORE;IGNORE;<U000E0043> % TAG LATIN CAPITAL LETTER C
|
||||
+<U000E0044> IGNORE;IGNORE;IGNORE;<U000E0044> % TAG LATIN CAPITAL LETTER D
|
||||
+<U000E0045> IGNORE;IGNORE;IGNORE;<U000E0045> % TAG LATIN CAPITAL LETTER E
|
||||
+<U000E0046> IGNORE;IGNORE;IGNORE;<U000E0046> % TAG LATIN CAPITAL LETTER F
|
||||
+<U000E0047> IGNORE;IGNORE;IGNORE;<U000E0047> % TAG LATIN CAPITAL LETTER G
|
||||
+<U000E0048> IGNORE;IGNORE;IGNORE;<U000E0048> % TAG LATIN CAPITAL LETTER H
|
||||
+<U000E0049> IGNORE;IGNORE;IGNORE;<U000E0049> % TAG LATIN CAPITAL LETTER I
|
||||
+<U000E004A> IGNORE;IGNORE;IGNORE;<U000E004A> % TAG LATIN CAPITAL LETTER J
|
||||
+<U000E004B> IGNORE;IGNORE;IGNORE;<U000E004B> % TAG LATIN CAPITAL LETTER K
|
||||
+<U000E004C> IGNORE;IGNORE;IGNORE;<U000E004C> % TAG LATIN CAPITAL LETTER L
|
||||
+<U000E004D> IGNORE;IGNORE;IGNORE;<U000E004D> % TAG LATIN CAPITAL LETTER M
|
||||
+<U000E004E> IGNORE;IGNORE;IGNORE;<U000E004E> % TAG LATIN CAPITAL LETTER N
|
||||
+<U000E004F> IGNORE;IGNORE;IGNORE;<U000E004F> % TAG LATIN CAPITAL LETTER O
|
||||
+<U000E0050> IGNORE;IGNORE;IGNORE;<U000E0050> % TAG LATIN CAPITAL LETTER P
|
||||
+<U000E0051> IGNORE;IGNORE;IGNORE;<U000E0051> % TAG LATIN CAPITAL LETTER Q
|
||||
+<U000E0052> IGNORE;IGNORE;IGNORE;<U000E0052> % TAG LATIN CAPITAL LETTER R
|
||||
+<U000E0053> IGNORE;IGNORE;IGNORE;<U000E0053> % TAG LATIN CAPITAL LETTER S
|
||||
+<U000E0054> IGNORE;IGNORE;IGNORE;<U000E0054> % TAG LATIN CAPITAL LETTER T
|
||||
+<U000E0055> IGNORE;IGNORE;IGNORE;<U000E0055> % TAG LATIN CAPITAL LETTER U
|
||||
+<U000E0056> IGNORE;IGNORE;IGNORE;<U000E0056> % TAG LATIN CAPITAL LETTER V
|
||||
+<U000E0057> IGNORE;IGNORE;IGNORE;<U000E0057> % TAG LATIN CAPITAL LETTER W
|
||||
+<U000E0058> IGNORE;IGNORE;IGNORE;<U000E0058> % TAG LATIN CAPITAL LETTER X
|
||||
+<U000E0059> IGNORE;IGNORE;IGNORE;<U000E0059> % TAG LATIN CAPITAL LETTER Y
|
||||
+<U000E005A> IGNORE;IGNORE;IGNORE;<U000E005A> % TAG LATIN CAPITAL LETTER Z
|
||||
+<U000E005B> IGNORE;IGNORE;IGNORE;<U000E005B> % TAG LEFT SQUARE BRACKET
|
||||
+<U000E005C> IGNORE;IGNORE;IGNORE;<U000E005C> % TAG REVERSE SOLIDUS
|
||||
+<U000E005D> IGNORE;IGNORE;IGNORE;<U000E005D> % TAG RIGHT SQUARE BRACKET
|
||||
+<U000E005E> IGNORE;IGNORE;IGNORE;<U000E005E> % TAG CIRCUMFLEX ACCENT
|
||||
+<U000E005F> IGNORE;IGNORE;IGNORE;<U000E005F> % TAG LOW LINE
|
||||
+<U000E0060> IGNORE;IGNORE;IGNORE;<U000E0060> % TAG GRAVE ACCENT
|
||||
+<U000E0061> IGNORE;IGNORE;IGNORE;<U000E0061> % TAG LATIN SMALL LETTER A
|
||||
+<U000E0062> IGNORE;IGNORE;IGNORE;<U000E0062> % TAG LATIN SMALL LETTER B
|
||||
+<U000E0063> IGNORE;IGNORE;IGNORE;<U000E0063> % TAG LATIN SMALL LETTER C
|
||||
+<U000E0064> IGNORE;IGNORE;IGNORE;<U000E0064> % TAG LATIN SMALL LETTER D
|
||||
+<U000E0065> IGNORE;IGNORE;IGNORE;<U000E0065> % TAG LATIN SMALL LETTER E
|
||||
+<U000E0066> IGNORE;IGNORE;IGNORE;<U000E0066> % TAG LATIN SMALL LETTER F
|
||||
+<U000E0067> IGNORE;IGNORE;IGNORE;<U000E0067> % TAG LATIN SMALL LETTER G
|
||||
+<U000E0068> IGNORE;IGNORE;IGNORE;<U000E0068> % TAG LATIN SMALL LETTER H
|
||||
+<U000E0069> IGNORE;IGNORE;IGNORE;<U000E0069> % TAG LATIN SMALL LETTER I
|
||||
+<U000E006A> IGNORE;IGNORE;IGNORE;<U000E006A> % TAG LATIN SMALL LETTER J
|
||||
+<U000E006B> IGNORE;IGNORE;IGNORE;<U000E006B> % TAG LATIN SMALL LETTER K
|
||||
+<U000E006C> IGNORE;IGNORE;IGNORE;<U000E006C> % TAG LATIN SMALL LETTER L
|
||||
+<U000E006D> IGNORE;IGNORE;IGNORE;<U000E006D> % TAG LATIN SMALL LETTER M
|
||||
+<U000E006E> IGNORE;IGNORE;IGNORE;<U000E006E> % TAG LATIN SMALL LETTER N
|
||||
+<U000E006F> IGNORE;IGNORE;IGNORE;<U000E006F> % TAG LATIN SMALL LETTER O
|
||||
+<U000E0070> IGNORE;IGNORE;IGNORE;<U000E0070> % TAG LATIN SMALL LETTER P
|
||||
+<U000E0071> IGNORE;IGNORE;IGNORE;<U000E0071> % TAG LATIN SMALL LETTER Q
|
||||
+<U000E0072> IGNORE;IGNORE;IGNORE;<U000E0072> % TAG LATIN SMALL LETTER R
|
||||
+<U000E0073> IGNORE;IGNORE;IGNORE;<U000E0073> % TAG LATIN SMALL LETTER S
|
||||
+<U000E0074> IGNORE;IGNORE;IGNORE;<U000E0074> % TAG LATIN SMALL LETTER T
|
||||
+<U000E0075> IGNORE;IGNORE;IGNORE;<U000E0075> % TAG LATIN SMALL LETTER U
|
||||
+<U000E0076> IGNORE;IGNORE;IGNORE;<U000E0076> % TAG LATIN SMALL LETTER V
|
||||
+<U000E0077> IGNORE;IGNORE;IGNORE;<U000E0077> % TAG LATIN SMALL LETTER W
|
||||
+<U000E0078> IGNORE;IGNORE;IGNORE;<U000E0078> % TAG LATIN SMALL LETTER X
|
||||
+<U000E0079> IGNORE;IGNORE;IGNORE;<U000E0079> % TAG LATIN SMALL LETTER Y
|
||||
+<U000E007A> IGNORE;IGNORE;IGNORE;<U000E007A> % TAG LATIN SMALL LETTER Z
|
||||
+<U000E007B> IGNORE;IGNORE;IGNORE;<U000E007B> % TAG LEFT CURLY BRACKET
|
||||
+<U000E007C> IGNORE;IGNORE;IGNORE;<U000E007C> % TAG VERTICAL LINE
|
||||
+<U000E007D> IGNORE;IGNORE;IGNORE;<U000E007D> % TAG RIGHT CURLY BRACKET
|
||||
+<U000E007E> IGNORE;IGNORE;IGNORE;<U000E007E> % TAG TILDE
|
||||
+<U000E007F> IGNORE;IGNORE;IGNORE;<U000E007F> % CANCEL TAG
|
||||
+<U000E0100> IGNORE;IGNORE;IGNORE;<U000E0100> % VARIATION SELECTOR-17
|
||||
+<U000E0101> IGNORE;IGNORE;IGNORE;<U000E0101> % VARIATION SELECTOR-18
|
||||
+<U000E0102> IGNORE;IGNORE;IGNORE;<U000E0102> % VARIATION SELECTOR-19
|
||||
+<U000E0103> IGNORE;IGNORE;IGNORE;<U000E0103> % VARIATION SELECTOR-20
|
||||
+<U000E0104> IGNORE;IGNORE;IGNORE;<U000E0104> % VARIATION SELECTOR-21
|
||||
+<U000E0105> IGNORE;IGNORE;IGNORE;<U000E0105> % VARIATION SELECTOR-22
|
||||
+<U000E0106> IGNORE;IGNORE;IGNORE;<U000E0106> % VARIATION SELECTOR-23
|
||||
+<U000E0107> IGNORE;IGNORE;IGNORE;<U000E0107> % VARIATION SELECTOR-24
|
||||
+<U000E0108> IGNORE;IGNORE;IGNORE;<U000E0108> % VARIATION SELECTOR-25
|
||||
+<U000E0109> IGNORE;IGNORE;IGNORE;<U000E0109> % VARIATION SELECTOR-26
|
||||
+<U000E010A> IGNORE;IGNORE;IGNORE;<U000E010A> % VARIATION SELECTOR-27
|
||||
+<U000E010B> IGNORE;IGNORE;IGNORE;<U000E010B> % VARIATION SELECTOR-28
|
||||
+<U000E010C> IGNORE;IGNORE;IGNORE;<U000E010C> % VARIATION SELECTOR-29
|
||||
+<U000E010D> IGNORE;IGNORE;IGNORE;<U000E010D> % VARIATION SELECTOR-30
|
||||
+<U000E010E> IGNORE;IGNORE;IGNORE;<U000E010E> % VARIATION SELECTOR-31
|
||||
+<U000E010F> IGNORE;IGNORE;IGNORE;<U000E010F> % VARIATION SELECTOR-32
|
||||
+<U000E0110> IGNORE;IGNORE;IGNORE;<U000E0110> % VARIATION SELECTOR-33
|
||||
+<U000E0111> IGNORE;IGNORE;IGNORE;<U000E0111> % VARIATION SELECTOR-34
|
||||
+<U000E0112> IGNORE;IGNORE;IGNORE;<U000E0112> % VARIATION SELECTOR-35
|
||||
+<U000E0113> IGNORE;IGNORE;IGNORE;<U000E0113> % VARIATION SELECTOR-36
|
||||
+<U000E0114> IGNORE;IGNORE;IGNORE;<U000E0114> % VARIATION SELECTOR-37
|
||||
+<U000E0115> IGNORE;IGNORE;IGNORE;<U000E0115> % VARIATION SELECTOR-38
|
||||
+<U000E0116> IGNORE;IGNORE;IGNORE;<U000E0116> % VARIATION SELECTOR-39
|
||||
+<U000E0117> IGNORE;IGNORE;IGNORE;<U000E0117> % VARIATION SELECTOR-40
|
||||
+<U000E0118> IGNORE;IGNORE;IGNORE;<U000E0118> % VARIATION SELECTOR-41
|
||||
+<U000E0119> IGNORE;IGNORE;IGNORE;<U000E0119> % VARIATION SELECTOR-42
|
||||
+<U000E011A> IGNORE;IGNORE;IGNORE;<U000E011A> % VARIATION SELECTOR-43
|
||||
+<U000E011B> IGNORE;IGNORE;IGNORE;<U000E011B> % VARIATION SELECTOR-44
|
||||
+<U000E011C> IGNORE;IGNORE;IGNORE;<U000E011C> % VARIATION SELECTOR-45
|
||||
+<U000E011D> IGNORE;IGNORE;IGNORE;<U000E011D> % VARIATION SELECTOR-46
|
||||
+<U000E011E> IGNORE;IGNORE;IGNORE;<U000E011E> % VARIATION SELECTOR-47
|
||||
+<U000E011F> IGNORE;IGNORE;IGNORE;<U000E011F> % VARIATION SELECTOR-48
|
||||
+<U000E0120> IGNORE;IGNORE;IGNORE;<U000E0120> % VARIATION SELECTOR-49
|
||||
+<U000E0121> IGNORE;IGNORE;IGNORE;<U000E0121> % VARIATION SELECTOR-50
|
||||
+<U000E0122> IGNORE;IGNORE;IGNORE;<U000E0122> % VARIATION SELECTOR-51
|
||||
+<U000E0123> IGNORE;IGNORE;IGNORE;<U000E0123> % VARIATION SELECTOR-52
|
||||
+<U000E0124> IGNORE;IGNORE;IGNORE;<U000E0124> % VARIATION SELECTOR-53
|
||||
+<U000E0125> IGNORE;IGNORE;IGNORE;<U000E0125> % VARIATION SELECTOR-54
|
||||
+<U000E0126> IGNORE;IGNORE;IGNORE;<U000E0126> % VARIATION SELECTOR-55
|
||||
+<U000E0127> IGNORE;IGNORE;IGNORE;<U000E0127> % VARIATION SELECTOR-56
|
||||
+<U000E0128> IGNORE;IGNORE;IGNORE;<U000E0128> % VARIATION SELECTOR-57
|
||||
+<U000E0129> IGNORE;IGNORE;IGNORE;<U000E0129> % VARIATION SELECTOR-58
|
||||
+<U000E012A> IGNORE;IGNORE;IGNORE;<U000E012A> % VARIATION SELECTOR-59
|
||||
+<U000E012B> IGNORE;IGNORE;IGNORE;<U000E012B> % VARIATION SELECTOR-60
|
||||
+<U000E012C> IGNORE;IGNORE;IGNORE;<U000E012C> % VARIATION SELECTOR-61
|
||||
+<U000E012D> IGNORE;IGNORE;IGNORE;<U000E012D> % VARIATION SELECTOR-62
|
||||
+<U000E012E> IGNORE;IGNORE;IGNORE;<U000E012E> % VARIATION SELECTOR-63
|
||||
+<U000E012F> IGNORE;IGNORE;IGNORE;<U000E012F> % VARIATION SELECTOR-64
|
||||
+<U000E0130> IGNORE;IGNORE;IGNORE;<U000E0130> % VARIATION SELECTOR-65
|
||||
+<U000E0131> IGNORE;IGNORE;IGNORE;<U000E0131> % VARIATION SELECTOR-66
|
||||
+<U000E0132> IGNORE;IGNORE;IGNORE;<U000E0132> % VARIATION SELECTOR-67
|
||||
+<U000E0133> IGNORE;IGNORE;IGNORE;<U000E0133> % VARIATION SELECTOR-68
|
||||
+<U000E0134> IGNORE;IGNORE;IGNORE;<U000E0134> % VARIATION SELECTOR-69
|
||||
+<U000E0135> IGNORE;IGNORE;IGNORE;<U000E0135> % VARIATION SELECTOR-70
|
||||
+<U000E0136> IGNORE;IGNORE;IGNORE;<U000E0136> % VARIATION SELECTOR-71
|
||||
+<U000E0137> IGNORE;IGNORE;IGNORE;<U000E0137> % VARIATION SELECTOR-72
|
||||
+<U000E0138> IGNORE;IGNORE;IGNORE;<U000E0138> % VARIATION SELECTOR-73
|
||||
+<U000E0139> IGNORE;IGNORE;IGNORE;<U000E0139> % VARIATION SELECTOR-74
|
||||
+<U000E013A> IGNORE;IGNORE;IGNORE;<U000E013A> % VARIATION SELECTOR-75
|
||||
+<U000E013B> IGNORE;IGNORE;IGNORE;<U000E013B> % VARIATION SELECTOR-76
|
||||
+<U000E013C> IGNORE;IGNORE;IGNORE;<U000E013C> % VARIATION SELECTOR-77
|
||||
+<U000E013D> IGNORE;IGNORE;IGNORE;<U000E013D> % VARIATION SELECTOR-78
|
||||
+<U000E013E> IGNORE;IGNORE;IGNORE;<U000E013E> % VARIATION SELECTOR-79
|
||||
+<U000E013F> IGNORE;IGNORE;IGNORE;<U000E013F> % VARIATION SELECTOR-80
|
||||
+<U000E0140> IGNORE;IGNORE;IGNORE;<U000E0140> % VARIATION SELECTOR-81
|
||||
+<U000E0141> IGNORE;IGNORE;IGNORE;<U000E0141> % VARIATION SELECTOR-82
|
||||
+<U000E0142> IGNORE;IGNORE;IGNORE;<U000E0142> % VARIATION SELECTOR-83
|
||||
+<U000E0143> IGNORE;IGNORE;IGNORE;<U000E0143> % VARIATION SELECTOR-84
|
||||
+<U000E0144> IGNORE;IGNORE;IGNORE;<U000E0144> % VARIATION SELECTOR-85
|
||||
+<U000E0145> IGNORE;IGNORE;IGNORE;<U000E0145> % VARIATION SELECTOR-86
|
||||
+<U000E0146> IGNORE;IGNORE;IGNORE;<U000E0146> % VARIATION SELECTOR-87
|
||||
+<U000E0147> IGNORE;IGNORE;IGNORE;<U000E0147> % VARIATION SELECTOR-88
|
||||
+<U000E0148> IGNORE;IGNORE;IGNORE;<U000E0148> % VARIATION SELECTOR-89
|
||||
+<U000E0149> IGNORE;IGNORE;IGNORE;<U000E0149> % VARIATION SELECTOR-90
|
||||
+<U000E014A> IGNORE;IGNORE;IGNORE;<U000E014A> % VARIATION SELECTOR-91
|
||||
+<U000E014B> IGNORE;IGNORE;IGNORE;<U000E014B> % VARIATION SELECTOR-92
|
||||
+<U000E014C> IGNORE;IGNORE;IGNORE;<U000E014C> % VARIATION SELECTOR-93
|
||||
+<U000E014D> IGNORE;IGNORE;IGNORE;<U000E014D> % VARIATION SELECTOR-94
|
||||
+<U000E014E> IGNORE;IGNORE;IGNORE;<U000E014E> % VARIATION SELECTOR-95
|
||||
+<U000E014F> IGNORE;IGNORE;IGNORE;<U000E014F> % VARIATION SELECTOR-96
|
||||
+<U000E0150> IGNORE;IGNORE;IGNORE;<U000E0150> % VARIATION SELECTOR-97
|
||||
+<U000E0151> IGNORE;IGNORE;IGNORE;<U000E0151> % VARIATION SELECTOR-98
|
||||
+<U000E0152> IGNORE;IGNORE;IGNORE;<U000E0152> % VARIATION SELECTOR-99
|
||||
+<U000E0153> IGNORE;IGNORE;IGNORE;<U000E0153> % VARIATION SELECTOR-100
|
||||
+<U000E0154> IGNORE;IGNORE;IGNORE;<U000E0154> % VARIATION SELECTOR-101
|
||||
+<U000E0155> IGNORE;IGNORE;IGNORE;<U000E0155> % VARIATION SELECTOR-102
|
||||
+<U000E0156> IGNORE;IGNORE;IGNORE;<U000E0156> % VARIATION SELECTOR-103
|
||||
+<U000E0157> IGNORE;IGNORE;IGNORE;<U000E0157> % VARIATION SELECTOR-104
|
||||
+<U000E0158> IGNORE;IGNORE;IGNORE;<U000E0158> % VARIATION SELECTOR-105
|
||||
+<U000E0159> IGNORE;IGNORE;IGNORE;<U000E0159> % VARIATION SELECTOR-106
|
||||
+<U000E015A> IGNORE;IGNORE;IGNORE;<U000E015A> % VARIATION SELECTOR-107
|
||||
+<U000E015B> IGNORE;IGNORE;IGNORE;<U000E015B> % VARIATION SELECTOR-108
|
||||
+<U000E015C> IGNORE;IGNORE;IGNORE;<U000E015C> % VARIATION SELECTOR-109
|
||||
+<U000E015D> IGNORE;IGNORE;IGNORE;<U000E015D> % VARIATION SELECTOR-110
|
||||
+<U000E015E> IGNORE;IGNORE;IGNORE;<U000E015E> % VARIATION SELECTOR-111
|
||||
+<U000E015F> IGNORE;IGNORE;IGNORE;<U000E015F> % VARIATION SELECTOR-112
|
||||
+<U000E0160> IGNORE;IGNORE;IGNORE;<U000E0160> % VARIATION SELECTOR-113
|
||||
+<U000E0161> IGNORE;IGNORE;IGNORE;<U000E0161> % VARIATION SELECTOR-114
|
||||
+<U000E0162> IGNORE;IGNORE;IGNORE;<U000E0162> % VARIATION SELECTOR-115
|
||||
+<U000E0163> IGNORE;IGNORE;IGNORE;<U000E0163> % VARIATION SELECTOR-116
|
||||
+<U000E0164> IGNORE;IGNORE;IGNORE;<U000E0164> % VARIATION SELECTOR-117
|
||||
+<U000E0165> IGNORE;IGNORE;IGNORE;<U000E0165> % VARIATION SELECTOR-118
|
||||
+<U000E0166> IGNORE;IGNORE;IGNORE;<U000E0166> % VARIATION SELECTOR-119
|
||||
+<U000E0167> IGNORE;IGNORE;IGNORE;<U000E0167> % VARIATION SELECTOR-120
|
||||
+<U000E0168> IGNORE;IGNORE;IGNORE;<U000E0168> % VARIATION SELECTOR-121
|
||||
+<U000E0169> IGNORE;IGNORE;IGNORE;<U000E0169> % VARIATION SELECTOR-122
|
||||
+<U000E016A> IGNORE;IGNORE;IGNORE;<U000E016A> % VARIATION SELECTOR-123
|
||||
+<U000E016B> IGNORE;IGNORE;IGNORE;<U000E016B> % VARIATION SELECTOR-124
|
||||
+<U000E016C> IGNORE;IGNORE;IGNORE;<U000E016C> % VARIATION SELECTOR-125
|
||||
+<U000E016D> IGNORE;IGNORE;IGNORE;<U000E016D> % VARIATION SELECTOR-126
|
||||
+<U000E016E> IGNORE;IGNORE;IGNORE;<U000E016E> % VARIATION SELECTOR-127
|
||||
+<U000E016F> IGNORE;IGNORE;IGNORE;<U000E016F> % VARIATION SELECTOR-128
|
||||
+<U000E0170> IGNORE;IGNORE;IGNORE;<U000E0170> % VARIATION SELECTOR-129
|
||||
+<U000E0171> IGNORE;IGNORE;IGNORE;<U000E0171> % VARIATION SELECTOR-130
|
||||
+<U000E0172> IGNORE;IGNORE;IGNORE;<U000E0172> % VARIATION SELECTOR-131
|
||||
+<U000E0173> IGNORE;IGNORE;IGNORE;<U000E0173> % VARIATION SELECTOR-132
|
||||
+<U000E0174> IGNORE;IGNORE;IGNORE;<U000E0174> % VARIATION SELECTOR-133
|
||||
+<U000E0175> IGNORE;IGNORE;IGNORE;<U000E0175> % VARIATION SELECTOR-134
|
||||
+<U000E0176> IGNORE;IGNORE;IGNORE;<U000E0176> % VARIATION SELECTOR-135
|
||||
+<U000E0177> IGNORE;IGNORE;IGNORE;<U000E0177> % VARIATION SELECTOR-136
|
||||
+<U000E0178> IGNORE;IGNORE;IGNORE;<U000E0178> % VARIATION SELECTOR-137
|
||||
+<U000E0179> IGNORE;IGNORE;IGNORE;<U000E0179> % VARIATION SELECTOR-138
|
||||
+<U000E017A> IGNORE;IGNORE;IGNORE;<U000E017A> % VARIATION SELECTOR-139
|
||||
+<U000E017B> IGNORE;IGNORE;IGNORE;<U000E017B> % VARIATION SELECTOR-140
|
||||
+<U000E017C> IGNORE;IGNORE;IGNORE;<U000E017C> % VARIATION SELECTOR-141
|
||||
+<U000E017D> IGNORE;IGNORE;IGNORE;<U000E017D> % VARIATION SELECTOR-142
|
||||
+<U000E017E> IGNORE;IGNORE;IGNORE;<U000E017E> % VARIATION SELECTOR-143
|
||||
+<U000E017F> IGNORE;IGNORE;IGNORE;<U000E017F> % VARIATION SELECTOR-144
|
||||
+<U000E0180> IGNORE;IGNORE;IGNORE;<U000E0180> % VARIATION SELECTOR-145
|
||||
+<U000E0181> IGNORE;IGNORE;IGNORE;<U000E0181> % VARIATION SELECTOR-146
|
||||
+<U000E0182> IGNORE;IGNORE;IGNORE;<U000E0182> % VARIATION SELECTOR-147
|
||||
+<U000E0183> IGNORE;IGNORE;IGNORE;<U000E0183> % VARIATION SELECTOR-148
|
||||
+<U000E0184> IGNORE;IGNORE;IGNORE;<U000E0184> % VARIATION SELECTOR-149
|
||||
+<U000E0185> IGNORE;IGNORE;IGNORE;<U000E0185> % VARIATION SELECTOR-150
|
||||
+<U000E0186> IGNORE;IGNORE;IGNORE;<U000E0186> % VARIATION SELECTOR-151
|
||||
+<U000E0187> IGNORE;IGNORE;IGNORE;<U000E0187> % VARIATION SELECTOR-152
|
||||
+<U000E0188> IGNORE;IGNORE;IGNORE;<U000E0188> % VARIATION SELECTOR-153
|
||||
+<U000E0189> IGNORE;IGNORE;IGNORE;<U000E0189> % VARIATION SELECTOR-154
|
||||
+<U000E018A> IGNORE;IGNORE;IGNORE;<U000E018A> % VARIATION SELECTOR-155
|
||||
+<U000E018B> IGNORE;IGNORE;IGNORE;<U000E018B> % VARIATION SELECTOR-156
|
||||
+<U000E018C> IGNORE;IGNORE;IGNORE;<U000E018C> % VARIATION SELECTOR-157
|
||||
+<U000E018D> IGNORE;IGNORE;IGNORE;<U000E018D> % VARIATION SELECTOR-158
|
||||
+<U000E018E> IGNORE;IGNORE;IGNORE;<U000E018E> % VARIATION SELECTOR-159
|
||||
+<U000E018F> IGNORE;IGNORE;IGNORE;<U000E018F> % VARIATION SELECTOR-160
|
||||
+<U000E0190> IGNORE;IGNORE;IGNORE;<U000E0190> % VARIATION SELECTOR-161
|
||||
+<U000E0191> IGNORE;IGNORE;IGNORE;<U000E0191> % VARIATION SELECTOR-162
|
||||
+<U000E0192> IGNORE;IGNORE;IGNORE;<U000E0192> % VARIATION SELECTOR-163
|
||||
+<U000E0193> IGNORE;IGNORE;IGNORE;<U000E0193> % VARIATION SELECTOR-164
|
||||
+<U000E0194> IGNORE;IGNORE;IGNORE;<U000E0194> % VARIATION SELECTOR-165
|
||||
+<U000E0195> IGNORE;IGNORE;IGNORE;<U000E0195> % VARIATION SELECTOR-166
|
||||
+<U000E0196> IGNORE;IGNORE;IGNORE;<U000E0196> % VARIATION SELECTOR-167
|
||||
+<U000E0197> IGNORE;IGNORE;IGNORE;<U000E0197> % VARIATION SELECTOR-168
|
||||
+<U000E0198> IGNORE;IGNORE;IGNORE;<U000E0198> % VARIATION SELECTOR-169
|
||||
+<U000E0199> IGNORE;IGNORE;IGNORE;<U000E0199> % VARIATION SELECTOR-170
|
||||
+<U000E019A> IGNORE;IGNORE;IGNORE;<U000E019A> % VARIATION SELECTOR-171
|
||||
+<U000E019B> IGNORE;IGNORE;IGNORE;<U000E019B> % VARIATION SELECTOR-172
|
||||
+<U000E019C> IGNORE;IGNORE;IGNORE;<U000E019C> % VARIATION SELECTOR-173
|
||||
+<U000E019D> IGNORE;IGNORE;IGNORE;<U000E019D> % VARIATION SELECTOR-174
|
||||
+<U000E019E> IGNORE;IGNORE;IGNORE;<U000E019E> % VARIATION SELECTOR-175
|
||||
+<U000E019F> IGNORE;IGNORE;IGNORE;<U000E019F> % VARIATION SELECTOR-176
|
||||
+<U000E01A0> IGNORE;IGNORE;IGNORE;<U000E01A0> % VARIATION SELECTOR-177
|
||||
+<U000E01A1> IGNORE;IGNORE;IGNORE;<U000E01A1> % VARIATION SELECTOR-178
|
||||
+<U000E01A2> IGNORE;IGNORE;IGNORE;<U000E01A2> % VARIATION SELECTOR-179
|
||||
+<U000E01A3> IGNORE;IGNORE;IGNORE;<U000E01A3> % VARIATION SELECTOR-180
|
||||
+<U000E01A4> IGNORE;IGNORE;IGNORE;<U000E01A4> % VARIATION SELECTOR-181
|
||||
+<U000E01A5> IGNORE;IGNORE;IGNORE;<U000E01A5> % VARIATION SELECTOR-182
|
||||
+<U000E01A6> IGNORE;IGNORE;IGNORE;<U000E01A6> % VARIATION SELECTOR-183
|
||||
+<U000E01A7> IGNORE;IGNORE;IGNORE;<U000E01A7> % VARIATION SELECTOR-184
|
||||
+<U000E01A8> IGNORE;IGNORE;IGNORE;<U000E01A8> % VARIATION SELECTOR-185
|
||||
+<U000E01A9> IGNORE;IGNORE;IGNORE;<U000E01A9> % VARIATION SELECTOR-186
|
||||
+<U000E01AA> IGNORE;IGNORE;IGNORE;<U000E01AA> % VARIATION SELECTOR-187
|
||||
+<U000E01AB> IGNORE;IGNORE;IGNORE;<U000E01AB> % VARIATION SELECTOR-188
|
||||
+<U000E01AC> IGNORE;IGNORE;IGNORE;<U000E01AC> % VARIATION SELECTOR-189
|
||||
+<U000E01AD> IGNORE;IGNORE;IGNORE;<U000E01AD> % VARIATION SELECTOR-190
|
||||
+<U000E01AE> IGNORE;IGNORE;IGNORE;<U000E01AE> % VARIATION SELECTOR-191
|
||||
+<U000E01AF> IGNORE;IGNORE;IGNORE;<U000E01AF> % VARIATION SELECTOR-192
|
||||
+<U000E01B0> IGNORE;IGNORE;IGNORE;<U000E01B0> % VARIATION SELECTOR-193
|
||||
+<U000E01B1> IGNORE;IGNORE;IGNORE;<U000E01B1> % VARIATION SELECTOR-194
|
||||
+<U000E01B2> IGNORE;IGNORE;IGNORE;<U000E01B2> % VARIATION SELECTOR-195
|
||||
+<U000E01B3> IGNORE;IGNORE;IGNORE;<U000E01B3> % VARIATION SELECTOR-196
|
||||
+<U000E01B4> IGNORE;IGNORE;IGNORE;<U000E01B4> % VARIATION SELECTOR-197
|
||||
+<U000E01B5> IGNORE;IGNORE;IGNORE;<U000E01B5> % VARIATION SELECTOR-198
|
||||
+<U000E01B6> IGNORE;IGNORE;IGNORE;<U000E01B6> % VARIATION SELECTOR-199
|
||||
+<U000E01B7> IGNORE;IGNORE;IGNORE;<U000E01B7> % VARIATION SELECTOR-200
|
||||
+<U000E01B8> IGNORE;IGNORE;IGNORE;<U000E01B8> % VARIATION SELECTOR-201
|
||||
+<U000E01B9> IGNORE;IGNORE;IGNORE;<U000E01B9> % VARIATION SELECTOR-202
|
||||
+<U000E01BA> IGNORE;IGNORE;IGNORE;<U000E01BA> % VARIATION SELECTOR-203
|
||||
+<U000E01BB> IGNORE;IGNORE;IGNORE;<U000E01BB> % VARIATION SELECTOR-204
|
||||
+<U000E01BC> IGNORE;IGNORE;IGNORE;<U000E01BC> % VARIATION SELECTOR-205
|
||||
+<U000E01BD> IGNORE;IGNORE;IGNORE;<U000E01BD> % VARIATION SELECTOR-206
|
||||
+<U000E01BE> IGNORE;IGNORE;IGNORE;<U000E01BE> % VARIATION SELECTOR-207
|
||||
+<U000E01BF> IGNORE;IGNORE;IGNORE;<U000E01BF> % VARIATION SELECTOR-208
|
||||
+<U000E01C0> IGNORE;IGNORE;IGNORE;<U000E01C0> % VARIATION SELECTOR-209
|
||||
+<U000E01C1> IGNORE;IGNORE;IGNORE;<U000E01C1> % VARIATION SELECTOR-210
|
||||
+<U000E01C2> IGNORE;IGNORE;IGNORE;<U000E01C2> % VARIATION SELECTOR-211
|
||||
+<U000E01C3> IGNORE;IGNORE;IGNORE;<U000E01C3> % VARIATION SELECTOR-212
|
||||
+<U000E01C4> IGNORE;IGNORE;IGNORE;<U000E01C4> % VARIATION SELECTOR-213
|
||||
+<U000E01C5> IGNORE;IGNORE;IGNORE;<U000E01C5> % VARIATION SELECTOR-214
|
||||
+<U000E01C6> IGNORE;IGNORE;IGNORE;<U000E01C6> % VARIATION SELECTOR-215
|
||||
+<U000E01C7> IGNORE;IGNORE;IGNORE;<U000E01C7> % VARIATION SELECTOR-216
|
||||
+<U000E01C8> IGNORE;IGNORE;IGNORE;<U000E01C8> % VARIATION SELECTOR-217
|
||||
+<U000E01C9> IGNORE;IGNORE;IGNORE;<U000E01C9> % VARIATION SELECTOR-218
|
||||
+<U000E01CA> IGNORE;IGNORE;IGNORE;<U000E01CA> % VARIATION SELECTOR-219
|
||||
+<U000E01CB> IGNORE;IGNORE;IGNORE;<U000E01CB> % VARIATION SELECTOR-220
|
||||
+<U000E01CC> IGNORE;IGNORE;IGNORE;<U000E01CC> % VARIATION SELECTOR-221
|
||||
+<U000E01CD> IGNORE;IGNORE;IGNORE;<U000E01CD> % VARIATION SELECTOR-222
|
||||
+<U000E01CE> IGNORE;IGNORE;IGNORE;<U000E01CE> % VARIATION SELECTOR-223
|
||||
+<U000E01CF> IGNORE;IGNORE;IGNORE;<U000E01CF> % VARIATION SELECTOR-224
|
||||
+<U000E01D0> IGNORE;IGNORE;IGNORE;<U000E01D0> % VARIATION SELECTOR-225
|
||||
+<U000E01D1> IGNORE;IGNORE;IGNORE;<U000E01D1> % VARIATION SELECTOR-226
|
||||
+<U000E01D2> IGNORE;IGNORE;IGNORE;<U000E01D2> % VARIATION SELECTOR-227
|
||||
+<U000E01D3> IGNORE;IGNORE;IGNORE;<U000E01D3> % VARIATION SELECTOR-228
|
||||
+<U000E01D4> IGNORE;IGNORE;IGNORE;<U000E01D4> % VARIATION SELECTOR-229
|
||||
+<U000E01D5> IGNORE;IGNORE;IGNORE;<U000E01D5> % VARIATION SELECTOR-230
|
||||
+<U000E01D6> IGNORE;IGNORE;IGNORE;<U000E01D6> % VARIATION SELECTOR-231
|
||||
+<U000E01D7> IGNORE;IGNORE;IGNORE;<U000E01D7> % VARIATION SELECTOR-232
|
||||
+<U000E01D8> IGNORE;IGNORE;IGNORE;<U000E01D8> % VARIATION SELECTOR-233
|
||||
+<U000E01D9> IGNORE;IGNORE;IGNORE;<U000E01D9> % VARIATION SELECTOR-234
|
||||
+<U000E01DA> IGNORE;IGNORE;IGNORE;<U000E01DA> % VARIATION SELECTOR-235
|
||||
+<U000E01DB> IGNORE;IGNORE;IGNORE;<U000E01DB> % VARIATION SELECTOR-236
|
||||
+<U000E01DC> IGNORE;IGNORE;IGNORE;<U000E01DC> % VARIATION SELECTOR-237
|
||||
+<U000E01DD> IGNORE;IGNORE;IGNORE;<U000E01DD> % VARIATION SELECTOR-238
|
||||
+<U000E01DE> IGNORE;IGNORE;IGNORE;<U000E01DE> % VARIATION SELECTOR-239
|
||||
+<U000E01DF> IGNORE;IGNORE;IGNORE;<U000E01DF> % VARIATION SELECTOR-240
|
||||
+<U000E01E0> IGNORE;IGNORE;IGNORE;<U000E01E0> % VARIATION SELECTOR-241
|
||||
+<U000E01E1> IGNORE;IGNORE;IGNORE;<U000E01E1> % VARIATION SELECTOR-242
|
||||
+<U000E01E2> IGNORE;IGNORE;IGNORE;<U000E01E2> % VARIATION SELECTOR-243
|
||||
+<U000E01E3> IGNORE;IGNORE;IGNORE;<U000E01E3> % VARIATION SELECTOR-244
|
||||
+<U000E01E4> IGNORE;IGNORE;IGNORE;<U000E01E4> % VARIATION SELECTOR-245
|
||||
+<U000E01E5> IGNORE;IGNORE;IGNORE;<U000E01E5> % VARIATION SELECTOR-246
|
||||
+<U000E01E6> IGNORE;IGNORE;IGNORE;<U000E01E6> % VARIATION SELECTOR-247
|
||||
+<U000E01E7> IGNORE;IGNORE;IGNORE;<U000E01E7> % VARIATION SELECTOR-248
|
||||
+<U000E01E8> IGNORE;IGNORE;IGNORE;<U000E01E8> % VARIATION SELECTOR-249
|
||||
+<U000E01E9> IGNORE;IGNORE;IGNORE;<U000E01E9> % VARIATION SELECTOR-250
|
||||
+<U000E01EA> IGNORE;IGNORE;IGNORE;<U000E01EA> % VARIATION SELECTOR-251
|
||||
+<U000E01EB> IGNORE;IGNORE;IGNORE;<U000E01EB> % VARIATION SELECTOR-252
|
||||
+<U000E01EC> IGNORE;IGNORE;IGNORE;<U000E01EC> % VARIATION SELECTOR-253
|
||||
+<U000E01ED> IGNORE;IGNORE;IGNORE;<U000E01ED> % VARIATION SELECTOR-254
|
||||
+<U000E01EE> IGNORE;IGNORE;IGNORE;<U000E01EE> % VARIATION SELECTOR-255
|
||||
+<U000E01EF> IGNORE;IGNORE;IGNORE;<U000E01EF> % VARIATION SELECTOR-256
|
||||
<U0009> IGNORE;IGNORE;IGNORE;<U0009> % HORIZONTAL TABULATION (in ISO 6429)
|
||||
<U000A> IGNORE;IGNORE;IGNORE;<U000A> % LINE FEED (in ISO 6429)
|
||||
<U000B> IGNORE;IGNORE;IGNORE;<U000B> % VERTICAL TABULATION (in ISO 6429)
|
|
@ -0,0 +1,244 @@
|
|||
commit 1f4df3bb2ac69f2e1947c2953379a7f19b5f0c35
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Tue Jan 30 15:45:05 2018 +0100
|
||||
|
||||
Add sections for various scripts to the iso14651_t1_common file
|
||||
|
||||
* localedata/locales/iso14651_t1_common: Add sections for various
|
||||
scripts to the iso14651_t1_common file.
|
||||
|
||||
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
|
||||
index 2d5fdfa87bb93fc8..a049c2fec526a1c7 100644
|
||||
--- a/localedata/locales/iso14651_t1_common
|
||||
+++ b/localedata/locales/iso14651_t1_common
|
||||
@@ -18,6 +18,29 @@ LC_COLLATE
|
||||
% Autogenerated Common Template Table
|
||||
% created from unidata-9.0.0.txt
|
||||
|
||||
+% Declaration of scripts
|
||||
+script <SPECIAL>
|
||||
+script <LATIN>
|
||||
+script <TIFINAGH>
|
||||
+script <ARAB>
|
||||
+script <HEBREU>
|
||||
+script <GREC>
|
||||
+script <CYRIL>
|
||||
+script <ARMENIAN>
|
||||
+script <GEORGIAN>
|
||||
+script <DEVANAGARI>
|
||||
+script <GUJARATI>
|
||||
+script <TELUGU>
|
||||
+script <GURUMUKHI>
|
||||
+script <KANNADA>
|
||||
+script <TAMIL>
|
||||
+script <SINHALA>
|
||||
+script <MALAYALAM>
|
||||
+script <BENGALI>
|
||||
+script <MYANMAR>
|
||||
+script <TIBETAN>
|
||||
+script <Ethi>
|
||||
+
|
||||
% Declaration of collating symbols
|
||||
|
||||
% Many symbols (such as <S0060>) are declared and assigned a weight
|
||||
@@ -54801,15 +54824,7 @@ collating-element <UAABC_AAAF> from "<UAABC><UAAAF>" % collation-element for reo
|
||||
|
||||
<SFFFF> % Largest primary weight
|
||||
|
||||
-ifdef DIACRIT_BACKWARD
|
||||
-order_start forward;backward;forward;forward,position
|
||||
-else
|
||||
-order_start forward;forward;forward;forward,position
|
||||
-endif
|
||||
-
|
||||
-% Decomment the first order_start line to specify directions for each level.
|
||||
-% To tailor for French accent handling, instead decomment the second
|
||||
-% order_start statement.
|
||||
+order_start <SPECIAL>;forward;backward;forward;forward,position
|
||||
|
||||
% Note: The following list of symbol_element's has been generated in
|
||||
% sorted order, to assist in understanding the string ordering that
|
||||
@@ -64305,6 +64320,12 @@ endif
|
||||
<U33E8> "<S0039><RFB40><TE5E5>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U33E8> % IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
|
||||
<U32C8> "<S0039><RFB40><TE708>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U32C8> % IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
|
||||
<U3361> "<S0039><RFB40><TF0B9>";"<BASE><BASE>";"<COMPAT><COMPAT>";<U3361> % IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
|
||||
+order_end
|
||||
+ifdef DIACRIT_BACKWARD
|
||||
+order_start <LATIN>;forward;backward;forward;forward,position
|
||||
+else
|
||||
+order_start <LATIN>;forward;forward;forward;forward,position
|
||||
+endif
|
||||
<U0061> <S0061>;<BASE>;<MIN>;<U0061> % LATIN SMALL LETTER A
|
||||
<UFF41> <S0061>;<BASE>;<WIDE>;<UFF41> % FULLWIDTH LATIN SMALL LETTER A
|
||||
<U0363> <S0061>;<BASE>;<COMPAT>;<U0363> % COMBINING LATIN SMALL LETTER A
|
||||
@@ -66739,6 +66760,8 @@ endif
|
||||
<U0001D736> <S03B1>;<BASE>;<FONT>;<U0001D736> % MATHEMATICAL BOLD ITALIC SMALL ALPHA
|
||||
<U0001D770> <S03B1>;<BASE>;<FONT>;<U0001D770> % MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
|
||||
<U0001D7AA> <S03B1>;<BASE>;<FONT>;<U0001D7AA> % MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
|
||||
+order_end
|
||||
+order_start <GREC>;forward;forward;forward;forward,position
|
||||
<U0391> <S03B1>;<BASE>;<CAP>;<U0391> % GREEK CAPITAL LETTER ALPHA
|
||||
<U0001D6A8> <S03B1>;<BASE>;<FONTCAP>;<U0001D6A8> % MATHEMATICAL BOLD CAPITAL ALPHA
|
||||
<U0001D6E2> <S03B1>;<BASE>;<FONTCAP>;<U0001D6E2> % MATHEMATICAL ITALIC CAPITAL ALPHA
|
||||
@@ -67499,6 +67522,8 @@ endif
|
||||
<U2CE0> <S2CE1>;<BASE>;<CAP>;<U2CE0> % COPTIC CAPITAL LETTER OLD NUBIAN NYI
|
||||
<U2CE3> <S2CE3>;<BASE>;<MIN>;<U2CE3> % COPTIC SMALL LETTER OLD NUBIAN WAU
|
||||
<U2CE2> <S2CE3>;<BASE>;<CAP>;<U2CE2> % COPTIC CAPITAL LETTER OLD NUBIAN WAU
|
||||
+order_end
|
||||
+order_start <CYRIL>;forward;forward;forward;forward,position
|
||||
<U0430> <S0430>;<BASE>;<MIN>;<U0430> % CYRILLIC SMALL LETTER A
|
||||
<U2DF6> <S0430>;<BASE>;<COMPAT>;<U2DF6> % COMBINING CYRILLIC LETTER A
|
||||
<U0410> <S0430>;<BASE>;<CAP>;<U0410> % CYRILLIC CAPITAL LETTER A
|
||||
@@ -68104,6 +68129,8 @@ endif
|
||||
<U00010373> <S10373>;<BASE>;<MIN>;<U00010373> % OLD PERMIC LETTER YU
|
||||
<U00010374> <S10374>;<BASE>;<MIN>;<U00010374> % OLD PERMIC LETTER YA
|
||||
<U00010375> <S10375>;<BASE>;<MIN>;<U00010375> % OLD PERMIC LETTER IA
|
||||
+order_end
|
||||
+order_start <GEORGIAN>;forward;forward;forward;forward,position
|
||||
<U10D0> <S10D0>;<BASE>;<MIN>;<U10D0> % GEORGIAN LETTER AN
|
||||
<U2D00> <S2D00>;<BASE>;<MIN>;<U2D00> % GEORGIAN SMALL LETTER AN
|
||||
<U10A0> <S2D00>;<BASE>;<CAP>;<U10A0> % GEORGIAN CAPITAL LETTER AN
|
||||
@@ -68231,6 +68258,8 @@ endif
|
||||
<U10CD> <S2D2D>;<BASE>;<CAP>;<U10CD> % GEORGIAN CAPITAL LETTER AEN
|
||||
<U10FE> <S10FE>;<BASE>;<MIN>;<U10FE> % GEORGIAN LETTER HARD SIGN
|
||||
<U10FF> <S10FF>;<BASE>;<MIN>;<U10FF> % GEORGIAN LETTER LABIAL SIGN
|
||||
+order_end
|
||||
+order_start <ARMENIAN>;forward;forward;forward;forward,position
|
||||
<U0561> <S0561>;<BASE>;<MIN>;<U0561> % ARMENIAN SMALL LETTER AYB
|
||||
<U0531> <S0561>;<BASE>;<CAP>;<U0531> % ARMENIAN CAPITAL LETTER AYB
|
||||
<U0562> <S0562>;<BASE>;<MIN>;<U0562> % ARMENIAN SMALL LETTER BEN
|
||||
@@ -68314,6 +68343,8 @@ endif
|
||||
<U0586> <S0586>;<BASE>;<MIN>;<U0586> % ARMENIAN SMALL LETTER FEH
|
||||
<U0556> <S0586>;<BASE>;<CAP>;<U0556> % ARMENIAN CAPITAL LETTER FEH
|
||||
<U0559> <S0559>;<BASE>;<MIN>;<U0559> % ARMENIAN MODIFIER LETTER LEFT HALF RING
|
||||
+order_end
|
||||
+order_start <HEBREU>;forward;forward;forward;forward,position
|
||||
<U05D0> <S05D0>;<BASE>;<MIN>;<U05D0> % HEBREW LETTER ALEF
|
||||
<U2135> <S05D0>;<BASE>;<COMPAT>;<U2135> % ALEF SYMBOL
|
||||
<UFB21> <S05D0>;<BASE>;<FONT>;<UFB21> % HEBREW LETTER WIDE ALEF
|
||||
@@ -68440,6 +68471,8 @@ endif
|
||||
<U0817> <S0817>;<BASE>;<MIN>;<U0817> % SAMARITAN MARK IN-ALAF
|
||||
<U081A> <S081A>;<BASE>;<MIN>;<U081A> % SAMARITAN MODIFIER LETTER EPENTHETIC YUT
|
||||
<U081B> <S081B>;<BASE>;<MIN>;<U081B> % SAMARITAN MARK EPENTHETIC YUT
|
||||
+order_end
|
||||
+order_start <ARAB>;forward;forward;forward;forward,position
|
||||
<U0621> <S0621>;<BASE>;<MIN>;<U0621> % ARABIC LETTER HAMZA
|
||||
<U0674> <S0621>;<BASE>;<COMPAT>;<U0674> % ARABIC LETTER HIGH HAMZA
|
||||
<UFE80> <S0621>;<BASE>;<AISO>;<UFE80> % ARABIC LETTER HAMZA ISOLATED FORM
|
||||
@@ -69669,6 +69702,8 @@ endif
|
||||
<U07E7> <S07E7>;<BASE>;<MIN>;<U07E7> % NKO LETTER NYA WOLOSO
|
||||
<U07F4> <S07F4>;<BASE>;<MIN>;<U07F4> % NKO HIGH TONE APOSTROPHE
|
||||
<U07F5> <S07F5>;<BASE>;<MIN>;<U07F5> % NKO LOW TONE APOSTROPHE
|
||||
+order_end
|
||||
+order_start <TIFINAGH>;forward;forward;forward;forward,position
|
||||
<U2D30> <S2D30>;<BASE>;<MIN>;<U2D30> % TIFINAGH LETTER YA
|
||||
<U2D31> <S2D31>;<BASE>;<MIN>;<U2D31> % TIFINAGH LETTER YAB
|
||||
<U2D32> <S2D32>;<BASE>;<MIN>;<U2D32> % TIFINAGH LETTER YABH
|
||||
@@ -69726,6 +69761,8 @@ endif
|
||||
<U2D64> <S2D64>;<BASE>;<MIN>;<U2D64> % TIFINAGH LETTER TAWELLEMET YAZ
|
||||
<U2D65> <S2D65>;<BASE>;<MIN>;<U2D65> % TIFINAGH LETTER YAZZ
|
||||
<U2D6F> <S2D6F>;<BASE>;<MIN>;<U2D6F> % TIFINAGH MODIFIER LETTER LABIALIZATION MARK
|
||||
+order_end
|
||||
+order_start <Ethi>;forward;forward;forward;forward,position
|
||||
<U1200> <S1200>;<BASE>;<MIN>;<U1200> % ETHIOPIC SYLLABLE HA
|
||||
<U1201> <S1201>;<BASE>;<MIN>;<U1201> % ETHIOPIC SYLLABLE HU
|
||||
<U1202> <S1202>;<BASE>;<MIN>;<U1202> % ETHIOPIC SYLLABLE HI
|
||||
@@ -70179,6 +70216,8 @@ endif
|
||||
<U2DDC> <S2DDC>;<BASE>;<MIN>;<U2DDC> % ETHIOPIC SYLLABLE GYEE
|
||||
<U2DDD> <S2DDD>;<BASE>;<MIN>;<U2DDD> % ETHIOPIC SYLLABLE GYE
|
||||
<U2DDE> <S2DDE>;<BASE>;<MIN>;<U2DDE> % ETHIOPIC SYLLABLE GYO
|
||||
+order_end
|
||||
+order_start <DEVANAGARI>;forward;forward;forward;forward,position
|
||||
<U0950> <S0950>;<BASE>;<MIN>;<U0950> % DEVANAGARI OM
|
||||
<UA8FD> <SA8FD>;<BASE>;<MIN>;<UA8FD> % DEVANAGARI JAIN OM
|
||||
<U0972> <S0972>;<BASE>;<MIN>;<U0972> % DEVANAGARI LETTER CANDRA A
|
||||
@@ -70302,6 +70341,8 @@ endif
|
||||
<U094B> <S094B>;<BASE>;<MIN>;<U094B> % DEVANAGARI VOWEL SIGN O
|
||||
<U094C> <S094C>;<BASE>;<MIN>;<U094C> % DEVANAGARI VOWEL SIGN AU
|
||||
<U094D> <S094D>;<BASE>;<MIN>;<U094D> % DEVANAGARI SIGN VIRAMA
|
||||
+order_end
|
||||
+order_start <BENGALI>;forward;forward;forward;forward,position
|
||||
<U0980> <S0980>;<BASE>;<MIN>;<U0980> % BENGALI ANJI
|
||||
<U0985> <S0985>;<BASE>;<MIN>;<U0985> % BENGALI LETTER A
|
||||
<U0986> <S0986>;<BASE>;<MIN>;<U0986> % BENGALI LETTER AA
|
||||
@@ -70373,6 +70414,8 @@ endif
|
||||
<U09C7_09D7> <S09CC>;<BASE>;<MIN>;<U09CC> % BENGALI VOWEL SIGN AU
|
||||
<U09CD> <S09CD>;<BASE>;<MIN>;<U09CD> % BENGALI SIGN VIRAMA
|
||||
<U09D7> <S09D7>;<BASE>;<MIN>;<U09D7> % BENGALI AU LENGTH MARK
|
||||
+order_end
|
||||
+order_start <GURUMUKHI>;forward;forward;forward;forward,position
|
||||
<U0A74> <S0A74>;<BASE>;<MIN>;<U0A74> % GURMUKHI EK ONKAR
|
||||
<U0A73> <S0A73>;<BASE>;<MIN>;<U0A73> % GURMUKHI URA
|
||||
<U0A09> <S0A09>;<BASE>;<MIN>;<U0A09> % GURMUKHI LETTER U
|
||||
@@ -70436,6 +70479,8 @@ endif
|
||||
<U0A4B> <S0A4B>;<BASE>;<MIN>;<U0A4B> % GURMUKHI VOWEL SIGN OO
|
||||
<U0A4C> <S0A4C>;<BASE>;<MIN>;<U0A4C> % GURMUKHI VOWEL SIGN AU
|
||||
<U0A4D> <S0A4D>;<BASE>;<MIN>;<U0A4D> % GURMUKHI SIGN VIRAMA
|
||||
+order_end
|
||||
+order_start <GUJARATI>;forward;forward;forward;forward,position
|
||||
<U0AD0> <S0AD0>;<BASE>;<MIN>;<U0AD0> % GUJARATI OM
|
||||
<U0A85> <S0A85>;<BASE>;<MIN>;<U0A85> % GUJARATI LETTER A
|
||||
<U0A86> <S0A86>;<BASE>;<MIN>;<U0A86> % GUJARATI LETTER AA
|
||||
@@ -70577,6 +70622,8 @@ endif
|
||||
<U0B4D> <S0B4D>;<BASE>;<MIN>;<U0B4D> % ORIYA SIGN VIRAMA
|
||||
<U0B56> <S0B56>;<BASE>;<MIN>;<U0B56> % ORIYA AI LENGTH MARK
|
||||
<U0B57> <S0B57>;<BASE>;<MIN>;<U0B57> % ORIYA AU LENGTH MARK
|
||||
+order_end
|
||||
+order_start <TAMIL>;forward;forward;forward;forward,position
|
||||
<U0BD0> <S0BD0>;<BASE>;<MIN>;<U0BD0> % TAMIL OM
|
||||
<U0B85> <S0B85>;<BASE>;<MIN>;<U0B85> % TAMIL LETTER A
|
||||
<U0B86> <S0B86>;<BASE>;<MIN>;<U0B86> % TAMIL LETTER AA
|
||||
@@ -70631,6 +70678,8 @@ endif
|
||||
<U0BC6_0BD7> <S0BCC>;<BASE>;<MIN>;<U0BCC> % TAMIL VOWEL SIGN AU
|
||||
<U0BCD> <S0BCD>;<BASE>;<MIN>;<U0BCD> % TAMIL SIGN VIRAMA
|
||||
<U0BD7> <S0BD7>;<BASE>;<MIN>;<U0BD7> % TAMIL AU LENGTH MARK
|
||||
+order_end
|
||||
+order_start <TELUGU>;forward;forward;forward;forward,position
|
||||
<U0C05> <S0C05>;<BASE>;<MIN>;<U0C05> % TELUGU LETTER A
|
||||
<U0C06> <S0C06>;<BASE>;<MIN>;<U0C06> % TELUGU LETTER AA
|
||||
<U0C07> <S0C07>;<BASE>;<MIN>;<U0C07> % TELUGU LETTER I
|
||||
@@ -70706,6 +70755,8 @@ endif
|
||||
<U0C4D> <S0C4D>;<BASE>;<MIN>;<U0C4D> % TELUGU SIGN VIRAMA
|
||||
<U0C55> <S0C55>;<BASE>;<MIN>;<U0C55> % TELUGU LENGTH MARK
|
||||
<U0C56> <S0C56>;<BASE>;<MIN>;<U0C56> % TELUGU AI LENGTH MARK
|
||||
+order_end
|
||||
+order_start <KANNADA>;forward;forward;forward;forward,position
|
||||
<U0C85> <S0C85>;<BASE>;<MIN>;<U0C85> % KANNADA LETTER A
|
||||
<U0C86> <S0C86>;<BASE>;<MIN>;<U0C86> % KANNADA LETTER AA
|
||||
<U0C87> <S0C87>;<BASE>;<MIN>;<U0C87> % KANNADA LETTER I
|
||||
@@ -70786,6 +70837,8 @@ endif
|
||||
<U0CCD> <S0CCD>;<BASE>;<MIN>;<U0CCD> % KANNADA SIGN VIRAMA
|
||||
<U0CD5> <S0CD5>;<BASE>;<MIN>;<U0CD5> % KANNADA LENGTH MARK
|
||||
<U0CD6> <S0CD6>;<BASE>;<MIN>;<U0CD6> % KANNADA AI LENGTH MARK
|
||||
+order_end
|
||||
+order_start <MALAYALAM>;forward;forward;forward;forward,position
|
||||
<U0D05> <S0D05>;<BASE>;<MIN>;<U0D05> % MALAYALAM LETTER A
|
||||
<U0D06> <S0D06>;<BASE>;<MIN>;<U0D06> % MALAYALAM LETTER AA
|
||||
<U0D07> <S0D07>;<BASE>;<MIN>;<U0D07> % MALAYALAM LETTER I
|
||||
@@ -70872,6 +70925,8 @@ endif
|
||||
<U0D46_0D57> <S0D4C>;<BASE>;<MIN>;<U0D4C> % MALAYALAM VOWEL SIGN AU
|
||||
<U0D57> <S0D57>;<BASE>;<MIN>;<U0D57> % MALAYALAM AU LENGTH MARK
|
||||
<U0D4D> <S0D4D>;<BASE>;<MIN>;<U0D4D> % MALAYALAM SIGN VIRAMA
|
||||
+order_end
|
||||
+order_start <SINHALA>;forward;forward;forward;forward,position
|
||||
<U0D85> <S0D85>;<BASE>;<MIN>;<U0D85> % SINHALA LETTER AYANNA
|
||||
<U0D86> <S0D86>;<BASE>;<MIN>;<U0D86> % SINHALA LETTER AAYANNA
|
||||
<U0D87> <S0D87>;<BASE>;<MIN>;<U0D87> % SINHALA LETTER AEYANNA
|
||||
@@ -72893,6 +72948,8 @@ endif
|
||||
<UAAC2> <SAAC2>;<BASE>;<MIN>;<UAAC2> % TAI VIET TONE MAI SONG
|
||||
<UAADB> <SAADB>;<BASE>;<MIN>;<UAADB> % TAI VIET SYMBOL KON
|
||||
<UAADC> <SAADC>;<BASE>;<MIN>;<UAADC> % TAI VIET SYMBOL NUENG
|
||||
+order_end
|
||||
+order_start <TIBETAN>;forward;forward;forward;forward,position
|
||||
<U0F40> <S0F40>;<BASE>;<MIN>;<U0F40> % TIBETAN LETTER KA
|
||||
<U0F69> "<S0F40><S0FB5>";"<BASE><BASE>";"<MIN><MIN>";<U0F69> % TIBETAN LETTER KSSA
|
||||
<U0F90> <S0F90>;<BASE>;<MIN>;<U0F90> % TIBETAN SUBJOINED LETTER KA
|
||||
@@ -73468,6 +73525,8 @@ endif
|
||||
<UA928> <SA928>;<BASE>;<MIN>;<UA928> % KAYAH LI VOWEL U
|
||||
<UA929> <SA929>;<BASE>;<MIN>;<UA929> % KAYAH LI VOWEL EE
|
||||
<UA92A> <SA92A>;<BASE>;<MIN>;<UA92A> % KAYAH LI VOWEL O
|
||||
+order_end
|
||||
+order_start <MYANMAR>;forward;forward;forward;forward,position
|
||||
<U1000> <S1000>;<BASE>;<MIN>;<U1000> % MYANMAR LETTER KA
|
||||
<U1075> <S1075>;<BASE>;<MIN>;<U1075> % MYANMAR LETTER SHAN KA
|
||||
<U1001> <S1001>;<BASE>;<MIN>;<U1001> % MYANMAR LETTER KHA
|
|
@ -0,0 +1,54 @@
|
|||
commit 059454de60bdb1be9979ee09596c1e9a7e9e6c8b
|
||||
Author: Mike FABIAN <mfabian@redhat.com>
|
||||
Date: Tue Dec 12 14:39:34 2017 +0100
|
||||
|
||||
Collation order of ȥ has changed in new iso14651_t1_common file, adapt test files
|
||||
|
||||
* localedata/cs_CZ.UTF-8.in: adapt this test file to the collation
|
||||
order of ȥ in the new iso14651_t1_common file.
|
||||
* localedata/pl_PL.UTF-8.in: Likewise.
|
||||
|
||||
diff --git a/localedata/cs_CZ.UTF-8.in b/localedata/cs_CZ.UTF-8.in
|
||||
index 71d19a76fa2c1a71..b0dcf842053536ad 100644
|
||||
--- a/localedata/cs_CZ.UTF-8.in
|
||||
+++ b/localedata/cs_CZ.UTF-8.in
|
||||
@@ -184,8 +184,6 @@ z
|
||||
Z
|
||||
ź
|
||||
Ź
|
||||
-ȥ
|
||||
-Ȥ
|
||||
za
|
||||
Za
|
||||
źa
|
||||
@@ -198,6 +196,8 @@ Zbyněk
|
||||
zeleň
|
||||
ZZ
|
||||
Z-2
|
||||
+ȥ
|
||||
+Ȥ
|
||||
ž
|
||||
Ž
|
||||
Ž
|
||||
diff --git a/localedata/pl_PL.UTF-8.in b/localedata/pl_PL.UTF-8.in
|
||||
index 5f7e9b7d6009e72d..1b4f3ef3c1233a20 100644
|
||||
--- a/localedata/pl_PL.UTF-8.in
|
||||
+++ b/localedata/pl_PL.UTF-8.in
|
||||
@@ -132,8 +132,6 @@ z
|
||||
Z
|
||||
ž
|
||||
Ž
|
||||
-ȥ
|
||||
-Ȥ
|
||||
za
|
||||
Za
|
||||
ža
|
||||
@@ -142,6 +140,8 @@ zb
|
||||
Zb
|
||||
žb
|
||||
Žb
|
||||
+ȥ
|
||||
+Ȥ
|
||||
ź
|
||||
Ź
|
||||
źa
|
|
@ -1,416 +0,0 @@
|
|||
Background information:
|
||||
|
||||
https://sourceware.org/ml/libc-alpha/2017-08/msg01257.html
|
||||
https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt
|
||||
|
||||
From: Zack Weinberg <zackw@panix.com>
|
||||
Subject: [PATCH] Deprecate libcrypt and don't build it by default
|
||||
|
||||
Back in June, Björn Esser proposed to add OpenBSD-compatible bcrypt
|
||||
support to our implementation of crypt(3), and Zack Weinberg replied
|
||||
that it might actually make more sense to _remove_ libcrypt from
|
||||
glibc, freeing up libcrypt.so.1 and crypt.h to be provided by a
|
||||
separate project that could move faster. (For instance, libxcrypt:
|
||||
https://github.com/besser82/libxcrypt)
|
||||
|
||||
This patch disables build and installation of libcrypt by default. It
|
||||
can be re-enabled with --enable-obsolete-crypt to configure. Unlike
|
||||
libnsl, we do *not* install a runtime shared library; that's left to
|
||||
the replacement. (Unlike the SunRPC situation, I think we can
|
||||
probably drop this code altogether in a release or two.)
|
||||
|
||||
The function prototypes for crypt and encrypt are removed from
|
||||
unistd.h, and the function prototype for setkey is removed from
|
||||
stdlib.h; they do *not* come back with --enable-obsolete-crypt. This
|
||||
means glibc no longer provides the POSIX CRYPT option, and the macro
|
||||
_XOPEN_CRYPT is also removed from unistd.h to indicate that.
|
||||
(_SC_XOPEN_CRYPT is still defined, but sysconf(_SC_XOPEN_CRYPT) will
|
||||
return -1 at runtime.) These functions are also unconditionally
|
||||
removed from conform/data/{stdlib,unistd}.h-data.
|
||||
|
||||
* posix/unistd.h (_XOPEN_CRYPT, crypt, encrypt): Don't declare.
|
||||
* stdlib/stdlib.h (setkey): Don't declare.
|
||||
|
||||
* configure.ac (--enable-obsolete-crypt): New configure option.
|
||||
* configure: Regenerate.
|
||||
* config.make.in (build-obsolete-crypt): New makefile variable.
|
||||
* crypt/Banner: Delete file.
|
||||
* crypt/Makefile: Don't build anything unless
|
||||
$(build-obsolete-crypt) is 'yes'.
|
||||
* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Only add things
|
||||
to libcrypt-sysdep_routines when $(build-obsolete-crypt) is 'yes'.
|
||||
* sysdeps/sparc/sparc64/multiarch/Makefile: Likewise.
|
||||
* sysdeps/unix/sysv/linux/arm/Makefile: Likewise.
|
||||
|
||||
* conform/Makefile: Only include libcrypt.a in linknamespace tests
|
||||
when $(build-obsolete-crypt) is 'yes'.
|
||||
* conform/data/stdlib.h-data (setkey): Don't expect.
|
||||
* conform/data/unistd.h-data (crypt, encrypt): Don't expect.
|
||||
* elf/Makefile: Only perform various tests of libcrypt.so/libcrypt.a
|
||||
when $(build-obsolete-crypt) is 'yes'.
|
||||
* elf/tst-linkall-static.c: Don't include crypt.h when USE_CRYPT
|
||||
is false.
|
||||
---
|
||||
NEWS | 18 ++++++++++++++++++
|
||||
config.make.in | 1 +
|
||||
configure | 13 +++++++++++++
|
||||
configure.ac | 8 ++++++++
|
||||
conform/Makefile | 14 ++++++++++----
|
||||
conform/data/stdlib.h-data | 3 ---
|
||||
conform/data/unistd.h-data | 6 ------
|
||||
crypt/Makefile | 5 +++++
|
||||
elf/Makefile | 16 ++++++++++++----
|
||||
elf/tst-linkall-static.c | 2 ++
|
||||
posix/unistd.h | 16 ----------------
|
||||
stdlib/stdlib.h | 6 ------
|
||||
sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile | 2 ++
|
||||
sysdeps/sparc/sparc64/multiarch/Makefile | 2 ++
|
||||
sysdeps/unix/sysv/linux/arm/Makefile | 2 ++
|
||||
15 files changed, 75 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/config.make.in b/config.make.in
|
||||
index 9e5e24b2c6..8fe610d04d 100644
|
||||
--- a/config.make.in
|
||||
+++ b/config.make.in
|
||||
@@ -82,6 +82,7 @@ mach-interface-list = @mach_interface_list@
|
||||
|
||||
experimental-malloc = @experimental_malloc@
|
||||
|
||||
+build-obsolete-crypt = @build_obsolete_crypt@
|
||||
nss-crypt = @libc_cv_nss_crypt@
|
||||
static-nss-crypt = @libc_cv_static_nss_crypt@
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 7a8bd3f817..46f6bd7f86 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -672,6 +672,7 @@ base_machine
|
||||
have_tunables
|
||||
build_pt_chown
|
||||
build_nscd
|
||||
+build_obsolete_crypt
|
||||
build_obsolete_nsl
|
||||
link_obsolete_rpc
|
||||
libc_cv_static_nss_crypt
|
||||
@@ -782,6 +783,7 @@ enable_experimental_malloc
|
||||
enable_nss_crypt
|
||||
enable_obsolete_rpc
|
||||
enable_obsolete_nsl
|
||||
+enable_obsolete_crypt
|
||||
enable_systemtap
|
||||
enable_build_nscd
|
||||
enable_nscd
|
||||
@@ -1453,6 +1455,7 @@ Optional Features:
|
||||
link-time usage
|
||||
--enable-obsolete-nsl build and install the obsolete libnsl library and
|
||||
depending NSS modules
|
||||
+ --enable-obsolete-crypt build and install the obsolete libcrypt library
|
||||
--enable-systemtap enable systemtap static probe points [default=no]
|
||||
--disable-build-nscd disable building and installing the nscd daemon
|
||||
--disable-nscd library functions will not contact the nscd daemon
|
||||
@@ -3632,6 +3635,16 @@ if test "$build_obsolete_nsl" = yes; then
|
||||
|
||||
fi
|
||||
|
||||
+# Check whether --enable-obsolete-crypt was given.
|
||||
+if test "${enable_obsolete_crypt+set}" = set; then :
|
||||
+ enableval=$enable_obsolete_crypt; build_obsolete_crypt=$enableval
|
||||
+else
|
||||
+ build_obsolete_crypt=no
|
||||
+fi
|
||||
+
|
||||
+
|
||||
+
|
||||
+
|
||||
# Check whether --enable-systemtap was given.
|
||||
if test "${enable_systemtap+set}" = set; then :
|
||||
enableval=$enable_systemtap; systemtap=$enableval
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ca1282a6b3..0142353740 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -378,6 +378,14 @@ if test "$build_obsolete_nsl" = yes; then
|
||||
AC_DEFINE(LINK_OBSOLETE_NSL)
|
||||
fi
|
||||
|
||||
+AC_ARG_ENABLE([obsolete-crypt],
|
||||
+ AC_HELP_STRING([--enable-obsolete-crypt],
|
||||
+ [build and install the obsolete libcrypt library]),
|
||||
+ [build_obsolete_crypt=$enableval],
|
||||
+ [build_obsolete_crypt=no])
|
||||
+AC_SUBST(build_obsolete_crypt)
|
||||
+
|
||||
+
|
||||
AC_ARG_ENABLE([systemtap],
|
||||
[AS_HELP_STRING([--enable-systemtap],
|
||||
[enable systemtap static probe points @<:@default=no@:>@])],
|
||||
diff --git a/conform/Makefile b/conform/Makefile
|
||||
index 864fdeca21..5ef474fb24 100644
|
||||
--- a/conform/Makefile
|
||||
+++ b/conform/Makefile
|
||||
@@ -193,22 +193,28 @@ linknamespace-libs-thr = $(linknamespace-libs-isoc) \
|
||||
$(common-objpfx)rt/librt.a $(static-thread-library)
|
||||
linknamespace-libs-posix = $(linknamespace-libs-thr) \
|
||||
$(common-objpfx)dlfcn/libdl.a
|
||||
-linknamespace-libs-xsi = $(linknamespace-libs-posix) \
|
||||
- $(common-objpfx)crypt/libcrypt.a
|
||||
+linknamespace-libs-xsi = $(linknamespace-libs-posix)
|
||||
linknamespace-libs-ISO = $(linknamespace-libs-isoc)
|
||||
linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
|
||||
linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
|
||||
-linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) \
|
||||
- $(common-objpfx)crypt/libcrypt.a
|
||||
+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
|
||||
linknamespace-libs-XPG42 = $(linknamespace-libs-XPG4)
|
||||
linknamespace-libs-POSIX = $(linknamespace-libs-thr)
|
||||
linknamespace-libs-UNIX98 = $(linknamespace-libs-xsi)
|
||||
linknamespace-libs-XOPEN2K = $(linknamespace-libs-xsi)
|
||||
linknamespace-libs-POSIX2008 = $(linknamespace-libs-posix)
|
||||
linknamespace-libs-XOPEN2K8 = $(linknamespace-libs-xsi)
|
||||
+
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
+linknamespace-libs-xsi += $(common-objpfx)crypt/libcrypt.a
|
||||
+linknamespace-libs-XPG4 += $(common-objpfx)crypt/libcrypt.a
|
||||
+endif
|
||||
+
|
||||
linknamespace-libs = $(foreach std,$(conformtest-standards),\
|
||||
$(linknamespace-libs-$(std)))
|
||||
|
||||
+
|
||||
+
|
||||
$(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
|
||||
$(linknamespace-libs)
|
||||
LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
|
||||
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
|
||||
index d8fcccc2fb..6913828196 100644
|
||||
--- a/conform/data/stdlib.h-data
|
||||
+++ b/conform/data/stdlib.h-data
|
||||
@@ -149,9 +149,6 @@ function {unsigned short int*} seed48 (unsigned short int[3])
|
||||
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG4 && !defined XPG42 && !defined UNIX98
|
||||
function int setenv (const char*, const char*, int)
|
||||
#endif
|
||||
-#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
|
||||
-function void setkey (const char*)
|
||||
-#endif
|
||||
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG4 && !defined POSIX && !defined POSIX2008
|
||||
function {char*} setstate (char*)
|
||||
#endif
|
||||
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
|
||||
index ddf4f25132..aa070528e8 100644
|
||||
--- a/conform/data/unistd.h-data
|
||||
+++ b/conform/data/unistd.h-data
|
||||
@@ -437,9 +437,6 @@ function int chroot (const char*)
|
||||
function int chown (const char*, uid_t, gid_t)
|
||||
function int close (int)
|
||||
function size_t confstr (int, char*, size_t)
|
||||
-#if !defined POSIX && !defined POSIX2008
|
||||
-function {char*} crypt (const char*, const char*)
|
||||
-#endif
|
||||
#if defined XPG4 || defined XPG42 || defined UNIX98
|
||||
function {char*} ctermid (char*)
|
||||
function {char*} cuserid (char*)
|
||||
@@ -449,9 +446,6 @@ allow cuserid
|
||||
#endif
|
||||
function int dup (int)
|
||||
function int dup2 (int, int)
|
||||
-#if !defined POSIX && !defined POSIX2008
|
||||
-function void encrypt (char[64], int)
|
||||
-#endif
|
||||
function int execl (const char*, const char*, ...)
|
||||
function int execle (const char*, const char*, ...)
|
||||
function int execlp (const char*, const char*, ...)
|
||||
diff --git a/crypt/Makefile b/crypt/Makefile
|
||||
index 303800df73..024ec2c6ab 100644
|
||||
--- a/crypt/Makefile
|
||||
+++ b/crypt/Makefile
|
||||
@@ -22,6 +22,8 @@ subdir := crypt
|
||||
|
||||
include ../Makeconfig
|
||||
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
+
|
||||
headers := crypt.h
|
||||
|
||||
extra-libs := libcrypt
|
||||
@@ -52,9 +54,11 @@ tests += md5test sha256test sha512test
|
||||
# machine over a minute.
|
||||
xtests = md5test-giant
|
||||
endif
|
||||
+endif
|
||||
|
||||
include ../Rules
|
||||
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
ifneq ($(nss-crypt),yes)
|
||||
md5-routines := md5 $(filter md5%,$(libcrypt-sysdep_routines))
|
||||
sha256-routines := sha256 $(filter sha256%,$(libcrypt-sysdep_routines))
|
||||
@@ -71,3 +75,4 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.so
|
||||
else
|
||||
$(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.a
|
||||
endif
|
||||
+endif
|
||||
diff --git a/elf/Makefile b/elf/Makefile
|
||||
index 2a432d8bee..366f7b80ec 100644
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -385,15 +385,19 @@ $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
|
||||
CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
|
||||
endif
|
||||
|
||||
-# By default tst-linkall-static should try to use crypt routines to test
|
||||
-# static libcrypt use.
|
||||
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
+# If the libcrypt library is being built, tst-linkall-static should
|
||||
+# try to use crypt routines to test static libcrypt use.
|
||||
+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=1
|
||||
# However, if we are using NSS crypto and we don't have a static
|
||||
# library, then we exclude the use of crypt functions in the test.
|
||||
# We similarly exclude libcrypt.a from the static link (see below).
|
||||
ifeq (yesno,$(nss-crypt)$(static-nss-crypt))
|
||||
CFLAGS-tst-linkall-static.c += -UUSE_CRYPT -DUSE_CRYPT=0
|
||||
endif
|
||||
+else
|
||||
+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=0
|
||||
+endif
|
||||
|
||||
include ../Rules
|
||||
|
||||
@@ -1113,8 +1117,10 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
|
||||
rt/librt.so \
|
||||
dlfcn/libdl.so \
|
||||
resolv/libresolv.so \
|
||||
- crypt/libcrypt.so \
|
||||
)
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
+localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
|
||||
+endif
|
||||
ifeq ($(build-mathvec),yes)
|
||||
localplt-built-dso += $(addprefix $(common-objpfx), mathvec/libmvec.so)
|
||||
endif
|
||||
@@ -1395,6 +1401,7 @@ $(objpfx)tst-linkall-static: \
|
||||
$(common-objpfx)resolv/libanl.a \
|
||||
$(static-thread-library)
|
||||
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
# If we are using NSS crypto and we have the ability to link statically
|
||||
# then we include libcrypt.a, otherwise we leave out libcrypt.a and
|
||||
# link as much as we can into the tst-linkall-static test. This assumes
|
||||
@@ -1410,6 +1417,7 @@ ifeq (no,$(nss-crypt))
|
||||
$(objpfx)tst-linkall-static: \
|
||||
$(common-objpfx)crypt/libcrypt.a
|
||||
endif
|
||||
+endif
|
||||
|
||||
# The application depends on the DSO, and the DSO loads the plugin.
|
||||
# The plugin also depends on the DSO. This creates the circular
|
||||
diff --git a/elf/tst-linkall-static.c b/elf/tst-linkall-static.c
|
||||
index e8df38f74e..0ffae7c723 100644
|
||||
--- a/elf/tst-linkall-static.c
|
||||
+++ b/elf/tst-linkall-static.c
|
||||
@@ -18,7 +18,9 @@
|
||||
|
||||
#include <math.h>
|
||||
#include <pthread.h>
|
||||
+#if USE_CRYPT
|
||||
#include <crypt.h>
|
||||
+#endif
|
||||
#include <resolv.h>
|
||||
#include <dlfcn.h>
|
||||
#include <utmp.h>
|
||||
diff --git a/posix/unistd.h b/posix/unistd.h
|
||||
index 4d149f9945..e75ce4d4ec 100644
|
||||
--- a/posix/unistd.h
|
||||
+++ b/posix/unistd.h
|
||||
@@ -107,9 +107,6 @@ __BEGIN_DECLS
|
||||
/* The X/Open Unix extensions are available. */
|
||||
#define _XOPEN_UNIX 1
|
||||
|
||||
-/* Encryption is present. */
|
||||
-#define _XOPEN_CRYPT 1
|
||||
-
|
||||
/* The enhanced internationalization capabilities according to XPG4.2
|
||||
are present. */
|
||||
#define _XOPEN_ENH_I18N 1
|
||||
@@ -1118,20 +1115,7 @@ ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
|
||||
extern int fdatasync (int __fildes);
|
||||
#endif /* Use POSIX199309 */
|
||||
|
||||
-
|
||||
-/* XPG4.2 specifies that prototypes for the encryption functions must
|
||||
- be defined here. */
|
||||
#ifdef __USE_XOPEN
|
||||
-/* Encrypt at most 8 characters from KEY using salt to perturb DES. */
|
||||
-extern char *crypt (const char *__key, const char *__salt)
|
||||
- __THROW __nonnull ((1, 2));
|
||||
-
|
||||
-/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
|
||||
- block in place. */
|
||||
-extern void encrypt (char *__glibc_block, int __edflag)
|
||||
- __THROW __nonnull ((1));
|
||||
-
|
||||
-
|
||||
/* Swab pairs bytes in the first N bytes of the area pointed to by
|
||||
FROM and copy the result to TO. The value of TO must not be in the
|
||||
range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
|
||||
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
|
||||
index 6b1ead31e0..8e23e93557 100644
|
||||
--- a/stdlib/stdlib.h
|
||||
+++ b/stdlib/stdlib.h
|
||||
@@ -958,12 +958,6 @@ extern int getsubopt (char **__restrict __optionp,
|
||||
#endif
|
||||
|
||||
|
||||
-#ifdef __USE_XOPEN
|
||||
-/* Setup DES tables according KEY. */
|
||||
-extern void setkey (const char *__key) __THROW __nonnull ((1));
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
/* X/Open pseudo terminal handling. */
|
||||
|
||||
#ifdef __USE_XOPEN2KXSI
|
||||
diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
|
||||
index a6d08f3a00..d8b8297fb0 100644
|
||||
--- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
|
||||
+++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
|
||||
@@ -1,6 +1,8 @@
|
||||
ifeq ($(subdir),crypt)
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
|
||||
endif
|
||||
+endif
|
||||
|
||||
ifeq ($(subdir),locale)
|
||||
localedef-aux += md5-crop
|
||||
diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile
|
||||
index eaf758e7aa..0198f9886f 100644
|
||||
--- a/sysdeps/sparc/sparc64/multiarch/Makefile
|
||||
+++ b/sysdeps/sparc/sparc64/multiarch/Makefile
|
||||
@@ -1,6 +1,8 @@
|
||||
ifeq ($(subdir),crypt)
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
|
||||
endif
|
||||
+endif
|
||||
|
||||
ifeq ($(subdir),locale)
|
||||
localedef-aux += md5-crop
|
||||
diff --git a/sysdeps/unix/sysv/linux/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile
|
||||
index 4adc35de04..6cab4f3a31 100644
|
||||
--- a/sysdeps/unix/sysv/linux/arm/Makefile
|
||||
+++ b/sysdeps/unix/sysv/linux/arm/Makefile
|
||||
@@ -19,8 +19,10 @@ endif
|
||||
# Add a syscall function to each library that needs one.
|
||||
|
||||
ifeq ($(subdir),crypt)
|
||||
+ifeq ($(build-obsolete-crypt),yes)
|
||||
libcrypt-sysdep_routines += libc-do-syscall
|
||||
endif
|
||||
+endif
|
||||
|
||||
ifeq ($(subdir),rt)
|
||||
librt-sysdep_routines += libc-do-syscall
|
||||
--
|
||||
2.16.0
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
Introduce a dummy version GLIBC_2.28, so that the compat symbol checks
|
||||
give the right result for the glibc 2.27 backport (i.e., the symbols are
|
||||
still built into 2.27 libraries).
|
||||
|
||||
This is not needed upstream because of the 2.28 version number there.
|
||||
|
||||
diff --git a/crypt/Versions b/crypt/Versions
|
||||
index 389e7d544aff1e2e..59259c6a397d915e 100644
|
||||
--- a/crypt/Versions
|
||||
+++ b/crypt/Versions
|
||||
@@ -2,4 +2,7 @@ libcrypt {
|
||||
GLIBC_2.0 {
|
||||
crypt; crypt_r; encrypt; encrypt_r; fcrypt; setkey; setkey_r;
|
||||
}
|
||||
+ GLIBC_2.28 {
|
||||
+ # Dummy entry to make conditionals for compat symbols work.
|
||||
+ }
|
||||
}
|
|
@ -0,0 +1,718 @@
|
|||
commit b10a0accee709a5efff2fadf0b0bbb79ff0ad759
|
||||
Author: Zack Weinberg <zackw@panix.com>
|
||||
Date: Fri Jun 29 16:53:18 2018 +0200
|
||||
|
||||
Disallow use of DES encryption functions in new programs.
|
||||
|
||||
The functions encrypt, setkey, encrypt_r, setkey_r, cbc_crypt,
|
||||
ecb_crypt, and des_setparity should not be used in new programs,
|
||||
because they use the DES block cipher, which is unacceptably weak by
|
||||
modern standards. Demote all of them to compatibility symbols, and
|
||||
remove their prototypes from installed headers. cbc_crypt, ecb_crypt,
|
||||
and des_setparity were already compat symbols when glibc was
|
||||
configured with --disable-obsolete-rpc.
|
||||
|
||||
POSIX requires encrypt and setkey to be available when _XOPEN_CRYPT
|
||||
is defined, so this change also removes the definition of X_OPEN_CRYPT
|
||||
from <unistd.h>.
|
||||
|
||||
The entire "DES Encryption" section is dropped from the manual, as is
|
||||
the mention of AUTH_DES and FIPS 140-2 in the introduction to
|
||||
crypt.texi. The documentation of 'memfrob' cross-referenced the DES
|
||||
Encryption section, which is replaced by a hyperlink to libgcrypt, and
|
||||
while I was in there I spruced up the actual documentation of
|
||||
'memfrob' and 'strfry' a little. It's still fairly jokey, because
|
||||
those functions _are_ jokes, but they do also have real use cases, so
|
||||
people trying to use them for real should have all the information
|
||||
they need.
|
||||
|
||||
DES-based authentication for Sun RPC is also insecure and should be
|
||||
deprecated or even removed, but maybe that can be left as TI-RPC's
|
||||
problem.
|
||||
|
||||
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
|
||||
index d8fcccc2fbabb0b2..6913828196faf89d 100644
|
||||
--- a/conform/data/stdlib.h-data
|
||||
+++ b/conform/data/stdlib.h-data
|
||||
@@ -149,9 +149,6 @@ function {unsigned short int*} seed48 (unsigned short int[3])
|
||||
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG4 && !defined XPG42 && !defined UNIX98
|
||||
function int setenv (const char*, const char*, int)
|
||||
#endif
|
||||
-#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
|
||||
-function void setkey (const char*)
|
||||
-#endif
|
||||
#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG4 && !defined POSIX && !defined POSIX2008
|
||||
function {char*} setstate (char*)
|
||||
#endif
|
||||
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
|
||||
index ddf4f251326b66bf..aa070528e8303f6c 100644
|
||||
--- a/conform/data/unistd.h-data
|
||||
+++ b/conform/data/unistd.h-data
|
||||
@@ -437,9 +437,6 @@ function int chroot (const char*)
|
||||
function int chown (const char*, uid_t, gid_t)
|
||||
function int close (int)
|
||||
function size_t confstr (int, char*, size_t)
|
||||
-#if !defined POSIX && !defined POSIX2008
|
||||
-function {char*} crypt (const char*, const char*)
|
||||
-#endif
|
||||
#if defined XPG4 || defined XPG42 || defined UNIX98
|
||||
function {char*} ctermid (char*)
|
||||
function {char*} cuserid (char*)
|
||||
@@ -449,9 +446,6 @@ allow cuserid
|
||||
#endif
|
||||
function int dup (int)
|
||||
function int dup2 (int, int)
|
||||
-#if !defined POSIX && !defined POSIX2008
|
||||
-function void encrypt (char[64], int)
|
||||
-#endif
|
||||
function int execl (const char*, const char*, ...)
|
||||
function int execle (const char*, const char*, ...)
|
||||
function int execlp (const char*, const char*, ...)
|
||||
diff --git a/crypt/cert.c b/crypt/cert.c
|
||||
index 80029e9078c1cdc0..e070ca398d97911d 100644
|
||||
--- a/crypt/cert.c
|
||||
+++ b/crypt/cert.c
|
||||
@@ -10,6 +10,22 @@
|
||||
#include <stdlib.h>
|
||||
#include "crypt.h"
|
||||
|
||||
+/* This file tests the deprecated setkey/encrypt interface. */
|
||||
+#include <shlib-compat.h>
|
||||
+#if TEST_COMPAT (libcrypt, GLIBC_2_0, GLIBC_2_28)
|
||||
+
|
||||
+#define libcrypt_version_reference(symbol, version) \
|
||||
+ _libcrypt_version_reference (symbol, VERSION_libcrypt_##version)
|
||||
+#define _libcrypt_version_reference(symbol, version) \
|
||||
+ __libcrypt_version_reference (symbol, version)
|
||||
+#define __libcrypt_version_reference(symbol, version) \
|
||||
+ __asm__ (".symver " #symbol ", " #symbol "@" #version)
|
||||
+
|
||||
+extern void setkey (const char *);
|
||||
+extern void encrypt (const char *, int);
|
||||
+libcrypt_version_reference (setkey, GLIBC_2_0);
|
||||
+libcrypt_version_reference (encrypt, GLIBC_2_0);
|
||||
+
|
||||
int totfails = 0;
|
||||
|
||||
int main (int argc, char *argv[]);
|
||||
@@ -104,3 +120,13 @@ put8 (char *cp)
|
||||
printf("%02x", t);
|
||||
}
|
||||
}
|
||||
+
|
||||
+#else /* encrypt and setkey are not available. */
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ return 77; /* UNSUPPORTED */
|
||||
+}
|
||||
+
|
||||
+#endif
|
||||
diff --git a/crypt/crypt-entry.c b/crypt/crypt-entry.c
|
||||
index 58691fb384508d58..4e95f74878b4dc69 100644
|
||||
--- a/crypt/crypt-entry.c
|
||||
+++ b/crypt/crypt-entry.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#endif
|
||||
|
||||
#include "crypt-private.h"
|
||||
+#include <shlib-compat.h>
|
||||
|
||||
/* Prototypes for local functions. */
|
||||
#ifndef __GNU_LIBRARY__
|
||||
@@ -176,17 +177,7 @@ crypt (const char *key, const char *salt)
|
||||
return __crypt_r (key, salt, &_ufc_foobar);
|
||||
}
|
||||
|
||||
-
|
||||
-/*
|
||||
- * To make fcrypt users happy.
|
||||
- * They don't need to call init_des.
|
||||
- */
|
||||
-#ifdef _LIBC
|
||||
+#if SHLIB_COMPAT (libcrypt, GLIBC_2_0, GLIBC_2_28)
|
||||
weak_alias (crypt, fcrypt)
|
||||
-#else
|
||||
-char *
|
||||
-__fcrypt (const char *key, const char *salt)
|
||||
-{
|
||||
- return crypt (key, salt);
|
||||
-}
|
||||
+compat_symbol (libcrypt, fcrypt, fcrypt, GLIBC_2_0);
|
||||
#endif
|
||||
diff --git a/crypt/crypt.h b/crypt/crypt.h
|
||||
index 5da098b7157c18c6..3cb18de14d7b42ac 100644
|
||||
--- a/crypt/crypt.h
|
||||
+++ b/crypt/crypt.h
|
||||
@@ -32,16 +32,8 @@ __BEGIN_DECLS
|
||||
extern char *crypt (const char *__key, const char *__salt)
|
||||
__THROW __nonnull ((1, 2));
|
||||
|
||||
-/* Setup DES tables according KEY. */
|
||||
-extern void setkey (const char *__key) __THROW __nonnull ((1));
|
||||
-
|
||||
-/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
|
||||
- block in place. */
|
||||
-extern void encrypt (char *__glibc_block, int __edflag)
|
||||
- __THROW __nonnull ((1));
|
||||
-
|
||||
#ifdef __USE_GNU
|
||||
-/* Reentrant versions of the functions above. The additional argument
|
||||
+/* Reentrant version of 'crypt'. The additional argument
|
||||
points to a structure where the results are placed in. */
|
||||
struct crypt_data
|
||||
{
|
||||
@@ -60,14 +52,6 @@ struct crypt_data
|
||||
extern char *crypt_r (const char *__key, const char *__salt,
|
||||
struct crypt_data * __restrict __data)
|
||||
__THROW __nonnull ((1, 2, 3));
|
||||
-
|
||||
-extern void setkey_r (const char *__key,
|
||||
- struct crypt_data * __restrict __data)
|
||||
- __THROW __nonnull ((1, 2));
|
||||
-
|
||||
-extern void encrypt_r (char *__glibc_block, int __edflag,
|
||||
- struct crypt_data * __restrict __data)
|
||||
- __THROW __nonnull ((1, 3));
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
diff --git a/crypt/crypt_util.c b/crypt/crypt_util.c
|
||||
index 4958918770e7845a..fbfc783751e1691b 100644
|
||||
--- a/crypt/crypt_util.c
|
||||
+++ b/crypt/crypt_util.c
|
||||
@@ -34,6 +34,7 @@
|
||||
#endif
|
||||
|
||||
#include "crypt-private.h"
|
||||
+#include <shlib-compat.h>
|
||||
|
||||
/* Prototypes for local functions. */
|
||||
#ifndef __GNU_LIBRARY__
|
||||
@@ -150,6 +151,7 @@ static const int sbox[8][4][16]= {
|
||||
}
|
||||
};
|
||||
|
||||
+#if SHLIB_COMPAT (libcrypt, GLIBC_2_0, GLIBC_2_28)
|
||||
/*
|
||||
* This is the initial
|
||||
* permutation matrix
|
||||
@@ -160,6 +162,7 @@ static const int initial_perm[64] = {
|
||||
57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
|
||||
61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
|
||||
};
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* This is the final
|
||||
@@ -785,6 +788,7 @@ _ufc_output_conversion_r (ufc_long v1, ufc_long v2, const char *salt,
|
||||
__data->crypt_3_buf[13] = 0;
|
||||
}
|
||||
|
||||
+#if SHLIB_COMPAT (libcrypt, GLIBC_2_0, GLIBC_2_28)
|
||||
|
||||
/*
|
||||
* UNIX encrypt function. Takes a bitvector
|
||||
@@ -885,12 +889,14 @@ __encrypt_r (char *__block, int __edflag,
|
||||
}
|
||||
}
|
||||
weak_alias (__encrypt_r, encrypt_r)
|
||||
+compat_symbol (libcrypt, encrypt_r, encrypt_r, GLIBC_2_0);
|
||||
|
||||
void
|
||||
encrypt (char *__block, int __edflag)
|
||||
{
|
||||
__encrypt_r(__block, __edflag, &_ufc_foobar);
|
||||
}
|
||||
+compat_symbol (libcrypt, encrypt, encrypt, GLIBC_2_0);
|
||||
|
||||
|
||||
/*
|
||||
@@ -915,12 +921,15 @@ __setkey_r (const char *__key, struct crypt_data * __restrict __data)
|
||||
_ufc_mk_keytab_r((char *) ktab, __data);
|
||||
}
|
||||
weak_alias (__setkey_r, setkey_r)
|
||||
+compat_symbol (libcrypt, setkey_r, setkey_r, GLIBC_2_0);
|
||||
|
||||
void
|
||||
setkey (const char *__key)
|
||||
{
|
||||
__setkey_r(__key, &_ufc_foobar);
|
||||
}
|
||||
+compat_symbol (libcrypt, setkey, setkey, GLIBC_2_0);
|
||||
+#endif /* SHLIB_COMPAT (libcrypt, GLIBC_2_0, GLIBC_2_28) */
|
||||
|
||||
void
|
||||
__b64_from_24bit (char **cp, int *buflen,
|
||||
diff --git a/manual/conf.texi b/manual/conf.texi
|
||||
index f1dce4aa44be0f29..dbd1d3028773bc5d 100644
|
||||
--- a/manual/conf.texi
|
||||
+++ b/manual/conf.texi
|
||||
@@ -778,6 +778,8 @@ Inquire about the parameter corresponding to @code{_XOPEN_LEGACY}.
|
||||
@item _SC_XOPEN_CRYPT
|
||||
@standards{X/Open, unistd.h}
|
||||
Inquire about the parameter corresponding to @code{_XOPEN_CRYPT}.
|
||||
+@Theglibc no longer implements the @code{_XOPEN_CRYPT} extensions,
|
||||
+so @samp{sysconf (_SC_XOPEN_CRYPT)} always returns @code{-1}.
|
||||
|
||||
@item _SC_XOPEN_ENH_I18N
|
||||
@standards{X/Open, unistd.h}
|
||||
diff --git a/manual/crypt.texi b/manual/crypt.texi
|
||||
index 99d2d8e092a1104d..6bbe2bfdc5bfd03c 100644
|
||||
--- a/manual/crypt.texi
|
||||
+++ b/manual/crypt.texi
|
||||
@@ -30,21 +30,10 @@ message-digest algorithm that is compatible with modern BSD systems,
|
||||
and the other based on the Data Encryption Standard (DES) that is
|
||||
compatible with Unix systems.
|
||||
|
||||
-@vindex AUTH_DES
|
||||
-@cindex FIPS 140-2
|
||||
-It also provides support for Secure RPC, and some library functions that
|
||||
-can be used to perform normal DES encryption. The @code{AUTH_DES}
|
||||
-authentication flavor in Secure RPC, as provided by @theglibc{},
|
||||
-uses DES and does not comply with FIPS 140-2 nor does any other use of DES
|
||||
-within @theglibc{}. It is recommended that Secure RPC should not be used
|
||||
-for systems that need to comply with FIPS 140-2 since all flavors of
|
||||
-encrypted authentication use normal DES.
|
||||
-
|
||||
@menu
|
||||
* Legal Problems:: This software can get you locked up, or worse.
|
||||
* getpass:: Prompting the user for a password.
|
||||
* crypt:: A one-way function for passwords.
|
||||
-* DES Encryption:: Routines for DES encryption.
|
||||
* Unpredictable Bytes:: Randomness for cryptography purposes.
|
||||
@end menu
|
||||
|
||||
@@ -223,196 +212,6 @@ The @code{crypt_r} function is a GNU extension.
|
||||
The @code{crypt} and @code{crypt_r} functions are prototyped in the
|
||||
header @file{crypt.h}.
|
||||
|
||||
-@node DES Encryption
|
||||
-@section DES Encryption
|
||||
-
|
||||
-@cindex FIPS 46-3
|
||||
-The Data Encryption Standard is described in the US Government Federal
|
||||
-Information Processing Standards (FIPS) 46-3 published by the National
|
||||
-Institute of Standards and Technology. The DES has been very thoroughly
|
||||
-analyzed since it was developed in the late 1970s, and no new
|
||||
-significant flaws have been found.
|
||||
-
|
||||
-However, the DES uses only a 56-bit key (plus 8 parity bits), and a
|
||||
-machine has been built in 1998 which can search through all possible
|
||||
-keys in about 6 days, which cost about US$200000; faster searches would
|
||||
-be possible with more money. This makes simple DES insecure for most
|
||||
-purposes, and NIST no longer permits new US government systems
|
||||
-to use simple DES.
|
||||
-
|
||||
-For serious encryption functionality, it is recommended that one of the
|
||||
-many free encryption libraries be used instead of these routines.
|
||||
-
|
||||
-The DES is a reversible operation which takes a 64-bit block and a
|
||||
-64-bit key, and produces another 64-bit block. Usually the bits are
|
||||
-numbered so that the most-significant bit, the first bit, of each block
|
||||
-is numbered 1.
|
||||
-
|
||||
-Under that numbering, every 8th bit of the key (the 8th, 16th, and so
|
||||
-on) is not used by the encryption algorithm itself. But the key must
|
||||
-have odd parity; that is, out of bits 1 through 8, and 9 through 16, and
|
||||
-so on, there must be an odd number of `1' bits, and this completely
|
||||
-specifies the unused bits.
|
||||
-
|
||||
-@deftypefun void setkey (const char *@var{key})
|
||||
-@standards{BSD, crypt.h}
|
||||
-@standards{SVID, crypt.h}
|
||||
-@safety{@prelim{}@mtunsafe{@mtasurace{:crypt}}@asunsafe{@asucorrupt{} @asulock{}}@acunsafe{@aculock{}}}
|
||||
-@c The static buffer stores the key, making it fundamentally
|
||||
-@c thread-unsafe. The locking issues are only in the initialization
|
||||
-@c path; cancelling the initialization will leave the lock held, it
|
||||
-@c would otherwise repeat the initialization on the next call.
|
||||
-
|
||||
-The @code{setkey} function sets an internal data structure to be an
|
||||
-expanded form of @var{key}. @var{key} is specified as an array of 64
|
||||
-bits each stored in a @code{char}, the first bit is @code{key[0]} and
|
||||
-the 64th bit is @code{key[63]}. The @var{key} should have the correct
|
||||
-parity.
|
||||
-@end deftypefun
|
||||
-
|
||||
-@deftypefun void encrypt (char *@var{block}, int @var{edflag})
|
||||
-@standards{BSD, crypt.h}
|
||||
-@standards{SVID, crypt.h}
|
||||
-@safety{@prelim{}@mtunsafe{@mtasurace{:crypt}}@asunsafe{@asucorrupt{} @asulock{}}@acunsafe{@aculock{}}}
|
||||
-@c Same issues as setkey.
|
||||
-
|
||||
-The @code{encrypt} function encrypts @var{block} if
|
||||
-@var{edflag} is 0, otherwise it decrypts @var{block}, using a key
|
||||
-previously set by @code{setkey}. The result is
|
||||
-placed in @var{block}.
|
||||
-
|
||||
-Like @code{setkey}, @var{block} is specified as an array of 64 bits each
|
||||
-stored in a @code{char}, but there are no parity bits in @var{block}.
|
||||
-@end deftypefun
|
||||
-
|
||||
-@deftypefun void setkey_r (const char *@var{key}, {struct crypt_data *} @var{data})
|
||||
-@deftypefunx void encrypt_r (char *@var{block}, int @var{edflag}, {struct crypt_data *} @var{data})
|
||||
-@standards{GNU, crypt.h}
|
||||
-@c setkey_r: @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{} @asulock{}}@acunsafe{@aculock{}}}
|
||||
-@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{} @asulock{}}@acunsafe{@aculock{}}}
|
||||
-
|
||||
-These are reentrant versions of @code{setkey} and @code{encrypt}. The
|
||||
-only difference is the extra parameter, which stores the expanded
|
||||
-version of @var{key}. Before calling @code{setkey_r} the first time,
|
||||
-@code{data->initialized} must be cleared to zero.
|
||||
-@end deftypefun
|
||||
-
|
||||
-The @code{setkey_r} and @code{encrypt_r} functions are GNU extensions.
|
||||
-@code{setkey}, @code{encrypt}, @code{setkey_r}, and @code{encrypt_r} are
|
||||
-defined in @file{crypt.h}.
|
||||
-
|
||||
-@deftypefun int ecb_crypt (char *@var{key}, char *@var{blocks}, unsigned int @var{len}, unsigned int @var{mode})
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
-
|
||||
-The function @code{ecb_crypt} encrypts or decrypts one or more blocks
|
||||
-using DES. Each block is encrypted independently.
|
||||
-
|
||||
-The @var{blocks} and the @var{key} are stored packed in 8-bit bytes, so
|
||||
-that the first bit of the key is the most-significant bit of
|
||||
-@code{key[0]} and the 63rd bit of the key is stored as the
|
||||
-least-significant bit of @code{key[7]}. The @var{key} should have the
|
||||
-correct parity.
|
||||
-
|
||||
-@var{len} is the number of bytes in @var{blocks}. It should be a
|
||||
-multiple of 8 (so that there are a whole number of blocks to encrypt).
|
||||
-@var{len} is limited to a maximum of @code{DES_MAXDATA} bytes.
|
||||
-
|
||||
-The result of the encryption replaces the input in @var{blocks}.
|
||||
-
|
||||
-The @var{mode} parameter is the bitwise OR of two of the following:
|
||||
-
|
||||
-@vtable @code
|
||||
-@item DES_ENCRYPT
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-This constant, used in the @var{mode} parameter, specifies that
|
||||
-@var{blocks} is to be encrypted.
|
||||
-
|
||||
-@item DES_DECRYPT
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-This constant, used in the @var{mode} parameter, specifies that
|
||||
-@var{blocks} is to be decrypted.
|
||||
-
|
||||
-@item DES_HW
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-This constant, used in the @var{mode} parameter, asks to use a hardware
|
||||
-device. If no hardware device is available, encryption happens anyway,
|
||||
-but in software.
|
||||
-
|
||||
-@item DES_SW
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-This constant, used in the @var{mode} parameter, specifies that no
|
||||
-hardware device is to be used.
|
||||
-@end vtable
|
||||
-
|
||||
-The result of the function will be one of these values:
|
||||
-
|
||||
-@vtable @code
|
||||
-@item DESERR_NONE
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-The encryption succeeded.
|
||||
-
|
||||
-@item DESERR_NOHWDEVICE
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-The encryption succeeded, but there was no hardware device available.
|
||||
-
|
||||
-@item DESERR_HWERROR
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-The encryption failed because of a hardware problem.
|
||||
-
|
||||
-@item DESERR_BADPARAM
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-The encryption failed because of a bad parameter, for instance @var{len}
|
||||
-is not a multiple of 8 or @var{len} is larger than @code{DES_MAXDATA}.
|
||||
-@end vtable
|
||||
-@end deftypefun
|
||||
-
|
||||
-@deftypefun int DES_FAILED (int @var{err})
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
-This macro returns 1 if @var{err} is a `success' result code from
|
||||
-@code{ecb_crypt} or @code{cbc_crypt}, and 0 otherwise.
|
||||
-@end deftypefun
|
||||
-
|
||||
-@deftypefun int cbc_crypt (char *@var{key}, char *@var{blocks}, unsigned int @var{len}, unsigned int @var{mode}, char *@var{ivec})
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
-
|
||||
-The function @code{cbc_crypt} encrypts or decrypts one or more blocks
|
||||
-using DES in Cipher Block Chaining mode.
|
||||
-
|
||||
-For encryption in CBC mode, each block is exclusive-ored with @var{ivec}
|
||||
-before being encrypted, then @var{ivec} is replaced with the result of
|
||||
-the encryption, then the next block is processed. Decryption is the
|
||||
-reverse of this process.
|
||||
-
|
||||
-This has the advantage that blocks which are the same before being
|
||||
-encrypted are very unlikely to be the same after being encrypted, making
|
||||
-it much harder to detect patterns in the data.
|
||||
-
|
||||
-Usually, @var{ivec} is set to 8 random bytes before encryption starts.
|
||||
-Then the 8 random bytes are transmitted along with the encrypted data
|
||||
-(without themselves being encrypted), and passed back in as @var{ivec}
|
||||
-for decryption. Another possibility is to set @var{ivec} to 8 zeroes
|
||||
-initially, and have the first block encrypted consist of 8 random
|
||||
-bytes.
|
||||
-
|
||||
-Otherwise, all the parameters are similar to those for @code{ecb_crypt}.
|
||||
-@end deftypefun
|
||||
-
|
||||
-@deftypefun void des_setparity (char *@var{key})
|
||||
-@standards{SUNRPC, rpc/des_crypt.h}
|
||||
-@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
-
|
||||
-The function @code{des_setparity} changes the 64-bit @var{key}, stored
|
||||
-packed in 8-bit bytes, to have odd parity by altering the low bits of
|
||||
-each byte.
|
||||
-@end deftypefun
|
||||
-
|
||||
-The @code{ecb_crypt}, @code{cbc_crypt}, and @code{des_setparity}
|
||||
-functions and their accompanying macros are all defined in the header
|
||||
-@file{rpc/des_crypt.h}.
|
||||
-
|
||||
@node Unpredictable Bytes
|
||||
@section Generating Unpredictable Bytes
|
||||
|
||||
diff --git a/manual/string.texi b/manual/string.texi
|
||||
index b07cfb4550ae6a58..a1c58e58fa488f78 100644
|
||||
--- a/manual/string.texi
|
||||
+++ b/manual/string.texi
|
||||
@@ -36,8 +36,8 @@ too.
|
||||
for delimiters.
|
||||
* Erasing Sensitive Data:: Clearing memory which contains sensitive
|
||||
data, after it's no longer needed.
|
||||
-* strfry:: Function for flash-cooking a string.
|
||||
-* Trivial Encryption:: Obscuring data.
|
||||
+* Shuffling Bytes:: Or how to flash-cook a string.
|
||||
+* Obfuscating Data:: Reversibly obscuring data from casual view.
|
||||
* Encode Binary Data:: Encoding and Decoding of Binary Data.
|
||||
* Argz and Envz Vectors:: Null-separated string vectors.
|
||||
@end menu
|
||||
@@ -2426,73 +2426,73 @@ functionality under a different name, such as @code{explicit_memset},
|
||||
systems it may be in @file{strings.h} instead.
|
||||
@end deftypefun
|
||||
|
||||
-@node strfry
|
||||
-@section strfry
|
||||
+
|
||||
+@node Shuffling Bytes
|
||||
+@section Shuffling Bytes
|
||||
|
||||
The function below addresses the perennial programming quandary: ``How do
|
||||
I take good data in string form and painlessly turn it into garbage?''
|
||||
-This is actually a fairly simple task for C programmers who do not use
|
||||
-@theglibc{} string functions, but for programs based on @theglibc{},
|
||||
-the @code{strfry} function is the preferred method for
|
||||
-destroying string data.
|
||||
+This is not a difficult thing to code for oneself, but the authors of
|
||||
+@theglibc{} wish to make it as convenient as possible.
|
||||
|
||||
-The prototype for this function is in @file{string.h}.
|
||||
+To @emph{erase} data, use @code{explicit_bzero} (@pxref{Erasing
|
||||
+Sensitive Data}); to obfuscate it reversibly, use @code{memfrob}
|
||||
+(@pxref{Obfuscating Data}).
|
||||
|
||||
@deftypefun {char *} strfry (char *@var{string})
|
||||
@standards{GNU, string.h}
|
||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
@c Calls initstate_r, time, getpid, strlen, and random_r.
|
||||
|
||||
-@code{strfry} creates a pseudorandom anagram of a string, replacing the
|
||||
-input with the anagram in place. For each position in the string,
|
||||
-@code{strfry} swaps it with a position in the string selected at random
|
||||
-(from a uniform distribution). The two positions may be the same.
|
||||
+@code{strfry} performs an in-place shuffle on @var{string}. Each
|
||||
+character is swapped to a position selected at random, within the
|
||||
+portion of the string starting with the character's original position.
|
||||
+(This is the Fisher-Yates algorithm for unbiased shuffling.)
|
||||
+
|
||||
+Calling @code{strfry} will not disturb any of the random number
|
||||
+generators that have global state (@pxref{Pseudo-Random Numbers}).
|
||||
|
||||
The return value of @code{strfry} is always @var{string}.
|
||||
|
||||
@strong{Portability Note:} This function is unique to @theglibc{}.
|
||||
-
|
||||
+It is declared in @file{string.h}.
|
||||
@end deftypefun
|
||||
|
||||
|
||||
-@node Trivial Encryption
|
||||
-@section Trivial Encryption
|
||||
-@cindex encryption
|
||||
-
|
||||
-
|
||||
-The @code{memfrob} function converts an array of data to something
|
||||
-unrecognizable and back again. It is not encryption in its usual sense
|
||||
-since it is easy for someone to convert the encrypted data back to clear
|
||||
-text. The transformation is analogous to Usenet's ``Rot13'' encryption
|
||||
-method for obscuring offensive jokes from sensitive eyes and such.
|
||||
-Unlike Rot13, @code{memfrob} works on arbitrary binary data, not just
|
||||
-text.
|
||||
+@node Obfuscating Data
|
||||
+@section Obfuscating Data
|
||||
@cindex Rot13
|
||||
|
||||
-For true encryption, @xref{Cryptographic Functions}.
|
||||
+The @code{memfrob} function reversibly obfuscates an array of binary
|
||||
+data. This is not true encryption; the obfuscated data still bears a
|
||||
+clear relationship to the original, and no secret key is required to
|
||||
+undo the obfuscation. It is analogous to the ``Rot13'' cipher used on
|
||||
+Usenet for obscuring offensive jokes, spoilers for works of fiction,
|
||||
+and so on, but it can be applied to arbitrary binary data.
|
||||
|
||||
-This function is declared in @file{string.h}.
|
||||
-@pindex string.h
|
||||
+Programs that need true encryption---a transformation that completely
|
||||
+obscures the original and cannot be reversed without knowledge of a
|
||||
+secret key---should use a dedicated cryptography library, such as
|
||||
+@uref{https://www.gnu.org/software/libgcrypt/,,libgcrypt}.
|
||||
+
|
||||
+Programs that need to @emph{destroy} data should use
|
||||
+@code{explicit_bzero} (@pxref{Erasing Sensitive Data}), or possibly
|
||||
+@code{strfry} (@pxref{Shuffling Bytes}).
|
||||
|
||||
@deftypefun {void *} memfrob (void *@var{mem}, size_t @var{length})
|
||||
@standards{GNU, string.h}
|
||||
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
|
||||
|
||||
-@code{memfrob} transforms (frobnicates) each byte of the data structure
|
||||
-at @var{mem}, which is @var{length} bytes long, by bitwise exclusive
|
||||
-oring it with binary 00101010. It does the transformation in place and
|
||||
-its return value is always @var{mem}.
|
||||
+The function @code{memfrob} obfuscates @var{length} bytes of data
|
||||
+beginning at @var{mem}, in place. Each byte is bitwise xor-ed with
|
||||
+the binary pattern 00101010 (hexadecimal 0x2A). The return value is
|
||||
+always @var{mem}.
|
||||
|
||||
-Note that @code{memfrob} a second time on the same data structure
|
||||
-returns it to its original state.
|
||||
-
|
||||
-This is a good function for hiding information from someone who doesn't
|
||||
-want to see it or doesn't want to see it very much. To really prevent
|
||||
-people from retrieving the information, use stronger encryption such as
|
||||
-that described in @xref{Cryptographic Functions}.
|
||||
+@code{memfrob} a second time on the same data returns it to
|
||||
+its original state.
|
||||
|
||||
@strong{Portability Note:} This function is unique to @theglibc{}.
|
||||
-
|
||||
+It is declared in @file{string.h}.
|
||||
@end deftypefun
|
||||
|
||||
@node Encode Binary Data
|
||||
diff --git a/posix/unistd.h b/posix/unistd.h
|
||||
index 4d149f994534ea5f..afb08f5186b9173b 100644
|
||||
--- a/posix/unistd.h
|
||||
+++ b/posix/unistd.h
|
||||
@@ -107,9 +107,6 @@ __BEGIN_DECLS
|
||||
/* The X/Open Unix extensions are available. */
|
||||
#define _XOPEN_UNIX 1
|
||||
|
||||
-/* Encryption is present. */
|
||||
-#define _XOPEN_CRYPT 1
|
||||
-
|
||||
/* The enhanced internationalization capabilities according to XPG4.2
|
||||
are present. */
|
||||
#define _XOPEN_ENH_I18N 1
|
||||
@@ -1118,20 +1115,13 @@ ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
|
||||
extern int fdatasync (int __fildes);
|
||||
#endif /* Use POSIX199309 */
|
||||
|
||||
-
|
||||
-/* XPG4.2 specifies that prototypes for the encryption functions must
|
||||
- be defined here. */
|
||||
-#ifdef __USE_XOPEN
|
||||
+#ifdef __USE_MISC
|
||||
/* Encrypt at most 8 characters from KEY using salt to perturb DES. */
|
||||
extern char *crypt (const char *__key, const char *__salt)
|
||||
__THROW __nonnull ((1, 2));
|
||||
+#endif
|
||||
|
||||
-/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
|
||||
- block in place. */
|
||||
-extern void encrypt (char *__glibc_block, int __edflag)
|
||||
- __THROW __nonnull ((1));
|
||||
-
|
||||
-
|
||||
+#ifdef __USE_XOPEN
|
||||
/* Swab pairs bytes in the first N bytes of the area pointed to by
|
||||
FROM and copy the result to TO. The value of TO must not be in the
|
||||
range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
|
||||
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
|
||||
index 6b1ead31e02e3195..8e23e935576cb3b8 100644
|
||||
--- a/stdlib/stdlib.h
|
||||
+++ b/stdlib/stdlib.h
|
||||
@@ -958,12 +958,6 @@ extern int getsubopt (char **__restrict __optionp,
|
||||
#endif
|
||||
|
||||
|
||||
-#ifdef __USE_XOPEN
|
||||
-/* Setup DES tables according KEY. */
|
||||
-extern void setkey (const char *__key) __THROW __nonnull ((1));
|
||||
-#endif
|
||||
-
|
||||
-
|
||||
/* X/Open pseudo terminal handling. */
|
||||
|
||||
#ifdef __USE_XOPEN2KXSI
|
||||
diff --git a/sunrpc/Makefile b/sunrpc/Makefile
|
||||
index 8f2a3c8213e3564e..ab2e0daaea5c7636 100644
|
||||
--- a/sunrpc/Makefile
|
||||
+++ b/sunrpc/Makefile
|
||||
@@ -51,7 +51,7 @@ rpcsvc = bootparam_prot.x nlm_prot.x rstat.x \
|
||||
headers-sunrpc = $(addprefix rpc/,auth.h auth_unix.h clnt.h pmap_clnt.h \
|
||||
pmap_prot.h pmap_rmt.h rpc.h rpc_msg.h \
|
||||
svc.h svc_auth.h types.h xdr.h auth_des.h \
|
||||
- des_crypt.h key_prot.h rpc_des.h) \
|
||||
+ key_prot.h) \
|
||||
$(rpcsvc:%=rpcsvc/%) rpcsvc/bootparam.h
|
||||
headers = rpc/netdb.h
|
||||
install-others = $(inst_sysconfdir)/rpc
|
||||
diff --git a/sunrpc/des_crypt.c b/sunrpc/des_crypt.c
|
||||
index a4d8b2936bf1f52d..9b4bd2d5ddff9a40 100644
|
||||
--- a/sunrpc/des_crypt.c
|
||||
+++ b/sunrpc/des_crypt.c
|
||||
@@ -86,6 +86,9 @@ common_crypt (char *key, char *buf, register unsigned len,
|
||||
return desdev == DES_SW ? DESERR_NONE : DESERR_NOHWDEVICE;
|
||||
}
|
||||
|
||||
+/* Note: these cannot be excluded from the build yet, because they are
|
||||
+ still used internally. */
|
||||
+
|
||||
/*
|
||||
* CBC mode encryption
|
||||
*/
|
||||
@@ -102,7 +105,7 @@ cbc_crypt (char *key, char *buf, unsigned int len, unsigned int mode,
|
||||
COPY8 (dp.des_ivec, ivec);
|
||||
return err;
|
||||
}
|
||||
-libc_hidden_nolink_sunrpc (cbc_crypt, GLIBC_2_1)
|
||||
+hidden_nolink (cbc_crypt, libc, GLIBC_2_1)
|
||||
|
||||
/*
|
||||
* ECB mode encryption
|
||||
@@ -115,4 +118,4 @@ ecb_crypt (char *key, char *buf, unsigned int len, unsigned int mode)
|
||||
dp.des_mode = ECB;
|
||||
return common_crypt (key, buf, len, mode, &dp);
|
||||
}
|
||||
-libc_hidden_nolink_sunrpc (ecb_crypt, GLIBC_2_1)
|
||||
+hidden_nolink (ecb_crypt, libc, GLIBC_2_1)
|
||||
diff --git a/sunrpc/des_soft.c b/sunrpc/des_soft.c
|
||||
index f884f8f21b7dbd86..a87de96cc75727d9 100644
|
||||
--- a/sunrpc/des_soft.c
|
||||
+++ b/sunrpc/des_soft.c
|
||||
@@ -71,4 +71,4 @@ des_setparity (char *p)
|
||||
p++;
|
||||
}
|
||||
}
|
||||
-libc_hidden_nolink_sunrpc (des_setparity, GLIBC_2_1)
|
||||
+hidden_nolink (des_setparity, libc, GLIBC_2_1)
|
|
@ -0,0 +1,261 @@
|
|||
commit 6ab902e4decd89c1a9206497d14ddba7680bfc37
|
||||
Author: Zack Weinberg <zackw@panix.com>
|
||||
Date: Fri Jun 29 16:53:29 2018 +0200
|
||||
|
||||
manual: Reorganize crypt.texi.
|
||||
|
||||
In preparation for a major revision of the documentation for
|
||||
crypt(_r), getentropy, and getrandom, reorganize crypt.texi. This
|
||||
patch does not change any text; it only deletes and moves text.
|
||||
|
||||
The description of 'getpass' moves to terminal.texi, since all it does
|
||||
is read a password from the controlling terminal with echo disabled.
|
||||
The "Legal Problems" section of crypt.texi is dropped, and the
|
||||
introductory text is shifted down to the "Encrypting Passwords"
|
||||
section; the next patch will add some new introductory text.
|
||||
|
||||
Also, it is no longer true that crypt.texi's top @node needs to have
|
||||
no pointers. That was a vestige of crypt/ being an add-on. (makeinfo
|
||||
itself doesn't need @node pointers anymore, but the scripts that
|
||||
assemble the libc manual's topmost node rely on each chapter-level
|
||||
node having them.)
|
||||
|
||||
diff --git a/manual/crypt.texi b/manual/crypt.texi
|
||||
index 6bbe2bfdc5bfd03c..0f04ee9899fabd91 100644
|
||||
--- a/manual/crypt.texi
|
||||
+++ b/manual/crypt.texi
|
||||
@@ -1,8 +1,14 @@
|
||||
-@c This node must have no pointers.
|
||||
-@node Cryptographic Functions
|
||||
-@c @node Cryptographic Functions, Debugging Support, System Configuration, Top
|
||||
-@chapter DES Encryption and Password Handling
|
||||
-@c %MENU% DES encryption and password handling
|
||||
+@node Cryptographic Functions, Debugging Support, System Configuration, Top
|
||||
+@chapter Cryptographic Functions
|
||||
+@c %MENU% Password storage and strongly unpredictable bytes
|
||||
+
|
||||
+@menu
|
||||
+* crypt:: A one-way function for passwords.
|
||||
+* Unpredictable Bytes:: Randomness for cryptography purposes.
|
||||
+@end menu
|
||||
+
|
||||
+@node crypt
|
||||
+@section Encrypting Passwords
|
||||
|
||||
On many systems, it is unnecessary to have any kind of user
|
||||
authentication; for instance, a workstation which is not connected to a
|
||||
@@ -30,103 +36,6 @@ message-digest algorithm that is compatible with modern BSD systems,
|
||||
and the other based on the Data Encryption Standard (DES) that is
|
||||
compatible with Unix systems.
|
||||
|
||||
-@menu
|
||||
-* Legal Problems:: This software can get you locked up, or worse.
|
||||
-* getpass:: Prompting the user for a password.
|
||||
-* crypt:: A one-way function for passwords.
|
||||
-* Unpredictable Bytes:: Randomness for cryptography purposes.
|
||||
-@end menu
|
||||
-
|
||||
-@node Legal Problems
|
||||
-@section Legal Problems
|
||||
-
|
||||
-Because of the continuously changing state of the law, it's not possible
|
||||
-to provide a definitive survey of the laws affecting cryptography.
|
||||
-Instead, this section warns you of some of the known trouble spots; this
|
||||
-may help you when you try to find out what the laws of your country are.
|
||||
-
|
||||
-Some countries require that you have a license to use, possess, or import
|
||||
-cryptography. These countries are believed to include Byelorussia,
|
||||
-Burma, India, Indonesia, Israel, Kazakhstan, Pakistan, Russia, and Saudi
|
||||
-Arabia.
|
||||
-
|
||||
-Some countries restrict the transmission of encrypted messages by radio;
|
||||
-some telecommunications carriers restrict the transmission of encrypted
|
||||
-messages over their network.
|
||||
-
|
||||
-Many countries have some form of export control for encryption software.
|
||||
-The Wassenaar Arrangement is a multilateral agreement between 33
|
||||
-countries (Argentina, Australia, Austria, Belgium, Bulgaria, Canada, the
|
||||
-Czech Republic, Denmark, Finland, France, Germany, Greece, Hungary,
|
||||
-Ireland, Italy, Japan, Luxembourg, the Netherlands, New Zealand, Norway,
|
||||
-Poland, Portugal, the Republic of Korea, Romania, the Russian
|
||||
-Federation, the Slovak Republic, Spain, Sweden, Switzerland, Turkey,
|
||||
-Ukraine, the United Kingdom and the United States) which restricts some
|
||||
-kinds of encryption exports. Different countries apply the arrangement
|
||||
-in different ways; some do not allow the exception for certain kinds of
|
||||
-``public domain'' software (which would include this library), some
|
||||
-only restrict the export of software in tangible form, and others impose
|
||||
-significant additional restrictions.
|
||||
-
|
||||
-The United States has additional rules. This software would generally
|
||||
-be exportable under 15 CFR 740.13(e), which permits exports of
|
||||
-``encryption source code'' which is ``publicly available'' and which is
|
||||
-``not subject to an express agreement for the payment of a licensing fee or
|
||||
-royalty for commercial production or sale of any product developed with
|
||||
-the source code'' to most countries.
|
||||
-
|
||||
-The rules in this area are continuously changing. If you know of any
|
||||
-information in this manual that is out-of-date, please report it to
|
||||
-the bug database. @xref{Reporting Bugs}.
|
||||
-
|
||||
-@node getpass
|
||||
-@section Reading Passwords
|
||||
-
|
||||
-When reading in a password, it is desirable to avoid displaying it on
|
||||
-the screen, to help keep it secret. The following function handles this
|
||||
-in a convenient way.
|
||||
-
|
||||
-@deftypefun {char *} getpass (const char *@var{prompt})
|
||||
-@standards{BSD, unistd.h}
|
||||
-@safety{@prelim{}@mtunsafe{@mtasuterm{}}@asunsafe{@ascuheap{} @asulock{} @asucorrupt{}}@acunsafe{@acuterm{} @aculock{} @acucorrupt{}}}
|
||||
-@c This function will attempt to create a stream for terminal I/O, but
|
||||
-@c will fallback to stdio/stderr. It attempts to change the terminal
|
||||
-@c mode in a thread-unsafe way, write out the prompt, read the password,
|
||||
-@c then restore the terminal mode. It has a cleanup to close the stream
|
||||
-@c in case of (synchronous) cancellation, but not to restore the
|
||||
-@c terminal mode.
|
||||
-
|
||||
-@code{getpass} outputs @var{prompt}, then reads a string in from the
|
||||
-terminal without echoing it. It tries to connect to the real terminal,
|
||||
-@file{/dev/tty}, if possible, to encourage users not to put plaintext
|
||||
-passwords in files; otherwise, it uses @code{stdin} and @code{stderr}.
|
||||
-@code{getpass} also disables the INTR, QUIT, and SUSP characters on the
|
||||
-terminal using the @code{ISIG} terminal attribute (@pxref{Local Modes}).
|
||||
-The terminal is flushed before and after @code{getpass}, so that
|
||||
-characters of a mistyped password are not accidentally visible.
|
||||
-
|
||||
-In other C libraries, @code{getpass} may only return the first
|
||||
-@code{PASS_MAX} bytes of a password. @Theglibc{} has no limit, so
|
||||
-@code{PASS_MAX} is undefined.
|
||||
-
|
||||
-The prototype for this function is in @file{unistd.h}. @code{PASS_MAX}
|
||||
-would be defined in @file{limits.h}.
|
||||
-@end deftypefun
|
||||
-
|
||||
-This precise set of operations may not suit all possible situations. In
|
||||
-this case, it is recommended that users write their own @code{getpass}
|
||||
-substitute. For instance, a very simple substitute is as follows:
|
||||
-
|
||||
-@smallexample
|
||||
-@include mygetpass.c.texi
|
||||
-@end smallexample
|
||||
-
|
||||
-The substitute takes the same parameters as @code{getline}
|
||||
-(@pxref{Line Input}); the user must print any prompt desired.
|
||||
-
|
||||
-@node crypt
|
||||
-@section Encrypting Passwords
|
||||
-
|
||||
@deftypefun {char *} crypt (const char *@var{key}, const char *@var{salt})
|
||||
@standards{BSD, crypt.h}
|
||||
@standards{SVID, crypt.h}
|
||||
@@ -177,6 +86,23 @@ password against the result of a previous call to @code{crypt}, pass
|
||||
the result of the previous call as the @var{salt}.
|
||||
@end deftypefun
|
||||
|
||||
+@deftypefun {char *} crypt_r (const char *@var{key}, const char *@var{salt}, {struct crypt_data *} @var{data})
|
||||
+@standards{GNU, crypt.h}
|
||||
+@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{} @asulock{} @ascuheap{} @ascudlopen{}}@acunsafe{@aculock{} @acsmem{}}}
|
||||
+@c Compared with crypt, this function fixes the @mtasurace:crypt
|
||||
+@c problem, but nothing else.
|
||||
+
|
||||
+The @code{crypt_r} function does the same thing as @code{crypt}, but
|
||||
+takes an extra parameter which includes space for its result (among
|
||||
+other things), so it can be reentrant. @code{data@w{->}initialized} must be
|
||||
+cleared to zero before the first time @code{crypt_r} is called.
|
||||
+
|
||||
+The @code{crypt_r} function is a GNU extension.
|
||||
+@end deftypefun
|
||||
+
|
||||
+The @code{crypt} and @code{crypt_r} functions are prototyped in the
|
||||
+header @file{crypt.h}.
|
||||
+
|
||||
The following short program is an example of how to use @code{crypt} the
|
||||
first time a password is entered. Note that the @var{salt} generation
|
||||
is just barely acceptable; in particular, it is not unique between
|
||||
@@ -195,23 +121,6 @@ for a password and prints ``Access granted.'' if the user types
|
||||
@include testpass.c.texi
|
||||
@end smallexample
|
||||
|
||||
-@deftypefun {char *} crypt_r (const char *@var{key}, const char *@var{salt}, {struct crypt_data *} @var{data})
|
||||
-@standards{GNU, crypt.h}
|
||||
-@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{} @asulock{} @ascuheap{} @ascudlopen{}}@acunsafe{@aculock{} @acsmem{}}}
|
||||
-@c Compared with crypt, this function fixes the @mtasurace:crypt
|
||||
-@c problem, but nothing else.
|
||||
-
|
||||
-The @code{crypt_r} function does the same thing as @code{crypt}, but
|
||||
-takes an extra parameter which includes space for its result (among
|
||||
-other things), so it can be reentrant. @code{data@w{->}initialized} must be
|
||||
-cleared to zero before the first time @code{crypt_r} is called.
|
||||
-
|
||||
-The @code{crypt_r} function is a GNU extension.
|
||||
-@end deftypefun
|
||||
-
|
||||
-The @code{crypt} and @code{crypt_r} functions are prototyped in the
|
||||
-header @file{crypt.h}.
|
||||
-
|
||||
@node Unpredictable Bytes
|
||||
@section Generating Unpredictable Bytes
|
||||
|
||||
diff --git a/manual/terminal.texi b/manual/terminal.texi
|
||||
index 4aace48b14034533..0b275fc0023d6a3b 100644
|
||||
--- a/manual/terminal.texi
|
||||
+++ b/manual/terminal.texi
|
||||
@@ -24,6 +24,7 @@ descriptor is and how to open a file descriptor for a terminal device.
|
||||
* Line Control:: Sending break sequences, clearing
|
||||
terminal buffers @dots{}
|
||||
* Noncanon Example:: How to read single characters without echo.
|
||||
+* getpass:: Prompting the user for a password.
|
||||
* Pseudo-Terminals:: How to open a pseudo-terminal.
|
||||
@end menu
|
||||
|
||||
@@ -1871,6 +1872,50 @@ existing shells do not actually do this, so you may wish to establish
|
||||
handlers for job control signals that reset terminal modes. The above
|
||||
example does so.
|
||||
|
||||
+@node getpass
|
||||
+@section Reading Passwords
|
||||
+
|
||||
+When reading in a password, it is desirable to avoid displaying it on
|
||||
+the screen, to help keep it secret. The following function handles this
|
||||
+in a convenient way.
|
||||
+
|
||||
+@deftypefun {char *} getpass (const char *@var{prompt})
|
||||
+@standards{BSD, unistd.h}
|
||||
+@safety{@prelim{}@mtunsafe{@mtasuterm{}}@asunsafe{@ascuheap{} @asulock{} @asucorrupt{}}@acunsafe{@acuterm{} @aculock{} @acucorrupt{}}}
|
||||
+@c This function will attempt to create a stream for terminal I/O, but
|
||||
+@c will fallback to stdio/stderr. It attempts to change the terminal
|
||||
+@c mode in a thread-unsafe way, write out the prompt, read the password,
|
||||
+@c then restore the terminal mode. It has a cleanup to close the stream
|
||||
+@c in case of (synchronous) cancellation, but not to restore the
|
||||
+@c terminal mode.
|
||||
+
|
||||
+@code{getpass} outputs @var{prompt}, then reads a string in from the
|
||||
+terminal without echoing it. It tries to connect to the real terminal,
|
||||
+@file{/dev/tty}, if possible, to encourage users not to put plaintext
|
||||
+passwords in files; otherwise, it uses @code{stdin} and @code{stderr}.
|
||||
+@code{getpass} also disables the INTR, QUIT, and SUSP characters on the
|
||||
+terminal using the @code{ISIG} terminal attribute (@pxref{Local Modes}).
|
||||
+The terminal is flushed before and after @code{getpass}, so that
|
||||
+characters of a mistyped password are not accidentally visible.
|
||||
+
|
||||
+In other C libraries, @code{getpass} may only return the first
|
||||
+@code{PASS_MAX} bytes of a password. @Theglibc{} has no limit, so
|
||||
+@code{PASS_MAX} is undefined.
|
||||
+
|
||||
+The prototype for this function is in @file{unistd.h}. @code{PASS_MAX}
|
||||
+would be defined in @file{limits.h}.
|
||||
+@end deftypefun
|
||||
+
|
||||
+This precise set of operations may not suit all possible situations. In
|
||||
+this case, it is recommended that users write their own @code{getpass}
|
||||
+substitute. For instance, a very simple substitute is as follows:
|
||||
+
|
||||
+@smallexample
|
||||
+@include mygetpass.c.texi
|
||||
+@end smallexample
|
||||
+
|
||||
+The substitute takes the same parameters as @code{getline}
|
||||
+(@pxref{Line Input}); the user must print any prompt desired.
|
||||
|
||||
@node Pseudo-Terminals
|
||||
@section Pseudo-Terminals
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,310 @@
|
|||
commit e69d994a63afc2d367f286a2a7df28cbf710f0fe
|
||||
Author: Zack Weinberg <zackw@panix.com>
|
||||
Date: Fri Jun 29 16:53:47 2018 +0200
|
||||
|
||||
New configure option --disable-crypt.
|
||||
|
||||
Some Linux distributions are experimenting with a new, separately
|
||||
maintained and hopefully more agile implementation of the crypt
|
||||
API. To facilitate this, add a configure option which disables
|
||||
glibc's embedded libcrypt. When this option is given, libcrypt.*
|
||||
and crypt.h will not be built nor installed.
|
||||
|
||||
diff --git a/INSTALL b/INSTALL
|
||||
index 64dec3473e1f0c1f..87c9cf97c81b49bc 100644
|
||||
--- a/INSTALL
|
||||
+++ b/INSTALL
|
||||
@@ -188,6 +188,17 @@ will be used, and CFLAGS sets optimization options for the compiler.
|
||||
libnss_nisplus are not built at all. Use this option to enable
|
||||
libnsl with all depending NSS modules and header files.
|
||||
|
||||
+'--disable-crypt'
|
||||
+ Do not install the passphrase-hashing library 'libcrypt' or the
|
||||
+ header file 'crypt.h'. 'unistd.h' will still declare the function
|
||||
+ 'crypt'. Using this option does not change the set of programs
|
||||
+ that may need to be linked with '-lcrypt'; it only means that the
|
||||
+ GNU C Library will not provide that library.
|
||||
+
|
||||
+ This option is for hackers and distributions experimenting with
|
||||
+ independently-maintained implementations of libcrypt. It may
|
||||
+ become the default in a future release.
|
||||
+
|
||||
'--disable-experimental-malloc'
|
||||
By default, a per-thread cache is enabled in 'malloc'. While this
|
||||
cache can be disabled on a per-application basis using tunables
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index 86a71e580213f6e5..de0eb1b5e99e752a 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -566,7 +566,7 @@ link-libc-printers-tests = $(link-libc-rpath) \
|
||||
$(link-libc-tests-after-rpath-link)
|
||||
|
||||
# This is how to find at build-time things that will be installed there.
|
||||
-rpath-dirs = math elf dlfcn nss nis rt resolv crypt mathvec support
|
||||
+rpath-dirs = math elf dlfcn nss nis rt resolv mathvec support
|
||||
rpath-link = \
|
||||
$(common-objdir):$(subst $(empty) ,:,$(patsubst ../$(subdir),.,$(rpath-dirs:%=$(common-objpfx)%)))
|
||||
else # build-static
|
||||
@@ -1201,9 +1201,14 @@ all-subdirs = csu assert ctype locale intl catgets math setjmp signal \
|
||||
stdlib stdio-common libio malloc string wcsmbs time dirent \
|
||||
grp pwd posix io termios resource misc socket sysvipc gmon \
|
||||
gnulib iconv iconvdata wctype manual shadow gshadow po argp \
|
||||
- crypt localedata timezone rt conform debug mathvec support \
|
||||
+ localedata timezone rt conform debug mathvec support \
|
||||
dlfcn elf
|
||||
|
||||
+ifeq ($(build-crypt),yes)
|
||||
+all-subdirs += crypt
|
||||
+rpath-dirs += crypt
|
||||
+endif
|
||||
+
|
||||
ifndef avoid-generated
|
||||
# sysd-sorted itself will contain rules making the sysd-sorted target
|
||||
# depend on Depend files. But if you just added a Depend file to an
|
||||
diff --git a/config.make.in b/config.make.in
|
||||
index 9e5e24b2c685bef6..d9891b2cd8ec3fbf 100644
|
||||
--- a/config.make.in
|
||||
+++ b/config.make.in
|
||||
@@ -96,6 +96,7 @@ cross-compiling = @cross_compiling@
|
||||
force-install = @force_install@
|
||||
link-obsolete-rpc = @link_obsolete_rpc@
|
||||
build-obsolete-nsl = @build_obsolete_nsl@
|
||||
+build-crypt = @build_crypt@
|
||||
build-nscd = @build_nscd@
|
||||
use-nscd = @use_nscd@
|
||||
build-hardcoded-path-in-tests= @hardcoded_path_in_tests@
|
||||
diff --git a/configure b/configure
|
||||
index 7a8bd3f817be359c..ef1830221522b7a5 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -676,6 +676,7 @@ build_obsolete_nsl
|
||||
link_obsolete_rpc
|
||||
libc_cv_static_nss_crypt
|
||||
libc_cv_nss_crypt
|
||||
+build_crypt
|
||||
experimental_malloc
|
||||
enable_werror
|
||||
all_warnings
|
||||
@@ -779,6 +780,7 @@ enable_all_warnings
|
||||
enable_werror
|
||||
enable_multi_arch
|
||||
enable_experimental_malloc
|
||||
+enable_crypt
|
||||
enable_nss_crypt
|
||||
enable_obsolete_rpc
|
||||
enable_obsolete_nsl
|
||||
@@ -1448,6 +1450,8 @@ Optional Features:
|
||||
architectures
|
||||
--disable-experimental-malloc
|
||||
disable experimental malloc features
|
||||
+ --disable-crypt do not build nor install the passphrase hashing
|
||||
+ library, libcrypt
|
||||
--enable-nss-crypt enable libcrypt to use nss
|
||||
--enable-obsolete-rpc build and install the obsolete RPC code for
|
||||
link-time usage
|
||||
@@ -3505,6 +3509,15 @@ fi
|
||||
|
||||
|
||||
|
||||
+# Check whether --enable-crypt was given.
|
||||
+if test "${enable_crypt+set}" = set; then :
|
||||
+ enableval=$enable_crypt; build_crypt=$enableval
|
||||
+else
|
||||
+ build_crypt=yes
|
||||
+fi
|
||||
+
|
||||
+
|
||||
+
|
||||
# Check whether --enable-nss-crypt was given.
|
||||
if test "${enable_nss_crypt+set}" = set; then :
|
||||
enableval=$enable_nss_crypt; nss_crypt=$enableval
|
||||
@@ -3512,6 +3525,11 @@ else
|
||||
nss_crypt=no
|
||||
fi
|
||||
|
||||
+if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
|
||||
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-nss-crypt has no effect when libcrypt is disabled" >&5
|
||||
+$as_echo "$as_me: WARNING: --enable-nss-crypt has no effect when libcrypt is disabled" >&2;}
|
||||
+ nss_crypt=no
|
||||
+fi
|
||||
if test x$nss_crypt = xyes; then
|
||||
nss_includes=-I$(nss-config --includedir 2>/dev/null)
|
||||
if test $? -ne 0; then
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index ca1282a6b3f8c536..dc517017f588626a 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -302,11 +302,22 @@ AC_ARG_ENABLE([experimental-malloc],
|
||||
[experimental_malloc=yes])
|
||||
AC_SUBST(experimental_malloc)
|
||||
|
||||
+AC_ARG_ENABLE([crypt],
|
||||
+ AC_HELP_STRING([--disable-crypt],
|
||||
+ [do not build nor install the passphrase hashing library, libcrypt]),
|
||||
+ [build_crypt=$enableval],
|
||||
+ [build_crypt=yes])
|
||||
+AC_SUBST(build_crypt)
|
||||
+
|
||||
AC_ARG_ENABLE([nss-crypt],
|
||||
AC_HELP_STRING([--enable-nss-crypt],
|
||||
[enable libcrypt to use nss]),
|
||||
[nss_crypt=$enableval],
|
||||
[nss_crypt=no])
|
||||
+if test x$build_libcrypt = xno && test x$nss_crypt = xyes; then
|
||||
+ AC_MSG_WARN([--enable-nss-crypt has no effect when libcrypt is disabled])
|
||||
+ nss_crypt=no
|
||||
+fi
|
||||
if test x$nss_crypt = xyes; then
|
||||
nss_includes=-I$(nss-config --includedir 2>/dev/null)
|
||||
if test $? -ne 0; then
|
||||
diff --git a/conform/Makefile b/conform/Makefile
|
||||
index 864fdeca2168dff6..74fbda078618c902 100644
|
||||
--- a/conform/Makefile
|
||||
+++ b/conform/Makefile
|
||||
@@ -193,13 +193,11 @@ linknamespace-libs-thr = $(linknamespace-libs-isoc) \
|
||||
$(common-objpfx)rt/librt.a $(static-thread-library)
|
||||
linknamespace-libs-posix = $(linknamespace-libs-thr) \
|
||||
$(common-objpfx)dlfcn/libdl.a
|
||||
-linknamespace-libs-xsi = $(linknamespace-libs-posix) \
|
||||
- $(common-objpfx)crypt/libcrypt.a
|
||||
+linknamespace-libs-xsi = $(linknamespace-libs-posix)
|
||||
linknamespace-libs-ISO = $(linknamespace-libs-isoc)
|
||||
linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
|
||||
linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
|
||||
-linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) \
|
||||
- $(common-objpfx)crypt/libcrypt.a
|
||||
+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
|
||||
linknamespace-libs-XPG42 = $(linknamespace-libs-XPG4)
|
||||
linknamespace-libs-POSIX = $(linknamespace-libs-thr)
|
||||
linknamespace-libs-UNIX98 = $(linknamespace-libs-xsi)
|
||||
@@ -209,6 +207,11 @@ linknamespace-libs-XOPEN2K8 = $(linknamespace-libs-xsi)
|
||||
linknamespace-libs = $(foreach std,$(conformtest-standards),\
|
||||
$(linknamespace-libs-$(std)))
|
||||
|
||||
+ifeq ($(build-crypt),yes)
|
||||
+linknamespace-libs-xsi += $(common-objpfx)crypt/libcrypt.a
|
||||
+linknamespace-libs-XPG4 += $(common-objpfx)crypt/libcrypt.a
|
||||
+endif
|
||||
+
|
||||
$(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
|
||||
$(linknamespace-libs)
|
||||
LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
|
||||
diff --git a/crypt/Makefile b/crypt/Makefile
|
||||
index 303800df73496cb3..3811b6e298509567 100644
|
||||
--- a/crypt/Makefile
|
||||
+++ b/crypt/Makefile
|
||||
@@ -32,10 +32,6 @@ libcrypt-routines := crypt-entry md5-crypt sha256-crypt sha512-crypt crypt \
|
||||
|
||||
tests := cert md5c-test sha256c-test sha512c-test badsalttest
|
||||
|
||||
-ifeq ($(crypt-in-libc),yes)
|
||||
-routines += $(libcrypt-routines)
|
||||
-endif
|
||||
-
|
||||
ifeq ($(nss-crypt),yes)
|
||||
nss-cpp-flags := -DUSE_NSS \
|
||||
-I$(shell nss-config --includedir) -I$(shell nspr-config --includedir)
|
||||
diff --git a/elf/Makefile b/elf/Makefile
|
||||
index 2113871ff79d2313..8625dd80575977d0 100644
|
||||
--- a/elf/Makefile
|
||||
+++ b/elf/Makefile
|
||||
@@ -395,14 +395,21 @@ $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
|
||||
CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
|
||||
endif
|
||||
|
||||
-# By default tst-linkall-static should try to use crypt routines to test
|
||||
-# static libcrypt use.
|
||||
+# We can only test static libcrypt use if libcrypt has been built,
|
||||
+# and either NSS crypto is not in use, or static NSS libraries are
|
||||
+# available.
|
||||
+ifeq ($(build-crypt),no)
|
||||
+CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=0
|
||||
+else
|
||||
+ifeq ($(nss-crypt),no)
|
||||
+CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
|
||||
+else
|
||||
+ifeq ($(static-nss-crypt),no)
|
||||
+CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=0
|
||||
+else
|
||||
CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
|
||||
-# However, if we are using NSS crypto and we don't have a static
|
||||
-# library, then we exclude the use of crypt functions in the test.
|
||||
-# We similarly exclude libcrypt.a from the static link (see below).
|
||||
-ifeq (yesno,$(nss-crypt)$(static-nss-crypt))
|
||||
-CFLAGS-tst-linkall-static.c += -UUSE_CRYPT -DUSE_CRYPT=0
|
||||
+endif
|
||||
+endif
|
||||
endif
|
||||
|
||||
include ../Rules
|
||||
@@ -1125,7 +1132,6 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
|
||||
rt/librt.so \
|
||||
dlfcn/libdl.so \
|
||||
resolv/libresolv.so \
|
||||
- crypt/libcrypt.so \
|
||||
)
|
||||
ifeq ($(build-mathvec),yes)
|
||||
localplt-built-dso += $(addprefix $(common-objpfx), mathvec/libmvec.so)
|
||||
@@ -1133,6 +1139,9 @@ endif
|
||||
ifeq ($(have-thread-library),yes)
|
||||
localplt-built-dso += $(filter-out %_nonshared.a, $(shared-thread-library))
|
||||
endif
|
||||
+ifeq ($(build-crypt),yes)
|
||||
+localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
|
||||
+endif
|
||||
|
||||
vpath localplt.data $(+sysdep_dirs)
|
||||
|
||||
@@ -1407,6 +1416,7 @@ $(objpfx)tst-linkall-static: \
|
||||
$(common-objpfx)resolv/libanl.a \
|
||||
$(static-thread-library)
|
||||
|
||||
+ifeq ($(build-crypt),yes)
|
||||
# If we are using NSS crypto and we have the ability to link statically
|
||||
# then we include libcrypt.a, otherwise we leave out libcrypt.a and
|
||||
# link as much as we can into the tst-linkall-static test. This assumes
|
||||
@@ -1422,6 +1432,7 @@ ifeq (no,$(nss-crypt))
|
||||
$(objpfx)tst-linkall-static: \
|
||||
$(common-objpfx)crypt/libcrypt.a
|
||||
endif
|
||||
+endif
|
||||
|
||||
# The application depends on the DSO, and the DSO loads the plugin.
|
||||
# The plugin also depends on the DSO. This creates the circular
|
||||
diff --git a/elf/tst-linkall-static.c b/elf/tst-linkall-static.c
|
||||
index e8df38f74e6415e7..d0f2592e67888f70 100644
|
||||
--- a/elf/tst-linkall-static.c
|
||||
+++ b/elf/tst-linkall-static.c
|
||||
@@ -18,7 +18,9 @@
|
||||
|
||||
#include <math.h>
|
||||
#include <pthread.h>
|
||||
-#include <crypt.h>
|
||||
+#if USE_CRYPT
|
||||
+# include <crypt.h>
|
||||
+#endif
|
||||
#include <resolv.h>
|
||||
#include <dlfcn.h>
|
||||
#include <utmp.h>
|
||||
diff --git a/manual/install.texi b/manual/install.texi
|
||||
index 43dd8d6b814760c2..c95e4db9ce24c480 100644
|
||||
--- a/manual/install.texi
|
||||
+++ b/manual/install.texi
|
||||
@@ -219,6 +219,17 @@ libnss_nisplus are not built at all.
|
||||
Use this option to enable libnsl with all depending NSS modules and
|
||||
header files.
|
||||
|
||||
+@item --disable-crypt
|
||||
+Do not install the passphrase-hashing library @file{libcrypt} or the
|
||||
+header file @file{crypt.h}. @file{unistd.h} will still declare the
|
||||
+function @code{crypt}. Using this option does not change the set of
|
||||
+programs that may need to be linked with @option{-lcrypt}; it only
|
||||
+means that @theglibc{} will not provide that library.
|
||||
+
|
||||
+This option is for hackers and distributions experimenting with
|
||||
+independently-maintained implementations of libcrypt. It may become
|
||||
+the default in a future release.
|
||||
+
|
||||
@item --disable-experimental-malloc
|
||||
By default, a per-thread cache is enabled in @code{malloc}. While
|
||||
this cache can be disabled on a per-application basis using tunables
|
|
@ -0,0 +1,29 @@
|
|||
commit 38cade0c461e58770749d7e8973f85c79532838a
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu Jul 5 19:28:11 2018 +0200
|
||||
|
||||
Compile debug/stack_chk_fail_local.c with stack protector
|
||||
|
||||
The resulting object file is statically linked into applications, so
|
||||
it is desirable to have (formal) stack protector coverage there.
|
||||
|
||||
diff --git a/debug/Makefile b/debug/Makefile
|
||||
index c6f6feb0ecf538a2..506cebc3c4ca19ff 100644
|
||||
--- a/debug/Makefile
|
||||
+++ b/debug/Makefile
|
||||
@@ -58,10 +58,13 @@ static-only-routines := warning-nop stack_chk_fail_local
|
||||
elide-routines.o := stack_chk_fail_local
|
||||
|
||||
# Building the stack-protector failure routines with stack protection
|
||||
-# makes no sense.
|
||||
+# is not required since we have already failed a stack check and are
|
||||
+# exiting the process. However, the local aliases which jump to the
|
||||
+# real routines should still be compiled with stack protection
|
||||
+# (stack_chk_fail_local.c), so that the statically linked parts of the
|
||||
+# library have the expected flags.
|
||||
|
||||
CFLAGS-stack_chk_fail.c += $(no-stack-protector)
|
||||
-CFLAGS-stack_chk_fail_local.c += $(no-stack-protector)
|
||||
|
||||
CFLAGS-backtrace.c += -fno-omit-frame-pointer -funwind-tables
|
||||
CFLAGS-sprintf_chk.c += $(libio-mtsafe)
|
|
@ -0,0 +1,38 @@
|
|||
commit 3a885c1f51b18852869a91cf59a1b39da1595c7a
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu Jul 5 22:57:45 2018 +0200
|
||||
|
||||
Build csu/elf-init.c and csu/static-reloc.c with stack protector
|
||||
|
||||
This does not change generated code (with -fstack-protector-strong), but
|
||||
is important for formal compiler flags compliance.
|
||||
|
||||
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
diff --git a/csu/Makefile b/csu/Makefile
|
||||
index f3498960f89e3b31..88fc77662ef83479 100644
|
||||
--- a/csu/Makefile
|
||||
+++ b/csu/Makefile
|
||||
@@ -50,6 +50,22 @@ CFLAGS-.o += $(no-stack-protector)
|
||||
CFLAGS-.op += $(no-stack-protector)
|
||||
CFLAGS-.os += $(no-stack-protector)
|
||||
|
||||
+# Dummy object not actually used for anything. It is linked into
|
||||
+# crt1.o nevertheless, which in turn is statically linked into
|
||||
+# applications, so that build flags matter.
|
||||
+# See <https://sourceware.org/ml/libc-alpha/2018-07/msg00101.html>.
|
||||
+# NB: Using $(stack-protector) in this way causes a wrong definition
|
||||
+# STACK_PROTECTOR_LEVEL due to the preceding $(no-stack-protector),
|
||||
+# but it does not matter for this source file.
|
||||
+CFLAGS-static-reloc.os += $(stack-protector)
|
||||
+
|
||||
+# This file is not actually part of the startup code in the nonshared
|
||||
+# case and statically linked into applications. See
|
||||
+# <https://sourceware.org/bugzilla/show_bug.cgi?id=23323>,
|
||||
+# <https://sourceware.org/ml/libc-alpha/2018-06/msg00717.html>.
|
||||
+# Also see the note above regarding STACK_PROTECTOR_LEVEL.
|
||||
+CFLAGS-elf-init.oS += $(stack-protector)
|
||||
+
|
||||
ifeq (yes,$(build-shared))
|
||||
extra-objs += S$(start-installed-name) gmon-start.os
|
||||
ifneq ($(start-installed-name),$(static-start-installed-name))
|
|
@ -0,0 +1,40 @@
|
|||
Use python3 for installed executable python scripts.
|
||||
|
||||
Fedora is a Python3-only distribution:
|
||||
https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
|
||||
|
||||
This fixes build failures where builders may strictly enforce only
|
||||
python3 during a transitional phase.
|
||||
|
||||
Author: Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
diff --git a/benchtests/scripts/compare_bench.py b/benchtests/scripts/compare_bench.py
|
||||
index ea25f778c09bba9d..b53beb3c6e32c3cf 100755
|
||||
--- a/benchtests/scripts/compare_bench.py
|
||||
+++ b/benchtests/scripts/compare_bench.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python3
|
||||
# Copyright (C) 2015-2018 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
#
|
||||
diff --git a/benchtests/scripts/import_bench.py b/benchtests/scripts/import_bench.py
|
||||
index 602b3f954d4801a6..76bf1528a5418748 100644
|
||||
--- a/benchtests/scripts/import_bench.py
|
||||
+++ b/benchtests/scripts/import_bench.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python3
|
||||
# Copyright (C) 2015-2018 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
#
|
||||
diff --git a/benchtests/scripts/validate_benchout.py b/benchtests/scripts/validate_benchout.py
|
||||
index 6147f05bec3a4844..9a5c7947ee4ed7e9 100755
|
||||
--- a/benchtests/scripts/validate_benchout.py
|
||||
+++ b/benchtests/scripts/validate_benchout.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/python
|
||||
+#!/usr/bin/python3
|
||||
# Copyright (C) 2014-2018 Free Software Foundation, Inc.
|
||||
# This file is part of the GNU C Library.
|
||||
#
|
|
@ -241,7 +241,7 @@ Date: Sun Mar 1 23:22:45 2015 +0100
|
|||
extend_alloca_account): Remove.
|
||||
|
||||
diff --git a/elf/dl-deps.c b/elf/dl-deps.c
|
||||
index 35cad364b7dfdf0d..0fae87a0bb976335 100644
|
||||
index c975fcffd7735f9e..df7fc442ae1a80aa 100644
|
||||
--- a/elf/dl-deps.c
|
||||
+++ b/elf/dl-deps.c
|
||||
@@ -27,6 +27,7 @@
|
||||
|
@ -370,7 +370,7 @@ index fd90664f0a17cd6d..c0b83954436ed4c1 100644
|
|||
|
||||
# endif /* !_ISOMAC */
|
||||
diff --git a/nis/nss_nis/nis-initgroups.c b/nis/nss_nis/nis-initgroups.c
|
||||
index 3784c101f7ee31aa..c872b32e15f55e3d 100644
|
||||
index a47b4d7ada0fe37b..d6ab289b291861c5 100644
|
||||
--- a/nis/nss_nis/nis-initgroups.c
|
||||
+++ b/nis/nss_nis/nis-initgroups.c
|
||||
@@ -16,7 +16,6 @@
|
||||
|
@ -467,7 +467,7 @@ index 3784c101f7ee31aa..c872b32e15f55e3d 100644
|
|||
return status;
|
||||
}
|
||||
diff --git a/nscd/aicache.c b/nscd/aicache.c
|
||||
index a3de792cc429b546..7064d12a15b3e19d 100644
|
||||
index 6f7b038021746e22..c2ac71f2b9647caa 100644
|
||||
--- a/nscd/aicache.c
|
||||
+++ b/nscd/aicache.c
|
||||
@@ -28,6 +28,7 @@
|
||||
|
@ -636,10 +636,10 @@ index a3de792cc429b546..7064d12a15b3e19d 100644
|
|||
}
|
||||
|
||||
diff --git a/nscd/connections.c b/nscd/connections.c
|
||||
index cc1ed72077640a8b..2f69800ee5ca83b4 100644
|
||||
index a2dee8ab0cf903a4..700576e7bcc4fab1 100644
|
||||
--- a/nscd/connections.c
|
||||
+++ b/nscd/connections.c
|
||||
@@ -1324,64 +1324,83 @@ request from '%s' [%ld] not handled due to missing permission"),
|
||||
@@ -1325,64 +1325,83 @@ request from '%s' [%ld] not handled due to missing permission"),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -761,7 +761,7 @@ index cc1ed72077640a8b..2f69800ee5ca83b4 100644
|
|||
{
|
||||
argv[argc++] = cp;
|
||||
cp = (char *) rawmemchr (cp, '\0') + 1;
|
||||
@@ -1398,6 +1417,7 @@ cannot change to old UID: %s; disabling paranoia mode"),
|
||||
@@ -1399,6 +1418,7 @@ cannot change to old UID: %s; disabling paranoia mode"),
|
||||
strerror (errno));
|
||||
|
||||
paranoia = 0;
|
||||
|
@ -769,7 +769,7 @@ index cc1ed72077640a8b..2f69800ee5ca83b4 100644
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -1409,6 +1429,7 @@ cannot change to old GID: %s; disabling paranoia mode"),
|
||||
@@ -1410,6 +1430,7 @@ cannot change to old GID: %s; disabling paranoia mode"),
|
||||
|
||||
ignore_value (setuid (server_uid));
|
||||
paranoia = 0;
|
||||
|
@ -777,7 +777,7 @@ index cc1ed72077640a8b..2f69800ee5ca83b4 100644
|
|||
return;
|
||||
}
|
||||
}
|
||||
@@ -1426,6 +1447,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
|
||||
@@ -1427,6 +1448,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
|
||||
ignore_value (setgid (server_gid));
|
||||
}
|
||||
paranoia = 0;
|
||||
|
@ -785,7 +785,7 @@ index cc1ed72077640a8b..2f69800ee5ca83b4 100644
|
|||
return;
|
||||
}
|
||||
|
||||
@@ -1474,6 +1496,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
|
||||
@@ -1475,6 +1497,7 @@ cannot change to old working directory: %s; disabling paranoia mode"),
|
||||
dbg_log (_("cannot change current working directory to \"/\": %s"),
|
||||
strerror (errno));
|
||||
paranoia = 0;
|
||||
|
@ -794,7 +794,7 @@ index cc1ed72077640a8b..2f69800ee5ca83b4 100644
|
|||
/* Reenable the databases. */
|
||||
time_t now = time (NULL);
|
||||
diff --git a/nscd/grpcache.c b/nscd/grpcache.c
|
||||
index d2ad53509db97bdf..a71036512048dd81 100644
|
||||
index 0ed8e656b2ae8ff9..3515971ea02d4192 100644
|
||||
--- a/nscd/grpcache.c
|
||||
+++ b/nscd/grpcache.c
|
||||
@@ -16,7 +16,6 @@
|
||||
|
@ -889,7 +889,7 @@ index d2ad53509db97bdf..a71036512048dd81 100644
|
|||
}
|
||||
|
||||
diff --git a/nscd/hstcache.c b/nscd/hstcache.c
|
||||
index 9f6ce979ac333265..d0af99893dd17b9f 100644
|
||||
index 344a2b3052cc6ee0..95bff9b390495920 100644
|
||||
--- a/nscd/hstcache.c
|
||||
+++ b/nscd/hstcache.c
|
||||
@@ -34,6 +34,7 @@
|
||||
|
@ -979,7 +979,7 @@ index 9f6ce979ac333265..d0af99893dd17b9f 100644
|
|||
}
|
||||
|
||||
diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c
|
||||
index 721f4c617b0bb74a..9349b54df4241ad5 100644
|
||||
index 4c3ab660211f2b28..3f816ee0b06ae385 100644
|
||||
--- a/nscd/pwdcache.c
|
||||
+++ b/nscd/pwdcache.c
|
||||
@@ -16,7 +16,6 @@
|
||||
|
@ -1075,7 +1075,7 @@ index 721f4c617b0bb74a..9349b54df4241ad5 100644
|
|||
}
|
||||
|
||||
diff --git a/nscd/servicescache.c b/nscd/servicescache.c
|
||||
index 131ba6ddcc1a5f7a..549e9a446816d760 100644
|
||||
index 49d9d0dece186c1b..53868c97b56af367 100644
|
||||
--- a/nscd/servicescache.c
|
||||
+++ b/nscd/servicescache.c
|
||||
@@ -16,7 +16,6 @@
|
||||
|
@ -1169,7 +1169,7 @@ index 131ba6ddcc1a5f7a..549e9a446816d760 100644
|
|||
}
|
||||
|
||||
diff --git a/nss/getent.c b/nss/getent.c
|
||||
index 8f8c3fe80a2cfea6..5654c5f67c4f118c 100644
|
||||
index e609e5f9bb62a70f..f8cee703e337c4b2 100644
|
||||
--- a/nss/getent.c
|
||||
+++ b/nss/getent.c
|
||||
@@ -39,6 +39,7 @@
|
||||
|
@ -1232,7 +1232,7 @@ index 8f8c3fe80a2cfea6..5654c5f67c4f118c 100644
|
|||
}
|
||||
|
||||
diff --git a/nss/nss_compat/compat-initgroups.c b/nss/nss_compat/compat-initgroups.c
|
||||
index c1a9301a3b0c3ee0..bae8765afbd109e9 100644
|
||||
index 74414f4622880b31..540eee863c85dea3 100644
|
||||
--- a/nss/nss_compat/compat-initgroups.c
|
||||
+++ b/nss/nss_compat/compat-initgroups.c
|
||||
@@ -261,7 +261,6 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
|
||||
|
@ -1303,7 +1303,7 @@ index c1a9301a3b0c3ee0..bae8765afbd109e9 100644
|
|||
}
|
||||
|
||||
diff --git a/nss/nss_files/files-initgroups.c b/nss/nss_files/files-initgroups.c
|
||||
index 27cd8ece40434f5c..8a88f1b62357d3bd 100644
|
||||
index 8af0d4d36a400f0e..b441d8345f8a7a24 100644
|
||||
--- a/nss/nss_files/files-initgroups.c
|
||||
+++ b/nss/nss_files/files-initgroups.c
|
||||
@@ -16,7 +16,6 @@
|
||||
|
@ -1378,7 +1378,7 @@ index 27cd8ece40434f5c..8a88f1b62357d3bd 100644
|
|||
|
||||
fclose (stream);
|
||||
diff --git a/posix/wordexp.c b/posix/wordexp.c
|
||||
index e4cfce946013dc78..a751fb32b286aec2 100644
|
||||
index 8e33ad95b03db16d..ffe4365d6b363e94 100644
|
||||
--- a/posix/wordexp.c
|
||||
+++ b/posix/wordexp.c
|
||||
@@ -17,7 +17,6 @@
|
||||
|
@ -1486,7 +1486,7 @@ index e4cfce946013dc78..a751fb32b286aec2 100644
|
|||
}
|
||||
return *word ? 0 : WRDE_NOSPACE;
|
||||
diff --git a/sysdeps/unix/sysv/linux/gethostid.c b/sysdeps/unix/sysv/linux/gethostid.c
|
||||
index ca0387723873aa8c..9a9346c2189acf7a 100644
|
||||
index 73c56e57e5aa4422..ec1c8c5bfcd57077 100644
|
||||
--- a/sysdeps/unix/sysv/linux/gethostid.c
|
||||
+++ b/sysdeps/unix/sysv/linux/gethostid.c
|
||||
@@ -63,13 +63,12 @@ sethostid (long int id)
|
||||
|
@ -1540,7 +1540,7 @@ index ca0387723873aa8c..9a9346c2189acf7a 100644
|
|||
bit fiddling. */
|
||||
return (int32_t) (in.s_addr << 16 | in.s_addr >> 16);
|
||||
diff --git a/sysdeps/unix/sysv/linux/getlogin_r.c b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
index 45c468f5a13529d8..fea3e18b1bc30ee7 100644
|
||||
index 7a814ea92f1481bf..6c945afab62442c2 100644
|
||||
--- a/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
+++ b/sysdeps/unix/sysv/linux/getlogin_r.c
|
||||
@@ -18,6 +18,7 @@
|
||||
|
@ -1551,9 +1551,9 @@ index 45c468f5a13529d8..fea3e18b1bc30ee7 100644
|
|||
|
||||
#define STATIC static
|
||||
static int getlogin_r_fd0 (char *name, size_t namesize);
|
||||
@@ -54,28 +55,19 @@ __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
endp == uidbuf || *endp != '\0'))
|
||||
return -1;
|
||||
@@ -63,28 +64,19 @@ __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
return ENXIO;
|
||||
}
|
||||
|
||||
- size_t buflen = 1024;
|
||||
- char *buf = alloca (buflen);
|
||||
|
@ -1587,7 +1587,7 @@ index 45c468f5a13529d8..fea3e18b1bc30ee7 100644
|
|||
}
|
||||
|
||||
if (res != 0 || tpwd == NULL)
|
||||
@@ -95,9 +87,7 @@ __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
@@ -104,9 +96,7 @@ __getlogin_r_loginuid (char *name, size_t namesize)
|
||||
memcpy (name, pwd.pw_name, needed);
|
||||
|
||||
out:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
commit a829b747cf2ce18ba869ea60f67975c484bf2769
|
||||
Author: Istvan Kurucsai <pistukem@gmail.com>
|
||||
Date: Fri Jan 12 15:34:13 2018 +0100
|
||||
commit 5f7b841d3aebdccc2baed27cb4b22ddb08cd7c0c
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed May 23 14:16:18 2018 +0200
|
||||
|
||||
Implement allocate_once for atomic initialization with allocation
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
commit 0e0929705f095c7eb2e11e82aee3bf9e9edd365e
|
||||
commit 7f9f1ecb710eac4d65bb02785ddf288cac098323
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed Jan 10 20:03:03 2018 +0100
|
||||
Date: Wed May 23 15:26:19 2018 +0200
|
||||
|
||||
Switch IDNA implementation to libidn2 [BZ #19728] [BZ #19729] [BZ #22247]
|
||||
|
||||
|
@ -8,7 +8,7 @@ Date: Wed Jan 10 20:03:03 2018 +0100
|
|||
CVE-2016-6261, CVE-2016-6263, CVE-2017-14062.
|
||||
|
||||
diff --git a/LICENSES b/LICENSES
|
||||
index 80f7f1487947f578..b29efe01084af28c 100644
|
||||
index 858076d9d3b8f8fb..0e3a9fe39b26e970 100644
|
||||
--- a/LICENSES
|
||||
+++ b/LICENSES
|
||||
@@ -248,75 +248,6 @@ Public License, version 2.1 or later - see the file COPYING.LIB for details.
|
||||
|
@ -88,10 +88,10 @@ index 80f7f1487947f578..b29efe01084af28c 100644
|
|||
|
||||
Copyright (C) 1998 WIDE Project.
|
||||
diff --git a/config.h.in b/config.h.in
|
||||
index d928e7dd867c68ce..d55a3c3834f91a0d 100644
|
||||
index b0b7cf26cb4b3aa0..141db213a9046eb4 100644
|
||||
--- a/config.h.in
|
||||
+++ b/config.h.in
|
||||
@@ -119,9 +119,6 @@
|
||||
@@ -124,9 +124,6 @@
|
||||
/* Mach/i386 specific: define if the `i386_set_gdt' RPC is available. */
|
||||
#undef HAVE_I386_SET_GDT
|
||||
|
||||
|
@ -116,7 +116,7 @@ index dcb271d575746c87..0000000000000000
|
|||
-
|
||||
-#endif
|
||||
diff --git a/inet/Makefile b/inet/Makefile
|
||||
index f63c7e25bad22ecd..6fd20121936048e3 100644
|
||||
index f63c7e25bad22ecd..0fc478b3ddc59cad 100644
|
||||
--- a/inet/Makefile
|
||||
+++ b/inet/Makefile
|
||||
@@ -45,7 +45,7 @@ routines := htonl htons \
|
||||
|
@ -124,10 +124,37 @@ index f63c7e25bad22ecd..6fd20121936048e3 100644
|
|||
getipv4sourcefilter setipv4sourcefilter \
|
||||
getsourcefilter setsourcefilter inet6_opt inet6_rth \
|
||||
- inet6_scopeid_pton deadline
|
||||
+ inet6_scopeid_pton deadline idna
|
||||
+ inet6_scopeid_pton deadline idna idna_name_classify
|
||||
|
||||
aux := check_pf check_native ifreq
|
||||
|
||||
@@ -59,12 +59,20 @@ tests := htontest test_ifindex tst-ntoa tst-ether_aton tst-network \
|
||||
tests-static += tst-deadline
|
||||
tests-static-internal := tst-deadline
|
||||
|
||||
+# tst-idna_name_classify must be linked statically because it tests
|
||||
+# internal functionality.
|
||||
+tests-static += tst-idna_name_classify
|
||||
+tests-internal += tst-idna_name_classify
|
||||
+
|
||||
# tst-inet6_scopeid_pton also needs internal functions but does not
|
||||
# need to be linked statically.
|
||||
tests-internal := tst-inet6_scopeid_pton
|
||||
|
||||
include ../Rules
|
||||
|
||||
+LOCALES := en_US.UTF-8 en_US.ISO-8859-1
|
||||
+include ../gen-locales.mk
|
||||
+
|
||||
ifeq ($(have-thread-library),yes)
|
||||
|
||||
CFLAGS-gethstbyad_r.c += -fexceptions
|
||||
@@ -103,3 +111,5 @@ endif
|
||||
ifeq ($(build-static-nss),yes)
|
||||
CFLAGS += -DSTATIC_NSS
|
||||
endif
|
||||
+
|
||||
+$(objpfx)tst-idna_name_classify.out: $(gen-locales)
|
||||
diff --git a/inet/Versions b/inet/Versions
|
||||
index 6f663f3648b9926d..9b3661e0467887b8 100644
|
||||
--- a/inet/Versions
|
||||
|
@ -141,7 +168,7 @@ index 6f663f3648b9926d..9b3661e0467887b8 100644
|
|||
}
|
||||
}
|
||||
diff --git a/inet/getnameinfo.c b/inet/getnameinfo.c
|
||||
index a20d20b7cd52fbf1..6f7dc456494a492f 100644
|
||||
index a20d20b7cd52fbf1..5d4978e38367446c 100644
|
||||
--- a/inet/getnameinfo.c
|
||||
+++ b/inet/getnameinfo.c
|
||||
@@ -71,10 +71,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
@ -166,14 +193,16 @@ index a20d20b7cd52fbf1..6f7dc456494a492f 100644
|
|||
|
||||
static char *
|
||||
nrl_domainname (void)
|
||||
@@ -285,41 +285,24 @@ gni_host_inet_name (struct scratch_buffer *tmpbuf,
|
||||
@@ -285,41 +285,28 @@ gni_host_inet_name (struct scratch_buffer *tmpbuf,
|
||||
/* Terminate the string after the prefix. */
|
||||
*c = '\0';
|
||||
|
||||
-#ifdef HAVE_LIBIDN
|
||||
/* If requested, convert from the IDN format. */
|
||||
- if (flags & NI_IDN)
|
||||
+ bool do_idn = flags & NI_IDN;
|
||||
+ char *h_name;
|
||||
if (flags & NI_IDN)
|
||||
+ if (do_idn)
|
||||
{
|
||||
- int idn_flags = 0;
|
||||
- if (flags & NI_IDN_ALLOW_UNASSIGNED)
|
||||
|
@ -199,11 +228,14 @@ index a20d20b7cd52fbf1..6f7dc456494a492f 100644
|
|||
- free (out);
|
||||
- }
|
||||
+ int rc = __idna_from_dns_encoding (h->h_name, &h_name);
|
||||
+ if (rc != 0)
|
||||
+ if (rc == EAI_IDN_ENCODE)
|
||||
+ /* Use the punycode name as a fallback. */
|
||||
+ do_idn = false;
|
||||
+ else if (rc != 0)
|
||||
+ return rc;
|
||||
}
|
||||
-#endif
|
||||
+ else
|
||||
+ if (!do_idn)
|
||||
+ h_name = h->h_name;
|
||||
|
||||
- size_t len = strlen (h->h_name) + 1;
|
||||
|
@ -213,12 +245,12 @@ index a20d20b7cd52fbf1..6f7dc456494a492f 100644
|
|||
+ memcpy (host, h_name, len);
|
||||
|
||||
- memcpy (host, h->h_name, len);
|
||||
+ if (flags & NI_IDN)
|
||||
+ if (do_idn)
|
||||
+ free (h_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -501,10 +484,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
|
||||
@@ -501,10 +488,7 @@ getnameinfo (const struct sockaddr *sa, socklen_t addrlen, char *host,
|
||||
int flags)
|
||||
{
|
||||
if (flags & ~(NI_NUMERICHOST|NI_NUMERICSERV|NI_NOFQDN|NI_NAMEREQD|NI_DGRAM
|
||||
|
@ -232,10 +264,10 @@ index a20d20b7cd52fbf1..6f7dc456494a492f 100644
|
|||
if (sa == NULL || addrlen < sizeof (sa_family_t))
|
||||
diff --git a/inet/idna.c b/inet/idna.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..1c48875a6248d820
|
||||
index 0000000000000000..c561bf2e9e15ad23
|
||||
--- /dev/null
|
||||
+++ b/inet/idna.c
|
||||
@@ -0,0 +1,163 @@
|
||||
@@ -0,0 +1,182 @@
|
||||
+/* IDNA functions, forwarding to implementations in libidn2.
|
||||
+ Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
|
@ -350,11 +382,29 @@ index 0000000000000000..1c48875a6248d820
|
|||
+int
|
||||
+__idna_to_dns_encoding (const char *name, char **result)
|
||||
+{
|
||||
+ switch (__idna_name_classify (name))
|
||||
+ {
|
||||
+ case idna_name_ascii:
|
||||
+ /* Nothing to convert. */
|
||||
+ return gai_strdup (name, result);
|
||||
+ case idna_name_nonascii:
|
||||
+ /* Encoding needed. Handled below. */
|
||||
+ break;
|
||||
+ case idna_name_nonascii_backslash:
|
||||
+ case idna_name_encoding_error:
|
||||
+ return EAI_IDN_ENCODE;
|
||||
+ case idna_name_memory_error:
|
||||
+ return EAI_MEMORY;
|
||||
+ case idna_name_error:
|
||||
+ return EAI_SYSTEM;
|
||||
+ }
|
||||
+
|
||||
+ struct functions *functions = get_functions ();
|
||||
+ if (functions == NULL)
|
||||
+ /* Forward the domain name to the NSS module unencoded. It may be
|
||||
+ able to apply its own encoding to find an answer. */
|
||||
+ return gai_strdup (name, result);
|
||||
+ /* We report this as an encoding error (assuming that libidn2 is
|
||||
+ not installed), although the root cause may be a temporary
|
||||
+ error condition due to resource shortage. */
|
||||
+ return EAI_IDN_ENCODE;
|
||||
+ char *ptr = NULL;
|
||||
+ __typeof__ (functions->lookup_ul) fptr = functions->lookup_ul;
|
||||
+#ifdef PTR_DEMANGLE
|
||||
|
@ -379,7 +429,8 @@ index 0000000000000000..1c48875a6248d820
|
|||
+{
|
||||
+ struct functions *functions = get_functions ();
|
||||
+ if (functions == NULL)
|
||||
+ /* Simply */
|
||||
+ /* Simply use the encoded name, assuming that it is not punycode
|
||||
+ (but even a punycode name would be syntactically valid). */
|
||||
+ return gai_strdup (name, result);
|
||||
+ char *ptr = NULL;
|
||||
+ __typeof__ (functions->to_unicode_lzlz) fptr = functions->to_unicode_lzlz;
|
||||
|
@ -399,11 +450,92 @@ index 0000000000000000..1c48875a6248d820
|
|||
+ return EAI_IDN_ENCODE;
|
||||
+}
|
||||
+libc_hidden_def (__idna_from_dns_encoding)
|
||||
diff --git a/inet/idna_name_classify.c b/inet/idna_name_classify.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..3683e1133fea368a
|
||||
--- /dev/null
|
||||
+++ b/inet/idna_name_classify.c
|
||||
@@ -0,0 +1,75 @@
|
||||
+/* Classify a domain name for IDNA purposes.
|
||||
+ Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <errno.h>
|
||||
+#include <inet/net-internal.h>
|
||||
+#include <stdbool.h>
|
||||
+#include <string.h>
|
||||
+#include <wchar.h>
|
||||
+
|
||||
+enum idna_name_classification
|
||||
+__idna_name_classify (const char *name)
|
||||
+{
|
||||
+ mbstate_t mbs;
|
||||
+ memset (&mbs, 0, sizeof (mbs));
|
||||
+ const char *p = name;
|
||||
+ const char *end = p + strlen (p) + 1;
|
||||
+ bool nonascii = false;
|
||||
+ bool backslash = false;
|
||||
+ while (true)
|
||||
+ {
|
||||
+ wchar_t wc;
|
||||
+ size_t result = mbrtowc (&wc, p, end - p, &mbs);
|
||||
+ if (result == 0)
|
||||
+ /* NUL terminator was reached. */
|
||||
+ break;
|
||||
+ else if (result == (size_t) -2)
|
||||
+ /* Incomplete trailing multi-byte character. This is an
|
||||
+ encoding error becaue we received the full name. */
|
||||
+ return idna_name_encoding_error;
|
||||
+ else if (result == (size_t) -1)
|
||||
+ {
|
||||
+ /* Other error, including EILSEQ. */
|
||||
+ if (errno == EILSEQ)
|
||||
+ return idna_name_encoding_error;
|
||||
+ else if (errno == ENOMEM)
|
||||
+ return idna_name_memory_error;
|
||||
+ else
|
||||
+ return idna_name_error;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ /* A wide character was decoded. */
|
||||
+ p += result;
|
||||
+ if (wc == L'\\')
|
||||
+ backslash = true;
|
||||
+ else if (wc > 127)
|
||||
+ nonascii = true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (nonascii)
|
||||
+ {
|
||||
+ if (backslash)
|
||||
+ return idna_name_nonascii_backslash;
|
||||
+ else
|
||||
+ return idna_name_nonascii;
|
||||
+ }
|
||||
+ else
|
||||
+ return idna_name_ascii;
|
||||
+}
|
||||
diff --git a/inet/net-internal.h b/inet/net-internal.h
|
||||
index 8a9505cf99c50057..a5cd4e0304e3d117 100644
|
||||
index 8a9505cf99c50057..0ba6736aef294700 100644
|
||||
--- a/inet/net-internal.h
|
||||
+++ b/inet/net-internal.h
|
||||
@@ -29,6 +29,17 @@ int __inet6_scopeid_pton (const struct in6_addr *address,
|
||||
@@ -29,6 +29,33 @@ int __inet6_scopeid_pton (const struct in6_addr *address,
|
||||
libc_hidden_proto (__inet6_scopeid_pton)
|
||||
|
||||
|
||||
|
@ -417,10 +549,105 @@ index 8a9505cf99c50057..a5cd4e0304e3d117 100644
|
|||
+int __idna_from_dns_encoding (const char *name, char **result);
|
||||
+libc_hidden_proto (__idna_from_dns_encoding)
|
||||
+
|
||||
+
|
||||
+/* Return value of __idna_name_classify below. */
|
||||
+enum idna_name_classification
|
||||
+{
|
||||
+ idna_name_ascii, /* No non-ASCII characters. */
|
||||
+ idna_name_nonascii, /* Non-ASCII characters, no backslash. */
|
||||
+ idna_name_nonascii_backslash, /* Non-ASCII characters with backslash. */
|
||||
+ idna_name_encoding_error, /* Decoding error. */
|
||||
+ idna_name_memory_error, /* Memory allocation failure. */
|
||||
+ idna_name_error, /* Other error during decoding. Check errno. */
|
||||
+};
|
||||
+
|
||||
+/* Check the specified name for non-ASCII characters and backslashes
|
||||
+ or encoding errors. */
|
||||
+enum idna_name_classification __idna_name_classify (const char *name)
|
||||
+ attribute_hidden;
|
||||
+
|
||||
/* Deadline handling for enforcing timeouts.
|
||||
|
||||
Code should call __deadline_current_time to obtain the current time
|
||||
diff --git a/inet/tst-idna_name_classify.c b/inet/tst-idna_name_classify.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..c4a2c91329d2b522
|
||||
--- /dev/null
|
||||
+++ b/inet/tst-idna_name_classify.c
|
||||
@@ -0,0 +1,73 @@
|
||||
+/* Test IDNA name classification.
|
||||
+ Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
+
|
||||
+ The GNU C Library is free software; you can redistribute it and/or
|
||||
+ modify it under the terms of the GNU Lesser General Public
|
||||
+ License as published by the Free Software Foundation; either
|
||||
+ version 2.1 of the License, or (at your option) any later version.
|
||||
+
|
||||
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
+ Lesser General Public License for more details.
|
||||
+
|
||||
+ You should have received a copy of the GNU Lesser General Public
|
||||
+ License along with the GNU C Library; if not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#include <inet/net-internal.h>
|
||||
+#include <locale.h>
|
||||
+#include <stdio.h>
|
||||
+#include <support/check.h>
|
||||
+
|
||||
+static void
|
||||
+locale_insensitive_tests (void)
|
||||
+{
|
||||
+ TEST_COMPARE (__idna_name_classify (""), idna_name_ascii);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc"), idna_name_ascii);
|
||||
+ TEST_COMPARE (__idna_name_classify (".."), idna_name_ascii);
|
||||
+ TEST_COMPARE (__idna_name_classify ("\001abc\177"), idna_name_ascii);
|
||||
+ TEST_COMPARE (__idna_name_classify ("\\065bc"), idna_name_ascii);
|
||||
+}
|
||||
+
|
||||
+static int
|
||||
+do_test (void)
|
||||
+{
|
||||
+ puts ("info: C locale tests");
|
||||
+ locale_insensitive_tests ();
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\200def"),
|
||||
+ idna_name_encoding_error);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\200\\def"),
|
||||
+ idna_name_encoding_error);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\377def"),
|
||||
+ idna_name_encoding_error);
|
||||
+
|
||||
+ puts ("info: en_US.ISO-8859-1 locale tests");
|
||||
+ if (setlocale (LC_CTYPE, "en_US.ISO-8859-1") == 0)
|
||||
+ FAIL_EXIT1 ("setlocale for en_US.ISO-8859-1: %m\n");
|
||||
+ locale_insensitive_tests ();
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\200def"), idna_name_nonascii);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\377def"), idna_name_nonascii);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\\\200def"),
|
||||
+ idna_name_nonascii_backslash);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\200\\def"),
|
||||
+ idna_name_nonascii_backslash);
|
||||
+
|
||||
+ puts ("info: en_US.UTF-8 locale tests");
|
||||
+ if (setlocale (LC_CTYPE, "en_US.UTF-8") == 0)
|
||||
+ FAIL_EXIT1 ("setlocale for en_US.UTF-8: %m\n");
|
||||
+ locale_insensitive_tests ();
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\xc3\x9f""def"), idna_name_nonascii);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\\\xc3\x9f""def"),
|
||||
+ idna_name_nonascii_backslash);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\xc3\x9f\\def"),
|
||||
+ idna_name_nonascii_backslash);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\200def"), idna_name_encoding_error);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\xc3""def"), idna_name_encoding_error);
|
||||
+ TEST_COMPARE (__idna_name_classify ("abc\xc3"), idna_name_encoding_error);
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
||||
diff --git a/libidn/Makefile b/libidn/Makefile
|
||||
deleted file mode 100644
|
||||
index d61bab5fc4ff512a..0000000000000000
|
||||
|
@ -19462,30 +19689,20 @@ index c7e67ca563f87627..0000000000000000
|
|||
-{
|
||||
- return stringprep_convert (str, stringprep_locale_charset (), "UTF-8");
|
||||
-}
|
||||
diff --git a/manual/contrib.texi b/manual/contrib.texi
|
||||
index fbf42db31df08e3b..f2a38459856a67ae 100644
|
||||
--- a/manual/contrib.texi
|
||||
+++ b/manual/contrib.texi
|
||||
@@ -176,7 +176,7 @@ software floating-point support and for
|
||||
his direction as part of @theglibc{} steering committee.
|
||||
|
||||
@item
|
||||
-Simon Josefsson for the @code{libidn} add-on.
|
||||
+Simon Josefsson for the @code{libidn} add-on (which has been removed again).
|
||||
|
||||
@item
|
||||
Geoffrey Keating for the port to Linux on PowerPC
|
||||
diff --git a/nscd/gai.c b/nscd/gai.c
|
||||
index d00a184c46cc0dd7..eb53bd7889ca3fea 100644
|
||||
index 576fd0045b4abf36..24bdfee1db3791e2 100644
|
||||
--- a/nscd/gai.c
|
||||
+++ b/nscd/gai.c
|
||||
@@ -40,6 +40,3 @@
|
||||
@@ -42,9 +42,6 @@
|
||||
/* Support code. */
|
||||
#include <check_pf.c>
|
||||
#include <check_native.c>
|
||||
-#ifdef HAVE_LIBIDN
|
||||
-# include <libidn/idn-stub.c>
|
||||
-#endif
|
||||
|
||||
/* Some variables normally defined in libc. */
|
||||
service_user *__nss_hosts_database attribute_hidden;
|
||||
diff --git a/resolv/Makefile b/resolv/Makefile
|
||||
index 6e70ae9f6b4a29a9..ea395ac3eb4332e1 100644
|
||||
--- a/resolv/Makefile
|
||||
|
@ -19586,10 +19803,10 @@ index 0000000000000000..590696e3fa3e11b6
|
|||
+ tst-resolv-ai_idn-nolibidn2 to disable libidn2. */
|
||||
diff --git a/resolv/tst-resolv-ai_idn-common.c b/resolv/tst-resolv-ai_idn-common.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..c3b85f9c84102929
|
||||
index 0000000000000000..e7c4030e1cb0aca5
|
||||
--- /dev/null
|
||||
+++ b/resolv/tst-resolv-ai_idn-common.c
|
||||
@@ -0,0 +1,440 @@
|
||||
@@ -0,0 +1,569 @@
|
||||
+/* Common code for AI_IDN/NI_IDN tests.
|
||||
+ Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
|
@ -19626,14 +19843,37 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+#if TEST_USE_UTF8
|
||||
+/* UTF-8 encoding of "nämchen" (German for “namelet”). */
|
||||
+# define NAEMCHEN "n\xC3\xA4mchen"
|
||||
+
|
||||
+/* UTF-8 encoding of "שם" (Hebrew for “name”). */
|
||||
+# define SHEM "\xD7\xA9\xD7\x9D"
|
||||
+
|
||||
+/* UTF-8 encoding of "buße" (German for “penance”). This used to be
|
||||
+ encoded as "busse" (“busses”) in IDNA2003. */
|
||||
+# define BUSSE "bu\xC3\x9F""e"
|
||||
+
|
||||
+#else
|
||||
+/* Latin-1 encoding of the same. */
|
||||
+/* Latin-1 encodings, as far as they are available. */
|
||||
+
|
||||
+# define NAEMCHEN "n\xE4mchen"
|
||||
+# define BUSSE "bu\xDF""e"
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+/* IDNA encoding of NAEMCHEN. */
|
||||
+#define NAEMCHEN_IDNA "xn--nmchen-bua"
|
||||
+
|
||||
+/* IDNA encoding of NAEMCHEN "_zwo". */
|
||||
+#define NAEMCHEN_ZWO_IDNA "xn--nmchen_zwo-q5a"
|
||||
+
|
||||
+/* IDNA encoding of SHEM. */
|
||||
+#define SHEM_IDNA "xn--iebx"
|
||||
+
|
||||
+/* IDNA encoding of BUSSE. */
|
||||
+#define BUSSE_IDNA "xn--bue-6ka"
|
||||
+
|
||||
+/* IDNA encoding of "שם1". */
|
||||
+#define SHEM1_IDNA "xn--1-qic9a"
|
||||
+
|
||||
+/* Another IDNA name. */
|
||||
+#define ANDERES_NAEMCHEN "anderes-" NAEMCHEN
|
||||
+#define ANDERES_NAEMCHEN_IDNA "xn--anderes-nmchen-eib"
|
||||
|
@ -19645,6 +19885,8 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ gni_non_idn_cname_to_non_idn_name,
|
||||
+ gni_non_idn_cname_to_idn_name,
|
||||
+ gni_idn_name,
|
||||
+ gni_idn_shem,
|
||||
+ gni_idn_shem1,
|
||||
+ gni_idn_cname_to_non_idn_name,
|
||||
+ gni_idn_cname_to_idn_name,
|
||||
+ gni_invalid_idn_1,
|
||||
|
@ -19694,6 +19936,16 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ resolv_response_add_name (b, "xn--nmchen-bua.example");
|
||||
+ resolv_response_close_record (b);
|
||||
+ return;
|
||||
+ case gni_idn_shem:
|
||||
+ resolv_response_open_record (b, qname, C_IN, T_PTR, 0);
|
||||
+ resolv_response_add_name (b, SHEM_IDNA ".example");
|
||||
+ resolv_response_close_record (b);
|
||||
+ return;
|
||||
+ case gni_idn_shem1:
|
||||
+ resolv_response_open_record (b, qname, C_IN, T_PTR, 0);
|
||||
+ resolv_response_add_name (b, SHEM1_IDNA ".example");
|
||||
+ resolv_response_close_record (b);
|
||||
+ return;
|
||||
+ case gni_idn_cname_to_non_idn_name:
|
||||
+ resolv_response_open_record (b, qname, C_IN, T_CNAME, 0);
|
||||
+ next_name = NAEMCHEN_IDNA ".example";
|
||||
|
@ -19743,7 +19995,7 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ if (!(('0' <= *p && *p <= '9')
|
||||
+ || ('a' <= *p && *p <= 'z')
|
||||
+ || ('A' <= *p && *p <= 'Z')
|
||||
+ || *p == '.' || *p == '-'))
|
||||
+ || *p == '.' || *p == '-' || *p == '_'))
|
||||
+ {
|
||||
+ /* Non-ASCII query. Reply with NXDOMAIN. */
|
||||
+ struct resolv_response_flags flags = { .rcode = 3 };
|
||||
|
@ -19894,6 +20146,65 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ "canonname: " NAEMCHEN ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+
|
||||
+#if TEST_USE_UTF8
|
||||
+ check_ai (SHEM ".example", 0,
|
||||
+ "error: Name or service not known\n");
|
||||
+ check_ai (SHEM ".example", AI_IDN,
|
||||
+ "flags: AI_IDN\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM ".example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " SHEM ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM ".example", AI_IDN | AI_CANONNAME,
|
||||
+ "flags: AI_CANONNAME AI_IDN\n"
|
||||
+ "canonname: " SHEM_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM "1.example", AI_IDN,
|
||||
+ "flags: AI_IDN\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM "1.example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " SHEM "1.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM "1.example", AI_IDN | AI_CANONNAME,
|
||||
+ "flags: AI_CANONNAME AI_IDN\n"
|
||||
+ "canonname: " SHEM1_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+#endif
|
||||
+
|
||||
+ /* Check that non-transitional mode is active. German sharp S
|
||||
+ should not turn into SS. */
|
||||
+ check_ai (BUSSE ".example", 0,
|
||||
+ "error: Name or service not known\n");
|
||||
+ check_ai (BUSSE ".example", AI_IDN,
|
||||
+ "flags: AI_IDN\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (BUSSE ".example", AI_IDN | AI_CANONNAME,
|
||||
+ "flags: AI_CANONNAME AI_IDN\n"
|
||||
+ "canonname: " BUSSE_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (BUSSE ".example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " BUSSE ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+
|
||||
+ /* Check that Unicode TR 46 mode is active. Underscores should be
|
||||
+ permitted in IDNA components. */
|
||||
+ check_ai (NAEMCHEN "_zwo.example", 0,
|
||||
+ "error: Name or service not known\n");
|
||||
+ check_ai (NAEMCHEN "_zwo.example", AI_IDN,
|
||||
+ "flags: AI_IDN\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (NAEMCHEN "_zwo.example", AI_IDN | AI_CANONNAME,
|
||||
+ "flags: AI_CANONNAME AI_IDN\n"
|
||||
+ "canonname: " NAEMCHEN_ZWO_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (NAEMCHEN "_zwo.example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " NAEMCHEN "_zwo.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+
|
||||
+ /* No CNAME, but already IDN-encoded. */
|
||||
+ check_ai (NAEMCHEN_IDNA ".example", 0,
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
|
@ -19908,6 +20219,32 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " NAEMCHEN ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM_IDNA ".example", 0,
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM_IDNA ".example", AI_IDN,
|
||||
+ "flags: AI_IDN\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+ check_ai (SHEM_IDNA ".example", AI_IDN | AI_CANONNAME,
|
||||
+ "flags: AI_CANONNAME AI_IDN\n"
|
||||
+ "canonname: " SHEM_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+#if TEST_USE_UTF8
|
||||
+ check_ai (SHEM_IDNA ".example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " SHEM ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+#else
|
||||
+ check_ai (SHEM_IDNA ".example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " SHEM_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+#endif
|
||||
+
|
||||
+ /* Invalid IDNA canonical name is returned as-is. */
|
||||
+ check_ai ("xn---.example", AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_CANONIDN\n"
|
||||
+ "canonname: xn---.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.120 80\n");
|
||||
+
|
||||
+ /* Non-IDN CNAME. */
|
||||
+ check_ai ("with.cname.example", 0,
|
||||
|
@ -19955,16 +20292,16 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ "error: Name or service not known\n");
|
||||
+ check_ai ("With.idn-cname." NAEMCHEN ".example", AI_IDN,
|
||||
+ "flags: AI_IDN\n"
|
||||
+ "address: STREAM/TCP 192.0.2.87 80\n");
|
||||
+ "address: STREAM/TCP 192.0.2.119 80\n");
|
||||
+ check_ai ("With.idn-cname." NAEMCHEN ".example", AI_IDN | AI_CANONNAME,
|
||||
+ "flags: AI_CANONNAME AI_IDN\n"
|
||||
+ "canonname: " ANDERES_NAEMCHEN_IDNA ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.87 80\n");
|
||||
+ "address: STREAM/TCP 192.0.2.119 80\n");
|
||||
+ check_ai ("With.idn-cname." NAEMCHEN ".example",
|
||||
+ AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "flags: AI_CANONNAME AI_IDN AI_CANONIDN\n"
|
||||
+ "canonname: " ANDERES_NAEMCHEN ".example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.87 80\n");
|
||||
+ "address: STREAM/TCP 192.0.2.119 80\n");
|
||||
+
|
||||
+ /* Non-IDN to IDN CNAME chain. */
|
||||
+ check_ai ("both.cname.idn-cname.example", 0,
|
||||
|
@ -20017,6 +20354,15 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+
|
||||
+ gni_test (gni_idn_name, 0, NAEMCHEN_IDNA ".example");
|
||||
+ gni_test (gni_idn_name, NI_IDN, NAEMCHEN ".example");
|
||||
+ gni_test (gni_idn_shem, 0, SHEM_IDNA ".example");
|
||||
+ gni_test (gni_idn_shem1, 0, SHEM1_IDNA ".example");
|
||||
+#if TEST_USE_UTF8
|
||||
+ gni_test (gni_idn_shem, NI_IDN, SHEM ".example");
|
||||
+ gni_test (gni_idn_shem1, NI_IDN, SHEM "1.example");
|
||||
+#else
|
||||
+ gni_test (gni_idn_shem, NI_IDN, SHEM_IDNA ".example");
|
||||
+ gni_test (gni_idn_shem1, NI_IDN, SHEM1_IDNA ".example");
|
||||
+#endif
|
||||
+
|
||||
+ gni_test (gni_idn_cname_to_non_idn_name, 0, "non-idn-name.example");
|
||||
+ gni_test (gni_idn_cname_to_non_idn_name, NI_IDN, "non-idn-name.example");
|
||||
|
@ -20024,11 +20370,11 @@ index 0000000000000000..c3b85f9c84102929
|
|||
+ gni_test (gni_idn_cname_to_idn_name, 0, ANDERES_NAEMCHEN_IDNA ".example");
|
||||
+ gni_test (gni_idn_cname_to_idn_name, NI_IDN, ANDERES_NAEMCHEN ".example");
|
||||
+
|
||||
+ /* Test encoding errors. */
|
||||
+ /* Test encoding errors. */
|
||||
+ gni_test (gni_invalid_idn_1, 0, "xn---.example");
|
||||
+ gni_test (gni_invalid_idn_1, NI_IDN, NULL);
|
||||
+ gni_test (gni_invalid_idn_1, NI_IDN, "xn---.example");
|
||||
+ gni_test (gni_invalid_idn_2, 0, "xn--x.example");
|
||||
+ gni_test (gni_invalid_idn_2, NI_IDN, NULL);
|
||||
+ gni_test (gni_invalid_idn_2, NI_IDN, "xn--x.example");
|
||||
+}
|
||||
diff --git a/resolv/tst-resolv-ai_idn-latin1.c b/resolv/tst-resolv-ai_idn-latin1.c
|
||||
new file mode 100644
|
||||
|
@ -20088,10 +20434,10 @@ index 0000000000000000..fb60f3261e0ff95e
|
|||
+#include <support/test-driver.c>
|
||||
diff --git a/resolv/tst-resolv-ai_idn-nolibidn2.c b/resolv/tst-resolv-ai_idn-nolibidn2.c
|
||||
new file mode 100644
|
||||
index 0000000000000000..8f30da8741ef0d7d
|
||||
index 0000000000000000..7203c23f3cf00b1b
|
||||
--- /dev/null
|
||||
+++ b/resolv/tst-resolv-ai_idn-nolibidn2.c
|
||||
@@ -0,0 +1,148 @@
|
||||
@@ -0,0 +1,151 @@
|
||||
+/* Test getaddrinfo and getnameinfo without usable libidn2.
|
||||
+ Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+ This file is part of the GNU C Library.
|
||||
|
@ -20131,12 +20477,15 @@ index 0000000000000000..8f30da8741ef0d7d
|
|||
+ "canonname: non-idn.example\n"
|
||||
+ "address: STREAM/TCP 192.0.2.110 80\n");
|
||||
+
|
||||
+ /* This gets passed over the network to the server, so it will
|
||||
+ result in an NXDOMAIN error. */
|
||||
+ check_ai (NAEMCHEN ".example", 0,
|
||||
+ "error: Name or service not known\n");
|
||||
+ /* Due to missing libidn2, this fails inside getaddrinfo. */
|
||||
+ check_ai (NAEMCHEN ".example", AI_IDN,
|
||||
+ "error: Name or service not known\n");
|
||||
+ "error: Parameter string not correctly encoded\n");
|
||||
+ check_ai (NAEMCHEN ".example", AI_IDN | AI_CANONNAME | AI_CANONIDN,
|
||||
+ "error: Name or service not known\n");
|
||||
+ "error: Parameter string not correctly encoded\n");
|
||||
+
|
||||
+ /* Non-IDN CNAME. */
|
||||
+ check_ai ("with.cname.example", 0,
|
||||
|
@ -20205,7 +20554,7 @@ index 0000000000000000..8f30da8741ef0d7d
|
|||
+ gni_test (gni_idn_cname_to_idn_name, flags,
|
||||
+ ANDERES_NAEMCHEN_IDNA ".example");
|
||||
+
|
||||
+ /* Test encoding errors. */
|
||||
+ /* Test encoding errors. */
|
||||
+ gni_test (gni_invalid_idn_1, flags, "xn---.example");
|
||||
+ gni_test (gni_invalid_idn_2, flags, "xn--x.example");
|
||||
+}
|
||||
|
@ -20295,21 +20644,8 @@ index 0000000000000000..df8203b14a156f2e
|
|||
+}
|
||||
+
|
||||
+#include <support/test-driver.c>
|
||||
diff --git a/support/support_format_addrinfo.c b/support/support_format_addrinfo.c
|
||||
index c5e00e516a8279f7..56dc7a9e0cbe92f3 100644
|
||||
--- a/support/support_format_addrinfo.c
|
||||
+++ b/support/support_format_addrinfo.c
|
||||
@@ -67,8 +67,6 @@ format_ai_flags (FILE *out, struct addrinfo *ai)
|
||||
FLAG (AI_ADDRCONFIG);
|
||||
FLAG (AI_IDN);
|
||||
FLAG (AI_CANONIDN);
|
||||
- FLAG (AI_IDN_ALLOW_UNASSIGNED);
|
||||
- FLAG (AI_IDN_USE_STD3_ASCII_RULES);
|
||||
FLAG (AI_NUMERICSERV);
|
||||
#undef FLAG
|
||||
int remaining = ai->ai_flags & ~flags_printed;
|
||||
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
|
||||
index c15f76e547e29533..593a718266557cf5 100644
|
||||
index c15f76e547e29533..e21e0f5f33dd422c 100644
|
||||
--- a/sysdeps/posix/getaddrinfo.c
|
||||
+++ b/sysdeps/posix/getaddrinfo.c
|
||||
@@ -85,9 +85,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
@ -20359,7 +20695,7 @@ index c15f76e547e29533..593a718266557cf5 100644
|
|||
+ char *out;
|
||||
+ result = __idna_to_dns_encoding (name, &out);
|
||||
+ if (result != 0)
|
||||
+ return result;
|
||||
+ return -result;
|
||||
+ name = out;
|
||||
+ malloc_name = true;
|
||||
}
|
||||
|
@ -20367,43 +20703,51 @@ index c15f76e547e29533..593a718266557cf5 100644
|
|||
|
||||
if (__inet_aton (name, (struct in_addr *) at->addr) != 0)
|
||||
{
|
||||
@@ -1028,40 +1008,17 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
@@ -1028,40 +1008,24 @@ gaih_inet (const char *name, const struct gaih_service *service,
|
||||
the passed in string. */
|
||||
canon = orig_name;
|
||||
|
||||
-#ifdef HAVE_LIBIDN
|
||||
if (req->ai_flags & AI_CANONIDN)
|
||||
- if (req->ai_flags & AI_CANONIDN)
|
||||
+ bool do_idn = req->ai_flags & AI_CANONIDN;
|
||||
+ if (do_idn)
|
||||
{
|
||||
- int idn_flags = 0;
|
||||
- if (req->ai_flags & AI_IDN_ALLOW_UNASSIGNED)
|
||||
- idn_flags |= IDNA_ALLOW_UNASSIGNED;
|
||||
- if (req->ai_flags & AI_IDN_USE_STD3_ASCII_RULES)
|
||||
- idn_flags |= IDNA_USE_STD3_ASCII_RULES;
|
||||
|
||||
-
|
||||
char *out;
|
||||
- int rc = __idna_to_unicode_lzlz (canon, &out, idn_flags);
|
||||
- if (rc != IDNA_SUCCESS)
|
||||
- {
|
||||
+ int rc = __idna_from_dns_encoding (canon, &out);
|
||||
+ if (rc == 0)
|
||||
+ canon = out;
|
||||
+ else if (rc == EAI_IDN_ENCODE)
|
||||
+ /* Use the punycode name as a fallback. */
|
||||
+ do_idn = false;
|
||||
+ else
|
||||
{
|
||||
- if (rc == IDNA_MALLOC_ERROR)
|
||||
- result = -EAI_MEMORY;
|
||||
- else if (rc == IDNA_DLOPEN_ERROR)
|
||||
- result = -EAI_SYSTEM;
|
||||
- else
|
||||
- result = -EAI_IDN_ENCODE;
|
||||
- goto free_and_return;
|
||||
- }
|
||||
+ result = -rc;
|
||||
goto free_and_return;
|
||||
}
|
||||
- /* In case the output string is the same as the input
|
||||
- string no new string has been allocated and we
|
||||
- make a copy. */
|
||||
- if (out == canon)
|
||||
- goto make_copy;
|
||||
+ result = __idna_from_dns_encoding (canon, &out);
|
||||
+ if (result != 0)
|
||||
+ goto free_and_return;
|
||||
canon = out;
|
||||
- canon = out;
|
||||
}
|
||||
else
|
||||
- else
|
||||
-#endif
|
||||
+ if (!do_idn)
|
||||
{
|
||||
-#ifdef HAVE_LIBIDN
|
||||
- make_copy:
|
||||
|
@ -20411,7 +20755,7 @@ index c15f76e547e29533..593a718266557cf5 100644
|
|||
if (canonbuf != NULL)
|
||||
/* We already allocated the string using malloc, but
|
||||
the buffer is now owned by canon. */
|
||||
@@ -2222,10 +2179,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
@@ -2222,10 +2186,7 @@ getaddrinfo (const char *name, const char *service,
|
||||
|
||||
if (hints->ai_flags
|
||||
& ~(AI_PASSIVE|AI_CANONNAME|AI_NUMERICHOST|AI_ADDRCONFIG|AI_V4MAPPED
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
commit 14beef7575099f6373f9a45b4656f1e3675f7372
|
||||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Thu Jun 14 22:34:09 2018 +0200
|
||||
|
||||
localedata: Make IBM273 compatible with ISO-8859-1 [BZ #23290]
|
||||
|
||||
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
diff --git a/iconvdata/ibm273.c b/iconvdata/ibm273.c
|
||||
index c303cf306db56d81..132c06f0eb629f6e 100644
|
||||
--- a/iconvdata/ibm273.c
|
||||
+++ b/iconvdata/ibm273.c
|
||||
@@ -23,6 +23,6 @@
|
||||
#define TABLES <ibm273.h>
|
||||
|
||||
#define CHARSET_NAME "IBM273//"
|
||||
-#define HAS_HOLES 1 /* Not all 256 character are defined. */
|
||||
+#define HAS_HOLES 0
|
||||
|
||||
#include <8bit-gap.c>
|
||||
diff --git a/localedata/charmaps/IBM273 b/localedata/charmaps/IBM273
|
||||
index c3f70e2a6f7c4595..4401101b5013c706 100644
|
||||
--- a/localedata/charmaps/IBM273
|
||||
+++ b/localedata/charmaps/IBM273
|
||||
@@ -194,7 +194,7 @@ CHARMAP
|
||||
<U00BE> /xb9 VULGAR FRACTION THREE QUARTERS
|
||||
<U00AC> /xba NOT SIGN
|
||||
<U007C> /xbb VERTICAL LINE
|
||||
-<U203E> /xbc OVERLINE
|
||||
+<U00AF> /xbc MACRON
|
||||
<U00A8> /xbd DIAERESIS
|
||||
<U00B4> /xbe ACUTE ACCENT
|
||||
<U00D7> /xbf MULTIPLICATION SIGN
|
|
@ -0,0 +1,22 @@
|
|||
Please see the following bug for a complete summary:
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1615608
|
||||
|
||||
Index: glibc-2.28/manual/startup.texi
|
||||
===================================================================
|
||||
--- glibc-2.28.orig/manual/startup.texi
|
||||
+++ glibc-2.28/manual/startup.texi
|
||||
@@ -1005,14 +1005,6 @@ This function actually terminates the pr
|
||||
intercept this signal; see @ref{Signal Handling}.
|
||||
@end deftypefun
|
||||
|
||||
-@c Put in by rms. Don't remove.
|
||||
-@cartouche
|
||||
-@strong{Future Change Warning:} Proposed Federal censorship regulations
|
||||
-may prohibit us from giving you information about the possibility of
|
||||
-calling this function. We would be required to say that this is not an
|
||||
-acceptable way of terminating a program.
|
||||
-@end cartouche
|
||||
-
|
||||
@node Termination Internals
|
||||
@subsection Termination Internals
|
||||
|
|
@ -0,0 +1,139 @@
|
|||
Author: Florian Weimer <fweimer@redhat.com>
|
||||
Date: Wed Jul 4 11:34:36 2018 +0200
|
||||
|
||||
Add --with-nonshared-cflags option to configure
|
||||
|
||||
Submitted upstream:
|
||||
|
||||
https://sourceware.org/ml/libc-alpha/2018-07/msg00071.html
|
||||
|
||||
diff --git a/INSTALL b/INSTALL
|
||||
index 0a22aa7d01e6e87b..0f80d9d615db6d42 100644
|
||||
--- a/INSTALL
|
||||
+++ b/INSTALL
|
||||
@@ -90,6 +90,15 @@ if 'CFLAGS' is specified it must enable optimization. For example:
|
||||
library will still be usable, but functionality may be lost--for
|
||||
example, you can't build a shared libc with old binutils.
|
||||
|
||||
+'--with-nonshared-cflags=CFLAGS'
|
||||
+ Use additional compiler flags CFLAGS to build the parts of the
|
||||
+ library which are always statically linked into applications and
|
||||
+ libraries even with shared linking (that is, the object files
|
||||
+ contained in 'lib*_nonshared.a' libraries). The build process will
|
||||
+ automatically use the appropriate flags, but this option can be
|
||||
+ used to set additional flags required for building applications and
|
||||
+ libraries, to match local policy.
|
||||
+
|
||||
'--disable-shared'
|
||||
Don't build shared libraries even if it is possible. Not all
|
||||
systems support shared libraries; you need ELF support and
|
||||
diff --git a/Makeconfig b/Makeconfig
|
||||
index 608ffe648c80c724..b0b27f0113ac18b8 100644
|
||||
--- a/Makeconfig
|
||||
+++ b/Makeconfig
|
||||
@@ -1038,7 +1038,7 @@ object-suffixes-for-libc += .oS
|
||||
# Must build the routines as PIC, though, because they can end up in (users')
|
||||
# shared objects. We don't want to use CFLAGS-os because users may, for
|
||||
# example, make that processor-specific.
|
||||
-CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag)
|
||||
+CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) $(extra-nonshared-cflags)
|
||||
CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1
|
||||
libtype.oS = lib%_nonshared.a
|
||||
endif
|
||||
diff --git a/config.make.in b/config.make.in
|
||||
index d9891b2cd8ec3fbf..a6fe48d31f4d2725 100644
|
||||
--- a/config.make.in
|
||||
+++ b/config.make.in
|
||||
@@ -110,6 +110,7 @@ BUILD_CC = @BUILD_CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPPFLAGS-config = @CPPFLAGS@
|
||||
CPPUNDEFS = @CPPUNDEFS@
|
||||
+extra-nonshared-cflags = @extra_nonshared_cflags@
|
||||
ASFLAGS-config = @ASFLAGS_config@
|
||||
AR = @AR@
|
||||
NM = @NM@
|
||||
diff --git a/configure b/configure
|
||||
index ef1830221522b7a5..fec0efff8216addd 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -684,6 +684,7 @@ force_install
|
||||
bindnow
|
||||
hardcoded_path_in_tests
|
||||
enable_timezone_tools
|
||||
+extra_nonshared_cflags
|
||||
use_default_link
|
||||
sysheaders
|
||||
ac_ct_CXX
|
||||
@@ -762,6 +763,7 @@ with_binutils
|
||||
with_selinux
|
||||
with_headers
|
||||
with_default_link
|
||||
+with_nonshared_cflags
|
||||
enable_sanity_checks
|
||||
enable_shared
|
||||
enable_profile
|
||||
@@ -1479,6 +1481,8 @@ Optional Packages:
|
||||
--with-headers=PATH location of system headers to use (for example
|
||||
/usr/src/linux/include) [default=compiler default]
|
||||
--with-default-link do not use explicit linker scripts
|
||||
+ --with-nonshared-cflags=FLAGS
|
||||
+ build nonshared libraries with additional FLAGS
|
||||
--with-cpu=CPU select code for CPU variant
|
||||
|
||||
Some influential environment variables:
|
||||
@@ -3336,6 +3340,16 @@ else
|
||||
fi
|
||||
|
||||
|
||||
+
|
||||
+# Check whether --with-nonshared-cflags was given.
|
||||
+if test "${with_nonshared_cflags+set}" = set; then :
|
||||
+ withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval
|
||||
+else
|
||||
+ extra_nonshared_cflags=
|
||||
+fi
|
||||
+
|
||||
+
|
||||
+
|
||||
# Check whether --enable-sanity-checks was given.
|
||||
if test "${enable_sanity_checks+set}" = set; then :
|
||||
enableval=$enable_sanity_checks; enable_sanity=$enableval
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index dc517017f588626a..154185d70de38928 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -154,6 +154,14 @@ AC_ARG_WITH([default-link],
|
||||
[use_default_link=$withval],
|
||||
[use_default_link=default])
|
||||
|
||||
+dnl Additional build flags injection.
|
||||
+AC_ARG_WITH([nonshared-cflags],
|
||||
+ AC_HELP_STRING([--with-nonshared-cflags=FLAGS],
|
||||
+ [build nonshared libraries with additional FLAGS]),
|
||||
+ [extra_nonshared_cflags=$withval],
|
||||
+ [extra_nonshared_cflags=])
|
||||
+AC_SUBST(extra_nonshared_cflags)
|
||||
+
|
||||
AC_ARG_ENABLE([sanity-checks],
|
||||
AC_HELP_STRING([--disable-sanity-checks],
|
||||
[really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]),
|
||||
diff --git a/manual/install.texi b/manual/install.texi
|
||||
index 422da1447eb4dc68..eaf0cd09e7501b96 100644
|
||||
--- a/manual/install.texi
|
||||
+++ b/manual/install.texi
|
||||
@@ -117,6 +117,15 @@ problem and suppress these constructs, so that the library will still be
|
||||
usable, but functionality may be lost---for example, you can't build a
|
||||
shared libc with old binutils.
|
||||
|
||||
+@item --with-nonshared-cflags=@var{cflags}
|
||||
+Use additional compiler flags @var{cflags} to build the parts of the
|
||||
+library which are always statically linked into applications and
|
||||
+libraries even with shared linking (that is, the object files contained
|
||||
+in @file{lib*_nonshared.a} libraries). The build process will
|
||||
+automatically use the appropriate flags, but this option can be used to
|
||||
+set additional flags required for building applications and libraries,
|
||||
+to match local policy.
|
||||
+
|
||||
@c disable static doesn't work currently
|
||||
@c @item --disable-static
|
||||
@c Don't build static libraries. Static libraries aren't that useful these
|
361
glibc.spec
361
glibc.spec
|
@ -1,6 +1,6 @@
|
|||
%define glibcsrcdir glibc-2.27-5-g56170e064e
|
||||
%define glibcsrcdir glibc-2.27-78-g2b47bb9cba
|
||||
%define glibcversion 2.27
|
||||
%define glibcrelease 5%{?dist}
|
||||
%define glibcrelease 34%{?dist}
|
||||
# Pre-release tarballs are pulled in from git using a command that is
|
||||
# effectively:
|
||||
#
|
||||
|
@ -95,6 +95,13 @@
|
|||
# Only some architectures have static PIE support.
|
||||
%define pie_arches %{ix86} x86_64
|
||||
|
||||
# Build the POWER9 runtime on POWER, but only for downstream.
|
||||
%ifarch ppc64le
|
||||
%define buildpower9 0%{?rhel} > 0
|
||||
%else
|
||||
%define buildpower9 0
|
||||
%endif
|
||||
|
||||
##############################################################################
|
||||
# Any architecture/kernel combination that supports running 32-bit and 64-bit
|
||||
# code in userspace is considered a biarch arch.
|
||||
|
@ -112,12 +119,32 @@ Summary: The GNU libc libraries
|
|||
Name: glibc
|
||||
Version: %{glibcversion}
|
||||
Release: %{glibcrelease}
|
||||
# GPLv2+ is used in a bunch of programs, LGPLv2+ is used for libraries.
|
||||
# Things that are linked directly into dynamically linked programs
|
||||
# and shared libraries (e.g. crt files, lib*_nonshared.a) have an additional
|
||||
# exception which allows linking it into any kind of programs or shared
|
||||
# libraries without restrictions.
|
||||
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+
|
||||
|
||||
# In general, GPLv2+ is used by programs, LGPLv2+ is used for
|
||||
# libraries.
|
||||
#
|
||||
# LGPLv2+ with exceptions is used for things that are linked directly
|
||||
# into dynamically linked programs and shared libraries (e.g. crt
|
||||
# files, lib*_nonshared.a). Historically, this exception also applies
|
||||
# to parts of libio.
|
||||
#
|
||||
# GPLv2+ with exceptions is used for parts of the Arm unwinder.
|
||||
#
|
||||
# GFDL is used for the documentation.
|
||||
#
|
||||
# Some other licenses are used in various places (BSD, Inner-Net,
|
||||
# ISC, Public Domain).
|
||||
#
|
||||
# HSRL and FSFAP are only used in test cases, which currently do not
|
||||
# ship in binary RPMs, so they are not listed here. MIT is used for
|
||||
# scripts/install-sh, which does not ship, either.
|
||||
#
|
||||
# GPLv3+ is used by manual/texinfo.tex, which we do not use.
|
||||
#
|
||||
# LGPLv2 is used in one place (time/timespec_get.c, by mistake), but
|
||||
# it is not actually compiled, so it does not matter for libraries.
|
||||
License: LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
|
||||
|
||||
URL: http://www.gnu.org/software/glibc/
|
||||
Source0: %{?glibc_release_url}%{glibcsrcdir}.tar.gz
|
||||
Source1: build-locale-archive.c
|
||||
|
@ -187,6 +214,9 @@ Patch0053: glibc-cs-path.patch
|
|||
# Add C.UTF-8 locale into /usr/lib/locale/
|
||||
Patch0059: glibc-c-utf8-locale.patch
|
||||
|
||||
# Bug 1615608 - Remove abort() warning in manual.
|
||||
Patch0060: glibc-rh1615608.patch
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Patches from upstream
|
||||
|
@ -219,7 +249,32 @@ Patch2031: glibc-rh1070416.patch
|
|||
Patch2037: glibc-rh1315108.patch
|
||||
Patch2040: glibc-rh1452750-allocate_once.patch
|
||||
Patch2041: glibc-rh1452750-libidn2.patch
|
||||
Patch2042: glibc-deprecate_libcrypt.patch
|
||||
Patch2100: glibc-disable-crypt-0.patch
|
||||
Patch2101: glibc-disable-crypt-1.patch
|
||||
Patch2102: glibc-disable-crypt-2.patch
|
||||
Patch2103: glibc-disable-crypt-3.patch
|
||||
Patch2104: glibc-disable-crypt-4.patch
|
||||
Patch2043: glibc-collation-cldr-1.patch
|
||||
Patch2044: glibc-collation-cldr-2.patch
|
||||
Patch2045: glibc-collation-cldr-3.patch
|
||||
Patch2046: glibc-collation-cldr-4.patch
|
||||
Patch2047: glibc-collation-cldr-5.patch
|
||||
Patch2048: glibc-collation-cldr-6.patch
|
||||
Patch2049: glibc-collation-cldr-7.patch
|
||||
Patch2050: glibc-collation-cldr-8.patch
|
||||
Patch2051: glibc-collation-cldr-9.patch
|
||||
Patch2052: glibc-collation-cldr-10.patch
|
||||
Patch2053: glibc-collation-cldr-11.patch
|
||||
Patch2054: glibc-collation-cldr-12.patch
|
||||
Patch2055: glibc-collation-cldr-13.patch
|
||||
Patch2056: glibc-collation-cldr-14.patch
|
||||
Patch2057: glibc-collation-cldr-15.patch
|
||||
Patch2058: glibc-python3.patch
|
||||
Patch2059: glibc-rh1592270.patch
|
||||
Patch2060: glibc-with-nonshared-cflags.patch
|
||||
Patch2061: glibc-asflags.patch
|
||||
Patch2062: glibc-extra-stackprot-1.patch
|
||||
Patch2063: glibc-extra-stackprot-2.patch
|
||||
|
||||
##############################################################################
|
||||
# End of glibc patches.
|
||||
|
@ -235,6 +290,9 @@ Provides: ldconfig
|
|||
Provides: rtld(GNU_HASH)
|
||||
Requires: glibc-common = %{version}-%{release}
|
||||
|
||||
# Various components (regex, glob) have been imported from gnulib.
|
||||
Provides: bundled(gnulib)
|
||||
|
||||
Requires(pre): basesystem
|
||||
|
||||
# This is for building auxiliary programs like memusage, nscd
|
||||
|
@ -298,8 +356,13 @@ BuildRequires: make >= 4.0
|
|||
# The intl subsystem generates a parser using bison.
|
||||
BuildRequires: bison >= 2.7
|
||||
|
||||
%if 0%{?rhel} > 0
|
||||
# binutils 2.30-17 is needed for --generate-missing-build-notes.
|
||||
BuildRequires: binutils >= 2.30-17
|
||||
%else
|
||||
# binutils 2.29 is needed for static PIE support in i386/x86_64.
|
||||
BuildRequires: binutils >= 2.29
|
||||
%endif
|
||||
|
||||
# Earlier releases have broken support for IRELATIVE relocations
|
||||
Conflicts: prelink < 0.4.2
|
||||
|
@ -746,7 +809,33 @@ microbenchmark tests on the system.
|
|||
%patch2037 -p1
|
||||
%patch2040 -p1
|
||||
%patch2041 -p1
|
||||
%patch2042 -p1
|
||||
%patch2100 -p1
|
||||
%patch2101 -p1
|
||||
%patch2102 -p1
|
||||
%patch2103 -p1
|
||||
%patch2104 -p1
|
||||
%patch2043 -p1
|
||||
%patch2044 -p1
|
||||
%patch2045 -p1
|
||||
%patch2046 -p1
|
||||
%patch2047 -p1
|
||||
%patch2048 -p1
|
||||
%patch2049 -p1
|
||||
%patch2050 -p1
|
||||
%patch2051 -p1
|
||||
%patch2052 -p1
|
||||
%patch2053 -p1
|
||||
%patch2054 -p1
|
||||
%patch2055 -p1
|
||||
%patch2056 -p1
|
||||
%patch2057 -p1
|
||||
%patch2058 -p1
|
||||
%patch2059 -p1
|
||||
%patch2060 -p1
|
||||
%patch2061 -p1
|
||||
%patch2062 -p1
|
||||
%patch2063 -p1
|
||||
%patch0060 -p1
|
||||
|
||||
##############################################################################
|
||||
# %%prep - Additional prep required...
|
||||
|
@ -791,30 +880,34 @@ df
|
|||
GCC=gcc
|
||||
GXX=g++
|
||||
|
||||
# True if the compiler flag in the first argument is listed in
|
||||
# redhat-rpm-config.
|
||||
rpm_has_compiler_flag ()
|
||||
# Part of rpm_inherit_flags. Is overridden below.
|
||||
rpm_append_flag ()
|
||||
{
|
||||
echo " $RPM_OPT_FLAGS $RPM_LD_FLAGS " | grep -q -F " $1 "
|
||||
BuildFlags="$BuildFlags $*"
|
||||
}
|
||||
|
||||
# Propagates the listed flags to BuildFlags if supplied by redhat-rpm-config.
|
||||
# Propagates the listed flags to rpm_append_flag if supplied by
|
||||
# redhat-rpm-config.
|
||||
BuildFlags="-O2 -g"
|
||||
rpm_inherit_flags ()
|
||||
{
|
||||
local reference=" $* "
|
||||
local flag
|
||||
for flag in "$@" ; do
|
||||
if rpm_has_compiler_flag "$flag" ; then
|
||||
BuildFlags="$BuildFlags $flag"
|
||||
for flag in $RPM_OPT_FLAGS $RPM_LD_FLAGS ; do
|
||||
if echo "$reference" | grep -q -F " $flag " ; then
|
||||
rpm_append_flag "$flag"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Propgate select compiler flags from redhat-rpm-config. These flags
|
||||
# are target-dependent, so we use only those which are specified in
|
||||
# redhat-rpm-config. We do not replicate the -march=/-mtune=
|
||||
# selection here because these match the defaults compiled into GCC.
|
||||
# We keep the -m32/-m32/-m64 flags to support multilib builds.
|
||||
# redhat-rpm-config. We keep the -m32/-m32/-m64 flags to support
|
||||
# multilib builds.
|
||||
#
|
||||
# Note: For building alternative run-times, care is required to avoid
|
||||
# overriding the architecture flags which go into CC/CXX. The flags
|
||||
# below are passed in CFLAGS.
|
||||
|
||||
rpm_inherit_flags \
|
||||
"-fasynchronous-unwind-tables" \
|
||||
|
@ -823,6 +916,38 @@ rpm_inherit_flags \
|
|||
"-m31" \
|
||||
"-m32" \
|
||||
"-m64" \
|
||||
"-mstackrealign" \
|
||||
%if 0%{?rhel} > 0
|
||||
"-Wp,-D_GLIBCXX_ASSERTIONS" \
|
||||
"-fcf-protection" \
|
||||
"-march=i686" \
|
||||
"-march=x86-64" \
|
||||
"-march=z13" \
|
||||
"-march=z14" \
|
||||
"-march=zEC12" \
|
||||
"-mfpmath=sse" \
|
||||
"-msse2" \
|
||||
"-mtune=generic" \
|
||||
"-mtune=z13" \
|
||||
"-mtune=z14" \
|
||||
"-mtune=zEC12" \
|
||||
"-specs=/usr/lib/rpm/redhat/redhat-annobin-cc1" \
|
||||
%endif
|
||||
|
||||
# Propagate additional build flags to BuildFlagsNonshared. This is
|
||||
# very special because some of these files are part of the startup
|
||||
# code. We essentially hope that these flags have little effect
|
||||
# there, and only specify the, for consistency, so that annobin
|
||||
# records the expected compiler flags.
|
||||
BuildFlagsNonshared=
|
||||
rpm_append_flag () {
|
||||
BuildFlagsNonshared="$BuildFlagsNonshared $*"
|
||||
}
|
||||
rpm_inherit_flags \
|
||||
"-Wp,-D_FORTIFY_SOURCE=2" \
|
||||
|
||||
# Special flags which need to be passed to make. Currently none.
|
||||
%define glibc_make_flags %{nil}
|
||||
|
||||
##############################################################################
|
||||
# %%build - Generic options.
|
||||
|
@ -849,6 +974,7 @@ build()
|
|||
../configure CC="$GCC" CXX="$GXX" CFLAGS="$BuildFlags $*" \
|
||||
--prefix=%{_prefix} \
|
||||
--with-headers=%{_prefix}/include $EnableKernel \
|
||||
--with-nonshared-cflags="$BuildFlagsNonshared" \
|
||||
--enable-bind-now \
|
||||
--build=%{target} \
|
||||
--enable-stack-protector=strong \
|
||||
|
@ -868,16 +994,14 @@ build()
|
|||
%if %{with bootstrap}
|
||||
--without-selinux \
|
||||
%endif
|
||||
--disable-nss-crypt ||
|
||||
--disable-crypt ||
|
||||
{ cat config.log; false; }
|
||||
|
||||
make %{?_smp_mflags} -O -r
|
||||
make %{?_smp_mflags} -O -r %{glibc_make_flags}
|
||||
popd
|
||||
}
|
||||
|
||||
##############################################################################
|
||||
# Build glibc for the default set of options.
|
||||
##############################################################################
|
||||
# Default set of options.
|
||||
build
|
||||
|
||||
##############################################################################
|
||||
|
@ -922,6 +1046,15 @@ build
|
|||
)
|
||||
%endif
|
||||
|
||||
%if %{buildpower9}
|
||||
(
|
||||
GCC="$GCC -mcpu=power9 -mtune=power9"
|
||||
GXX="$GXX -mcpu=power9 -mtune=power9"
|
||||
core_with_options="--with-cpu=power9"
|
||||
build power9
|
||||
)
|
||||
%endif
|
||||
|
||||
##############################################################################
|
||||
# Install glibc...
|
||||
##############################################################################
|
||||
|
@ -959,7 +1092,9 @@ make -j1 install_root=$RPM_BUILD_ROOT install -C build-%{target}
|
|||
# locales.
|
||||
%ifnarch %{auxarches}
|
||||
pushd build-%{target}
|
||||
make %{?_smp_mflags} -O install_root=$RPM_BUILD_ROOT \
|
||||
# Do not use a parallel make here because the hardlink optimization in
|
||||
# localedef is not fully reproducible when running concurrently.
|
||||
make install_root=$RPM_BUILD_ROOT \
|
||||
install-locales -C ../localedata objdir=`pwd`
|
||||
popd
|
||||
%endif
|
||||
|
@ -1011,6 +1146,12 @@ install_different()
|
|||
done
|
||||
}
|
||||
|
||||
%if %{buildpower9}
|
||||
pushd build-%{target}-power9
|
||||
install_different "$RPM_BUILD_ROOT/%{_lib}" power9 ..
|
||||
popd
|
||||
%endif
|
||||
|
||||
##############################################################################
|
||||
# Install the power6 build files.
|
||||
##############################################################################
|
||||
|
@ -1691,17 +1832,8 @@ run_tests () {
|
|||
export TIMEOUTFACTOR=16
|
||||
parent=$$
|
||||
echo ====================TESTING=========================
|
||||
##############################################################################
|
||||
# - Test the default runtime.
|
||||
# - Power 620 / 970 ISA for 64-bit POWER BE.
|
||||
# - POWER8 for 64-bit POWER LE.
|
||||
# - ??? for 64-bit x86_64
|
||||
# - ??? for 32-bit x86
|
||||
# - ??? for 64-bit AArch64
|
||||
# - ??? for 32-bit ARM
|
||||
# - zEC12 for 64-bit s390x
|
||||
# - ??? for 32-bit s390
|
||||
##############################################################################
|
||||
|
||||
# Default libraries.
|
||||
pushd build-%{target}
|
||||
run_tests
|
||||
popd
|
||||
|
@ -1739,6 +1871,13 @@ run_tests
|
|||
popd
|
||||
%endif
|
||||
|
||||
%if %{buildpower9}
|
||||
echo ====================TESTING -mcpu=power9=============
|
||||
pushd build-%{target}-power9
|
||||
run_tests
|
||||
popd
|
||||
%endif
|
||||
|
||||
echo ====================TESTING END=====================
|
||||
PLTCMD='/^Relocation section .*\(\.rela\?\.plt\|\.rela\.IA_64\.pltoff\)/,/^$/p'
|
||||
echo ====================PLT RELOCS LD.SO================
|
||||
|
@ -1846,6 +1985,9 @@ fi
|
|||
%if %{buildpower8}
|
||||
%dir /%{_lib}/power8
|
||||
%endif
|
||||
%if %{buildpower9}
|
||||
%dir /%{_lib}/power9
|
||||
%endif
|
||||
%ifarch s390x
|
||||
/lib/ld64.so.1
|
||||
%endif
|
||||
|
@ -1933,8 +2075,149 @@ fi
|
|||
%endif
|
||||
|
||||
%changelog
|
||||
* Mon Nov 26 2018 Florian Weimer <fweimer@redhat.com> - 2.27-34
|
||||
- Do not use parallel make for building locales (#1652228)
|
||||
|
||||
* Thu Aug 30 2018 Florian Weimer <fweimer@redhat.com> - 2.27-33
|
||||
- Revert glibc_make_flags setting which is not needed in Fedora 28 (#1600034)
|
||||
|
||||
* Wed Aug 29 2018 Florian Weimer <fweimer@redhat.com> - 2.27-32
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 2b47bb9cba048e778a7d832f284feccb14a40483:
|
||||
- nptl: Fix waiters-after-spinning case in pthread_cond_broadcast (#1622669)
|
||||
- x86: Correct index_cpu_LZCNT (swbz#23456)
|
||||
- x86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs (swbz#23459)
|
||||
|
||||
* Mon Aug 13 2018 Carlos O'Donell <carlos@redhat.com> - 2.27-31
|
||||
- Remove abort() warning in manual (#1615608)
|
||||
|
||||
* Wed Jul 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-30
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 68c1bf80978594388157c62fd2edd467d4e8dfb2:
|
||||
- regexec: Fix off-by-one bug in weight comparison (#1582229)
|
||||
- es_BO locale: Change LC_PAPER to en_US (swbz#22996)
|
||||
- conform/conformtest.pl: Escape literal braces in regular expressions
|
||||
|
||||
* Wed Jul 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-29
|
||||
- Add POWER9 multilib (downstream only)
|
||||
|
||||
* Wed Jul 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-28
|
||||
- Work around valgrind issue on i686 (#1600034)
|
||||
|
||||
* Fri Jul 6 2018 Florian Weimer <fweimer@redhat.com> - 2.27-27
|
||||
- Build additional files with stack protector
|
||||
|
||||
* Fri Jul 6 2018 Florian Weimer <fweimer@redhat.com> - 2.27-26
|
||||
- Enable build flags inheritance for nonshared flags
|
||||
|
||||
* Fri Jul 6 2018 Florian Weimer <fweimer@redhat.com> - 2.27-25
|
||||
- Inherit further build flags (downstream only)
|
||||
|
||||
* Wed Jul 4 2018 Florian Weimer <fweimer@redhat.com> - 2.27-24
|
||||
- Add annobin annotations to assembler code (downstream only) (#1548438)
|
||||
|
||||
* Wed Jul 4 2018 Florian Weimer <fweimer@redhat.com> - 2.27-23
|
||||
- Enable -D_FORTIFY_SOURCE=2 for nonshared code
|
||||
|
||||
* Wed Jul 04 2018 Florian Weimer <fweimer@redhat.com> - 2.27-22
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 5fab7fe1dc9cab9a46cf5c8840aa9b7ea3a26296:
|
||||
- math: Set 387 and SSE2 rounding mode for tgamma on i386 (swbz#23253)
|
||||
|
||||
* Wed Jul 4 2018 Florian Weimer <fweimer@redhat.com> - 2.27-21
|
||||
- Switch to upstream implementation of --disable-crypt (#1566464)
|
||||
|
||||
* Tue Jul 03 2018 Florian Weimer <fweimer@redhat.com> - 2.27-20
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 7602b9e48c30c146d52df91dd83e518b8d0d343b:
|
||||
- math: Fix parameter type in C++ version of iseqsig (swbz#23171)
|
||||
- Use _STRUCT_TIMESPEC as guard in <bits/types/struct_timespec.h> (swbz#23349)
|
||||
- getifaddrs: Don't return ifa entries with NULL names (swbz#21812)
|
||||
- libio: Disable vtable validation in case of interposition (swbz#23313)
|
||||
- stdio-common/tst-printf.c: Remove part under a non-free license (swbz#23363)
|
||||
|
||||
* Wed Jun 20 2018 Florian Weimer <fweimer@redhat.com> - 2.27-19
|
||||
- Modernise nsswitch.conf defaults (#1581809)
|
||||
|
||||
* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 2.27-18
|
||||
- iconv: Make IBM273 equivalent to ISO-8859-1 (#1592270)
|
||||
|
||||
* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 2.27-17
|
||||
- Align build flags inheritance with master (downstream only)
|
||||
|
||||
* Mon Jun 18 2018 Florian Weimer <fweimer@redhat.com> - 2.27-16
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 80c83e91140d429c73f79092fdb75eed0fb71da0:
|
||||
- libio: Avoid _allocate_buffer, _free_buffer function pointers (swbz#23236)
|
||||
- posix: Fix posix_spawnp to not execute invalid binaries in non compat mode
|
||||
(swbz#23264)
|
||||
- elf: Improve DST handling (swbz#23102, swbz#21942, swbz#18018, swbz#23259)
|
||||
|
||||
* Thu May 24 2018 Florian Weimer <fweimer@redhat.com> - 2.27-15
|
||||
- Rebuild to add back .symtab section in ld.so (#1570246)
|
||||
- Switch to upstream version of libidn2 removal (#1452750)
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 50df56ca86a281c8fd99a8100aac75539813788d:
|
||||
- CVE-2018-11237: Buffer overflow in mempcpy for Xeon Phi (#1581275)
|
||||
|
||||
* Thu May 17 2018 Florian Weimer <fweimer@redhat.com> - 2.27-14
|
||||
- Do not run telinit u on upgrades (#1579225)
|
||||
|
||||
* Tue May 15 2018 Florian Weimer <fweimer@redhat.com> - 2.27-13
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 0cd4a5e87f6885a2f15fe8e7eb7378d010cdb606:
|
||||
- sunrpc: Remove stray exports (#1577210)
|
||||
- gd_GB: Fix typo in abbreviated "May" (swbz#23152)
|
||||
- CVE-2018-11236: realpath: Fix path length overflow (#1581270, swbz#22786)
|
||||
- elf: Fix stack overflow with huge PT_NOTE segment (swbz#20419)
|
||||
- resolv: Fully initialize struct mmsghdr in send_dg (swbz#23037)
|
||||
- manual: Various fixes to the mbstouwcs example, and mbrtowc update
|
||||
- getlogin_r: return early when linux sentinel value is set
|
||||
- resolv: Fix crash in resolver on memory allocation failure (swbz#23005)
|
||||
- Fix signed integer overflow in random_r (swbz#17343)
|
||||
- RISC-V: fix struct kernel_sigaction to match the kernel version (swbz#23069)
|
||||
|
||||
* Fri May 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-12
|
||||
- Unconditionally build downstream with -mstackrealign for now
|
||||
|
||||
* Fri May 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-11
|
||||
- Inherit compiler flags in the original order
|
||||
|
||||
* Fri May 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-10
|
||||
- Inherit the -mstackrealign flag if it is set
|
||||
|
||||
* Fri May 11 2018 Florian Weimer <fweimer@redhat.com> - 2.27-9
|
||||
- Use /usr/bin/python3 for benchmarks scripts (#1577223)
|
||||
|
||||
* Thu Mar 29 2018 Florian Weimer <fweimer@redhat.com> - 2.27-8
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 39071a55392d2d2e0b75fb19f2b48d661c4cc682.
|
||||
|
||||
* Thu Mar 29 2018 Florian Weimer <fweimer@redhat.com> - 2.27-7
|
||||
- Enable annobin on Red Hat Enterprise Linux
|
||||
- Auto-sync with upstream branch release/2.27/master,
|
||||
commit 55ad82e45c313454de657931898e974a7a036cad:
|
||||
- CVE-2017-18269: i386: Fix memmove issue (swbz#22644)
|
||||
- RISC-V: fmax/fmin: Handle signalling NaNs correctly (swbz#22884)
|
||||
- RISC-V: Do not initialize $gp in TLS macros
|
||||
- cs_CZ locale: Add alternative month names (swbz#22963)
|
||||
- Greek (el_CY, el_GR) locales: Introduce ab_alt_mon (swbz#22937)
|
||||
- lt_LT locale: Update abbreviated month names (swbz#22932)
|
||||
- ca_ES locale: Update LC_TIME (swbz#22848)
|
||||
- i386: Fix i386 sigaction sa_restorer initialization (swbz#21269)
|
||||
- Fix multiple definitions of __nss_*_database (swbz#22918)
|
||||
- Fix netgroup cache keys (swbz#22342)
|
||||
- linux/powerpc: sync sys/ptrace.h with Linux 4.15 (swbz#22433, swbz#22807)
|
||||
- powerpc: Undefine Linux ptrace macros that conflict with __ptrace_request
|
||||
- Add missing “reorder-end” in LC_COLLATE of et_EE (swbz#22517)
|
||||
- linux/aarch64: sync sys/ptrace.h with Linux 4.15 (swbz#22433)
|
||||
- [RISC-V] Fix parsing flags in ELF64 files (swbz#22827)
|
||||
|
||||
* Fri Mar 2 2018 Florian Weimer <fweimer@redhat.com> - 2.27-6
|
||||
- Collation update and sync with CLDR (#1551009)
|
||||
|
||||
* Wed Feb 28 2018 Florian Weimer <fweimer@redhat.com> - 2.27-5
|
||||
- Inherit as many flags as possible from redhat-rpm-config
|
||||
- Inherit as many flags as possible from redhat-rpm-config (#1550914)
|
||||
|
||||
* Mon Feb 19 2018 Richard W.M. Jones <rjones@redhat.com> - 2.27-4
|
||||
- riscv64: Add symlink from /usr/lib64/lp64d -> /usr/lib64 for ABI compat.
|
||||
|
|
|
@ -136,43 +136,6 @@ main (void)
|
|||
"--nostdlib", iconv_dir);
|
||||
}
|
||||
|
||||
/* Check if telinit is available and either SysVInit fifo,
|
||||
or upstart telinit. */
|
||||
if (access ("/sbin/telinit", X_OK)
|
||||
|| ((!!access ("/dev/initctl", F_OK))
|
||||
^ !access ("/sbin/initctl", X_OK)))
|
||||
_exit (0);
|
||||
|
||||
/* Check if we are not inside of some chroot, because we'd just
|
||||
timeout and leave /etc/initrunlvl.
|
||||
|
||||
On more modern systems this test is not sufficient to detect
|
||||
if we're in a chroot. */
|
||||
if (readlink ("/proc/1/exe", initpath, 256) <= 0 ||
|
||||
readlink ("/proc/1/root", initpath, 256) <= 0)
|
||||
_exit (0);
|
||||
|
||||
/* Here's another well known way to detect chroot, at least on an
|
||||
ext and xfs filesystems and assuming nothing mounted on the chroot's
|
||||
root. */
|
||||
if (stat ("/", &statbuf) != 0
|
||||
|| (statbuf.st_ino != 2
|
||||
&& statbuf.st_ino != 128))
|
||||
_exit (0);
|
||||
|
||||
if (check_elf ("/proc/1/exe"))
|
||||
verbose_exec (116, "/sbin/telinit", "/sbin/telinit", "u");
|
||||
|
||||
/* Check if we can safely condrestart sshd. */
|
||||
if (access ("/sbin/service", X_OK) == 0
|
||||
&& access ("/usr/sbin/sshd", X_OK) == 0
|
||||
&& access ("/etc/rc.d/init.d/sshd", X_OK) == 0
|
||||
&& access ("/bin/bash", X_OK) == 0)
|
||||
{
|
||||
if (check_elf ("/usr/sbin/sshd"))
|
||||
verbose_exec (-121, "/sbin/service", "/sbin/service", "sshd", "condrestart");
|
||||
}
|
||||
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -15,37 +15,31 @@
|
|||
# nisplus Use NIS+ (NIS version 3)
|
||||
# nis Use NIS (NIS version 2), also called YP
|
||||
# dns Use DNS (Domain Name Service)
|
||||
# files Use the local files
|
||||
# db Use the local database (.db) files
|
||||
# compat Use NIS on compat mode
|
||||
# hesiod Use Hesiod for user lookups
|
||||
# files Use the local files in /etc
|
||||
# db Use the pre-processed /var/db files
|
||||
# compat Use /etc files plus *_compat pseudo-databases
|
||||
# hesiod Use Hesiod (DNS) for user lookups
|
||||
# sss Use sssd (System Security Services Daemon)
|
||||
# [NOTFOUND=return] Stop searching if not found so far
|
||||
#
|
||||
# 'sssd' performs its own 'files'-based caching, so it should
|
||||
# generally come before 'files'.
|
||||
|
||||
# To use db, put the "db" in front of "files" for entries you want to be
|
||||
# looked up first in the databases
|
||||
# To use 'db', install the nss_db package, and put the 'db' in front
|
||||
# of 'files' for entries you want to be looked up first in the
|
||||
# databases, like this:
|
||||
#
|
||||
# Example:
|
||||
#passwd: db files nisplus nis
|
||||
#shadow: db files nisplus nis
|
||||
#group: db files nisplus nis
|
||||
# passwd: db files
|
||||
# shadow: db files
|
||||
# group: db files
|
||||
|
||||
passwd: sss files
|
||||
shadow: files sss
|
||||
group: sss files
|
||||
|
||||
#hosts: db files nisplus nis dns
|
||||
hosts: files dns
|
||||
hosts: files dns myhostname
|
||||
|
||||
# Example - obey only what nisplus tells us...
|
||||
#services: nisplus [NOTFOUND=return] files
|
||||
#networks: nisplus [NOTFOUND=return] files
|
||||
#protocols: nisplus [NOTFOUND=return] files
|
||||
#rpc: nisplus [NOTFOUND=return] files
|
||||
#ethers: nisplus [NOTFOUND=return] files
|
||||
#netmasks: nisplus [NOTFOUND=return] files
|
||||
|
||||
bootparams: nisplus [NOTFOUND=return] files
|
||||
bootparams: files
|
||||
|
||||
ethers: files
|
||||
netmasks: files
|
||||
|
@ -54,9 +48,9 @@ protocols: files
|
|||
rpc: files
|
||||
services: files sss
|
||||
|
||||
netgroup: nisplus sss
|
||||
netgroup: sss
|
||||
|
||||
publickey: nisplus
|
||||
publickey: files
|
||||
|
||||
automount: files nisplus
|
||||
aliases: files nisplus
|
||||
automount: files sss
|
||||
aliases: files
|
||||
|
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
SHA512 (glibc-2.27-5-g56170e064e.tar.gz) = de3d8d1c847a7042e813dd56d4b2aa3950fc391579fc40ab4e9a7ebea279593e01326752c11484a78edb4734ea6408872580fa2147bb4ea8abc0bf1c9f08c7df
|
||||
SHA512 (glibc-2.27-78-g2b47bb9cba.tar.gz) = c467caf370d44db67a35f4ce053754ec02905b29aa998b3a699482a83246dc3daf52822d88af459131a94a55793686af9c69865e34490e8adc9491d156cda0f5
|
||||
|
|
Loading…
Reference in New Issue