diff options
author | harshit <harshitsharmajs@gmail.com> | 2020-05-15 10:40:02 +0530 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2020-05-28 09:52:51 +0000 |
commit | 7a6f27ce1ed8ad535aaff13cc36af30b228556cc (patch) | |
tree | 776cec026f5ed3838354c2c0401f4093a47e005b | |
parent | 58b8054ccacd0877bd52b640c7938f7582f6d69a (diff) |
lib: Add strtok() and strtok_r()
Add strtok() and strtok_r() to the library.
Signed-off-by: Harshit Sharma <harshitsharmajs@gmail.com>
Change-Id: Ic855b31669be1c274cbf247c53ffa6f74ec5bf35
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41420
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
-rw-r--r-- | src/include/string.h | 2 | ||||
-rw-r--r-- | src/lib/string.c | 25 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/include/string.h b/src/include/string.h index f923ca5c02..8eef0680cb 100644 --- a/src/include/string.h +++ b/src/include/string.h @@ -29,6 +29,8 @@ int strcmp(const char *s1, const char *s2); int strncmp(const char *s1, const char *s2, int maxlen); int strspn(const char *str, const char *spn); int strcspn(const char *str, const char *spn); +char *strtok_r(char *str, const char *delim, char **ptr); +char *strtok(char *str, const char *delim); long atol(const char *str); /** diff --git a/src/lib/string.c b/src/lib/string.c index f0c24edcfc..e8f72a28e8 100644 --- a/src/lib/string.c +++ b/src/lib/string.c @@ -163,6 +163,31 @@ int strcspn(const char *str, const char *spn) return ret; } +char *strtok_r(char *str, const char *delim, char **ptr) +{ + char *start; + char *end; + + if (str == NULL) + str = *ptr; + start = str + strspn(str, delim); + if (start[0] == '\0') + return NULL; + + end = start + strcspn(start, delim); + *ptr = end; + if (end[0] != '\0') + *(*ptr)++ = '\0'; + return start; +} + +char *strtok(char *str, const char *delim) +{ + static char *strtok_ptr; + + return strtok_r(str, delim, &strtok_ptr); +} + long atol(const char *str) { long ret = 0; |