strcasecmp.c revision 2949f58a438f6fd85f66a8b7ed4708042cde4b37
12949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 22949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Copyright (c) 1987 Regents of the University of California. 32949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * All rights reserved. 42949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * 52949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * Redistribution and use in source and binary forms are permitted 62949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * provided that this notice is preserved and that due credit is given 72949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * to the University of California at Berkeley. The name of the University 82949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * may not be used to endorse or promote products derived from this 92949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * software without specific written prior permission. This software 102949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * is provided ``as is'' without express or implied warranty. 112949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 122949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 132949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifdef HAVE_CONFIG_H 142949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "config.h" 152949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 162949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 172949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#ifndef lint 182949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic const char rcsid[] _U_ = 192949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project "@(#) $Header: /tcpdump/master/tcpdump/strcasecmp.c,v 1.6 2003/11/16 09:36:43 guy Exp $"; 202949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#endif 212949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 222949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include <tcpdump-stdinc.h> 232949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 242949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project#include "interface.h" 252949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 262949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project/* 272949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * This array is designed for mapping upper and lower case letter 282949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * together for a case independent comparison. The mappings are 292949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project * based upon ascii character sequences. 302949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project */ 312949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstatic u_char charmap[] = { 322949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', 332949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', 342949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', 352949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', 362949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', 372949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', 382949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', 392949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', 402949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', 412949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', 422949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', 432949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', 442949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', 452949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', 462949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', 472949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', 482949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', 492949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', 502949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', 512949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', 522949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', 532949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', 542949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', 552949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', 562949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347', 572949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', 582949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', 592949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337', 602949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', 612949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', 622949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', 632949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', 642949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project}; 652949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 662949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint 672949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstrcasecmp(s1, s2) 682949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const char *s1, *s2; 692949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{ 702949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project register u_char *cm = charmap, 712949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *us1 = (u_char *)s1, 722949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *us2 = (u_char *)s2; 732949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 742949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while (cm[*us1] == cm[*us2++]) 752949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (*us1++ == '\0') 762949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return(0); 772949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return(cm[*us1] - cm[*--us2]); 782949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 792949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 802949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectint 812949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Projectstrncasecmp(s1, s2, n) 822949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project const char *s1, *s2; 832949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project register int n; 842949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project{ 852949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project register u_char *cm = charmap, 862949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *us1 = (u_char *)s1, 872949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project *us2 = (u_char *)s2; 882949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project 892949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project while (--n >= 0 && cm[*us1] == cm[*us2++]) 902949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project if (*us1++ == '\0') 912949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return(0); 922949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project return(n < 0 ? 0 : cm[*us1] - cm[*--us2]); 932949f58a438f6fd85f66a8b7ed4708042cde4b37The Android Open Source Project} 94