version 1.1, 2021/11/25 22:31:10
|
version 1.2, 2021/11/26 01:15:03
|
Line 0
|
Line 1
|
|
#include <stdio.h> |
|
#include <unistd.h> |
|
#include <string.h> |
|
#include <elwix.h> |
|
#include <aitcfg.h> |
|
|
|
|
|
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] <config> [section/attribute]\n"); |
|
return 1; |
|
} |
|
argc -= optind; |
|
argv += optind; |
|
if (!argc) { |
|
printf("Error:: missing config.\n\ntestcfg [-r] <config> [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; |
|
} |