1 #include <atalk/util.h>
3 unsigned const char _diacasemap[] = {
133 128 /* 128 Adieresis*/,
135 130 /* 130 Ccedilla*/,
138 133 /* 133 Odieresis*/,
139 134 /* 134 Udieresis*/,
142 229 /* 137 acircumflex*/,
143 128 /* 138 adieresis*/,
146 130 /* 141 ccedilla*/,
149 230 /* 144 ecircumflex*/,
150 232 /* 145 edieresis*/,
153 235 /* 148 icircumflex*/,
154 236 /* 149 idieresis*/,
158 239 /* 153 ocircumflex*/,
159 133 /* 154 odieresis*/,
163 243 /* 158 ucircumflex*/,
164 134 /* 159 udieresis*/,
168 163 /* 163 sterling*/,
169 164 /* 164 section*/,
171 166 /* 166 paragraph*/,
172 167 /* 167 germandbls*/,
173 168 /* 168 registered*/,
174 169 /* 169 copyright*/,
175 170 /* 170 trademark*/,
177 172 /* 172 dieresis*/,
178 173 /* 173 notequal*/,
181 176 /* 176 infinity*/,
182 177 /* 177 plusminus*/,
183 178 /* 178 lessequal*/,
184 179 /* 179 greaterequal*/,
191 186 /* 186 intergral*/,
192 187 /* 187 ordfeminine*/,
193 188 /* 188 ordmasculine*/,
197 192 /* 192 questiondown*/,
198 193 /* 193 exclamdown*/,
200 195 /* 195 radical*/,
204 199 /* 199 guillemotleft*/,
205 200 /* 200 guillemotright*/,
206 201 /* 201 ellipsis*/,
215 210 /* 210 quotedblleft*/,
216 211 /* 211 quotedblright*/,
217 212 /* 212 quoteleft*/,
218 213 /* 213 quoteright*/,
220 215 /* 215 diamond*/,
221 217 /* 216 ydieresis*/,
222 217 /* 217 Ydieresis*/,
223 218 /* 218 fraction*/,
224 219 /* 219 currency*/,
225 220 /* 220 guilsinglleft*/,
226 221 /* 221 guilsinglright*/,
229 224 /* 224 daggardbl*/,
230 225 /* 225 periodcentered*/,
231 226 /* 226 quotesinglbase*/,
232 227 /* 227 quotedblbase*/,
233 228 /* 228 perthousand*/,
234 229 /* 229 Acircumflex*/,
235 230 /* 230 Ecircumflex*/,
236 231 /* 231 Aaccute*/,
237 232 /* 232 Edieresis*/,
239 234 /* 234 Iaccute*/,
240 235 /* 235 Icircumflex*/,
241 236 /* 236 Idieresis*/,
243 238 /* 238 Oaccute*/,
244 239 /* 239 Ocircumflex*/,
247 242 /* 242 Uaccute*/,
248 243 /* 243 Ucircumflex*/,
250 245 /* 245 dotlessi*/,
251 246 /* 246 circumflex*/,
255 250 /* 250 dotaccent*/,
257 252 /* 252 cedilla*/,
258 253 /* 253 hungarumlaut*/,
263 unsigned const char _dialowermap[] = {
393 138 /* 128 Adieresis*/,
395 141 /* 130 Ccedilla*/,
398 154 /* 133 Odieresis*/,
399 159 /* 134 Udieresis*/,
402 137 /* 137 acircumflex*/,
403 138 /* 138 adieresis*/,
406 141 /* 141 ccedilla*/,
409 144 /* 144 ecircumflex*/,
410 145 /* 145 edieresis*/,
413 148 /* 148 icircumflex*/,
414 149 /* 149 idieresis*/,
418 153 /* 153 ocircumflex*/,
419 154 /* 154 odieresis*/,
423 158 /* 158 ucircumflex*/,
424 159 /* 159 udieresis*/,
428 163 /* 163 sterling*/,
429 164 /* 164 section*/,
431 166 /* 166 paragraph*/,
432 167 /* 167 germandbls*/,
433 168 /* 168 registered*/,
434 169 /* 169 copyright*/,
435 170 /* 170 trademark*/,
437 172 /* 172 dieresis*/,
438 173 /* 173 notequal*/,
441 176 /* 176 infinity*/,
442 177 /* 177 plusminus*/,
443 178 /* 178 lessequal*/,
444 179 /* 179 greaterequal*/,
451 186 /* 186 intergral*/,
452 187 /* 187 ordfeminine*/,
453 188 /* 188 ordmasculine*/,
457 192 /* 192 questiondown*/,
458 193 /* 193 exclamdown*/,
460 195 /* 195 radical*/,
464 199 /* 199 guillemotleft*/,
465 200 /* 200 guillemotright*/,
466 201 /* 201 ellipsis*/,
475 210 /* 210 quotedblleft*/,
476 211 /* 211 quotedblright*/,
477 212 /* 212 quoteleft*/,
478 213 /* 213 quoteright*/,
480 215 /* 215 diamond*/,
481 217 /* 216 ydieresis*/,
482 217 /* 217 Ydieresis*/,
483 218 /* 218 fraction*/,
484 219 /* 219 currency*/,
485 220 /* 220 guilsinglleft*/,
486 221 /* 221 guilsinglright*/,
489 224 /* 224 daggardbl*/,
490 225 /* 225 periodcentered*/,
491 226 /* 226 quotesinglbase*/,
492 227 /* 227 quotedblbase*/,
493 228 /* 228 perthousand*/,
494 137 /* 229 Acircumflex*/,
495 144 /* 230 Ecircumflex*/,
497 145 /* 232 Edieresis*/,
499 146 /* 234 Iaccute*/,
500 148 /* 235 Icircumflex*/,
501 149 /* 236 Idieresis*/,
504 153 /* 239 Ocircumflex*/,
508 158 /* 243 Ucircumflex*/,
510 245 /* 245 dotlessi*/,
511 246 /* 246 circumflex*/,
515 250 /* 250 dotaccent*/,
517 252 /* 252 cedilla*/,
518 253 /* 253 hungarumlaut*/,
523 int strdiacasecmp( s1, s2 )
524 const unsigned char *s1, *s2;
526 while ( _diacasemap[ *s1 ] == _diacasemap[ *s2++ ] ) {
527 if ( *s1++ == '\0' ) {
531 return( _diacasemap[ *s1 ] - _diacasemap[ *--s2 ] );
534 int strndiacasecmp( s1, s2, n )
535 const unsigned char *s1, *s2;
538 while ( --n >= 0 && _diacasemap[ *s1 ] == _diacasemap[ *s2++ ] ) {
539 if ( *s1++ == '\0' ) {
543 return( n < 0 ? 0 : _diacasemap[ *s1 ] - _diacasemap[ *--s2 ] );