--- libaitcfg/src/parse.c 2014/01/30 08:14:56 1.13.2.2 +++ libaitcfg/src/parse.c 2014/01/30 08:27:43 1.13.2.3 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: parse.c,v 1.13.2.2 2014/01/30 08:14:56 misho Exp $ +* $Id: parse.c,v 1.13.2.3 2014/01/30 08:27:43 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -190,8 +190,15 @@ cfgWriteConfig(FILE *f, cfg_root_t * __restrict cfg, i return -1; } + if (whitespace) { + time(&tim); + memset(line, 0, sizeof line); + strftime(line, sizeof line, "(UTC) %Y-%m-%d %H:%M:%S", gmtime(&tim)); + cfg_Write(f, "## Config auto-generated at :: %s ##\n", line); + } + CFG_RC_LOCK(cfg); - TAILQ_FOREACH(av, cfg, cfg_next) { + RB_FOREACH(av, tagRC, cfg) { /* empty lines or comment */ if (AIT_ISEMPTY(&av->cfg_attr)) { if (AIT_ISEMPTY(&av->cfg_val)) @@ -202,16 +209,16 @@ cfgWriteConfig(FILE *f, cfg_root_t * __restrict cfg, i /* section [] */ if (!AIT_ISEMPTY(&av->cfg_sec) && AIT_ADDR(&av->cfg_sec) && - strcmp(AIT_GET_STR(&av->cfg_sec), szSection)) { + strcmp(AIT_GET_STRZ(&av->cfg_sec), szSection)) { strlcpy(szSection, AIT_GET_STR(&av->cfg_sec), sizeof szSection); - if (!cfg_Write(f, "[%s]\n", AIT_GET_STR(&av->cfg_sec))) { + if (!cfg_Write(f, "\n[%s]\n", AIT_GET_STR(&av->cfg_sec))) { LOGERR; CFG_RC_UNLOCK(cfg); return -1; } } else if (AIT_ISEMPTY(&av->cfg_sec) && *szSection) { memset(szSection, 0, sizeof szSection); - if (!cfg_Write(f, "[]\n")) { + if (!cfg_Write(f, "\n[]\n")) { LOGERR; CFG_RC_UNLOCK(cfg); return -1; @@ -454,7 +461,7 @@ cfgWriteLines(FILE *f, const char *delim, const char * if (section) { if (!AIT_ISEMPTY(&av->cfg_sec) && *section) continue; - if (strcmp(section, AIT_GET_STR(&av->cfg_sec))) + if (strcmp(section, AIT_GET_STRZ(&av->cfg_sec))) continue; }