iadd ipv6 support, thanks Evil_Bob - irc - Unnamed repository; edit this file 'description' to name the repository. Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/irc.git URL:git://vernunftzentrum.de/irc.git vernunftzentrum.de 70 1Log /ckeen/repos/irc/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/irc/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/irc/refs.gph vernunftzentrum.de 70 1README /ckeen/repos/irc/file/README.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit f80202802bc1fb4d56f6ce27bcdeaf58d7d1cd1e /ckeen/repos/irc/commit/f80202802bc1fb4d56f6ce27bcdeaf58d7d1cd1e.gph vernunftzentrum.de 70 1parent c3722d014fe734bd6e7cb97cf1352f9822811c97 /ckeen/repos/irc/commit/c3722d014fe734bd6e7cb97cf1352f9822811c97.gph vernunftzentrum.de 70 hAuthor: Quentin Carbonneaux URL:mailto:quentin.carbonneaux@yale.edu vernunftzentrum.de 70 iDate: Tue, 9 Aug 2016 19:35:26 -0400 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iadd ipv6 support, thanks Evil_Bob Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i irc.c | 46 +++++++++++++++++-------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i1 file changed, 25 insertions(+), 21 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/irc.c b/irc.c /ckeen/repos/irc/file/irc.c.gph vernunftzentrum.de 70 i@@ -30,7 +30,7 @@ Err vernunftzentrum.de 70 i #define PFMT " %-12s < %s" Err vernunftzentrum.de 70 i #define PFMTHIGH "> %-12s < %s" Err vernunftzentrum.de 70 i #define SRV "irc.oftc.net" Err vernunftzentrum.de 70 i-#define PORT 6667 Err vernunftzentrum.de 70 i+#define PORT "6667" Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i enum { Err vernunftzentrum.de 70 i ChanLen = 64, Err vernunftzentrum.de 70 i@@ -211,25 +211,30 @@ srd(void) Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i static int Err vernunftzentrum.de 70 i-dial(const char *host, short port) Err vernunftzentrum.de 70 i+dial(const char *host, const char *service) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- int f; Err vernunftzentrum.de 70 i- struct sockaddr_in sin; Err vernunftzentrum.de 70 i- struct addrinfo *ai, hai = { 0 }; Err vernunftzentrum.de 70 i- Err vernunftzentrum.de 70 i- hai.ai_family = AF_INET; Err vernunftzentrum.de 70 i- hai.ai_socktype = SOCK_STREAM; Err vernunftzentrum.de 70 i- if (getaddrinfo(host, 0, &hai, &ai)) Err vernunftzentrum.de 70 i- panic("Cannot resolve host."); Err vernunftzentrum.de 70 i- memcpy(&sin, ai->ai_addr, sizeof sin); Err vernunftzentrum.de 70 i- sin.sin_port = htons(port); Err vernunftzentrum.de 70 i- freeaddrinfo(ai); Err vernunftzentrum.de 70 i- f = socket(AF_INET, SOCK_STREAM, 0); Err vernunftzentrum.de 70 i- if (f < 0) Err vernunftzentrum.de 70 i- panic("Cannot create socket."); Err vernunftzentrum.de 70 i- if (connect(f, (struct sockaddr *)&sin, sizeof sin) < 0) Err vernunftzentrum.de 70 i+ struct addrinfo hints, *res = NULL, *rp; Err vernunftzentrum.de 70 i+ int fd = -1, e; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ memset(&hints, 0, sizeof(hints)); Err vernunftzentrum.de 70 i+ hints.ai_family = AF_UNSPEC; /* allow IPv4 or IPv6 */ Err vernunftzentrum.de 70 i+ hints.ai_flags = AI_NUMERICSERV; /* avoid name lookup for port */ Err vernunftzentrum.de 70 i+ hints.ai_socktype = SOCK_STREAM; Err vernunftzentrum.de 70 i+ if ((e = getaddrinfo(host, service, &hints, &res))) Err vernunftzentrum.de 70 i+ panic("Getaddrinfo failed."); Err vernunftzentrum.de 70 i+ for (rp = res; rp; rp = rp->ai_next) { Err vernunftzentrum.de 70 i+ if ((fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol)) == -1) Err vernunftzentrum.de 70 i+ continue; Err vernunftzentrum.de 70 i+ if (connect(fd, res->ai_addr, res->ai_addrlen) == -1) { Err vernunftzentrum.de 70 i+ close(fd); Err vernunftzentrum.de 70 i+ continue; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ if (fd == -1) Err vernunftzentrum.de 70 i panic("Cannot connect to host."); Err vernunftzentrum.de 70 i- return f; Err vernunftzentrum.de 70 i+ freeaddrinfo(res); Err vernunftzentrum.de 70 i+ return fd; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i static int Err vernunftzentrum.de 70 i@@ -728,7 +733,7 @@ main(int argc, char *argv[]) Err vernunftzentrum.de 70 i const char *user = getenv("USER"); Err vernunftzentrum.de 70 i const char *ircnick = getenv("IRCNICK"); Err vernunftzentrum.de 70 i const char *server = SRV; Err vernunftzentrum.de 70 i- unsigned short port = PORT; Err vernunftzentrum.de 70 i+ const char *port = PORT; Err vernunftzentrum.de 70 i int o; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i while ((o = getopt(argc, argv, "hn:u:s:p:l:")) >= 0) Err vernunftzentrum.de 70 i@@ -754,8 +759,7 @@ main(int argc, char *argv[]) Err vernunftzentrum.de 70 i server = optarg; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'p': Err vernunftzentrum.de 70 i- if (!(port = strtol(optarg, 0, 0))) Err vernunftzentrum.de 70 i- goto usage; Err vernunftzentrum.de 70 i+ port = optarg; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i if (!nick[0] && ircnick && strlen(ircnick) < sizeof nick) Err vernunftzentrum.de 70 .