--- libaitcfg/src/parse.c 2014/01/30 08:14:56 1.13.2.2 +++ libaitcfg/src/parse.c 2017/06/28 15:13:03 1.16 @@ -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.16 2017/06/28 15:13:03 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 @@ -182,7 +182,6 @@ int cfgWriteConfig(FILE *f, cfg_root_t * __restrict cfg, int whitespace) { struct tagCfg *av; - time_t tim; char line[BUFSIZ] = { 0 }, szSection[STRSIZ] = { [0 ... STRSIZ - 1] = 0 }; if (!f || !cfg) { @@ -191,7 +190,7 @@ cfgWriteConfig(FILE *f, cfg_root_t * __restrict cfg, i } 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 +201,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; @@ -239,13 +238,6 @@ skip_sec: } CFG_RC_UNLOCK(cfg); - 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, "\n## Config was saved at :: %s ##\n", line); - } - return 0; } @@ -449,12 +441,10 @@ cfgWriteLines(FILE *f, const char *delim, const char * AIT_INIT_VAL2(v, string); TAILQ_FOREACH(av, cfg, cfg_next) { - if (AIT_ISEMPTY(&av->cfg_attr)) - continue; 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; } @@ -462,8 +452,10 @@ cfgWriteLines(FILE *f, const char *delim, const char * AIT_SET_STRCAT(v, AIT_GET_STR(&av->cfg_sec)); AIT_SET_STRCAT(v, SEC_LINES_DELIM); } - AIT_SET_STRCAT(v, AIT_GET_STR(&av->cfg_attr)); - AIT_SET_STRCAT(v, delim); + if (!AIT_ISEMPTY(&av->cfg_attr)) { + AIT_SET_STRCAT(v, AIT_GET_STR(&av->cfg_attr)); + AIT_SET_STRCAT(v, delim); + } if (!AIT_ISEMPTY(&av->cfg_val)) AIT_SET_STRCAT(v, AIT_GET_STR(&av->cfg_val)); AIT_SET_STRCAT(v, eol);