sh.char.c revision 195609
1195609Smp/* $Header: /p/tcsh/cvsroot/tcsh/sh.char.c,v 3.20 2007/03/07 16:31:37 christos Exp $ */ 259243Sobrien/* 359243Sobrien * sh.char.c: Character classification tables 459243Sobrien */ 559243Sobrien/*- 659243Sobrien * Copyright (c) 1980, 1991 The Regents of the University of California. 759243Sobrien * All rights reserved. 859243Sobrien * 959243Sobrien * Redistribution and use in source and binary forms, with or without 1059243Sobrien * modification, are permitted provided that the following conditions 1159243Sobrien * are met: 1259243Sobrien * 1. Redistributions of source code must retain the above copyright 1359243Sobrien * notice, this list of conditions and the following disclaimer. 1459243Sobrien * 2. Redistributions in binary form must reproduce the above copyright 1559243Sobrien * notice, this list of conditions and the following disclaimer in the 1659243Sobrien * documentation and/or other materials provided with the distribution. 17100616Smp * 3. Neither the name of the University nor the names of its contributors 1859243Sobrien * may be used to endorse or promote products derived from this software 1959243Sobrien * without specific prior written permission. 2059243Sobrien * 2159243Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2259243Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2359243Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2459243Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2559243Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2659243Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2759243Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2859243Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2959243Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3059243Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3159243Sobrien * SUCH DAMAGE. 3259243Sobrien */ 3359243Sobrien#include "sh.h" 3459243Sobrien 35195609SmpRCSID("$tcsh: sh.char.c,v 3.20 2007/03/07 16:31:37 christos Exp $") 3659243Sobrien 3759243Sobrien#include "sh.char.h" 3859243Sobrien 3959243Sobrien/* on default same as original map */ 4059243Sobrienunsigned short _cmap[256] = { 4159243Sobrien/* 0 nul 1 soh 2 stx 3 etx */ 4259243Sobrien _CTR, _CTR, _CTR, _CTR, 4359243Sobrien 4459243Sobrien/* 4 eot 5 enq 6 ack 7 bel */ 4559243Sobrien _CTR, _CTR, _CTR, _CTR, 4659243Sobrien 4759243Sobrien/* 8 bs 9 ht 10 nl 11 vt */ 4859243Sobrien _CTR, _CTR|_SP|_META, _CTR|_NL|_META, _CTR, 4959243Sobrien 5059243Sobrien/* 12 np 13 cr 14 so 15 si */ 5159243Sobrien _CTR, _CTR, _CTR, _CTR, 5259243Sobrien 5359243Sobrien/* 16 dle 17 dc1 18 dc2 19 dc3 */ 5459243Sobrien _CTR, _CTR, _CTR, _CTR, 5559243Sobrien 5659243Sobrien/* 20 dc4 21 nak 22 syn 23 etb */ 5759243Sobrien _CTR, _CTR, _CTR, _CTR, 5859243Sobrien 5959243Sobrien/* 24 can 25 em 26 sub 27 esc */ 6059243Sobrien _CTR, _CTR, _CTR, _CTR, 6159243Sobrien 6259243Sobrien/* 28 fs 29 gs 30 rs 31 us */ 6359243Sobrien _CTR, _CTR, _CTR, _CTR, 6459243Sobrien 6559243Sobrien/* 32 sp 33 ! 34 " 35 # */ 6659243Sobrien _SP|_META, _PUN, _QF|_PUN, _META|_PUN, 6759243Sobrien 6859243Sobrien/* 36 $ 37 % 38 & 39 ' */ 6959243Sobrien _DOL|_PUN, _PUN, _META|_CMD|_PUN,_QF|_PUN, 7059243Sobrien 7159243Sobrien/* 40 ( 41 ) 42 * 43 + */ 7259243Sobrien _META|_CMD|_PUN,_META|_PUN, _GLOB|_PUN, _PUN, 7359243Sobrien 7459243Sobrien/* 44 , 45 - 46 . 47 / */ 7559243Sobrien _PUN, _PUN, _PUN, _PUN, 7659243Sobrien 7759243Sobrien/* 48 0 49 1 50 2 51 3 */ 7859243Sobrien _DIG|_XD, _DIG|_XD, _DIG|_XD, _DIG|_XD, 7959243Sobrien 8059243Sobrien/* 52 4 53 5 54 6 55 7 */ 8159243Sobrien _DIG|_XD, _DIG|_XD, _DIG|_XD, _DIG|_XD, 8259243Sobrien 8359243Sobrien/* 56 8 57 9 58 : 59 ; */ 8459243Sobrien _DIG|_XD, _DIG|_XD, _PUN, _META|_CMD|_PUN, 8559243Sobrien 8659243Sobrien/* 60 < 61 = 62 > 63 ? */ 8759243Sobrien _META|_PUN, _PUN, _META|_PUN, _GLOB|_PUN, 8859243Sobrien 8959243Sobrien/* 64 @ 65 A 66 B 67 C */ 9059243Sobrien _PUN, _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP|_XD, 9159243Sobrien 9259243Sobrien/* 68 D 69 E 70 F 71 G */ 9359243Sobrien _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP, 9459243Sobrien 9559243Sobrien/* 72 H 73 I 74 J 75 K */ 9659243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 9759243Sobrien 9859243Sobrien/* 76 L 77 M 78 N 79 O */ 9959243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 10059243Sobrien 10159243Sobrien/* 80 P 81 Q 82 R 83 S */ 10259243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 10359243Sobrien 10459243Sobrien/* 84 T 85 U 86 V 87 W */ 10559243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 10659243Sobrien 10759243Sobrien/* 88 X 89 Y 90 Z 91 [ */ 10859243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _GLOB|_PUN, 10959243Sobrien 11059243Sobrien/* 92 \ 93 ] 94 ^ 95 _ */ 11159243Sobrien _ESC|_PUN, _PUN, _PUN, _PUN, 11259243Sobrien 11359243Sobrien/* 96 ` 97 a 98 b 99 c */ 11459243Sobrien _QB|_GLOB|_META|_PUN, _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW|_XD, 11559243Sobrien 11659243Sobrien/* 100 d 101 e 102 f 103 g */ 11759243Sobrien _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW, 11859243Sobrien 11959243Sobrien/* 104 h 105 i 106 j 107 k */ 12059243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 12159243Sobrien 12259243Sobrien/* 108 l 109 m 110 n 111 o */ 12359243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 12459243Sobrien 12559243Sobrien/* 112 p 113 q 114 r 115 s */ 12659243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 12759243Sobrien 12859243Sobrien/* 116 t 117 u 118 v 119 w */ 12959243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 13059243Sobrien 13159243Sobrien/* 120 x 121 y 122 z 123 { */ 13259243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _GLOB|_PUN, 13359243Sobrien 13459243Sobrien/* 124 | 125 } 126 ~ 127 del */ 13559243Sobrien _META|_CMD|_PUN,_PUN, _PUN, _CTR, 13659243Sobrien 137195609Smp#ifdef SHORT_STRINGS 13859243Sobrien/****************************************************************/ 13959243Sobrien/* 128 - 255 The below is supposedly ISO 8859/1 */ 14059243Sobrien/****************************************************************/ 14159243Sobrien/* 128 (undef) 129 (undef) 130 (undef) 131 (undef) */ 14259243Sobrien _CTR, _CTR, _CTR, _CTR, 14359243Sobrien 14459243Sobrien/* 132 (undef) 133 (undef) 134 (undef) 135 (undef) */ 14559243Sobrien _CTR, _CTR, _CTR, _CTR, 14659243Sobrien 14759243Sobrien/* 136 (undef) 137 (undef) 138 (undef) 139 (undef) */ 14859243Sobrien _CTR, _CTR, _CTR, _CTR, 14959243Sobrien 15059243Sobrien/* 140 (undef) 141 (undef) 142 (undef) 143 (undef) */ 15159243Sobrien _CTR, _CTR, _CTR, _CTR, 15259243Sobrien 15359243Sobrien/* 144 (undef) 145 (undef) 146 (undef) 147 (undef) */ 15459243Sobrien _CTR, _CTR, _CTR, _CTR, 15559243Sobrien 15659243Sobrien/* 148 (undef) 149 (undef) 150 (undef) 151 (undef) */ 15759243Sobrien _CTR, _CTR, _CTR, _CTR, 15859243Sobrien 15959243Sobrien/* 152 (undef) 153 (undef) 154 (undef) 155 (undef) */ 16059243Sobrien _CTR, _CTR, _CTR, _CTR, 16159243Sobrien 16259243Sobrien/* 156 (undef) 157 (undef) 158 (undef) 159 (undef) */ 16359243Sobrien _CTR, _CTR, _CTR, _CTR, 16459243Sobrien 16559243Sobrien/* 160 nobreakspace 161 exclamdown 162 cent 163 sterling */ 16659243Sobrien _PUN, /* XXX */ _PUN, _PUN, _PUN, 16759243Sobrien 16859243Sobrien/* 164 currency 165 yen 166 brokenbar 167 section */ 16959243Sobrien _PUN, _PUN, _PUN, _PUN, 17059243Sobrien 17159243Sobrien/* 168 diaeresis 169 copyright 170 ordfeminine 171 guillemotleft*/ 17259243Sobrien _PUN, _PUN, _PUN, _PUN, 17359243Sobrien 17459243Sobrien/* 172 notsign 173 hyphen 174 registered 175 macron */ 17559243Sobrien _PUN, _PUN, _PUN, _PUN, 17659243Sobrien 17759243Sobrien/* 176 degree 177 plusminus 178 twosuperior 179 threesuperior*/ 17859243Sobrien _PUN, _PUN, _PUN, _PUN, 17959243Sobrien 18059243Sobrien/* 180 acute 181 mu 182 paragraph 183 periodcentered*/ 18159243Sobrien _PUN, _PUN, /*XXX*/ _PUN, _PUN, 18259243Sobrien 18359243Sobrien/* 184 cedilla 185 onesuperior 186 masculine 187 guillemotright*/ 18459243Sobrien _PUN, _PUN, _PUN, _PUN, 18559243Sobrien 18659243Sobrien/* 188 onequarter 189 onehalf 190 threequarters 191 questiondown*/ 18759243Sobrien _PUN, _PUN, _PUN, _PUN, 18859243Sobrien 18959243Sobrien/* 192 Agrave 193 Aacute 194 Acircumflex 195 Atilde */ 19059243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 19159243Sobrien 19259243Sobrien/* 196 Adiaeresis 197 Aring 198 AE 199 Ccedilla */ 19359243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 19459243Sobrien 19559243Sobrien/* 200 Egrave 201 Eacute 202 Ecircumflex 203 Ediaeresis */ 19659243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 19759243Sobrien 19859243Sobrien/* 204 Igrave 205 Iacute 206 Icircumflex 207 Idiaeresis */ 19959243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 20059243Sobrien 20159243Sobrien/* 208 ETH 209 Ntilde 210 Ograve 211 Oacute */ 20259243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 20359243Sobrien 20459243Sobrien/* 212 Ocircumflex 213 Otilde 214 Odiaeresis 215 multiply */ 20559243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _PUN, 20659243Sobrien 20759243Sobrien/* 216 Ooblique 217 Ugrave 218 Uacute 219 Ucircumflex */ 20859243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 20959243Sobrien 21059243Sobrien/* 220 Udiaeresis 221 Yacute 222 THORN 223 ssharp */ 21159243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_DOW, 21259243Sobrien 21359243Sobrien/* 224 agrave 225 aacute 226 acircumflex 227 atilde */ 21459243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 21559243Sobrien 21659243Sobrien/* 228 adiaeresis 229 aring 230 ae 231 ccedilla */ 21759243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 21859243Sobrien 21959243Sobrien/* 232 egrave 233 eacute 234 ecircumflex 235 ediaeresis */ 22059243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 22159243Sobrien 22259243Sobrien/* 236 igrave 237 iacute 238 icircumflex 239 idiaeresis */ 22359243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 22459243Sobrien 22559243Sobrien/* 240 eth 241 ntilde 242 ograve 243 oacute */ 22659243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 22759243Sobrien 22859243Sobrien/* 244 ocircumflex 245 otilde 246 odiaeresis 247 division */ 22959243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _PUN, 23059243Sobrien 23159243Sobrien/* 248 oslash 249 ugrave 250 uacute 251 ucircumflex */ 23259243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 23359243Sobrien 23459243Sobrien/* 252 udiaeresis 253 yacute 254 thorn 255 ydiaeresis */ 23559243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 23659243Sobrien}; 237195609Smp#endif /* SHORT_STRINGS */ 238195609Smp 239195609Smp#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE) 24059243Sobrien/* original table */ 24159243Sobrienunsigned short _cmap_c[256] = { 24259243Sobrien/* 0 nul 1 soh 2 stx 3 etx */ 24359243Sobrien _CTR, _CTR, _CTR, _CTR, 24459243Sobrien 24559243Sobrien/* 4 eot 5 enq 6 ack 7 bel */ 24659243Sobrien _CTR, _CTR, _CTR, _CTR, 24759243Sobrien 24859243Sobrien/* 8 bs 9 ht 10 nl 11 vt */ 24959243Sobrien _CTR, _CTR|_SP|_META, _CTR|_NL|_META, _CTR, 25059243Sobrien 25159243Sobrien/* 12 np 13 cr 14 so 15 si */ 25259243Sobrien _CTR, _CTR, _CTR, _CTR, 25359243Sobrien 25459243Sobrien/* 16 dle 17 dc1 18 dc2 19 dc3 */ 25559243Sobrien _CTR, _CTR, _CTR, _CTR, 25659243Sobrien 25759243Sobrien/* 20 dc4 21 nak 22 syn 23 etb */ 25859243Sobrien _CTR, _CTR, _CTR, _CTR, 25959243Sobrien 26059243Sobrien/* 24 can 25 em 26 sub 27 esc */ 26159243Sobrien _CTR, _CTR, _CTR, _CTR, 26259243Sobrien 26359243Sobrien/* 28 fs 29 gs 30 rs 31 us */ 26459243Sobrien _CTR, _CTR, _CTR, _CTR, 26559243Sobrien 26659243Sobrien/* 32 sp 33 ! 34 " 35 # */ 26759243Sobrien _SP|_META, _PUN, _QF|_PUN, _META|_PUN, 26859243Sobrien 26959243Sobrien/* 36 $ 37 % 38 & 39 ' */ 27059243Sobrien _DOL|_PUN, _PUN, _META|_CMD|_PUN,_QF|_PUN, 27159243Sobrien 27259243Sobrien/* 40 ( 41 ) 42 * 43 + */ 27359243Sobrien _META|_CMD|_PUN,_META|_PUN, _GLOB|_PUN, _PUN, 27459243Sobrien 27559243Sobrien/* 44 , 45 - 46 . 47 / */ 27659243Sobrien _PUN, _PUN, _PUN, _PUN, 27759243Sobrien 27859243Sobrien/* 48 0 49 1 50 2 51 3 */ 27959243Sobrien _DIG|_XD, _DIG|_XD, _DIG|_XD, _DIG|_XD, 28059243Sobrien 28159243Sobrien/* 52 4 53 5 54 6 55 7 */ 28259243Sobrien _DIG|_XD, _DIG|_XD, _DIG|_XD, _DIG|_XD, 28359243Sobrien 28459243Sobrien/* 56 8 57 9 58 : 59 ; */ 28559243Sobrien _DIG|_XD, _DIG|_XD, _PUN, _META|_CMD|_PUN, 28659243Sobrien 28759243Sobrien/* 60 < 61 = 62 > 63 ? */ 28859243Sobrien _META|_PUN, _PUN, _META|_PUN, _GLOB|_PUN, 28959243Sobrien 29059243Sobrien/* 64 @ 65 A 66 B 67 C */ 29159243Sobrien _PUN, _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP|_XD, 29259243Sobrien 29359243Sobrien/* 68 D 69 E 70 F 71 G */ 29459243Sobrien _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP, 29559243Sobrien 29659243Sobrien/* 72 H 73 I 74 J 75 K */ 29759243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 29859243Sobrien 29959243Sobrien/* 76 L 77 M 78 N 79 O */ 30059243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 30159243Sobrien 30259243Sobrien/* 80 P 81 Q 82 R 83 S */ 30359243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 30459243Sobrien 30559243Sobrien/* 84 T 85 U 86 V 87 W */ 30659243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 30759243Sobrien 30859243Sobrien/* 88 X 89 Y 90 Z 91 [ */ 30959243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _GLOB|_PUN, 31059243Sobrien 31159243Sobrien/* 92 \ 93 ] 94 ^ 95 _ */ 31259243Sobrien _ESC|_PUN, _PUN, _PUN, _PUN, 31359243Sobrien 31459243Sobrien/* 96 ` 97 a 98 b 99 c */ 31559243Sobrien _QB|_GLOB|_META|_PUN, _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW|_XD, 31659243Sobrien 31759243Sobrien/* 100 d 101 e 102 f 103 g */ 31859243Sobrien _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW, 31959243Sobrien 32059243Sobrien/* 104 h 105 i 106 j 107 k */ 32159243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 32259243Sobrien 32359243Sobrien/* 108 l 109 m 110 n 111 o */ 32459243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 32559243Sobrien 32659243Sobrien/* 112 p 113 q 114 r 115 s */ 32759243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 32859243Sobrien 32959243Sobrien/* 116 t 117 u 118 v 119 w */ 33059243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 33159243Sobrien 33259243Sobrien/* 120 x 121 y 122 z 123 { */ 33359243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _GLOB|_PUN, 33459243Sobrien 33559243Sobrien/* 124 | 125 } 126 ~ 127 del */ 33659243Sobrien _META|_CMD|_PUN,_PUN, _PUN, _CTR, 33759243Sobrien 33859243Sobrien/****************************************************************/ 33959243Sobrien/* 128 - 255 The below is supposedly ISO 8859/1 */ 34059243Sobrien/****************************************************************/ 34159243Sobrien/* 128 (undef) 129 (undef) 130 (undef) 131 (undef) */ 34259243Sobrien _CTR, _CTR, _CTR, _CTR, 34359243Sobrien 34459243Sobrien/* 132 (undef) 133 (undef) 134 (undef) 135 (undef) */ 34559243Sobrien _CTR, _CTR, _CTR, _CTR, 34659243Sobrien 34759243Sobrien/* 136 (undef) 137 (undef) 138 (undef) 139 (undef) */ 34859243Sobrien _CTR, _CTR, _CTR, _CTR, 34959243Sobrien 35059243Sobrien/* 140 (undef) 141 (undef) 142 (undef) 143 (undef) */ 35159243Sobrien _CTR, _CTR, _CTR, _CTR, 35259243Sobrien 35359243Sobrien/* 144 (undef) 145 (undef) 146 (undef) 147 (undef) */ 35459243Sobrien _CTR, _CTR, _CTR, _CTR, 35559243Sobrien 35659243Sobrien/* 148 (undef) 149 (undef) 150 (undef) 151 (undef) */ 35759243Sobrien _CTR, _CTR, _CTR, _CTR, 35859243Sobrien 35959243Sobrien/* 152 (undef) 153 (undef) 154 (undef) 155 (undef) */ 36059243Sobrien _CTR, _CTR, _CTR, _CTR, 36159243Sobrien 36259243Sobrien/* 156 (undef) 157 (undef) 158 (undef) 159 (undef) */ 36359243Sobrien _CTR, _CTR, _CTR, _CTR, 36459243Sobrien 36559243Sobrien/* 160 nobreakspace 161 exclamdown 162 cent 163 sterling */ 36659243Sobrien _PUN, /* XXX */ _PUN, _PUN, _PUN, 36759243Sobrien 36859243Sobrien/* 164 currency 165 yen 166 brokenbar 167 section */ 36959243Sobrien _PUN, _PUN, _PUN, _PUN, 37059243Sobrien 37159243Sobrien/* 168 diaeresis 169 copyright 170 ordfeminine 171 guillemotleft*/ 37259243Sobrien _PUN, _PUN, _PUN, _PUN, 37359243Sobrien 37459243Sobrien/* 172 notsign 173 hyphen 174 registered 175 macron */ 37559243Sobrien _PUN, _PUN, _PUN, _PUN, 37659243Sobrien 37759243Sobrien/* 176 degree 177 plusminus 178 twosuperior 179 threesuperior*/ 37859243Sobrien _PUN, _PUN, _PUN, _PUN, 37959243Sobrien 38059243Sobrien/* 180 acute 181 mu 182 paragraph 183 periodcentered*/ 38159243Sobrien _PUN, _PUN, /*XXX*/ _PUN, _PUN, 38259243Sobrien 38359243Sobrien/* 184 cedilla 185 onesuperior 186 masculine 187 guillemotright*/ 38459243Sobrien _PUN, _PUN, _PUN, _PUN, 38559243Sobrien 38659243Sobrien/* 188 onequarter 189 onehalf 190 threequarters 191 questiondown*/ 38759243Sobrien _PUN, _PUN, _PUN, _PUN, 38859243Sobrien 38959243Sobrien/* 192 Agrave 193 Aacute 194 Acircumflex 195 Atilde */ 39059243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 39159243Sobrien 39259243Sobrien/* 196 Adiaeresis 197 Aring 198 AE 199 Ccedilla */ 39359243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 39459243Sobrien 39559243Sobrien/* 200 Egrave 201 Eacute 202 Ecircumflex 203 Ediaeresis */ 39659243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 39759243Sobrien 39859243Sobrien/* 204 Igrave 205 Iacute 206 Icircumflex 207 Idiaeresis */ 39959243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 40059243Sobrien 40159243Sobrien/* 208 ETH 209 Ntilde 210 Ograve 211 Oacute */ 40259243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 40359243Sobrien 40459243Sobrien/* 212 Ocircumflex 213 Otilde 214 Odiaeresis 215 multiply */ 40559243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _PUN, 40659243Sobrien 40759243Sobrien/* 216 Ooblique 217 Ugrave 218 Uacute 219 Ucircumflex */ 40859243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 40959243Sobrien 41059243Sobrien/* 220 Udiaeresis 221 Yacute 222 THORN 223 ssharp */ 41159243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_DOW, 41259243Sobrien 41359243Sobrien/* 224 agrave 225 aacute 226 acircumflex 227 atilde */ 41459243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 41559243Sobrien 41659243Sobrien/* 228 adiaeresis 229 aring 230 ae 231 ccedilla */ 41759243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 41859243Sobrien 41959243Sobrien/* 232 egrave 233 eacute 234 ecircumflex 235 ediaeresis */ 42059243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 42159243Sobrien 42259243Sobrien/* 236 igrave 237 iacute 238 icircumflex 239 idiaeresis */ 42359243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 42459243Sobrien 42559243Sobrien/* 240 eth 241 ntilde 242 ograve 243 oacute */ 42659243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 42759243Sobrien 42859243Sobrien/* 244 ocircumflex 245 otilde 246 odiaeresis 247 division */ 42959243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _PUN, 43059243Sobrien 43159243Sobrien/* 248 oslash 249 ugrave 250 uacute 251 ucircumflex */ 43259243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 43359243Sobrien 43459243Sobrien/* 252 udiaeresis 253 yacute 254 thorn 255 ydiaeresis */ 43559243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 43659243Sobrien}; 43759243Sobrien 43859243Sobrien/* multi-byte table */ 43959243Sobrien/* BY Masaaki Koyanagi VERY THANKS */ 44059243Sobrienunsigned short _cmap_mbyte[256] = { 44159243Sobrien/* 0 nul 1 soh 2 stx 3 etx */ 44259243Sobrien _CTR, _CTR, _CTR, _CTR, 44359243Sobrien 44459243Sobrien/* 4 eot 5 enq 6 ack 7 bel */ 44559243Sobrien _CTR, _CTR, _CTR, _CTR, 44659243Sobrien 44759243Sobrien/* 8 bs 9 ht 10 nl 11 vt */ 44859243Sobrien _CTR, _CTR|_SP|_META, _CTR|_NL|_META, _CTR, 44959243Sobrien 45059243Sobrien/* 12 np 13 cr 14 so 15 si */ 45159243Sobrien _CTR, _CTR, _CTR, _CTR, 45259243Sobrien 45359243Sobrien/* 16 dle 17 dc1 18 dc2 19 dc3 */ 45459243Sobrien _CTR, _CTR, _CTR, _CTR, 45559243Sobrien 45659243Sobrien/* 20 dc4 21 nak 22 syn 23 etb */ 45759243Sobrien _CTR, _CTR, _CTR, _CTR, 45859243Sobrien 45959243Sobrien/* 24 can 25 em 26 sub 27 esc */ 46059243Sobrien _CTR, _CTR, _CTR, _CTR, 46159243Sobrien 46259243Sobrien/* 28 fs 29 gs 30 rs 31 us */ 46359243Sobrien _CTR, _CTR, _CTR, _CTR, 46459243Sobrien 46559243Sobrien/* 32 sp 33 ! 34 " 35 # */ 46659243Sobrien _SP|_META, _PUN, _QF|_PUN, _META|_PUN, 46759243Sobrien 46859243Sobrien/* 36 $ 37 % 38 & 39 ' */ 46959243Sobrien _DOL|_PUN, _PUN, _META|_CMD|_PUN,_QF|_PUN, 47059243Sobrien 47159243Sobrien/* 40 ( 41 ) 42 * 43 + */ 47259243Sobrien _META|_CMD|_PUN,_META|_PUN, _GLOB|_PUN, _PUN, 47359243Sobrien 47459243Sobrien/* 44 , 45 - 46 . 47 / */ 47559243Sobrien _PUN, _PUN, _PUN, _PUN, 47659243Sobrien 47759243Sobrien/* 48 0 49 1 50 2 51 3 */ 47859243Sobrien _DIG|_XD, _DIG|_XD, _DIG|_XD, _DIG|_XD, 47959243Sobrien 48059243Sobrien/* 52 4 53 5 54 6 55 7 */ 48159243Sobrien _DIG|_XD, _DIG|_XD, _DIG|_XD, _DIG|_XD, 48259243Sobrien 48359243Sobrien/* 56 8 57 9 58 : 59 ; */ 48459243Sobrien _DIG|_XD, _DIG|_XD, _PUN, _META|_CMD|_PUN, 48559243Sobrien 48659243Sobrien/* 60 < 61 = 62 > 63 ? */ 48759243Sobrien _META|_PUN, _PUN, _META|_PUN, _GLOB|_PUN, 48859243Sobrien 48959243Sobrien/* 64 @ 65 A 66 B 67 C */ 49059243Sobrien _PUN, _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP|_XD, 49159243Sobrien 49259243Sobrien/* 68 D 69 E 70 F 71 G */ 49359243Sobrien _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP|_XD, _LET|_UP, 49459243Sobrien 49559243Sobrien/* 72 H 73 I 74 J 75 K */ 49659243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 49759243Sobrien 49859243Sobrien/* 76 L 77 M 78 N 79 O */ 49959243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 50059243Sobrien 50159243Sobrien/* 80 P 81 Q 82 R 83 S */ 50259243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 50359243Sobrien 50459243Sobrien/* 84 T 85 U 86 V 87 W */ 50559243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 50659243Sobrien 50759243Sobrien/* 88 X 89 Y 90 Z 91 [ */ 50859243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _GLOB|_PUN, 50959243Sobrien 51059243Sobrien/* 92 \ 93 ] 94 ^ 95 _ */ 51159243Sobrien _ESC|_PUN, _PUN, _PUN, _PUN, 51259243Sobrien 51359243Sobrien/* 96 ` 97 a 98 b 99 c */ 51459243Sobrien _QB|_GLOB|_META|_PUN, _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW|_XD, 51559243Sobrien 51659243Sobrien/* 100 d 101 e 102 f 103 g */ 51759243Sobrien _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW|_XD, _LET|_DOW, 51859243Sobrien 51959243Sobrien/* 104 h 105 i 106 j 107 k */ 52059243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 52159243Sobrien 52259243Sobrien/* 108 l 109 m 110 n 111 o */ 52359243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 52459243Sobrien 52559243Sobrien/* 112 p 113 q 114 r 115 s */ 52659243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 52759243Sobrien 52859243Sobrien/* 116 t 117 u 118 v 119 w */ 52959243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 53059243Sobrien 53159243Sobrien/* 120 x 121 y 122 z 123 { */ 53259243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _GLOB|_PUN, 53359243Sobrien 53459243Sobrien/* 124 | 125 } 126 ~ 127 del */ 53559243Sobrien _META|_CMD|_PUN,_PUN, _PUN, _CTR, 53659243Sobrien 53759243Sobrien/****************************************************************/ 53859243Sobrien/* 128 - 255 The below is supposedly ISO 8859/1 */ 53959243Sobrien/****************************************************************/ 54059243Sobrien/* 128 (undef) 129 (undef) 130 (undef) 131 (undef) */ 54159243Sobrien _PUN, _PUN, _PUN, _PUN, 54259243Sobrien 54359243Sobrien/* 132 (undef) 133 (undef) 134 (undef) 135 (undef) */ 54459243Sobrien _PUN, _PUN, _PUN, _PUN, 54559243Sobrien 54659243Sobrien/* 136 (undef) 137 (undef) 138 (undef) 139 (undef) */ 54759243Sobrien _PUN, _PUN, _PUN, _PUN, 54859243Sobrien 54959243Sobrien/* 140 (undef) 141 (undef) 142 (undef) 143 (undef) */ 55059243Sobrien _PUN, _PUN, _PUN, _PUN, 55159243Sobrien 55259243Sobrien/* 144 (undef) 145 (undef) 146 (undef) 147 (undef) */ 55359243Sobrien _PUN, _PUN, _PUN, _PUN, 55459243Sobrien 55559243Sobrien/* 148 (undef) 149 (undef) 150 (undef) 151 (undef) */ 55659243Sobrien _PUN, _PUN, _PUN, _PUN, 55759243Sobrien 55859243Sobrien/* 152 (undef) 153 (undef) 154 (undef) 155 (undef) */ 55959243Sobrien _PUN, _PUN, _PUN, _PUN, 56059243Sobrien 56159243Sobrien/* 156 (undef) 157 (undef) 158 (undef) 159 (undef) */ 56259243Sobrien _PUN, _PUN, _PUN, _PUN, 56359243Sobrien 56459243Sobrien/* 160 nobreakspace 161 exclamdown 162 cent 163 sterling */ 56559243Sobrien _PUN, /* XXX */ _PUN, _PUN, _PUN, 56659243Sobrien 56759243Sobrien/* 164 currency 165 yen 166 brokenbar 167 section */ 56859243Sobrien _PUN, _PUN, _PUN, _PUN, 56959243Sobrien 57059243Sobrien/* 168 diaeresis 169 copyright 170 ordfeminine 171 guillemotleft*/ 57159243Sobrien _PUN, _PUN, _PUN, _PUN, 57259243Sobrien 57359243Sobrien/* 172 notsign 173 hyphen 174 registered 175 macron */ 57459243Sobrien _PUN, _PUN, _PUN, _PUN, 57559243Sobrien 57659243Sobrien/* 176 degree 177 plusminus 178 twosuperior 179 threesuperior*/ 57759243Sobrien _PUN, _PUN, _PUN, _PUN, 57859243Sobrien 57959243Sobrien/* 180 acute 181 mu 182 paragraph 183 periodcentered*/ 58059243Sobrien _PUN, _PUN, /*XXX*/ _PUN, _PUN, 58159243Sobrien 58259243Sobrien/* 184 cedilla 185 onesuperior 186 masculine 187 guillemotright*/ 58359243Sobrien _PUN, _PUN, _PUN, _PUN, 58459243Sobrien 58559243Sobrien/* 188 onequarter 189 onehalf 190 threequarters 191 questiondown*/ 58659243Sobrien _PUN, _PUN, _PUN, _PUN, 58759243Sobrien 58859243Sobrien/* 192 Agrave 193 Aacute 194 Acircumflex 195 Atilde */ 58959243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 59059243Sobrien 59159243Sobrien/* 196 Adiaeresis 197 Aring 198 AE 199 Ccedilla */ 59259243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 59359243Sobrien 59459243Sobrien/* 200 Egrave 201 Eacute 202 Ecircumflex 203 Ediaeresis */ 59559243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 59659243Sobrien 59759243Sobrien/* 204 Igrave 205 Iacute 206 Icircumflex 207 Idiaeresis */ 59859243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 59959243Sobrien 60059243Sobrien/* 208 ETH 209 Ntilde 210 Ograve 211 Oacute */ 60159243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 60259243Sobrien 60359243Sobrien/* 212 Ocircumflex 213 Otilde 214 Odiaeresis 215 multiply */ 60459243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _PUN, 60559243Sobrien 60659243Sobrien/* 216 Ooblique 217 Ugrave 218 Uacute 219 Ucircumflex */ 60759243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_UP, 60859243Sobrien 60959243Sobrien/* 220 Udiaeresis 221 Yacute 222 THORN 223 ssharp */ 61059243Sobrien _LET|_UP, _LET|_UP, _LET|_UP, _LET|_DOW, 61159243Sobrien 61259243Sobrien/* 224 agrave 225 aacute 226 acircumflex 227 atilde */ 61359243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 61459243Sobrien 61559243Sobrien/* 228 adiaeresis 229 aring 230 ae 231 ccedilla */ 61659243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 61759243Sobrien 61859243Sobrien/* 232 egrave 233 eacute 234 ecircumflex 235 ediaeresis */ 61959243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 62059243Sobrien 62159243Sobrien/* 236 igrave 237 iacute 238 icircumflex 239 idiaeresis */ 62259243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 62359243Sobrien 62459243Sobrien/* 240 eth 241 ntilde 242 ograve 243 oacute */ 62559243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 62659243Sobrien 62759243Sobrien/* 244 ocircumflex 245 otilde 246 odiaeresis 247 division */ 62859243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _PUN, 62959243Sobrien 63059243Sobrien/* 248 oslash 249 ugrave 250 uacute 251 ucircumflex */ 63159243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 63259243Sobrien 63359243Sobrien/* 252 udiaeresis 253 yacute 254 thorn 255 ydiaeresis */ 63459243Sobrien _LET|_DOW, _LET|_DOW, _LET|_DOW, _LET|_DOW, 63559243Sobrien}; 63659243Sobrien 63759243Sobrienshort _enable_mbdisp = 0; /* control multi-byte 0...disable 1...enable */ 63859243Sobrien 63959243Sobrien/* multi-byte check table */ 64059243Sobrien/* default = all 0 (clear process in update_vars()/unset()) */ 64159243Sobrienunsigned short _mbmap[256]; 64259243Sobrien 64359243Sobrienunsigned short _mbmap_euc[256] = { 64459243Sobrien/* first byte 0x8e,0xa0 - 0xf4 */ 64559243Sobrien/* second byte 0xa0 - 0xfe */ 64659243Sobrien/* 0 - 7f all 0 */ 64759243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 64859243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 64959243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 65059243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 65159243Sobrien/* 80 81 82 83 */ 65259243Sobrien 0, 0, 0, 0, 65359243Sobrien/* 84 85 86 87 */ 65459243Sobrien 0, 0, 0, 0, 65559243Sobrien/* 88 89 8a 8b */ 65659243Sobrien 0, 0, 0, 0, 65759243Sobrien/* 8c 8d 8e 8f */ 65859243Sobrien 0, 0, _MB1, 0, 65959243Sobrien/* 90 - 9f all 0 */ 66059243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 66159243Sobrien/* a0 a1 a2 a3 */ 66259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 66359243Sobrien/* a4 a5 a6 a7 */ 66459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 66559243Sobrien/* a8 a9 aa ab */ 66659243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 66759243Sobrien/* ac ad ae af */ 66859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 66959243Sobrien/* b0 b1 b2 b3 */ 67059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 67159243Sobrien/* b4 b5 b6 b7 */ 67259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 67359243Sobrien/* b8 b9 ba bb */ 67459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 67559243Sobrien/* bc bd be bf */ 67659243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 67759243Sobrien/* c0 c1 c2 c3 */ 67859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 67959243Sobrien/* c4 c5 c6 c7 */ 68059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 68159243Sobrien/* c8 c9 ca cb */ 68259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 68359243Sobrien/* cc cd ce cf */ 68459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 68559243Sobrien/* d0 d1 d2 d3 */ 68659243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 68759243Sobrien/* d4 d5 d6 d7 */ 68859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 68959243Sobrien/* d8 d9 da db */ 69059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 69159243Sobrien/* dc dd de df */ 69259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 69359243Sobrien/* e0 e1 e2 e3 */ 69459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 69559243Sobrien/* e4 e5 e6 e7 */ 69659243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 69759243Sobrien/* e8 e9 ea eb */ 69859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 69959243Sobrien/* ec ed ee ef */ 70059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 70159243Sobrien/* f0 f1 f2 f3 */ 70259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 70359243Sobrien/* f4 f5 f6 f7 */ 70459243Sobrien _MB1|_MB2, _MB2, _MB2, _MB2, 70559243Sobrien/* f8 f9 fa fb */ 70659243Sobrien _MB2, _MB2, _MB2, _MB2, 70759243Sobrien/* fc fd fe ff */ 70859243Sobrien _MB2, _MB2, _MB2, 0, 70959243Sobrien}; 71059243Sobrien 71159243Sobrienunsigned short _mbmap_sjis[256] = { 71259243Sobrien/* first byte 0x81-0x9f,0xe0 - 0xfc */ 71359243Sobrien/* second byte 0x40-0x7e,0x80 - 0xfc */ 71459243Sobrien/* 0 - 3f all 0 */ 71559243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 71659243Sobrien 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 71759243Sobrien/* 40 41 42 43 */ 71859243Sobrien _MB2, _MB2, _MB2, _MB2, 71959243Sobrien/* 44 45 46 47 */ 72059243Sobrien _MB2, _MB2, _MB2, _MB2, 72159243Sobrien/* 48 49 4a 4b */ 72259243Sobrien _MB2, _MB2, _MB2, _MB2, 72359243Sobrien/* 4c 4d 4e 4f */ 72459243Sobrien _MB2, _MB2, _MB2, _MB2, 72559243Sobrien/* 50 51 52 53 */ 72659243Sobrien _MB2, _MB2, _MB2, _MB2, 72759243Sobrien/* 54 55 56 57 */ 72859243Sobrien _MB2, _MB2, _MB2, _MB2, 72959243Sobrien/* 58 59 5a 5b */ 73059243Sobrien _MB2, _MB2, _MB2, _MB2, 73159243Sobrien/* 5c 5d 5e 5f */ 73259243Sobrien _MB2, _MB2, _MB2, _MB2, 73359243Sobrien/* 60 61 62 63 */ 73459243Sobrien _MB2, _MB2, _MB2, _MB2, 73559243Sobrien/* 64 65 66 67 */ 73659243Sobrien _MB2, _MB2, _MB2, _MB2, 73759243Sobrien/* 68 69 6a 6b */ 73859243Sobrien _MB2, _MB2, _MB2, _MB2, 73959243Sobrien/* 6c 6d 6e 6f */ 74059243Sobrien _MB2, _MB2, _MB2, _MB2, 74159243Sobrien/* 70 71 72 73 */ 74259243Sobrien _MB2, _MB2, _MB2, _MB2, 74359243Sobrien/* 74 75 76 77 */ 74459243Sobrien _MB2, _MB2, _MB2, _MB2, 74559243Sobrien/* 78 79 7a 7b */ 74659243Sobrien _MB2, _MB2, _MB2, _MB2, 74759243Sobrien/* 7c 7d 7e 7f */ 74859243Sobrien _MB2, _MB2, _MB2, 0, 74959243Sobrien/* 80 81 82 83 */ 75059243Sobrien _MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 75159243Sobrien/* 84 85 86 87 */ 75259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 75359243Sobrien/* 88 89 8a 8b */ 75459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 75559243Sobrien/* 8c 8d 8e 8f */ 75659243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 75759243Sobrien/* 90 91 92 93 */ 75859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 75959243Sobrien/* 94 95 96 97 */ 76059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 76159243Sobrien/* 98 99 9a 9b */ 76259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 76359243Sobrien/* 9c 9d 9e 9f */ 76459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 76559243Sobrien/* a0 a1 a2 a3 */ 76659243Sobrien _MB2, _MB2, _MB2, _MB2, 76759243Sobrien/* a4 a5 a6 a7 */ 76859243Sobrien _MB2, _MB2, _MB2, _MB2, 76959243Sobrien/* a8 a9 aa ab */ 77059243Sobrien _MB2, _MB2, _MB2, _MB2, 77159243Sobrien/* ac ad ae af */ 77259243Sobrien _MB2, _MB2, _MB2, _MB2, 77359243Sobrien/* b0 b1 b2 b3 */ 77459243Sobrien _MB2, _MB2, _MB2, _MB2, 77559243Sobrien/* b4 b5 b6 b7 */ 77659243Sobrien _MB2, _MB2, _MB2, _MB2, 77759243Sobrien/* b8 b9 ba bb */ 77859243Sobrien _MB2, _MB2, _MB2, _MB2, 77959243Sobrien/* bc bd be bf */ 78059243Sobrien _MB2, _MB2, _MB2, _MB2, 78159243Sobrien/* c0 c1 c2 c3 */ 78259243Sobrien _MB2, _MB2, _MB2, _MB2, 78359243Sobrien/* c4 c5 c6 c7 */ 78459243Sobrien _MB2, _MB2, _MB2, _MB2, 78559243Sobrien/* c8 c9 ca cb */ 78659243Sobrien _MB2, _MB2, _MB2, _MB2, 78759243Sobrien/* cc cd ce cf */ 78859243Sobrien _MB2, _MB2, _MB2, _MB2, 78959243Sobrien/* d0 d1 d2 d3 */ 79059243Sobrien _MB2, _MB2, _MB2, _MB2, 79159243Sobrien/* d4 d5 d6 d7 */ 79259243Sobrien _MB2, _MB2, _MB2, _MB2, 79359243Sobrien/* d8 d9 da db */ 79459243Sobrien _MB2, _MB2, _MB2, _MB2, 79559243Sobrien/* dc dd de df */ 79659243Sobrien _MB2, _MB2, _MB2, _MB2, 79759243Sobrien/* e0 e1 e2 e3 */ 79859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 79959243Sobrien/* e4 e5 e6 e7 */ 80059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 80159243Sobrien/* e8 e9 ea eb */ 80259243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 80359243Sobrien/* ec ed ee ef */ 80459243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 80559243Sobrien/* f0 f1 f2 f3 */ 80659243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 80759243Sobrien/* f4 f5 f6 f7 */ 80859243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 80959243Sobrien/* f8 f9 fa fb */ 81059243Sobrien _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 81159243Sobrien/* fc fd fe ff */ 81259243Sobrien _MB1|_MB2, 0, 0, 0, 81359243Sobrien}; 81459243Sobrien 81583098Smpunsigned short _mbmap_big5[256] = { 81683098Smp/* This is latest big5 charmap, so called "Big5+" */ 81783098Smp/* first byte 0x81 - 0xfe */ 81883098Smp/* second byte 0x40 - 0x7e, 0x80 - 0xfe */ 81983098Smp/* 0x00 - 0x3f = 0 */ 82083098Smp 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 82183098Smp 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 82283098Smp/* 0x40 - 0x7e = 2 */ 82383098Smp _MB2, _MB2, _MB2, _MB2, 82483098Smp _MB2, _MB2, _MB2, _MB2, 82583098Smp _MB2, _MB2, _MB2, _MB2, 82683098Smp _MB2, _MB2, _MB2, _MB2, 82783098Smp _MB2, _MB2, _MB2, _MB2, 82883098Smp _MB2, _MB2, _MB2, _MB2, 82983098Smp _MB2, _MB2, _MB2, _MB2, 83083098Smp _MB2, _MB2, _MB2, _MB2, 83183098Smp _MB2, _MB2, _MB2, _MB2, 83283098Smp _MB2, _MB2, _MB2, _MB2, 83383098Smp _MB2, _MB2, _MB2, _MB2, 83483098Smp _MB2, _MB2, _MB2, _MB2, 83583098Smp _MB2, _MB2, _MB2, _MB2, 83683098Smp _MB2, _MB2, _MB2, _MB2, 83783098Smp _MB2, _MB2, _MB2, _MB2, 83883098Smp /* 0x7f = 0 */ 83983098Smp _MB2, _MB2, _MB2, 0, 84083098Smp/* 0x80 = 2, 0x81 - 0xfe = 3 */ 84183098Smp _MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84283098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84383098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84483098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84583098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84683098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84783098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84883098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 84983098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85083098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85183098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85283098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85383098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85483098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85583098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85683098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85783098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85883098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 85983098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86083098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86183098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86283098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86383098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86483098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86583098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86683098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86783098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86883098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 86983098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 87083098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 87183098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 87283098Smp /* 0xff = 0 */ 87383098Smp _MB1|_MB2, _MB1|_MB2, _MB1|_MB2, 0, 87483098Smp}; 87583098Smp 876100616Smpunsigned short _mbmap_utf8[256] = { 877100616Smp/* utf8 uses up to 6 bytes */ 878100616Smp/* first byte 0xc0 - 0xfd */ 879100616Smp/* any further bytes 0x80 - 0xbf */ 880100616Smp/* 0 - 7f all 0 */ 881100616Smp 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 882100616Smp 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 883100616Smp 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 884100616Smp 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 885100616Smp/* 80 - bf : all _MB2 */ 886100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 887100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 888100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 889100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 890100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 891100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 892100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 893100616Smp _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, 894100616Smp/* c0 - fc : all _MB1 */ 895100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 896100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 897100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 898100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 899100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 900100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 901100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 902100616Smp/* f8 f9 fa fb fc fd fe ff*/ 903100616Smp _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 0, 0 904100616Smp}; 90559243Sobrien#endif /* defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE) */ 90659243Sobrien 90759243Sobrien#ifndef NLS 90859243Sobrien/* _cmap_lower, _cmap_upper for ISO 8859/1 */ 90959243Sobrien 91059243Sobrienunsigned char _cmap_lower[256] = { 91159243Sobrien 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 91259243Sobrien 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, 91359243Sobrien 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, 91459243Sobrien 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, 91559243Sobrien 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, 91659243Sobrien 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, 91759243Sobrien 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, 91859243Sobrien 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, 91959243Sobrien 0100, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 92059243Sobrien 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 92159243Sobrien 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 92259243Sobrien 0170, 0171, 0172, 0133, 0134, 0135, 0136, 0137, 92359243Sobrien 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147, 92459243Sobrien 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157, 92559243Sobrien 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167, 92659243Sobrien 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177, 92759243Sobrien 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, 92859243Sobrien 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, 92959243Sobrien 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, 93059243Sobrien 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, 93159243Sobrien 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, 93259243Sobrien 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, 93359243Sobrien 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, 93459243Sobrien 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, 93559243Sobrien 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, 93659243Sobrien 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, 93759243Sobrien 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0327, 93859243Sobrien 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0337, 93959243Sobrien 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347, 94059243Sobrien 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357, 94159243Sobrien 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367, 94259243Sobrien 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377, 94359243Sobrien}; 94459243Sobrien 94559243Sobrienunsigned char _cmap_upper[256] = { 94659243Sobrien 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 94759243Sobrien 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017, 94859243Sobrien 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027, 94959243Sobrien 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037, 95059243Sobrien 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047, 95159243Sobrien 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057, 95259243Sobrien 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067, 95359243Sobrien 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077, 95459243Sobrien 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 95559243Sobrien 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 95659243Sobrien 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 95759243Sobrien 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137, 95859243Sobrien 0140, 0101, 0102, 0103, 0104, 0105, 0106, 0107, 95959243Sobrien 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117, 96059243Sobrien 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127, 96159243Sobrien 0130, 0131, 0132, 0173, 0174, 0175, 0176, 0177, 96259243Sobrien 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207, 96359243Sobrien 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217, 96459243Sobrien 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227, 96559243Sobrien 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237, 96659243Sobrien 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247, 96759243Sobrien 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257, 96859243Sobrien 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267, 96959243Sobrien 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277, 97059243Sobrien 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, 97159243Sobrien 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, 97259243Sobrien 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327, 97359243Sobrien 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337, 97459243Sobrien 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307, 97559243Sobrien 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317, 97659243Sobrien 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0367, 97759243Sobrien 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0377, 97859243Sobrien}; 97959243Sobrien#endif /* NLS */ 98059243Sobrien 98159243Sobrien#ifdef _OSD_POSIX 98259243Sobrien/* 98359243Sobrien Initial Port for tcsh-6.07.04 by <Martin.Kraemer@Mch.SNI.De> 98459243Sobrien 98559243Sobrien"BS2000 OSD" is a POSIX on a main frame. 98659243SobrienIt is made by Siemens Nixdorf AG, Germany. 98759243SobrienWithin the POSIX subsystem, the same character set was chosen as in 98859243Sobrien"native BS2000", namely EBCDIC. Yes, tcsh now runs on EBCDIC platforms, too. 98959243Sobrien 99059243SobrienEBCDIC Table. (Yes, in EBCDIC, the letters 'a'..'z' are not contiguous!) 99159243SobrienThis table is bijective, i.e. there are no ambigous or duplicate characters 99259243Sobrien00 00 01 02 03 85 09 86 7f 87 8d 8e 0b 0c 0d 0e 0f * ................ * 99359243Sobrien10 10 11 12 13 8f 0a 08 97 18 19 9c 9d 1c 1d 1e 1f * ................ * 99459243Sobrien20 80 81 82 83 84 92 17 1b 88 89 8a 8b 8c 05 06 07 * ................ * 99559243Sobrien30 90 91 16 93 94 95 96 04 98 99 9a 9b 14 15 9e 1a * ................ * 99659243Sobrien40 20 a0 e2 e4 e0 e1 e3 e5 e7 f1 60 2e 3c 28 2b 7c * .........`.<(+| * 99759243Sobrien50 26 e9 ea eb e8 ed ee ef ec df 21 24 2a 29 3b 9f * &.........!$*);. * 99859243Sobrien60 2d 2f c2 c4 c0 c1 c3 c5 c7 d1 5e 2c 25 5f 3e 3f * -/........^,%_>? * 99959243Sobrien70 f8 c9 ca cb c8 cd ce cf cc a8 3a 23 40 27 3d 22 * ..........:#@'=" * 100059243Sobrien80 d8 61 62 63 64 65 66 67 68 69 ab bb f0 fd fe b1 * .abcdefghi...... * 100159243Sobrien90 b0 6a 6b 6c 6d 6e 6f 70 71 72 aa ba e6 b8 c6 a4 * .jklmnopqr...... * 100259243Sobriena0 b5 af 73 74 75 76 77 78 79 7a a1 bf d0 dd de ae * ..stuvwxyz...... * 100359243Sobrienb0 a2 a3 a5 b7 a9 a7 b6 bc bd be ac 5b 5c 5d b4 d7 * ...........[\].. * 100459243Sobrienc0 f9 41 42 43 44 45 46 47 48 49 ad f4 f6 f2 f3 f5 * .ABCDEFGHI...... * 100559243Sobriend0 a6 4a 4b 4c 4d 4e 4f 50 51 52 b9 fb fc db fa ff * .JKLMNOPQR...... * 100659243Sobriene0 d9 f7 53 54 55 56 57 58 59 5a b2 d4 d6 d2 d3 d5 * ..STUVWXYZ...... * 100759243Sobrienf0 30 31 32 33 34 35 36 37 38 39 b3 7b dc 7d da 7e * 0123456789.{.}.~ * 100859243Sobrien*/ 100959243Sobrienunsigned short _toascii[256] = { 101059243Sobrien/*00*/ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, 101159243Sobrien 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */ 101259243Sobrien/*10*/ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97, 101359243Sobrien 0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */ 101459243Sobrien/*20*/ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b, 101559243Sobrien 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */ 101659243Sobrien/*30*/ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 101759243Sobrien 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */ 101859243Sobrien/*40*/ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, 101959243Sobrien 0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+| */ 102059243Sobrien/*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, 102159243Sobrien 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /* &.........!$*);. */ 102259243Sobrien/*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, 102359243Sobrien 0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/........^,%_>? */ 102459243Sobrien/*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 102559243Sobrien 0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* ..........:#@'=" */ 102659243Sobrien/*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 102759243Sobrien 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */ 102859243Sobrien/*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 102959243Sobrien 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */ 103059243Sobrien/*a0*/ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 103159243Sobrien 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /* ..stuvwxyz...... */ 103259243Sobrien/*b0*/ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, 103359243Sobrien 0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /* ...........[\].. */ 103459243Sobrien/*c0*/ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 103559243Sobrien 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* .ABCDEFGHI...... */ 103659243Sobrien/*d0*/ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 103759243Sobrien 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /* .JKLMNOPQR...... */ 103859243Sobrien/*e0*/ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 103959243Sobrien 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* ..STUVWXYZ...... */ 104059243Sobrien/*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 104159243Sobrien 0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e /* 0123456789.{.}.~ */ 104259243Sobrien}; 104359243Sobrien/* The same, for ascii-in-ebcdic 104459243Sobrien00 00 01 02 03 37 2d 2e 2f 16 05 15 0b 0c 0d 0e 0f * ................ * 104559243Sobrien10 10 11 12 13 3c 3d 32 26 18 19 3f 27 1c 1d 1e 1f * ................ * 104659243Sobrien20 40 5a 7f 7b 5b 6c 50 7d 4d 5d 5c 4e 6b 60 4b 61 * !"#$%&'()*+,-./ * 104759243Sobrien30 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 7a 5e 4c 7e 6e 6f * 0123456789:;<=>? * 104859243Sobrien40 7c c1 c2 c3 c4 c5 c6 c7 c8 c9 d1 d2 d3 d4 d5 d6 * @ABCDEFGHIJKLMNO * 104959243Sobrien50 d7 d8 d9 e2 e3 e4 e5 e6 e7 e8 e9 bb bc bd 6a 6d * PQRSTUVWXYZ[\]^_ * 105059243Sobrien60 4a 81 82 83 84 85 86 87 88 89 91 92 93 94 95 96 * `abcdefghijklmno * 105159243Sobrien70 97 98 99 a2 a3 a4 a5 a6 a7 a8 a9 fb 4f fd ff 07 * pqrstuvwxyz{|}~. * 105259243Sobrien80 20 21 22 23 24 04 06 08 28 29 2a 2b 2c 09 0a 14 * ................ * 105359243Sobrien90 30 31 25 33 34 35 36 17 38 39 3a 3b 1a 1b 3e 5f * ................ * 105459243Sobriena0 41 aa b0 b1 9f b2 d0 b5 79 b4 9a 8a ba ca af a1 * ................ * 105559243Sobrienb0 90 8f ea fa be a0 b6 b3 9d da 9b 8b b7 b8 b9 ab * ................ * 105659243Sobrienc0 64 65 62 66 63 67 9e 68 74 71 72 73 78 75 76 77 * ................ * 105759243Sobriend0 ac 69 ed ee eb ef ec bf 80 e0 fe dd fc ad ae 59 * ................ * 105859243Sobriene0 44 45 42 46 43 47 9c 48 54 51 52 53 58 55 56 57 * ................ * 105959243Sobrienf0 8c 49 cd ce cb cf cc e1 70 c0 de db dc 8d 8e df * ................ * 106059243Sobrien*/ 106159243Sobrienunsigned short _toebcdic[256] = { 106259243Sobrien/*00*/ 0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 106359243Sobrien 0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */ 106459243Sobrien/*10*/ 0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 106559243Sobrien 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */ 106659243Sobrien/*20*/ 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, 106759243Sobrien 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, /* !"#$%&'()*+,-./ */ 106859243Sobrien/*30*/ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 106959243Sobrien 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, /* 0123456789:;<=>? */ 107059243Sobrien/*40*/ 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 107159243Sobrien 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, /* @ABCDEFGHIJKLMNO */ 107259243Sobrien/*50*/ 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 107359243Sobrien 0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d, /* PQRSTUVWXYZ[\]^_ */ 107459243Sobrien/*60*/ 0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 107559243Sobrien 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, /* `abcdefghijklmno */ 107659243Sobrien/*70*/ 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 107759243Sobrien 0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07, /* pqrstuvwxyz{|}~. */ 107859243Sobrien/*80*/ 0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08, 107959243Sobrien 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14, /* ................ */ 108059243Sobrien/*90*/ 0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17, 108159243Sobrien 0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0x5f, /* ................ */ 108259243Sobrien/*a0*/ 0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5, 108359243Sobrien 0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1, /* ................ */ 108459243Sobrien/*b0*/ 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, 108559243Sobrien 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, /* ................ */ 108659243Sobrien/*c0*/ 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, 108759243Sobrien 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, /* ................ */ 108859243Sobrien/*d0*/ 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, 108959243Sobrien 0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59, /* ................ */ 109059243Sobrien/*e0*/ 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, 109159243Sobrien 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, /* ................ */ 109259243Sobrien/*f0*/ 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, 109359243Sobrien 0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf /* ................ */ 109459243Sobrien}; 109559243Sobrien 109659243Sobrien#endif /*_OSD_POSIX*/ 109769408Sache 109869408Sache#ifdef __MVS__ 109969408Sache/* 110069408Sache The IBM 1047 coded char set to/from ISO 8859-1 mapping differs from 110169408Sache the POSIX-BC mapping in several places 110269408Sache */ 110369408Sacheunsigned short _toascii[256] = { 110469408Sache 0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f, 110569408Sache 0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 110669408Sache 0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87, 110769408Sache 0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f, 110869408Sache 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b, 110969408Sache 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, 111069408Sache 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04, 111169408Sache 0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, 111269408Sache 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5, 111369408Sache 0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, 111469408Sache 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef, 111569408Sache 0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e, 111669408Sache 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5, 111769408Sache 0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, 111869408Sache 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf, 111969408Sache 0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, 112069408Sache 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 112169408Sache 0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, 112269408Sache 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 112369408Sache 0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, 112469408Sache 0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 112569408Sache 0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae, 112669408Sache 0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc, 112769408Sache 0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7, 112869408Sache 0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 112969408Sache 0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, 113069408Sache 0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 113169408Sache 0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff, 113269408Sache 0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 113369408Sache 0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, 113469408Sache 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 113569408Sache 0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f, 113669408Sache}; 113769408Sacheunsigned short _toebcdic[256] = { 113869408Sache 0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f, 113969408Sache 0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 114069408Sache 0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26, 114169408Sache 0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f, 114269408Sache 0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d, 114369408Sache 0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61, 114469408Sache 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 114569408Sache 0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f, 114669408Sache 0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 114769408Sache 0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 114869408Sache 0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 114969408Sache 0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d, 115069408Sache 0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 115169408Sache 0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 115269408Sache 0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 115369408Sache 0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07, 115469408Sache 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17, 115569408Sache 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b, 115669408Sache 0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08, 115769408Sache 0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff, 115869408Sache 0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5, 115969408Sache 0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc, 116069408Sache 0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3, 116169408Sache 0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab, 116269408Sache 0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68, 116369408Sache 0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77, 116469408Sache 0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf, 116569408Sache 0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59, 116669408Sache 0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48, 116769408Sache 0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57, 116869408Sache 0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1, 116969408Sache 0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf 117069408Sache}; 117169408Sache#endif /*__MVS__*/ 1172