diff options
Diffstat (limited to 'src/librc/librc-stringlist.c')
-rw-r--r-- | src/librc/librc-stringlist.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/librc/librc-stringlist.c b/src/librc/librc-stringlist.c index 4dc07030..35889fb7 100644 --- a/src/librc/librc-stringlist.c +++ b/src/librc/librc-stringlist.c @@ -80,6 +80,31 @@ bool rc_stringlist_delete(RC_STRINGLIST *list, const char *value) } librc_hidden_def(rc_stringlist_delete) +RC_STRING *rc_stringlist_find(RC_STRINGLIST *list, const char *value) +{ + RC_STRING *s; + + TAILQ_FOREACH(s, list, entries) + if (strcmp(s->value, value) == 0) + return s; + return NULL; +} +librc_hidden_def(rc_stringlist_find) + +RC_STRINGLIST *rc_stringlist_split(const char *value, const char *sep) +{ + RC_STRINGLIST *list = rc_stringlist_new(); + char *d = xstrdup(value); + char *p = d, *token; + + while ((token = strsep(&p, sep))) + rc_stringlist_add(list, token); + free(d); + + return list; +} +librc_hidden_def(rc_stringlist_split) + void rc_stringlist_sort(RC_STRINGLIST **list) { RC_STRINGLIST *l = *list; |