From 567bb68a29812a1e398802c7e86ad35b1901daf1 Mon Sep 17 00:00:00 2001 From: Jan-Piet Mens Date: Wed, 26 Aug 2015 19:38:20 +0200 Subject: [PATCH] ocat: splitter: properly this time --- ocat.c | 7 +------ util.c | 21 +++++++++++++++++++++ util.h | 1 + 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ocat.c b/ocat.c index 4c5a93f..b5b9daa 100644 --- a/ocat.c +++ b/ocat.c @@ -166,12 +166,7 @@ int main(int argc, char **argv) switch (c) { case 1: /* No short option */ - fields = json_mkarray(); - char *f[60], **ff; - splitter(optarg, ",", f); - for (ff = f; ff && *ff; ff++) { - json_append_element(fields, json_mkstring(*ff)); - } + fields = json_splitter(optarg, ","); break; case 'l': list = 1; diff --git a/util.c b/util.c index 271bb04..d12ac5c 100644 --- a/util.c +++ b/util.c @@ -140,3 +140,24 @@ int splitter(char *s, char *sep, char **parts) free(ds); return (nt); } + +/* + * Split a string separated by characters in `sep' into a JSON + * array and return that. + */ + +JsonNode *json_splitter(char *s, char *sep) +{ + char *token, *ds = strdup(s); + JsonNode *array = json_mkarray(); + + if (!ds || !array) + return (NULL); + + for (token = strtok(ds, sep); token && *token; token = strtok(NULL, sep)) { + json_append_element(array, json_mkstring(token)); + } + + free(ds); + return (array); +} diff --git a/util.h b/util.h index c5ab137..7737299 100644 --- a/util.h +++ b/util.h @@ -14,5 +14,6 @@ char *slurp_file(char *filename, int fold_newlines); int json_copy_to_object(JsonNode * obj, JsonNode * object_or_array, int clobber); int json_copy_from_file(JsonNode * obj, char *filename); int splitter(char *s, char *sep, char **parts); +JsonNode *json_splitter(char *s, char *sep); #endif