#include "readconf.h"CONFIGURE *GetConfData(){CONFIGURE *pConf;pConf = (CONFIGURE*)malloc(sizeof(CONFIGURE));memset(pConf, 0x0, sizeof(CONFIGURE));//InitialConf(pConf);if( access("configfile",F_OK)==-1 ) return NULL;else ReadConf("configfile", pConf);return pConf;}int InitialConf(CONFIGURE *pConf){snprintf(pConf->SampDictPathName, sizeof(pConf->SampDictPathName), "/home/raohl/office/officesrc/sample");snprintf(pConf->LogPathName, sizeof(pConf->LogPathName), "/home/raohl/office/scws/libscws/log");snprintf(pConf->NewSampleName, sizeof(pConf->NewSampleName), "/home/raohl/office/officesrc/newsamp");snprintf(pConf->ScwsDictxdbUtf8, sizeof(pConf->ScwsDictxdbUtf8), "/usr/local/scws/etc/dict_chs_utf8.xdb");snprintf(pConf->ScwsRuleIni, sizeof(pConf->ScwsRuleIni), "/usr/local/scws/etc/rules.utf8.ini");snprintf(pConf->LogFileName, sizeof(pConf->LogFileName), "scws.log"); snprintf(pConf->AttrIgnore, sizeof(pConf->AttrIgnore), "~en"); pConf->SingelSampTlimit=3000;return 0;}int ReadConf(char *sFileName, CONFIGURE *pConf){char sLine[1025], *sTmp;FILE *pFile = NULL;int n = 0;pFile = fopen(sFileName, "r");if(!pFile){printf("can't open the configure file!\n");return 0;}memset(sLine,0,1025);while( fgets(sLine, sizeof(sLine), pFile) ){sTmp = strchr(sLine, '\r');if(!sTmp)sTmp = strchr(sLine, '\n');if(sTmp)*sTmp = 0;sTmp = strchr(sLine, '#');if(sTmp)*sTmp = 0;sTmp = strchr(sLine, '=');if(!sTmp)continue;*sTmp = 0;++sTmp;if(strcasecmp(sLine, "SAMPDICT") == 0)snprintf(pConf->SampDictPathName, sizeof(pConf->SampDictPathName), "%s", sTmp);else if(strcasecmp(sLine, "LOGFILE") == 0)snprintf(pConf->LogFileName, sizeof(pConf->LogFileName), "%s", sTmp);else if(strcasecmp(sLine, "LOGPATH") == 0) snprintf(pConf->LogPathName, sizeof(pConf->LogPathName), "%s", sTmp); else if(strcasecmp(sLine, "NEWSAM") == 0) snprintf(pConf->NewSampleName, sizeof(pConf->NewSampleName), "%s", sTmp);else if(strcasecmp(sLine, "DICTXDB_UTF8") == 0) snprintf(pConf->ScwsDictxdbUtf8, sizeof(pConf->ScwsDictxdbUtf8), "%s", sTmp);else if(strcasecmp(sLine, "RULEINI") == 0) snprintf(pConf->ScwsRuleIni, sizeof(pConf->ScwsRuleIni), "%s", sTmp); else if(strcasecmp(sLine, "ATTR") == 0) snprintf(pConf->AttrIgnore, sizeof(pConf->AttrIgnore), "%s", sTmp); else if(strcasecmp(sLine, "TLIMIT") == 0){n = 0;sscanf(sTmp, "%d", &n);if(n > 0)pConf->SingelSampTlimit = n;} }fclose(pFile);return 0;}int ShowConf(CONFIGURE *pConf){if (pConf != NULL){ printf("SampDictPathName:%s\n",pConf->SampDictPathName); printf("LogPathName:%s\n",pConf->LogPathName); printf("LogFileName:%s\n",pConf->LogFileName); printf("NewSampleName:%s\n",pConf->NewSampleName); printf("ScwsDictxdbUtf8:%s\n",pConf->ScwsDictxdbUtf8); printf("ScwsRuleIni:%s\n",pConf->ScwsRuleIni); printf("AttrIgnore:%s\n",pConf->AttrIgnore); printf("SingelSampTlimit:%d\n",pConf->SingelSampTlimit); } else { printf("CONFIGURE IS NULL!\n"); } return 0;}
配置文件格式:SAMPDICT=/home/raohl/office/officesrc/sample