diff options
author | Jukka Jylänki <jujjyl@gmail.com> | 2014-03-16 04:11:23 +0200 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2014-03-28 23:06:17 -0400 |
commit | 64300b2ea56bfe6f09f855cfd7f7f6d99ec39bfe (patch) | |
tree | 321fbe00d7b073c0ef829d279786809ce0955056 /system | |
parent | bbc711d5c719bbd14cd7849309e89608ae13d287 (diff) |
Migrate to using musl 0.9.13 strtok and strtok_r for better asm.js performance.
Diffstat (limited to 'system')
-rw-r--r-- | system/lib/libc/musl/src/string/strtok.c | 13 | ||||
-rw-r--r-- | system/lib/libc/musl/src/string/strtok_r.c | 12 | ||||
-rw-r--r-- | system/lib/libcextra.symbols | 2 |
3 files changed, 27 insertions, 0 deletions
diff --git a/system/lib/libc/musl/src/string/strtok.c b/system/lib/libc/musl/src/string/strtok.c new file mode 100644 index 00000000..35087902 --- /dev/null +++ b/system/lib/libc/musl/src/string/strtok.c @@ -0,0 +1,13 @@ +#include <string.h> + +char *strtok(char *restrict s, const char *restrict sep) +{ + static char *p; + if (!s && !(s = p)) return NULL; + s += strspn(s, sep); + if (!*s) return p = 0; + p = s + strcspn(s, sep); + if (*p) *p++ = 0; + else p = 0; + return s; +} diff --git a/system/lib/libc/musl/src/string/strtok_r.c b/system/lib/libc/musl/src/string/strtok_r.c new file mode 100644 index 00000000..862d4fe4 --- /dev/null +++ b/system/lib/libc/musl/src/string/strtok_r.c @@ -0,0 +1,12 @@ +#include <string.h> + +char *strtok_r(char *restrict s, const char *restrict sep, char **restrict p) +{ + if (!s && !(s = *p)) return NULL; + s += strspn(s, sep); + if (!*s) return *p = 0; + *p = s + strcspn(s, sep); + if (**p) *(*p)++ = 0; + else *p = 0; + return s; +} diff --git a/system/lib/libcextra.symbols b/system/lib/libcextra.symbols index 7846f153..64ba670a 100644 --- a/system/lib/libcextra.symbols +++ b/system/lib/libcextra.symbols @@ -131,6 +131,8 @@ T strsep T strspn T strstr + T strtok + T strtok_r T strverscmp T strxfrm W strxfrm_l |