Commit | Line | Data |
---|---|---|
d49ffb0e JL |
1 | #!/usr/bin/perl -w |
2 | # | |
3 | # winucase_convert.pl -- convert "Windows 8 Upper Case Mapping Table.txt" to | |
4 | # a two-level set of C arrays. | |
5 | # | |
6 | # Copyright 2013: Jeff Layton <jlayton@redhat.com> | |
7 | # | |
8 | # This program is free software: you can redistribute it and/or modify | |
9 | # it under the terms of the GNU General Public License as published by | |
10 | # the Free Software Foundation, either version 3 of the License, or | |
11 | # (at your option) any later version. | |
12 | # | |
13 | # This program is distributed in the hope that it will be useful, | |
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | # GNU General Public License for more details. | |
17 | # | |
18 | # You should have received a copy of the GNU General Public License | |
19 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 | # | |
21 | ||
22 | while(<>) { | |
23 | next if (!/^0x(..)(..)\t0x(....)\t/); | |
24 | $firstchar = hex($1); | |
25 | $secondchar = hex($2); | |
26 | $uppercase = hex($3); | |
27 | ||
28 | $top[$firstchar][$secondchar] = $uppercase; | |
29 | } | |
30 | ||
31 | for ($i = 0; $i < 256; $i++) { | |
32 | next if (!$top[$i]); | |
33 | ||
34 | printf("static const wchar_t t2_%2.2x[256] = {", $i); | |
35 | for ($j = 0; $j < 256; $j++) { | |
36 | if (($j % 8) == 0) { | |
37 | print "\n\t"; | |
38 | } else { | |
39 | print " "; | |
40 | } | |
41 | printf("0x%4.4x,", $top[$i][$j] ? $top[$i][$j] : 0); | |
42 | } | |
43 | print "\n};\n\n"; | |
44 | } | |
45 | ||
46 | printf("static const wchar_t *const toplevel[256] = {", $i); | |
47 | for ($i = 0; $i < 256; $i++) { | |
48 | if (($i % 8) == 0) { | |
49 | print "\n\t"; | |
50 | } elsif ($top[$i]) { | |
51 | print " "; | |
52 | } else { | |
53 | print " "; | |
54 | } | |
55 | ||
56 | if ($top[$i]) { | |
57 | printf("t2_%2.2x,", $i); | |
58 | } else { | |
59 | print "NULL,"; | |
60 | } | |
61 | } | |
62 | print "\n};\n\n"; |