Diff for /libaitcfg/src/parse.c between versions 1.11 and 1.11.4.1

version 1.11, 2012/09/19 15:22:32 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 44  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF TH Line 44  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF TH
 SUCH DAMAGE.  SUCH DAMAGE.
 */  */
 #include "global.h"  #include "global.h"
 #include "aitcfg.h"  
   
   
 static inline void  static inline void
Line 93  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) Line 92  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
                         continue;                          continue;
                 } else {                  } else {
                         *psAttr = 0;                          *psAttr = 0;
                        io_TrimStr(line);                        str_Trim(line);
                 }                  }
   
                 if (flg) {                  if (flg) {
Line 109  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) Line 108  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
                         /* concat line to value */                          /* concat line to value */
                         AIT_SET_STRCAT(&av->cfg_val, line);                          AIT_SET_STRCAT(&av->cfg_val, line);
                         if (!flg && AIT_ADDR(&av->cfg_val))                          if (!flg && AIT_ADDR(&av->cfg_val))
                                io_UnquotStr((char*) AIT_GET_STR(&av->cfg_val));                                str_Unquot((char*) AIT_GET_STR(&av->cfg_val));
                         continue;                          continue;
                 }                  }
   
                 /* *NEW PAIR* alloc new pair element */                  /* *NEW PAIR* alloc new pair element */
                av = io_malloc(sizeof(struct tagCfg));                av = e_malloc(sizeof(struct tagCfg));
                 if (!av) {                  if (!av) {
                        cfg_SetErr(io_GetErrno(), "%s", io_GetError());                        cfg_SetErr(elwix_GetErrno(), "%s", elwix_GetError());
                         return -1;                          return -1;
                 } else {                  } else {
                         memset(av, 0, sizeof(struct tagCfg));                          memset(av, 0, sizeof(struct tagCfg));
Line 146  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) Line 145  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
                                 flg = 0;                                  flg = 0;
                                 strlcpy(szSection, line + 1, sizeof szSection);                                  strlcpy(szSection, line + 1, sizeof szSection);
                         } else                          } else
                                ioDEBUG(7, "Ignore section '%s' ... not found ']'", line);                                EDEBUG(7, "Ignore section '%s' ... not found ']'", line);
                         continue;                          continue;
                 }                  }
                 /* parse pair */                  /* parse pair */
                 if (!(psAttr = strchr(line, '='))) {                  if (!(psAttr = strchr(line, '='))) {
                         AIT_SET_STR(&av->cfg_val, line);                          AIT_SET_STR(&av->cfg_val, line);
                        ioDEBUG(7, "Ignore a/v '%s' ... not found '='", line);                        EDEBUG(7, "Ignore a/v '%s' ... not found '='", line);
                         continue;                          continue;
                 } else {                  } else {
                         *psAttr = 0;                          *psAttr = 0;
Line 164  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg) Line 163  cfgReadConfig(FILE *f, cfg_root_t * __restrict cfg)
                 if (*szSection) {                  if (*szSection) {
                         AIT_SET_STR(&av->cfg_sec, szSection);                          AIT_SET_STR(&av->cfg_sec, szSection);
                         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, 2) / 2);                                        E_ALIGN(AIT_LEN(&av->cfg_sec) - 1, 2) / 2);
                 }                  }
   
                io_RTrimStr(psAttr);                str_RTrim(psAttr);
                io_LTrimStr(psVal);                str_LTrim(psVal);
                 if (!flg)                  if (!flg)
                        io_UnquotStr(psVal);                        str_Unquot(psVal);
                 AIT_SET_STR(&av->cfg_val, psVal);                  AIT_SET_STR(&av->cfg_val, psVal);
                 AIT_SET_STR(&av->cfg_attr, psAttr);                  AIT_SET_STR(&av->cfg_attr, psAttr);
                 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, 2) / 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 379  cfgReadLines(FILE *f, const char *delim, const char *e Line 378  cfgReadLines(FILE *f, const char *delim, const char *e
                         continue;                          continue;
                 } else {                  } else {
                         *psAttr = 0;                          *psAttr = 0;
                        io_TrimStr(line);                        str_Trim(line);
                         if (!*line)                          if (!*line)
                                 continue;                                  continue;
                 }                  }
   
                if (!io_MakeAV2(line, delim, &p, &psVal))                if (!av_MakeExt(line, delim, &p, &psVal))
                         continue;                          continue;
                 else {                  else {
                        io_RTrimStr(p);                        str_RTrim(p);
                        io_LTrimStr(psVal);                        str_LTrim(psVal);
                 }                  }
                if (!io_MakeAV2(p, SEC_LINES_DELIM, &psSec, &psAttr))                if (!av_MakeExt(p, SEC_LINES_DELIM, &psSec, &psAttr))
                         psAttr = p;                          psAttr = p;
   
                 /* *NEW PAIR* alloc new pair element */                  /* *NEW PAIR* alloc new pair element */
                av = io_malloc(sizeof(struct tagCfg));                av = e_malloc(sizeof(struct tagCfg));
                 if (!av) {                  if (!av) {
                         LOGERR;                          LOGERR;
                         return -1;                          return -1;
Line 404  cfgReadLines(FILE *f, const char *delim, const char *e Line 403  cfgReadLines(FILE *f, const char *delim, const char *e
                 if (psSec) {                  if (psSec) {
                         AIT_SET_STR(&av->cfg_sec, psSec);                          AIT_SET_STR(&av->cfg_sec, psSec);
                         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, 2) / 2);                                        E_ALIGN(AIT_LEN(&av->cfg_sec) - 1, 2) / 2);
                 }                  }
                 if (psVal)                  if (psVal)
                         AIT_SET_STR(&av->cfg_val, psVal);                          AIT_SET_STR(&av->cfg_val, psVal);
                 AIT_SET_STR(&av->cfg_attr, psAttr);                  AIT_SET_STR(&av->cfg_attr, psAttr);
                 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, 2) / 2);                                E_ALIGN(AIT_LEN(&av->cfg_attr) - 1, 2) / 2);
   
                 CFG_RC_LOCK(cfg);                  CFG_RC_LOCK(cfg);
                 /* find & delete duplicates */                  /* find & delete duplicates */
