version 1.1.2.1, 2025/01/30 12:28:41
|
version 1.1.2.3, 2025/01/30 14:34:25
|
Line 2
|
Line 2
|
#include "aitcfg.h" |
#include "aitcfg.h" |
|
|
|
|
|
cfg_root_t cfg; |
|
char cfgname[MAXPATHLEN], section[STRSIZ]; |
|
|
|
|
|
static void |
|
Usage(const char *prog) |
|
{ |
|
printf( " -= CFGPROG =- ELWIX config tool ver.%s\n" |
|
"(C)`25 by Michael Pounov <misho@elwix.org>\n" |
|
"==========================================\n" |
|
" Syntax: %s [-options] <config> [attribute] [value]\n\n" |
|
"\t-s <section>\tScope of attribute\n" |
|
"\t-w\t\tSet and write attribute\n" |
|
"\t-v\t\tVerbose, more -v more verbosity\n" |
|
"\t-h\t\tHelp, this help screen!\n", |
|
PACKAGE_VERSION, prog); |
|
} |
|
|
int |
int |
main(int argc, char **argv) | Get(const char *prog, int argc, char **argv) |
{ |
{ |
|
const char *str; |
|
int i, ret = 0; |
|
array_t *sec; |
|
struct tagCfg *av; |
|
|
|
EVERBS(1) printf("Get value for %s in scope %s from config %s\n", |
|
*argv ? *argv : "*", section, prog); |
|
|
|
if (*argv) { |
|
str = cfg_getAttribute(&cfg, section, *argv); |
|
if (str) |
|
printf("%s=%s\n", *argv, str); |
|
else |
|
ret = 3; |
|
} else { |
|
sec = cfg_getSection(&cfg, section); |
|
if (sec) { |
|
for (i = 0; i < array_Size(sec) && |
|
(av = array(sec, i, struct tagCfg*)); i++) { |
|
if (AIT_GET_STR(&av->cfg_attr)) |
|
printf("%s=%s\n", |
|
AIT_GET_STR(&av->cfg_attr), |
|
AIT_GET_STR(&av->cfg_val)); |
|
} |
|
array_Destroy(&sec); |
|
} else |
|
ret = 3; |
|
} |
|
|
|
return ret; |
|
} |
|
|
|
int |
|
Set(const char *prog, int argc, char **argv) |
|
{ |
|
if (argc < 2) { |
|
printf("Error:: missing attribute and value arguments!\n"); |
|
return 1; |
|
} |
|
|
|
EVERBS(1) printf("Set value %s for %s in scope %s from config %s\n", |
|
argv[1], argv[0], section, prog); |
|
|
return 0; |
return 0; |
|
} |
|
|
|
|
|
int |
|
main(int argc, char **argv) |
|
{ |
|
int ch, ret = 0; |
|
int (*run)(const char*, int, char**) = Get; |
|
const char *prog; |
|
char *str; |
|
|
|
if (!argv || !*argv) |
|
prog = "cfgprog"; |
|
else if (!(prog = strrchr(*argv, '/'))) |
|
prog = *argv; |
|
else |
|
prog++; |
|
|
|
while ((ch = getopt(argc, argv, "hvws:")) != -1) |
|
switch (ch) { |
|
case 'w': |
|
run = Set; |
|
break; |
|
case 's': |
|
strlcpy(section, optarg, sizeof section); |
|
break; |
|
case 'v': |
|
e_incVerbose; |
|
break; |
|
default: |
|
Usage(prog); |
|
return 1; |
|
} |
|
argc -= optind; |
|
argv += optind; |
|
|
|
if (!strcmp(prog, "cfg_set")) |
|
run = Set; |
|
else if (!strcmp(prog, "cfg_get")) |
|
run = Get; |
|
|
|
if (!argc) { |
|
printf("Error:: missing config name!\n"); |
|
Usage(prog); |
|
return 1; |
|
} else { |
|
strlcpy(cfgname, *argv, sizeof cfgname); |
|
argc--; |
|
argv++; |
|
} |
|
|
|
if (argc && *argv && (str = strchr(*argv, '/'))) { |
|
*str++ = 0; |
|
strlcpy(section, *argv, sizeof section); |
|
*argv = str; |
|
} |
|
|
|
if (cfgLoadConfig(cfgname, &cfg)) { |
|
printf("Error:: load config %s #%d - %s\n", |
|
cfgname, cfg_GetErrno(), cfg_GetError()); |
|
return 2; |
|
} |
|
|
|
ret = run(prog, argc, argv); |
|
|
|
cfgUnloadConfig(&cfg); |
|
return ret; |
} |
} |