diff options
Diffstat (limited to '')
-rw-r--r-- | samples/c/stub.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/samples/c/stub.c b/samples/c/stub.c new file mode 100644 index 0000000..a4608b7 --- /dev/null +++ b/samples/c/stub.c @@ -0,0 +1,84 @@ +#ifdef _MSC_VER +#pragma warning (disable: 4996) +#endif + +#include <stdio.h> +#include <stdlib.h> +#include "libconfig.h" + +int main(int argc, char **argv) +{ + config_t cfg; + FILE *fp; + int i, x; + const char *s; + const config_setting_t *array; + config_setting_t *old; + + fp = fopen("test.cfg", "rb"); + + if(! fp) + { + printf("Unable to open test.cfg\n"); + exit(1); + } + + config_init(&cfg); + x = config_read(&cfg, fp); + + fclose(fp); + + if(! x) + { + printf("error on line %d: %s\n", cfg.error_line, cfg.error_text); + exit(1); + } + + if(! config_lookup_string(&cfg, "application.group1.group2.zzz", &s)) + puts("NOT FOUND"); + else + printf("found: %s\n", s); + + array = config_lookup(&cfg, "application.group1.my_array"); + if(array) + { + for(i = 0; i < config_setting_length(array); i++) + { + long val = config_setting_get_int_elem(array, i); + printf("value [%i]: %ld\n", i, val); + } + } + + { + config_setting_t *root = config_root_setting(&cfg); + + config_setting_t *new = config_setting_add(root, "foobar", + CONFIG_TYPE_LIST); + + config_setting_t *newgrp, *newval; + + + if(! config_setting_set_float_elem(new, -1, 3.141592654)) + puts("FAILED"); + + if(! config_setting_set_string_elem(new, -1, "Hello, world!")) + puts("FAILED"); + + newgrp = config_setting_add(new, NULL, CONFIG_TYPE_GROUP); + + newval = config_setting_add(newgrp, "baz", CONFIG_TYPE_INT); + + old = config_lookup(&cfg, "application.group1"); + + printf("old is: %p\n", old); + config_setting_remove(old, "group2"); + } + + config_write(&cfg, stdout); + + + config_destroy(&cfg); + + + return(0); +} |