Annotation of embedaddon/confuse/examples/env.c, revision 1.1
1.1 ! misho 1: /*
! 2: * Example of how an application can allow free-form key=value strings as settings,
! 3: * e.g., custom environment variables the program should set for child processes.
! 4: *
! 5: * env.conf:
! 6: * env {
! 7: * foo = bar
! 8: * baz = foo
! 9: * }
! 10: */
! 11: #include <err.h>
! 12: #include <confuse.h>
! 13: #include <stdio.h>
! 14:
! 15: int main(int argc, char *argv[])
! 16: {
! 17: const char *file = "env.conf";
! 18: cfg_opt_t opts[] = {
! 19: CFG_SEC("env", NULL, CFGF_KEYSTRVAL),
! 20: CFG_END()
! 21: };
! 22: cfg_t *cfg, *sec;
! 23: int rc;
! 24:
! 25: if (argc > 1)
! 26: file = argv[1];
! 27:
! 28: cfg = cfg_init(opts, 0);
! 29: if (!cfg)
! 30: err(1, "Failed cfg_init()");
! 31:
! 32: rc = cfg_parse(cfg, file);
! 33: if (rc != CFG_SUCCESS) {
! 34: if (rc == CFG_FILE_ERROR)
! 35: err(1, "Failed opening %s", file);
! 36:
! 37: errx(1, "Failed parsing %s", file);
! 38: }
! 39:
! 40: sec = cfg_getsec(cfg, "env");
! 41: if (sec) {
! 42: unsigned int i;
! 43:
! 44: for (i = 0; i < cfg_num(sec); i++) {
! 45: cfg_opt_t *opt = cfg_getnopt(sec, i);
! 46:
! 47: printf("%s = \"%s\"\n", cfg_opt_name(opt), cfg_opt_getstr(opt));
! 48: }
! 49: }
! 50:
! 51: // cfg_print(cfg, stdout);
! 52: cfg_free(cfg);
! 53:
! 54: return 0;
! 55: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>