|
version 1.14.4.2, 2014/03/19 17:00:51
|
version 1.17, 2019/11/21 14:30:02
|
|
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 - 2014 | Copyright 2004 - 2019 |
| 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 72 _selectAttribute(cfg_root_t * __restrict cfg, const ch
|
Line 72 _selectAttribute(cfg_root_t * __restrict cfg, const ch
|
| do { |
do { |
| if (!strcmp(AIT_GET_STR(&c->cfg_attr), csAttr)) |
if (!strcmp(AIT_GET_STR(&c->cfg_attr), csAttr)) |
| return c; /* FOUND! */ |
return c; /* FOUND! */ |
| } while (RB_NEXT(tagRC, cfg, c) && !cfg_tree_cmp(c, &fav)); | } while ((c = RB_NEXT(tagRC, cfg, c)) && c && !cfg_tree_cmp(c, &fav)); |
| return NULL; /* not found */ |
return NULL; /* not found */ |
| } |
} |
| } |
} |
|
Line 97 cfg_getSection(cfg_root_t * __restrict cfg, const char
|
Line 97 cfg_getSection(cfg_root_t * __restrict cfg, const char
|
| return NULL; |
return NULL; |
| } else |
} else |
| memset(&fav, 0, sizeof fav); |
memset(&fav, 0, sizeof fav); |
| |
if (csSec && !*csSec) |
| |
csSec = NULL; |
| |
|
| if (csSec && *csSec) |
if (csSec && *csSec) |
| AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec, |
AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec, |
| E_ALIGN(strlen(csSec), 2) / 2); |
E_ALIGN(strlen(csSec), 2) / 2); |
| |
|
| av = RB_NFIND(tagRC, cfg, &fav); | arr = array_Init(0); |
| if (!av) | |
| return NULL; | |
| if (strcmp(AIT_GET_STR(&av->cfg_sec), csSec)) | |
| return NULL; | |
| |
| arr = array_Init(1); | |
| if (!arr) { |
if (!arr) { |
| cfg_SetErr(elwix_GetErrno(), "%s", elwix_GetError()); |
cfg_SetErr(elwix_GetErrno(), "%s", elwix_GetError()); |
| return NULL; |
return NULL; |
| } else | } |
| array_Push(arr, av, 0); | |
| |
|
| while (RB_NEXT(tagRC, cfg, av) && !strcmp(AIT_GET_STR(&av->cfg_sec), csSec)) | TAILQ_FOREACH(av, cfg, cfg_next) |
| array_Push(arr, av, 0); | if (AIT_KEY(&av->cfg_sec) == AIT_KEY(&fav.cfg_sec)) { |
| | if (!csSec) { |
| | if (AIT_ISEMPTY(&av->cfg_sec)) |
| | array_Push(arr, av, 0); |
| | } else { |
| | if (!AIT_ISEMPTY(&av->cfg_sec) && |
| | !strcmp(AIT_GET_STR(&av->cfg_sec), csSec)) |
| | array_Push(arr, av, 0); |
| | } |
| | } |
| |
|
| |
if (!array_Size(arr)) |
| |
array_Destroy(&arr); |
| |
|
| return arr; |
return arr; |
| } |
} |
| |
|
|
Line 275 cfg_getAttribute(cfg_root_t * __restrict cfg, const ch
|
Line 282 cfg_getAttribute(cfg_root_t * __restrict cfg, const ch
|
| return NULL; |
return NULL; |
| |
|
| return AIT_GET_STR(&av->cfg_val); |
return AIT_GET_STR(&av->cfg_val); |
| |
} |
| |
|
| |
/* |
| |
* cfg_getAttributeLong() - Get item as long from config and return value from it |
| |
* |
| |
* @cfg = Config root |
| |
* @csSec = Config section //[{csSec}], if NULL unset in *default* section |
| |
* @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute |
| |
* return: value |
| |
*/ |
| |
long |
| |
cfg_getAttributeLong(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr) |
| |
{ |
| |
const char *str = NULL; |
| |
|
| |
str = cfg_getAttribute(cfg, csSec, csAttr); |
| |
return strtol(str ? str : "", NULL, 0); |
| |
} |
| |
|
| |
/* |
| |
* cfg_getAttributeLLong() - Get item as long long from config and return value from it |
| |
* |
| |
* @cfg = Config root |
| |
* @csSec = Config section //[{csSec}], if NULL unset in *default* section |
| |
* @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute |
| |
* return: value |
| |
*/ |
| |
long long |
| |
cfg_getAttributeLLong(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr) |
| |
{ |
| |
const char *str = NULL; |
| |
|
| |
str = cfg_getAttribute(cfg, csSec, csAttr); |
| |
return strtoll(str ? str : "", NULL, 0); |
| |
} |
| |
|
| |
/* |
| |
* cfg_getAttributeDouble() - Get item as double from config and return value from it |
| |
* |
| |
* @cfg = Config root |
| |
* @csSec = Config section //[{csSec}], if NULL unset in *default* section |
| |
* @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute |
| |
* return: value |
| |
*/ |
| |
double |
| |
cfg_getAttributeDouble(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr) |
| |
{ |
| |
const char *str = NULL; |
| |
|
| |
str = cfg_getAttribute(cfg, csSec, csAttr); |
| |
return strtod(str ? str : "", NULL); |
| |
} |
| |
|
| |
/* |
| |
* cfg_getAttributeLDouble() - Get item as long double from config and return value from it |
| |
* |
| |
* @cfg = Config root |
| |
* @csSec = Config section //[{csSec}], if NULL unset in *default* section |
| |
* @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute |
| |
* return: value |
| |
*/ |
| |
long double |
| |
cfg_getAttributeLDouble(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr) |
| |
{ |
| |
const char *str = NULL; |
| |
|
| |
str = cfg_getAttribute(cfg, csSec, csAttr); |
| |
return strtold(str ? str : "", NULL); |
| } |
} |
| |
|
| /* |
/* |