#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; }