version 1.4, 2017/06/29 08:29:46
|
version 1.5, 2017/06/30 08:41:50
|
Line 60 Usage()
|
Line 60 Usage()
|
"=== %s === %s@%s ===\n\n" |
"=== %s === %s@%s ===\n\n" |
" Syntax: cfger [options] <file_config> [data]\n\n" |
" Syntax: cfger [options] <file_config> [data]\n\n" |
"\t-v\t\tVerbose ...\n" |
"\t-v\t\tVerbose ...\n" |
"\t-q\t\tQuiet mode\n" | "\t-q\t\tQuiet mode in Get variable mode. Output is only variable value\n" |
"\t-S\t\tShell script mode\n" | "\t-S\t\tShell script mode, without whitespaces between attribute and value\n" |
"\t-C\t\tWithout comment header\n" | "\t-C\t\tWithout program comment header\n" |
| "\t-J\t\tFilter output, just variables, exclude entire different data from a/v pair\n" |
"\t-o <output>\tOutput result to file\n" |
"\t-o <output>\tOutput result to file\n" |
"\t-l\t\tList A/V pairs\n" |
"\t-l\t\tList A/V pairs\n" |
"\t-c <comment>\tAdds comment on header of file\n" | "\t-c <comment>\tAdds comment on program header of file\n" |
"\t-s <attr>\tSet A/V pair\n" |
"\t-s <attr>\tSet A/V pair\n" |
"\t-g <attr>\tGet value from A/V pair\n" |
"\t-g <attr>\tGet value from A/V pair\n" |
"*\"attr\" format: [section/]attribute\n" |
"*\"attr\" format: [section/]attribute\n" |
Line 75 Usage()
|
Line 76 Usage()
|
int |
int |
main(int argc, char **argv) |
main(int argc, char **argv) |
{ |
{ |
char ch, *str, m = 0, q = 0, sh = 42, szAttr[STRSIZ], szName[PATH_MAX] = { 0 }; | char ch, *str, m = 0, q = 0, sh = 42, jv = 0, szAttr[STRSIZ], szName[PATH_MAX] = { 0 }; |
int ret = 0; |
int ret = 0; |
ait_val_t data = AIT_VAL_INITIALIZER(data); |
ait_val_t data = AIT_VAL_INITIALIZER(data); |
FILE *out = stdout; |
FILE *out = stdout; |
time_t tim; |
time_t tim; |
struct tm tm; |
struct tm tm; |
char cm = 42, szComment[STRSIZ] = { [0 ... STRSIZ - 1] = 0 }, szTim[STRSIZ] = { 0 }; |
char cm = 42, szComment[STRSIZ] = { [0 ... STRSIZ - 1] = 0 }, szTim[STRSIZ] = { 0 }; |
|
ait_val_t *v; |
|
|
while ((ch = getopt(argc, argv, "hvqlSCs:g:o:c:")) != -1) | while ((ch = getopt(argc, argv, "hvqlSJCs:g:o:c:")) != -1) |
switch (ch) { |
switch (ch) { |
case 'v': |
case 'v': |
Verbose++; |
Verbose++; |
Line 97 main(int argc, char **argv)
|
Line 99 main(int argc, char **argv)
|
case 'C': |
case 'C': |
cm ^= cm; |
cm ^= cm; |
break; |
break; |
|
case 'J': |
|
jv = 42; |
|
break; |
case 'o': |
case 'o': |
strlcpy(szName, optarg, sizeof szName); |
strlcpy(szName, optarg, sizeof szName); |
break; |
break; |
Line 194 main(int argc, char **argv)
|
Line 199 main(int argc, char **argv)
|
fprintf(out, "# Auto-generated file %s from cfger at %s\n#\n# %s\n\n", *argv, szTim, szComment); |
fprintf(out, "# Auto-generated file %s from cfger at %s\n#\n# %s\n\n", *argv, szTim, szComment); |
} |
} |
|
|
cfgWriteConfig(out, &cfg, sh); | if (jv) |
| cfgWriteConfig(out, &cfg, sh); |
| else { |
| v = cfgWriteLines(out, NULL, NULL, NULL, &cfg); |
| ait_freeVar(&v); |
| } |
| |
break; |
break; |
} |
} |
end: |
end: |