summaryrefslogtreecommitdiff
path: root/src/librc/librc-stringlist.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-09-18 15:12:43 +0000
committerRoy Marples <roy@marples.name>2008-09-18 15:12:43 +0000
commite0dfa472d1d32268d08a91cc37606bd0ec803a11 (patch)
tree62f022233e7be1c607f536c9deba75db4d009d65 /src/librc/librc-stringlist.c
parentccc24d1086ec4a5110739e3b352bb1dc2967a9ff (diff)
downloadopenrc-e0dfa472d1d32268d08a91cc37606bd0ec803a11.tar.gz
openrc-e0dfa472d1d32268d08a91cc37606bd0ec803a11.tar.bz2
openrc-e0dfa472d1d32268d08a91cc37606bd0ec803a11.tar.xz
Add new functions, rc_stringlist_find and rc_stringlist_split.
Diffstat (limited to 'src/librc/librc-stringlist.c')
-rw-r--r--src/librc/librc-stringlist.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/librc/librc-stringlist.c b/src/librc/librc-stringlist.c
index 4dc0703..35889fb 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;