source: main/trunk/greenstone2/runtime-src/packages/d2m/strcasecmp.c@ 28912

Last change on this file since 28912 was 10435, checked in by kjdon, 19 years ago

strncasecmp and strcasecmp are not implemented in windows, so have copied the strcasecmp.c file from mg, and added strncasecmp(), and this is compiled and added to the windows d2m library

  • Property svn:keywords set to Author Date Id Revision
File size: 3.5 KB
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 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#if defined(LIBC_SCCS) && !defined(lint)
14static char sccsid[] = "@(#)strcasecmp.c 5.5 (Berkeley) 11/24/87";
15#endif /* LIBC_SCCS and not lint */
16
17/*
18 * This array is designed for mapping upper and lower case letter
19 * together for a case independent comparison. The mappings are
20 * based upon ascii character sequences.
21 */
22static unsigned char charmap[] = {
23 '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
24 '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
25 '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
26 '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
27 '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
28 '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
29 '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
30 '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
31 '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
32 '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
33 '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
34 '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
35 '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
36 '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
37 '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
38 '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
39 '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
40 '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
41 '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
42 '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
43 '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
44 '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
45 '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
46 '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
47 '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
48 '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
49 '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
50 '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337',
51 '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
52 '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
53 '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
54 '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
55};
56
57int
58strcasecmp(s1, s2)
59 char *s1, *s2;
60{
61 register unsigned char u1, u2;
62
63 for (;;) {
64 u1 = (unsigned char) *s1++;
65 u2 = (unsigned char) *s2++;
66 if (charmap[u1] != charmap[u2]) {
67 return charmap[u1] - charmap[u2];
68 }
69 if (u1 == '\0') {
70 return 0;
71 }
72 }
73}
74int
75strncasecmp(s1, s2, n)
76 char *s1, *s2;
77 int n;
78{
79 register unsigned char u1, u2;
80 int i;
81 for (i=0;i<n;i++) {
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}
93
94
95
96
Note: See TracBrowser for help on using the repository browser.