int MFLoadConfig (char *fileName, int (*func) (const char *,const char *)) { FILE *fp; char *buffer = (char *) NULL, *name, *content; int size = 0, lNum = 0, i, len; if ((fp = fopen (fileName,"r")) == (FILE *) NULL) { CMmsgPrint (CMmsgUsrError, "Configuration file [%s] opening error!\n", fileName); return (CMfailed); } while ((buffer = CMbufGetLine (buffer,&size,fp)) != (char *) NULL) { lNum ++; buffer = CMbufTrim (buffer); len = strlen (buffer); if (len == 0) continue; if (buffer [0] == '#') continue; for (i = 0; i < len; ++i) if (buffer [i] == '=') break; if (i == len) { CMmsgPrint (CMmsgWarning,"Skipping line [%s:%d %s]\n",fileName,lNum, buffer); continue; } buffer [i] = '\0'; name = CMbufTrim (buffer); content = CMbufStripDQuotes (CMbufStripSQuotes (CMbufTrim (buffer + i + 1))); len = strlen (content); for (i = 0;i < len;++i) if (content [i] == '#') break; if (i < len) { content [i] = '\0'; content = CMbufTrim (buffer); } if (func (name, content) != CMsucceeded) return (CMfailed); } return (CMsucceeded); }
static int _MFModelOutputNew (const char *name, const char *path, bool state) { _MFModelOutput = (struct output_s *) realloc (_MFModelOutput,sizeof (struct output_s) * (_MFModelOutNum + 1)); if (_MFModelOutput == (struct output_s *) NULL) { CMmsgPrint (CMmsgSysError,"Memory Allocation Error in: %s:%d\n",__FILE__,__LINE__); return (CMfailed); } _MFModelOutput [_MFModelOutNum].Name = (char *) malloc (strlen (name) + 1); _MFModelOutput [_MFModelOutNum].Path = (char *) malloc (strlen (path) + 1); if ((_MFModelOutput [_MFModelOutNum].Name == (char *) NULL) || (_MFModelOutput [_MFModelOutNum].Path == (char *) NULL)) { CMmsgPrint (CMmsgSysError,"Memory Allocation Error in: %s:%d\n",__FILE__,__LINE__); return (CMfailed); } strcpy (_MFModelOutput [_MFModelOutNum].Name, name); strcpy (_MFModelOutput [_MFModelOutNum].Path, path); _MFModelOutput [_MFModelOutNum].Name = CMbufStripDQuotes (CMbufStripSQuotes (CMbufTrim (_MFModelOutput [_MFModelOutNum].Name))); _MFModelOutput [_MFModelOutNum].Path = CMbufStripDQuotes (CMbufStripSQuotes (CMbufTrim (_MFModelOutput [_MFModelOutNum].Path))); _MFModelOutput [_MFModelOutNum].State = state; _MFModelOutNum++; return (CMsucceeded); }