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>