--- libaitcfg/src/parse.c 2012/07/30 09:40:19 1.8.4.1 +++ libaitcfg/src/parse.c 2012/07/30 11:23:09 1.8.4.3 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: parse.c,v 1.8.4.1 2012/07/30 09:40:19 misho Exp $ +* $Id: parse.c,v 1.8.4.3 2012/07/30 11:23:09 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -361,13 +361,12 @@ cfgReadLines(FILE *f, const char *delim, const char *e char line[BUFSIZ]; struct tagCfg *av = NULL; char *psAttr, *psVal = NULL; - int ret; while (!feof(f)) { memset(line, 0, sizeof line); fgets(line, sizeof line - 1, f); /* check for user end-of-file */ - if (!strcmp(line, end)) + if (strspn(line, end)) break; if (!(psAttr = strpbrk(line, "\r\n"))) { @@ -376,15 +375,17 @@ cfgReadLines(FILE *f, const char *delim, const char *e } else { *psAttr = 0; io_TrimStr(line); + if (!*line) + continue; } - /* check for comment or empty line */ - if (!*line) + + if (!io_MakeAV2(line, delim, &psAttr, &psVal)) continue; + else { + io_LTrimStr(psVal); + io_RTrimStr(psAttr); + } - ret = io_MakeAV2((char**) &line, delim, psAttr, psVal); - io_LTrimStr(psVal); - io_RTrimStr(psAttr); - /* *NEW PAIR* alloc new pair element */ av = io_malloc(sizeof(struct tagCfg)); if (!av) { @@ -397,7 +398,8 @@ cfgReadLines(FILE *f, const char *delim, const char *e CFG_RC_UNLOCK(cfg); } - AIT_SET_STR(&av->cfg_val, psVal ? psVal : ""); + if (psVal) + AIT_SET_STR(&av->cfg_val, psVal); AIT_SET_STR(&av->cfg_attr, psAttr); AIT_KEY(&av->cfg_attr) = crcFletcher16(AIT_GET_LIKE(&av->cfg_attr, u_short*), io_align(AIT_LEN(&av->cfg_attr) - 1, 1) / 2);