version 1.6.4.2, 2012/04/02 15:12:15
|
version 1.6.4.3, 2012/04/02 15:39:55
|
Line 85 _destroyAttribute(struct tagCfg *av)
|
Line 85 _destroyAttribute(struct tagCfg *av)
|
if (!av) |
if (!av) |
return; |
return; |
|
|
AIT_FREE_VAL(&av->cfg_val); |
|
AIT_FREE_VAL(&av->cfg_attr); |
|
AIT_FREE_VAL(&av->cfg_sec); |
|
free(av); |
|
} |
} |
|
|
// ---------------------------------------------- |
// ---------------------------------------------- |
Line 128 cfg_findAttribute(cfg_root_t * __restrict cfg, const c
|
Line 124 cfg_findAttribute(cfg_root_t * __restrict cfg, const c
|
|
|
return 0; |
return 0; |
} |
} |
#if 0 | |
/* |
/* |
* cfg_UnsetAttribute() Unset item from config list and free resources | * cfg_unsetAttribute() - Unset item from config and free resources |
* @cfg = Head list element | * |
| * @cfg = Config root |
* @csSec = Config section //[{csSec}], if NULL unset in *default* section |
* @csSec = Config section //[{csSec}], if NULL unset in *default* section |
* @csAttr = Config attribute //{csAttr} = ..., if NULL unset as *any* attribute | * @csAttr = Config attribute //{csAttr} = ... |
* return: 0 item not found, -1 error: null parameters; >0 position in list | * return: 0 item not found, -1 error or 1 removed item |
*/ | */ |
int cfg_UnsetAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr) | int |
| cfg_unsetAttribute(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr) |
{ |
{ |
struct tagPair *av, *curr; | struct tagCfg *av; |
register int cx = 0; | |
|
|
if (!cfg || !csAttr) |
if (!cfg || !csAttr) |
return -1; |
return -1; |
|
|
av = SelectAttribute(cfg, csSec, csAttr); | av = _selectAttribute(cfg, csSec, csAttr); |
if (!av) |
if (!av) |
return 0; |
return 0; |
|
|
// remove element | CFG_RC_LOCK(cfg); |
// remove element when is first! | RB_REMOVE(tagRC, cfg, av); |
if (cfg->slh_first == av) { | SLIST_REMOVE(cfg, av, tagCfg, cfg_next); |
cfg->slh_first = cfg->slh_first->sle_next; | CFG_RC_UNLOCK(cfg); |
|
|
DestroyAttribute(av); | AIT_FREE_VAL(&av->cfg_val); |
return 1; | AIT_FREE_VAL(&av->cfg_attr); |
} | AIT_FREE_VAL(&av->cfg_sec); |
// remove element in other cases... | free(av); |
curr = cfg->slh_first; | return 1; |
while (curr->sle_next != av) { | |
++cx; | |
curr = curr->sle_next; | |
} | |
curr->sle_next = curr->sle_next->sle_next; | |
| |
DestroyAttribute(av); | |
return cx; | |
} |
} |
#endif |
|
|
|
/* |
/* |
* cfg_setAttribute() - Set item in config or adding new item if not exists |
* cfg_setAttribute() - Set item in config or adding new item if not exists |