1 # Copyright 2000-2006 Double Precision, Inc.
2 # See COPYING for distribution information.
4 # $Id: mkiso8859.pl,v 1.7 2006/03/25 14:24:43 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-2006 Double Precision, Inc.
76 ** See COPYING for distribution information.
78 ** $Id: mkiso8859.pl,v 1.7 2006/03/25 14:24:43 mrsam Exp $
85 print "static const unicode_char $fwdname [128]={\n";
87 for ($i=0; $i<128; $i++)
89 die "Unicode map not US-ASCII: $i\n" unless $fwd[$i] == $i;
92 for ($i=128; $i<256; $i++)
99 print "," if $i < 255;
100 print "\n" if ($i % 16) == 15;
107 print "static const char $ucname [256]={\n";
109 for ($i=0; $i<256; $i++)
111 my $unicode=$fwd[$i];
113 $unicode=$UC{$unicode} && $rev{$UC{$unicode}} ?
$rev{$UC{$unicode}}:$i;
115 printf("(char)0x%02x", $unicode);
116 print "," if $i < 255;
117 print "\n" if ($i % 8) == 7;
124 print "static const char $lcname [256]={\n";
126 for ($i=0; $i<256; $i++)
128 my $unicode=$fwd[$i];
130 $unicode=$LC{$unicode} && $rev{$LC{$unicode}} ?
$rev{$LC{$unicode}}:$i;
132 printf("(char)0x%02x", $unicode);
133 print "," if $i < 255;
134 print "\n" if ($i % 8) == 7;
141 print "static const char $tcname [256]={\n";
143 for ($i=0; $i<256; $i++)
145 my $unicode=$fwd[$i];
147 $unicode=$TC{$unicode} && $rev{$TC{$unicode}} ?
$rev{$TC{$unicode}}:$i;
149 printf("(char)0x%02x", $unicode);
150 print "," if $i < 255;
151 print "\n" if ($i % 8) == 7;
154 my $structname=shift;
160 static unicode_char *c2u(const struct unicode_info *u, const char *cp, int *ip)
162 return (unicode_iso8859_c2u(cp, ip, $fwdname));
165 static char *u2c(const struct unicode_info *u, const unicode_char *cp, int *ip)
169 ($set eq "windows-874.txt" ?
"unicode_windows874_u2c":"unicode_iso8859_u2c")
170 . "(cp, ip, $fwdname));
173 static char *toupper_func(const struct unicode_info *u, const char *cp, int *ip)
175 return (unicode_iso8859_convert(cp, ip, $ucname));
178 static char *tolower_func(const struct unicode_info *u, const char *cp, int *ip)
180 return (unicode_iso8859_convert(cp, ip, $lcname));
183 static char *totitle_func(const struct unicode_info *u, const char *cp, int *ip)
185 return (unicode_iso8859_convert(cp, ip, $tcname));
188 const struct unicode_info $structname = {
189 \"$chsetname\"," . ($set =~ /^8859*/ || $set =~ /^windows-12/ ?
"
191 UNICODE_HEADER_QUOPRI | UNICODE_BODY_QUOPRI," :
192 $set eq "windows-874.txt" ?
"
194 UNICODE_HEADER_BASE64 | UNICODE_BODY_BASE64," :"
195 UNICODE_USASCII,") . "