version 1.34, 2005/06/25 14:27:36 |
version 1.35, 2005/06/27 21:01:43 |
|
|
|
|
#include <ctype.h> |
#include <ctype.h> |
#include <err.h> |
#include <err.h> |
|
#include <errno.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
|
|
#define WHOIS_RECURSE 0x01 |
#define WHOIS_RECURSE 0x01 |
#define WHOIS_QUICK 0x02 |
#define WHOIS_QUICK 0x02 |
|
|
const char *port = WHOIS_PORT; |
const char *port_whois = WHOIS_PORT; |
const char *ip_whois[] = { LNICHOST, RNICHOST, PNICHOST, BNICHOST, NULL }; |
const char *ip_whois[] = { LNICHOST, RNICHOST, PNICHOST, BNICHOST, NULL }; |
|
|
__dead void usage(void); |
__dead void usage(void); |
|
|
host = MNICHOST; |
host = MNICHOST; |
break; |
break; |
case 'p': |
case 'p': |
port = optarg; |
port_whois = optarg; |
break; |
break; |
case 'q': |
case 'q': |
/* deprecated, now the default */ |
/* deprecated, now the default */ |
|
|
flags |= WHOIS_RECURSE; |
flags |= WHOIS_RECURSE; |
for (name = *argv; (name = *argv) != NULL; argv++) |
for (name = *argv; (name = *argv) != NULL; argv++) |
rval += whois(name, host ? host : choose_server(name, country), |
rval += whois(name, host ? host : choose_server(name, country), |
port, flags); |
port_whois, flags); |
exit(rval); |
exit(rval); |
} |
} |
|
|
|
|
for (s = -1, ai = res; ai != NULL; ai = ai->ai_next) { |
for (s = -1, ai = res; ai != NULL; ai = ai->ai_next) { |
s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); |
s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); |
if (s == -1) { |
if (s == -1) { |
|
error = errno; |
reason = "socket"; |
reason = "socket"; |
continue; |
continue; |
} |
} |
if (connect(s, ai->ai_addr, ai->ai_addrlen) == -1) { |
if (connect(s, ai->ai_addr, ai->ai_addrlen) == -1) { |
|
error = errno; |
reason = "connect"; |
reason = "connect"; |
close(s); |
close(s); |
s = -1; |
s = -1; |
|
|
break; /*okay*/ |
break; /*okay*/ |
} |
} |
if (s == -1) { |
if (s == -1) { |
if (reason) |
if (reason) { |
|
errno = error; |
warn("%s: %s", server, reason); |
warn("%s: %s", server, reason); |
else |
} else |
warn("unknown error in connection attempt"); |
warn("unknown error in connection attempt"); |
freeaddrinfo(res); |
freeaddrinfo(res); |
return (1); |
return (1); |
|
|
{ |
{ |
static char *server; |
static char *server; |
const char *qhead; |
const char *qhead; |
|
char *nserver; |
char *ep; |
char *ep; |
size_t len; |
size_t len; |
|
|
|
|
} else if (isdigit(*(++qhead))) |
} else if (isdigit(*(++qhead))) |
return (ANICHOST); |
return (ANICHOST); |
len = strlen(qhead) + sizeof(QNICHOST_TAIL); |
len = strlen(qhead) + sizeof(QNICHOST_TAIL); |
if ((server = realloc(server, len)) == NULL) |
if ((nserver = realloc(server, len)) == NULL) |
err(1, "realloc"); |
err(1, "realloc"); |
|
server = nserver; |
strlcpy(server, qhead, len); |
strlcpy(server, qhead, len); |
strlcat(server, QNICHOST_TAIL, len); |
strlcat(server, QNICHOST_TAIL, len); |
return (server); |
return (server); |