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; |
} |
} |