X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/b12be54a68a7738d948d866eb7b9231f8e55a12e..0d047a120ff50d000dce22d7cc8b141a24ce8de9:/lib/kvp.h diff --git a/lib/kvp.h b/lib/kvp.h index 98c62cd..732a8a6 100644 --- a/lib/kvp.h +++ b/lib/kvp.h @@ -1,21 +1,22 @@ /* * This file is part of DisOrder. - * Copyright (C) 2004, 2005 Richard Kettlewell + * Copyright (C) 2004, 2005, 2007, 2008 Richard Kettlewell * - * This program is free software; you can redistribute it and/or modify + * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or + * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA + * along with this program. If not, see . + */ +/** @file lib/kvp.h + * @brief Linked list of key-value pairs */ #ifndef KVP_H @@ -24,10 +25,22 @@ struct dynstr; struct sink; +/** @brief Linked list of key-value pairs */ struct kvp { - struct kvp *next; /* next entry */ - const char *name; /* name */ - const char *value; /* value */ + /** @brief Next entry */ + struct kvp *next; + + /** @brief Name + * + * Might not be unique. Must not be null. + */ + const char *name; + + /** @brief Value + * + * Must not be null. + */ + const char *value; }; struct kvp *kvp_urldecode(const char *ptr, size_t n); @@ -52,10 +65,13 @@ int urlencode(struct sink *sink, const char *s, size_t n); /* url-encode the @n@ bytes at @s@, writing to @sink@. Return 0 on * success, -1 on error. */ -const char *urlencodestring(const char *s); +char *urlencodestring(const char *s); /* return the url-encoded form of @s@ */ -const char *urldecodestring(const char *s, size_t ns); +char *urldecodestring(const char *s, size_t ns); +struct kvp *kvp_make(const char *key, ...); + +void kvp_free(struct kvp *k); #endif /* KVP_H */