--- /dev/null
+#!/usr/bin/perl
+#
+# Use `recode` to create a translation table
+# (c) 2003, Robert Spalek <robert@ucw.cz>
+#
+
+use open IN => ":utf8";
+
+foreach $charset (@ARGV)
+{
+ print "Charset: $charset\n";
+ open(fi, "recode -s -f $charset/..utf-8/ <tmp/tab256 |") || die "Recoding error";
+ open(fo, "| ./mkuni >tmp/$charset") || die;
+
+ while (<fi>)
+ {
+ chop;
+ (($number, $char) = /^([0-9A-F]{2})\t(.)$/) || die "Cannot parse $_";
+ $recode[hex $number] = ord $char;
+ }
+ $#recode >= 0 || die "Empty recoding table";
+ $recode[10] = 10;
+ $recode[13] = 13;
+
+ for ($i=0; $i<=$#recode; $i++)
+ {
+ printf fo "%02X\t%04X\n", $i, $recode[$i];
+ }
+
+ close(fo);
+ close(fi);
+}
--- /dev/null
+#!/usr/bin/perl
+#
+# Simply create a table of all 256 characters
+# (c) 2003, Robert Spalek <robert@ucw.cz>
+#
+
+use open OUT => ":raw";
+
+open(fo, '>tmp/tab256') || die;
+for ($i=0; $i<256; $i++)
+{
+ next if $i==10 || $i==13;
+ printf fo "%02X\t%c\n", $i, $i;
+}
+close(fo);