This seems quite a useful database now that there are 500+ TLDs, OK to add a flag to use it more easily from whois(1)?
Index: whois.1 =================================================================== RCS file: /cvs/src/usr.bin/whois/whois.1,v retrieving revision 1.33 diff -u -p -r1.33 whois.1 --- whois.1 9 Apr 2015 19:29:53 -0000 1.33 +++ whois.1 2 Nov 2015 18:12:34 -0000 @@ -38,7 +38,7 @@ .Nd Internet domain name and network number directory service .Sh SYNOPSIS .Nm whois -.Op Fl AadgilmPQRr +.Op Fl AadgIilmPQRr .Oo .Fl c Ar country-code | Fl h Ar host .Oc @@ -156,6 +156,11 @@ or to the .Tn NIC handle in the query.) +.It Fl I +Use the Internet Assigned Numbers Authority +.Pq Tn whois.iana.org +root zone database. +It contains information about top-level domains. .It Fl l Use the Latin American and Caribbean IP address Regional Registry .Pq Tn LACNIC Index: whois.c =================================================================== RCS file: /cvs/src/usr.bin/whois/whois.c,v retrieving revision 1.51 diff -u -p -r1.51 whois.c --- whois.c 2 Nov 2015 17:16:35 -0000 1.51 +++ whois.c 2 Nov 2015 18:12:34 -0000 @@ -58,6 +58,7 @@ #define AFNICHOST "whois.afrinic.net" #define BNICHOST "whois.registro.br" #define PDBHOST "whois.peeringdb.com" +#define IANAHOST "whois.iana.org" #define QNICHOST_TAIL ".whois-servers.net" #define WHOIS_PORT "whois" @@ -82,7 +83,7 @@ main(int argc, char *argv[]) country = host = NULL; flags = rval = 0; - while ((ch = getopt(argc, argv, "aAc:dgh:ilmp:PqQrR")) != -1) + while ((ch = getopt(argc, argv, "aAc:dgh:iIlmp:PqQrR")) != -1) switch (ch) { case 'a': host = ANICHOST; @@ -105,6 +106,9 @@ main(int argc, char *argv[]) case 'i': host = INICHOST; break; + case 'I': + host = IANAHOST; + break; case 'l': host = LNICHOST; break; @@ -343,7 +347,7 @@ usage(void) extern char *__progname; fprintf(stderr, - "usage: %s [-AadgilmPQRr] [-c country-code | -h host] " + "usage: %s [-AadgIilmPQRr] [-c country-code | -h host] " "[-p port] name ...\n", __progname); exit(1); }