mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Added strstr(3).
This commit is contained in:
parent
6c6e1091a1
commit
5d826ec284
2 changed files with 19 additions and 1 deletions
|
@ -52,6 +52,7 @@ int strncmp(const char*, const char*, size_t);
|
||||||
char* strncpy(char* restrict, const char* restrict, size_t);
|
char* strncpy(char* restrict, const char* restrict, size_t);
|
||||||
char* strrchr(const char*, int);
|
char* strrchr(const char*, int);
|
||||||
size_t strspn(const char*, const char*);
|
size_t strspn(const char*, const char*);
|
||||||
|
char* strstr(const char*, const char*);
|
||||||
char* strtok(char* restrict, const char* restrict);
|
char* strtok(char* restrict, const char* restrict);
|
||||||
char* strtok_r(char* restrict, const char* restrict, char** restrict);
|
char* strtok_r(char* restrict, const char* restrict, char** restrict);
|
||||||
|
|
||||||
|
@ -67,7 +68,6 @@ char* strndup(const char*, size_t);
|
||||||
size_t strnlen(const char*, size_t);
|
size_t strnlen(const char*, size_t);
|
||||||
char* strpbrk(const char*, const char*);
|
char* strpbrk(const char*, const char*);
|
||||||
char* strsignal(int);
|
char* strsignal(int);
|
||||||
char* strstr(const char*, const char*);
|
|
||||||
size_t strxfrm(char* restrict, const char* restrict, size_t);
|
size_t strxfrm(char* restrict, const char* restrict, size_t);
|
||||||
size_t strxfrm_l(char* restrict, const char* restrict, size_t, locale_t);
|
size_t strxfrm_l(char* restrict, const char* restrict, size_t, locale_t);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -244,6 +244,24 @@ namespace Maxsi
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: This simple and hacky implementation runs in O(N^2) even though
|
||||||
|
// this problem can be solved in O(N).
|
||||||
|
char* strstr(const char* haystack, const char* needle)
|
||||||
|
{
|
||||||
|
if ( !needle[0] ) { return (char*) haystack; }
|
||||||
|
for ( size_t i = 0; haystack[i]; i++ )
|
||||||
|
{
|
||||||
|
bool diff = false;
|
||||||
|
for ( size_t j = 0; needle[j]; j++ )
|
||||||
|
{
|
||||||
|
if ( haystack[i+j] != needle[j] ) { diff = true; break; }
|
||||||
|
}
|
||||||
|
if ( diff ) { continue; }
|
||||||
|
return (char*) haystack + i;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef SORTIX_KERNEL
|
#ifndef SORTIX_KERNEL
|
||||||
extern "C" char* strdup(const char* input)
|
extern "C" char* strdup(const char* input)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue