Annotation of embedaddon/confuse/doc/listing8.c, revision 1.1.1.1
1.1 misho 1: #include <stdio.h>
2: #include <confuse.h>
3:
4: int validate_unsigned_int(cfg_t *cfg, cfg_opt_t *opt)
5: {
6: int value = cfg_opt_getnint(opt, cfg_opt_size(opt) - 1);
7: if(value < 0)
8: {
9: cfg_error(cfg, "integer option '%s' must be positive in section '%s'",
10: opt->name, cfg->name);
11: return -1;
12: }
13: return 0;
14: }
15:
16: int main(void)
17: {
18: cfg_opt_t greet_opts[] =
19: {
20: CFG_STR_LIST("targets", "{World}", CFGF_NONE),
21: CFG_INT("repeat", 1, CFGF_NONE),
22: CFG_END()
23: };
24: cfg_opt_t opts[] =
25: {
26: CFG_SEC("greeting", greet_opts, CFGF_TITLE | CFGF_MULTI),
27: CFG_END()
28: };
29: cfg_t *cfg, *cfg_greet;
30: int repeat;
31: int i, j;
32:
33: cfg = cfg_init(opts, CFGF_NONE);
34: cfg_set_validate_func(cfg, "greeting|repeat", validate_unsigned_int);
35: if(cfg_parse(cfg, "hello.conf") == CFG_PARSE_ERROR)
36: return 1;
37:
38: for(j = 0; j < cfg_size(cfg, "greeting"); j++)
39: {
40: cfg_greet = cfg_getnsec(cfg, "greeting", j);
41:
42: repeat = cfg_getint(cfg_greet, "repeat");
43: while(repeat--)
44: {
45: printf("%s", cfg_title(cfg_greet));
46: for(i = 0; i < cfg_size(cfg_greet, "targets"); i++)
47: printf(", %s", cfg_getnstr(cfg_greet, "targets", i));
48: printf("!\n");
49: }
50: }
51:
52: cfg_free(cfg);
53: return 0;
54: }
55:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>