^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) International Business Machines Corp., 2000-2002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/fs.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include "jfs_unicode.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * Latin upper case
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) signed char UniUpperTable[512] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 000-00f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 010-01f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 020-02f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 030-03f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 040-04f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 050-05f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 060-06f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, 0, 0, 0, 0, 0, /* 070-07f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 080-08f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 090-09f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0a0-0af */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0b0-0bf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0c0-0cf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0d0-0df */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 0e0-0ef */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) -32,-32,-32,-32,-32,-32,-32, 0,-32,-32,-32,-32,-32,-32,-32,121, /* 0f0-0ff */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 100-10f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 110-11f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 120-12f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, /* 130-13f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, /* 140-14f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 150-15f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 160-16f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, /* 170-17f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, /* 180-18f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, /* 190-19f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, /* 1a0-1af */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) -1, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, /* 1b0-1bf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 0, 0, 0, 0, 0, -1, -2, 0, -1, -2, 0, -1, -2, 0, -1, 0, /* 1c0-1cf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,-79, 0, -1, /* 1d0-1df */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e0-1ef */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 0, 0, -1, -2, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, /* 1f0-1ff */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) /* Upper case range - Greek */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) static signed char UniCaseRangeU03a0[47] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-38,-37,-37,-37, /* 3a0-3af */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 3b0-3bf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) -32,-32,-31,-32,-32,-32,-32,-32,-32,-32,-32,-32,-64,-63,-63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* Upper case range - Cyrillic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) static signed char UniCaseRangeU0430[48] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 430-43f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 440-44f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 0,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80, 0,-80,-80, /* 450-45f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) /* Upper case range - Extended cyrillic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) static signed char UniCaseRangeU0490[61] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 490-49f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 4a0-4af */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 4b0-4bf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) /* Upper case range - Extended latin and greek */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) static signed char UniCaseRangeU1e00[509] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e00-1e0f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e10-1e1f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e20-1e2f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e30-1e3f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e40-1e4f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e50-1e5f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e60-1e6f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e70-1e7f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e80-1e8f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0,-59, 0, -1, 0, -1, /* 1e90-1e9f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ea0-1eaf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1eb0-1ebf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ec0-1ecf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ed0-1edf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ee0-1eef */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, /* 1ef0-1eff */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f00-1f0f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f10-1f1f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f20-1f2f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f30-1f3f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f40-1f4f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) 0, 8, 0, 8, 0, 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f50-1f5f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f60-1f6f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) 74, 74, 86, 86, 86, 86,100,100, 0, 0,112,112,126,126, 0, 0, /* 1f70-1f7f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f80-1f8f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f90-1f9f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fa0-1faf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) 8, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fb0-1fbf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fc0-1fcf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fd0-1fdf */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 8, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fe0-1fef */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) /* Upper case range - Wide latin */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) static signed char UniCaseRangeUff40[27] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* ff40-ff4f */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) * Upper Case Range
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) UNICASERANGE UniUpperRange[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) { 0x03a0, 0x03ce, UniCaseRangeU03a0 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) { 0x0430, 0x045f, UniCaseRangeU0430 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) { 0x0490, 0x04cc, UniCaseRangeU0490 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) { 0x1e00, 0x1ffc, UniCaseRangeU1e00 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) { 0xff40, 0xff5a, UniCaseRangeUff40 },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) { 0 }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) };