5 #include <atalk/util.h>
7 const int _diacasemap[] = {
137 128 /* 128 Adieresis*/,
139 130 /* 130 Ccedilla*/,
142 133 /* 133 Odieresis*/,
143 134 /* 134 Udieresis*/,
146 229 /* 137 acircumflex*/,
147 128 /* 138 adieresis*/,
150 130 /* 141 ccedilla*/,
153 230 /* 144 ecircumflex*/,
154 232 /* 145 edieresis*/,
157 235 /* 148 icircumflex*/,
158 236 /* 149 idieresis*/,
162 239 /* 153 ocircumflex*/,
163 133 /* 154 odieresis*/,
167 243 /* 158 ucircumflex*/,
168 134 /* 159 udieresis*/,
172 163 /* 163 sterling*/,
173 164 /* 164 section*/,
175 166 /* 166 paragraph*/,
176 167 /* 167 germandbls*/,
177 168 /* 168 registered*/,
178 169 /* 169 copyright*/,
179 170 /* 170 trademark*/,
181 172 /* 172 dieresis*/,
182 173 /* 173 notequal*/,
185 176 /* 176 infinity*/,
186 177 /* 177 plusminus*/,
187 178 /* 178 lessequal*/,
188 179 /* 179 greaterequal*/,
195 186 /* 186 intergral*/,
196 187 /* 187 ordfeminine*/,
197 188 /* 188 ordmasculine*/,
201 192 /* 192 questiondown*/,
202 193 /* 193 exclamdown*/,
204 195 /* 195 radical*/,
208 199 /* 199 guillemotleft*/,
209 200 /* 200 guillemotright*/,
210 201 /* 201 ellipsis*/,
219 210 /* 210 quotedblleft*/,
220 211 /* 211 quotedblright*/,
221 212 /* 212 quoteleft*/,
222 213 /* 213 quoteright*/,
224 215 /* 215 diamond*/,
225 217 /* 216 ydieresis*/,
226 217 /* 217 Ydieresis*/,
227 218 /* 218 fraction*/,
228 219 /* 219 currency*/,
229 220 /* 220 guilsinglleft*/,
230 221 /* 221 guilsinglright*/,
233 224 /* 224 daggardbl*/,
234 225 /* 225 periodcentered*/,
235 226 /* 226 quotesinglbase*/,
236 227 /* 227 quotedblbase*/,
237 228 /* 228 perthousand*/,
238 229 /* 229 Acircumflex*/,
239 230 /* 230 Ecircumflex*/,
240 231 /* 231 Aaccute*/,
241 232 /* 232 Edieresis*/,
243 234 /* 234 Iaccute*/,
244 235 /* 235 Icircumflex*/,
245 236 /* 236 Idieresis*/,
247 238 /* 238 Oaccute*/,
248 239 /* 239 Ocircumflex*/,
251 242 /* 242 Uaccute*/,
252 243 /* 243 Ucircumflex*/,
254 245 /* 245 dotlessi*/,
255 246 /* 246 circumflex*/,
259 250 /* 250 dotaccent*/,
261 252 /* 252 cedilla*/,
262 253 /* 253 hungarumlaut*/,
267 const int _dialowermap[] = {
397 138 /* 128 Adieresis*/,
399 141 /* 130 Ccedilla*/,
402 154 /* 133 Odieresis*/,
403 159 /* 134 Udieresis*/,
406 137 /* 137 acircumflex*/,
407 138 /* 138 adieresis*/,
410 141 /* 141 ccedilla*/,
413 144 /* 144 ecircumflex*/,
414 145 /* 145 edieresis*/,
417 148 /* 148 icircumflex*/,
418 149 /* 149 idieresis*/,
422 153 /* 153 ocircumflex*/,
423 154 /* 154 odieresis*/,
427 158 /* 158 ucircumflex*/,
428 159 /* 159 udieresis*/,
432 163 /* 163 sterling*/,
433 164 /* 164 section*/,
435 166 /* 166 paragraph*/,
436 167 /* 167 germandbls*/,
437 168 /* 168 registered*/,
438 169 /* 169 copyright*/,
439 170 /* 170 trademark*/,
441 172 /* 172 dieresis*/,
442 173 /* 173 notequal*/,
445 176 /* 176 infinity*/,
446 177 /* 177 plusminus*/,
447 178 /* 178 lessequal*/,
448 179 /* 179 greaterequal*/,
455 186 /* 186 intergral*/,
456 187 /* 187 ordfeminine*/,
457 188 /* 188 ordmasculine*/,
461 192 /* 192 questiondown*/,
462 193 /* 193 exclamdown*/,
464 195 /* 195 radical*/,
468 199 /* 199 guillemotleft*/,
469 200 /* 200 guillemotright*/,
470 201 /* 201 ellipsis*/,
479 210 /* 210 quotedblleft*/,
480 211 /* 211 quotedblright*/,
481 212 /* 212 quoteleft*/,
482 213 /* 213 quoteright*/,
484 215 /* 215 diamond*/,
485 217 /* 216 ydieresis*/,
486 217 /* 217 Ydieresis*/,
487 218 /* 218 fraction*/,
488 219 /* 219 currency*/,
489 220 /* 220 guilsinglleft*/,
490 221 /* 221 guilsinglright*/,
493 224 /* 224 daggardbl*/,
494 225 /* 225 periodcentered*/,
495 226 /* 226 quotesinglbase*/,
496 227 /* 227 quotedblbase*/,
497 228 /* 228 perthousand*/,
498 137 /* 229 Acircumflex*/,
499 144 /* 230 Ecircumflex*/,
501 145 /* 232 Edieresis*/,
503 146 /* 234 Iaccute*/,
504 148 /* 235 Icircumflex*/,
505 149 /* 236 Idieresis*/,
508 153 /* 239 Ocircumflex*/,
512 158 /* 243 Ucircumflex*/,
514 245 /* 245 dotlessi*/,
515 246 /* 246 circumflex*/,
519 250 /* 250 dotaccent*/,
521 252 /* 252 cedilla*/,
522 253 /* 253 hungarumlaut*/,
527 int strdiacasecmp( const char *s1, const char *s2 )
529 while ( _diacasemap[ (unsigned char) *s1 ] ==
530 _diacasemap[ (unsigned char) *s2++ ] ) {
531 if ( *s1++ == '\0' ) {
535 return( _diacasemap[ (unsigned char) *s1 ] -
536 _diacasemap[ (unsigned char) *--s2 ] );
539 int strndiacasecmp( const char *s1, const char *s2, size_t n )
542 _diacasemap[ (unsigned char) *s1 ] ==
543 _diacasemap[ (unsigned char) *s2++ ] ) {
544 if ( *s1++ == '\0' ) {
552 return _diacasemap[ (unsigned char) *s1 ] -
553 _diacasemap[ (unsigned char) *--s2 ];