Lines Matching refs:parser

7 /*	configuration parser utilities
14 /* CFG_PARSER *cfg_parser_free(parser)
15 /* CFG_PARSER *parser;
17 /* char *cfg_get_str(parser, name, defval, min, max)
18 /* const CFG_PARSER *parser;
24 /* int cfg_get_int(parser, name, defval, min, max)
25 /* const CFG_PARSER *parser;
31 /* int cfg_get_bool(parser, name, defval)
32 /* const CFG_PARSER *parser;
36 /* DICT_OWNER cfg_get_owner(parser)
37 /* const CFG_PARSER *parser;
45 /* \fIcfg_parser_alloc\fR initializes the parser. The result
48 /* \fIcfg_parser_free\fR releases the parser.
118 static char *get_dict_str(const struct CFG_PARSER *parser,
125 if ((strval = dict_lookup(parser->name, name)) == 0)
131 parser->name, len, min, name, strval);
134 parser->name, len, max, name, strval);
140 static char *get_main_str(const struct CFG_PARSER *parser,
148 vstring_sprintf(buf, "%s_%s", parser->name, name);
154 static int get_dict_int(const struct CFG_PARSER *parser,
162 if ((strval = dict_lookup(parser->name, name)) != 0) {
167 parser->name, name, strval);
172 parser->name, name, intval, min);
175 parser->name, name, intval, max);
181 static int get_main_int(const struct CFG_PARSER *parser,
188 vstring_sprintf(buf, "%s_%s", parser->name, name);
194 static int get_dict_bool(const struct CFG_PARSER *parser,
200 if ((strval = dict_lookup(parser->name, name)) != 0) {
207 parser->name, name, strval);
216 static int get_main_bool(const struct CFG_PARSER *parser,
223 vstring_sprintf(buf, "%s_%s", parser->name, name);
227 /* initialize parser */
232 CFG_PARSER *parser;
236 msg_fatal("%s: null parser name", myname);
237 parser = (CFG_PARSER *) mymalloc(sizeof(*parser));
238 parser->name = mystrdup(pname);
239 if (*parser->name == '/' || *parser->name == '.') {
240 if (dict_load_file_xt(parser->name, parser->name) == 0) {
241 myfree(parser->name);
242 myfree((void *) parser);
245 parser->get_str = get_dict_str;
246 parser->get_int = get_dict_int;
247 parser->get_bool = get_dict_bool;
248 dict = dict_handle(parser->name);
250 parser->get_str = get_main_str;
251 parser->get_int = get_main_int;
252 parser->get_bool = get_main_bool;
257 parser->owner = dict->owner;
258 return (parser);
263 char *cfg_get_str(const CFG_PARSER *parser, const char *name,
269 strval = parser->get_str(parser, name, (defval ? defval : ""), min, max);
276 msg_info("%s: %s: %s = %s", myname, parser->name, name,
283 int cfg_get_int(const CFG_PARSER *parser, const char *name, int defval,
289 intval = parser->get_int(parser, name, defval, min, max);
291 msg_info("%s: %s: %s = %d", myname, parser->name, name, intval);
297 int cfg_get_bool(const CFG_PARSER *parser, const char *name, int defval)
302 intval = parser->get_bool(parser, name, defval);
304 msg_info("%s: %s: %s = %s", myname, parser->name, name,
309 /* release parser */
311 CFG_PARSER *cfg_parser_free(CFG_PARSER *parser)
315 if (parser->name == 0 || *parser->name == 0)
316 msg_panic("%s: null parser name", myname);
317 if (*parser->name == '/' || *parser->name == '.') {
318 if (dict_handle(parser->name))
319 dict_unregister(parser->name);
321 myfree(parser->name);
322 myfree((void *) parser);