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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? channel.c

?? 打魔獸戰網的都知道他是什么
?? C
?? 第 1 頁 / 共 3 頁
字號:
    {	channel_destroy(channel,&curr2);    }        return 0;}extern void channel_update_latency(t_connection * me){    t_channel *    channel;    t_message *    message;    t_connection * c;        if (!me)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");        return;    }    if (!(channel = conn_get_channel(me)))    {	eventlog(eventlog_level_error,__FUNCTION__,"connection has no channel");        return;    }        if (!(message = message_create(message_type_userflags,me,NULL,NULL))) /* handles NULL text */	return;    for (c=channel_get_first(channel); c; c=channel_get_next())        if (conn_get_class(c)==conn_class_bnet)            message_send(message,c);    message_destroy(message);}extern void channel_update_userflags(t_connection * me){    t_channel *    channel;    t_message *    message;    t_connection * c;        if (!me)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");        return;    }    if (!(channel = conn_get_channel(me)))    {	eventlog(eventlog_level_error,__FUNCTION__,"connection has no channel");        return;    }        if (!(message = message_create(message_type_userflags,me,NULL,NULL))) /* handles NULL text */	return;        for (c=channel_get_first(channel); c; c=channel_get_next())	message_send(message,c);        message_destroy(message);}extern void channel_message_log(t_channel const * channel, t_connection * me, int fromuser, char const * text){    if (!channel)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");        return;    }    if (!me)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");        return;    }        if (channel->log)    {	time_t       now;	struct tm *  tmnow;	char         timetemp[CHANLOG_TIME_MAXLEN];	now = time(NULL);	if ((!(tmnow = localtime(&now))))	    strcpy(timetemp,"?");	else	    strftime(timetemp,sizeof(timetemp),CHANLOGLINE_TIME_FORMAT,tmnow);		if (fromuser)	    fprintf(channel->log,"%s: \"%s\" \"%s\"\n",timetemp,conn_get_username(me),text);	else	    fprintf(channel->log,"%s: \"%s\" %s\n",timetemp,conn_get_username(me),text);	fflush(channel->log);    }}extern void channel_message_send(t_channel const * channel, t_message_type type, t_connection * me, char const * text){    t_connection * c;    unsigned int   heard;    t_message *    message;    char const *   tname;        if (!channel)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");        return;    }    if (!me)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");        return;    }    if(channel_get_flags(channel) & channel_flags_thevoid) // no talking in the void	return;    if(channel_get_flags(channel) & channel_flags_moderated) // moderated channel - only admins,OPs and voices may talk    {	if (type==message_type_talk || type==message_type_emote)	{	    if (!((account_is_operator_or_admin(conn_get_account(me),channel_get_name(channel))) ||		 (channel_conn_has_tmpVOICE(channel,me))))	    {		message_send_text(me,message_type_error,me,"This channel is moderated");	        return;	    }	}    }    if (!(message = message_create(type,me,NULL,text)))    {	eventlog(eventlog_level_error,__FUNCTION__,"could not create message");	return;    }        heard = 0;    tname = conn_get_chatname(me);    for (c=channel_get_first(channel); c; c=channel_get_next())    {	if (c==me && (type==message_type_talk || type==message_type_join || type==message_type_part || type==message_wol_gameopt_owner))	    continue; /* ignore ourself */	if ((type==message_type_talk || type==message_type_whisper || type==message_type_emote || type==message_type_broadcast) &&	    conn_check_ignoring(c,tname)==1)	    continue; /* ignore squelched players */	if (message_send(message,c)==0 && c!=me)	    heard = 1;    }    conn_unget_chatname(me,tname);        message_destroy(message);    if ((conn_get_wol(me) == 0))    {    if (!heard && (type==message_type_talk || type==message_type_emote))	message_send_text(me,message_type_info,me,"No one hears you.");}}extern int channel_ban_user(t_channel * channel, char const * user){    t_elem const * curr;    char *         temp;        if (!channel)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	return -1;    }    if (!user)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL user");	return -1;    }    if (!channel->name)    {	eventlog(eventlog_level_error,__FUNCTION__,"got channel with NULL name");	return -1;    }        if (strcasecmp(channel->name,CHANNEL_NAME_BANNED)==0 ||	strcasecmp(channel->name,CHANNEL_NAME_KICKED)==0)        return -1;        LIST_TRAVERSE_CONST(channel->banlist,curr)        if (strcasecmp(elem_get_data(curr),user)==0)            return 0;        temp = xstrdup(user);    list_append_data(channel->banlist,temp);    return 0;}extern int channel_unban_user(t_channel * channel, char const * user){    t_elem * curr;        if (!channel)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	return -1;    }    if (!user)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL user");	return -1;    }        LIST_TRAVERSE(channel->banlist,curr)    {	char const * banned;		if (!(banned = elem_get_data(curr)))	{            eventlog(eventlog_level_error,__FUNCTION__,"found NULL name in banlist");	    continue;	}        if (strcasecmp(banned,user)==0)        {            if (list_remove_elem(channel->banlist,&curr)<0)            {                eventlog(eventlog_level_error,__FUNCTION__,"unable to remove item from list");                return -1;            }            xfree((void *)banned); /* avoid warning */            return 0;        }    }        return -1;}extern int channel_check_banning(t_channel const * channel, t_connection const * user){    t_elem const * curr;        if (!channel)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	return -1;    }    if (!user)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL user");	return -1;    }        if (!(channel->flags & channel_flags_allowbots) && conn_get_class(user)==conn_class_bot)	return 1;        LIST_TRAVERSE_CONST(channel->banlist,curr)        if (conn_match(user,elem_get_data(curr))==1)            return 1;        return 0;}extern int channel_get_length(t_channel const * channel){    t_channelmember const * curr;    int                     count;        for (curr=channel->memberlist,count=0; curr; curr=curr->next,count++);        return count;}extern t_connection * channel_get_first(t_channel const * channel){    if (!channel)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");        return NULL;    }        memberlist_curr = channel->memberlist;        return channel_get_next();}extern t_connection * channel_get_next(void){    t_channelmember * member;        if (memberlist_curr)    {        member = memberlist_curr;        memberlist_curr = memberlist_curr->next;                return member->connection;    }    return NULL;}extern t_list * channel_get_banlist(t_channel const * channel){    if (!channel)    {        eventlog(eventlog_level_warn,__FUNCTION__,"got NULL channel");	return NULL;    }        return channel->banlist;}extern char const * channel_get_shortname(t_channel const * channel){    if (!channel)    {        eventlog(eventlog_level_warn,__FUNCTION__,"got NULL channel");	return NULL;    }        return channel->shortname;}static int channellist_load_permanent(char const * filename){    FILE *       fp;    unsigned int line;    unsigned int pos;    int          botflag;    int          operflag;    int          logflag;    unsigned int modflag;    char *       buff;    char *       name;    char *       sname;    char *       tag;    char *       bot;    char *       oper;    char *       log;    char *       country;    char *       max;    char *       moderated;    char *       newname;    char *       realmname;        if (!filename)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL filename");	return -1;    }        if (!(fp = fopen(filename,"r")))    {	eventlog(eventlog_level_error,__FUNCTION__,"could not open channel file \"%s\" for reading (fopen: %s)",filename,pstrerror(errno));	return -1;    }        for (line=1; (buff = file_get_line(fp)); line++)    {	if (buff[0]=='#' || buff[0]=='\0')	{	    continue;	}        pos = 0;	if (!(name = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing name in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(sname = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing sname in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(tag = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing tag in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(bot = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing bot in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(oper = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing oper in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(log = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing log in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(country = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing country in line %u in file \"%s\"",line,filename);	    continue;	}        if (!(realmname = next_token(buff,&pos)))        {           eventlog(eventlog_level_error,__FUNCTION__,"missing realmname in line %u in file \"%s\"",line,filename);           continue;        }	if (!(max = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing max in line %u in file \"%s\"",line,filename);	    continue;	}	if (!(moderated = next_token(buff,&pos)))	{	    eventlog(eventlog_level_error,__FUNCTION__,"missing mod in line %u in file \"%s\"",line,filename);	    continue;	}		switch (str_get_bool(bot))	{	case 1:	    botflag = 1;	    break;	case 0:	    botflag = 0;	    break;	default:	    eventlog(eventlog_level_error,__FUNCTION__,"invalid boolean value \"%s\" for field 4 on line %u in file \"%s\"",bot,line,filename);	    continue;        }		switch (str_get_bool(oper))	{	case 1:	    operflag = 1;	    break;	case 0:	    operflag = 0;	    break;	default:	    eventlog(eventlog_level_error,__FUNCTION__,"invalid boolean value \"%s\" for field 5 on line %u in file \"%s\"",oper,line,filename);	    continue;        }		switch (str_get_bool(log))	{	case 1:	    logflag = 1;	    break;	case 0:	    logflag = 0;	    break;	default:	    eventlog(eventlog_level_error,__FUNCTION__,"invalid boolean value \"%s\" for field 5 on line %u in file \"%s\"",log,line,filename);	    continue;        }	switch (str_get_bool(moderated))	{	    case 1:		modflag = 1;		break;	    case 0:		modflag = 0;		break;	    default:		eventlog(eventlog_level_error,__FUNCTION__,"invalid boolean value \"%s\" for field 10 on line %u in file \"%s\"",moderated,line,filename);		continue;	}		if (strcmp(sname,"NULL") == 0)	    sname = NULL;	if (strcmp(tag,"NULL") == 0)	    tag = NULL;        if (strcmp(name,"NONE") == 0)	    name = NULL;        if (strcmp(country, "NULL") == 0)            country = NULL;        if (strcmp(realmname,"NULL") == 0)            realmname = NULL;		if (name)	    {            channel_create(name,sname,tag,1,botflag,operflag,logflag,country,realmname,atoi(max),modflag,0,0);	    }	else	    {            newname = channel_format_name(sname,country,realmname,1);            if (newname)		{                   channel_create(newname,sname,tag,1,botflag,operflag,logflag,country,realmname,atoi(max),modflag,0,1);                   xfree(newname);	    }            else	    {                   eventlog(eventlog_level_error,__FUNCTION__,"cannot format channel name");		}            }		/* FIXME: call channel_delete() on current perm channels and do a	   channellist_find_channel() and set the long name, perm flag, etc,	   otherwise call channel_create(). This will make HUPing the server           handle re-reading this file correctly. */    }        file_get_line(NULL); // clear file_get_line buffer    if (fclose(fp)<0)	eventlog(eventlog_level_error,__FUNCTION__,"could not close channel file \"%s\" after reading (fclose: %s)",filename,pstrerror(errno));    return 0;}static char * channel_format_name(char const * sname, char const * country, char const * realmname, unsigned int id){    char * fullname;    unsigned int len;    if (!sname)    {        eventlog(eventlog_level_error,__FUNCTION__,"got NULL sname");        return NULL;    }    len = strlen(sname)+1; /* FIXME: check lengths and format */    if (country)     	len = len + strlen(country) + 1;    if (realmname)    	len = len + strlen(realmname) + 1;    len = len + 32 + 1;    fullname=xmalloc(len);    sprintf(fullname,"%s%s%s%s%s-%d",            realmname?realmname:"",            realmname?" ":"",            sname,            country?" ":"",            country?country:"",            id);    return fullname;}extern int channellist_reload(void){  t_elem * curr;  t_channel * channel, * old_channel;  t_channelmember * memberlist, * member, * old_member;  t_list * channellist_old;  if (channellist_head)    {      channellist_old = list_create();      /* First pass - get members */      LIST_TRAVERSE(channellist_head,curr)      {	if (!(channel = elem_get_data(curr)))	{	  eventlog(eventlog_level_error,__FUNCTION__,"channel list contains NULL item");	  continue;	}	/* Trick to avoid automatic channel destruction */	channel->flags |= channel_flags_permanent;	if (channel->memberlist)	{	  /* we need only channel name and memberlist */	  old_channel = (t_channel *) xmalloc(sizeof(t_channel));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品在线视频一区| 性做久久久久久免费观看欧美| 欧美精品一区二区三区在线 | 91精品国产高清一区二区三区蜜臀| 欧美日韩视频在线一区二区| 日韩三级在线观看| 亚洲日本在线视频观看| 麻豆国产精品官网| 99精品久久只有精品| 欧美不卡一区二区三区| 中文字幕精品一区二区三区精品| 国产欧美久久久精品影院| 亚洲主播在线观看| 成人av免费在线播放| 久久一区二区三区四区| 亚洲精品ww久久久久久p站| 日本不卡视频一二三区| 91色九色蝌蚪| 国产精品麻豆一区二区| 国产一本一道久久香蕉| 欧美一区二区私人影院日本| 亚洲精选一二三| 不卡电影免费在线播放一区| 亚洲精品在线观| 男女性色大片免费观看一区二区| 欧美中文字幕一区| 国产精品不卡在线| 成人免费三级在线| 国产精品久久久一本精品| 亚洲一区二区三区在线看| av中文字幕亚洲| 亚洲欧洲日韩一区二区三区| 不卡电影一区二区三区| 亚洲欧洲国产日韩| 色网综合在线观看| 亚洲一区二区三区中文字幕 | 亚洲日本在线观看| 日本丶国产丶欧美色综合| 国产精品初高中害羞小美女文| 久久精品国产亚洲一区二区三区| 91精品黄色片免费大全| 国产精品亚洲成人| 亚洲女同ⅹxx女同tv| 制服丝袜中文字幕一区| 韩国精品主播一区二区在线观看| 中文字幕欧美激情一区| 欧美日韩在线播放三区| 日韩av一级电影| 亚洲国产精品高清| 欧美日本视频在线| 国产黄色精品视频| 五月天丁香久久| 欧美成人一区二区| 欧美中文字幕一二三区视频| 久久精品国产久精国产爱| 国产欧美精品一区| 日韩欧美激情四射| 色婷婷一区二区三区四区| 国产一区二区三区免费在线观看| 亚洲女同ⅹxx女同tv| 欧美国产综合一区二区| 欧美视频中文字幕| 久久影院电视剧免费观看| 欧美午夜免费电影| 播五月开心婷婷综合| 蜜桃视频免费观看一区| 亚洲综合在线视频| 亚洲欧洲三级电影| 日本一区二区三区电影| 日韩欧美你懂的| 日韩午夜av一区| 欧美一区二区三区男人的天堂| 欧美综合在线视频| 在线亚洲精品福利网址导航| 91老师国产黑色丝袜在线| 成人综合在线视频| 成人免费黄色在线| 成人福利在线看| 91免费看`日韩一区二区| 不卡高清视频专区| 在线视频一区二区三区| 欧美性xxxxx极品少妇| 欧美高清视频不卡网| 欧美日韩国产高清一区二区 | 毛片一区二区三区| 精品一区二区三区免费视频| 国产曰批免费观看久久久| 国产成人免费在线观看不卡| 成人网在线播放| 欧美午夜精品久久久久久孕妇| 欧美精品成人一区二区三区四区| 91精品国产高清一区二区三区蜜臀 | 欧美一区二区三区影视| 久久综合九色综合97婷婷女人| 久久色.com| 天堂久久一区二区三区| 国产精品一区二区在线播放 | 亚洲精品久久久久久国产精华液| 亚洲成人精品一区二区| 国产麻豆日韩欧美久久| 色爱区综合激月婷婷| 久久久精品天堂| 丝袜诱惑亚洲看片| 欧美日韩亚洲另类| 日韩理论电影院| 国产一区欧美一区| 欧美美女一区二区三区| 中文字幕免费一区| 美女视频一区在线观看| 色88888久久久久久影院按摩| 欧美成人伊人久久综合网| 一区二区三区免费看视频| 99久久婷婷国产| 久久久不卡影院| 狠狠色丁香久久婷婷综| 日韩视频免费观看高清完整版在线观看| 亚洲综合精品自拍| 99精品国产91久久久久久| 亚洲色大成网站www久久九九| 国产精品一区二区不卡| 精品国产一区二区在线观看| 日本不卡视频一二三区| 91精品国产一区二区| 日本视频中文字幕一区二区三区| 欧美天天综合网| 日日欢夜夜爽一区| 欧美一区二区三区成人| 美女视频第一区二区三区免费观看网站 | 成人做爰69片免费看网站| 久久女同精品一区二区| 国产一区福利在线| 日韩一区二区免费视频| 亚洲一区二区五区| 一本大道久久a久久精品综合| 国产精品视频线看| 91久久精品网| 亚洲永久精品国产| 欧美日韩成人综合| 国产精品沙发午睡系列990531| 91香蕉视频mp4| 亚洲自拍偷拍网站| 欧美日韩日日骚| 精品一区二区三区在线观看国产| 日韩欧美在线综合网| 大胆欧美人体老妇| **欧美大码日韩| 欧美日韩视频第一区| 国产99精品在线观看| 亚洲欧美日韩国产一区二区三区| 欧美性猛交一区二区三区精品| 日韩高清电影一区| 亚洲精品一区二区三区蜜桃下载| av在线不卡网| 五月婷婷欧美视频| 国产精品网曝门| 在线观看精品一区| 国产在线一区二区综合免费视频| 亚洲天堂免费在线观看视频| 欧美日韩一级片网站| 成人国产精品免费观看| 老司机免费视频一区二区| 国产精品另类一区| 久久久久久久久免费| 欧美高清你懂得| 色系网站成人免费| 国产一区二区三区日韩| 麻豆一区二区三| 亚洲一区二区av电影| 国产精品成人免费精品自在线观看| 日韩午夜在线观看| 欧美日韩一区三区| 在线观看区一区二| 在线免费观看不卡av| 99精品热视频| 91小宝寻花一区二区三区| 国产成人av电影在线观看| 国产最新精品免费| 极品少妇xxxx偷拍精品少妇| 久久精品国产秦先生| 精品综合久久久久久8888| 激情丁香综合五月| 国产成人精品网址| 国产精品一区二区91| 成人高清视频在线| 欧美视频精品在线| 欧美丝袜丝nylons| 懂色av一区二区三区免费观看 | 在线精品亚洲一区二区不卡| 欧美亚洲动漫精品| 色婷婷国产精品久久包臀 | 国产欧美一区二区精品婷婷 | 国产经典欧美精品| 一本久久a久久精品亚洲| 91美女在线观看| 精品久久五月天| 亚洲乱码国产乱码精品精小说| 日本欧美一区二区| 国产91高潮流白浆在线麻豆 | 欧美一级片免费看| 国产精品久久久久久久久免费桃花 |