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