Added strchr(3), strchrnul(3), strrchr(3).
This commit is contained in:
parent
4806f25e50
commit
df728efb8c
|
@ -37,12 +37,14 @@ int memcmp(const void*, const void*, size_t);
|
||||||
void* memcpy(void* restrict, const void* restrict, size_t);
|
void* memcpy(void* restrict, const void* restrict, size_t);
|
||||||
void* memset(void*, int, size_t);
|
void* memset(void*, int, size_t);
|
||||||
char* strcat(char* restrict, const char* restrict);
|
char* strcat(char* restrict, const char* restrict);
|
||||||
|
char* strchr(const char*, int);
|
||||||
int strcmp(const char*, const char*);
|
int strcmp(const char*, const char*);
|
||||||
size_t strcspn(const char*, const char*);
|
size_t strcspn(const char*, const char*);
|
||||||
char* strcpy(char* restrict, const char* restrict);
|
char* strcpy(char* restrict, const char* restrict);
|
||||||
char* strerror(int);
|
char* strerror(int);
|
||||||
size_t strlen(const char*);
|
size_t strlen(const char*);
|
||||||
int strncmp(const char*, const char*, size_t);
|
int strncmp(const char*, const char*, size_t);
|
||||||
|
char* strrchr(const char*, int);
|
||||||
size_t strspn(const char*, const char*);
|
size_t strspn(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);
|
||||||
|
@ -54,7 +56,6 @@ void* memchr(const void*, int, size_t);
|
||||||
void* memmove(void*, const void*, size_t);
|
void* memmove(void*, const void*, size_t);
|
||||||
char* stpcpy(char* restrict, const char* restrict);
|
char* stpcpy(char* restrict, const char* restrict);
|
||||||
char* stpncpy(char* restrict, const char* restrict, size_t);
|
char* stpncpy(char* restrict, const char* restrict, size_t);
|
||||||
char* strchr(const char*, int);
|
|
||||||
int strcoll(const char*, const char*);
|
int strcoll(const char*, const char*);
|
||||||
int strcoll_l(const char*, const char*, locale_t);
|
int strcoll_l(const char*, const char*, locale_t);
|
||||||
char* strdup(const char*);
|
char* strdup(const char*);
|
||||||
|
@ -65,13 +66,16 @@ char* strncpy(char* restrict, const char* restrict, size_t);
|
||||||
char* strndup(const char*, size_t);
|
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* strrchr(const char*, int);
|
|
||||||
char* strsignal(int);
|
char* strsignal(int);
|
||||||
char* strstr(const char*, const char*);
|
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
|
||||||
|
|
||||||
|
#ifdef SORTIX_EXTENSIONS
|
||||||
|
char* strchrnul(const char* str, int c);
|
||||||
|
#endif
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -41,6 +41,9 @@ namespace Maxsi
|
||||||
char* Cat(char* Dest, const char* Src);
|
char* Cat(char* Dest, const char* Src);
|
||||||
char* Tokenize(char* str, const char* delim);
|
char* Tokenize(char* str, const char* delim);
|
||||||
char* TokenizeR(char* str, const char* delim, char** saveptr);
|
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 Compare(const char* A, const char* B);
|
||||||
int CompareN(const char* A, const char* B, size_t MaxLength);
|
int CompareN(const char* A, const char* B, size_t MaxLength);
|
||||||
bool StartsWith(const char* Haystack, const char* Needle);
|
bool StartsWith(const char* Haystack, const char* Needle);
|
||||||
|
|
|
@ -155,6 +155,34 @@ namespace Maxsi
|
||||||
return TokenizeR(str, delim, &lasttokensaveptr);
|
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)
|
bool StartsWith(const char* haystack, const char* needle)
|
||||||
{
|
{
|
||||||
return CompareN(haystack, needle, Length(needle)) == 0;
|
return CompareN(haystack, needle, Length(needle)) == 0;
|
||||||
|
|
Loading…
Reference in New Issue