--- /dev/null
+#include <stdio.h>
+#include <m17n.h>
+
+int
+main (int argc, char **argv)
+{
+ MPlist *plist, *pl;
+ MSymbol utf8, lang, script, territory;
+
+ if (argc < 2)
+ {
+ fprintf (stderr, "Usage: langname LANG [SCRIPT [TERRITORY]]\n");
+ exit (1);
+ }
+
+ M17N_INIT ();
+ utf8 = msymbol ("utf-8");
+ lang = msymbol (argv[1]);
+ if (argc > 2)
+ {
+ script = msymbol (argv[2]);
+ if (argc > 3)
+ territory = msymbol (argv[3]);
+ else
+ territory = Mnil;
+ }
+ else
+ script = territory = Mnil;
+
+ plist = mlanguage_list ();
+ for (pl = plist; mplist_key (pl) != Mnil; pl = mplist_next (pl))
+ {
+ MSymbol target = (MSymbol) mplist_value (pl);
+ MPlist *p = mlanguage_name_list (lang, target, script, territory);
+
+ if (p)
+ {
+ printf ("%s:", msymbol_name (target));
+ mconv_encode_stream (utf8, (MText *) mplist_value (p), stdout);
+ putchar ('\n');
+ }
+ }
+ m17n_object_unref (plist);
+ M17N_FINI ();
+ exit (0);
+}