| Summary: | [PATCH] whois(1) enhancement - smarter whois-servers.net lookups | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Base System | Reporter: | Phil Homewood <pdh> | ||||
| Component: | bin | Assignee: | Mark Linimon <linimon> | ||||
| Status: | Closed FIXED | ||||||
| Severity: | Affects Only Me | ||||||
| Priority: | Normal | ||||||
| Version: | 4.1-STABLE | ||||||
| Hardware: | Any | ||||||
| OS: | Any | ||||||
| Attachments: |
|
||||||
|
Description
Phil Homewood
2000-12-19 00:50:01 UTC
I said: > It also fixes a minor annoyance in that "whois example.com." fails. Oops, that version doesn't. This one does. Please supersede my previous patch with this one. --- usr.bin/whois/whois.c.orig Sat Jul 15 17:29:31 2000 +++ usr.bin/whois/whois.c Tue Dec 19 11:14:33 2000 @@ -84,6 +84,7 @@ { int ch, i, j, error; int use_qnichost, flags; + int found = 0; char *host; char *qnichost; struct addrinfo hints, *res; @@ -160,29 +161,43 @@ free(qnichost); qnichost = NULL; } - for (i = j = 0; (*argv)[i]; i++) { - if ((*argv)[i] == '.') { - j = i; - } + for (i = 0; (*argv)[i]; i++); + if (i <= 1) { + errx(EX_NOHOST, + "Can't search for the null string."); } - if (j != 0) { - qnichost = (char *) calloc(i - j + 1 + - strlen(QNICHOST_TAIL), sizeof(char)); - if (!qnichost) { - err(1, "calloc"); + if ((*argv)[i - 1] == '.') i--; + for (j = 0; (*argv)[j]; j++) { + if (((*argv)[j] == '.') && !found) { + qnichost = (char *) calloc(i - j + 1 + + strlen(QNICHOST_TAIL), + sizeof(char)); + if (!qnichost) { + err(1, "calloc"); + } + strncpy(qnichost, *argv + j + 1, + i - j - 1); + strcat(qnichost, QNICHOST_TAIL); + + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = 0; + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + error = getaddrinfo(qnichost, "whois", + &hints, &res); + if (error == 0) { + found = 1; + } else { + free(qnichost); + qnichost = NULL; + } } - strcpy(qnichost, *argv + j + 1); - strcat(qnichost, QNICHOST_TAIL); - memset(&hints, 0, sizeof(hints)); - hints.ai_flags = 0; - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - error = getaddrinfo(qnichost, "whois", - &hints, &res); - if (error != 0) - errx(EX_NOHOST, "%s: %s", qnichost, - gai_strerror(error)); + } + if (!found) { + errx(EX_NOHOST, + "Cannot locate whois server for %s", + *argv); } } if (!qnichost) { -- Phil Homewood pdh@asiaonline.net Senior Technician +61 7 3620 1930 Asia Online (Queensland) http://www.asiaonline.net/ Responsible Changed From-To: freebsd-bugs->mike I'll look into this one. State Changed From-To: open->feedback Is this still a problem with recent versions of FreeBSD? Responsible Changed From-To: mike->linimon Reset PR assigned to inactive committer who has not responded to email. State Changed From-To: feedback->closed Submitter's email address bounces. |