strequal.c revision 8f1a214b8a21b66f33454790dfba97ae2f818289
15ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen/*************************************************************************** 25ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * _ _ ____ _ 35ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * Project ___| | | | _ \| | 45ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * / __| | | | |_) | | 55ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * | (__| |_| | _ <| |___ 65ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * \___|\___/|_| \_\_____| 75ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * 8e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. 95ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * 105ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * This software is licensed as described in the file COPYING, which 115ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * you should have received as part of this distribution. The terms 128f1a214b8a21b66f33454790dfba97ae2f818289Alex Deymo * are also available at https://curl.haxx.se/docs/copyright.html. 135ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * 145ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * You may opt to use, copy, modify, merge, publish, distribute and/or sell 155ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * copies of the Software, and permit persons to whom the Software is 165ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * furnished to do so, under the terms of the COPYING file. 175ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * 185ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 195ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * KIND, either express or implied. 205ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen * 215ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen ***************************************************************************/ 225ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen 23e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET#include "curl_setup.h" 245ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen 255ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#ifdef HAVE_STRINGS_H 265ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#include <strings.h> 275ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#endif 285ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen 295ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#include "strequal.h" 305ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen 31e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/* 32e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * @unittest: 1301 33e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET */ 345ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenint curl_strequal(const char *first, const char *second) 355ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen{ 365ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#if defined(HAVE_STRCASECMP) 375ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return !(strcasecmp)(first, second); 385ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#elif defined(HAVE_STRCMPI) 395ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return !(strcmpi)(first, second); 405ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#elif defined(HAVE_STRICMP) 415ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return !(stricmp)(first, second); 425ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#else 435ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen while(*first && *second) { 445ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen if(toupper(*first) != toupper(*second)) { 455ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen break; 465ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen } 475ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen first++; 485ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen second++; 495ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen } 505ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return toupper(*first) == toupper(*second); 515ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#endif 525ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen} 535ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen 54e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET/* 55e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET * @unittest: 1301 56e6cd738ed3716c02557fb3a47515244e949ade39Bertrand SIMONNET */ 575ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsenint curl_strnequal(const char *first, const char *second, size_t max) 585ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen{ 595ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#if defined(HAVE_STRNCASECMP) 605ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return !strncasecmp(first, second, max); 615ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#elif defined(HAVE_STRNCMPI) 625ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return !strncmpi(first, second, max); 635ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#elif defined(HAVE_STRNICMP) 645ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return !strnicmp(first, second, max); 655ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#else 665ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen while(*first && *second && max) { 675ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen if(toupper(*first) != toupper(*second)) { 685ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen break; 695ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen } 705ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen max--; 715ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen first++; 725ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen second++; 735ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen } 745ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen if(0 == max) 755ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return 1; /* they are equal this far */ 765ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen 775ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen return toupper(*first) == toupper(*second); 785ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen#endif 795ab5018bf8f0e39957d264f33c3eeddd958ed5d8Kristian Monsen} 80