]> git.ipfire.org Git - thirdparty/gcc.git/blame - libiberty/strncasecmp.c
DecimalFormat.java (format): Don't immediatly round baseNumber to long.
[thirdparty/gcc.git] / libiberty / strncasecmp.c
CommitLineData
6599da04
JM
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 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
aaa5f039
DD
13/*
14
15@deftypefn Supplemental int strncasecmp (const char *@var{s1}, const char *@var{s2})
16
17A case-insensitive @code{strncmp}.
18
19@end deftypefn
20
21*/
22
6599da04
JM
23#if defined(LIBC_SCCS) && !defined(lint)
24static char sccsid[] = "@(#)strcasecmp.c 5.5 (Berkeley) 11/24/87";
25#endif /* LIBC_SCCS and not lint */
26
27#include <ansidecl.h>
0ae0f1b0 28#ifdef ANSI_PROTOTYPES
6599da04
JM
29#include <stddef.h>
30#else
31#define size_t unsigned long
32#endif
33
34/*
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.
38 */
0be6abca 39static const unsigned char charmap[] = {
6599da04
JM
40 '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
41 '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
42 '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
43 '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
44 '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
45 '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
46 '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
47 '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
48 '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
49 '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
50 '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
51 '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
52 '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
53 '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
54 '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
55 '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
56 '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
57 '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
58 '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
59 '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
60 '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
61 '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
62 '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
63 '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
64 '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
65 '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
66 '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
67 '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337',
68 '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
69 '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
70 '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
71 '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
72};
73
74int
75strncasecmp(s1, s2, n)
76 const char *s1, *s2;
77 register size_t n;
78{
79 register unsigned char u1, u2;
80
81 for (; n != 0; --n) {
82 u1 = (unsigned char) *s1++;
83 u2 = (unsigned char) *s2++;
84 if (charmap[u1] != charmap[u2]) {
85 return charmap[u1] - charmap[u2];
86 }
87 if (u1 == '\0') {
88 return 0;
89 }
90 }
91 return 0;
92}