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