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

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

?? irc-server.c

?? Serveez是一個服務器框架
?? C
字號:
/* * irc-server.c - IRC server connection routines * * Copyright (C) 2000 Stefan Jahn <stefan@lkcc.org> * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. *  * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this package; see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA.   * * $Id: irc-server.c,v 1.25 2001/05/19 23:04:57 ela Exp $ * */#if HAVE_CONFIG_H# include <config.h>#endif#if ENABLE_IRC_PROTO#define _GNU_SOURCE#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#ifdef __MINGW32__# include <winsock2.h>#endif#ifndef __MINGW32__# include <sys/types.h># include <sys/socket.h># include <netinet/in.h># include <netdb.h># include <arpa/inet.h>#endif#include "libserveez.h"#include "irc-proto.h"#include "irc-event.h"#include "irc-server.h"#define DEFAULT_PORT 6667irc_server_t *irc_server_list;  /* server list root */#define MAX_HOST_LEN 256#define MAX_PASS_LEN 256#define MAX_NAME_LEN 256/* * Parse one of the config lines in the IRC configuration. * This function has exactly the same syntax as sscanf() but * recognizes only %s and %d for string and integers. Strings * will be parsed until the next character in the format string. */intirc_parse_line (char *line, char *fmt, ...){  va_list args;  int *i;  char *s;  int ret;  va_start (args, fmt);  ret = 0;  while (*fmt && *line)    {      /* next arg */      if (*fmt == '%')	{	  /* check if this is a valid format identifier */	  if (!*++fmt)	    break;	  /* a decimal */	  if (*fmt == 'd')	    {	      i = va_arg (args, int *);	      *i = 0;	      fmt++;	      while (*line && *line >= '0' && *line <= '9')		{		  *i *= 10;		  *i += (*line - '0');		  line++;		}	    }	  /* a string */	  else if (*fmt == 's')	    {	      s = va_arg (args, char *);	      fmt++;	      while (*line && *line != *fmt)		{		  *s++ = *line++;		}	      *s = 0;	    }	  ret++;	}      /* not an arg */      else if (*fmt != *line)	{	  break;	}      if (*fmt)	fmt++;      if (*line)	line++;    }  va_end (args);  return ret;}/* * This will be called if a DNS lookup for a remote irc server has * been done. Here we connect to this server then. Return non-zero on * errors. */intirc_connect_server (char *ip, irc_server_t *server){  irc_config_t *cfg = server->cfg;  svz_socket_t *sock;  irc_client_t **cl;  irc_channel_t **ch;  char nicklist[MAX_MSG_LEN];  int n, i;  /* check if dns lookup was successful */  if (!ip)    {      svz_log (LOG_ERROR, "irc: cannot connect to %s\n", server->realhost);      return -1;    }    /* try connecting */  server->addr = inet_addr (ip);  if ((sock = svz_tcp_connect (server->addr, server->port)) == NULL)    {      return -1;    }  svz_log (LOG_NOTICE, "irc: connecting to %s\n", server->realhost);  sock->data = server;  sock->cfg = cfg;  server->id = sock->id;  server->connected = 1;  sock->userflags |= IRC_FLAG_SERVER;  sock->check_request = irc_check_request;  /* send initial requests introducing this server */#ifndef ENABLE_TIMESTAMP  irc_printf (sock, "PASS %s\n", server->pass);#else /* ENABLE_TIMESTAMP */  irc_printf (sock, "PASS %s %s\n", server->pass, TS_PASS);#endif /* ENABLE_TIMESTAMP */  irc_printf (sock, "SERVER %s 1 :%s\n", cfg->host, cfg->info);#if ENABLE_TIMESTAMP  irc_printf (sock, "SVINFO %d %d %d :%d\n",	      TS_CURRENT, TS_MIN, 0, time (NULL) + cfg->tsdelta);#endif /* ENABLE_TIMESTAMP */  /* now propagate user information to this server */  if ((cl = (irc_client_t **) svz_hash_values (cfg->clients)) != NULL)    {      for (n = 0; n < svz_hash_size (cfg->clients); n++)	{#if ENABLE_TIMESTAMP	  irc_printf (sock, "NICK %s %d %d %s %s %s %s :%s\n",		      cl[n]->nick, cl[n]->hopcount, cl[n]->since, 		      irc_client_flag_string (cl[n]), 		      cl[n]->user, cl[n]->host, cl[n]->server, "EFNet?");#else /* not ENABLE_TIMESTAMP */	  irc_printf (sock, "NICK %s\n", cl[n]->nick);	  irc_printf (sock, "USER %s %s %s %s\n", 		      cl[n]->user, cl[n]->host, cl[n]->server, cl[n]->real);	  irc_printf (sock, "MODE %s %s\n", 		      cl[n]->nick, irc_client_flag_string (cl[n]));#endif /* not ENABLE_TIMESTAMP */	}      svz_hash_xfree (cl);    }  /* propagate all channel information to the server */  if ((ch = (irc_channel_t **) svz_hash_values (cfg->channels)) != NULL)    {      for (i = 0; i < svz_hash_size (cfg->channels); i++)	{#if ENABLE_TIMESTAMP	  /* create nick list */	  for (nicklist[0] = 0, n = 0; n < ch[n]->clients; n++)	    {	      if (ch[i]->cflag[n] & MODE_OPERATOR)		strcat (nicklist, "@");	      else if (ch[i]->cflag[n] & MODE_VOICE)		strcat (nicklist, "+");	      strcat (nicklist, ch[i]->client[n]->nick);	      strcat (nicklist, " ");	    }	}      /* propagate one channel in one request */      irc_printf (sock, "SJOIN %d %s %s :%s\n",		  ch[i]->since, ch[i]->name, irc_channel_flag_string (ch[i]),		  nicklist);#else /* not ENABLE_TIMESTAMP */      for (n = 0; n < ch[i]->clients; n++)	{	  irc_printf (sock, ":%s JOIN %s\n", 		      ch[i]->client[n], ch[i]->name);	}      irc_printf (sock, "MODE %s %s\n", 		  ch[i]->name, irc_channel_flag_string (ch[i]));#endif /* not ENABLE_TIMESTAMP */      svz_hash_xfree (ch);    }    return 0;}/* * Add an IRC server to the server list. */static irc_server_t *irc_add_server (irc_config_t *cfg, irc_server_t *server){  server->next = cfg->servers;  cfg->servers = server;      return cfg->servers;}/* * Go through all C lines in the IRC server configuration * and resolve all hosts. */voidirc_connect_servers (irc_config_t *cfg){  char realhost[MAX_HOST_LEN];  char pass[MAX_PASS_LEN];  char host[MAX_NAME_LEN];  int class, port;  irc_server_t *ircserver;  char *cline;  int n;  /* any C lines at all ? */  if (!cfg->CLine)    return;  /* go through all C lines */  svz_array_foreach (cfg->CLine, cline, n)    {      /* scan the actual C line */      irc_parse_line (cline, "C:%s:%s:%s:%d:%d", 		      realhost, pass, host, &port, &class);            /* create new IRC server structure */      ircserver = svz_malloc (sizeof (irc_server_t));      ircserver->port = htons ((unsigned short) port);      ircserver->class = class;      ircserver->id = -1;      ircserver->realhost = svz_malloc (strlen (realhost) + 1);      strcpy (ircserver->realhost, realhost);      ircserver->host = svz_malloc (strlen (host) + 1);      strcpy (ircserver->host, host);      ircserver->pass = svz_malloc (strlen (pass) + 1);      strcpy (ircserver->pass, pass);      ircserver->cfg = cfg;      ircserver->next = NULL;      ircserver->connected = 0;      ircserver->connect = 1;      /* add this server to the server list */      svz_log (LOG_NOTICE, "irc: enqueuing %s\n", ircserver->realhost);      irc_add_server (cfg, ircserver);      svz_coserver_dns (realhost, irc_connect_server, ircserver, NULL);    }}/* * Delete an IRC server of the current list. */static voidirc_del_server (irc_config_t *cfg, irc_server_t *server){  irc_server_t *srv;  irc_server_t *prev;  prev = srv = cfg->servers;  while (srv)    {      if (srv == server)	{	  svz_free (server->realhost);	  svz_free (server->host);	  svz_free (server->pass);	  if (prev == srv)	    cfg->servers = server->next;	  else	    prev->next = server->next;	  svz_free (server);	  return;	}      prev = srv;      srv = srv->next;    }}/* * Delete all IRC servers. */voidirc_delete_servers (irc_config_t *cfg){  while (cfg->servers)    {      irc_del_server (cfg, cfg->servers);    }}/* * Count the amount of currently connected IRC servers. */intirc_count_servers (irc_config_t *cfg){  irc_server_t *server;  int n = 0;    for (server = cfg->servers; server; server = server->next)    {      if (server->connected)	n++;    }  return n;}/* * Find an IRC server in the current list. */irc_server_t *irc_find_server (void){  return NULL;}#else /* not ENABLE_IRC_PROTO */int irc_server_dummy; /* Shut up compiler. */#endif /* ENABLE_IRC_PROTO */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久鬼色中文字| 亚洲女厕所小便bbb| 91精品国产欧美一区二区成人| 色哟哟在线观看一区二区三区| 成+人+亚洲+综合天堂| 国产激情精品久久久第一区二区| 国产一二精品视频| 国产精品一区二区在线观看不卡| 国产真实乱对白精彩久久| 九九精品视频在线看| 国产在线播放一区三区四| 国产在线精品一区二区不卡了| 国产精品一区二区久久不卡| 国产成人精品在线看| 成人一区二区三区| 99久久777色| 91搞黄在线观看| 在线一区二区视频| 欧美日韩久久一区| 日韩一区二区在线观看| 久久夜色精品一区| 国产精品热久久久久夜色精品三区 | 国产成人免费av在线| 成人免费观看男女羞羞视频| gogogo免费视频观看亚洲一| 91国偷自产一区二区三区成为亚洲经典| 色婷婷国产精品| 欧美日韩国产高清一区| 日韩欧美的一区二区| 国产亚洲欧美日韩在线一区| 国产精品福利电影一区二区三区四区| 亚洲欧美日韩人成在线播放| 午夜精品久久久久久久久久久| 男女男精品视频网| 国产成人av电影免费在线观看| 成人黄色777网| 欧美色图一区二区三区| 日韩一区二区三区精品视频| 欧美精品一区男女天堂| 亚洲色图在线看| 亚洲国产wwwccc36天堂| 国产在线不卡一卡二卡三卡四卡| 91日韩在线专区| 欧美一区午夜视频在线观看| 国产欧美日韩一区二区三区在线观看| 亚洲人xxxx| 麻豆91在线播放免费| av午夜一区麻豆| 欧美一区二区三区啪啪| 国产精品全国免费观看高清| 亚洲成人动漫在线观看| 国产一区二区精品久久99| 91九色02白丝porn| 精品国产乱码久久久久久闺蜜 | 国产高清视频一区| 欧美色图一区二区三区| 国产亚洲欧美日韩俺去了| 亚洲午夜免费电影| 国产成人8x视频一区二区| 欧美日韩激情一区二区| 国产精品久久久久久户外露出| 五月综合激情网| av中文字幕亚洲| 精品国产乱码久久久久久1区2区| 亚洲综合激情小说| 国产成人亚洲精品狼色在线| 欧美日本一区二区| 亚洲色图在线看| 国产高清成人在线| 欧美一区二区免费| 一区二区三区在线观看动漫| 国产一区二区毛片| 欧美高清视频不卡网| 1024成人网| 国产精品影视在线观看| 日韩欧美成人激情| 日韩精品视频网| 在线观看网站黄不卡| 国产精品免费人成网站| 九色综合狠狠综合久久| 欧美日韩国产a| 一区二区三区精品久久久| 国产一区二区精品久久| 日韩免费高清视频| 日韩成人一区二区三区在线观看| 色婷婷国产精品久久包臀 | 久久99在线观看| 在线成人免费视频| 亚洲激情六月丁香| av一二三不卡影片| 国产精品美女久久久久av爽李琼| 极品瑜伽女神91| 久久免费视频一区| 久88久久88久久久| 精品国精品国产尤物美女| 日本欧洲一区二区| 欧美精品一级二级三级| 亚洲丶国产丶欧美一区二区三区| 91女人视频在线观看| 国产精品国产三级国产aⅴ中文| 国产一区免费电影| 欧美www视频| 精品制服美女久久| 26uuu欧美| 国产一区二区三区四区五区入口 | 亚洲一区二区三区四区在线观看 | 美美哒免费高清在线观看视频一区二区| 在线观看不卡一区| 亚洲一级二级在线| 精品视频一区三区九区| 亚洲成av人片一区二区梦乃| 欧美精品三级日韩久久| 免费高清不卡av| 精品国产乱码久久久久久牛牛| 国产精品一卡二| 国产精品久久久久久久久图文区| 成人精品视频.| 亚洲欧美日韩国产另类专区| 欧美少妇xxx| 麻豆国产欧美日韩综合精品二区| 精品欧美一区二区三区精品久久| 精品一区二区在线观看| 中文字幕+乱码+中文字幕一区| 99久久久精品| 亚洲综合网站在线观看| 6080亚洲精品一区二区| 国产美女在线精品| 国产精品麻豆视频| 欧美亚一区二区| 欧美a级一区二区| 久久久久久免费毛片精品| 99久久精品国产精品久久| 亚洲成人精品影院| 精品99一区二区| 99精品热视频| 午夜影视日本亚洲欧洲精品| 精品日韩一区二区三区免费视频| 岛国精品在线观看| 亚洲综合小说图片| 欧美精品一区二区三区久久久| www.亚洲在线| 日韩主播视频在线| 亚洲国产成人自拍| 欧美吻胸吃奶大尺度电影| 激情久久五月天| 亚洲欧美另类在线| 欧美一级片免费看| 99综合电影在线视频| 天堂蜜桃一区二区三区| 国产欧美精品一区aⅴ影院| 欧洲另类一二三四区| 国产一区二区三区综合| 亚洲精选免费视频| 精品人在线二区三区| 日本精品视频一区二区| 国产综合久久久久久久久久久久 | 国产高清成人在线| 亚洲成av人片在线| 国产精品国产成人国产三级| 欧美另类一区二区三区| 99这里都是精品| 久久99久久久欧美国产| 悠悠色在线精品| 久久精品男人天堂av| 欧美日韩一区三区四区| 成人h动漫精品| 久久99日本精品| 午夜精品成人在线视频| 国产精品国产三级国产三级人妇 | 精品视频免费看| 成人av在线看| 精品影视av免费| 亚洲国产三级在线| 亚洲私人黄色宅男| 久久―日本道色综合久久| 91精品一区二区三区在线观看| 99国内精品久久| 国产一区999| 精品一区二区免费看| 亚洲一区二区免费视频| 自拍偷拍亚洲欧美日韩| 久久伊人蜜桃av一区二区| 日韩欧美一二三区| 欧美日韩1234| 欧美性猛交xxxx乱大交退制版| 成人av在线网站| 成人一级片网址| 懂色av一区二区在线播放| 国产伦精品一区二区三区免费| 久久黄色级2电影| 日韩二区三区在线观看| 亚洲国产日韩在线一区模特| 亚洲欧美视频在线观看视频| 国产精品三级在线观看| 久久精品人人做人人爽人人| 精品国产一区久久| 麻豆国产精品777777在线| 26uuu国产日韩综合| 91高清在线观看| 国产麻豆91精品|