|
version 1.14, 2019/12/05 14:33:35
|
version 1.18, 2026/08/04 18:59:27
|
|
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 - 2019 | 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 157 cfgEndConfig(cfg_root_t **pcfg)
|
Line 157 cfgEndConfig(cfg_root_t **pcfg)
|
| } |
} |
| |
|
| /* |
/* |
| |
* cfgInitConfigExt() - Init existed config root |
| |
* |
| |
* @cfg = Config root |
| |
* return: -1 error or 0 inited config root |
| |
*/ |
| |
int |
| |
cfgInitConfigExt(cfg_root_t * __restrict cfg) |
| |
{ |
| |
if (!cfg) { |
| |
cfg_SetErr(EINVAL, "Invalid parameter"); |
| |
return -1; |
| |
} |
| |
|
| |
memset(cfg, 0, sizeof(cfg_root_t)); |
| |
|
| |
pthread_mutex_init(&cfg->rc_mtx, NULL); |
| |
|
| |
TAILQ_INIT(cfg); |
| |
RB_INIT(cfg); |
| |
return 0; |
| |
} |
| |
|
| |
/* |
| * cfgLoadConfig() - Load config from file |
* cfgLoadConfig() - Load config from file |
| * |
* |
| * @cfgName = Config filename |
* @cfgName = Config filename |
|
Line 169 cfgLoadConfig(const char *cfgName, cfg_root_t * __rest
|
Line 192 cfgLoadConfig(const char *cfgName, cfg_root_t * __rest
|
| FILE *f; |
FILE *f; |
| int ret; |
int ret; |
| |
|
| if (!cfgName || !cfg) { | if (!cfgName || cfgInitConfigExt(cfg)) { |
| cfg_SetErr(EINVAL, "Invalid parameter(s)"); |
cfg_SetErr(EINVAL, "Invalid parameter(s)"); |
| return -1; |
return -1; |
| } else { |
|
| pthread_mutex_init(&cfg->rc_mtx, NULL); |
|
| |
|
| TAILQ_INIT(cfg); |
|
| RB_INIT(cfg); |
|
| } |
} |
| |
|
| f = fopen(cfgName, "r"); |
f = fopen(cfgName, "r"); |
|
Line 185 cfgLoadConfig(const char *cfgName, cfg_root_t * __rest
|
Line 203 cfgLoadConfig(const char *cfgName, cfg_root_t * __rest
|
| return -1; |
return -1; |
| } |
} |
| |
|
| ret = cfgReadConfig(f, cfg); | ret = cfg_ReadConfig(f, cfg, 1); |
| |
|
| fclose(f); |
fclose(f); |
| return ret; |
return ret; |
| } |
} |
| |
|
| /* |
/* |
| |
* cfgLoadConfigExt() - Load config from file with recursion level of includes |
| |
* |
| |
* @cfgName = Config filename |
| |
* @cfg = Config root |
| |
* @lvl = Level of include recursion |
| |
* return: -1 error or 0 ok |
| |
*/ |
| |
int |
| |
cfgLoadConfigExt(const char *cfgName, cfg_root_t * __restrict cfg, int lvl) |
| |
{ |
| |
FILE *f; |
| |
int ret; |
| |
|
| |
if (!cfgName || cfgInitConfigExt(cfg)) { |
| |
cfg_SetErr(EINVAL, "Invalid parameter(s)"); |
| |
return -1; |
| |
} |
| |
|
| |
f = fopen(cfgName, "r"); |
| |
if (!f) { |
| |
LOGERR; |
| |
return -1; |
| |
} |
| |
|
| |
ret = cfg_ReadConfig(f, cfg, lvl); |
| |
|
| |
fclose(f); |
| |
return ret; |
| |
} |
| |
/* |
| * cfgClearConfig() - Clear config and free resources |
* cfgClearConfig() - Clear config and free resources |
| * |
* |
| * @cfg = Config root |
* @cfg = Config root |
|
Line 232 cfgUnloadConfig(cfg_root_t * __restrict cfg)
|
Line 280 cfgUnloadConfig(cfg_root_t * __restrict cfg)
|
| |
|
| cfgClearConfig(cfg); |
cfgClearConfig(cfg); |
| pthread_mutex_destroy(&cfg->rc_mtx); |
pthread_mutex_destroy(&cfg->rc_mtx); |
| |
memset(&cfg->rc_mtx, 0, sizeof cfg->rc_mtx); |
| } |
} |
| |
|
| /* |
/* |
|
Line 257 cfgCreateConfig(const char *csConfigName, cfg_root_t *
|
Line 306 cfgCreateConfig(const char *csConfigName, cfg_root_t *
|
| return -1; |
return -1; |
| } |
} |
| |
|
| ret = cfgWriteConfig(f, cfg, whitespace); | ret = cfgWriteConfigRaw(f, cfg, whitespace); |
| |
|
| fclose(f); |
fclose(f); |
| return ret; |
return ret; |
|
Line 321 cfgLoadPasswd(const char *pwdName, pwd_root_t * __rest
|
Line 370 cfgLoadPasswd(const char *pwdName, pwd_root_t * __rest
|
| cfg_SetErr(EINVAL, "Invalid parameter(s)"); |
cfg_SetErr(EINVAL, "Invalid parameter(s)"); |
| return -1; |
return -1; |
| } else { |
} else { |
| |
memset(pwd, 0, sizeof(pwd_root_t)); |
| |
|
| pthread_mutex_init(&pwd->pwd_mtx, NULL); |
pthread_mutex_init(&pwd->pwd_mtx, NULL); |
| |
|
| SLIST_INIT(pwd); |
SLIST_INIT(pwd); |