--- embedtools/src/cfger.c 2017/06/28 15:19:32 1.3 +++ 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.3 2017/06/28 15:19:32 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 @@ -62,8 +62,10 @@ Usage() "\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\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" @@ -77,8 +79,11 @@ main(int argc, char **argv) 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, "hvqlSs:g:o:")) != -1) + while ((ch = getopt(argc, argv, "hvqlSCs:g:o:c:")) != -1) switch (ch) { case 'v': Verbose++; @@ -89,9 +94,15 @@ main(int argc, char **argv) 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(); @@ -175,6 +186,14 @@ main(int argc, char **argv) } case 'l': default: + 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; }