亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? char.c

?? cygwin環(huán)境編譯,saac登陸服務(wù)端,石器2最新代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
#define _CHAR_C_// Spock +1 2000/12/6#include <time.h>#include <stdio.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <unistd.h>#include "main.h"#include "char.h"#include "saacproto_serv.h"#include "util.h"// CoolFish: Family 2001/6/12#include "acfamily.h"#include "version.h"// Arminius 7.17 memory lock#include "lock.h"#include "recv.h"static void getCharNameFromString(char *str ,char *out );static void getCharOptionFromString( char *str , char *out );static void makeCharFileName( char *idstring ,char *output, int outlen,int num);// Nuke *1*1static int makeSaveCharString( char *out , int outlen ,															char *nm , char *opt , char *info );static int findBlankCharIndex( char *id  );static int unlinkCharFile( char *id , int num );#ifdef _SLEEP_CHAR // 取得非活躍人物檔名static void makeSleepCharFileName( char *id,char *output, int outlen, int num);#endif#define SPACE '|'#define SPACESTRING "|"#define IS_2BYTEWORD( _a_ ) ( (char)(0x80) <= (_a_) && (_a_) <= (char)(0xFF) )#define USERLOG( id , format, args...)    \{\	char body[1000];\	char fn[1000];\	if(id[0]){\	snprintf( body ,sizeof(body), "%s.log.%d" , id ,get_rotate_count() );\	makeDirFilename( fn , sizeof(fn),logdir, getHash(id), body);\	LOGBASE( fn , "%u " , (unsigned int ) time(NULL) );\	LOGBASE( fn , format , ## args );\	}\}/*			仇及白央奶伙匹爛聒今木化中月楮醒反兮氏少  據(jù)毛勾井丹[									char *c0 : ID				char *c1 : Passwd  手丹  據(jù)允氏匹月井日銀歹卅中				char *c2 : Charname				char *c3 : opt				Spock fixed, opt change to process				char *c3 : process				char *c4 : 勾井歹氏				int i0 : lock  				int i1 : mesgid */void charLoadCallback( int ti , int auth , char *c0, char* c1 ,											char *c2 , char *c3, char *c4, int i0 , int i1 ){	// Spock deleted 2000/11/2	//static int process_id = 0;	// CoolFish: Init charindex 2001/10/16#ifdef _NewSave	int charindex = -1;#else	int charindex;#endif	char loadbuf[CHARDATASIZE];	char infobuf[CHARDATASIZE];	int lock = i0;	char *process = c3;	char *id = c0;	char *passwd = c1;	char *charname = c2;	int mesgid = i1;		char *deadline = c4;		// Spock deleted 2000/11/2	//process_id++;		if( auth != 0 ){		char data[100];				snprintf( data,  sizeof( data ), "%d" , auth );#ifdef _NewSave		saacproto_ACCharLoad_send( ti , FAILED , data, mesgid, charindex );#else		saacproto_ACCharLoad_send( ti , FAILED , data, mesgid );#endif		return;	}    if( isLocked( id ) ){			int process=atoi(c3);#ifdef _NewSave			saacproto_ACCharLoad_send( ti , FAILED , "locked" , mesgid, charindex );#else			saacproto_ACCharLoad_send( ti , FAILED , "locked" , mesgid );#endif			DeleteMemLock(getHash(id) & 0xff, id, &process); // 如果AP無鎖則AC解鎖			log("\n (%s) AC同一星系重覆登入,踢人!! ", id );			saacproto_ACKick_recv( ti, id, 1, -1);	//踢人						checkGSUCheck(id);			return;    }		    charindex = getCharIndexByName( id , charname );#ifdef _NewSave    //log("\n檔案裝載序號:%d 賬號:%s 名字:%s\n", charindex, id, charname);#endif		    if( charindex < 0 ){			/* 平乓仿互繡箕仄卅中及匹巨仿□卅及分 */#ifdef _NewSave			saacproto_ACCharLoad_send( ti , FAILED ,				"char nonexistent" , mesgid , charindex );#else			saacproto_ACCharLoad_send( ti , FAILED ,				"char nonexistent" , mesgid );#endif			return;    }				//    log( "loadCharOne: id:[%s] char:[%s]\n", id, charname );        if( loadCharOne( id , charindex ,  loadbuf ,sizeof( loadbuf ))<0){#ifdef _NewSave			saacproto_ACCharLoad_send( ti , FAILED ,				"cannot load ( disk i/o error?)", mesgid, charindex );#else			saacproto_ACCharLoad_send( ti , FAILED ,				"cannot load ( disk i/o error?)", mesgid );#endif			return;    }    {//ttom			char *c_ptr;			c_ptr=loadbuf;			while(*c_ptr!='\0'){				if( IS_2BYTEWORD(*c_ptr) ){					if(*(c_ptr+1)==' '){						*(c_ptr+1)=0x41;					}					c_ptr++;					if(*c_ptr=='\0') break;				}				c_ptr++;			}    }//ttom		    if( lock ){			char result[100];			char retdata[100];			// Spock 2000/11/2			if( lockUser( getGSName(ti) , id , passwd , 1 , result , sizeof( result ) ,				retdata , sizeof( retdata ) , process , deadline) <0 ){				saacproto_ACCharLoad_send( ti , FAILED, "lock FAIL!!" , mesgid , charindex );				return;			}    }		memset( infobuf , 0 , sizeof( infobuf ));		getCharInfoFromString( loadbuf , infobuf );		makeStringFromEscaped( infobuf );#ifdef _NewSave    saacproto_ACCharLoad_send( ti ,  SUCCESSFUL , infobuf , mesgid, charindex );#else    saacproto_ACCharLoad_send( ti ,  SUCCESSFUL , infobuf , mesgid);#endif		#ifdef _WAEI_KICK		saacproto_ACKick_recv( ti, id, 10, -1);	//踢其他星系#endif}#ifdef _NewSaveint charSave( int ti ,  char *id , 						 char *charname , char *opt , char *charinfo,						 int unlock , int mesgid , int charindex)#elseint charSave( int ti ,  char *id , 						 char *charname , char *opt , char *charinfo,						 int unlock , int mesgid )#endif{#ifdef _NewSave#else	int charindex;#endif	char savebuf[CHARDATASIZE];	int ret = -1;			memset(savebuf, 0, sizeof(savebuf));		//andy_log	if( strstr( charinfo, "DATAEND=") == NULL ){		FILE *fp;		if( (fp=fopen( "badpetstring.txt", "a+")) != NULL ){			fprintf( fp, "%s\n", charinfo);			fclose( fp);		}		log( "err add batpetstring.txt:%s[%s] !\n", id, charname);	}		if( unlock ){		char result[100];		char retdata[100];    		if( (ret = lockUser(  getGSName(ti), id , "0" , 0 , result , sizeof( result ) ,			retdata , sizeof( retdata ) , "0" , "0")) < 0 ){			log( "解鎖:%s 失敗!!\n", id);		}	}	// Nuke *1 add escape	if( makeSaveCharString( savebuf , sizeof( savebuf ) ,		charname, opt , charinfo )<0){		log("\n AC存檔:太長  ");		saacproto_ACCharSave_send( ti , FAILED , "too long" , mesgid );		// Spock fixed 2000/11/1		return ret;	}#ifdef _NewSave	if (charindex == -1)		charindex = getCharIndexByName( id , charname );#else	// Nuke *1-	charindex = getCharIndexByName( id , charname );#endif	if( charindex < 0 ){		int blankind = findBlankCharIndex( id );		if( blankind < 0 ){			log("\n ACCharSave:char full  ");			saacproto_ACCharSave_send( ti , FAILED , "char full" ,mesgid);			return ret;		} else {			charindex = blankind;		}	}		log( "賬號:[%s] 人物:[%s]\n", id, charname );	if( saveCharOne( id , charindex , savebuf ) < 0 ){		log("\n ACCharSave:disk I/O error or a bug  ");		saacproto_ACCharSave_send( ti , FAILED , "disk I/O error or a bug", mesgid );		return ret;	}	saacproto_ACCharSave_send( ti ,  SUCCESSFUL , "" , mesgid);	return ret;}void  charListCallback( int ti , int auth , char *c0 , char *c1 ,											 char *c2 , char *c3 , char *c4 , int i0 , int i1 ){	char listbuf[CHARDATASIZE];	char *id = c0;	int mesgid = i0;		//log(" 檔案列表回溯:%s:%d \n", id, auth);		if( auth != 0 ){		char data[100];		snprintf( data, sizeof( data ) , "%d" , auth );		saacproto_ACCharList_send( ti , FAILED , data , mesgid );		total_ng_charlist++;		return;	}	// 取消下列 unlock 動作    if( isLocked( id ) ){			saacproto_ACCharList_send( ti , FAILED , "locked" , mesgid );			checkGSUCheck( id );			total_ng_charlist++;			return;    }#ifdef _SLEEP_CHAR // 如果無新檔, 將舊檔移至新檔		{			char fn_old[256], fn_new[256];			FILE *fp_old, *fp_new;			int i;						// 移人物檔			for( i=0; i<MAXCHAR_PER_USER; i++) {				makeCharFileName( id, fn_new, sizeof(fn_new), i);				fp_new = fopen( fn_new, "r");				if( fp_new == NULL ) {					makeSleepCharFileName( id, fn_old, sizeof(fn_old), i);					fp_old = fopen( fn_old, "r");					if( fp_old != NULL ) {						fclose( fp_old);						rename( fn_old, fn_new); // 搬移						//filecopy( fn_old, fn_new); // 復(fù)制						log(" 移檔_%s ", fn_new);					}				}				else {					fclose( fp_new);				}			}		}#endif    loadCharNameAndOption( id , listbuf,sizeof(listbuf));    // Arminius    saacproto_ACCharList_send( ti ,  SUCCESSFUL , listbuf , mesgid);    total_ok_charlist++;}void charDeleteCallback( int ti , int auth ,												char *c0 , char *c1 , char *c2 , char *c3 ,												char *c4 , int i0 , int i1 ){	int charindex;	char *id = c0;	char *charname = c2;	int mesgid = i0;	struct tm *now;	time_t timenow;	char logfile[128];		if( auth != 0 ){		char data[100];		snprintf( data, sizeof( data ) , "%d" , auth );		saacproto_ACCharDelete_send( ti , FAILED , data, mesgid );		return;	}        			charindex = getCharIndexByName( id , charname );	if( charindex < 0 ){		saacproto_ACCharDelete_send( ti , FAILED , "nochar",  mesgid );		return;	}   	if( unlinkCharFile( id , charindex ) < 0 ){		saacproto_ACCharDelete_send( ti , FAILED , "fileI/O" , mesgid);		return;	}#ifdef	_FAMILY	// CoolFish: Family 2001/6/12	{		int index = 0, fmindex = 0, fmcharindex = 0;		char fmname[32];		index = ACgetFMInfoFromChar(fmname, &fmindex, charname, id, &fmcharindex);		if (index != -1)		{			if (fmcharindex == 0)			{#ifdef _FMVER21				if (ChangeFMLeader(index, fmname, fmindex) >= 0)				{					if (ACDelFM(index, fmname, fmindex) >= 0)						log("刪除家族成員:%d 家族名:%s 家族索引:%d 人物:%s, 賬號:%s, 家族人物索引:%d\n",						index, fmname, fmindex, charname, id, fmcharindex);				}				log("ChangeFMLeader_3 index:%d fmname:%s fmindex:%d\n", index, fmname, fmindex);#else				if (ACDelFM(index, fmname, fmindex) >= 0)					log("刪除家族成員:%d 家族名:%s 家族索引:%d 人物:%s, 賬號:%s, 家族人物索引:%d\n",					index, fmname, fmindex, charname, id, fmcharindex);#endif			}			else 			{#ifdef _FMVER21				if (ACMemberLeaveFM(index, fmname, fmindex, charname, 0, 0, fmcharindex) >= 0)					log("ACMemberLeaveFM index:%d 家族名:%s 家族索引:%d 人物:%s, 賬號:%s, 家族人物索引:%d\n",					index, fmname, fmindex, charname, id, fmcharindex);#else				if (ACMemberLeaveFM(index, fmname, fmindex, charname, 0, fmcharindex) >= 0)					log("ACMemberLeaveFM index:%d 家族名:%s 家族索引:%d 人物:%s, 賬號:%s, 家族人物索引:%d\n",					index, fmname, fmindex, charname, id, fmcharindex);#endif			}		}	}#endif    	// Spock 2000/12/6	time( &timenow );	now = localtime( &timenow );	sprintf( logfile , "log/chardel/%04d%02d%02d.log" ,		now->tm_year + 1900 , now->tm_mon + 1 , now->tm_mday );	LOGBASE( logfile , "%04d/%02d/%02d %02d:%02d:%02d id:[%s] char:[%s] index:[%d]\n" ,		now->tm_year + 1900 , now->tm_mon + 1 , now->tm_mday ,		now->tm_hour , now->tm_min , now->tm_sec ,		id , charname , charindex );	// Spock end	USERLOG( id , "賬號刪除: 成功\n" );	saacproto_ACCharDelete_send( ti ,  SUCCESSFUL , "ok" , mesgid);}void dummyCallback( int ti , int auth ,									 char *c0 , char *c1 , char *c2 , char *c3 ,									 char *c4 , int i0 , int i1 ){	return;}static void getCharNameFromString(char *str ,char *out ){	int c;		out[0]='\0';	for(c=0;;c++){		if( IS_2BYTEWORD( str[c] ) ){			out[c] = str[c];

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久777精品电影网影网| 在线免费av一区| 久久亚洲一级片| 激情国产一区二区| 中文字幕免费观看一区| 国产91丝袜在线18| 日韩伦理av电影| 欧美午夜精品久久久久久孕妇| 伊人性伊人情综合网| 欧美午夜视频网站| 久久99精品网久久| 中文字幕二三区不卡| 91在线云播放| 三级欧美韩日大片在线看| 日韩女优电影在线观看| 粉嫩av亚洲一区二区图片| 亚洲裸体xxx| 91精品国产综合久久久久久久久久| 男女性色大片免费观看一区二区| 久久久久久9999| 色婷婷久久一区二区三区麻豆| 图片区日韩欧美亚洲| 久久男人中文字幕资源站| 99精品国产91久久久久久 | 精品成人私密视频| 成人av在线观| 日本特黄久久久高潮| 中文欧美字幕免费| 欧美日韩精品高清| 成人在线视频首页| 亚洲成人av免费| 中文字幕第一区第二区| 欧美性色欧美a在线播放| 韩国欧美国产一区| 亚洲综合免费观看高清完整版| 6080日韩午夜伦伦午夜伦| 丁香亚洲综合激情啪啪综合| 亚洲va天堂va国产va久| 国产精品免费视频观看| 91麻豆精品国产| 99久久精品免费看国产| 精品一区二区三区不卡| 一区二区三区日韩欧美| 久久久久久久久免费| 欧美日韩一卡二卡| 97se亚洲国产综合在线| 九九**精品视频免费播放| 一区二区国产盗摄色噜噜| 久久在线观看免费| 宅男在线国产精品| 色综合久久天天| 国产91精品一区二区| 另类中文字幕网| 亚洲v日本v欧美v久久精品| 国产精品九色蝌蚪自拍| 国产欧美日韩久久| 亚洲精品一区二区三区香蕉| 51精品秘密在线观看| 91欧美一区二区| 国产宾馆实践打屁股91| 久久99国产精品久久| 日本视频一区二区| 天天综合色天天| 亚洲午夜私人影院| 亚洲色图制服丝袜| 欧美国产97人人爽人人喊| 久久久久9999亚洲精品| 26uuu精品一区二区三区四区在线| 欧美日韩国产首页| 欧美日韩国产大片| 欧美亚洲动漫精品| 在线观看亚洲一区| 日本韩国一区二区三区| 色天使久久综合网天天| 一本大道久久a久久综合| 播五月开心婷婷综合| 成人免费看黄yyy456| 国产精品69久久久久水密桃| 极品少妇xxxx精品少妇| 狠狠色丁香婷综合久久| 狠狠狠色丁香婷婷综合激情| 久久er精品视频| 国产麻豆9l精品三级站| 国产在线不卡一区| 国产成人啪免费观看软件| 国产精品影音先锋| 懂色一区二区三区免费观看| 丁香天五香天堂综合| 成人美女视频在线看| 99精品久久免费看蜜臀剧情介绍| 91片在线免费观看| 欧美日韩国产123区| 91精品国产高清一区二区三区 | 一区二区三区四区av| 亚洲亚洲精品在线观看| 日本不卡一二三区黄网| 九色综合狠狠综合久久| 福利一区福利二区| 色av成人天堂桃色av| 欧美日韩国产小视频在线观看| 欧美顶级少妇做爰| 中文字幕欧美激情| 夜夜亚洲天天久久| 丝袜美腿亚洲色图| 国产一区二区三区香蕉| 成人国产精品免费观看动漫| 色综合激情久久| 欧美电影一区二区| 久久精品视频一区| 一区二区三区在线免费视频| 亚洲成人精品在线观看| 久久电影网电视剧免费观看| av资源网一区| 3751色影院一区二区三区| 亚洲精品一区二区三区福利| 亚洲色图在线看| 免费观看30秒视频久久| gogogo免费视频观看亚洲一| 欧美日韩国产综合一区二区| 久久精品人人做人人综合 | 久久99热这里只有精品| 成人精品在线视频观看| 欧美少妇xxx| 国产日韩精品一区| 亚洲成人av资源| 成人美女视频在线观看| 91麻豆精品国产| 亚洲欧洲日产国码二区| 久久er精品视频| 欧美无人高清视频在线观看| 久久综合久久综合久久综合| 亚洲午夜影视影院在线观看| 国产mv日韩mv欧美| 日韩欧美另类在线| 亚洲一区二区三区免费视频| 成熟亚洲日本毛茸茸凸凹| 久久国产视频网| 成人一区二区三区中文字幕| 日韩欧美成人午夜| 亚洲高清不卡在线观看| 成人一二三区视频| 久久影视一区二区| 日韩成人午夜精品| 欧洲一区在线观看| 亚洲人成网站在线| 懂色av一区二区夜夜嗨| 欧美大黄免费观看| 日本不卡在线视频| 欧美日韩一区成人| 亚洲一区在线免费观看| 91色九色蝌蚪| 国产精品成人网| 国产丶欧美丶日本不卡视频| 精品国偷自产国产一区| 午夜视频一区二区| 色婷婷香蕉在线一区二区| 国产日韩综合av| 免费观看在线色综合| 在线观看日韩毛片| 亚洲午夜久久久久久久久久久 | 日韩精品一卡二卡三卡四卡无卡| 国产999精品久久| 日韩小视频在线观看专区| 久久久综合精品| 国产馆精品极品| 欧美xxxx在线观看| 天天操天天色综合| 97se亚洲国产综合自在线观| 精品少妇一区二区三区在线视频 | 色婷婷av一区二区三区软件 | 中文字幕欧美一| 国产精品996| 精品国产一区a| 国模冰冰炮一区二区| 91精品国产综合久久久久久久 | 国产乱妇无码大片在线观看| 欧美一级免费观看| 亚洲自拍偷拍九九九| 不卡的看片网站| 一区二区久久久久久| 91亚洲精品久久久蜜桃网站| 国产精品网站在线| 蜜桃av一区二区三区| 久久综合视频网| 国产精品影视在线观看| 久久精品亚洲精品国产欧美| 视频一区二区中文字幕| 日韩精品一区二区三区视频在线观看| 亚洲电影在线播放| 欧美亚洲国产一区二区三区va| 精品国产污网站| 成人高清免费在线播放| 国产嫩草影院久久久久| 国产成人精品综合在线观看 | 不卡的看片网站| 亚洲色欲色欲www| 欧美电影一区二区| 理论电影国产精品| 国产亚洲午夜高清国产拍精品| 日韩电影免费在线看|