From ecfefc6000d2bec29bb3f61f2963b6d186c06aba Mon Sep 17 00:00:00 2001
From: Alexandre Oliva <aoliva@redhat.com>
Date: Tue, 28 Nov 2017 16:23:02 +0100
Subject: [PATCH] Collation fix: make forward accent sorting the default [BZ
 #17750]
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

	[BZ #17750]
	* Makefile: add fr_CA.UTF-8 to test-input and LOCALES.
	* localedata/fr_CA.UTF-8.in: New file with test data for backward
	accents sorting.
	* localedata/fr_FR.UTF-8.in: Fix test data for forward accents
	sorting.
	* localedata/locales/cs_CZ (LC_COLLATE): Remove â€œdefine DIACRIT_FORWARDâ€
	* localedata/locales/de_DE (LC_COLLATE): Likewise.
	* localedata/locales/hu_HU (LC_COLLATE): Likewise.
	* localedata/locales/lb_LU (LC_COLLATE): Likewise.
	* localedata/locales/yuw_PG (LC_COLLATE): Likewise.
	* localedata/locales/fr_CA (LC_COLLATE): Add â€œdefine DIACRIT_BACKWARDâ€
	* localedata/locales/iso14651_t1_common: Use â€œifdef DIACRIT_FORWARDâ€
	instead of â€œifdef DIACRIT_BACKWARDâ€.

The only locale which currently needs backward accents sorting is fr_CA.
Therefore, forward accents sorting should be the default.

Before this patch, backwards accent sorting was the default and all
locales except fr_CA had to use

    define DIACRIT_FORWARD

before

    copy "iso14651_t1"

Most locales didnâ€™t do that and thus got the inappropriate backwards accents sorting
by accident. Now only the fr_CA locale needs to use

    define DIACRIT_BACKWARD

before

    copy "iso14651_t1"

Reviewed-by: Mike FABIAN <mfabian@redhat.com>
---
 ChangeLog                             | 17 +++++++
 localedata/Makefile                   |  4 +-
 localedata/fr_CA.UTF-8.in             | 96 +++++++++++++++++++++++++++++++++++
 localedata/fr_FR.UTF-8.in             | 22 ++++----
 localedata/locales/cs_CZ              |  2 -
 localedata/locales/de_DE              |  2 -
 localedata/locales/fr_CA              |  2 +
 localedata/locales/hu_HU              |  1 -
 localedata/locales/iso14651_t1_common |  6 +--
 localedata/locales/lb_LU              |  2 -
 localedata/locales/yuw_PG             |  1 -
 11 files changed, 131 insertions(+), 24 deletions(-)
 create mode 100644 localedata/fr_CA.UTF-8.in

diff --git a/ChangeLog b/ChangeLog
index 9307f40fae..87d7874013 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2017-11-28  Alexandre Oliva <aoliva@redhat.com>
+
+	[BZ #17750]
+	* Makefile: add fr_CA.UTF-8 to test-input and LOCALES.
+	* localedata/fr_CA.UTF-8.in: New file with test data for backward
+	accents sorting.
+	* localedata/fr_FR.UTF-8.in: Fix test data for forward accents
+	sorting.
+	* localedata/locales/cs_CZ (LC_COLLATE): Remove â€œdefine DIACRIT_FORWARDâ€
+	* localedata/locales/de_DE (LC_COLLATE): Likewise.
+	* localedata/locales/hu_HU (LC_COLLATE): Likewise.
+	* localedata/locales/lb_LU (LC_COLLATE): Likewise.
+	* localedata/locales/yuw_PG (LC_COLLATE): Likewise.
+	* localedata/locales/fr_CA (LC_COLLATE): Add â€œdefine DIACRIT_BACKWARDâ€
+	* localedata/locales/iso14651_t1_common: Use â€œifdef DIACRIT_FORWARDâ€
+	instead of â€œifdef DIACRIT_BACKWARDâ€.
+
 2017-11-28  Mike FABIAN  <mfabian@redhat.com>
 
 	[BZ #22336]
diff --git a/localedata/Makefile b/localedata/Makefile
index b9f77d6c29..f8ca4041be 100644
--- a/localedata/Makefile
+++ b/localedata/Makefile
@@ -38,7 +38,7 @@ test-srcs := collate-test xfrm-test tst-fmon tst-rpmatch tst-trans \
 test-input := de_DE.ISO-8859-1 en_US.ISO-8859-1 da_DK.ISO-8859-1 \
 	      hr_HR.ISO-8859-2 sv_SE.ISO-8859-1 tr_TR.UTF-8 fr_FR.UTF-8 \
 	      si_LK.UTF-8 uk_UA.UTF-8 hu_HU.UTF-8 lv_LV.UTF-8 \
-	      pl_PL.UTF-8 cs_CZ.UTF-8
+	      pl_PL.UTF-8 cs_CZ.UTF-8 fr_CA.UTF-8
 test-input-data = $(addsuffix .in, $(test-input))
 test-output := $(foreach s, .out .xout, \
 			 $(addsuffix $s, $(basename $(test-input))))
@@ -108,7 +108,7 @@ LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 \
 	   nb_NO.ISO-8859-1 nn_NO.ISO-8859-1 tr_TR.UTF-8 cs_CZ.UTF-8 \
 	   zh_TW.EUC-TW fa_IR.UTF-8 fr_FR.UTF-8 ja_JP.UTF-8 si_LK.UTF-8 \
 	   tr_TR.ISO-8859-9 en_GB.UTF-8 uk_UA.UTF-8 hu_HU.UTF-8 lv_LV.UTF-8 \
-	   pl_PL.UTF-8
+	   pl_PL.UTF-8 fr_CA.UTF-8
 include ../gen-locales.mk
 endif
 
diff --git a/localedata/fr_CA.UTF-8.in b/localedata/fr_CA.UTF-8.in
new file mode 100644
index 0000000000..1c05d69f5a
--- /dev/null
+++ b/localedata/fr_CA.UTF-8.in
@@ -0,0 +1,96 @@
+@@@@@
+0000
+9999
+Aalborg
+aide
+aÃ¯eul
+air
+@@@air
+air@@@
+Ã…lborg
+aoÃ»t
+bohÃ¨me
+BohÃªme
+BohÃ©mien
+caennais
+cÃ¦sium
+Ã§Ã  et lÃ 
+C.A.F.
+Canon
+caÃ±on
+casanier
+cÃ¸libat
+colon
+cÃ´lon
+COOP
+CO-OP
+coop
+co-op
+Copenhagen
+COTE
+cote
+CÃ”TE
+cÃ´te
+COTÃ‰
+cotÃ©
+CÃ”TÃ‰
+cÃ´tÃ©
+du
+dÃ»
+Ã©lÃ¨ve
+Ã©levÃ©
+gÃ¨ne
+gÃªne
+gÃªnÃ©
+GrÃ¶ÃŸe
+Grossist
+haie
+haÃ¯e
+Ã®le
+ÃŽle d'OrlÃ©ans
+lame
+l'Ã¢me
+lamÃ©
+les
+LÃˆS
+lÃ¨se
+lÃ©sÃ©
+L'HaÃ¿-les-Roses
+MÃ‚CON
+maÃ§on
+McArthur
+Mc Arthur
+Mc Mahon
+MODÃˆLE
+modelÃ©
+NOÃ‹L
+NoÃ«l
+notre
+nÃ´tre
+ode
+Å“il
+ou
+OÃ™
+ovoÃ¯de
+pÃ¨che
+pÃªche
+PÃ‰CHÃ‰
+pÃ©chÃ©
+pÃªchÃ©
+pÃ©cher
+pÃªcher
+pechÃ¨re
+pÃ©chÃ¨re
+relÃ¨ve
+relevÃ©
+resume
+resumÃ©
+rÃ©sumÃ©
+rÃ©vÃ¨le
+rÃ©vÃ©lÃ©
+vice-president
+vice-prÃ©sident
+vice-president's offices
+vice-presidents' offices
+VICE-VERSA
+vice versa
diff --git a/localedata/fr_FR.UTF-8.in b/localedata/fr_FR.UTF-8.in
index dd5c5330d5..070eb4dc0d 100644
--- a/localedata/fr_FR.UTF-8.in
+++ b/localedata/fr_FR.UTF-8.in
@@ -29,16 +29,16 @@ CO-OP
 Copenhagen
 cote
 COTE
-cÃ´te
-CÃ”TE
 cotÃ©
 COTÃ‰
+cÃ´te
+CÃ”TE
 cÃ´tÃ©
 CÃ”TÃ‰
 du
 dÃ»
-Ã©lÃ¨ve
 Ã©levÃ©
+Ã©lÃ¨ve
 gÃ¨ne
 gÃªne
 gÃªnÃ©
@@ -49,20 +49,20 @@ haÃ¯e
 Ã®le
 ÃŽle d'OrlÃ©ans
 lame
-l'Ã¢me
 lamÃ©
+l'Ã¢me
 les
 LÃˆS
-lÃ¨se
 lÃ©sÃ©
+lÃ¨se
 L'HaÃ¿-les-Roses
-MÃ‚CON
 maÃ§on
+MÃ‚CON
 McArthur
 Mc Arthur
 Mc Mahon
-MODÃˆLE
 modelÃ©
+MODÃˆLE
 NoÃ«l
 NOÃ‹L
 notre
@@ -72,22 +72,22 @@ ode
 ou
 OÃ™
 ovoÃ¯de
-pÃ¨che
-pÃªche
 pÃ©chÃ©
 PÃ‰CHÃ‰
+pÃ¨che
+pÃªche
 pÃªchÃ©
 pÃ©cher
 pÃªcher
 pechÃ¨re
 pÃ©chÃ¨re
-relÃ¨ve
 relevÃ©
+relÃ¨ve
 resume
 resumÃ©
 rÃ©sumÃ©
-rÃ©vÃ¨le
 rÃ©vÃ©lÃ©
+rÃ©vÃ¨le
 vice-president
 vice-prÃ©sident
 vice-president's offices
diff --git a/localedata/locales/cs_CZ b/localedata/locales/cs_CZ
index 163a40daec..f80d3e1b37 100644
--- a/localedata/locales/cs_CZ
+++ b/localedata/locales/cs_CZ
@@ -140,8 +140,6 @@ END LC_IDENTIFICATION
 
 LC_COLLATE
 
-define DIACRIT_FORWARD
-
 copy "iso14651_t1"
 
 collating-symbol <c-caron>
diff --git a/localedata/locales/de_DE b/localedata/locales/de_DE
index dd1c1cfa48..eaa9f7ff8e 100644
--- a/localedata/locales/de_DE
+++ b/localedata/locales/de_DE
@@ -84,8 +84,6 @@ END LC_CTYPE
 
 LC_COLLATE
 
-define DIACRIT_FORWARD
-
 % Copy the template from ISO/IEC 14651
 copy "iso14651_t1"
 
diff --git a/localedata/locales/fr_CA b/localedata/locales/fr_CA
index 15401de337..e37d04226c 100644
--- a/localedata/locales/fr_CA
+++ b/localedata/locales/fr_CA
@@ -54,6 +54,8 @@ copy "fr_FR"
 END LC_CTYPE
 
 LC_COLLATE
+define DIACRIT_BACKWARD
+
 copy "en_CA"
 END LC_COLLATE
 
diff --git a/localedata/locales/hu_HU b/localedata/locales/hu_HU
index b860672748..01e45b958e 100644
--- a/localedata/locales/hu_HU
+++ b/localedata/locales/hu_HU
@@ -63,7 +63,6 @@ category "i18n:2012";LC_MEASUREMENT
 END LC_IDENTIFICATION
 
 LC_COLLATE
-define DIACRIT_FORWARD
 copy "iso14651_t1"
 
 %% a b c cs d dz dzs e f g gy h i j k l ly m n ny o o: p q
diff --git a/localedata/locales/iso14651_t1_common b/localedata/locales/iso14651_t1_common
index 0e64f26a12..eb0fe9ec9d 100644
--- a/localedata/locales/iso14651_t1_common
+++ b/localedata/locales/iso14651_t1_common
@@ -5079,10 +5079,10 @@ order_start <SPECIAL>;forward;backward;forward;forward,position
 <U009E> IGNORE;IGNORE;IGNORE;<U009E>
 <U009F> IGNORE;IGNORE;IGNORE;<U009F>
 
-ifdef DIACRIT_FORWARD
-order_start <LATIN>;forward;forward;forward;forward,position
-else
+ifdef DIACRIT_BACKWARD
 order_start <LATIN>;forward;backward;forward;forward,position
+else
+order_start <LATIN>;forward;forward;forward;forward,position
 endif
 #
 <U00A0> <U0020>;<BAS>;<MIN>;IGNORE # 170<NBSP>
diff --git a/localedata/locales/lb_LU b/localedata/locales/lb_LU
index f8da9447ea..92f1e22e1a 100644
--- a/localedata/locales/lb_LU
+++ b/localedata/locales/lb_LU
@@ -83,8 +83,6 @@ END LC_CTYPE
 
 LC_COLLATE
 
-define DIACRIT_FORWARD
-
 % Copy the template from ISO/IEC 14651
 copy "iso14651_t1"
 
diff --git a/localedata/locales/yuw_PG b/localedata/locales/yuw_PG
index f9341facdc..0cb3cadf4a 100644
--- a/localedata/locales/yuw_PG
+++ b/localedata/locales/yuw_PG
@@ -45,7 +45,6 @@ translit_end
 END LC_CTYPE
 
 LC_COLLATE
-define DIACRIT_FORWARD
 copy "iso14651_t1"
 END LC_COLLATE
 
-- 
2.14.3

