cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

winucase_convert.pl (1614B)


      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
     22while(<>) {
     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
     31for ($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
     46printf("static const wchar_t *const toplevel[256] = {", $i);
     47for ($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}
     62print "\n};\n\n";