Introduction
Introduction Statistics Contact Development Disclaimer Help
applied Jeroen Schot's patch - sic - simple irc client
git clone git://git.suckless.org/sic
Log
Files
Refs
README
LICENSE
---
commit ca6ba9a64a1332bf2bb4fac4b08030812dc3ff07
parent f3827eec2a299cb0a556f9db12206e97d0f6e390
Author: a@null <unknown>
Date: Sat, 14 Feb 2009 11:53:47 +0000
applied Jeroen Schot's patch
Diffstat:
M LICENSE | 4 +++-
M sic.1 | 2 +-
M sic.c | 36 ++++++++++++++++-------------…
3 files changed, 23 insertions(+), 19 deletions(-)
---
diff --git a/LICENSE b/LICENSE
@@ -1,6 +1,8 @@
MIT/X Consortium License
-© 2005-2008 Anselm R Garbe <garbeam at gmail dot com>
+
+© 2005-2009 Anselm R Garbe <garbeam at gmail dot com>
+© 2008-2009 Jeroen Schot <schot at a-eskwadraat dot nl>
© 2005 Nico Golde <nico at ngolde dot de>
Permission is hereby granted, free of charge, to any person obtaining a
diff --git a/sic.1 b/sic.1
@@ -17,7 +17,7 @@ different channel buffers, that's actually a feature.
.SH OPTIONS
.TP
.B \-h <host>
-Overrides the default host (irc.oftc.net)
+Overrides the default host (irc6.oftc.net)
.TP
.B \-p <port>
Overrides the default port (6667)
diff --git a/sic.c b/sic.c
@@ -1,6 +1,4 @@
-/* © 2005-2008 Anselm R Garbe <garbeam at gmail dot com>
- * © 2005 Nico Golde <nico at ngolde dot de>
- * See LICENSE file for license details. */
+/* See LICENSE file for license details. */
#include <errno.h>
#include <netdb.h>
#include <netinet/in.h>
@@ -23,8 +21,8 @@ static void parsein(char *msg);
static void parsesrv(char *msg);
static int readl(int fd, unsigned int len, char *buf);
-static char *host = "irc.oftc.net";
-static unsigned short port = 6667;
+static char *host = "irc6.oftc.net";
+static char *port = "6667";
static char *password = NULL;
static char nick[32];
@@ -161,8 +159,7 @@ int
main(int argc, char *argv[]) {
int i;
struct timeval tv;
- struct hostent *hp;
- static struct sockaddr_in addr; /* initially filled with 0's */
+ static struct addrinfo hints, *res, *r;
char ping[256];
fd_set rd;
@@ -172,7 +169,7 @@ main(int argc, char *argv[]) {
if(++i < argc) host = argv[i];
}
else if(!strncmp(argv[i], "-p", 3)) {
- if(++i < argc) port = (unsigned short)atoi(argv[i]);
+ if(++i < argc) port = argv[i];
}
else if(!strncmp(argv[i], "-n", 3)) {
if(++i < argc) strncpy(nick, argv[i], sizeof nick);
@@ -181,22 +178,27 @@ main(int argc, char *argv[]) {
if(++i < argc) password = argv[i];
}
else if(!strncmp(argv[i], "-v", 3))
- die("sic-"VERSION", © 2005-2008 Anselm R Garbe, Nico …
+ die("sic-"VERSION", © 2005-2009 sic engineers\n");
else
die("usage: sic [-h host] [-p port] [-n nick] [-k keyw…
/* init */
- if((srv = socket(AF_INET, SOCK_STREAM, 0)) < 0)
- die("error: cannot connect host '%s'\n", host);
- if(NULL == (hp = gethostbyname(host)))
+ memset(&hints, 0, sizeof hints);
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ if(getaddrinfo(host, port, &hints, &res) != 0)
die("error: cannot resolve hostname '%s'\n", host);
- addr.sin_family = AF_INET;
- addr.sin_port = htons(port);
- memcpy(&addr.sin_addr, hp->h_addr, hp->h_length);
- if(connect(srv, (struct sockaddr *) &addr, sizeof(struct sockaddr_in))…
+ for(ri = res; r; r = r->ai_next) {
+ if((srv = socket(r->ai_family, r->ai_socktype, r->ai_protocol)…
+ continue;
+ if(connect(srv, r->ai_addr, r->ai_addrlen) == 0)
+ break;
close(srv);
- die("error: cannot connect host '%s'\n", host);
}
+ freeaddrinfo(res);
+ if(!r)
+ die("error: cannot connect to host '%s'\n", host);
+
/* login */
if(password)
snprintf(bufout, sizeof bufout,
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.