Diff for /libaitcfg/src/queue.c between versions 1.1 and 1.4

version 1.1, 2008/08/28 13:17:41 version 1.4, 2010/03/22 14:53:49
Line 1 Line 1
   /*************************************************************************
   * (C) 2008 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com>
   *  by Michael Pounov <misho@openbsd-bg.org>
   *
   * $Author$
   * $Id$
   *
   *************************************************************************/
 #include "global.h"  #include "global.h"
 #include "aitcfg.h"  #include "aitcfg.h"
   
Line 133  int cfg_UnsetAttribute(sl_config * __restrict cfg, con Line 141  int cfg_UnsetAttribute(sl_config * __restrict cfg, con
 int cfg_SetAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr, const u_char *csVal)  int cfg_SetAttribute(sl_config * __restrict cfg, const u_char *csSec, const u_char *csAttr, const u_char *csVal)
 {  {
         struct tagPair *av, *section;          struct tagPair *av, *section;
           int len;
   
         if (!cfg || !csAttr)          if (!cfg || !csAttr)
                 return -1;                  return -1;
Line 160  int cfg_SetAttribute(sl_config * __restrict cfg, const Line 169  int cfg_SetAttribute(sl_config * __restrict cfg, const
                 }                  }
                 // added section name to element                  // added section name to element
                 if (csSec && *csSec) {                  if (csSec && *csSec) {
                        av->psSection = malloc(strlen((char*) csSec) + 1);                        len = strlen((char*) csSec) + 1;
                         av->psSection = malloc(len);
                         if (!av->psSection) {                          if (!av->psSection) {
                                 LOGERR;                                  LOGERR;
                                 free(av);                                  free(av);
                                 return -1;                                  return -1;
                         } else {                          } else {
                                memset(av->psSection, 0, strlen((char*) csSec) + 1);                                strlcpy((char*) av->psSection, (char*) csSec, len);
                                strcpy((char*) av->psSection, (char*) csSec); 
                         }                          }
                 } else                  } else
                         av->psSection = NULL;                          av->psSection = NULL;
   
                 // added attribute to element                  // added attribute to element
                av->psAttribute = malloc(strlen((char*) csAttr) + 1);                len = strlen((char*) csAttr) + 1;
                 av->psAttribute = malloc(len);
                 if (!av->psAttribute) {                  if (!av->psAttribute) {
                         LOGERR;                          LOGERR;
                         free(av->psSection);                          free(av->psSection);
                         free(av);                          free(av);
                         return -1;                          return -1;
                 } else {                  } else {
                        memset(av->psAttribute, 0, strlen((char*) csAttr) + 1);                        strlcpy((char*) av->psAttribute, (char*) csAttr, len);
                        strcpy((char*) av->psAttribute, (char*) csAttr); 
                 }                  }
                 // added value to element                  // added value to element
                 if (csVal && *csVal) {                  if (csVal && *csVal) {
                        av->psValue = malloc(strlen((char*) csVal) + 1);                        len = strlen((char*) csVal) + 1;
                         av->psValue = malloc(len);
                         if (!av->psValue) {                          if (!av->psValue) {
                                 LOGERR;                                  LOGERR;
                                 free(av->psAttribute);                                  free(av->psAttribute);
Line 193  int cfg_SetAttribute(sl_config * __restrict cfg, const Line 203  int cfg_SetAttribute(sl_config * __restrict cfg, const
                                 free(av);                                  free(av);
                                 return -1;                                  return -1;
                         } else {                          } else {
                                memset(av->psValue, 0, strlen((char*) csVal) + 1);                                strlcpy((char*) av->psValue, (char*) csVal, len);
                                strcpy((char*) av->psValue, (char*) csVal); 
                         }                          }
                 } else {                  } else {
                         av->psValue = malloc(1);                          av->psValue = malloc(1);
Line 206  int cfg_SetAttribute(sl_config * __restrict cfg, const Line 215  int cfg_SetAttribute(sl_config * __restrict cfg, const
         }          }
   
         if (strcmp((char*) csVal, (char*) av->psValue)) {          if (strcmp((char*) csVal, (char*) av->psValue)) {
                av->psValue = realloc(av->psValue, strlen((char*) csVal) + 1);                len = strlen((char*) csVal) + 1;
                memset(av->psValue, 0, strlen((char*) csVal) + 1);                av->psValue = realloc(av->psValue, len);
                strcpy((char*) av->psValue, (char*) csVal);                strlcpy((char*) av->psValue, (char*) csVal, len);
   
                 // Update element                  // Update element
                 return 1;                  return 1;
Line 239  inline const u_char *cfg_GetAttribute(sl_config * __re Line 248  inline const u_char *cfg_GetAttribute(sl_config * __re
         return av->psValue;          return av->psValue;
 }  }
   
   /*
    * cfg_FirstItem() Get first item from config list and return his value
    * @cfg = Head list element
    * return: NULL if no items in list; !=NULL first pair item
   */
   inline struct tagPair *cfg_FirstItem(sl_config * __restrict cfg)
   {
           return cfg->slh_first;
   }
   
 // --------------------------------------------------------------  // --------------------------------------------------------------
   
 /*  /*
Line 260  int cfg_LoadAttribute(sl_config * __restrict cfg, cons Line 279  int cfg_LoadAttribute(sl_config * __restrict cfg, cons
         if (!cfg || !csAttr || !ValLen || !psVal)          if (!cfg || !csAttr || !ValLen || !psVal)
                 return -1;                  return -1;
   
         memset(psVal, 0, ValLen);  
         av = SelectAttribute(cfg, csSec, csAttr);          av = SelectAttribute(cfg, csSec, csAttr);
         if (!av) {          if (!av) {
                 if (csDefValue) {                  if (csDefValue) {
                        strncpy((char*) psVal, csDefValue, ValLen - 1);                        strlcpy((char*) psVal, csDefValue, ValLen);
                         ret = strlen((char*) psVal);                          ret = strlen((char*) psVal);
                 }                  }
   
Line 273  int cfg_LoadAttribute(sl_config * __restrict cfg, cons Line 291  int cfg_LoadAttribute(sl_config * __restrict cfg, cons
   
         if (!av->psValue || !*av->psValue) {          if (!av->psValue || !*av->psValue) {
                 if (csDefValue) {                  if (csDefValue) {
                        strncpy((char*) psVal, csDefValue, ValLen - 1);                        strlcpy((char*) psVal, csDefValue, ValLen);
                         ret = strlen((char*) psVal);                          ret = strlen((char*) psVal);
                 }                  }
         } else {          } else {
                strncpy((char*) psVal, (char*) av->psValue, ValLen - 1);                strlcpy((char*) psVal, (char*) av->psValue, ValLen);
                 ret = strlen((char*) psVal);                  ret = strlen((char*) psVal);
         }          }
   

Removed from v.1.1  
changed lines
  Added in v.1.4


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