1 # Copyright 2000-2002 Double Precision, Inc.
2 # See COPYING for distribution information.
4 # $Id: mkibm864.pl,v 1.2 2002/11/18 00:54:22 mrsam Exp $
6 # Generate iso-8859* unicode tables
10 open (U
, "UnicodeData.txt") || die "$!\n";
16 my @fields= split /;/;
18 my ($code, $uc, $lc, $tc);
51 open (SET
, $set) || die "$set: $!\n";
57 my ($code, $unicode)=split /[ \t]+/;
59 next unless $code ne "";
62 eval "\$unicode=$unicode;";
64 die if $code < 0 || $code > 255;
75 ** Copyright 2000-2002 Double Precision, Inc.
76 ** See COPYING for distribution information.
78 ** $Id: mkibm864.pl,v 1.2 2002/11/18 00:54:22 mrsam Exp $
85 print "static const unicode_char $fwdname [256]={\n";
87 for ($i=0; $i<256; $i++)
94 print "," if $i < 255;
95 print "\n" if ($i % 16) == 15;
102 print "static const char $ucname [256]={\n";
104 for ($i=0; $i<256; $i++)
106 my $unicode=$fwd[$i];
108 $unicode=$UC{$unicode} && $rev{$UC{$unicode}} ?
$rev{$UC{$unicode}}:$i;
110 printf("(char)0x%02x", $unicode);
111 print "," if $i < 255;
112 print "\n" if ($i % 8) == 7;
119 print "static const char $lcname [256]={\n";
121 for ($i=0; $i<256; $i++)
123 my $unicode=$fwd[$i];
125 $unicode=$LC{$unicode} && $rev{$LC{$unicode}} ?
$rev{$LC{$unicode}}:$i;
127 printf("(char)0x%02x", $unicode);
128 print "," if $i < 255;
129 print "\n" if ($i % 8) == 7;
136 print "static const char $tcname [256]={\n";
138 for ($i=0; $i<256; $i++)
140 my $unicode=$fwd[$i];
142 $unicode=$TC{$unicode} && $rev{$TC{$unicode}} ?
$rev{$TC{$unicode}}:$i;
144 printf("(char)0x%02x", $unicode);
145 print "," if $i < 255;
146 print "\n" if ($i % 8) == 7;
149 my $structname=shift;
155 static unicode_char *c2u(const struct unicode_info *u, const char *cp, int *ip)
157 return (unicode_ibm864_c2u(cp, ip, $fwdname));
160 static char *u2c(const struct unicode_info *u, const unicode_char *cp, int *ip)
162 return (unicode_ibm864_u2c(cp, ip, $fwdname));
165 static char *toupper_func(const struct unicode_info *u, const char *cp, int *ip)
167 return (unicode_iso8859_convert(cp, ip, $ucname));
170 static char *tolower_func(const struct unicode_info *u, const char *cp, int *ip)
172 return (unicode_iso8859_convert(cp, ip, $lcname));
175 static char *totitle_func(const struct unicode_info *u, const char *cp, int *ip)
177 return (unicode_iso8859_convert(cp, ip, $tcname));
180 const struct unicode_info $structname = {