|
version 1.1.2.2, 2025/01/30 14:09:54
|
version 1.2.2.1, 2025/02/19 12:09:37
|
|
Line 3
|
Line 3
|
| |
|
| |
|
| cfg_root_t cfg; |
cfg_root_t cfg; |
| char cfgname[MAXPATHLEN], section[STRSIZ]; | char cfgname[MAXPATHLEN], outname[MAXPATHLEN], section[STRSIZ]; |
| | FILE *out; |
| |
|
| |
|
| static void |
static void |
|
Line 14 Usage(const char *prog)
|
Line 15 Usage(const char *prog)
|
| "==========================================\n" |
"==========================================\n" |
| " Syntax: %s [-options] <config> [attribute] [value]\n\n" |
" Syntax: %s [-options] <config> [attribute] [value]\n\n" |
| "\t-s <section>\tScope of attribute\n" |
"\t-s <section>\tScope of attribute\n" |
| |
"\t-o <file>\tWrite updated config to file\n" |
| "\t-w\t\tSet and write attribute\n" |
"\t-w\t\tSet and write attribute\n" |
| "\t-v\t\tVerbose, more -v more verbosity\n" |
"\t-v\t\tVerbose, more -v more verbosity\n" |
| "\t-h\t\tHelp, this help screen!\n", |
"\t-h\t\tHelp, this help screen!\n", |
|
Line 23 Usage(const char *prog)
|
Line 25 Usage(const char *prog)
|
| int |
int |
| Get(const char *prog, 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", |
EVERBS(1) printf("Get value for %s in scope %s from config %s\n", |
| *argv ? *argv : "*", section, prog); |
*argv ? *argv : "*", section, prog); |
| |
|
| return 0; | if (*argv) { |
| | str = cfg_getAttribute(&cfg, section, *argv); |
| | if (str) |
| | printf("%s\n", 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 |
int |
|
Line 40 Set(const char *prog, int argc, char **argv)
|
Line 68 Set(const char *prog, int argc, char **argv)
|
| EVERBS(1) printf("Set value %s for %s in scope %s from config %s\n", |
EVERBS(1) printf("Set value %s for %s in scope %s from config %s\n", |
| argv[1], argv[0], section, prog); |
argv[1], argv[0], section, prog); |
| |
|
| |
if (!*argv[1]) { |
| |
if (cfg_unsetAttribute(&cfg, section, argv[0]) < 1) |
| |
return 3; |
| |
} else if (cfg_setAttribute(&cfg, section, argv[0], argv[1]) < 1) |
| |
return 3; |
| |
|
| |
if (*outname) { |
| |
out = fopen(outname, "w"); |
| |
if (!out) { |
| |
printf("Error:: can't create file %s #%d - %s\n", |
| |
outname, errno, strerror(errno)); |
| |
return 2; |
| |
} |
| |
} |
| |
|
| |
if (cfgWriteConfigRaw(out, &cfg, 42)) { |
| |
printf("Error:: can't write config #%d - %s\n", |
| |
cfg_GetErrno(), cfg_GetError()); |
| |
if (*outname) |
| |
fclose(out); |
| |
return 2; |
| |
} |
| |
|
| |
if (*outname) |
| |
fclose(out); |
| return 0; |
return 0; |
| } |
} |
| |
|
|
Line 47 Set(const char *prog, int argc, char **argv)
|
Line 100 Set(const char *prog, int argc, char **argv)
|
| int |
int |
| main(int argc, char **argv) |
main(int argc, char **argv) |
| { |
{ |
| int ch; | int ch, ret = 0; |
| int (*run)(const char*, int, char**) = Get; |
int (*run)(const char*, int, char**) = Get; |
| const char *prog; |
const char *prog; |
| char *str; |
char *str; |
| |
|
| |
out = stdout; |
| |
|
| if (!argv || !*argv) |
if (!argv || !*argv) |
| prog = "cfgprog"; |
prog = "cfgprog"; |
| else if (!(prog = strrchr(*argv, '/'))) |
else if (!(prog = strrchr(*argv, '/'))) |
|
Line 59 main(int argc, char **argv)
|
Line 114 main(int argc, char **argv)
|
| else |
else |
| prog++; |
prog++; |
| |
|
| while ((ch = getopt(argc, argv, "hvws:")) != -1) | while ((ch = getopt(argc, argv, "hvws:o:")) != -1) |
| switch (ch) { |
switch (ch) { |
| |
case 'o': |
| |
strlcpy(outname, optarg, sizeof outname); |
| |
break; |
| case 'w': |
case 'w': |
| run = Set; |
run = Set; |
| break; |
break; |
|
Line 98 main(int argc, char **argv)
|
Line 156 main(int argc, char **argv)
|
| *argv = str; |
*argv = str; |
| } |
} |
| |
|
| return run(prog, argc, argv); | 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; |
| } |
} |