Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

cifs: add winucase_convert.pl to Documentation/ directory

Add the script used to generate the case-conversion tables to the
Documentation/ directory, in case we ever need to update or regenerate
these tables in the future.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <smfrench@gmail.com>

authored by

Jeff Layton and committed by
Steve French
d49ffb0e ec71e0e1

+62
+62
Documentation/filesystems/cifs/winucase_convert.pl
··· 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";