X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=secnet.git;a=blobdiff_plain;f=conffile.c;h=53c334bd6b0279625574242437c3002cc66ac5de;hp=565e37ff9b8ed608ea867106aaebc17156d3b8f9;hb=446353cd8ce62c2feecafb91e7a6cbe97aaa8914;hpb=59230b9b9fc44453f24c6b3cf33a0f4c570a3563 diff --git a/conffile.c b/conffile.c index 565e37f..53c334b 100644 --- a/conffile.c +++ b/conffile.c @@ -35,7 +35,7 @@ struct dict { struct dict *parent; struct searchlist *search; struct entry *entries; - uint32_t size; + int32_t size; }; static struct atomlist *atoms=NULL; @@ -173,9 +173,9 @@ static string_t ntype(uint32_t type) return "**unknown**"; } -static void ptree_indent(uint32_t amount) +static void ptree_indent(int amount) { - uint32_t i; + int i; for (i=0; inext) { assert(l < INT_MAX); l++; } return l; @@ -608,7 +608,7 @@ list_t *list_append(list_t *list, item_t *item) return list_append_list(list,l); } -item_t *list_elem(list_t *l, uint32_t index) +item_t *list_elem(list_t *l, int32_t index) { if (!l) return NULL; if (index==0) return l->item; @@ -639,16 +639,10 @@ void add_closure(dict_t *dict, cstring_t name, apply_fn apply) void *find_cl_if(dict_t *dict, cstring_t name, uint32_t type, bool_t fail_if_invalid, cstring_t desc, struct cloc loc) { - list_t *l; item_t *i; closure_t *cl; - l=dict_lookup(dict,name); - if (!l) { - if (!fail_if_invalid) return NULL; - cfgfatal(loc,desc,"closure \"%s\" not found\n",name); - } - i=list_elem(l,0); + i = dict_find_item(dict,name,fail_if_invalid,desc,loc); if (i->type!=t_closure) { if (!fail_if_invalid) return NULL; cfgfatal(loc,desc,"\"%s\" must be a closure\n",name); @@ -673,6 +667,8 @@ item_t *dict_find_item(dict_t *dict, cstring_t key, bool_t required, if (!required) return NULL; cfgfatal(loc,desc,"required parameter \"%s\" not found\n",key); } + if(list_length(l) != 1) + cfgfatal(loc,desc,"parameter \"%s\" has wrong number of values",key); i=list_elem(l,0); return i; }