Introduction
Introduction Statistics Contact Development Disclaimer Help
Update sic/util.c to match sic.c tip. - sic - simple irc client
git clone git://git.suckless.org/sic
Log
Files
Refs
README
LICENSE
---
commit 7f1961d4c6c5e326fcb588785f1935e4176a2d01
parent 2b853804113a01672790aed67cb372d35554b61e
Author: Kris Maglione <[email protected]>
Date: Wed, 23 Sep 2009 12:52:13 -0400
Update sic/util.c to match sic.c tip.
Diffstat:
M kris/sic.c | 4 ++--
M kris/util.c | 34 ++++++++++++++++++-----------…
2 files changed, 22 insertions(+), 16 deletions(-)
---
diff --git a/kris/sic.c b/kris/sic.c
@@ -18,7 +18,7 @@ typedef unsigned short ushort;
#define PINGTIMEOUT 300
static char* host = "irc.oftc.net";
-static ushort port = 6667;
+static char* port = "ircd";
static char* password;
static char nick[32];
@@ -150,7 +150,7 @@ main(int argc, char *argv[]) {
if(++i < argc) host = argv[i];
break;
case 'p':
- if(++i < argc) port = atoi(argv[i]);
+ if(++i < argc) port = argv[i];
break;
case 'n':
if(++i < argc) strlcpy(nick, argv[i], sizeof nick);
diff --git a/kris/util.c b/kris/util.c
@@ -21,21 +21,27 @@ eprint(const char *fmt, ...) {
}
static int
-dial(char *host, int port) {
- struct hostent *hp;
- static struct sockaddr_in addr;
- int i;
+dial(char *host, char *port) {
+ static struct addrinfo hints;
+ struct addrinfo *res, *r;
+ int srv;
- if((i = socket(AF_INET, SOCK_STREAM, 0)) < 0)
- eprint("sic: cannot connect host '%s':", host);
- if(nil == (hp = gethostbyname(host)))
- eprint("sic: cannot resolve hostname '%s': %s\n", host, hstrer…
- addr.sin_family = AF_INET;
- addr.sin_port = htons(port);
- memcpy(&addr.sin_addr, hp->h_addr, hp->h_length);
- if(connect(i, (struct sockaddr*)&addr, sizeof(struct sockaddr_in)))
- eprint("sic: cannot connect host '%s':", host);
- return i;
+ memset(&hints, 0, sizeof hints);
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ if(getaddrinfo(host, port, &hints, &res) != 0)
+ eprint("error: cannot resolve hostname '%s':", host);
+ for(r = 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);
+ }
+ freeaddrinfo(res);
+ if(!r)
+ eprint("error: cannot connect to host '%s'\n", host);
+ return srv;
}
#define strlcpy _strlcpy
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.