Diff for /libaitcfg/src/parse.c between versions 1.2.2.3 and 1.5.2.1

version 1.2.2.3, 2009/09/23 14:20:53 version 1.5.2.1, 2010/03/22 18:29:22
Line 8 Line 8
 *************************************************************************/  *************************************************************************/
 #include "global.h"  #include "global.h"
 #include "aitcfg.h"  #include "aitcfg.h"
 #include "tools.h"  
   
   
 // cfgDbg() Debug/Log operation  // cfgDbg() Debug/Log operation
Line 187  int ReadConfig(FILE *f, sl_config * __restrict cfg) Line 186  int ReadConfig(FILE *f, sl_config * __restrict cfg)
                         szLine[pos] = 0;                          szLine[pos] = 0;
                         rtrim(psAttr);                          rtrim(psAttr);
                         ltrim(psVal);                          ltrim(psVal);
                           unquot(psVal);
 #ifdef __DEBUG  #ifdef __DEBUG
                         cfgDbg(stdout, "DEBUG:: Attr(%p) ->%s size=%d Value(%p) ->%s size=%d\n",                           cfgDbg(stdout, "DEBUG:: Attr(%p) ->%s size=%d Value(%p) ->%s size=%d\n", 
                                         psAttr, psAttr, strlen((char*) psAttr), psVal, psVal, strlen((char*) psVal));                                          psAttr, psAttr, strlen((char*) psAttr), psVal, psVal, strlen((char*) psVal));
Line 255  int ConcatConfig(sl_config * __restrict cfg, sl_config Line 255  int ConcatConfig(sl_config * __restrict cfg, sl_config
         for (item = cfg->slh_first; item->sle_next; item = item->sle_next);          for (item = cfg->slh_first; item->sle_next; item = item->sle_next);
         item->sle_next = add_cfg->slh_first;          item->sle_next = add_cfg->slh_first;
   
           add_cfg->slh_first = NULL;
   
         return ret;          return ret;
 }  }
   
   /*
    * MergeConfig() Marge two list in one cfg and destroy add_cfg
    * @cfg = Head list element of main list
    * @add_cfg = Head list element of merged list (destroy after all!)
    * return: 0 ok; -1 error:: can`t merge lists
   */
   int MergeConfig(sl_config * __restrict cfg, sl_config * __restrict add_cfg)
   {
           struct tagPair *item, *merge, *add_next, *next = NULL;
           int flg;
   
           if (!cfg || !add_cfg)
                   return -1;
   
           item = add_cfg->slh_first;
           while (item) {
                   add_next = item->sle_next;
   
                   for (flg = 0, merge = cfg->slh_first, next = merge->sle_next; next; 
                                   merge = merge->sle_next, next = merge->sle_next) {
                           if (!merge->psSection && !item->psSection) {
                                   flg = 1;
                                   merge->sle_next = item;
                                   item->sle_next = next;
                                   break;
                           }
                           if (merge->psSection && item->psSection && 
                                           !strcmp((char*) merge->psSection, (char*) item->psSection)) {
                                   flg = 1;
                                   merge->sle_next = item;
                                   item->sle_next = next;
                                   break;
                           }
                   }
   
                   if (!flg) {
                           if (!merge->sle_next) {
                                   merge->sle_next = item;
                                   item->sle_next = NULL;
                           } else
                                   return -1;
                   }
   
                   item = add_next;
           }
   
           add_cfg->slh_first = NULL;
   
           return 0;
   }

Removed from v.1.2.2.3  
changed lines
  Added in v.1.5.2.1


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