commit:     89b97dce78f2fb9a4ed646c7110f06f36cb0346a
Author:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 12 21:31:04 2018 +0000
Commit:     Ulrich Müller <ulm <AT> gentoo <DOT> org>
CommitDate: Fri Jan 19 09:15:30 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=89b97dce

l10n.eclass: Disabled locales are the complement of enabled ones.

Disabled locales returned by l10n_get_locales() should be the
complement of enabled locales: disabled = PLOCALES \ enabled.

So far, in the case of the enabled set falling back to PLOCALE_BACKUP,
the backup locale would end up being both enabled and disabled.

Closes: https://bugs.gentoo.org/547790

 eclass/l10n.eclass | 26 +++++++++++---------------
 1 file changed, 11 insertions(+), 15 deletions(-)

diff --git a/eclass/l10n.eclass b/eclass/l10n.eclass
index 4b0111934d7..82f4ab113f5 100644
--- a/eclass/l10n.eclass
+++ b/eclass/l10n.eclass
@@ -1,4 +1,4 @@
-# Copyright 1999-2017 Gentoo Foundation
+# Copyright 1999-2018 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: l10n.eclass
@@ -102,26 +102,22 @@ l10n_find_plocales_changes() {
 # are selected, fall back on PLOCALE_BACKUP.  When the disabled argument
 # is given, return the disabled locales instead of the enabled ones.
 l10n_get_locales() {
-       local disabled_locales enabled_locales loc locs
+       local loc locs
        if [[ -z ${LINGUAS+set} ]]; then
                # enable all if unset
-               enabled_locales=${PLOCALES}
-       elif [[ -z ${LINGUAS} ]]; then
-               # disable all if empty
-               disabled_locales=${PLOCALES}
+               locs=${PLOCALES}
        else
-               for loc in ${PLOCALES}; do
-                       if has ${loc} ${LINGUAS}; then
-                               enabled_locales+="${loc} "
-                       else
-                               disabled_locales+="${loc} "
-                       fi
+               for loc in ${LINGUAS}; do
+                       has ${loc} ${PLOCALES} && locs+="${loc} "
                done
        fi
+       [[ -z ${locs} ]] && locs=${PLOCALE_BACKUP}
        if [[ ${1} == disabled ]]; then
-               locs=${disabled_locales}
-       else
-               locs=${enabled_locales:-${PLOCALE_BACKUP}}
+               local disabled_locs
+               for loc in ${PLOCALES}; do
+                       has ${loc} ${locs} || disabled_locs+="${loc} "
+               done
+               locs=${disabled_locs}
        fi
        printf "%s" "${locs}"
 }

Reply via email to