Annotation of embedaddon/confuse/examples/env.c, revision 1.1.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>