1 /*_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
5 * Function:..WorldWideWeb-X.500-Gateway - Support-Functions *
6 * Based on web500gw.c 1.3 written by Frank Richter, TU Chemmniz *
7 * which is based on go500gw by Tim Howes, University of *
8 * Michigan - All rights reserved *
10 * Authors:...Dr. Kurt Spanier & Bernhard Winkler, *
11 * Zentrum fuer Datenverarbeitung, Bereich Entwicklung *
12 * neuer Dienste, Universitaet Tuebingen, GERMANY *
15 * Creation date: Z D D V V *
16 * August 16 1995 Z D D V V *
17 * Last modification: Z D D V V *
18 * September 7 1999 ZZZZ DDD V *
20 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_*/
23 * $Id: support.h,v 1.6 1999/09/10 15:01:20 zrnsk01 Exp $
30 #include "support_exp.h"
31 #include "charray_exp.h"
32 #include "ch_malloc_exp.h"
35 /* Array for translation */
36 /* 0: HEX; 1: uml (not used); 2: flatten */
38 char *encoding_tbl[257][3] = {
39 /* 0 \0 */ { "%00" , "", NULL },
40 /* 1
\ 1 */ { "%01" , "
\ 1", NULL },
41 /* 2
\ 2 */ { "%02" , "
\ 2", NULL },
42 /* 3
\ 3 */ { "%03" , "
\ 3", NULL },
43 /* 4
\ 4 */ { "%04" , "
\ 4", NULL },
44 /* 5
\ 5 */ { "%05" , "
\ 5", NULL },
45 /* 6
\ 6 */ { "%06" , "
\ 6", NULL },
46 /* 7
\a */ { "%07" , "
\a", NULL },
47 /* 8
\b */ { "%08" , "
\b", NULL },
48 /* 9 \t */ { "%09" , " ", NULL },
49 /* 10 \n */ { "%0a" , "\n", NULL },
50 /* 11
\v */ { "%0b" , "
\v", NULL },
51 /* 12
\f */ { "%0c" , "
\f", NULL },
52 /* 13
\r */ { "%0d" , "
\r", NULL },
53 /* 14
\ e */ { "%0e" , "
\ e", NULL },
54 /* 15
\ f */ { "%0f" , "
\ f", NULL },
55 /* 16
\10 */ { "%10" , "
\10", NULL },
56 /* 17
\11 */ { "%11" , "
\11", NULL },
57 /* 18
\12 */ { "%12" , "
\12", NULL },
58 /* 19
\13 */ { "%13" , "
\13", NULL },
59 /* 20
\14 */ { "%14" , "
\14", NULL },
60 /* 21
\15 */ { "%15" , "
\15", NULL },
61 /* 22
\16 */ { "%16" , "
\16", NULL },
62 /* 23
\17 */ { "%17" , "
\17", NULL },
63 /* 24
\18 */ { "%18" , "
\18", NULL },
64 /* 25
\19 */ { "%19" , "
\19", NULL },
65 /* 26
\1a */ { "%1a" , "
\1a", NULL },
66 /* 27
\e */ { "%1b" , "
\e", NULL },
67 /* 28
\1c */ { "%1c" , "
\1c", NULL },
68 /* 29
\1d */ { "%1d" , "
\1d", NULL },
69 /* 30
\1e */ { "%1e" , "
\1e", NULL },
70 /* 31
\1f */ { "%1f" , "
\1f", NULL },
71 /* 32 */ { "%20" , " ", NULL },
72 /* 33 ! */ { "%21" , "!", NULL },
73 /* 34 " */ { "%22" , """, NULL },
74 /* 35 # */ { "%23" , "#", NULL },
75 /* 36 $ */ { NULL, NULL, NULL },
76 /* 37 % */ { "%25" , "%", NULL },
77 /* 38 & */ { "%26" , "&", NULL },
78 /* 39 ' */ { "%27" , "'", NULL },
79 /* 40 ( */ { "%28" , "(", NULL },
80 /* 41 ) */ { "%29" , ")", NULL },
81 /* 42 * */ { "%2a" , "*", NULL },
82 /* 43 + */ { "%2b" , "+", NULL },
83 /* 44 , */ { "%2c" , ",", NULL },
84 /* 45 - */ { NULL, NULL, NULL },
85 /* 46 . */ { NULL, NULL, NULL },
86 /* 47 / */ { "%2f" , "/", NULL },
87 /* 48 0 */ { NULL, NULL, NULL },
88 /* 49 1 */ { NULL, NULL, NULL },
89 /* 50 2 */ { NULL, NULL, NULL },
90 /* 51 3 */ { NULL, NULL, NULL },
91 /* 52 4 */ { NULL, NULL, NULL },
92 /* 53 5 */ { NULL, NULL, NULL },
93 /* 54 6 */ { NULL, NULL, NULL },
94 /* 55 7 */ { NULL, NULL, NULL },
95 /* 56 8 */ { NULL, NULL, NULL },
96 /* 57 9 */ { NULL, NULL, NULL },
97 /* 58 : */ { "%3a" , ":", NULL },
98 /* 59 ; */ { "%3b" , ";", NULL },
99 /* 60 < */ { "%3c" , "<", NULL },
100 /* 61 = */ { "%3d" , "=", NULL },
101 /* 62 > */ { "%3e" , ">", NULL },
102 /* 63 ? */ { "%3f" , "?", NULL },
103 /* 64 @ */ { "%40" , "@", NULL },
104 /* 65 A */ { NULL, NULL, NULL },
105 /* 66 B */ { NULL, NULL, NULL },
106 /* 67 C */ { NULL, NULL, NULL },
107 /* 68 D */ { NULL, NULL, NULL },
108 /* 69 E */ { NULL, NULL, NULL },
109 /* 70 F */ { NULL, NULL, NULL },
110 /* 71 G */ { NULL, NULL, NULL },
111 /* 72 H */ { NULL, NULL, NULL },
112 /* 73 I */ { NULL, NULL, NULL },
113 /* 74 J */ { NULL, NULL, NULL },
114 /* 75 K */ { NULL, NULL, NULL },
115 /* 76 L */ { NULL, NULL, NULL },
116 /* 77 M */ { NULL, NULL, NULL },
117 /* 78 N */ { NULL, NULL, NULL },
118 /* 79 O */ { NULL, NULL, NULL },
119 /* 80 P */ { NULL, NULL, NULL },
120 /* 81 Q */ { NULL, NULL, NULL },
121 /* 82 R */ { NULL, NULL, NULL },
122 /* 83 S */ { NULL, NULL, NULL },
123 /* 84 T */ { NULL, NULL, NULL },
124 /* 85 U */ { NULL, NULL, NULL },
125 /* 86 V */ { NULL, NULL, NULL },
126 /* 87 W */ { NULL, NULL, NULL },
127 /* 88 X */ { NULL, NULL, NULL },
128 /* 89 Y */ { NULL, NULL, NULL },
129 /* 90 Z */ { NULL, NULL, NULL },
130 /* 91 [ */ { "%5b" , "[", NULL },
131 /* 92 \ */ { "%5c" , "\\", NULL },
132 /* 93 ] */ { "%5d" , "]", NULL },
133 /* 94 ^ */ { "%5e" , "^", NULL },
134 /* 95 _ */ { NULL, NULL, NULL },
135 /* 96 ` */ { "%60" , "`", NULL },
136 /* 97 a */ { NULL, NULL, NULL },
137 /* 98 b */ { NULL, NULL, NULL },
138 /* 99 c */ { NULL, NULL, NULL },
139 /* 100 d */ { NULL, NULL, NULL },
140 /* 101 e */ { NULL, NULL, NULL },
141 /* 102 f */ { NULL, NULL, NULL },
142 /* 103 g */ { NULL, NULL, NULL },
143 /* 104 h */ { NULL, NULL, NULL },
144 /* 105 i */ { NULL, NULL, NULL },
145 /* 106 j */ { NULL, NULL, NULL },
146 /* 107 k */ { NULL, NULL, NULL },
147 /* 108 l */ { NULL, NULL, NULL },
148 /* 109 m */ { NULL, NULL, NULL },
149 /* 110 n */ { NULL, NULL, NULL },
150 /* 111 o */ { NULL, NULL, NULL },
151 /* 112 p */ { NULL, NULL, NULL },
152 /* 113 q */ { NULL, NULL, NULL },
153 /* 114 r */ { NULL, NULL, NULL },
154 /* 115 s */ { NULL, NULL, NULL },
155 /* 116 t */ { NULL, NULL, NULL },
156 /* 117 u */ { NULL, NULL, NULL },
157 /* 118 v */ { NULL, NULL, NULL },
158 /* 119 w */ { NULL, NULL, NULL },
159 /* 120 x */ { NULL, NULL, NULL },
160 /* 121 y */ { NULL, NULL, NULL },
161 /* 122 z */ { NULL, NULL, NULL },
162 /* 123 { */ { "%7b" , "{", NULL },
163 /* 124 | */ { "%7c" , "|", NULL },
164 /* 125 } */ { "%7d" , "}", NULL },
165 /* 126 ~ */ { "%7e" , "~", NULL },
166 /* 127
\7f */ { "%7f" , "
\7f", NULL },
167 /* 128
\80 */ { "%80" , "
\80", NULL },
168 /* 129
\81 */ { "%81" , "
\81", NULL },
169 /* 130
\82 */ { "%82" , "
\82", NULL },
170 /* 131
\83 */ { "%83" , "
\83", NULL },
171 /* 132
\84 */ { "%84" , "
\84", NULL },
172 /* 133
\85 */ { "%85" , "
\85", NULL },
173 /* 134
\86 */ { "%86" , "
\86", NULL },
174 /* 135
\87 */ { "%87" , "
\87", NULL },
175 /* 136
\88 */ { "%88" , "
\88", NULL },
176 /* 137
\89 */ { "%89" , "
\89", NULL },
177 /* 138
\8a */ { "%8a" , "
\8a", NULL },
178 /* 139
\8b */ { "%8b" , "
\8b", NULL },
179 /* 140
\8c */ { "%8c" , "
\8c", NULL },
180 /* 141
\8d */ { "%8d" , "
\8d", NULL },
181 /* 142
\8e */ { "%8e" , "
\8e", NULL },
182 /* 143
\8f */ { "%8f" , "
\8f", NULL },
183 /* 144
\90 */ { "%90" , "
\90", NULL },
184 /* 145
\91 */ { "%91" , "
\91", NULL },
185 /* 146
\92 */ { "%92" , "
\92", NULL },
186 /* 147
\93 */ { "%93" , "
\93", NULL },
187 /* 148
\94 */ { "%94" , "
\94", NULL },
188 /* 149
\95 */ { "%95" , "
\95", NULL },
189 /* 150
\96 */ { "%96" , "
\96", NULL },
190 /* 151
\97 */ { "%97" , "
\97", NULL },
191 /* 152
\98 */ { "%98" , "
\98", NULL },
192 /* 153
\99 */ { "%99" , "
\99", NULL },
193 /* 154
\9a */ { "%9a" , "
\9a", NULL },
194 /* 155
\9b */ { "%9b" , "
\9b", NULL },
195 /* 156
\9c */ { "%9c" , "
\9c", NULL },
196 /* 157
\9d */ { "%9d" , "
\9d", NULL },
197 /* 158
\9e */ { "%9e" , "
\9e", NULL },
198 /* 159
\9f */ { "%9f" , "
\9f", NULL },
199 /* 160 */ { "%a0" , "", NULL },
200 /* 161 */ { "%a1" , "", NULL },
201 /* 162 */ { "%a2" , "", NULL },
202 /* 163 */ { "%a3" , "", NULL },
203 /* 164 */ { "%a4" , "", NULL },
204 /* 165 */ { "%a5" , "", NULL },
205 /* 166 */ { "%a6" , "", NULL },
206 /* 167 */ { "%a7" , "", NULL },
207 /* 168 */ { "%a8" , "", NULL },
208 /* 169 */ { "%a9" , "", NULL },
209 /* 170 */ { "%aa" , "", NULL },
210 /* 171 */ { "%ab" , "", NULL },
211 /* 172 */ { "%ac" , "", NULL },
212 /* 173 */ { "%ad" , "", NULL },
213 /* 174 */ { "%ae" , "", NULL },
214 /* 175 */ { "%af" , "", NULL },
215 /* 176 */ { "%b0" , "", NULL },
216 /* 177 */ { "%b1" , "", NULL },
217 /* 178 */ { "%b2" , "", NULL },
218 /* 179 */ { "%b3" , "", NULL },
219 /* 180 */ { "%b4" , "", NULL },
220 /* 181 */ { "%b5" , "", NULL },
221 /* 182 */ { "%b6" , "", NULL },
222 /* 183 */ { "%b7" , "", NULL },
223 /* 184 */ { "%b8" , "", NULL },
224 /* 185 */ { "%b9" , "", NULL },
225 /* 186 */ { "%ba" , "", NULL },
226 /* 187 */ { "%bb" , "", NULL },
227 /* 188 */ { "%bc" , "", NULL },
228 /* 189 */ { "%bd" , "", NULL },
229 /* 190 */ { "%be" , "", NULL },
230 /* 191 */ { "%bf" , "", NULL },
231 /* 192 */ { "%c0" , "À", "A" },
232 /* 193 */ { "%c1" , "Á", "A" },
233 /* 194 */ { "%c2" , "Â", "A" },
234 /* 195 */ { "%c3" , "Ã", "A" },
235 /* 196 */ { "%c4" , "Ä", "Ae" },
236 /* 197 */ { "%c5" , "Å", "A" },
237 /* 198 */ { "%c6" , "Æ", "AE" },
238 /* 199 */ { "%c7" , "Ç", "C" },
239 /* 200 */ { "%c8" , "È", "E" },
240 /* 201 */ { "%c9" , "É", "E" },
241 /* 202 */ { "%ca" , "Ê", "E" },
242 /* 203 */ { "%cb" , "Ë", "E" },
243 /* 204 */ { "%cc" , "Ì", "I" },
244 /* 205 */ { "%cd" , "Í", "I" },
245 /* 206 */ { "%ce" , "Î", "I" },
246 /* 207 */ { "%cf" , "Ï", "I" },
247 /* 208 */ { "%d0" , "Ð", "Eth" },
248 /* 209 */ { "%d1" , "Ñ", "N" },
249 /* 210 */ { "%d2" , "Ò", "O" },
250 /* 211 */ { "%d3" , "Ó", "O" },
251 /* 212 */ { "%d4" , "Ô", "O" },
252 /* 213 */ { "%d5" , "Õ", "O" },
253 /* 214 */ { "%d6" , "Ö", "Oe" },
254 /* 215 */ { "%d7" , "x", "x" },
255 /* 216 */ { "%d8" , "Ø", "O" },
256 /* 217 */ { "%d9" , "Ù", "U" },
257 /* 218 */ { "%da" , "Ú", "U" },
258 /* 219 */ { "%db" , "Û", "U" },
259 /* 220 */ { "%dc" , "Ü", "Ue" },
260 /* 221 */ { "%dd" , "Ý", "Y" },
261 /* 222 */ { "%de" , "Þ", NULL },
262 /* 223 */ { "%df" , "ß", "ss" },
263 /* 224 */ { "%e0" , "à", "a" },
264 /* 225 */ { "%e1" , "á", "a" },
265 /* 226 */ { "%e2" , "â", "a" },
266 /* 227 */ { "%e3" , "ã", "a" },
267 /* 228 */ { "%e4" , "ä", "ae" },
268 /* 229 */ { "%e5" , "å", "a" },
269 /* 230 */ { "%e6" , "æ", "ae" },
270 /* 231 */ { "%e7" , "ç", "c" },
271 /* 232 */ { "%e8" , "è", "e" },
272 /* 233 */ { "%e9" , "é", "e" },
273 /* 234 */ { "%ea" , "ê", "e" },
274 /* 235 */ { "%eb" , "ë", "e" },
275 /* 236 */ { "%ec" , "ì", "i" },
276 /* 237 */ { "%ed" , "í", "i" },
277 /* 238 */ { "%ee" , "î", "i" },
278 /* 239 */ { "%ef" , "ï", "i" },
279 /* 240 */ { "%f0" , "ð", "eth" },
280 /* 241 */ { "%f1" , "ñ", "n" },
281 /* 242 */ { "%f2" , "ò", "o" },
282 /* 243 */ { "%f3" , "ó", "o" },
283 /* 244 */ { "%f4" , "ô", "o" },
284 /* 245 */ { "%f5" , "õ", "o" },
285 /* 246 */ { "%f6" , "ö", "oe" },
286 /* 247 */ { "%f7" , "/", "/" },
287 /* 248 */ { "%f8" , "ø", "o" },
288 /* 249 */ { "%f9" , "ù", "u" },
289 /* 250 */ { "%fa" , "ú", "u" },
290 /* 251 */ { "%fb" , "û", "u" },
291 /* 252 */ { "%fc" , "ü", "ue" },
292 /* 253 */ { "%fd" , "ý", "y" },
293 /* 254 */ { "%fe" , "þ", NULL },
294 /* 255 */ { "%ff" , "ÿ", "y" },
295 /* 256 EOF*/ { NULL, NULL, NULL },
298 #endif /* _SUPPORT_ */