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

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

?? channel.c

?? 打魔獸戰網的都知道他是什么
?? C
?? 第 1 頁 / 共 3 頁
字號:
	  old_channel->shortname = xstrdup(channel->shortname);	  old_channel->memberlist = NULL;	  member = channel->memberlist;	  /* First pass */	  while (member)	  {	    old_member = xmalloc(sizeof(t_channelmember));	    old_member->connection = member->connection;	    	    if (old_channel->memberlist)	      old_member->next = old_channel->memberlist;	    else	      old_member->next = NULL;	    old_channel->memberlist = old_member;	    member = member->next;	  }	  /* Second pass - remove connections from channel */	  member = old_channel->memberlist;	  while (member)	  {	    channel_del_connection(channel,member->connection);	    conn_set_channel_var(member->connection,NULL);	    member = member->next;	  }	  	  list_prepend_data(channellist_old,old_channel);	}		/* Channel is empty - Destroying it */	channel->flags &= ~channel_flags_permanent;	if (channel_destroy(channel,&curr)<0)	  eventlog(eventlog_level_error,__FUNCTION__,"could not destroy channel");	      }      /* Cleanup and reload */            if (list_destroy(channellist_head)<0)	return -1;      channellist_head = NULL;      channellist_create();            /* Now put all users on their previous channel */            LIST_TRAVERSE(channellist_old,curr)      {	if (!(channel = elem_get_data(curr)))	{	  eventlog(eventlog_level_error,__FUNCTION__,"old channel list contains NULL item");	  continue;	}	memberlist = channel->memberlist;	while (memberlist)	{	  member = memberlist;	  memberlist = memberlist->next;	  conn_set_channel(member->connection, channel->shortname);	}      }      /* Ross don't blame me for this but this way the code is cleaner */       LIST_TRAVERSE(channellist_old,curr)      {	if (!(channel = elem_get_data(curr)))	{	  eventlog(eventlog_level_error,__FUNCTION__,"old channel list contains NULL item");	  continue;	}		memberlist = channel->memberlist;	while (memberlist)	{	  member = memberlist;	  memberlist = memberlist->next;	  xfree((void*)member);	}	if (channel->shortname)	  xfree((void*)channel->shortname);	if (list_remove_data(channellist_old,channel,&curr)<0)	  eventlog(eventlog_level_error,__FUNCTION__,"could not remove item from list");	xfree((void*)channel);      }      if (list_destroy(channellist_old)<0)	return -1;    }  return 0;}     extern int channellist_create(void){    channellist_head = list_create();        return channellist_load_permanent(prefs_get_channelfile());}extern int channellist_destroy(void){    t_channel *    channel;    t_elem * curr;        if (channellist_head)    {	LIST_TRAVERSE(channellist_head,curr)	{	    if (!(channel = elem_get_data(curr))) /* should not happen */	    {		eventlog(eventlog_level_error,__FUNCTION__,"channel list contains NULL item");		continue;	    }	    	    channel_destroy(channel,&curr);	}		if (list_destroy(channellist_head)<0)	    return -1;	channellist_head = NULL;    }        return 0;}extern t_list * channellist(void){    return channellist_head;}extern int channellist_get_length(void){    return list_get_length(channellist_head);}extern int channel_get_max(t_channel const * channel){  if (!channel)  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");    return 0;  }  return channel->maxmembers;}extern int channel_get_curr(t_channel const * channel){  if (!channel)  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");    return 0;  }    return channel->currmembers;}extern int channel_conn_is_tmpOP(t_channel const * channel, t_connection * c){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}	if (!c)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL account");	  return 0;	}	if (!conn_get_tmpOP_channel(c)) return 0;		if (strcmp(conn_get_tmpOP_channel(c),channel_get_name(channel))==0) return 1;	return 0;}extern int channel_conn_has_tmpVOICE(t_channel const * channel, t_connection * c){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}	if (!c)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL account");	  return 0;	}	if (!conn_get_tmpVOICE_channel(c)) return 0;	if (strcmp(conn_get_tmpVOICE_channel(c),channel_get_name(channel))==0) return 1;	return 0;}static t_channel * channellist_find_channel_by_fullname(char const * name){    t_channel *    channel;    t_elem const * curr;        if (channellist_head)    {	LIST_TRAVERSE(channellist_head,curr)	{	    channel = elem_get_data(curr);	    if (!channel->name)	    {		eventlog(eventlog_level_error,__FUNCTION__,"found channel with NULL name");		continue;	    }	    if (strcasecmp(channel->name,name)==0)		return channel;	}    }        return NULL;}/* Find a channel based on the name.  * Create a new channel if it is a permanent-type channel and all others * are full. */extern t_channel * channellist_find_channel_by_name(char const * name, char const * country, char const * realmname){    t_channel *    channel;    t_elem const * curr;    int            foundperm;    int            foundlang;    int            maxchannel; /* the number of "rollover" channels that exist */    char const *   saveshortname;    char const *   savespecialname;    char const *   savetag;    int            savebotflag;    int            saveoperflag;    int            savelogflag;    unsigned int   savemoderated;    char const *   savecountry;    char const *   saverealmname;    int            savemaxmembers;    t_channel *    special_channel;    // try to make gcc happy and initialize all variables    saveshortname = savespecialname = savetag = savecountry = saverealmname = NULL;    savebotflag = saveoperflag = savelogflag = savemaxmembers = savemoderated = 0;    maxchannel = 0;    foundperm = 0;    foundlang = 0;    if (channellist_head)    {	LIST_TRAVERSE(channellist_head,curr)	{	    channel = elem_get_data(curr);	    if (!channel->name)	    {		eventlog(eventlog_level_error,__FUNCTION__,"found channel with NULL name");		continue;	    }	    if (strcasecmp(channel->name,name)==0)	    {		// eventlog(eventlog_level_debug,__FUNCTION__,"found exact match for \"%s\"",name);		return channel;	    }	                if (channel->shortname && strcasecmp(channel->shortname,name)==0)	    {	    	special_channel = channellist_find_channel_by_name(channel->name,country,realmname);	    	if (special_channel) channel= special_channel;	    			/* FIXME: what should we do if the client doesn't have a country?  For now, just take the first		 * channel that would otherwise match. */                if ( ((!channel->country && !foundlang) || !country || 		      (channel->country && country && (strcmp(channel->country, country)==0))) &&	             ((!channel->realmname && !realmname) || 		      (channel->realmname && realmname && (strcmp(channel->realmname, realmname)==0))) )		{		    if (channel->maxmembers==-1 || channel->currmembers<channel->maxmembers) 		    {			eventlog(eventlog_level_debug,__FUNCTION__,"found permanent channel \"%s\" for \"%s\"",channel->name,name);			return channel;		    }		    if (!foundlang && (channel->country)) //remember we had found a language specific channel but it was full		    {		     foundlang = 1;		     if (!(channel->flags & channel_flags_autoname))		     	savespecialname = channel->name;		     maxchannel = 0;		    }		    maxchannel++;		}		   // eventlog(eventlog_level_debug,__FUNCTION__,"countries didn't match");				foundperm = 1;				/* save off some info in case we need to create a new copy */		saveshortname = channel->shortname;		savetag = channel->clienttag;		savebotflag = channel->flags & channel_flags_allowbots;		saveoperflag = channel->flags & channel_flags_allowopers;		if (channel->logname)		    savelogflag = 1;                else                    savelogflag = 0;                if (country)		    savecountry = country;		else 		    savecountry = channel->country;                if (realmname)                    saverealmname = realmname;                else                    saverealmname = channel->realmname;		savemaxmembers = channel->maxmembers;		savemoderated = channel->flags & channel_flags_moderated;	    } 	}    }        /* we've gone thru the whole list and either there was no match or the     * channels are all full.     */    if (foundperm) /* All the channels were full, create a new one */    {	char * channelname;		if (!foundlang || !savespecialname)	{          if (!(channelname=channel_format_name(saveshortname,savecountry,saverealmname,maxchannel+1)))                  return NULL;	}	else	{          if (!(channelname=channel_format_name(savespecialname,NULL,saverealmname,maxchannel+1)))                  return NULL;	}        channel = channel_create(channelname,saveshortname,savetag,1,savebotflag,saveoperflag,savelogflag,savecountry,saverealmname,savemaxmembers,savemoderated,0,1);        xfree(channelname);		eventlog(eventlog_level_debug,__FUNCTION__,"created copy \"%s\" of channel \"%s\"",(channel)?(channel->name):("<failed>"),name);        return channel;    }        /* no match */    eventlog(eventlog_level_debug,__FUNCTION__,"could not find channel \"%s\"",name);    return NULL;}extern t_channel * channellist_find_channel_bychannelid(unsigned int channelid){    t_channel *    channel;    t_elem const * curr;        if (channellist_head)    {	LIST_TRAVERSE(channellist_head,curr)	{	    channel = elem_get_data(curr);	    if (!channel->name)	    {		eventlog(eventlog_level_error,__FUNCTION__,"found channel with NULL name");		continue;	    }	    if (channel->id==channelid)		return channel;	}    }        return NULL;}extern int channel_set_userflags(t_connection * c){  unsigned int	newflags;  char const *	channel;  t_account  *	acc;    if (!c) return -1; // user not connected, no need to update his flags    acc = conn_get_account(c);    /* well... unfortunatly channel_get_name never returns NULL but "" instead      so we first have to check if user is in a channel at all */  if ((!conn_get_channel(c)) || (!(channel = channel_get_name(conn_get_channel(c)))))    return -1;    if (account_get_auth_admin(acc,channel) == 1 || account_get_auth_admin(acc,NULL) == 1)    newflags = MF_BLIZZARD;  else if (account_get_auth_operator(acc,channel) == 1 || 	   account_get_auth_operator(acc,NULL) == 1)    newflags = MF_BNET;  else if (channel_conn_is_tmpOP(conn_get_channel(c),c))    newflags = MF_GAVEL;  else if ((account_get_auth_voice(acc,channel) == 1) ||	   (channel_conn_has_tmpVOICE(conn_get_channel(c),c)))    newflags = MF_VOICE;  else    if ((conn_get_clienttag(c) == CLIENTTAG_WARCRAFT3_UINT) || 	(conn_get_clienttag(c) == CLIENTTAG_WAR3XP_UINT))      newflags = W3_ICON_SET;    else       newflags = 0;    if (conn_get_flags(c) != newflags) {    conn_set_flags(c, newflags);    channel_update_userflags(c);  }    return 0;}/***  Westwood Online Extensions*/extern char const * channel_wol_get_game_owner(t_channel const * channel){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return NULL;	}	    return channel->gameOwner;}extern int channel_wol_set_game_owner(t_channel * channel, char const * gameOwner){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}		if (channel->gameOwner)	    xfree((void *)channel->gameOwner); /* avoid warning */	channel->gameOwner = xstrdup(gameOwner);	    	return 1;}extern int channel_wol_get_game_ownerip(t_channel const * channel){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return -1;	}	    return channel->gameOwnerIP;}extern int channel_wol_set_game_ownerip(t_channel * channel, int gameOwnerIP){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}		if (gameOwnerIP)  	   channel->gameOwnerIP = gameOwnerIP;	    	return 1;}extern int channel_wol_get_game_type(t_channel const * channel){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return -1;	}	    return channel->gameType;}extern int channel_wol_set_game_type(t_channel * channel, int gameType){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}		if (gameType)  	   channel->gameType = gameType;	    	return 1;}extern int channel_wol_get_game_tournament(t_channel const * channel){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return -1;	}	    return channel->gameTournament;}extern int channel_wol_set_game_tournament(t_channel * channel, int gameTournament){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}		if (gameTournament) 	   channel->gameTournament = gameTournament;	    	return 1;}extern char const * channel_wol_get_game_options(t_channel const * channel){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return NULL;	}	    return channel->gameOptions;}extern int channel_wol_set_game_options(t_channel * channel, char const * gameOptions){	if (!channel)	{	  eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");	  return 0;	}		if (channel->gameOptions)	    xfree((void *)channel->gameOptions); /* avoid warning */	channel->gameOptions = xstrdup(gameOptions);	    	return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清不卡一区二区| 国产午夜精品一区二区三区嫩草| 欧美精品久久99| 欧美精品在线一区二区三区| 久久久电影一区二区三区| 亚洲午夜免费视频| 成人黄色片在线观看| 日韩视频在线永久播放| 悠悠色在线精品| 国产成人精品亚洲777人妖| 日韩午夜在线影院| 亚洲成人三级小说| 日本韩国欧美一区二区三区| 国产精品欧美经典| 国产精品18久久久久久vr| 制服丝袜av成人在线看| 亚洲尤物在线视频观看| 91麻豆视频网站| 国产精品美女久久久久aⅴ| 国产精品1区2区3区| wwwwww.欧美系列| 韩国女主播成人在线| 欧美一区二区国产| 亚洲mv在线观看| 欧美日韩久久久| 亚洲国产综合人成综合网站| 色综合久久88色综合天天| 国产精品国产三级国产aⅴ中文| 国产亚洲美州欧州综合国| 午夜视频一区二区| 欧美日韩在线精品一区二区三区激情| 欧美日韩你懂的| 一区二区三区四区中文字幕| 成人丝袜视频网| 中文字幕免费不卡| 国产91清纯白嫩初高中在线观看| 色狠狠色狠狠综合| 亚洲一区影音先锋| 色94色欧美sute亚洲线路二 | 狠狠色丁香久久婷婷综合_中| 老司机精品视频在线| 欧美日韩亚洲综合| 日韩精品午夜视频| 精品久久人人做人人爰| 国产麻豆视频一区二区| 国产欧美精品在线观看| 国产高清久久久久| 亚洲色大成网站www久久九九| 午夜成人免费电影| 精品国产一区二区三区久久影院| 国产精品三级av| 成人网在线播放| 亚洲综合久久av| 日韩一区二区三区电影在线观看| 亚洲人成在线观看一区二区| 色综合天天综合色综合av | 国产日韩精品视频一区| 国产99久久久国产精品潘金网站| 色婷婷激情综合| 日韩高清不卡一区二区| 国产三级久久久| 欧美日韩一卡二卡三卡| 国产一区二区三区久久久| 亚洲人成在线观看一区二区| 欧美日韩视频专区在线播放| 激情图片小说一区| 一区二区三区加勒比av| 欧美xxxxx牲另类人与| 成人av在线影院| 日韩一区精品视频| 国产精品沙发午睡系列990531| 久久精品av麻豆的观看方式| 国产精品美女久久久久久久久久久 | 亚洲图片欧美综合| 精品久久久久久久一区二区蜜臀| 日韩中文字幕不卡| 国产精品电影院| 欧美男男青年gay1069videost | 国产精品美女视频| 欧美精品v国产精品v日韩精品 | 欧美日本在线播放| 成人蜜臀av电影| 蜜桃久久久久久久| 亚洲一区免费视频| 国产精品麻豆99久久久久久| 日韩欧美一二三区| 欧美日韩精品一区二区三区蜜桃| 一区二区三区影院| 国产精品免费视频网站| 91精品国产入口| 欧美色涩在线第一页| 国产福利一区二区三区视频在线| 国产日韩欧美高清| 精品精品国产高清一毛片一天堂| 日韩av中文在线观看| 亚洲柠檬福利资源导航| 中文字幕二三区不卡| 精品国产91亚洲一区二区三区婷婷| 蜜臀久久99精品久久久久宅男| 日韩欧美资源站| 欧美最猛性xxxxx直播| 99在线热播精品免费| 国产二区国产一区在线观看| 美腿丝袜一区二区三区| 日韩中文字幕区一区有砖一区| 精品美女被调教视频大全网站| 热久久国产精品| 视频一区二区三区在线| 亚洲18女电影在线观看| 午夜私人影院久久久久| 亚洲黄色小说网站| 亚洲欧美日韩国产综合| 亚洲女与黑人做爰| 中文字幕亚洲一区二区va在线| 欧美在线观看视频一区二区| 91麻豆免费在线观看| 91免费观看国产| 日本道在线观看一区二区| 一本大道久久a久久精二百| 91国产视频在线观看| 在线日韩av片| 91精品国产综合久久小美女| 欧美精品日韩一本| 日韩一区二区三区视频在线观看| 国产白丝精品91爽爽久久| 国产精品一区二区三区四区 | 精品动漫一区二区三区在线观看| 国产激情视频一区二区三区欧美 | 欧美激情艳妇裸体舞| 久久久电影一区二区三区| 欧美经典一区二区| 亚洲精选视频在线| 亚洲大尺度视频在线观看| 老色鬼精品视频在线观看播放| 国产精品动漫网站| 亚洲精品成人少妇| 蜜臀久久久99精品久久久久久| 亚洲日本中文字幕区| 亚洲国产成人va在线观看天堂| 精品国内二区三区| 成人欧美一区二区三区小说| 成人欧美一区二区三区白人 | 欧美一区二区高清| 久久中文字幕电影| 中文字幕一区二区视频| 亚洲一二三区不卡| 九九视频精品免费| 99国产精品国产精品久久| 在线影视一区二区三区| 欧美一区二区精美| 亚洲人成伊人成综合网小说| 五月婷婷久久丁香| 成人av第一页| 日韩一区二区在线观看| 国产精品国产三级国产aⅴ无密码| 26uuu精品一区二区三区四区在线| 色欧美日韩亚洲| 日韩片之四级片| 亚洲欧美一区二区三区国产精品| 欧美国产一区在线| 亚洲成a人在线观看| 春色校园综合激情亚洲| 欧美一区二区三区公司| 久久久久久久精| 午夜激情综合网| 成人在线综合网| 欧美一区二区三区四区视频| 最近日韩中文字幕| 精品一区二区免费在线观看| 色狠狠一区二区三区香蕉| 国产色婷婷亚洲99精品小说| 午夜精品一区二区三区三上悠亚| 亚洲国产另类av| 99国产欧美另类久久久精品 | 欧美日韩第一区日日骚| 国产精品萝li| 国产乱国产乱300精品| 欧美伦理电影网| 亚洲同性同志一二三专区| 国产在线精品视频| 欧美日韩免费观看一区二区三区| 欧美色老头old∨ideo| 中文字幕在线不卡国产视频| 精品一区二区三区久久| 欧美久久婷婷综合色| 一区二区三区自拍| fc2成人免费人成在线观看播放 | 亚洲欧美日韩国产综合| 国产一区二区不卡在线| 欧美一区二区三区视频在线| 亚洲高清视频在线| 色诱亚洲精品久久久久久| 国产欧美日韩精品a在线观看| 国产精品久线在线观看| 国产精品夜夜嗨| www国产成人免费观看视频 深夜成人网| 日韩免费性生活视频播放| 亚洲va韩国va欧美va| 欧美二区三区91| 老司机精品视频一区二区三区|