diff --git a/xorg/xkeyboard-config/files/xml2lst b/xorg/xkeyboard-config/files/xml2lst index 9c734383..0d2e40ea 100755 --- a/xorg/xkeyboard-config/files/xml2lst +++ b/xorg/xkeyboard-config/files/xml2lst @@ -1,109 +1,47 @@ #!/bin/sh - # converts the .xml file to the old format .lst file -# -# Usage: -# -# sh xml2lst.sh < filename.xml > filename.lst -# -# author Ivan Pascal +# Usage: xml2lst < filename.xml > filename.lst -configitem=0 -modellist=0 -layout=0 -configitem=0 -variant=0 -comment=0 +var=0 com=0 nam='' printf '! model\n' - -while read -r line || [ "$line" ]; do - case $line in - *''*) configitem=1 ;; - *''*) configitem=0 ;; - *''*) modellist=1 ;; - *''*) break ;; - - *''*) - name=${line##*} - name=${name%%*} - ;; - - *''*) - desc=${line##*} - desc=${desc%%*} - - [ "$configitem" -eq 0 ] || [ "$modellist" -eq 0 ] || - printf ' %-15s %s\n' "$name" "$desc" - ;; - esac -done +while read -r l || [ "$l" ]; do case $l in + *''*) n=${l#*>} n=${n%<*};; + *''*) l=${l#*>}; printf ' %-15s %s\n' "$n" "${l%<*}" ;; + *''*) break +esac; done printf '\n! layout\n' +while read -r l || [ "$l" ]; do case $l in + *''*) var=1;; + *''*) var=0;; + *''*) break;; -while read -r line || [ "$line" ]; do - case $line in - *''*|*''*) layout=1 ;; - *''*) layout=0 ;; - *''*) configitem=1 ;; - *''*) configitem=0 ;; - *''*|*''*) variant=1 ;; - *''*|*''*) variant=0 ;; - *''*) break ;; - esac + *''*) + l="${l#*>}" + [ "$var" -eq 0 ] && ln=${l%<*} || n=${l%<*} + ;; - if [ "$layout" -ne 0 ]; then - if [ "${variant}" -ne 0 ]; then - case $line in - *''*) - name=${line##*} - name=${name%%*} - ;; + *''*) + l=${l#*>} - *''*) - line="$lname: ${line##*}" - line=${line%%*} - names="$names $(printf '%-15s %s' "$name" "$line") -" - ;; - esac + case $var in + 0) printf ' %-15s %s\n' "${ln}" "${l%<*}" ;; + *) nam="${nam%x} $(printf '%-15s %s: %s\nx' "$n" "$ln" "${l%<*}")" + esac + ;; +esac; done - elif [ "$configitem" -ne 0 ]; then - case $line in - *''*) - lname=${line##*} - lname=${lname%%*} - ;; +printf '\n! variant\n%s\n! option\n' "${nam%x}" +while read -r l || [ "$l" ]; do case $l in + *'-->'*) com=0;; + *''*) comment=0;; - *'