Annotation of embedaddon/confuse/examples/addsec.c, revision 1.1.1.1

1.1       misho       1: #ifdef HAVE_CONFIG_H
                      2: #include <config.h>
                      3: #endif
                      4: #include <errno.h>
                      5: #include <string.h>
                      6: #include <locale.h>
                      7: #ifdef HAVE_UNISTD_H
                      8: #include <unistd.h>
                      9: #endif
                     10: #ifdef HAVE_STDLIB_H
                     11: #include <stdlib.h>
                     12: #endif
                     13: #include "confuse.h"
                     14: 
                     15: cfg_t *cfg = NULL;
                     16: const char *config_filename = "./reread.conf";
                     17: 
                     18: void read_config(void)
                     19: {
                     20:        static cfg_opt_t arg_opts[] = {
                     21:                CFG_STR("value", "default", CFGF_NONE),
                     22:                CFG_END()
                     23:        };
                     24:        cfg_opt_t opts[] = {
                     25:                CFG_INT("delay", 3, CFGF_NONE),
                     26:                CFG_STR("message", "This is a message", CFGF_NONE),
                     27:                CFG_SEC("argument", arg_opts, CFGF_MULTI | CFGF_TITLE),
                     28:                CFG_END()
                     29:        };
                     30: 
                     31:        cfg = cfg_init(opts, CFGF_NONE);
                     32:        if (cfg_parse(cfg, config_filename) != CFG_SUCCESS) {
                     33:                fprintf(stderr, "Failed parsing configuration: %s\n", strerror(errno));
                     34:                exit(1);
                     35:        }
                     36: }
                     37: 
                     38: void print_message()
                     39: {
                     40:        size_t i;
                     41: 
                     42:        printf("Message: %s", cfg_getstr(cfg, "message"));
                     43:        for (i = 0; i < cfg_size(cfg, "argument"); i++) {
                     44:                cfg_t *arg;
                     45: 
                     46:                arg = cfg_getnsec(cfg, "argument", i);
                     47:                if (arg)
                     48:                        printf(", %s", cfg_getstr(arg, "value"));
                     49:        }
                     50:        printf("\n");
                     51: }
                     52: 
                     53: int main(void)
                     54: {
                     55:        cfg_t* sec;
                     56: 
                     57:        /* Localize messages & types according to environment, since v2.9 */
                     58: #ifdef LC_MESSAGES
                     59:        setlocale(LC_MESSAGES, "");
                     60:        setlocale(LC_CTYPE, "");
                     61: #endif
                     62: 
                     63:        read_config();
                     64:        print_message();
                     65: 
                     66:        /* Add a new section */
                     67:        sec = cfg_addtsec(cfg, "argument", "two");
                     68:        cfg_setstr(sec, "value", "foo");
                     69:        print_message();
                     70: 
                     71:        cfg_free(cfg);
                     72: 
                     73:        return 0;
                     74: 
                     75: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>