Diff for /libaitcfg/src/queue.c between versions 1.14 and 1.15

version 1.14, 2014/01/30 08:30:47 version 1.15, 2014/03/19 18:38:43
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 80  _selectAttribute(cfg_root_t * __restrict cfg, const ch Line 80  _selectAttribute(cfg_root_t * __restrict cfg, const ch
 /* --------------------------------------------------------------- */  /* --------------------------------------------------------------- */
   
 /*  /*
    * cfg_getSection() - Get entire section attributes into array
    *
    * @cfg = Config root
    * @csSec = Config section //[{csSec}]
    * return: NULL not found or !=NULL allocated array, must free with array_Destroy() after use!
    */
   array_t *
   cfg_getSection(cfg_root_t * __restrict cfg, const char *csSec)
   {
           array_t *arr = NULL;
           struct tagCfg *av, fav;
   
           if (!cfg) {
                   cfg_SetErr(EINVAL, "Invalid argument(s)");
                   return NULL;
           } else
                   memset(&fav, 0, sizeof fav);
           if (csSec && !*csSec)
                   csSec = NULL;
   
           if (csSec && *csSec)
                   AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec, 
                                   E_ALIGN(strlen(csSec), 2) / 2);
   
           av = RB_NFIND(tagRC, cfg, &fav);
           if (!av)
                   return NULL;
           if (csSec) {
                   if (AIT_ISEMPTY(&av->cfg_sec) || strcmp(AIT_GET_STR(&av->cfg_sec), csSec))
                           return NULL;
           } else {
                   if (!AIT_ISEMPTY(&av->cfg_sec))
                           return NULL;
           }
   
           arr = array_Init(1);
           if (!arr) {
                   cfg_SetErr(elwix_GetErrno(), "%s", elwix_GetError());
                   return NULL;
           } else
                   array_Push(arr, av, 0);
   
           while ((av = RB_NEXT(tagRC, cfg, av)) && av) {
                   if (csSec) {
                           if (AIT_ISEMPTY(&av->cfg_sec) || strcmp(AIT_GET_STR(&av->cfg_sec), csSec))
                                   break;
                   } else {
                           if (!AIT_ISEMPTY(&av->cfg_sec))
                                   break;
                   }
   
                   array_Push(arr, av, 0);
           }
   
           return arr;
   }
   
   /*
  * cfg_findAttribute() - Find attribute position in config file   * cfg_findAttribute() - Find attribute position in config file
  *   *
  * @cfg = Config root   * @cfg = Config root
  * @csSec = Config section //[{csSec}]   * @csSec = Config section //[{csSec}]
 * @csAttr = Config attribute //{csAttr} = ... * @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute
  * return: 0 not found item, -1 error or >0 position in list   * return: 0 not found item, -1 error or >0 position in list
  */   */
 int  int
Line 93  cfg_findAttribute(cfg_root_t * __restrict cfg, const c Line 151  cfg_findAttribute(cfg_root_t * __restrict cfg, const c
         struct tagCfg *av, fav;          struct tagCfg *av, fav;
         register int cx = 0;          register int cx = 0;
   
        if (!cfg || !csAttr) {        if (!cfg) {
                 cfg_SetErr(EINVAL, "Invalid argument(s)");                  cfg_SetErr(EINVAL, "Invalid argument(s)");
                 return -1;                  return -1;
         } else          } else
Line 120  cfg_findAttribute(cfg_root_t * __restrict cfg, const c Line 178  cfg_findAttribute(cfg_root_t * __restrict cfg, const c
  *   *
  * @cfg = Config root   * @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} = ... * @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute
  * return: 0 item not found, -1 error or 1 removed item   * return: 0 item not found, -1 error or 1 removed item
  */   */
 int  int
Line 128  cfg_unsetAttribute(cfg_root_t * __restrict cfg, const  Line 186  cfg_unsetAttribute(cfg_root_t * __restrict cfg, const 
 {  {
         struct tagCfg *av;          struct tagCfg *av;
   
        if (!cfg || !csAttr)        if (!cfg)
                 return -1;                  return -1;
   
         av = _selectAttribute(cfg, csSec, csAttr);          av = _selectAttribute(cfg, csSec, csAttr);
Line 217  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch Line 275  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch
  *   *
  * @cfg = Config root   * @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} = ..., if NULL as *any* attribute
  * return: NULL item not found or null parameters, !=NULL value const string   * return: NULL item not found or null parameters, !=NULL value const string
  */   */
 const char *  const char *
Line 225  cfg_getAttribute(cfg_root_t * __restrict cfg, const ch Line 283  cfg_getAttribute(cfg_root_t * __restrict cfg, const ch
 {  {
         struct tagCfg *av;          struct tagCfg *av;
   
        if (!cfg || !csAttr)        if (!cfg)
                 return NULL;                  return NULL;
   
         av = _selectAttribute(cfg, csSec, csAttr);          av = _selectAttribute(cfg, csSec, csAttr);
Line 240  cfg_getAttribute(cfg_root_t * __restrict cfg, const ch Line 298  cfg_getAttribute(cfg_root_t * __restrict cfg, const ch
  *   *
  * @cfg = Config root   * @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} = ... * @csAttr = Config attribute //{csAttr} = ..., if NULL as *any* attribute
  * @val = Return buffer for item Value //... = {val}   * @val = Return buffer for item Value //... = {val}
  * @csDefValue = *Default Value* for return in //{val}, if not found item in config   * @csDefValue = *Default Value* for return in //{val}, if not found item in config
  * return: 0 item not found, -1 error or >0 number of copied bytes in //{val}   * return: 0 item not found, -1 error or >0 number of copied bytes in //{val}
Line 252  cfg_loadAttribute(cfg_root_t * __restrict cfg, const c Line 310  cfg_loadAttribute(cfg_root_t * __restrict cfg, const c
         struct tagCfg *av;          struct tagCfg *av;
         int ret = 0;          int ret = 0;
   
        if (!cfg || !csAttr || !val) {        if (!cfg || !val) {
                 cfg_SetErr(EINVAL, "Invalid argument(s)");                  cfg_SetErr(EINVAL, "Invalid argument(s)");
                 return -1;                  return -1;
         }          }

Removed from v.1.14  
changed lines
  Added in v.1.15


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>