131745Sbostic /* 231745Sbostic * Copyright (c) 1987 Regents of the University of California. 331745Sbostic * All rights reserved. The Berkeley software License Agreement 431745Sbostic * specifies the terms and conditions for redistribution. 531745Sbostic */ 631745Sbostic 731745Sbostic #if defined(LIBC_SCCS) && !defined(lint) 8*31993Sbostic static char sccsid[] = "@(#)strcasecmp.c 5.3 (Berkeley) 08/03/87"; 931745Sbostic #endif LIBC_SCCS and not lint 1031745Sbostic 1131745Sbostic /* 1231747Sbostic * This array is designed for mapping upper and lower case letter 1331747Sbostic * together for a case independent comparison. The mappings are 1431747Sbostic * based upon ascii character sequences. 1531745Sbostic */ 1631747Sbostic static char charmap[] = { 1731747Sbostic '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', 1831747Sbostic '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', 1931747Sbostic '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', 2031747Sbostic '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', 2131747Sbostic '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', 2231747Sbostic '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', 2331747Sbostic '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', 2431747Sbostic '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', 2531747Sbostic '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', 2631747Sbostic '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', 2731747Sbostic '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', 2831747Sbostic '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', 2931747Sbostic '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', 3031747Sbostic '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', 3131747Sbostic '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', 3231747Sbostic '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', 3331747Sbostic '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', 3431747Sbostic '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', 3531747Sbostic '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', 3631747Sbostic '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', 3731747Sbostic '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', 3831747Sbostic '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', 3931747Sbostic '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', 4031747Sbostic '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', 4131747Sbostic '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347', 4231747Sbostic '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', 4331747Sbostic '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', 4431747Sbostic '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337', 4531747Sbostic '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', 4631747Sbostic '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', 4731747Sbostic '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', 4831747Sbostic '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', 4931747Sbostic }; 5031747Sbostic 5131745Sbostic strcasecmp(s1, s2) 5231747Sbostic register char *s1, *s2; 5331745Sbostic { 5431747Sbostic register char *cm = charmap; 5531745Sbostic 5631747Sbostic while (cm[*s1] == cm[*s2++]) 5731747Sbostic if (*s1++ == '\0') 5831745Sbostic return(0); 5931747Sbostic return(cm[*s1] - cm[*--s2]); 6031745Sbostic } 6131745Sbostic 62*31993Sbostic strncasecmp(s1, s2, n) 6331747Sbostic register char *s1, *s2; 6431747Sbostic register int n; 6531745Sbostic { 6631747Sbostic register char *cm = charmap; 6731745Sbostic 6831747Sbostic while (--n >= 0 && cm[*s1] == cm[*s2++]) 6931747Sbostic if (*s1++ == '\0') 7031745Sbostic return(0); 7131747Sbostic return(n < 0 ? 0 : cm[*s1] - cm[*--s2]); 7231745Sbostic } 73