s3: Add some debugs to streams_xattr
[ira/wip.git] / source3 / modules / CP437.c
1 /* 
2  * Conversion table for CP437 charset also known as IBM437
3  *
4  * Copyright (C) Alexander Bokovoy              2003
5  *
6  * Conversion tables are generated using GNU libc 2.2.5's 
7  * localedata/charmaps/IBM437 table and source/script/gen-8bit-gap.sh script
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 3 of the License, or
12  * (at your option) any later version.
13  *  
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *  
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, see <http://www.gnu.org/licenses/>.
21  */
22
23 #include "includes.h"
24
25 static const uint16 to_ucs2[256] = {
26  0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
27  0x0008, 0x0009, 0x000A, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F,
28  0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017,
29  0x0018, 0x0019, 0x001A, 0x001B, 0x001C, 0x001D, 0x001E, 0x001F,
30  0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x0027,
31  0x0028, 0x0029, 0x002A, 0x002B, 0x002C, 0x002D, 0x002E, 0x002F,
32  0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037,
33  0x0038, 0x0039, 0x003A, 0x003B, 0x003C, 0x003D, 0x003E, 0x003F,
34  0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
35  0x0048, 0x0049, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F,
36  0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
37  0x0058, 0x0059, 0x005A, 0x005B, 0x005C, 0x005D, 0x005E, 0x005F,
38  0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067,
39  0x0068, 0x0069, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F,
40  0x0070, 0x0071, 0x0072, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077,
41  0x0078, 0x0079, 0x007A, 0x007B, 0x007C, 0x007D, 0x007E, 0x007F,
42  0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
43  0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
44  0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
45  0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192,
46  0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
47  0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
48  0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
49  0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
50  0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
51  0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
52  0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
53  0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
54  0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
55  0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
56  0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
57  0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0,
58 };
59
60 static const struct charset_gap_table from_idx[] = {
61   { 0x0000, 0x007f,     0 },
62   { 0x00a0, 0x00c9,   -32 },
63   { 0x00d1, 0x00ff,   -39 },
64   { 0x0192, 0x0192,  -185 },
65   { 0x0393, 0x0398,  -697 },
66   { 0x03a3, 0x03a9,  -707 },
67   { 0x03b1, 0x03b5,  -714 },
68   { 0x03c0, 0x03c6,  -724 },
69   { 0x207f, 0x207f, -8076 },
70   { 0x20a7, 0x20a7, -8115 },
71   { 0x2219, 0x221e, -8484 },
72   { 0x2229, 0x2229, -8494 },
73   { 0x2248, 0x2248, -8524 },
74   { 0x2261, 0x2265, -8548 },
75   { 0x2310, 0x2310, -8718 },
76   { 0x2320, 0x2321, -8733 },
77   { 0x2500, 0x2502, -9211 },
78   { 0x250c, 0x251c, -9220 },
79   { 0x2524, 0x2524, -9227 },
80   { 0x252c, 0x252c, -9234 },
81   { 0x2534, 0x2534, -9241 },
82   { 0x253c, 0x253c, -9248 },
83   { 0x2550, 0x256c, -9267 },
84   { 0x2580, 0x2593, -9286 },
85   { 0x25a0, 0x25a0, -9298 },
86   { 0xffff, 0xffff,     0 }
87 };
88
89 static const unsigned char from_ucs2[] = {
90
91   0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
92   0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
93   0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
94   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
95   0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
96   0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
97   0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
98   0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
99   0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
100   0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
101   0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
102   0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
103   0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
104   0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
105   0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
106   0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
107   0xff, 0xad, 0x9b, 0x9c, 0x00, 0x9d, 0x00, 0x00,
108   0x00, 0x00, 0xa6, 0xae, 0xaa, 0x00, 0x00, 0x00,
109   0xf8, 0xf1, 0xfd, 0x00, 0x00, 0xe6, 0x00, 0xfa,
110   0x00, 0x00, 0xa7, 0xaf, 0xac, 0xab, 0x00, 0xa8,
111   0x00, 0x00, 0x00, 0x00, 0x8e, 0x8f, 0x92, 0x80,
112   0x00, 0x90, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x99,
113   0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00,
114   0xe1, 0x85, 0xa0, 0x83, 0x00, 0x84, 0x86, 0x91,
115   0x87, 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c,
116   0x8b, 0x00, 0xa4, 0x95, 0xa2, 0x93, 0x00, 0x94,
117   0xf6, 0x00, 0x97, 0xa3, 0x96, 0x81, 0x00, 0x00,
118   0x98, 0x9f, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe9,
119   0xe4, 0x00, 0x00, 0xe8, 0x00, 0x00, 0xea, 0xe0,
120   0x00, 0x00, 0xeb, 0xee, 0xe3, 0x00, 0x00, 0xe5,
121   0xe7, 0x00, 0xed, 0xfc, 0x9e, 0xf9, 0xfb, 0x00,
122   0x00, 0x00, 0xec, 0xef, 0xf7, 0xf0, 0x00, 0x00,
123   0xf3, 0xf2, 0xa9, 0xf4, 0xf5, 0xc4, 0x00, 0xb3,
124   0xda, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00,
125   0xc0, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00,
126   0xc3, 0xb4, 0xc2, 0xc1, 0xc5, 0xcd, 0xba, 0xd5,
127   0xd6, 0xc9, 0xb8, 0xb7, 0xbb, 0xd4, 0xd3, 0xc8,
128   0xbe, 0xbd, 0xbc, 0xc6, 0xc7, 0xcc, 0xb5, 0xb6,
129   0xb9, 0xd1, 0xd2, 0xcb, 0xcf, 0xd0, 0xca, 0xd8,
130   0xd7, 0xce, 0xdf, 0x00, 0x00, 0x00, 0xdc, 0x00,
131   0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0xdd, 0x00,
132   0x00, 0x00, 0xde, 0xb0, 0xb1, 0xb2, 0xfe,
133 };
134
135 SMB_GENERATE_CHARSET_MODULE_8_BIT_GAP(CP437)