chiark / gitweb /
Add kvp_make(), to make a kvp list in a single function call.
authorRichard Kettlewell <rjk@greenend.org.uk>
Sun, 8 Jun 2008 10:49:21 +0000 (11:49 +0100)
committerRichard Kettlewell <rjk@greenend.org.uk>
Sun, 8 Jun 2008 10:49:21 +0000 (11:49 +0100)
lib/kvp.c
lib/kvp.h

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
index 0daa9d2fb04aa8c884ac889f3cf0bfec9c7ffb49..dcdca5f89df80136370ef07a6887d0cb8e94a04d 100644 (file)
--- a/lib/kvp.h
+++ b/lib/kvp.h
@@ -56,6 +56,7 @@ char *urlencodestring(const char *s);
 /* return the url-encoded form of @s@ */
 
 char *urldecodestring(const char *s, size_t ns);
+struct kvp *kvp_make(const char *key, ...);
 
 #endif /* KVP_H */