alist.c revision 70e5a7403f0e0a3bd292b8287c5fed5772c15270
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence * Portions Copyright (C) 2004, 2005, 2007 Internet Systems Consortium, Inc. ("ISC")
2baa66562a2f119edffded961d3391f87ff98ec0Ondřej Surý * Portions Copyright (C) 2001 Internet Software Consortium.
bd5040035c8bb3fe4acdaf6a1f26423b58302188Mark Andrews * Permission to use, copy, modify, and/or distribute this software for any
bd5040035c8bb3fe4acdaf6a1f26423b58302188Mark Andrews * purpose with or without fee is hereby granted, provided that the above
bd5040035c8bb3fe4acdaf6a1f26423b58302188Mark Andrews * copyright notice and this permission notice appear in all copies.
2baa66562a2f119edffded961d3391f87ff98ec0Ondřej Surý * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
2baa66562a2f119edffded961d3391f87ff98ec0Ondřej Surý * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence * Portions Copyright (C) 2001 Nominum, Inc.
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley * Permission to use, copy, modify, and distribute this software for any
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * purpose with or without fee is hereby granted, provided that the above
a30e7fc23415fd238d067a8a871607bca36068baMichael Graff * copyright notice and this permission notice appear in all copies.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NOMINUM DISCLAIMS ALL
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein/* $Id: alist.c,v 1.7 2007/06/19 23:47:22 tbox Exp $ */
64b92523f9333ba053f4b2860335583be455b0b3Brian Wellington if (alist == NULL || alist->type != ISCCC_SEXPRTYPE_DOTTEDPAIR)
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence if (car == NULL || car->type != ISCCC_SEXPRTYPE_STRING)
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence if (strcmp(car->value.as_string, ALIST_TAG) != 0)
f54d0c9c6e65de367d4ef08f51d22a2fb4c56208Mark Andrewsisccc_alist_assq(isccc_sexpr_t *alist, const char *key)
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington * Skip alist type tag.
bff8ac12a8c099257bdbf7d0c55d2d5b77591926Mark Andrews INSIST(alist->type == ISCCC_SEXPRTYPE_DOTTEDPAIR);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein INSIST(car->type == ISCCC_SEXPRTYPE_DOTTEDPAIR);
fd837244be31850a764863688bce11df9ce972f4Andreas Gustafsson if (caar->type == ISCCC_SEXPRTYPE_STRING &&
70e854766f5304f43e94212dc38ebaefe214148cMark Andrewsisccc_alist_delete(isccc_sexpr_t *alist, const char *key)
ce67023ae3ad39a77da5361d0187ab6f3f0219cbMark Andrews INSIST(rest->type == ISCCC_SEXPRTYPE_DOTTEDPAIR);
b5f6271f4daf1e54501af2cb7dd278d7e8003d65Mark Andrews INSIST(car != NULL && car->type == ISCCC_SEXPRTYPE_DOTTEDPAIR);
8b56b8956fc1e6c70efacb4f71db28d0d1f0c577Mark Andrewsisccc_alist_define(isccc_sexpr_t *alist, const char *key, isccc_sexpr_t *value)
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * New association.
294ef74e5ad68d898207c4fb36d8b18d526a11f6Curtis Blackburn * We've already got an entry for this key. Replace it.
a16f42441a0bdfc911aafe841a975af55181f2f0Mukund Sivaramanisccc_alist_definestring(isccc_sexpr_t *alist, const char *key, const char *str)
aa5b977943f9ee38241c804484cd84fafec6ff2bMark Andrewsisccc_alist_definebinary(isccc_sexpr_t *alist, const char *key, isccc_region_t *r)
2a1860ad83294da4abe34a72bdb6f5a28b87f2efMark Andrewsisccc_alist_lookup(isccc_sexpr_t *alist, const char *key)
aaaf8d4f4873d21e55c3ffb4f656203d08339865Mark Andrewsisccc_alist_lookupstring(isccc_sexpr_t *alist, const char *key, char **strp)
d8f2dd46cba3a16c2433e85657a5b15543013ca6Mark Andrewsisccc_alist_lookupbinary(isccc_sexpr_t *alist, const char *key, isccc_region_t **r)
289ae548d52bc8f982d9823af64cafda7bd92232Mark Andrewsisccc_alist_prettyprint(isccc_sexpr_t *sexpr, unsigned int indent, FILE *stream)
f54d0c9c6e65de367d4ef08f51d22a2fb4c56208Mark Andrews fprintf(stream, "%.*s%s => ", (int)indent, spaces,