|
version 1.20.2.1, 2023/01/23 21:03:50
|
version 1.21.6.1, 2025/08/14 10:35:52
|
|
Line 12 terms:
|
Line 12 terms:
|
| All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
| Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
| |
|
| Copyright 2004 - 2023 | Copyright 2004 - 2025 |
| by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
| |
|
| Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
|
Line 56 SUCH DAMAGE.
|
Line 56 SUCH DAMAGE.
|
| int |
int |
| cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) |
cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) |
| { |
{ |
| char line[BUFSIZ], origin[BUFSIZ]; | char line[BUFSIZ], origin[BUFSIZ], chkattr[STRSIZ]; |
| struct tagCfg *av = NULL; |
struct tagCfg *av = NULL; |
| int flg = 0; |
int flg = 0; |
| char *psAttr, *psVal, szSection[STRSIZ] = { 0 }; |
char *psAttr, *psVal, szSection[STRSIZ] = { 0 }; |
|
Line 77 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
Line 77 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
| break; |
break; |
| #endif |
#endif |
| if (!(psAttr = strpbrk(line, "\r\n"))) { |
if (!(psAttr = strpbrk(line, "\r\n"))) { |
| /* skip line, too long */ | if (feof(f) && strlen(line) > 0) { |
| continue; | /* last line without end of line */ |
| | strlcpy(origin, line, sizeof origin); |
| | str_Trim(line); |
| | } else { |
| | /* skip line, too long */ |
| | continue; |
| | } |
| } else { |
} else { |
| *psAttr = 0; |
*psAttr = 0; |
| strlcpy(origin, line, sizeof origin); |
strlcpy(origin, line, sizeof origin); |
|
Line 115 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
Line 121 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
| continue; |
continue; |
| } |
} |
| |
|
| |
/* check for duplicated element */ |
| |
if (*line != '#' && *line != ';' && *line != '/' && *line != '%' && |
| |
(psAttr = strchr(line, '='))) { |
| |
strncpy(chkattr, line, psAttr - line); |
| |
chkattr[psAttr - line] = 0; |
| |
str_RTrim(chkattr); |
| |
if (cfg_findAttribute(cfg, szSection, chkattr)) |
| |
cfg_unsetAttribute(cfg, szSection, chkattr); |
| |
} |
| |
|
| /* *NEW PAIR* alloc new pair element */ |
/* *NEW PAIR* alloc new pair element */ |
| av = e_malloc(sizeof(struct tagCfg)); |
av = e_malloc(sizeof(struct tagCfg)); |
| if (!av) { |
if (!av) { |
|
Line 413 cfgMergeConfig(cfg_root_t * __restrict cfg, cfg_root_t
|
Line 429 cfgMergeConfig(cfg_root_t * __restrict cfg, cfg_root_t
|
| if (!AIT_ISEMPTY(&merge->cfg_sec) && !AIT_ISEMPTY(&item->cfg_sec) && |
if (!AIT_ISEMPTY(&merge->cfg_sec) && !AIT_ISEMPTY(&item->cfg_sec) && |
| AIT_ADDR(&merge->cfg_sec) && AIT_ADDR(&item->cfg_sec) && |
AIT_ADDR(&merge->cfg_sec) && AIT_ADDR(&item->cfg_sec) && |
| !strcmp(AIT_GET_STR(&merge->cfg_sec), AIT_GET_STR(&item->cfg_sec))) { |
!strcmp(AIT_GET_STR(&merge->cfg_sec), AIT_GET_STR(&item->cfg_sec))) { |
| flg = 1; | flg = -1; |
| break; |
break; |
| } |
} |
| } |
} |
| |
|
| if (!flg) | switch (flg) { |
| TAILQ_INSERT_TAIL(cfg, item, cfg_next); | case -1: |
| else | continue; /* skip duplicated element */ |
| TAILQ_INSERT_AFTER(cfg, merge, item, cfg_next); | case 1: |
| | TAILQ_INSERT_AFTER(cfg, merge, item, cfg_next); |
| | break; |
| | case 0: |
| | TAILQ_INSERT_TAIL(cfg, item, cfg_next); |
| | break; |
| | } |
| RB_INSERT(tagRC, cfg, item); |
RB_INSERT(tagRC, cfg, item); |
| } |
} |
| |
|
|
Line 482 cfgReadLines(FILE *f, const char *delim, const char *e
|
Line 504 cfgReadLines(FILE *f, const char *delim, const char *e
|
| } |
} |
| if (!av_MakeExt(p, SEC_LINES_DELIM, &psSec, &psAttr)) |
if (!av_MakeExt(p, SEC_LINES_DELIM, &psSec, &psAttr)) |
| psAttr = p; |
psAttr = p; |
| |
|
| |
/* check for duplicated element */ |
| |
if (psAttr && cfg_findAttribute(cfg, psSec, psAttr)) |
| |
cfg_unsetAttribute(cfg, psSec, psAttr); |
| |
|
| /* *NEW PAIR* alloc new pair element */ |
/* *NEW PAIR* alloc new pair element */ |
| av = e_malloc(sizeof(struct tagCfg)); |
av = e_malloc(sizeof(struct tagCfg)); |