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>