Diff for /libaitcfg/src/parse.c between versions 1.2.2.1 and 1.2.2.4

version 1.2.2.1, 2009/09/09 09:29:37 version 1.2.2.4, 2009/10/19 14:58:24
Line 24  static inline int cfgDbg(FILE *f, char *fmt, ...) Line 24  static inline int cfgDbg(FILE *f, char *fmt, ...)
         return ret;          return ret;
 }  }
   
   /*
    * InvertQueue() InvertQueue order //{cfg} list of elements for revert
    * @cfg = Head list element for revert 
   */
   static inline void InvertQueue(sl_config * __restrict cfg)
   {
           struct tagPair *item, *next, *prev = NULL;
   
           for (item = cfg->slh_first; item; item = next) {
                   next = item->sle_next;
                   item->sle_next = prev;
                   prev = item;
           }
           cfg->slh_first = prev;
   }
   
 // cfgWrite() Write to file from config list  // cfgWrite() Write to file from config list
 static inline int cfgWrite(FILE *f, sl_config * __restrict cfg, int whitespace)  static inline int cfgWrite(FILE *f, sl_config * __restrict cfg, int whitespace)
 {  {
Line 42  static inline int cfgWrite(FILE *f, sl_config * __rest Line 58  static inline int cfgWrite(FILE *f, sl_config * __rest
                 return -1;                  return -1;
         }          }
   
           InvertQueue(cfg);
         for (av = cfg->slh_first; av; av = av->sle_next) {          for (av = cfg->slh_first; av; av = av->sle_next) {
                 if (av->psSection && strcmp((char*) av->psSection, (char*) szSection)) {                  if (av->psSection && strcmp((char*) av->psSection, (char*) szSection)) {
                         strlcpy((char*) szSection, (char*) av->psSection, MAX_STR + 1);                          strlcpy((char*) szSection, (char*) av->psSection, MAX_STR + 1);
Line 70  static inline int cfgWrite(FILE *f, sl_config * __rest Line 87  static inline int cfgWrite(FILE *f, sl_config * __rest
                         }                          }
                 }                  }
         }          }
           InvertQueue(cfg);
   
         bzero(szTime, MAX_STR + 1);          bzero(szTime, MAX_STR + 1);
         time(&tim);          time(&tim);
Line 82  static inline int cfgWrite(FILE *f, sl_config * __rest Line 100  static inline int cfgWrite(FILE *f, sl_config * __rest
         return 0;          return 0;
 }  }
   
// -----------------------------------------// ---------------------------------------------------
   
 /*  /*
  * ReadConfig() Read from file and add new item to config list   * ReadConfig() Read from file and add new item to config list
Line 218  int WriteConfig(FILE *f, sl_config * __restrict cfg) Line 236  int WriteConfig(FILE *f, sl_config * __restrict cfg)
 int cfg_WriteConfig(FILE *f, sl_config * __restrict cfg)  int cfg_WriteConfig(FILE *f, sl_config * __restrict cfg)
 {  {
         return cfgWrite(f, cfg, 0);          return cfgWrite(f, cfg, 0);
   }
   
   /*
    * ConcatConfig() Concat two list in one
    * @cfg = Head list element of main list
    * @add_cfg = Head list element of added list
    * return: 0 ok; -1 error:: can`t concat lists
   */
   int ConcatConfig(sl_config * __restrict cfg, sl_config * __restrict add_cfg)
   {
           struct tagPair *item;
           int ret = 0;
   
           if (!cfg || !add_cfg)
                   return -1;
   
           for (item = cfg->slh_first; item->sle_next; item = item->sle_next);
           item->sle_next = add_cfg->slh_first;
   
           add_cfg->slh_first = NULL;
   
           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.1  
changed lines
  Added in v.1.2.2.4


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