Diff for /libaitcfg/src/queue.c between versions 1.14.4.1 and 1.14.4.4

version 1.14.4.1, 2014/03/19 16:35:29 version 1.14.4.4, 2014/03/19 18:36:08
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 */
         }          }
 }  }
   
 /* --------------------------------------------------------------- */  /* --------------------------------------------------------------- */
   
   /*
    * 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

Removed from v.1.14.4.1  
changed lines
  Added in v.1.14.4.4


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