blob: 5504e0aff5a7ef57d52cef939d64e078b79ab605 [file] [log] [blame]
The Android Open Source Project2949f582009-03-03 19:30:46 -08001/*
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 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.
11 */
12
13#ifdef HAVE_CONFIG_H
14#include "config.h"
15#endif
16
17#ifndef lint
18static const char rcsid[] _U_ =
JP Abgrall53f17a92014-02-12 14:02:41 -080019 "@(#) $Header: /tcpdump/master/tcpdump/strcasecmp.c,v 1.6 2003-11-16 09:36:43 guy Exp $";
The Android Open Source Project2949f582009-03-03 19:30:46 -080020#endif
21
22#include <tcpdump-stdinc.h>
23
24#include "interface.h"
25
26/*
27 * This array is designed for mapping upper and lower case letter
28 * together for a case independent comparison. The mappings are
29 * based upon ascii character sequences.
30 */
JP Abgrall53f17a92014-02-12 14:02:41 -080031static const u_char charmap[] = {
The Android Open Source Project2949f582009-03-03 19:30:46 -080032 '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
33 '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
34 '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
35 '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
36 '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
37 '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
38 '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
39 '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
40 '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
41 '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
42 '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
43 '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
44 '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
45 '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
46 '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
47 '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
48 '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
49 '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
50 '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
51 '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
52 '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
53 '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
54 '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
55 '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
56 '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
57 '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
58 '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
59 '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337',
60 '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
61 '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
62 '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
63 '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
64};
65
66int
67strcasecmp(s1, s2)
68 const char *s1, *s2;
69{
JP Abgrall53f17a92014-02-12 14:02:41 -080070 register const u_char *cm = charmap,
The Android Open Source Project2949f582009-03-03 19:30:46 -080071 *us1 = (u_char *)s1,
72 *us2 = (u_char *)s2;
73
74 while (cm[*us1] == cm[*us2++])
75 if (*us1++ == '\0')
76 return(0);
77 return(cm[*us1] - cm[*--us2]);
78}
79
80int
81strncasecmp(s1, s2, n)
82 const char *s1, *s2;
83 register int n;
84{
JP Abgrall53f17a92014-02-12 14:02:41 -080085 register const u_char *cm = charmap,
The Android Open Source Project2949f582009-03-03 19:30:46 -080086 *us1 = (u_char *)s1,
87 *us2 = (u_char *)s2;
88
89 while (--n >= 0 && cm[*us1] == cm[*us2++])
90 if (*us1++ == '\0')
91 return(0);
92 return(n < 0 ? 0 : cm[*us1] - cm[*--us2]);
93}