libkern/strcasestr.c: Drop xlocale support and connect to build.

Reviewed by:	markj, hselasky
Differential revision:	https://reviews.freebsd.org/D27866
This commit is contained in:
Vladimir Kondratyev 2020-10-06 17:50:52 +03:00
parent 92cf602e38
commit bc86103335
3 changed files with 10 additions and 14 deletions

View File

@ -4058,6 +4058,7 @@ libkern/qsort_r.c standard
libkern/random.c standard
libkern/scanc.c standard
libkern/strcasecmp.c standard
libkern/strcasestr.c standard
libkern/strcat.c standard
libkern/strchr.c standard
libkern/strchrnul.c optional gdb

View File

@ -40,35 +40,29 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
#include <ctype.h>
#include <string.h>
#include "xlocale_private.h"
#include <sys/param.h>
#include <sys/ctype.h>
#include <sys/libkern.h>
/*
* Find the first occurrence of find in s, ignore case.
*/
char *
strcasestr_l(const char *s, const char *find, locale_t locale)
strcasestr(const char *s, const char *find)
{
char c, sc;
size_t len;
FIX_LOCALE(locale);
if ((c = *find++) != 0) {
c = tolower_l((unsigned char)c, locale);
c = tolower((unsigned char)c);
len = strlen(find);
do {
do {
if ((sc = *s++) == 0)
return (NULL);
} while ((char)tolower_l((unsigned char)sc, locale) != c);
} while (strncasecmp_l(s, find, len, locale) != 0);
} while ((char)tolower((unsigned char)sc) != c);
} while (strncasecmp(s, find, len) != 0);
s--;
}
return ((char *)s);
}
char *
strcasestr(const char *s, const char *find)
{
return strcasestr_l(s, find, __get_locale());
return (__DECONST(char *, s));
}

View File

@ -168,6 +168,7 @@ void qsort_r(void *base, size_t nmemb, size_t size, void *thunk,
u_long random(void);
int scanc(u_int, const u_char *, const u_char *, int);
int strcasecmp(const char *, const char *);
char *strcasestr(const char *, const char *);
char *strcat(char * __restrict, const char * __restrict);
char *strchr(const char *, int);
char *strchrnul(const char *, int);