Diff for /libaitcfg/src/queue.c between versions 1.6.4.5 and 1.11.4.1

version 1.6.4.5, 2012/04/02 16:11:13 version 1.11.4.1, 2013/01/17 13:42:10
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, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
         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 49  SUCH DAMAGE. Line 49  SUCH DAMAGE.
 static inline struct tagCfg *  static inline struct tagCfg *
 _selectAttribute(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr)  _selectAttribute(cfg_root_t * __restrict cfg, const char *csSec, const char *csAttr)
 {  {
        struct tagCfg fav;        struct tagCfg fav, *c;
   
         if (!cfg)          if (!cfg)
                 return NULL;                  return NULL;
Line 58  _selectAttribute(cfg_root_t * __restrict cfg, const ch Line 58  _selectAttribute(cfg_root_t * __restrict cfg, const ch
   
         if (csSec && *csSec)          if (csSec && *csSec)
                 AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec,                   AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec, 
                                io_align(strlen(csSec), 1) / 2);                                E_ALIGN(strlen(csSec), 2) / 2);
         if (csAttr)          if (csAttr)
                 AIT_KEY(&fav.cfg_attr) = crcFletcher16((u_short*) csAttr,                   AIT_KEY(&fav.cfg_attr) = crcFletcher16((u_short*) csAttr, 
                                io_align(strlen(csAttr), 1) / 2);                                E_ALIGN(strlen(csAttr), 2) / 2);
   
         if (!csAttr)          if (!csAttr)
                 return RB_NFIND(tagRC, cfg, &fav);                  return RB_NFIND(tagRC, cfg, &fav);
        else        else {
                return RB_FIND(tagRC, cfg, &fav);                c = RB_FIND(tagRC, cfg, &fav);
                 if (!c)
                         return NULL;    /* not found */
                 do {
                         if (!strcmp(AIT_GET_STR(&c->cfg_attr), csAttr))
                                 return c;       /* FOUND! */
                 } while (RB_NEXT(tagRC, cfg, c) && !cfg_tree_cmp(c, &fav));
                 return NULL;    /* not found */
         }
 }  }
   
 static inline void  
 _destroyAttribute(struct tagCfg *av)  
 {  
         if (!av)  
                 return;  
   
 }  
   
 /* --------------------------------------------------------------- */  /* --------------------------------------------------------------- */
   
 /*  /*
Line 101  cfg_findAttribute(cfg_root_t * __restrict cfg, const c Line 101  cfg_findAttribute(cfg_root_t * __restrict cfg, const c
   
         if (csSec && *csSec)          if (csSec && *csSec)
                 AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec,                   AIT_KEY(&fav.cfg_sec) = crcFletcher16((u_short*) csSec, 
                                io_align(strlen(csSec), 1) / 2);                                E_ALIGN(strlen(csSec), 2) / 2);
         if (csAttr)          if (csAttr)
                 AIT_KEY(&fav.cfg_attr) = crcFletcher16((u_short*) csAttr,                   AIT_KEY(&fav.cfg_attr) = crcFletcher16((u_short*) csAttr, 
                                io_align(strlen(csAttr), 1) / 2);                                E_ALIGN(strlen(csAttr), 2) / 2);
   
         SLIST_FOREACH(av, cfg, cfg_next) {          SLIST_FOREACH(av, cfg, cfg_next) {
                 ++cx;                  ++cx;
Line 143  cfg_unsetAttribute(cfg_root_t * __restrict cfg, const  Line 143  cfg_unsetAttribute(cfg_root_t * __restrict cfg, const 
         AIT_FREE_VAL(&av->cfg_val);          AIT_FREE_VAL(&av->cfg_val);
         AIT_FREE_VAL(&av->cfg_attr);          AIT_FREE_VAL(&av->cfg_attr);
         AIT_FREE_VAL(&av->cfg_sec);          AIT_FREE_VAL(&av->cfg_sec);
        free(av);        e_free(av);
         return 1;          return 1;
 }  }
   
Line 169  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch Line 169  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch
                 /* adding new element */                  /* adding new element */
                 section = _selectAttribute(cfg, csSec, NULL);                  section = _selectAttribute(cfg, csSec, NULL);
   
                av = malloc(sizeof(struct tagCfg));                av = e_malloc(sizeof(struct tagCfg));
                 if (!av) {                  if (!av) {
                         LOGERR;                          LOGERR;
                         return -1;                          return -1;
Line 187  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch Line 187  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch
                 if (csSec && *csSec) {                  if (csSec && *csSec) {
                         AIT_SET_STR(&av->cfg_sec, csSec);                          AIT_SET_STR(&av->cfg_sec, csSec);
                         AIT_KEY(&av->cfg_sec) = crcFletcher16(AIT_GET_LIKE(&av->cfg_sec, u_short*),                           AIT_KEY(&av->cfg_sec) = crcFletcher16(AIT_GET_LIKE(&av->cfg_sec, u_short*), 
                                        io_align(AIT_LEN(&av->cfg_sec) - 1, 1) / 2);                                        E_ALIGN(AIT_LEN(&av->cfg_sec) - 1, 2) / 2);
                 }                  }
                 AIT_SET_STR(&av->cfg_val, csVal ? csVal : "");                  AIT_SET_STR(&av->cfg_val, csVal ? csVal : "");
                 AIT_SET_STR(&av->cfg_attr, csAttr);                  AIT_SET_STR(&av->cfg_attr, csAttr);
                 AIT_KEY(&av->cfg_attr) = crcFletcher16(AIT_GET_LIKE(&av->cfg_attr, u_short*),                   AIT_KEY(&av->cfg_attr) = crcFletcher16(AIT_GET_LIKE(&av->cfg_attr, u_short*), 
                                io_align(AIT_LEN(&av->cfg_attr) - 1, 1) / 2);                                E_ALIGN(AIT_LEN(&av->cfg_attr) - 1, 2) / 2);
   
                 CFG_RC_LOCK(cfg);                  CFG_RC_LOCK(cfg);
                 RB_INSERT(tagRC, cfg, av);                  RB_INSERT(tagRC, cfg, av);
Line 200  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch Line 200  cfg_setAttribute(cfg_root_t * __restrict cfg, const ch
                 return 2;                  return 2;
         }          }
   
        if (csVal && strcmp((char*) csVal, (char*) AIT_GET_STR(&av->cfg_val))) {        if (csVal && AIT_ADDR(&av->cfg_val) && 
                         strcmp((char*) csVal, (char*) AIT_GET_STR(&av->cfg_val))) {
                 /* Update element */                  /* Update element */
                 AIT_FREE_VAL(&av->cfg_val);                  AIT_FREE_VAL(&av->cfg_val);
                 AIT_SET_STR(&av->cfg_val, csVal);                  AIT_SET_STR(&av->cfg_val, csVal);
Line 256  cfg_loadAttribute(cfg_root_t * __restrict cfg, const c Line 257  cfg_loadAttribute(cfg_root_t * __restrict cfg, const c
                 return -1;                  return -1;
         }          }
   
           AIT_INIT_VAL(val);
         av = _selectAttribute(cfg, csSec, csAttr);          av = _selectAttribute(cfg, csSec, csAttr);
         if (!av) {          if (!av) {
                 /* not found item */                  /* not found item */
                 if (csDefValue) {                  if (csDefValue) {
                         AIT_SET_STR(val, csDefValue);                          AIT_SET_STR(val, csDefValue);
                         ret = AIT_LEN(val);                          ret = AIT_LEN(val);
                }                } else
                         AIT_INIT_VAL(val);
                 return ret;                  return ret;
         }          }
   
        if (AIT_ISEMPTY(&av->cfg_val) || !*AIT_GET_LIKE(&av->cfg_val, char*)) {        if (AIT_ISEMPTY(&av->cfg_val) || !AIT_ADDR(&av->cfg_val) || 
                         !*AIT_GET_LIKE(&av->cfg_val, char*)) {
                 /* empty value */                  /* empty value */
                 if (csDefValue) {                  if (csDefValue) {
                         AIT_SET_STR(val, csDefValue);                          AIT_SET_STR(val, csDefValue);
                         ret = AIT_LEN(val);                          ret = AIT_LEN(val);
                }                } else
                         AIT_INIT_VAL(val);
         } else {          } else {
                 /* copy value */                  /* copy value */
                 AIT_SET_STR(val, AIT_GET_STR(&av->cfg_val));                  AIT_SET_STR(val, AIT_GET_STR(&av->cfg_val));

Removed from v.1.6.4.5  
changed lines
  Added in v.1.11.4.1


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