Cygwin: locale: new script creating linux default codeset mapping

New script creating a mapping table from locale to default codeset
for this locale.  We use that in Cygwin now to generate the own
default codeset mapping based on Linux locale names.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2023-02-25 16:06:34 +01:00
parent 57bac33359
commit 7b591704b8
1 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,48 @@
#!/bin/bash
(
cat <<-EOF
/* This struct of default codesets has been generated by fetching
locale data from a Linux system using $(rpm -q glibc | head -1) on $(date +%F) */
struct default_codeset_t
{
const char *locale;
const char *codeset;
} default_codeset[] =
{
EOF
while read line
do
locale=$(echo "${line}" | awk '/^locale:/{ print $2; }')
if [ -z "${locale}" ]
then
continue
fi
# No aliases
idx=$(expr index "${locale}" '_')
if [ "${idx}" -eq 0 ]
then
continue
fi
# No explicit codesets
idx=$(expr index "${locale}" '.')
if [ "${idx}" -ne 0 ]
then
continue
fi
while read line2
do
codeset=$(echo "${line2}" | awk '/codeset/{ print $3; }')
if [ -n "${codeset}" ]
then
# Translate into internal codeset names. */
case "${codeset}" in
BIG5*) codeset="BIG5";;
*) ;;
esac
printf " { \"%s\", \"%s\" },\n" "${locale}" "${codeset}"
break
fi
done
done <<<$(locale -av)
echo "};"
) > lc_def_codesets.h