|
|
| version 1.6.4.5, 2012/04/03 09:21:06 | version 1.8.2.1, 2012/07/30 09:40:19 |
|---|---|
| Line 49 SUCH DAMAGE. | Line 49 SUCH DAMAGE. |
| #include <aitio.h> | #include <aitio.h> |
| #include <atree.h> | #include <atree.h> |
| #include <pthread.h> | |
| struct tagCfg { | struct tagCfg { |
| Line 60 struct tagCfg { | Line 61 struct tagCfg { |
| RB_ENTRY(tagCfg) cfg_node; | RB_ENTRY(tagCfg) cfg_node; |
| }; | }; |
| typedef struct tagRC { | typedef struct tagRC { |
| #ifdef HAVE_LIBPTHREAD | |
| pthread_mutex_t rc_mtx; | pthread_mutex_t rc_mtx; |
| #endif | |
| struct tagCfg *slh_first; | struct tagCfg *slh_first; |
| struct tagCfg *rbh_root; | struct tagCfg *rbh_root; |
| } cfg_root_t; | } cfg_root_t; |
| #ifdef HAVE_LIBPTHREAD | |
| #define CFG_RC_LOCK(x) pthread_mutex_lock(&(x)->rc_mtx) | #define CFG_RC_LOCK(x) pthread_mutex_lock(&(x)->rc_mtx) |
| #define CFG_RC_UNLOCK(x) pthread_mutex_unlock(&(x)->rc_mtx) | #define CFG_RC_UNLOCK(x) pthread_mutex_unlock(&(x)->rc_mtx) |
| #else | |
| #define CFG_RC_LOCK(x) | |
| #define CFG_RC_UNLOCK(x) | |
| #endif | |
| // cfg_GetErrno() Get error code of last operation | // cfg_GetErrno() Get error code of last operation |
| Line 103 int cfgInitConfig(cfg_root_t * __restrict cfg); | Line 98 int cfgInitConfig(cfg_root_t * __restrict cfg); |
| */ | */ |
| int cfgLoadConfig(const char *cfgName, cfg_root_t * __restrict cfg); | int cfgLoadConfig(const char *cfgName, cfg_root_t * __restrict cfg); |
| /* | /* |
| * cfgUnloadConfig() - Unload config from memory and free resources | * cfgUnloadConfig() - Unload config from memory and destroy resources |
| * | * |
| * @cfg = Config root | * @cfg = Config root |
| * return: none | * return: none |
| */ | */ |
| void cfgUnloadConfig(cfg_root_t * __restrict cfg); | void cfgUnloadConfig(cfg_root_t * __restrict cfg); |
| /* | |
| * cfgClearConfig() - Clear config and free resources | |
| * | |
| * @cfg = Config root | |
| * return: none | |
| */ | |
| void cfgClearConfig(cfg_root_t * __restrict cfg); | |
| /* | |
| * cfgCreateConfig() - Create config file from memory | |
| * | |
| * @csConfigName = New config filename | |
| * @cfg = Config root | |
| * @whitespace = Additional whitespace characters to file | |
| * return: -1 error or 0 ok | |
| */ | |
| int cfgCreateConfig(const char *csConfigName, cfg_root_t * __restrict cfg, | |
| int whitespace); | |
| /* | /* |
| * cfgReadLines() - Read custom lines and add new item at config root | |
| * | |
| * @f = File resource | |
| * @delim = Custom delimiter, if =NULL default is '=' | |
| * @end = Custom user end of file, if =NULL default is EOF | |
| * @cfg = Config root | |
| * return: -1 error or 0 ok | |
| */ | |
| int cfgReadLines(FILE *f, const char *delim, const char *end, | |
| cfg_root_t * __restrict cfg); | |
| /* | |
| * cfgReadConfig() - Read file and add new item at config root | * cfgReadConfig() - Read file and add new item at config root |
| * | * |
| * @f = File resource | * @f = File resource |
| Line 127 int cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg | Line 150 int cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg |
| * return: -1 error or 0 ok | * return: -1 error or 0 ok |
| */ | */ |
| int cfgWriteConfig(FILE *f, cfg_root_t * __restrict cfg, int whitespace); | int cfgWriteConfig(FILE *f, cfg_root_t * __restrict cfg, int whitespace); |
| #if 0 | |
| /* | /* |
| * cfg_CreateConfig() Create config file from memory without whitespaces! | * cfgConcatConfig() - Concat two configs into one |
| * @csConfigName = New config filename | * |
| * @cfg = Head list element | * @cfg = Config root |
| * return: 0 ok; -1 error:: can`t save new config | * @add_cfg = Concated config will be destroy after merge |
| */ | * return: -1 error or 0 ok |
| int cfg_CreateConfig(const char *csConfigName, sl_config * __restrict cfg); | */ |
| int cfgConcatConfig(cfg_root_t * __restrict cfg, cfg_root_t * __restrict add_cfg); | |
| /* | /* |
| * CreateConfig() Create config file from memory | * cfgMergeConfig() - Marge two list in one cfg and destroy add_cfg |
| * @csConfigName = New config filename | * |
| * @cfg = Head list element | * @cfg = Config root of main list |
| * return: 0 ok; -1 error:: can`t save new config | * @add_cfg = Merged config will be destroy after merge |
| */ | * return: -1 error or 0 ok |
| int CreateConfig(const char *csConfigName, sl_config * __restrict cfg); | */ |
| int cfgMergeConfig(cfg_root_t * __restrict cfg, cfg_root_t * __restrict add_cfg); | |
| /* | |
| * ConcatConfig() Concat two list in one | |
| * @cfg = Head list element of main list | |
| * @add_cfg = Head list element of added list | |
| * return: 0 ok; -1 error:: can`t concat lists | |
| */ | |
| int ConcatConfig(sl_config * __restrict cfg, sl_config * __restrict add_cfg); | |
| /* | |
| * MergeConfig() Marge two list in one cfg and destroy add_cfg | |
| * @cfg = Head list element of main list | |
| * @add_cfg = Head list element of merged list (destroy after all!) | |
| * return: 0 ok; -1 error:: can`t merge lists | |
| */ | |
| int MergeConfig(sl_config * __restrict cfg, sl_config * __restrict add_cfg); | |
| #endif | |
| /* | /* |
| * cfg_findAttribute() - Find attribute position in config file | * cfg_findAttribute() - Find attribute position in config file |