core/glibc/lo.patch
2013-09-25 11:52:10 +00:00

75 lines
1.8 KiB
Diff

Index: locale-gen
===================================================================
--- locale-gen (revision 194487)
+++ locale-gen (working copy)
@@ -4,39 +4,46 @@
LOCALEGEN=/etc/locale.gen
LOCALES=/usr/share/i18n/locales
-if [ -n "$POSIXLY_CORRECT" ]; then
- unset POSIXLY_CORRECT
-fi
+unset POSIXLY_CORRECT
+[ -s "$LOCALEGEN" ] || exit 0
-[ -f $LOCALEGEN -a -s $LOCALEGEN ] || exit 0;
-
# Remove all old locale dir and locale-archive before generating new
# locale data.
-rm -rf /usr/lib/locale/* || true
+rm -rf /usr/lib/locale/*
umask 022
-is_entry_ok() {
- if [ -n "$locale" -a -n "$charset" ] ; then
- true
- else
- echo "error: Bad entry '$locale $charset'"
- false
- fi
+gen() {
+ local locale=$1
+ local charset=$2
+ local input=
+
+ if [ -z "$locale" ] || [ -z "$charset" ]; then
+ echo "error: Bad entry '$locale $charset'"
+ return
+ fi
+
+ printf ' %s.%s\n' "$(echo "$locale" | sed 's/\([^.\@]*\).*/\1/')" "$charset"
+
+ if [ -f "$LOCALES/$locale" ]; then
+ input=$locale
+ else
+ input=$(echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/')
+ fi
+
+ localedef -i "$input" -c -f "$charset" -A /usr/share/locale/locale.alias "$locale"
}
echo "Generating locales..."
while read locale charset; do \
- case $locale in \#*) continue;; "") continue;; esac; \
- is_entry_ok || continue
- echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"; \
- echo -n ".$charset"; \
- echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \
- echo -n '...'; \
- if [ -f $LOCALES/$locale ]; then input=$locale; else \
- input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; fi; \
- localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale; \
- echo ' done'; \
+ case $locale in
+ \#*|'')
+ continue
+ ;;
+ esac
+ gen "$locale" "$charset" &
done < $LOCALEGEN
+wait
+
echo "Generation complete."