diff options
-rw-r--r-- | src/string/new.c | 22 | ||||
-rw-r--r-- | src/wchar/new.c | 22 |
2 files changed, 44 insertions, 0 deletions
diff --git a/src/string/new.c b/src/string/new.c index 2434659..6c035e0 100644 --- a/src/string/new.c +++ b/src/string/new.c @@ -416,3 +416,25 @@ char* (strnprcbrk)(const char* string, const char* skipset, size_t maxlen) /* sl return r; } +char* memmemmove(char* whither, const char* whence, const char* restrict str, + size_t strsize, size_t size) /* slibc: completeness */ +{ + char* stop = (memmem)(whence, size, str, strsize); + void* r = NULL; + if (stop != NULL) + size = (size_t)(stop - (const char*)whence), r = whither + size; + memmove(whither, whence, size); + return r; +} + +char* memmemcpy(void* whither, const void* whence, const char* restrict str, + size_t strsize, size_t size) /* slibc: completeness */ +{ + char* stop = (memmem)(whence, size, str, strsize); + void* r = NULL; + if (stop != NULL) + size = (size_t)(stop - (const char*)whence), r = whither + size; + memcpy(whither, whence, size); + return r; +} + diff --git a/src/wchar/new.c b/src/wchar/new.c index 3f76087..f1ee58c 100644 --- a/src/wchar/new.c +++ b/src/wchar/new.c @@ -334,3 +334,25 @@ wchar_t* (wcsnprcbrk)(const wchar_t* string, const wchar_t* skipset, size_t maxl return found ? string : NULL; } +wchar_t* wmemmemmove(wchar_t* whither, const wchar_t* whence, const wchar_t* restrict str, + size_t strsize, size_t size) /* slibc: completeness */ +{ + wchar_t* stop = (wmemmem)(whence, size, str, strsize); + wchar_t* r = NULL; + if (stop != NULL) + size = (size_t)(stop - whence), r = whither + size; + wmemmove(whither, whence, size); + return r; +} + +char* wmemmemcpy(wchar_t* whither, const wchar_t* whence, const wchar_t* restrict str, + size_t strsize, size_t size) /* slibc: completeness */ +{ + wchar_t* stop = (wmemmem)(whence, size, str, strsize); + wchar_t* r = NULL; + if (stop != NULL) + size = (size_t)(stop - whence), r = whither + size; + wmemcpy(whither, whence, size); + return r; +} + |