11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 263f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp * Copyright (C) International Business Machines Corp., 2000-2002 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is free software; you can redistribute it and/or modify 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * it under the terms of the GNU General Public License as published by 663f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp * the Free Software Foundation; either version 2 of the License, or 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * (at your option) any later version. 863f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp * 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This program is distributed in the hope that it will be useful, 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * but WITHOUT ANY WARRANTY; without even the implied warranty of 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the GNU General Public License for more details. 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * You should have received a copy of the GNU General Public License 1563f83c9fcf40ab61b75edf5d2f2c1ae6bf876482Dave Kleikamp * along with this program; if not, write to the Free Software 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/fs.h> 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "jfs_unicode.h" 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Latin upper case 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldssigned char UniUpperTable[512] = { 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 000-00f */ 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 010-01f */ 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 020-02f */ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 030-03f */ 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 040-04f */ 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 050-05f */ 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 060-06f */ 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, 0, 0, 0, 0, 0, /* 070-07f */ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 080-08f */ 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 090-09f */ 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0a0-0af */ 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0b0-0bf */ 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0c0-0cf */ 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0d0-0df */ 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 0e0-0ef */ 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-32,-32,-32,-32,-32, 0,-32,-32,-32,-32,-32,-32,-32,121, /* 0f0-0ff */ 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 100-10f */ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 110-11f */ 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 120-12f */ 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, /* 130-13f */ 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, /* 140-14f */ 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 150-15f */ 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 160-16f */ 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, 0, /* 170-17f */ 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, /* 180-18f */ 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, /* 190-19f */ 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, /* 1a0-1af */ 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -1, 0, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, /* 1b0-1bf */ 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, -1, -2, 0, -1, -2, 0, -1, -2, 0, -1, 0, /* 1c0-1cf */ 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1,-79, 0, -1, /* 1d0-1df */ 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e0-1ef */ 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, -1, -2, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, -1, /* 1f0-1ff */ 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Upper case range - Greek */ 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic signed char UniCaseRangeU03a0[47] = { 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,-38,-37,-37,-37, /* 3a0-3af */ 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 3b0-3bf */ 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-31,-32,-32,-32,-32,-32,-32,-32,-32,-32,-64,-63,-63, 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Upper case range - Cyrillic */ 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic signed char UniCaseRangeU0430[48] = { 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 430-43f */ 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* 440-44f */ 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80, 0,-80,-80, /* 450-45f */ 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Upper case range - Extended cyrillic */ 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic signed char UniCaseRangeU0490[61] = { 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 490-49f */ 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 4a0-4af */ 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 4b0-4bf */ 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, -1, 0, -1, 0, 0, 0, -1, 0, 0, 0, -1, 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Upper case range - Extended latin and greek */ 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic signed char UniCaseRangeU1e00[509] = { 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e00-1e0f */ 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e10-1e1f */ 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e20-1e2f */ 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e30-1e3f */ 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e40-1e4f */ 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e50-1e5f */ 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e60-1e6f */ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e70-1e7f */ 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1e80-1e8f */ 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0,-59, 0, -1, 0, -1, /* 1e90-1e9f */ 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ea0-1eaf */ 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1eb0-1ebf */ 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ec0-1ecf */ 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ed0-1edf */ 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, /* 1ee0-1eef */ 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, /* 1ef0-1eff */ 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f00-1f0f */ 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f10-1f1f */ 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f20-1f2f */ 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f30-1f3f */ 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f40-1f4f */ 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 8, 0, 8, 0, 8, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f50-1f5f */ 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f60-1f6f */ 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 74, 74, 86, 86, 86, 86,100,100, 0, 0,112,112,126,126, 0, 0, /* 1f70-1f7f */ 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f80-1f8f */ 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1f90-1f9f */ 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fa0-1faf */ 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fb0-1fbf */ 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fc0-1fcf */ 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fd0-1fdf */ 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 8, 8, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 1fe0-1fef */ 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Upper case range - Wide latin */ 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic signed char UniCaseRangeUff40[27] = { 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, /* ff40-ff4f */ 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds -32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32, 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Upper Case Range 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus TorvaldsUNICASERANGE UniUpperRange[] = { 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { 0x03a0, 0x03ce, UniCaseRangeU03a0 }, 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { 0x0430, 0x045f, UniCaseRangeU0430 }, 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { 0x0490, 0x04cc, UniCaseRangeU0490 }, 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { 0x1e00, 0x1ffc, UniCaseRangeU1e00 }, 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { 0xff40, 0xff5a, UniCaseRangeUff40 }, 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds { 0 } 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 135