--- libaitcfg/example/testcfg.c 2021/11/25 22:31:10 1.1 +++ libaitcfg/example/testcfg.c 2021/11/26 01:15:03 1.2 @@ -0,0 +1,84 @@ +#include +#include +#include +#include +#include + + +int +main(int argc, char **argv) +{ + cfg_root_t cfg; + char ch, *str, *sec, *attr; + array_t *arr; + int i, mode = 0; + struct tagCfg *av; + + while ((ch = getopt(argc, argv, "rd")) != -1) + switch (ch) { + case 'r': + mode = 42; + break; + case 'd': + mode = 21; + break; + default: + printf("Error:: missing config.\n\ntestcfg [-r] [section/attribute]\n"); + return 1; + } + argc -= optind; + argv += optind; + if (!argc) { + printf("Error:: missing config.\n\ntestcfg [-r] [section/attribute]\n"); + return 1; + } else + str = argv[1]; + + if (cfgLoadConfig(argv[0], &cfg)) { + ELIBERR(cfg); + return 1; + } else + printf("Opened config\n"); + + if (str) { + attr = strchr(argv[1], '/'); + if (!attr) { + attr = str; + sec = NULL; + } else { + *attr++ = 0; + sec = str; + } + if (sec && !*sec) + sec = NULL; + printf("Section=%s Attribute=%s\n", sec, attr); + + if (attr && *attr) + printf("%s = %s\n", attr, cfg_getAttribute(&cfg, sec, attr)); + else { + arr = cfg_getSection(&cfg, sec); + if (arr) { + printf("[%s]\n", sec); + for (i = 0; i < array_Size(arr); i++) { + av = array(arr, i, struct tagCfg*); + if (av) + printf("%s = %s\n", + AIT_ADDR(&av->cfg_attr), + AIT_GET_STR(&av->cfg_val)); + } + array_Destroy(&arr); + } + } + } else if (!mode) + cfgWriteConfig(stdout, &cfg, 1); + else if (mode == 42) + cfgWriteConfigRaw(stdout, &cfg, 1); + else + cfg_dumpCfg(&cfg); + + cfgUnloadConfig(&cfg); + printf("Closed config\n"); + + printf("Done.\n"); + return 0; +}