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>