About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / filesystems / cifs / winucase_convert.pl


Based on kernel version 4.16.1. Page generated on 2018-04-09 11:53 EST.

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";
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog