From: "P. J. McDermott" Description: Replace locale/gen-translit.pl with a shell script If a Perl interpreter isn't found, run the shell script instead. diff -Naur src.orig/libc/locale/gen-translit.sh src/libc/locale/gen-translit.sh --- src.orig/libc/locale/gen-translit.sh 1969-12-31 19:00:00.000000000 -0500 +++ src/libc/locale/gen-translit.sh 2013-06-21 18:04:13.414351956 -0400 @@ -0,0 +1,195 @@ +#!/bin/sh +# A POSIX.1 shell command language translation of gen-translit.pl. + +set -e + +LF=' +' + +die() { + printf '%s\n' "${*}" + exit 1 +} + +substr() { + str="${1}" + off=${2} + len=${3} + + while [ ${off} -gt 0 ]; do + str="${str#?}" + off=$(($off - 1)) + done + while [ ${#str} -gt ${len} ]; do + str="${str%?}" + done + + printf '%s\n' "${str}" +} + +cstrlen() { + str="${*}" + len=${#str} + cnt=0 + res=0 + + while [ ${cnt} -lt $len ]; do + if [ "x$(substr "${str}" ${cnt} 1)" = 'x\' ]; then + # Recognize the escape sequence. + if [ "x$(substr "${str}" $(($cnt + 1)) 1)" = 'xx' ]; then + inner=$(($cnt + 2)) + while [ ${inner} -lt ${len} \ + -a ${inner} -lt $(($cnt + 10)) ]; do + ch="$(substr "${str}" ${inner} 1)" + if [ "x${ch}" != "x${ch#[0-9a-fA-F]}" ]; then + inner=$(($inner + 1)) + continue + fi + break + inner=$(($inner + 1)) + done + cnt=${inner} + res=$(($res + 1)) + else + if [ $(($cnt + 1)) -ge ${len} ]; then + die 'Invalid input' + fi + res=$(($res + 1)) + cnt=$(($cnt + 1)) + fi + else + res=$(($res + 1)) + fi + cnt=$(($cnt + 1)) + done + + printf '%d\n' ${res} +} + +ntranslit=0 +while read -r line; do + [ "x${line}" != "x${line#\#}" ] && continue + [ -z "${line}" ] && continue + + line="${line#\"}" + line="${line%\"}" + from="${line%%\"[ ]*}" + to="${line##*[ ]\"}" + fromlen="$(cstrlen "${from}")" + tolen="$(cstrlen "${to}")" + + froms="${froms}${from}${LF}" + fromlens="${fromlens}${fromlen}${LF}" + tos="${tos}${to}${LF}" + tolens="${tolens}${tolen}${LF}" + + ntranslit=$(($ntranslit + 1)) +done < $@.tmp +else + /bin/sh gen-translit.sh < $< > $@.tmp +endif mv -f $@.tmp $@ localepath = "$(localedir):$(i18ndir)"