X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=conffile.c;h=e6cf48fa558604068f11558d4c5c5bfc2687ef96;hb=328292c7927b477d9a732f21732edf5885d67793;hp=bf4891eadb91c3c72d975fea3922e1b85e97b5a1;hpb=c215a4bc817daf7b5631236c3c7b6a509479b034;p=secnet.git diff --git a/conffile.c b/conffile.c index bf4891e..e6cf48f 100644 --- a/conffile.c +++ b/conffile.c @@ -5,7 +5,7 @@ * * secnet 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 d of the License, or + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * secnet is distributed in the hope that it will be useful, but @@ -661,6 +661,7 @@ void *find_cl_if(dict_t *dict, cstring_t name, uint32_t type, closure_t *cl; i = dict_find_item(dict,name,fail_if_invalid,desc,loc); + if (!i) return NULL; if (i->type!=t_closure) { if (!fail_if_invalid) return NULL; cfgfatal(loc,desc,"\"%s\" must be a closure\n",name); @@ -767,6 +768,21 @@ bool_t dict_read_bool(dict_t *dict, cstring_t key, bool_t required, return r; } +dict_t *dict_read_dict(dict_t *dict, cstring_t key, bool_t required, + cstring_t desc, struct cloc loc) +{ + item_t *i; + dict_t *r; + + i=dict_find_item(dict,key,required,desc,loc); + if (!i) return NULL; + if (i->type!=t_dict) { + cfgfatal(loc,desc,"\"%s\" must be a dictionary\n",key); + } + r=i->data.dict; + return r; +} + uint32_t string_to_word(cstring_t s, struct cloc loc, struct flagstr *f, cstring_t desc) {