chiark / gitweb /
Add kvp_make(), to make a kvp list in a single function call.
[disorder] / lib / kvp.c
index 9cd05542d69ea1bc54a91f3f017a10e2b7a1dd2d..c56249d2e707df687768fd4708e2ae96786e9226 100644 (file)
--- a/lib/kvp.c
+++ b/lib/kvp.c
@@ -201,6 +201,25 @@ const char *kvp_get(const struct kvp *kvp, const char *name) {
   return kvp ? kvp->value : 0;
 }
 
+struct kvp *kvp_make(const char *name, ...) {
+  const char *value;
+  struct kvp *kvp = 0, *k;
+  va_list ap;
+
+  va_start(ap, name);
+  while(name) {
+    value = va_arg(ap, const char *);
+    k = xmalloc(sizeof *k);
+    k->name = name;
+    k->value = value ? xstrdup(value) : value;
+    k->next = kvp;
+    kvp = k;
+    name = va_arg(ap, const char *);
+  }
+  va_end(ap);
+  return kvp;
+}
+
 /*
 Local Variables:
 c-basic-offset:2