mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
added Curl_strcasestr() for case insensitive strstr() searching
This commit is contained in:
parent
4b3937373a
commit
61bded1d82
@ -1,8 +1,8 @@
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
@ -10,7 +10,7 @@
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
@ -78,6 +78,25 @@ int curl_strnequal(const char *first, const char *second, size_t max)
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* Curl_strcasestr() finds the first occurrence of the substring needle in the
|
||||
* string haystack. The terminating `\0' characters are not compared. The
|
||||
* matching is done CASE INSENSITIVE, which thus is the difference between
|
||||
* this and strstr().
|
||||
*/
|
||||
char *Curl_strcasestr(const char *haystack, const char *needle)
|
||||
{
|
||||
size_t nlen = strlen(needle);
|
||||
size_t hlen = strlen(haystack);
|
||||
|
||||
while(hlen-- >= nlen) {
|
||||
if(curl_strnequal(haystack, needle, nlen))
|
||||
return (char *)haystack;
|
||||
haystack++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifndef HAVE_STRLCAT
|
||||
/*
|
||||
* The strlcat() function appends the NUL-terminated string src to the end
|
||||
@ -90,7 +109,7 @@ int curl_strnequal(const char *first, const char *second, size_t max)
|
||||
* src. While this may seem somewhat confusing it was done to make trunca-
|
||||
* tion detection simple.
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
size_t Curl_strlcat(char *dst, const char *src, size_t siz)
|
||||
{
|
||||
|
@ -1,10 +1,10 @@
|
||||
#ifndef __STREQUAL_H
|
||||
#define __STREQUAL_H
|
||||
/***************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
@ -12,7 +12,7 @@
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
*
|
||||
*
|
||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
* copies of the Software, and permit persons to whom the Software is
|
||||
* furnished to do so, under the terms of the COPYING file.
|
||||
@ -36,6 +36,9 @@ int curl_strnequal(const char *first, const char *second, size_t max);
|
||||
argument is zero-byte terminated */
|
||||
#define checkprefix(a,b) strnequal(a,b,strlen(a))
|
||||
|
||||
/* case insensitive strstr() */
|
||||
char *Curl_strcasestr(const char *haystack, const char *needle);
|
||||
|
||||
#ifndef HAVE_STRLCAT
|
||||
#define strlcat(x,y,z) Curl_strlcat(x,y,z)
|
||||
size_t Curl_strlcat(char *dst, const char *src, size_t siz);
|
||||
|
Loading…
Reference in New Issue
Block a user