source: trunk/third/tcp_wrappers/strcasecmp.c @ 11717

Revision 11717, 3.8 KB checked in by danw, 26 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r11716, which included commits to RCS files with non-trunk default branches.
Line 
1/*
2 * Copyright (c) 1987 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley.  The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16 */
17
18#if defined(LIBC_SCCS) && !defined(lint)
19static char sccsid[] = "@(#)strcasecmp.c        5.6 (Berkeley) 6/27/88";
20#endif /* LIBC_SCCS and not lint */
21
22/* Some environments don't define u_char -- WZV */
23#if 0
24#include <sys/types.h>
25#else
26typedef unsigned char u_char;
27#endif
28
29/*
30 * This array is designed for mapping upper and lower case letter
31 * together for a case independent comparison.  The mappings are
32 * based upon ascii character sequences.
33 */
34static u_char charmap[] = {
35        '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
36        '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
37        '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
38        '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
39        '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
40        '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
41        '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
42        '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
43        '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
44        '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
45        '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
46        '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
47        '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
48        '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
49        '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
50        '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
51        '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
52        '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
53        '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
54        '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
55        '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
56        '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
57        '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
58        '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
59        '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
60        '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
61        '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
62        '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337',
63        '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
64        '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
65        '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
66        '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
67};
68
69strcasecmp(s1, s2)
70        char *s1, *s2;
71{
72        register u_char *cm = charmap,
73                        *us1 = (u_char *)s1,
74                        *us2 = (u_char *)s2;
75
76        while (cm[*us1] == cm[*us2++])
77                if (*us1++ == '\0')
78                        return(0);
79        return(cm[*us1] - cm[*--us2]);
80}
81
82strncasecmp(s1, s2, n)
83        char *s1, *s2;
84        register int n;
85{
86        register u_char *cm = charmap,
87                        *us1 = (u_char *)s1,
88                        *us2 = (u_char *)s2;
89
90        while (--n >= 0 && cm[*us1] == cm[*us2++])
91                if (*us1++ == '\0')
92                        return(0);
93        return(n < 0 ? 0 : cm[*us1] - cm[*--us2]);
94}
Note: See TracBrowser for help on using the repository browser.