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>