]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
10i18n: Load all keymaps for a given locale 300/head
authorDaniel Molkentin <dmolkentin@suse.com>
Thu, 26 Oct 2017 12:59:34 +0000 (14:59 +0200)
committerDaniel Molkentin <dmolkentin@suse.com>
Wed, 1 Nov 2017 10:33:24 +0000 (11:33 +0100)
Previously, dracut would only copy the first one found. However,
with legacy maps for some locales around, there is a chance we
pick the wrong one. Pick all matching keymaps instead

Reference: boo#1065058

modules.d/10i18n/module-setup.sh

index 62babb2bb39ba9d6564b7eca56898029e289e06e..7723f6facf7d560b5eba2b797fc7b99386a607d7 100755 (executable)
@@ -29,21 +29,24 @@ install() {
 
     # This is from 10redhat-i18n.
     findkeymap () {
-        local MAP=$1
+        local MAPS=$1
         local MAPNAME=${1%.map*}
-        [[ ! -f $MAP ]] && \
-            MAP=$(find ${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\* | head -n1)
-        [[ " $KEYMAPS " = *" $MAP "* ]] && return
-        KEYMAPS="$KEYMAPS $MAP"
-        case $MAP in
-            *.gz) cmd=zgrep;;
-            *.bz2) cmd=bzgrep;;
-            *) cmd=grep ;;
-        esac
-
-        for INCL in $($cmd "^include " $MAP | while read a a b || [ -n "$a" ]; do echo ${a//\"/}; done); do
-            for FN in $(find ${kbddir}/keymaps -type f -name $INCL\*); do
-                findkeymap $FN
+        local map
+        [[ ! -f $MAPS ]] && \
+            MAPS=$(find ${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\*)
+
+        for map in $MAPS; do
+            KEYMAPS="$KEYMAPS $map"
+            case $map in
+                *.gz) cmd=zgrep;;
+                *.bz2) cmd=bzgrep;;
+                *) cmd=grep ;;
+            esac
+
+            for INCL in $($cmd "^include " $map | while read a a b || [ -n "$a" ]; do echo ${a//\"/}; done); do
+                for FN in $(find ${kbddir}/keymaps -type f -name $INCL\*); do
+                    findkeymap $FN
+                done
             done
         done
     }
@@ -191,7 +194,9 @@ install() {
             findkeymap ${map}
         done
 
-        inst_opt_decompress ${KEYMAPS}
+        for keymap in ${KEYMAPS}; do
+            inst_opt_decompress ${keymap}
+        done
 
         inst_opt_decompress ${kbddir}/consolefonts/${DEFAULT_FONT}.*