diff options
Diffstat (limited to '')
-rw-r--r-- | samples/c/sample3.c | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/samples/c/sample3.c b/samples/c/sample3.c new file mode 100644 index 0000000..22f5f36 --- /dev/null +++ b/samples/c/sample3.c @@ -0,0 +1,104 @@ +/************************************************************************* + ** Sample3 + ** Load sample.cfg and try to add a setting "foo".. + ** on success save to testfoo.cfg + *************************************************************************/ + +#include <stdio.h> +#include <libconfig.h> + +/***************************************************************************/ + +/* + */ + +int print_path(config_setting_t *setting) +{ + if(setting) + { + const char *name = config_setting_name(setting); + + if(print_path(config_setting_parent(setting))) + putchar('.'); + + if(! config_setting_is_root(setting)) + { + if(! name) + printf("[%d]", config_setting_index(setting)); + else + printf(name); + + return(1); + } + } + + return(0); +} + +/* + */ + +int main() +{ + struct config_t cfg; + config_setting_t *setting = NULL; + int i; + + do + { + /* Initialize the configuration */ + config_init(&cfg); + + /* Load the file */ + printf("loading [sample.cfg]..."); + if (!config_read_file(&cfg, "sample.cfg")) + { + puts("failed"); + break; + } + + puts("ok"); + + /* Add setting "foo" */ + printf("add setting \"foo\"..."); + setting = config_setting_add(cfg.root, "foo", CONFIG_TYPE_INT); + if (!setting) + { + puts("failed"); + break; + } + + config_setting_set_int(setting, 1234); + puts("ok"); + + /** Look up an array element */ + printf("looking up array element..."); + setting = config_lookup(&cfg, "arrays.values.[0]"); + if(! setting) + { + puts("failed"); + break; + } + + printf("value is: %d\n", config_setting_get_int(setting)); + printf("path is: "); + print_path(setting); + putchar('\n'); + + /* Save to "samplefoo.cfg" */ + printf("saving [samplefoo.cfg]..."); + config_write_file(&cfg, "samplefoo.cfg"); + puts("ok"); + + puts("Done!"); + } + while(0); + + /* Free the configuration */ + config_destroy(&cfg); + + return 0; +} + + +/***************************************************************************/ |