2 * Copyright (c) 1987 Regents of the University of California.
5 * Redistribution and use in source and binary forms are permitted
6 * provided that this notice is preserved and that due credit is given
7 * to the University of California at Berkeley. The name of the University
8 * may not be used to endorse or promote products derived from this
9 * software without specific written prior permission. This software
10 * is provided ``as is'' without express or implied warranty.
15 @deftypefn Supplemental int strcasecmp (const char *@var{s1}, const char *@var{s2})
17 A case-insensitive @code{strcmp}.
23 #if defined(LIBC_SCCS) && !defined(lint)
24 static char sccsid
[] = "@(#)strcasecmp.c 5.5 (Berkeley) 11/24/87";
25 #endif /* LIBC_SCCS and not lint */
31 #define size_t unsigned long
35 * This array is designed for mapping upper and lower case letter
36 * together for a case independent comparison. The mappings are
37 * based upon ascii character sequences.
39 typedef unsigned char uc
;
40 static const unsigned char charmap
[] = {
41 (uc
)'\000',(uc
)'\001',(uc
)'\002',(uc
)'\003',(uc
)'\004',(uc
)'\005',(uc
)'\006',(uc
)'\007',
42 (uc
)'\010',(uc
)'\011',(uc
)'\012',(uc
)'\013',(uc
)'\014',(uc
)'\015',(uc
)'\016',(uc
)'\017',
43 (uc
)'\020',(uc
)'\021',(uc
)'\022',(uc
)'\023',(uc
)'\024',(uc
)'\025',(uc
)'\026',(uc
)'\027',
44 (uc
)'\030',(uc
)'\031',(uc
)'\032',(uc
)'\033',(uc
)'\034',(uc
)'\035',(uc
)'\036',(uc
)'\037',
45 (uc
)'\040',(uc
)'\041',(uc
)'\042',(uc
)'\043',(uc
)'\044',(uc
)'\045',(uc
)'\046',(uc
)'\047',
46 (uc
)'\050',(uc
)'\051',(uc
)'\052',(uc
)'\053',(uc
)'\054',(uc
)'\055',(uc
)'\056',(uc
)'\057',
47 (uc
)'\060',(uc
)'\061',(uc
)'\062',(uc
)'\063',(uc
)'\064',(uc
)'\065',(uc
)'\066',(uc
)'\067',
48 (uc
)'\070',(uc
)'\071',(uc
)'\072',(uc
)'\073',(uc
)'\074',(uc
)'\075',(uc
)'\076',(uc
)'\077',
49 (uc
)'\100',(uc
)'\141',(uc
)'\142',(uc
)'\143',(uc
)'\144',(uc
)'\145',(uc
)'\146',(uc
)'\147',
50 (uc
)'\150',(uc
)'\151',(uc
)'\152',(uc
)'\153',(uc
)'\154',(uc
)'\155',(uc
)'\156',(uc
)'\157',
51 (uc
)'\160',(uc
)'\161',(uc
)'\162',(uc
)'\163',(uc
)'\164',(uc
)'\165',(uc
)'\166',(uc
)'\167',
52 (uc
)'\170',(uc
)'\171',(uc
)'\172',(uc
)'\133',(uc
)'\134',(uc
)'\135',(uc
)'\136',(uc
)'\137',
53 (uc
)'\140',(uc
)'\141',(uc
)'\142',(uc
)'\143',(uc
)'\144',(uc
)'\145',(uc
)'\146',(uc
)'\147',
54 (uc
)'\150',(uc
)'\151',(uc
)'\152',(uc
)'\153',(uc
)'\154',(uc
)'\155',(uc
)'\156',(uc
)'\157',
55 (uc
)'\160',(uc
)'\161',(uc
)'\162',(uc
)'\163',(uc
)'\164',(uc
)'\165',(uc
)'\166',(uc
)'\167',
56 (uc
)'\170',(uc
)'\171',(uc
)'\172',(uc
)'\173',(uc
)'\174',(uc
)'\175',(uc
)'\176',(uc
)'\177',
57 (uc
)'\200',(uc
)'\201',(uc
)'\202',(uc
)'\203',(uc
)'\204',(uc
)'\205',(uc
)'\206',(uc
)'\207',
58 (uc
)'\210',(uc
)'\211',(uc
)'\212',(uc
)'\213',(uc
)'\214',(uc
)'\215',(uc
)'\216',(uc
)'\217',
59 (uc
)'\220',(uc
)'\221',(uc
)'\222',(uc
)'\223',(uc
)'\224',(uc
)'\225',(uc
)'\226',(uc
)'\227',
60 (uc
)'\230',(uc
)'\231',(uc
)'\232',(uc
)'\233',(uc
)'\234',(uc
)'\235',(uc
)'\236',(uc
)'\237',
61 (uc
)'\240',(uc
)'\241',(uc
)'\242',(uc
)'\243',(uc
)'\244',(uc
)'\245',(uc
)'\246',(uc
)'\247',
62 (uc
)'\250',(uc
)'\251',(uc
)'\252',(uc
)'\253',(uc
)'\254',(uc
)'\255',(uc
)'\256',(uc
)'\257',
63 (uc
)'\260',(uc
)'\261',(uc
)'\262',(uc
)'\263',(uc
)'\264',(uc
)'\265',(uc
)'\266',(uc
)'\267',
64 (uc
)'\270',(uc
)'\271',(uc
)'\272',(uc
)'\273',(uc
)'\274',(uc
)'\275',(uc
)'\276',(uc
)'\277',
65 (uc
)'\300',(uc
)'\341',(uc
)'\342',(uc
)'\343',(uc
)'\344',(uc
)'\345',(uc
)'\346',(uc
)'\347',
66 (uc
)'\350',(uc
)'\351',(uc
)'\352',(uc
)'\353',(uc
)'\354',(uc
)'\355',(uc
)'\356',(uc
)'\357',
67 (uc
)'\360',(uc
)'\361',(uc
)'\362',(uc
)'\363',(uc
)'\364',(uc
)'\365',(uc
)'\366',(uc
)'\367',
68 (uc
)'\370',(uc
)'\371',(uc
)'\372',(uc
)'\333',(uc
)'\334',(uc
)'\335',(uc
)'\336',(uc
)'\337',
69 (uc
)'\340',(uc
)'\341',(uc
)'\342',(uc
)'\343',(uc
)'\344',(uc
)'\345',(uc
)'\346',(uc
)'\347',
70 (uc
)'\350',(uc
)'\351',(uc
)'\352',(uc
)'\353',(uc
)'\354',(uc
)'\355',(uc
)'\356',(uc
)'\357',
71 (uc
)'\360',(uc
)'\361',(uc
)'\362',(uc
)'\363',(uc
)'\364',(uc
)'\365',(uc
)'\366',(uc
)'\367',
72 (uc
)'\370',(uc
)'\371',(uc
)'\372',(uc
)'\373',(uc
)'\374',(uc
)'\375',(uc
)'\376',(uc
)'\377',
79 register unsigned char u1
, u2
;
82 u1
= (unsigned char) *s1
++;
83 u2
= (unsigned char) *s2
++;
84 if (charmap
[u1
] != charmap
[u2
]) {
85 return charmap
[u1
] - charmap
[u2
];