]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | SUPPORTED_LOCALES=x | |
4 | OLD_STYLE="no" | |
5 | DESTDIR= | |
6 | ||
7 | [ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n | |
8 | [ -f /etc/sysconfig/localedb ] && . /etc/sysconfig/localedb | |
9 | ||
10 | LOCDIR=/usr/lib/locale | |
11 | ARCHIVE=${LOCDIR}/locale-archive | |
12 | ||
13 | while [ $# -gt 0 ]; do | |
14 | case $1 in | |
15 | -l=* | --locales=*) | |
16 | SUPPORTED_LOCALES="`echo $1 | sed -e 's/^[^=]*=//'`" | |
17 | ;; | |
18 | -l | --locales) | |
19 | SUPPORTED_LOCALES="$2" | |
20 | shift | |
21 | ;; | |
22 | -o | --old-style) | |
23 | OLD_STYLE="yes" | |
24 | ;; | |
25 | -d=* | --destdir=*) | |
26 | DESTDIR="`echo $1 | sed -e 's/^[^]]*=//'`" | |
27 | ;; | |
28 | -d | --destdir) | |
29 | DESTDIR="$2" | |
30 | shift | |
31 | ;; | |
32 | -h | --help | --usage) | |
33 | cat <<EOF | |
34 | Usage: localedb-gen [-l|--locales <locales>] [-o|--old-style] | |
35 | [-d|--destdir <DESTDIR>] | |
36 | localedb-gen [-h|--help|--usage] | |
37 | EOF | |
38 | exit | |
39 | ;; | |
40 | *) | |
41 | echo "Unrecognized option: $1" | |
42 | exit 1 | |
43 | ;; | |
44 | esac | |
45 | shift | |
46 | done | |
47 | ||
48 | if [ "${SUPPORTED_LOCALES}" = "x" ]; then | |
49 | echo "SUPPORTED_LOCALES not set" | |
50 | echo "You can set it in /etc/sysconfig/i18n file" | |
51 | exit 1 | |
52 | fi | |
53 | ||
54 | if [ "${DESTDIR}" = "" ] && rpm -qf ${ARCHIVE} >/dev/null 2>&1 ; then | |
55 | echo "${ARCHIVE} belongs to `rpm -qf ${ARCHIVE}` package - uninstall it first!" | |
56 | exit 1 | |
57 | fi | |
58 | ||
59 | rm -rf ${DESTDIR}${LOCDIR} | |
60 | install -d ${DESTDIR}${LOCDIR} | |
61 | cd ${DESTDIR}${LOCDIR} | |
62 | ||
63 | if [ "${DESTDIR}" = "" ]; then | |
64 | DESTDIROPT= | |
65 | else | |
66 | DESTDIROPT="--prefix ${DESTDIR}" | |
67 | fi | |
68 | ||
69 | rc=0 | |
70 | for loc in ${SUPPORTED_LOCALES} ; do | |
71 | if echo ${loc} | grep -q / ; then | |
72 | chset="`echo ${loc} | sed -e 's@^.*/@@'`" | |
73 | loc="`echo ${loc} | sed -e 's@/.*$@@'`" | |
74 | elif echo ${loc} | grep -q '\.' ; then | |
75 | chset="`echo ${loc} | sed -e 's@^.*\.@@'`" | |
76 | elif grep -qs "^${loc}/[^ ]* .*$" /usr/share/i18n/SUPPORTED ; then | |
77 | chset="`grep \"^${loc}/.* .*$\" /usr/share/i18n/SUPPORTED | sed -e 's@^.*/\([^ ]*\) .*$@\1@'`" | |
78 | else | |
79 | echo "Charset not known for locale ${loc} - skipping..." | |
80 | continue | |
81 | fi | |
82 | iloc="`echo ${loc} | sed -e 's/\.[^@]*//'`" | |
83 | echo -n "Generating ${loc} using charset ${chset}... " | |
84 | if [ "${OLD_STYLE}" = "yes" ]; then | |
85 | localedef -f ${chset} -i ${iloc} ${DESTDIR}${LOCDIR}${loc} | |
86 | else | |
87 | localedef -f ${chset} -i ${iloc} ${loc} ${DESTDIROPT} | |
88 | fi | |
89 | rc=$(($rc + $?)) | |
90 | echo | |
91 | done | |
92 | ||
93 | echo "DONE." | |
94 | exit $rc |