--- embedtools/src/cfger.c 2014/01/30 00:55:19 1.1.2.2 +++ embedtools/src/cfger.c 2017/06/29 08:29:46 1.4 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ - * $Id: cfger.c,v 1.1.2.2 2014/01/30 00:55:19 misho Exp $ + * $Id: cfger.c,v 1.4 2017/06/29 08:29:46 misho Exp $ * ************************************************************************* The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2014 +Copyright 2004 - 2017 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -61,8 +61,11 @@ Usage() " Syntax: cfger [options] [data]\n\n" "\t-v\t\tVerbose ...\n" "\t-q\t\tQuiet mode\n" + "\t-S\t\tShell script mode\n" + "\t-C\t\tWithout comment header\n" "\t-o \tOutput result to file\n" - "\t-l \tList A/V pair\n" + "\t-l\t\tList A/V pairs\n" + "\t-c \tAdds comment on header of file\n" "\t-s \tSet A/V pair\n" "\t-g \tGet value from A/V pair\n" "*\"attr\" format: [section/]attribute\n" @@ -72,12 +75,15 @@ Usage() int main(int argc, char **argv) { - char ch, *str, m = 0, q = 0, szAttr[STRSIZ], szName[PATH_MAX] = { 0 }; + char ch, *str, m = 0, q = 0, sh = 42, szAttr[STRSIZ], szName[PATH_MAX] = { 0 }; int ret = 0; ait_val_t data = AIT_VAL_INITIALIZER(data); FILE *out = stdout; + time_t tim; + struct tm tm; + char cm = 42, szComment[STRSIZ] = { [0 ... STRSIZ - 1] = 0 }, szTim[STRSIZ] = { 0 }; - while ((ch = getopt(argc, argv, "hvql:s:g:o:")) != -1) + while ((ch = getopt(argc, argv, "hvqlSCs:g:o:c:")) != -1) switch (ch) { case 'v': Verbose++; @@ -85,16 +91,24 @@ main(int argc, char **argv) case 'q': q = 42; break; + case 'S': + sh ^= sh; + break; + case 'C': + cm ^= cm; + break; case 'o': strlcpy(szName, optarg, sizeof szName); break; + case 'c': + strlcpy(szComment, optarg, sizeof szComment); + break; case 'l': if (m) { Usage(); return 1; } else m = 'l'; - strlcpy(szAttr, optarg, sizeof szAttr); break; case 's': if (m) { @@ -172,7 +186,15 @@ main(int argc, char **argv) } case 'l': default: - cfgWriteConfig(out, &cfg, 42); + if (cm) { + time(&tim); + localtime_r(&tim, &tm); + strftime(szTim, sizeof szTim, "%Y-%m-%d %H:%M:%S", &tm); + + fprintf(out, "# Auto-generated file %s from cfger at %s\n#\n# %s\n\n", *argv, szTim, szComment); + } + + cfgWriteConfig(out, &cfg, sh); break; } end: