#!/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 locale -a | \ awk '{ if ( index ($1, "_") == 0 ) next # No aliases if ( index ($1, ".") > 0 ) next # No explicit codesets locale = $1 cmd = "LC_CTYPE=" locale " locale -ck LC_CTYPE | grep charmap" cmd | getline codeset codeset = gensub (/charmap="(.*)"/, "\\1", 1, codeset) codeset = gensub (/BIG5.*/, "BIG5", 1, codeset); printf " { \"%s\", \"%s\" },\n", locale, codeset; }' echo "};" ) > lc_def_codesets.h