|
version 1.22, 2025/08/19 11:43:53
|
version 1.22.4.2, 2026/08/04 18:57:55
|
|
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 - 2025 | 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 106 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 199 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)); |
| | } |
| } |
} |
| } |
} |
| |
|
|
Line 604 cfgWriteLines(FILE *f, const char *delim, const char *
|
Line 609 cfgWriteLines(FILE *f, const char *delim, const char *
|
| AIT_SET_STRCAT(v, eol); |
AIT_SET_STRCAT(v, eol); |
| } |
} |
| |
|
| if (f) | if (f && AIT_GET_STR(v)) |
| fputs(AIT_GET_STR(v), f); |
fputs(AIT_GET_STR(v), f); |
| return v; |
return v; |
| } |
} |