Line 421  cfgReadLines(FILE *f, const char *delim, const char *e Line 420  cfgReadLines(FILE *f, const char *delim, const char *e
                         AIT_FREE_VAL(&d->cfg_val);                          AIT_FREE_VAL(&d->cfg_val);
                         AIT_FREE_VAL(&d->cfg_attr);                          AIT_FREE_VAL(&d->cfg_attr);
                         AIT_FREE_VAL(&d->cfg_sec);                          AIT_FREE_VAL(&d->cfg_sec);
                        io_free(d);                        e_free(d);
                 }                  }
   
                 SLIST_INSERT_HEAD(cfg, av, cfg_next);                  SLIST_INSERT_HEAD(cfg, av, cfg_next);
Line 440  cfgReadLines(FILE *f, const char *delim, const char *e Line 439  cfgReadLines(FILE *f, const char *delim, const char *e
  * @eol = End of line string, if =NULL default is "\n"   * @eol = End of line string, if =NULL default is "\n"
  * @section = Export only section, if =NULL default is all   * @section = Export only section, if =NULL default is all
  * @cfg = Config root   * @cfg = Config root
 * return: =NULL error or !=NULL exported data, must be free after use with io_freeVar() * return: =NULL error or !=NULL exported data, must be free after use with ait_freeVar()
  */   */
 ait_val_t *  ait_val_t *
 cfgWriteLines(FILE *f, const char *delim, const char *eol, const char *section, cfg_root_t * __restrict cfg)  cfgWriteLines(FILE *f, const char *delim, const char *eol, const char *section, cfg_root_t * __restrict cfg)
Line 454  cfgWriteLines(FILE *f, const char *delim, const char * Line 453  cfgWriteLines(FILE *f, const char *delim, const char *
                 delim = ATR_LINES_DELIM;                  delim = ATR_LINES_DELIM;
         if (!eol)          if (!eol)
                 eol = EOL_LINES_DELIM;                  eol = EOL_LINES_DELIM;
        if (!(v = io_allocVar())) {        if (!(v = ait_allocVar())) {
                cfg_SetErr(io_GetErrno(), "%s", io_GetError());                cfg_SetErr(elwix_GetErrno(), "%s", elwix_GetError());
                 return NULL;                  return NULL;
         } else          } else
                 AIT_INIT_VAL2(v, string);                  AIT_INIT_VAL2(v, string);

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


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