📄 title.c
字号:
/* 2勾户及玄□弁件毛苇月 */
ret = getStringFromIndexWithDelim( line,",",2,token,
sizeof(token));
if( ret==FALSE ){
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
continue;
}
if( strlen( token) > sizeof( TITLE_table[title_readlen].name)-1) {
fprint("警告! 头衔名称结束文件:%s 第%d行\n",
filename, linenum);
}
strcpysafe( TITLE_table[title_readlen].name,
sizeof( TITLE_table[title_readlen].name),
token);
title_readlen ++;
}
}
fclose(f);
TITLE_titlenum = title_readlen;
print( "有效头衔名称数是 %d...", TITLE_titlenum );
#ifdef DEBUG
{
int i;
for( i=0; i <TITLE_titlenum ; i++ )
print( "头衔索引[%d] 名称[%s] \n",
TITLE_table[i].index,
TITLE_table[i].name);
}
#endif
return TRUE;
}
/*------------------------------------------------------------
* 惫寞及疯赓渝祭毛允月[
* 娄醒
* filename char* 涩烂白央奶伙
* 忒曰袄
* 岳 TRUE(1)
* 撩 FALSE(0)
*------------------------------------------------------------*/
BOOL TITLE_reinitTitleName( void)
{
freeMemory( TITLE_table);
return(TITLE_initTitleName( getTitleNamefile()));
}
/*------------------------------------------------------------
* 惫寞涩烂及赓渝祭毛允月[
* 娄醒
* filename char* 涩烂白央奶伙
* 忒曰袄
* 岳 TRUE(1)
* 撩 FALSE(0)
*------------------------------------------------------------*/
static void TITLE_initTitleData( int array)
{
int j,k;
for( j = 0; j < arraysizeof( TITLE_ConfigTable[array].paramindex); j ++) {
for( k = 0; k < TITLE_PARAMSIZE; k++) {
TITLE_ConfigTable[array].param[j][k] = -1;
}
TITLE_ConfigTable[array].paramindex[j] = -1;
TITLE_ConfigTable[array].compareflg[j] = -1;
}
TITLE_ConfigTable[array].title = -1;
TITLE_ConfigTable[array].equipcheckflg = FALSE;
}
/*------------------------------------------------------------
* 醒垫涩烂毛引午户化ㄠ垫卞仄化支月[ 戈及手仇仇匹允月[
*------------------------------------------------------------*/
static int TITLE_getConfigOneLine( FILE *fp, char *line, int linelen)
{
char buf[1024];
int startflg = FALSE;
int linenum=0;
line[0] = '\0';
while( fgets( buf, sizeof( buf ), fp )){
linenum ++;
if( buf[0] == '#' )continue; /* comment */
if( buf[0] == '\n' )continue; /* none */
/* 垫毛帮溥允月 */
/* 引内 tab 毛 " " 卞 五晶尹月 */
replaceString( buf, '\t' , ' ' );
/* 旦矢□旦绰轮 */
deleteCharFromString( buf, " ");
if( buf[0] == '{' ) {
if( startflg == TRUE ) {
print( "titleconfig:明明没有关闭「{」却出现了: %d \n",linenum);
/* } */
return -1;
}
startflg = TRUE;
}
else if( buf[0] == '}' ) {
if( startflg == FALSE) {
print( "titleconfig:明明没有关闭「{」却出现了: %d \n",linenum);
/* } */
return -1;
}
return 1;
}
else {
/* "{"匹湃卞铵引匀化中凶日 }*/
if( startflg == TRUE ) {
if( strlen( line) != 0 ) {
if( line[strlen(line) -1] != ',' ) {
strcatsafe( line, linelen, ",");
}
}
/* ㄠ垫卞引午户化中仁*/
chompex( buf );
strcatsafe( line,linelen, buf);
}
/* 躲垫分互"{"匹反元引匀化卅中桦宁反公及引引ㄠ垫匹忒允 }*/
else {
chompex( buf );
strcatsafe( line,linelen, buf);
return 1;
}
}
}
/* 仇仇卞仁月午蜕丹仪反EOF 驯五元扎卅中戊□玉分 */
return 0;
}
static int TITLE_getParamData( int readarray, int array,char *src)
{
int cnt;
int ret;
char wk[64];
for( cnt = 1; ; cnt ++ ) {
ret = getStringFromIndexWithDelim( src,"|",cnt,wk, sizeof(wk));
if( ret ) {
TITLE_ConfigTable[readarray].param[array][cnt-1] = atoi(wk);
}
else {
break;
}
}
if( cnt == 1 ) {
return FALSE;
}
return TRUE;
}
/*------------------------------------------------------------
* 惫寞涩烂及赓渝祭毛允月[
* 娄醒
* filename char* 涩烂白央奶伙
* 忒曰袄
* 岳 TRUE(1)
* 撩 FALSE(0)
*------------------------------------------------------------*/
BOOL TITLE_initTitleConfig( char* filename )
{
FILE* f;
char line[1024];
int linenum=0;
int titlecfg_readlen=0;
f = fopen(filename,"r");
if( f == NULL ){
errorprint;
return FALSE;
}
TITLE_titlecfgnum=0;
/* 引内 躲卅垫互窒垫丐月井升丹井譬屯月 */
/*while( fgets( line, sizeof( line ), f ) ){}*/
while( 1 ) {
int rc;
rc = TITLE_getConfigOneLine( f, line, sizeof(line));
if( rc == 0 ) break;
if( rc == -1 ) continue;
TITLE_titlecfgnum++;
}
if( fseek( f, 0, SEEK_SET ) == -1 ){
fprint( "Seek Error\n" );
fclose(f);
return FALSE;
}
TITLE_ConfigTable = allocateMemory( sizeof(struct tagTITLE_configTable)
* TITLE_titlecfgnum );
if( TITLE_ConfigTable == NULL ){
fprint( "Can't allocate Memory %d\n" ,
sizeof(TITLE_ConfigTable)*TITLE_titlecfgnum);
fclose( f );
return FALSE;
}
/* 赓渝祭 */
{
int i;
for( i = 0; i < TITLE_titlecfgnum; i ++ ) {
TITLE_initTitleData( i);
}
}
TITLE_configbuf = allocateMemory( sizeof(TITLE_CONFIGBUF) * TITLE_titlecfgnum );
if( TITLE_configbuf == NULL ){
fprint( "Can't allocate Memory %d\n" ,
sizeof(TITLE_CONFIGBUF)*TITLE_titlecfgnum);
fclose( f );
return FALSE;
}
/* 引凶 心 允 */
linenum = 0;
/*while( fgets( line, sizeof( line ), f ) ){}*/
while( 1) {
int rc;
rc = TITLE_getConfigOneLine( f, line, sizeof(line));
if( rc == 0 ) break;
if( rc == -1 ) continue;
linenum ++;
{
char token[256];
int ret;
int i , j ;
int comppos;
BOOL errflg =FALSE;
for( i = 1; ; i ++ ){
/* 玄□弁件毛苇月 */
ret = getStringFromIndexWithDelim( line,",",i,token,
sizeof(token));
if( ret == FALSE ){
break;
}
/* 侬卞 晶 */
for( j = 0; j < strlen( token); j ++ ) {
token[j] = toupper( token[j]);
}
/* 惫寞隙烂毛譬屯月 */
if( strncmp( "TITLE", token, 5) == 0 ) {
char buf[64];
ret = getStringFromIndexWithDelim( token,"=",2,buf,
sizeof(buf));
if( ret == FALSE) {
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
errflg = TRUE;
break;
}
TITLE_ConfigTable[titlecfg_readlen].title = atoi( buf);
}
else {
/* 由仿丢□正隙烂毛 戈 */
for( j = 0; j < arraysizeof( TITLE_param); j ++ ) {
if( strncmp( TITLE_param[j].paramname,
token,
strlen( TITLE_param[j].paramname))
== 0 )
{
TITLE_ConfigTable[titlecfg_readlen].paramindex[i-1] = j;
/* 隶 奶矛件玄匹惫寞毛民尼永弁允月白仿弘毛 化月[ */
if( j == 0 || j == 1 || j == 2) {
TITLE_ConfigTable[titlecfg_readlen].equipcheckflg = TRUE;
}
break;
}
}
/* 由仿丢□正互 卅及毛隙烂今木凶 */
if( j == arraysizeof( TITLE_param) ) {
fprint("文件语法错误:%s 第%d行\n",
filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
errflg = TRUE;
break;
}
/* 羁寞]尕羁寞互绣箕允月井譬屯月 */
comppos = charInclude( token, "<>=");
if( comppos == -1 ) {
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
errflg = TRUE;
break;;
}
/* 羁寞]尕羁寞互ㄡ勾动晓 月午五 */
if( charInclude( &token[comppos+1], "<>=") != -1 ) {
/* 升氏卅 胜井毛 戈 */
for( j = 0; j < 3; j ++ ) {
if( memcmp( TITLE_compare[j].compare, &token[comppos], 2 ) == 0 ) {
break;
}
}
if( j == 3 ) {
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
errflg = TRUE;
break;
}
else {
ret = TITLE_getParamData( titlecfg_readlen,i-1,&token[comppos+2]);
if( !ret ) {
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
errflg = TRUE;
break;
}
/*TITLE_ConfigTable[titlecfg_readlen].param[i-1]
= atoi( &token[comppos+2]);*/
TITLE_ConfigTable[titlecfg_readlen].compareflg[i-1] = j;
}
}
else {
ret = TITLE_getParamData( titlecfg_readlen,i-1,&token[comppos+1]);
if( !ret ) {
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
errflg = TRUE;
break;
}
/*TITLE_ConfigTable[titlecfg_readlen].param[i-1]
= atoi( &token[comppos+1]);*/
/* 升氏卅 胜井毛 戈 */
for( j = 3; j < 6; j ++ ) {
if( memcmp( TITLE_compare[j].compare, &token[comppos], 1 ) == 0 ) {
TITLE_ConfigTable[titlecfg_readlen].compareflg[i-1] = j;
break;
}
}
}
}
}
/* 惫寞 隙烂互 井匀凶 or 卅氏井仄日及巨仿□*/
if( errflg || TITLE_ConfigTable[titlecfg_readlen].title == -1 ) {
fprint("文件语法错误:%s 第%d行\n",filename,linenum);
TITLE_initTitleData( titlecfg_readlen);
}
else {
titlecfg_readlen ++;
}
}
}
fclose(f);
TITLE_titlecfgnum = titlecfg_readlen;
print( "有效头衔配置数是 %d...", TITLE_titlecfgnum );
#if 0
{
int i, j;
for( i=0; i < TITLE_titlecfgnum ; i++ ) {
print( "头衔队列[%d]\n", i);
for( j = 0;
j < arraysizeof( TITLE_ConfigTable[i].param) &&
TITLE_ConfigTable[i].param[j] != -1 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -