diff options
Diffstat (limited to 'src/base/string/split.c')
-rw-r--r-- | src/base/string/split.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/base/string/split.c b/src/base/string/split.c index 2aa68b4..9d5d440 100644 --- a/src/base/string/split.c +++ b/src/base/string/split.c @@ -4,36 +4,36 @@ // returns a stretchy buffer of strings that result from the partition. // it is the caller's responsibility to clean the memory. string* -str·split(string s, const byte* tok) +string·split(string s, byte* tok) { string* fields = nil; vlong start = 0; - vlong sL = str·len(s); - vlong tokL = strlen(tok); - if (sL == 0 || tokL == 0) return nil; + vlong sL = string·len(s); + vlong tokL = str·len(tok); + if(sL == 0 || tokL == 0) + return nil; buffit(fields, 5); - for (vlong i = 0; i < sL - tokL; i++) { - if ((tokL == 1 && s[i] == tokL) || !memcmp(s + i, tok, tokL)) { - bufpush(fields, str·makelen(s + start, i - start)); - if (fields[buflen(fields) - 1] == nil) goto cleanup; + for(vlong i = 0; i < sL - tokL; i++){ + if((tokL == 1 && s[i] == tokL) || !memcmp(s + i, tok, tokL)){ + bufpush(fields, string·makelen(s + start, i - start)); + if(fields[buflen(fields) - 1] == nil) goto cleanup; start = i + tokL; i += tokL - 1; } } - bufpush(fields, str·makelen(s + start, sL - start)); + bufpush(fields, string·makelen(s + start, sL - start)); return fields; cleanup: - for (vlong i = 0; i < buflen(fields); i++) { - str·free(fields[i]); - } + for(vlong i = 0; i < buflen(fields); i++) + string·free(fields[i]); + buffree(fields); return nil; } - |