$NetBSD: patch-ab,v 1.2 2006/06/30 18:25:43 tron Exp $ --- ipw.c.orig 1999-03-30 08:04:12.000000000 +0100 +++ ipw.c 2006-06-30 19:22:53.000000000 +0100 @@ -257,7 +257,7 @@ static int my_opterr = 1; /* if error message should be printed */ static int my_optind = 1; /* index into parent argv vector */ static int my_optopt; /* character checked for validity */ -static int optreset; /* reset getopt */ +static int my_optreset; /* reset getopt */ static char *my_optarg; /* argument associated with option */ #define BADCH (int)'?' @@ -275,9 +275,9 @@ static char *place = EMSG; /* option letter processing */ register char *oli = NULL; /* option letter list index */ - if (optreset || ! *place) + if (my_optreset || ! *place) { /* update scanning pointer */ - optreset = 0; + my_optreset = 0; if (my_optind >= nargc || *(place = nargv[my_optind]) != '-') { place = EMSG; @@ -782,7 +782,7 @@ if (!p) return NULL; - for (q = p + rwhois_prefix_len; *q && !isspace (*q); q++) + for (q = p + rwhois_prefix_len; *q && !isspace (*q) && *q != ':'; q++) continue; srvr_len = q - p; server = (char *) xmalloc (srvr_len + 1); @@ -1745,14 +1745,14 @@ { static char const ripe1[] = "European Regional Internet Registry/RIPE"; static char const ripe2[] = "RIPE NCC (NET-RIPE-NCC-"; - static char const apnic[] = "Asia Pacific Network Information Center"; + static char const apnic[] = "Asia Pacific Network Information Centre"; static char const nomatch[] = "No match"; static char const updated[] = "Record last updated on "; static char const hostname[] = "Hostname:"; auto char arin_query[200]; try_next_addr: - strcpy (arin_query, "net "); + strcpy (arin_query, "n "); strcat (arin_query, dotted_blockname); whois_data = whois (arin_server, arin_query); if (whois_data == NULL) /* Server must be down! */ @@ -1760,8 +1760,15 @@ if (strncmp (whois_data, nomatch, sizeof nomatch -1)) { register char const *rwhois_data; + char const *orgname = strstr (whois_data, "OrgName:"); - if (!strncmp (whois_data, ripe1, sizeof ripe1 - 1)) + if (orgname) + { + orgname += sizeof "OrgName:"; + while (isspace (*orgname)) + orgname++; + } + if (orgname && !strncmp (orgname, ripe1, sizeof ripe1 - 1)) { if (try_ripe (dotted_quad)) break; @@ -1769,7 +1776,7 @@ return 0; } - if (!strncmp (whois_data, ripe2, sizeof ripe2 - 1)) + if (orgname && !strncmp (orgname, ripe2, sizeof ripe2 - 1)) { if (try_ripe (dotted_quad)) break; @@ -1777,7 +1784,7 @@ return 0; } - if (!strncmp (whois_data, apnic, sizeof apnic - 1)) + if (orgname && !strncmp (orgname, apnic, sizeof apnic - 1)) { if (try_apnic (dotted_quad)) break; @@ -1802,6 +1809,7 @@ goto try_next_addr; } +#if 0 /* needs fixing */ if (!substr (whois_data, updated)) { /* Handle a special case. ARIN has returned to us a list of @@ -1813,6 +1821,7 @@ if ((whois_data = arin_grunge (whois_data, addr)) == NULL) return 1; } +#endif if ((rwhois_data = fetch_rwhois_data (whois_data, dotted_quad))) return present_rwhois_style_results (rwhois_data, whois_data); else