diff options
author | Mattias Andrée <maandree@operamail.com> | 2015-09-01 15:39:09 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2015-09-01 15:39:09 +0200 |
commit | 729db5025b7f98adf17c87a79492b577c59f9704 (patch) | |
tree | 060c62a945a2ea195a7ae015ebf2a979e63af367 /include | |
parent | add strspn functions (diff) | |
download | slibc-729db5025b7f98adf17c87a79492b577c59f9704.tar.gz slibc-729db5025b7f98adf17c87a79492b577c59f9704.tar.bz2 slibc-729db5025b7f98adf17c87a79492b577c59f9704.tar.xz |
add strtok functions
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to '')
-rw-r--r-- | include/string.h | 59 | ||||
-rw-r--r-- | include/wchar.h | 45 |
2 files changed, 104 insertions, 0 deletions
diff --git a/include/string.h b/include/string.h index 676a721..a351e8d 100644 --- a/include/string.h +++ b/include/string.h @@ -1013,6 +1013,65 @@ char* stpbrk(const char*, const char*) __GCC_ONLY(__attribute__((warn_unused_result, nonnull))); +/** + * Tokenise a string. + * + * @param string The string to tokenise on the first, + * `NULL` on subsequent calls. + * All bytes found in `delimiters` will + * be overriden with NUL bytes. + * @param delimiters Delimiting bytes (not characters). + * @return The next non-empty string that does not + * contain a byte from `delimiters`. The + * returned string will be as long as possible. + * `NULL` is returned the search as reached + * the end of the string, and there therefore + * are no more tokens. + */ +char* strtok(char* restrict, const char* restrict) + __GCC_ONLY(__attribute__((warn_unused_result, nonnull(2)))); + +/** + * Tokenise a string. + * + * @param string The string to tokenise on the first, + * `NULL` on subsequent calls. + * All bytes found in `delimiters` will + * be overriden with NUL bytes. + * @param delimiters Delimiting bytes (not characters). + * @param state Pointer to a `char*` that the function + * can use to keep track of its state. + * It is reasonable to make it point to `NULL` + * on the first call. + * @return The next non-empty string that does not + * contain a byte from `delimiters`. The + * returned string will be as long as possible. + * `NULL` is returned the search as reached + * the end of the string, and there therefore + * are no more tokens. + */ +char* strtok_r(char* restrict, const char* restrict, char** restrict) + __GCC_ONLY(__attribute__((warn_unused_result, nonnull(2, 3)))); + +/** + * Tokenise a string. + * + * @param string Pointer to the string to tokenise on the first call, + * will be updated to keep track of the state. + * All bytes found in `delimiters` will + * be overriden with NUL bytes. + * @param delimiters Delimiting bytes (not characters). + * @return The next, possibly empty, string that does + * not contain a byte from `delimiters`. The + * returned string will be as long as possible. + * `NULL` is returned the search as reached + * the end of the string, and there therefore + * are no more tokens. + */ +char* strsep(char** restrict, const char* restrict) + __GCC_ONLY(__attribute__((warn_unused_result, nonnull))); + + #endif diff --git a/include/wchar.h b/include/wchar.h index 31e985d..faf9275 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -978,6 +978,51 @@ wchar_t* wcpbrk(const wchar_t*, const wchar_t*) __GCC_ONLY(__attribute__((warn_unused_result, nonnull))); +/** + * Tokenise a string. + * + * @param string The string to tokenise on the first, + * `NULL` on subsequent calls. + * All characters found in `delimiters` will + * be overriden with NUL characters. + * @param delimiters Delimiting characters. + * @param state Pointer to a `char*` that the function + * can use to keep track of its state. + * It is reasonable to make it point to `NULL` + * on the first call. + * @return The next non-empty string that does not + * contain a byte from `delimiters`. The + * returned string will be as long as possible. + * `NULL` is returned the search as reached + * the end of the string, and there therefore + * are no more tokens. + */ +wchar_t* wcstok(wchar_t* restrict, const wchar_t* restrict, wchar_t** restrict) + __GCC_ONLY(__attribute__((warn_unused_result, nonnull(2, 3)))); + +#if defined(_SLIBC_SOURCE) && !defined(__PORTABLE) +/** + * Tokenise a string. + * + * This is a slibc extension. + * + * @param string Pointer to the string to tokenise on the first call, + * will be updated to keep track of the state. + * All characters found in `delimiters` will + * be overriden with NUL characters. + * @param delimiters Delimiting characters. + * @return The next, possibly empty, string that does + * not contain a byte from `delimiters`. The + * returned string will be as long as possible. + * `NULL` is returned the search as reached + * the end of the string, and there therefore + * are no more tokens. + */ +wchar_t* wcssep(wchar_t** restrict, const wchar_t* restrict) + __GCC_ONLY(__attribute__((warn_unused_result, nonnull))); +#endif + + #endif #endif |