mirror of https://github.com/wolfSSL/wolfssl.git
add wc_strcasecmp() and wc_strncasecmp() to wc_port.c, and set up (USE_WOLF_STR[N]CASECMP) in types.h for targets lacking native implementations (including WOLF_C89);
define USE_WOLF_STRSEP if defined(WOLF_C89).pull/6303/head
parent
4b9302cdb3
commit
193919a276
|
@ -1081,6 +1081,48 @@ size_t wc_strlcat(char *dst, const char *src, size_t dstSize)
|
|||
}
|
||||
#endif /* USE_WOLF_STRLCAT */
|
||||
|
||||
#ifdef USE_WOLF_STRCASECMP
|
||||
int wc_strcasecmp(const char *s1, const char *s2)
|
||||
{
|
||||
char c1, c2;
|
||||
for (;
|
||||
;
|
||||
++s1, ++s2)
|
||||
{
|
||||
c1 = *s1;
|
||||
if ((c1 >= 'a') && (c1 <= 'z'))
|
||||
c1 -= ('a' - 'A');
|
||||
c2 = *s2;
|
||||
if ((c2 >= 'a') && (c2 <= 'z'))
|
||||
c2 -= ('a' - 'A');
|
||||
if ((c1 != c2) || (c1 == 0))
|
||||
break;
|
||||
}
|
||||
return (c1 - c2);
|
||||
}
|
||||
#endif /* USE_WOLF_STRCASECMP */
|
||||
|
||||
#ifdef USE_WOLF_STRNCASECMP
|
||||
int wc_strncasecmp(const char *s1, const char *s2, size_t n)
|
||||
{
|
||||
char c1, c2;
|
||||
for (c1 = 0, c2 = 0;
|
||||
n > 0;
|
||||
--n, ++s1, ++s2)
|
||||
{
|
||||
c1 = *s1;
|
||||
if ((c1 >= 'a') && (c1 <= 'z'))
|
||||
c1 -= ('a' - 'A');
|
||||
c2 = *s2;
|
||||
if ((c2 >= 'a') && (c2 <= 'z'))
|
||||
c2 -= ('a' - 'A');
|
||||
if ((c1 != c2) || (c1 == 0))
|
||||
break;
|
||||
}
|
||||
return (c1 - c2);
|
||||
}
|
||||
#endif /* USE_WOLF_STRNCASECMP */
|
||||
|
||||
#if !defined(SINGLE_THREADED) && !defined(HAVE_C___ATOMIC)
|
||||
void wolfSSL_RefInit(wolfSSL_Ref* ref, int* err)
|
||||
{
|
||||
|
|
|
@ -640,7 +640,7 @@ typedef struct w64wrapper {
|
|||
defined(WOLFSSL_TIRTOS) || defined(WOLF_C99))
|
||||
#define USE_WOLF_STRTOK
|
||||
#endif
|
||||
#if !defined(USE_WOLF_STRSEP) && (defined(WOLF_C99))
|
||||
#if !defined(USE_WOLF_STRSEP) && (defined(WOLF_C89) || defined(WOLF_C99))
|
||||
#define USE_WOLF_STRSEP
|
||||
#endif
|
||||
#if !defined(XSTRLCPY) && !defined(USE_WOLF_STRLCPY)
|
||||
|
@ -684,10 +684,9 @@ typedef struct w64wrapper {
|
|||
#define XSTRCASECMP(s1,s2) strcasecmp((s1),(s2))
|
||||
#elif defined(MICROCHIP_PIC32) || defined(WOLFSSL_TIRTOS) || \
|
||||
defined(WOLFSSL_ZEPHYR)
|
||||
/* XC32 version < 1.0 does not support strcasecmp, so use
|
||||
* case sensitive one.
|
||||
*/
|
||||
#define XSTRCASECMP(s1,s2) strcmp((s1),(s2))
|
||||
/* XC32 version < 1.0 does not support strcasecmp. */
|
||||
#define USE_WOLF_STRCASECMP
|
||||
#define XSTRCASECMP(s1,s2) wc_strcasecmp(s1,s2)
|
||||
#elif defined(USE_WINDOWS_API) || defined(FREERTOS_TCP_WINSIM)
|
||||
#define XSTRCASECMP(s1,s2) _stricmp((s1),(s2))
|
||||
#else
|
||||
|
@ -697,8 +696,10 @@ typedef struct w64wrapper {
|
|||
#endif
|
||||
#if defined(WOLFSSL_DEOS)
|
||||
#define XSTRCASECMP(s1,s2) stricmp((s1),(s2))
|
||||
#elif defined(WOLFSSL_CMSIS_RTOSv2) || defined(WOLFSSL_AZSPHERE)
|
||||
#define XSTRCASECMP(s1,s2) strcmp((s1),(s2))
|
||||
#elif defined(WOLFSSL_CMSIS_RTOSv2) || defined(WOLFSSL_AZSPHERE) \
|
||||
|| defined(WOLF_C89)
|
||||
#define USE_WOLF_STRCASECMP
|
||||
#define XSTRCASECMP(s1,s2) wc_strcasecmp(s1, s2)
|
||||
#elif defined(WOLF_C89)
|
||||
#define XSTRCASECMP(s1,s2) strcmp((s1),(s2))
|
||||
#else
|
||||
|
@ -713,10 +714,9 @@ typedef struct w64wrapper {
|
|||
#define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n))
|
||||
#elif defined(MICROCHIP_PIC32) || defined(WOLFSSL_TIRTOS) || \
|
||||
defined(WOLFSSL_ZEPHYR)
|
||||
/* XC32 version < 1.0 does not support strncasecmp, so use case
|
||||
* sensitive one.
|
||||
*/
|
||||
#define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n))
|
||||
/* XC32 version < 1.0 does not support strncasecmp. */
|
||||
#define USE_WOLF_STRNCASECMP
|
||||
#define XSTRNCASECMP(s1,s2) wc_strncasecmp(s1,s2)
|
||||
#elif defined(USE_WINDOWS_API) || defined(FREERTOS_TCP_WINSIM)
|
||||
#define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n))
|
||||
#else
|
||||
|
@ -726,8 +726,10 @@ typedef struct w64wrapper {
|
|||
#endif
|
||||
#if defined(WOLFSSL_DEOS)
|
||||
#define XSTRNCASECMP(s1,s2,n) strnicmp((s1),(s2),(n))
|
||||
#elif defined(WOLFSSL_CMSIS_RTOSv2) || defined(WOLFSSL_AZSPHERE)
|
||||
#define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n))
|
||||
#elif defined(WOLFSSL_CMSIS_RTOSv2) || defined(WOLFSSL_AZSPHERE) \
|
||||
|| defined(WOLF_C89)
|
||||
#define USE_WOLF_STRNCASECMP
|
||||
#define XSTRNCASECMP(s1,s2,n) wc_strncasecmp(s1, s2 ,n)
|
||||
#elif defined(WOLF_C89)
|
||||
#define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n))
|
||||
#else
|
||||
|
@ -855,6 +857,12 @@ typedef struct w64wrapper {
|
|||
WOLFSSL_API size_t wc_strlcat(char *dst, const char *src, size_t dstSize);
|
||||
#define XSTRLCAT(s1,s2,n) wc_strlcat((s1),(s2),(n))
|
||||
#endif
|
||||
#ifdef USE_WOLF_STRCASECMP
|
||||
WOLFSSL_API int wc_strcasecmp(const char *s1, const char *s2);
|
||||
#endif
|
||||
#ifdef USE_WOLF_STRNCASECMP
|
||||
WOLFSSL_API int wc_strncasecmp(const char *s1, const char *s2, size_t n);
|
||||
#endif
|
||||
|
||||
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
|
||||
#ifndef XGETENV
|
||||
|
|
Loading…
Reference in New Issue