Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/Documentation/admin-guide/cifs/winucase_convert.pl
26285 views
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 <[email protected]>
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";
63
64