63 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Perl
		
	
	
	
	
	
		
		
			
		
	
	
			63 lines
		
	
	
	
		
			1.6 KiB
			
		
	
	
	
		
			Perl
		
	
	
	
	
	
|   | #!/usr/bin/perl -w | ||
|  | # | ||
|  | # winucase_convert.pl -- convert "Windows 8 Upper Case Mapping Table.txt" to | ||
|  | #                        a two-level set of C arrays. | ||
|  | # | ||
|  | #   Copyright 2013: Jeff Layton <jlayton@redhat.com> | ||
|  | # | ||
|  | #   This program is free software: you can redistribute it and/or modify | ||
|  | #   it under the terms of the GNU General Public License as published by | ||
|  | #   the Free Software Foundation, either version 3 of the License, or | ||
|  | #   (at your option) any later version. | ||
|  | # | ||
|  | #   This program is distributed in the hope that it will be useful, | ||
|  | #   but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
|  | #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||
|  | #   GNU General Public License for more details. | ||
|  | # | ||
|  | #   You should have received a copy of the GNU General Public License | ||
|  | #   along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||
|  | # | ||
|  | 
 | ||
|  | while(<>) { | ||
|  | 	next if (!/^0x(..)(..)\t0x(....)\t/); | ||
|  | 	$firstchar = hex($1); | ||
|  | 	$secondchar = hex($2); | ||
|  | 	$uppercase = hex($3); | ||
|  | 
 | ||
|  | 	$top[$firstchar][$secondchar] = $uppercase; | ||
|  | } | ||
|  | 
 | ||
|  | for ($i = 0; $i < 256; $i++) { | ||
|  | 	next if (!$top[$i]); | ||
|  | 
 | ||
|  | 	printf("static const wchar_t t2_%2.2x[256] = {", $i); | ||
|  | 	for ($j = 0; $j < 256; $j++) { | ||
|  | 		if (($j % 8) == 0) { | ||
|  | 			print "\n\t"; | ||
|  | 		} else { | ||
|  | 			print " "; | ||
|  | 		} | ||
|  | 		printf("0x%4.4x,", $top[$i][$j] ? $top[$i][$j] : 0); | ||
|  | 	} | ||
|  | 	print "\n};\n\n"; | ||
|  | } | ||
|  | 
 | ||
|  | printf("static const wchar_t *const toplevel[256] = {", $i); | ||
|  | for ($i = 0; $i < 256; $i++) { | ||
|  | 	if (($i % 8) == 0) { | ||
|  | 		print "\n\t"; | ||
|  | 	} elsif ($top[$i]) { | ||
|  | 		print " "; | ||
|  | 	} else { | ||
|  | 		print "  "; | ||
|  | 	} | ||
|  | 
 | ||
|  | 	if ($top[$i]) { | ||
|  | 		printf("t2_%2.2x,", $i); | ||
|  | 	} else { | ||
|  | 		print "NULL,"; | ||
|  | 	} | ||
|  | } | ||
|  | print "\n};\n\n"; |