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.
|
* 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
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
* are also available at http://curl.haxx.se/docs/copyright.html.
|
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||||
*
|
*
|
||||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
* 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
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
* furnished to do so, under the terms of the COPYING file.
|
* 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
|
#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
|
#ifndef HAVE_STRLCAT
|
||||||
/*
|
/*
|
||||||
* The strlcat() function appends the NUL-terminated string src to the end
|
* 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-
|
* src. While this may seem somewhat confusing it was done to make trunca-
|
||||||
* tion detection simple.
|
* tion detection simple.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
size_t Curl_strlcat(char *dst, const char *src, size_t siz)
|
size_t Curl_strlcat(char *dst, const char *src, size_t siz)
|
||||||
{
|
{
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#ifndef __STREQUAL_H
|
#ifndef __STREQUAL_H
|
||||||
#define __STREQUAL_H
|
#define __STREQUAL_H
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
* / __| | | | |_) | |
|
* / __| | | | |_) | |
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* 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
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
* are also available at http://curl.haxx.se/docs/copyright.html.
|
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||||
*
|
*
|
||||||
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
* 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
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
* furnished to do so, under the terms of the COPYING file.
|
* 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 */
|
argument is zero-byte terminated */
|
||||||
#define checkprefix(a,b) strnequal(a,b,strlen(a))
|
#define checkprefix(a,b) strnequal(a,b,strlen(a))
|
||||||
|
|
||||||
|
/* case insensitive strstr() */
|
||||||
|
char *Curl_strcasestr(const char *haystack, const char *needle);
|
||||||
|
|
||||||
#ifndef HAVE_STRLCAT
|
#ifndef HAVE_STRLCAT
|
||||||
#define strlcat(x,y,z) Curl_strlcat(x,y,z)
|
#define strlcat(x,y,z) Curl_strlcat(x,y,z)
|
||||||
size_t Curl_strlcat(char *dst, const char *src, size_t siz);
|
size_t Curl_strlcat(char *dst, const char *src, size_t siz);
|
||||||
|
Loading…
Reference in New Issue
Block a user