]> arthur.barton.de Git - netatalk.git/blob - libatalk/util/strdicasecmp.c
Added checking for USE_CRACKLIB
[netatalk.git] / libatalk / util / strdicasecmp.c
1 #include <atalk/util.h>
2
3 unsigned const char     _diacasemap[] = {
4         /* map  value   name */
5         0       /* 0    NUL*/,
6         1       /* 1    SOH*/,
7         2       /* 2    STX*/,
8         3       /* 3    ETX*/,
9         4       /* 4    EOT*/,
10         5       /* 5    ENQ*/,
11         6       /* 6    ACK*/,
12         7       /* 7    BEL*/,
13         8       /* 8    BS*/,
14         9       /* 9    HT*/,
15         10      /* 10   NL*/,
16         11      /* 11   VT*/,
17         12      /* 12   NP*/,
18         13      /* 13   CR*/,
19         14      /* 14   SO*/,
20         15      /* 15   SI*/,
21         16      /* 16   DLE*/,
22         17      /* 17   DC1*/,
23         18      /* 18   DC2*/,
24         19      /* 19   DC3*/,
25         20      /* 20   DC4*/,
26         21      /* 21   NAK*/,
27         22      /* 22   SYN*/,
28         23      /* 23   ETB*/,
29         24      /* 24   CAN*/,
30         25      /* 25   EM*/,
31         26      /* 26   SUB*/,
32         27      /* 27   ESC*/,
33         28      /* 28   FS*/,
34         29      /* 29   GS*/,
35         30      /* 30   RS*/,
36         31      /* 31   US*/,
37         32      /* 32   SP*/,
38         33      /* 33    ! */,
39         34      /* 34    " */,
40         35      /* 35    # */,
41         36      /* 36    $ */,
42         37      /* 37    % */,
43         38      /* 38    & */,
44         39      /* 39    ' */,
45         40      /* 40    ( */,
46         41      /* 41    ) */,
47         42      /* 42    * */,
48         43      /* 43    + */,
49         44      /* 44    , */,
50         45      /* 45    - */,
51         46      /* 46    . */,
52         47      /* 47    / */,
53         48      /* 48    0 */,
54         49      /* 49    1 */,
55         50      /* 50    2 */,
56         51      /* 51    3 */,
57         52      /* 52    4 */,
58         53      /* 53    5 */,
59         54      /* 54    6 */,
60         55      /* 55    7 */,
61         56      /* 56    8 */,
62         57      /* 57    9 */,
63         58      /* 58    : */,
64         59      /* 59    ; */,
65         60      /* 60    < */,
66         61      /* 61    = */,
67         62      /* 62    > */,
68         63      /* 63    ? */,
69         64      /* 64    @ */,
70         65      /* 65    A */,
71         66      /* 66    B */,
72         67      /* 67    C */,
73         68      /* 68    D */,
74         69      /* 69    E */,
75         70      /* 70    F */,
76         71      /* 71    G */,
77         72      /* 72    H */,
78         73      /* 73    I */,
79         74      /* 74    J */,
80         75      /* 75    K */,
81         76      /* 76    L */,
82         77      /* 77    M */,
83         78      /* 78    N */,
84         79      /* 79    O */,
85         80      /* 80    P */,
86         81      /* 81    Q */,
87         82      /* 82    R */,
88         83      /* 83    S */,
89         84      /* 84    T */,
90         85      /* 85    U */,
91         86      /* 86    V */,
92         87      /* 87    W */,
93         88      /* 88    X */,
94         89      /* 89    Y */,
95         90      /* 90    Z */,
96         91      /* 91    [ */,
97         92      /* 92    \ */,
98         93      /* 93    ] */,
99         94      /* 94    ^ */,
100         95      /* 95    _ */,
101         96      /* 96    ` */,
102         65      /* 97    a */,
103         66      /* 98    b */,
104         67      /* 99    c */,
105         68      /* 100   d */,
106         69      /* 101   e */,
107         70      /* 102   f */,
108         71      /* 103   g */,
109         72      /* 104   h */,
110         73      /* 105   i */,
111         74      /* 106   j */,
112         75      /* 107   k */,
113         76      /* 108   l */,
114         77      /* 109   m */,
115         78      /* 110   n */,
116         79      /* 111   o */,
117         80      /* 112   p */,
118         81      /* 113   q */,
119         82      /* 114   r */,
120         83      /* 115   s */,
121         84      /* 116   t */,
122         85      /* 117   u */,
123         86      /* 118   v */,
124         87      /* 119   w */,
125         88      /* 120   x */,
126         89      /* 121   y */,
127         90      /* 122   z */,
128         123     /* 123   { */,
129         124     /* 124   | */,
130         125     /* 125   } */,
131         126     /* 126   ~ */,
132         127     /* 127  DEL*/,
133         128     /* 128  Adieresis*/,
134         129     /* 129  Aring*/,
135         130     /* 130  Ccedilla*/,
136         131     /* 131  Eacute*/,
137         132     /* 132  Ntilda*/,
138         133     /* 133  Odieresis*/,
139         134     /* 134  Udieresis*/,
140         231     /* 135  aacute*/,
141         203     /* 136  agrave*/,
142         229     /* 137  acircumflex*/,
143         128     /* 138  adieresis*/,
144         204     /* 139  atilda*/,
145         129     /* 140  aring*/,
146         130     /* 141  ccedilla*/,
147         131     /* 142  eacute*/,
148         233     /* 143  egrave*/,
149         230     /* 144  ecircumflex*/,
150         232     /* 145  edieresis*/,
151         234     /* 146  iacute*/,
152         237     /* 147  igrave*/,
153         235     /* 148  icircumflex*/,
154         236     /* 149  idieresis*/,
155         132     /* 150  ntilda*/,
156         238     /* 151  oacute*/,
157         241     /* 152  ograve*/,
158         239     /* 153  ocircumflex*/,
159         133     /* 154  odieresis*/,
160         205     /* 155  otilda*/,
161         242     /* 156  uacute*/,
162         244     /* 157  ugrave*/,
163         243     /* 158  ucircumflex*/,
164         134     /* 159  udieresis*/,
165         160     /* 160  daggar*/,
166         161     /* 161  ring*/,
167         162     /* 162  cent*/,
168         163     /* 163  sterling*/,
169         164     /* 164  section*/,
170         165     /* 165  bullet*/,
171         166     /* 166  paragraph*/,
172         167     /* 167  germandbls*/,
173         168     /* 168  registered*/,
174         169     /* 169  copyright*/,
175         170     /* 170  trademark*/,
176         171     /* 171  acute*/,
177         172     /* 172  dieresis*/,
178         173     /* 173  notequal*/,
179         174     /* 174  AE*/,
180         175     /* 175  Oslash*/,
181         176     /* 176  infinity*/,
182         177     /* 177  plusminus*/,
183         178     /* 178  lessequal*/,
184         179     /* 179  greaterequal*/,
185         180     /* 180  yen*/,
186         181     /* 181  mu*/,
187         198     /* 182  delta*/,
188         183     /* 183  Sigma*/,
189         184     /* 184  Pi*/,
190         184     /* 185  pi*/,
191         186     /* 186  intergral*/,
192         187     /* 187  ordfeminine*/,
193         188     /* 188  ordmasculine*/,
194         189     /* 189  Omega*/,
195         174     /* 190  ae*/,
196         175     /* 191  oslash*/,
197         192     /* 192  questiondown*/,
198         193     /* 193  exclamdown*/,
199         194     /* 194  not*/,
200         195     /* 195  radical*/,
201         196     /* 196  florin*/,
202         197     /* 197  aprox*/,
203         198     /* 198  Delta*/,
204         199     /* 199  guillemotleft*/,
205         200     /* 200  guillemotright*/,
206         201     /* 201  ellipsis*/,
207         202     /* 202  */,
208         203     /* 203  Agrave*/,
209         204     /* 204  Atilda*/,
210         205     /* 205  Otilda*/,
211         206     /* 206  OE*/,
212         206     /* 207  oe*/,
213         208     /* 208  endash*/,
214         209     /* 209  emdash*/,
215         210     /* 210  quotedblleft*/,
216         211     /* 211  quotedblright*/,
217         212     /* 212  quoteleft*/,
218         213     /* 213  quoteright*/,
219         214     /* 214  divide*/,
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*/,
227         222     /* 222  fi*/,
228         223     /* 223  fl*/,
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*/,
238         233     /* 233  Egrave*/,
239         234     /* 234  Iaccute*/,
240         235     /* 235  Icircumflex*/,
241         236     /* 236  Idieresis*/,
242         237     /* 237  Igrave*/,
243         238     /* 238  Oaccute*/,
244         239     /* 239  Ocircumflex*/,
245         240     /* 240  apple*/,
246         241     /* 241  Ograve*/,
247         242     /* 242  Uaccute*/,
248         243     /* 243  Ucircumflex*/,
249         244     /* 244  Ugrave*/,
250         245     /* 245  dotlessi*/,
251         246     /* 246  circumflex*/,
252         247     /* 247  tilda*/,
253         248     /* 248  macron*/,
254         249     /* 249  breve*/,
255         250     /* 250  dotaccent*/,
256         251     /* 251  ring*/,
257         252     /* 252  cedilla*/,
258         253     /* 253  hungarumlaut*/,
259         254     /* 254  ogonek*/,
260         255     /* 255  caron*/,
261 };
262
263 unsigned const char     _dialowermap[] = {
264         /* map  value   name */
265         0       /* 0    NUL*/,
266         1       /* 1    SOH*/,
267         2       /* 2    STX*/,
268         3       /* 3    ETX*/,
269         4       /* 4    EOT*/,
270         5       /* 5    ENQ*/,
271         6       /* 6    ACK*/,
272         7       /* 7    BEL*/,
273         8       /* 8    BS*/,
274         9       /* 9    HT*/,
275         10      /* 10   NL*/,
276         11      /* 11   VT*/,
277         12      /* 12   NP*/,
278         13      /* 13   CR*/,
279         14      /* 14   SO*/,
280         15      /* 15   SI*/,
281         16      /* 16   DLE*/,
282         17      /* 17   DC1*/,
283         18      /* 18   DC2*/,
284         19      /* 19   DC3*/,
285         20      /* 20   DC4*/,
286         21      /* 21   NAK*/,
287         22      /* 22   SYN*/,
288         23      /* 23   ETB*/,
289         24      /* 24   CAN*/,
290         25      /* 25   EM*/,
291         26      /* 26   SUB*/,
292         27      /* 27   ESC*/,
293         28      /* 28   FS*/,
294         29      /* 29   GS*/,
295         30      /* 30   RS*/,
296         31      /* 31   US*/,
297         32      /* 32   SP*/,
298         33      /* 33    ! */,
299         34      /* 34    " */,
300         35      /* 35    # */,
301         36      /* 36    $ */,
302         37      /* 37    % */,
303         38      /* 38    & */,
304         39      /* 39    ' */,
305         40      /* 40    ( */,
306         41      /* 41    ) */,
307         42      /* 42    * */,
308         43      /* 43    + */,
309         44      /* 44    , */,
310         45      /* 45    - */,
311         46      /* 46    . */,
312         47      /* 47    / */,
313         48      /* 48    0 */,
314         49      /* 49    1 */,
315         50      /* 50    2 */,
316         51      /* 51    3 */,
317         52      /* 52    4 */,
318         53      /* 53    5 */,
319         54      /* 54    6 */,
320         55      /* 55    7 */,
321         56      /* 56    8 */,
322         57      /* 57    9 */,
323         58      /* 58    : */,
324         59      /* 59    ; */,
325         60      /* 60    < */,
326         61      /* 61    = */,
327         62      /* 62    > */,
328         63      /* 63    ? */,
329         64      /* 64    @ */,
330         97      /* 65    A */,
331         98      /* 66    B */,
332         99      /* 67    C */,
333         100     /* 68    D */,
334         101     /* 69    E */,
335         102     /* 70    F */,
336         103     /* 71    G */,
337         104     /* 72    H */,
338         105     /* 73    I */,
339         106     /* 74    J */,
340         107     /* 75    K */,
341         108     /* 76    L */,
342         109     /* 77    M */,
343         110     /* 78    N */,
344         111     /* 79    O */,
345         112     /* 80    P */,
346         113     /* 81    Q */,
347         114     /* 82    R */,
348         115     /* 83    S */,
349         116     /* 84    T */,
350         117     /* 85    U */,
351         118     /* 86    V */,
352         119     /* 87    W */,
353         120     /* 88    X */,
354         121     /* 89    Y */,
355         122     /* 90    Z */,
356         91      /* 91    [ */,
357         92      /* 92    \ */,
358         93      /* 93    ] */,
359         94      /* 94    ^ */,
360         95      /* 95    _ */,
361         96      /* 96    ` */,
362         97      /* 97    a */,
363         98      /* 98    b */,
364         99      /* 99    c */,
365         100     /* 100   d */,
366         101     /* 101   e */,
367         102     /* 102   f */,
368         103     /* 103   g */,
369         104     /* 104   h */,
370         105     /* 105   i */,
371         106     /* 106   j */,
372         107     /* 107   k */,
373         108     /* 108   l */,
374         109     /* 109   m */,
375         110     /* 110   n */,
376         111     /* 111   o */,
377         112     /* 112   p */,
378         113     /* 113   q */,
379         114     /* 114   r */,
380         115     /* 115   s */,
381         116     /* 116   t */,
382         117     /* 117   u */,
383         118     /* 118   v */,
384         119     /* 119   w */,
385         120     /* 120   x */,
386         121     /* 121   y */,
387         122     /* 122   z */,
388         123     /* 123   { */,
389         124     /* 124   | */,
390         125     /* 125   } */,
391         126     /* 126   ~ */,
392         127     /* 127  DEL*/,
393         138     /* 128  Adieresis*/,
394         140     /* 129  Aring*/,
395         141     /* 130  Ccedilla*/,
396         142     /* 131  Eacute*/,
397         150     /* 132  Ntilda*/,
398         154     /* 133  Odieresis*/,
399         159     /* 134  Udieresis*/,
400         135     /* 135  aacute*/,
401         136     /* 136  agrave*/,
402         137     /* 137  acircumflex*/,
403         138     /* 138  adieresis*/,
404         139     /* 139  atilda*/,
405         140     /* 140  aring*/,
406         141     /* 141  ccedilla*/,
407         142     /* 142  eacute*/,
408         143     /* 143  egrave*/,
409         144     /* 144  ecircumflex*/,
410         145     /* 145  edieresis*/,
411         146     /* 146  iacute*/,
412         147     /* 147  igrave*/,
413         148     /* 148  icircumflex*/,
414         149     /* 149  idieresis*/,
415         132     /* 150  ntilda*/,
416         151     /* 151  oacute*/,
417         152     /* 152  ograve*/,
418         153     /* 153  ocircumflex*/,
419         154     /* 154  odieresis*/,
420         155     /* 155  otilda*/,
421         156     /* 156  uacute*/,
422         157     /* 157  ugrave*/,
423         158     /* 158  ucircumflex*/,
424         159     /* 159  udieresis*/,
425         160     /* 160  daggar*/,
426         161     /* 161  ring*/,
427         162     /* 162  cent*/,
428         163     /* 163  sterling*/,
429         164     /* 164  section*/,
430         165     /* 165  bullet*/,
431         166     /* 166  paragraph*/,
432         167     /* 167  germandbls*/,
433         168     /* 168  registered*/,
434         169     /* 169  copyright*/,
435         170     /* 170  trademark*/,
436         171     /* 171  acute*/,
437         172     /* 172  dieresis*/,
438         173     /* 173  notequal*/,
439         190     /* 174  AE*/,
440         191     /* 175  Oslash*/,
441         176     /* 176  infinity*/,
442         177     /* 177  plusminus*/,
443         178     /* 178  lessequal*/,
444         179     /* 179  greaterequal*/,
445         180     /* 180  yen*/,
446         181     /* 181  mu*/,
447         198     /* 182  delta*/,
448         183     /* 183  Sigma*/,
449         185     /* 184  Pi*/,
450         185     /* 185  pi*/,
451         186     /* 186  intergral*/,
452         187     /* 187  ordfeminine*/,
453         188     /* 188  ordmasculine*/,
454         189     /* 189  Omega*/,
455         190     /* 190  ae*/,
456         191     /* 191  oslash*/,
457         192     /* 192  questiondown*/,
458         193     /* 193  exclamdown*/,
459         194     /* 194  not*/,
460         195     /* 195  radical*/,
461         196     /* 196  florin*/,
462         197     /* 197  aprox*/,
463         198     /* 198  Delta*/,
464         199     /* 199  guillemotleft*/,
465         200     /* 200  guillemotright*/,
466         201     /* 201  ellipsis*/,
467         202     /* 202  */,
468         136     /* 203  Agrave*/,
469         139     /* 204  Atilda*/,
470         155     /* 205  Otilda*/,
471         207     /* 206  OE*/,
472         207     /* 207  oe*/,
473         208     /* 208  endash*/,
474         209     /* 209  emdash*/,
475         210     /* 210  quotedblleft*/,
476         211     /* 211  quotedblright*/,
477         212     /* 212  quoteleft*/,
478         213     /* 213  quoteright*/,
479         214     /* 214  divide*/,
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*/,
487         222     /* 222  fi*/,
488         223     /* 223  fl*/,
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*/,
496         135     /* 231  Aacute*/,
497         145     /* 232  Edieresis*/,
498         143     /* 233  Egrave*/,
499         146     /* 234  Iaccute*/,
500         148     /* 235  Icircumflex*/,
501         149     /* 236  Idieresis*/,
502         147     /* 237  Igrave*/,
503         151     /* 238  Oacute*/,
504         153     /* 239  Ocircumflex*/,
505         240     /* 240  apple*/,
506         152     /* 241  Ograve*/,
507         156     /* 242  Uacute*/,
508         158     /* 243  Ucircumflex*/,
509         157     /* 244  Ugrave*/,
510         245     /* 245  dotlessi*/,
511         246     /* 246  circumflex*/,
512         247     /* 247  tilda*/,
513         248     /* 248  macron*/,
514         249     /* 249  breve*/,
515         250     /* 250  dotaccent*/,
516         251     /* 251  ring*/,
517         252     /* 252  cedilla*/,
518         253     /* 253  hungarumlaut*/,
519         254     /* 254  ogonek*/,
520         255     /* 255  caron*/,
521 };
522
523 int strdiacasecmp( s1, s2 )
524     const unsigned char *s1, *s2;
525 {
526     while ( _diacasemap[ *s1 ] == _diacasemap[ *s2++ ] ) {
527         if ( *s1++ == '\0' ) {
528             return( 0 );
529         }
530     }
531     return( _diacasemap[ *s1 ] - _diacasemap[ *--s2 ] );
532 }
533
534 int strndiacasecmp( s1, s2, n )
535     const unsigned char *s1, *s2;
536     int                 n;
537 {
538     while ( --n >= 0 && _diacasemap[ *s1 ] == _diacasemap[ *s2++ ] ) {
539         if ( *s1++ == '\0' ) {
540             return( 0 );
541         }
542     }
543     return( n < 0 ? 0 : _diacasemap[ *s1 ] - _diacasemap[ *--s2 ] );
544 }