Annotation of embedaddon/confuse/examples/nested.c, revision 1.1.1.1
1.1 misho 1: /* Example by Thomas Adam */
2:
3: #include <confuse.h>
4: #include <stdio.h>
5: #include <string.h>
6:
7: #define CONF "nested.conf"
8:
9: int main(void)
10: {
11: cfg_opt_t group_opts[] = {
12: CFG_INT("number", 0, CFGF_NONE),
13: CFG_INT("total", 0, CFGF_NONE),
14: CFG_END()
15: };
16: cfg_opt_t groups_opts[] = {
17: CFG_STR("name", "Esmé", CFGF_NONE),
18: CFG_SEC("group", group_opts, CFGF_TITLE | CFGF_MULTI),
19: CFG_END()
20: };
21: cfg_opt_t opts[] = {
22: CFG_SEC("groups", groups_opts, CFGF_NONE),
23: CFG_END()
24: };
25: cfg_t *cfg, *sec;
26: size_t i, j;
27:
28: cfg = cfg_init(opts, CFGF_NONE);
29: if (!cfg || cfg_parse(cfg, CONF) == CFG_PARSE_ERROR) {
30: perror("Failed parsing " CONF);
31: return 1;
32: }
33:
34: /* Iterate over the sections and print fields from each section. */
35: for (i = 0; i < cfg_size(cfg, "groups"); i++) {
36: sec = cfg_getnsec(cfg, "groups", i);
37:
38: for (j = 0; j < cfg_size(sec, "group"); j++) {
39: cfg_t *opt = cfg_getnsec(sec, "group", j);
40:
41: printf("group title: '%s'\n", cfg_title(opt));
42: printf("group number: %ld\n", cfg_getint(opt, "number"));
43: printf("group total: %ld\n", cfg_getint(opt, "total"));
44: printf("\n");
45: }
46: }
47:
48: cfg_free(cfg);
49:
50: return 0;
51: }
52:
53: /**
54: * Local Variables:
55: * indent-tabs-mode: t
56: * c-file-style: "linux"
57: * End:
58: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>