aboutsummaryrefslogtreecommitdiff
path: root/src/base/string/split.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/base/string/split.c')
-rw-r--r--src/base/string/split.c26
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;
}
-