|
version 1.20.2.2, 2023/01/23 23:24:22
|
version 1.22.4.1, 2026/08/04 18:51:43
|
|
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 - 2026 |
| 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 47 SUCH DAMAGE.
|
Line 47 SUCH DAMAGE.
|
| |
|
| |
|
| /* |
/* |
| * cfgReadConfig() - Read file and add new item at config root | * cfg_ReadConfig() - Read file and add new item at config root |
| * |
* |
| * @f = File resource |
* @f = File resource |
| * @cfg = Config root |
* @cfg = Config root |
| |
* @lvl = Level of include recursion |
| * return: -1 error or 0 ok |
* return: -1 error or 0 ok |
| */ |
*/ |
| int |
int |
| cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) | cfg_ReadConfig(FILE *f, cfg_root_t * __restrict cfg, int lvl) |
| { |
{ |
| char line[BUFSIZ], origin[BUFSIZ], chkattr[STRSIZ]; |
char line[BUFSIZ], origin[BUFSIZ], chkattr[STRSIZ]; |
| struct tagCfg *av = NULL; |
struct tagCfg *av = NULL; |
|
Line 77 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
Line 78 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 100 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
Line 107 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
| if (!flg && AIT_ADDR(&av->cfg_val)) |
if (!flg && AIT_ADDR(&av->cfg_val)) |
| av->cfg_quoted += str_Unquot((char*) AIT_GET_STR(&av->cfg_val)); |
av->cfg_quoted += str_Unquot((char*) AIT_GET_STR(&av->cfg_val)); |
| |
|
| /* read include file */ | if (lvl > 0) { |
| if (!flg && AIT_ADDR(&av->cfg_val) && | /* read include file */ |
| *AIT_GET_STR(&av->cfg_attr) == '%' && | if (!flg && AIT_ADDR(&av->cfg_val) && |
| !strcmp(AIT_GET_STR(&av->cfg_attr), "%include")) { | *AIT_GET_STR(&av->cfg_attr) == '%' && |
| ff = fopen(AIT_GET_STR(&av->cfg_val), "r"); | !strcmp(AIT_GET_STR(&av->cfg_attr), "%include")) { |
| if (ff) { | ff = fopen(AIT_GET_STR(&av->cfg_val), "r"); |
| cfgReadConfig(ff, cfg); | if (ff) { |
| fclose(ff); | cfg_ReadConfig(ff, cfg, lvl - 1); |
| } else | fclose(ff); |
| EDEBUG(ELWIX_DEBUG_LOG, "Error:: Can't open %s file", | } else |
| AIT_GET_STR(&av->cfg_val)); | EDEBUG(ELWIX_DEBUG_LOG, "Error:: Can't open %s file", |
| | AIT_GET_STR(&av->cfg_val)); |
| | } |
| } |
} |
| continue; |
continue; |
| } |
} |
|
Line 193 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
Line 202 cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
|
| RB_INSERT(tagRC, cfg, av); |
RB_INSERT(tagRC, cfg, av); |
| CFG_RC_UNLOCK(cfg); |
CFG_RC_UNLOCK(cfg); |
| |
|
| /* read include file */ | if (lvl > 0) { |
| if (!flg && *AIT_GET_STR(&av->cfg_attr) == '%' && | /* read include file */ |
| !strcmp(AIT_GET_STR(&av->cfg_attr), "%include")) { | if (!flg && *AIT_GET_STR(&av->cfg_attr) == '%' && |
| ff = fopen(AIT_GET_STR(&av->cfg_val), "r"); | !strcmp(AIT_GET_STR(&av->cfg_attr), "%include")) { |
| if (ff) { | ff = fopen(AIT_GET_STR(&av->cfg_val), "r"); |
| cfgReadConfig(ff, cfg); | if (ff) { |
| fclose(ff); | cfg_ReadConfig(ff, cfg, lvl - 1); |
| } else | fclose(ff); |
| EDEBUG(ELWIX_DEBUG_LOG, "Error:: Can't open %s file", | } else |
| AIT_GET_STR(&av->cfg_val)); | EDEBUG(ELWIX_DEBUG_LOG, "Error:: Can't open %s file", |
| | AIT_GET_STR(&av->cfg_val)); |
| | } |
| } |
} |
| } |
} |
| |
|