This directory contains tools for maintaining the config.charset file.

The main script is "all-charsets". Before using it, you must configure
this package. For all installed locales, it prints
  - the result of the command "locale charmap",
  - the result of "nl_langinfo (CODESET)",
  - the result of "locale_charset ()".

It uses the following auxiliary scripts and programs:
  - all-locales
    Prints all usable locales in the system, one per line.
  - locale_charmap
    Executes "locale charmap".
  - locale_codeset.c
    Prints nl_langinfo (CODESET).
  - locale_charset.c
    Prints locale_charset().

A second main script is "all-charsets-X11". It also prints the X11
encoding name. Before using it, you must tweak the X11 paths needed
for compiling locale_x11encoding (a simple X11 program), and let your
DISPLAY environment variable point to a running X11 screen.

The other files are test results from various operating systems.

