mirror of
https://gitlab.com/sortix/sortix.git
synced 2023-02-13 20:55:38 -05:00
Added strchr(3), strchrnul(3), strrchr(3).
This commit is contained in:
parent
4806f25e50
commit
df728efb8c
3 changed files with 37 additions and 2 deletions
|
@ -37,12 +37,14 @@ int memcmp(const void*, const void*, size_t);
|
|||
void* memcpy(void* restrict, const void* restrict, size_t);
|
||||
void* memset(void*, int, size_t);
|
||||
char* strcat(char* restrict, const char* restrict);
|
||||
char* strchr(const char*, int);
|
||||
int strcmp(const char*, const char*);
|
||||
size_t strcspn(const char*, const char*);
|
||||
char* strcpy(char* restrict, const char* restrict);
|
||||
char* strerror(int);
|
||||
size_t strlen(const char*);
|
||||
int strncmp(const char*, const char*, size_t);
|
||||
char* strrchr(const char*, int);
|
||||
size_t strspn(const char*, const char*);
|
||||
char* strtok(char* restrict, const char* restrict);
|
||||
char* strtok_r(char* restrict, const char* restrict, char** restrict);
|
||||
|
@ -54,7 +56,6 @@ void* memchr(const void*, int, size_t);
|
|||
void* memmove(void*, const void*, size_t);
|
||||
char* stpcpy(char* restrict, const char* restrict);
|
||||
char* stpncpy(char* restrict, const char* restrict, size_t);
|
||||
char* strchr(const char*, int);
|
||||
int strcoll(const char*, const char*);
|
||||
int strcoll_l(const char*, const char*, locale_t);
|
||||
char* strdup(const char*);
|
||||
|
@ -65,13 +66,16 @@ char* strncpy(char* restrict, const char* restrict, size_t);
|
|||
char* strndup(const char*, size_t);
|
||||
size_t strnlen(const char*, size_t);
|
||||
char* strpbrk(const char*, const char*);
|
||||
char* strrchr(const char*, int);
|
||||
char* strsignal(int);
|
||||
char* strstr(const char*, const char*);
|
||||
size_t strxfrm(char* restrict, const char* restrict, size_t);
|
||||
size_t strxfrm_l(char* restrict, const char* restrict, size_t, locale_t);
|
||||
#endif
|
||||
|
||||
#ifdef SORTIX_EXTENSIONS
|
||||
char* strchrnul(const char* str, int c);
|
||||
#endif
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif
|
||||
|
|
|
@ -41,6 +41,9 @@ namespace Maxsi
|
|||
char* Cat(char* Dest, const char* Src);
|
||||
char* Tokenize(char* str, const char* delim);
|
||||
char* TokenizeR(char* str, const char* delim, char** saveptr);
|
||||
char* Seek(const char* str, int c);
|
||||
char* SeekNul(const char* str, int c);
|
||||
char* SeekReverse(const char* str, int c);
|
||||
int Compare(const char* A, const char* B);
|
||||
int CompareN(const char* A, const char* B, size_t MaxLength);
|
||||
bool StartsWith(const char* Haystack, const char* Needle);
|
||||
|
|
|
@ -155,6 +155,34 @@ namespace Maxsi
|
|||
return TokenizeR(str, delim, &lasttokensaveptr);
|
||||
}
|
||||
|
||||
DUAL_FUNCTION(char*, strchrnul, SeekNul, (const char* str, int c))
|
||||
{
|
||||
while ( *str )
|
||||
{
|
||||
if ( *str == c ) { return (char*) str; }
|
||||
str++;
|
||||
}
|
||||
return (char*) str;
|
||||
}
|
||||
|
||||
DUAL_FUNCTION(char*, strrchr, SeekReverse, (const char* str, int c))
|
||||
{
|
||||
const char* last = NULL;
|
||||
while ( *str )
|
||||
{
|
||||
if ( *str == c ) { last = str; }
|
||||
str++;
|
||||
}
|
||||
return (char*) last;
|
||||
}
|
||||
|
||||
DUAL_FUNCTION(char*, strchr, Seek, (const char* str, int c))
|
||||
{
|
||||
char* result = SeekNul(str, c);
|
||||
if ( !*result ) { return NULL; }
|
||||
return result;
|
||||
}
|
||||
|
||||
bool StartsWith(const char* haystack, const char* needle)
|
||||
{
|
||||
return CompareN(haystack, needle, Length(needle)) == 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue