Annotation of embedaddon/confuse/doc/listing8.c, revision 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>