#!/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
