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 <https://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";
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.