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

version 1.15, 2014/03/19 18:38:43 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 - 2014Copyright 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 104  cfg_getSection(cfg_root_t * __restrict cfg, const char Line 104  cfg_getSection(cfg_root_t * __restrict cfg, const char
                 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 (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) {          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 ((av = RB_NEXT(tagRC, cfg, av)) && av) {        TAILQ_FOREACH(av, cfg, cfg_next)
                if (csSec) {                if (AIT_KEY(&av->cfg_sec) == AIT_KEY(&fav.cfg_sec)) {
                        if (AIT_ISEMPTY(&av->cfg_sec) || strcmp(AIT_GET_STR(&av->cfg_sec), csSec))                        if (!csSec) {
                                break;                                if (AIT_ISEMPTY(&av->cfg_sec))
                } else {                                        array_Push(arr, av, 0);
                        if (!AIT_ISEMPTY(&av->cfg_sec))                        } else {
                                break;                                if (!AIT_ISEMPTY(&av->cfg_sec) && 
                                                 !strcmp(AIT_GET_STR(&av->cfg_sec), csSec))
                                         array_Push(arr, av, 0);
                         }
                 }                  }
   
                array_Push(arr, av, 0);        if (!array_Size(arr))
        }                array_Destroy(&arr);
   
         return arr;          return arr;
 }  }
Line 291  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);
 }  }
   
 /*  /*

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


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