summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco d'Itri <md@linux.it>2001-03-07 00:45:33 +0100
committerMarco d'Itri <md@linux.it>2013-03-30 02:31:27 +0100
commitea3543984abefe28dfc377e54a4c3344bbc1d664 (patch)
tree119244bca74fa2e62f5720272d7d2eb37a35309b
parentd4170f18798b33c454063395b9346eef7c1490c5 (diff)
downloadwhois-ea3543984abefe28dfc377e54a4c3344bbc1d664.tar.gz
Imported Debian version 4.5.4v4.5.4
-rw-r--r--Makefile3
-rw-r--r--Makefile.am21
-rw-r--r--TODO12
-rw-r--r--as_del_list6
-rw-r--r--config.h19
-rw-r--r--data.h11
-rw-r--r--debian/changelog51
-rw-r--r--debian/control2
-rw-r--r--ip_del_list102
-rw-r--r--po/Makefile2
-rw-r--r--po/el.po193
-rw-r--r--po/it.po124
-rw-r--r--po/no.po70
-rw-r--r--po/pl.po173
-rw-r--r--tld_serv_list158
-rw-r--r--whois.123
-rw-r--r--whois.c166
-rw-r--r--whois.h24
-rw-r--r--whois.spec44
19 files changed, 932 insertions, 272 deletions
diff --git a/Makefile b/Makefile
index 395fd4a..16906e6 100644
--- a/Makefile
+++ b/Makefile
@@ -42,6 +42,9 @@ clean:
test:
open -- sh -c "while nc -l -p 43 127.0.0.1; do echo END; done"
+gnu:
+ tar czvvf gnu-whois.tgz Makefile* README TODO *list *.h whois.*
+
pos:
cd po && $(MAKE)
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..8963bd0
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,21 @@
+AUTOMAKE_OPTIONS = ../ansi2knr
+
+bin_PROGRAMS = @BUILD_WHOIS@
+
+EXTRA_PROGRAMS = whois
+
+whois_SOURCES = whois.c
+
+whois_DEPENDENCIES = as_del_list ip_del_list tld_serv_list
+
+CLEANFILES = as_del.h ip_del.h tld_serv.h
+
+as_del.h: as_del_list make_as_del.pl
+ perl make_as_del.pl < as_del_list > as_del.h
+
+ip_del.h: ip_del_list make_ip_del.pl
+ perl make_ip_del.pl < ip_del_list > ip_del.h
+
+tld_serv.h: tld_serv_list make_tld_serv.pl
+ perl make_tld_serv.pl < tld_serv_list > tld_serv.h
+
diff --git a/TODO b/TODO
index a9fcdd4..668b2a1 100644
--- a/TODO
+++ b/TODO
@@ -1,18 +1,10 @@
-Still to sort:
-*NETBLK-RIPE* *NET-RIPE* *APNIC* *AUNIC-AU*
-
-Is MNT-* a standard of some registry?
-
What about rwhois?
Should support the refer attribute of RIPE-189 objects.
-I need a procedure for searching an IPv6 address in a list.
+I need a procedure for looking up an IPv6 address in a list of prefixes.
Will anybody contribute it?
-Can ARIN netblock names have a dash?
-
-Should "=" be prepended by default when an NSI-style NIC handle is detected?
-
Add Exodus rwhois server (e.g. 216.35.0.0/16).
+Add rwhois.verio.net:4321 (e.g. 192.204.0.0/16).
diff --git a/as_del_list b/as_del_list
index 2156dfa..c996679 100644
--- a/as_del_list
+++ b/as_del_list
@@ -12,6 +12,10 @@
6656 6911 ripe
7467 7722 apnic
8192 9215 ripe
-9261 10239 apnic
+9591 9622 whois.nic.ad.jp
+9990 10021 whois.nic.ad.jp
+9261 10067 apnic
+10068 10073 whois.nic.or.kr
+10074 10239 apnic
12288 13311 ripe
15360 16383 ripe
diff --git a/config.h b/config.h
index 47d9318..1ede07b 100644
--- a/config.h
+++ b/config.h
@@ -1,17 +1,24 @@
/* Program version */
-#define VERSION "4.4.13"
+/* not for the inetutils version */
+#define VERSION "4.5.4"
/* Configurable features */
/* 6bone referto: support */
#define EXT_6BONE
-/* Suppress lame NSI disclaimer */
-#define HIDE_DISCL
-
-/* Always ask INTERNIC about gTLDs */
-#define FIRST_ASK_INTERNIC
+/* Always hide legal disclaimers */
+#undef ALWAYS_HIDE_DISCL
/* Default server */
#define DEFAULTSERVER "whois.internic.net"
+/* not for the inetutils version */
+#ifdef linux
+# define ENABLE_NLS
+# define HAVE_GETOPT_LONG
+# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+# define HAVE_GETADDRINFO
+# endif
+#endif
+
diff --git a/data.h b/data.h
index d65faa4..c68819f 100644
--- a/data.h
+++ b/data.h
@@ -21,6 +21,7 @@ const char *ripe_servers[] = {
"whois.restena.lu",
"rr.level3.net", /* 3.0.0a13 */
"whois.arnes.si",
+ "rpsl.ripe.net",
NULL
};
@@ -54,7 +55,6 @@ const char *gtlds[] = {
NULL
};
-#ifdef HIDE_DISCL
const char *hide_strings[] = {
"The Data in Network", "this query",
"The data in Register", "By submitting",
@@ -63,19 +63,24 @@ const char *hide_strings[] = {
"Signature Domains' Whois Service", "agree to abide by the above",
"Access to ASNIC", "by this policy.",
"* Copyright (C) 1998 by SGNIC", "* modification.",
+ "The Data in Gabia", "you agree to abide",
NULL, NULL
};
-#endif
const char *nic_handles[] = {
"net-", "whois.arin.net",
"netblk-", "whois.arin.net",
"asn-", "whois.arin.net",
- "as-", "whois.ripe.net",
"lim-", "whois.ripe.net",
"coco-", "whois.corenic.net",
"coho-", "whois.corenic.net",
"core-", "whois.corenic.net",
+ /* RPSL objects */
+ "as-", "whois.ripe.net",
+ "rs-", "whois.ripe.net",
+ "rtrs-", "whois.ripe.net",
+ "fltr-", "whois.ripe.net",
+ "prng-", "whois.ripe.net",
NULL, NULL
};
diff --git a/debian/changelog b/debian/changelog
index 83c6ed5..eedc08c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,54 @@
+whois (4.5.4) unstable; urgency=low
+
+ * Updated .at, .be, .cy, .cz, .ee, .gr, .il, .pl, .ro, .vi and .nz ccTLDs.
+ * Added -cz, -nicat, -norid and -rotld nic handles.
+ * Added telstra IP allocations.
+ * Fixed fencepost error (Closes: #83661).
+ * Added .gov.uk server (Closes: #89501).
+
+ -- Marco d'Itri <md@linux.it> Wed, 7 Mar 2001 00:45:33 +0100
+
+whois (4.5.3) unstable; urgency=low
+
+ * Updated .hr and level3 servers.
+ * Added .la and .by servers and updated some other data.
+ * Many RPSL fixes.
+ * Added BRAZIL-BLK[12] networks.
+ * Rechecked all missing ccTLDs.
+
+ -- Marco d'Itri <md@linux.it> Tue, 6 Feb 2001 18:29:37 +0100
+
+whois (4.5.2) unstable; urgency=low
+
+ * Added TWNIC netblocks.
+ * Fixed server name for .ca, .gr, .edu.cn and .ie (Closes: #77127, #78322).
+ * Added *-CN and *-DK NIC handles.
+ * Added servers for .cf and .gt.
+
+ -- Marco d'Itri <md@linux.it> Sun, 17 Dec 2000 02:16:11 +0100
+
+whois (4.5.1) unstable; urgency=low
+
+ * Portability fixes.
+ * Added KRNIC and JPNIC netblocks.
+ * Added new RIPE assignment.
+ * Fixed use of uninitialised memory (Closes: #76045, #76060).
+
+ -- Marco d'Itri <md@linux.it> Sun, 5 Nov 2000 13:11:37 +0100
+
+whois (4.5.0) unstable; urgency=low
+
+ * Added CentralNic (formerly NomiNation.net) servers.
+ * Added 151.99.0.0/16 prefix.
+ * Changed de and is TLD servers.
+ * Email addresses are not mistaken for domains anymore.
+ * Added $WHOIS_HIDE variable.
+ * Added getopt_long support and rearranged .h files.
+ * Removed obsolete #ifndef FIRST_ASK_INTERNIC.
+ * Added support for new RPSL query switches: -l, -x, -q.
+
+ -- Marco d'Itri <md@linux.it> Mon, 24 Jul 2000 23:47:26 +0200
+
whois (4.4.14) frozen unstable; urgency=medium
* !=> HIDE_DISCL has been disabled (VERY IMPORTANT!).
diff --git a/debian/control b/debian/control
index 55605c8..a892887 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Package: whois
Architecture: any
Depends: ${shlibs:Depends}
Replaces: bsdmainutils (<= 4.5.1), bsdutils (<< 3.0-0)
-Description: whois client
+Description: The GNU whois client
This is a new whois (RFC 954) client rewritten from scratch by me.
It is derived from and compatible with the usual BSD and RIPE whois(1)
programs.
diff --git a/ip_del_list b/ip_del_list
index 89526d3..c2e9e98 100644
--- a/ip_del_list
+++ b/ip_del_list
@@ -1,8 +1,10 @@
24.192.0.0/14 apnic
24.132.0.0/14 ripe
+61.112.0.0/12 whois.nic.ad.jp
61.0.0.0/8 apnic
62.0.0.0/8 ripe
-63.208.0.0/13 rr.level3.net
+# broken?
+# 63.208.0.0/13 rr.level3.net
0.0.0.0/2 arin # all other A classes are managed by ARIN
## The B class space is a mess :-( - something could still be missing
139.20.0.0/14 ripe
@@ -17,6 +19,7 @@
145.248.0.0/14 ripe
145.252.0.0/15 ripe
145.254.0.0/16 ripe
+146.48.0.0/16 ripe
149.202.0.0/15 ripe
149.204.0.0/16 ripe
149.206.0.0/15 ripe
@@ -25,18 +28,10 @@
149.240.0.0/13 ripe
149.248.0.0/14 ripe
150.254.0.0/16 ripe
-151.13.0.0/16 ripe
-151.14.0.0/15 ripe
-151.16.0.0/12 ripe
-151.32.0.0/11 ripe
-151.64.0.0/12 ripe
-151.80.0.0/15 ripe
-151.3.0.0/16 ripe
-151.4.0.0/15 ripe
-151.82.0.0/16 ripe
-151.91.0.0/16 ripe
-151.92.0.0/15 ripe
-151.95.0.0/16 ripe
+151.0.0.0/10 ripe
+151.64.0.0/11 ripe
+151.96.0.0/14 ripe
+151.100.0.0/16 ripe
160.216.0.0/14 ripe
160.220.0.0/16 ripe
160.44.0.0/14 ripe
@@ -62,12 +57,93 @@
194.0.0.0/7 ripe
198.17.117.0/24 ripe
196.0.0.0/6 arin
+200.17.0.0/16 whois.nic.br
+200.18.0.0/15 whois.nic.br
+200.20.0.0/16 whois.nic.br
+200.128.0.0/9 whois.nic.br
200.0.0.0/7 arin
+203.27.128.0/18 telstra
+203.35.0.0/16 telstra
+203.36.0.0/14 telstra
+203.40.0.0/13 telstra
+203.48.0.0/14 telstra
+203.52.0.0/15 telstra
+203.54.0.0/16 telstra
+203.58.128.0/17 telstra
+203.58.32.0/19 telstra
+203.58.64.0/19 telstra
203.0.0.0/10 aunic
+202.11.0.0/16 whois.nic.ad.jp
+202.13.0.0/16 whois.nic.ad.jp
+202.15.0.0/16 whois.nic.ad.jp
+202.16.0.0/14 whois.nic.ad.jp
+202.23.0.0/16 whois.nic.ad.jp
+202.24.0.0/15 whois.nic.ad.jp
+202.26.0.0/16 whois.nic.ad.jp
+202.32.0.0/14 whois.nic.ad.jp
+202.48.0.0/16 whois.nic.ad.jp
+202.30.0.0/15 whois.nic.or.kr
+202.39.128.0/17 twnic
+202.208.0.0/14 whois.nic.ad.jp
+202.224.0.0/15 whois.nic.ad.jp
+202.230.0.0/15 whois.nic.ad.jp
+202.232.0.0/13 whois.nic.ad.jp
+202.240.0.0/12 whois.nic.ad.jp
+203.66.0.0/16 twnic
+203.69.0.0/16 twnic
+203.74.0.0/15 twnic
+203.136.0.0/14 whois.nic.ad.jp
+203.140.0.0/15 whois.nic.ad.jp
+203.178.0.0/15 whois.nic.ad.jp
+203.180.0.0/14 whois.nic.ad.jp
+203.232.0.0/13 whois.nic.or.kr
202.0.0.0/7 apnic
204.0.0.0/6 arin
208.0.0.0/7 arin
+210.59.128.0/17 twnic
+210.61.0.0/16 twnic
+210.62.252.0/22 twnic
+210.65.0.0/16 twnic
+210.71.128.0/16 twnic
+210.90.0.0/15 whois.nic.or.kr
+210.92.0.0/14 whois.nic.or.kr
+210.96.0.0/13 whois.nic.or.kr
+210.104.0.0/13 whois.nic.or.kr
+210.112.0.0/13 whois.nic.or.kr
+210.120.0.0/14 whois.nic.or.kr # => 210.123.255.255
+210.128.0.0/11 whois.nic.ad.jp
+210.160.0.0/12 whois.nic.ad.jp
+210.224.0.0/15 whois.nic.ad.jp
+210.226.0.0/15 whois.nic.ad.jp
+210.228.0.0/14 whois.nic.ad.jp
+210.232.0.0/13 whois.nic.ad.jp
+210.178.0.0/15 whois.nic.or.kr
+210.180.0.0/14 whois.nic.or.kr
+210.188.0.0/14 whois.nic.ad.jp
+210.196.0.0/14 whois.nic.ad.jp
+210.204.0.0/14 whois.nic.or.kr
+210.216.0.0/13 whois.nic.or.kr # => 210.223.255.255
+210.241.224.0/19 twnic
+210.242.0.0/16 twnic
+210.248.0.0/13 whois.nic.ad.jp
+211.0.0.0/12 whois.nic.ad.jp
+211.16.0.0/14 whois.nic.ad.jp
+211.20.0.0/15 twnic
+211.22.0.0/16 twnic
+211.32.0.0/11 whois.nic.or.kr # => 211.63.255.255
+211.75.0.0/16 twnic
+211.72.0.0/16 twnic
+211.120.0.0/13 whois.nic.ad.jp
+211.128.0.0/13 whois.nic.ad.jp
+211.104.0.0/13 whois.nic.or.kr
+211.112.0.0/13 whois.nic.or.kr # => 211.119.255.255
+211.168.0.0/13 whois.nic.or.kr
+211.176.0.0/12 whois.nic.or.kr
+211.192.0.0/13 whois.nic.or.kr # => 211.199.255.255
+210.248.0.0/13 whois.nic.ad.jp
210.0.0.0/7 apnic
212.0.0.0/7 ripe
214.0.0.0/7 arin # DoD
216.0.0.0/8 arin
+217.0.0.0/8 ripe
+
diff --git a/po/Makefile b/po/Makefile
index 34be5e0..157110c 100644
--- a/po/Makefile
+++ b/po/Makefile
@@ -3,7 +3,7 @@ INSTALLNLSDIR=$(BASEDIR)/usr/share/locale
PACKAGE = whois
-CATALOGS = it.mo no.mo
+CATALOGS = el.mo it.mo no.mo pl.mo
POTFILES=../whois.c
diff --git a/po/el.po b/po/el.po
new file mode 100644
index 0000000..5bd7739
--- /dev/null
+++ b/po/el.po
@@ -0,0 +1,193 @@
+# Greek translation of the whois command.
+# Copyright (C) 1999-2000 Simos Xenitellis
+# Simos Xenitellis <simos@hellug.gr>\n"
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: whois 4.5.3\n"
+"POT-Creation-Date: 2001-02-24 11:41+0100\n"
+"PO-Revision-Date: 2001-02-23 16:07:57+0900\n"
+"Last-Translator: Simos Xenitellis <simos@hellug.gr>\n"
+"Language-Team: Greek <nls@tux.hellug.gr>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-7\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../whois.c:99
+#, c-format
+msgid ""
+"Version %s.\n"
+"\n"
+"Report bugs to %s.\n"
+msgstr ""
+"Έκδοση %s.\n"
+"\n"
+"Αναφέρατε σφάλματα στο %s.\n"
+
+#: ../whois.c:136
+msgid "Connecting to whois.internic.net."
+msgstr "Γίνεται σύνδεση στο whois.internic.net."
+
+#: ../whois.c:142
+#, c-format
+msgid ""
+"\n"
+"Found InterNIC referral to %s.\n"
+"\n"
+msgstr ""
+"\n"
+"Βρέθηκε αναφορά από το InterNIC στο %s.\n"
+"\n"
+
+#: ../whois.c:152
+#, c-format
+msgid "Using default server %s.\n"
+msgstr "Χρήση εξ' ορισμού εξυπηρετητή %s.\n"
+
+#: ../whois.c:155
+msgid "This TLD has no whois server, but you can access the whois database at"
+msgstr ""
+"Αυτό το TLD δεν έχει εξυπηρετητή whois, ωστόσο μπορείτε να προσπελάσετε την "
+"βάση whois στο"
+
+#: ../whois.c:161
+msgid "This TLD has no whois server."
+msgstr "Αυτό το TLD δεν έχει εξυπηρετητή whois."
+
+#: ../whois.c:165
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Γίνεται χρήση του εξυπηρετητή %s.\n"
+
+#: ../whois.c:174
+#, c-format
+msgid ""
+"Query string: \"%s\"\n"
+"\n"
+msgstr ""
+"Αλφαριθμητικό ερώτησης: \"%s\"\n"
+"\n"
+
+#: ../whois.c:234
+msgid ""
+"I don't know where this IP has been delegated.\n"
+"I'll try ARIN and hope for the best..."
+msgstr ""
+"Δε γνωρίζε σε ποιον έχει αποδοθεί ευθύνη για αυτήν την διεύθυνση IP.\n"
+"Θα δοκιμάσω το ARIN και εύχομε για το καλύτερο..."
+
+#: ../whois.c:251
+msgid "I guess it's a netblock name but I don't know where to look it up."
+msgstr ""
+"Πιστεύω ότι είναι όνομα μπλοκ δικτύου αλλά δε γνωρίζω που να το αναζητήσω."
+
+#: ../whois.c:258
+msgid "I guess it's a domain but I don't know where to look it up."
+msgstr "Πιστεύω ότι είναι ένα επίθημα αλλά δε γνωρίζω που να το αναζητήσω."
+
+#: ../whois.c:268
+msgid "Unknown AS number. Please upgrade this program."
+msgstr "¶γνωστος αριθμός AS. Παρακαλώ ενημερώστε αυτό το πρόγραμμα."
+
+#: ../whois.c:298
+msgid "Warning: RIPE flags ignored for a traditional server."
+msgstr ""
+"Προειδοποίηση: Η σημαίες του RIPE αγνοούνται σε έναν παραδοσιακό εξυπηρετητή."
+
+#: ../whois.c:362
+#, c-format
+msgid "Detected referral to %s on %s.\n"
+msgstr "Ανιχνεύθηκε αναφορά του %s στο %s.\n"
+
+#: ../whois.c:379
+msgid ""
+"Catastrophic error: disclaimer text has been changed.\n"
+"Please upgrade this program.\n"
+msgstr ""
+"Καταστροφικό σφάλμα: το κείμενο της αποποίησης ευθυνών έχει τροποποιηθεί.\n"
+"Παρακαλώ αναβαθμίστε το πρόγραμμα.\n"
+
+#: ../whois.c:450
+#, c-format
+msgid "Host %s not found."
+msgstr "Το σύστημα %s δε βρέθηκε."
+
+#: ../whois.c:460
+#, c-format
+msgid "%s/tcp: unknown service"
+msgstr "%s/tcp: άγνωστη υπηρεσία"
+
+#: ../whois.c:477
+#, c-format
+msgid "Interrupted by signal %d..."
+msgstr "Διακοπή από το σήμα %d..."
+
+#: ../whois.c:520
+msgid ""
+"Usage: whois [OPTION]... OBJECT...\n"
+"\n"
+"-a search all databases\n"
+"-F fast raw output (implies -r)\n"
+"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+"-h HOST connect to server HOST\n"
+"-H hide legal disclaimers\n"
+"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
+"-x exact match [RPSL only]\n"
+"-l one level less specific lookup [RPSL only]\n"
+"-L find all Less specific matches\n"
+"-M find all More specific matches\n"
+"-m find first level more specific matches\n"
+"-r turn off recursive lookups\n"
+"-p PORT connect to PORT\n"
+"-R force to show local copy of the domain object even\n"
+" if it contains referral\n"
+"-S tell server to leave out syntactic sugar\n"
+"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
+"-T TYPE[,TYPE]... only look for objects of TYPE\n"
+"-t TYPE request template for object of TYPE ('all' for a "
+"list)\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources] query specified server info [RPSL only]\n"
+"-d return DNS reverse delegation objects too [RPSL "
+"only]\n"
+"-K only primary keys are returned [RPSL only\n"
+"-V --verbose explain what is being done\n"
+" --help display this help and exit\n"
+" --version output version information and exit\n"
+msgstr ""
+"Uso: whois [ΕΠΙΛΟΓΈΣ]... ΑΝΤΙΚΕΊΜΕΝΟ...\n"
+"\n"
+"-a αναζήτηση σε όλες τις βάσεις δεδομένων\n"
+"-F γρήγορη ακατέργαστη έξοδος (υπονοεί -r)\n"
+"-g ΠΗΓΉ:ΠΡΏΤΟ:ΤΕΛΕΥΤΑΊΟ πρώτα αναβαθμίζει από την ΠΗΓΉ από το σειριακό "
+" ΠΡΏΤΟ ως ΤΕΛΕΥΤΑΊΟ\n"
+"-h ΣΎΣΤΗΜΑ σύνδεση στον εξυπηρετητή ΣΎΣΤΗΜΑ\n"
+"-H απόκρυψη του νομικού εγγράφου αποποίησης ευθύνης\n"
+"-i ΧΑΡΑΚ[,ΧΑΡΑΚ]... να γίνει μια αντίστροφη αναζήτηση για το καθορισμένα "
+" ΧΑΡΑΚτηριστικά\n"
+"-x ακριβές ταίριασμα [μόνο RPSL]\n"
+"-l ένα επίπεδο λιγότερο συγκεκριμένη αναζήτηση [μόνο "
+"RPSL]\n"
+"-L εύρεση όλων των Λιγότερο συγκεκριμένων ταιριασμάτων\n"
+"-M εύρεση όλων των Περισσότερο συγκεκριμένων "
+" ταιριασμάτων\n"
+"-m εύρεση όλων των πρώτου επιπέδου περισσότερο "
+" συγκεκριμένων ταιριασμάτων\n"
+"-r απενεργοποίηση των αναδρομικών αναζητήσεων\n"
+"-p ΘΎΡΑ σύνδεση στη ΘΎΡΑ\n"
+"-R επιβολή εμφάνισης τοπικού αντιγράφου του αντικειμένου "
+" επιθήματος ακόμα και αν περιέχει αναφορές\n"
+"-S πες στον εξυπηρετητή να αποφύγει τη συντακτική "
+" ζάχαρη\n"
+"-s ΠΗΓΉ[,ΠΗΓΉ]... αναζήτηση στη βάση από την ΠΗΓΉ\n"
+"-T ΕΊΔΟΣ[,ΕΊΔΟΣ]... αναζήτηση μόνο αντικειμένου του ΕΊΔΟΥΣ\n"
+"-t ΕΊΔΟΣ αναζητά ένα πρότυπο για το αντικείμενο του ΕΊΔΟΥΣ "
+" ('all' για για εμφάνιση λίστας)\n"
+"-v ΕΊΔΟΣ αναζητά περιφραστικό πρότυπο για το αντικείμενο του "
+" ΕΊΔΟΥΣ\n"
+"-d επιστροφή και των αντιστρόφων αντικειμένων DNS\n"
+" απόδοσης ευθύνης [μόνο RPSL]\n"
+"-K επιστροφή μόνο των πρωταρχικών κλειδιών [μόνο RPSL]\n"
+"-V --verbose εξήγηση του τί συμβαίνει\n"
+" --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
+" --version εμφάνιση της έκδοσης και έξοδος\n"
diff --git a/po/it.po b/po/it.po
index 9f95804..fbb8053 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,19 +5,30 @@
msgid ""
msgstr ""
"Project-Id-Version: whois 4.4.13\n"
-"POT-Creation-Date: 2000-05-03 01:25+0200\n"
-"PO-Revision-Date: 1999-10-26 12:19+02:00\n"
+"POT-Creation-Date: 2001-02-24 11:41+0100\n"
+"PO-Revision-Date: 2001-02-24 11:43+01:00\n"
"Last-Translator: Marco d'Itri <md@linux.it>\n"
"Language-Team: Italian <it@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../whois.c:108
+#: ../whois.c:99
+#, c-format
+msgid ""
+"Version %s.\n"
+"\n"
+"Report bugs to %s.\n"
+msgstr ""
+"Versione %s.\n"
+"\n"
+"Segnalare i bug a %s.\n"
+
+#: ../whois.c:136
msgid "Connecting to whois.internic.net."
msgstr "Mi sto connettendo a whois.internic.net."
-#: ../whois.c:114
+#: ../whois.c:142
#, c-format
msgid ""
"\n"
@@ -28,27 +39,26 @@ msgstr ""
"Trovato un riferimento di InterNIC a %s.\n"
"\n"
-#: ../whois.c:122
+#: ../whois.c:152
#, c-format
msgid "Using default server %s.\n"
msgstr "Uso il server predefinito %s.\n"
-#: ../whois.c:124
-msgid ""
-"This domain has no whois server, but you can access the whois database at"
+#: ../whois.c:155
+msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
-"Questo dominio non ha un server whois, ma si puς accedere al database tramite"
+"Questo TLD non ha un server whois, ma si puς accedere al database tramite"
-#: ../whois.c:132
-msgid "This domain has no whois server."
-msgstr "Per questo dominio non esiste un server whois."
+#: ../whois.c:161
+msgid "This TLD has no whois server."
+msgstr "Per questo TLD non esiste un server whois."
-#: ../whois.c:135
+#: ../whois.c:165
#, c-format
msgid "Using server %s.\n"
msgstr "Uso il server %s.\n"
-#: ../whois.c:140
+#: ../whois.c:174
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -57,7 +67,7 @@ msgstr ""
"Richiesta: \"%s\"\n"
"\n"
-#: ../whois.c:188
+#: ../whois.c:234
msgid ""
"I don't know where this IP has been delegated.\n"
"I'll try ARIN and hope for the best..."
@@ -65,28 +75,28 @@ msgstr ""
"Non so a chi θ stato delegato questo IP.\n"
"Proverς con ARIN sperando per il meglio..."
-#: ../whois.c:206
+#: ../whois.c:251
msgid "I guess it's a netblock name but I don't know where to look it up."
msgstr "Credo che sia il nome di un netblock ma non so dove cercarlo."
-#: ../whois.c:213
+#: ../whois.c:258
msgid "I guess it's a domain but I don't know where to look it up."
msgstr "Credo che sia un dominio ma non so dove cercarlo."
-#: ../whois.c:223
+#: ../whois.c:268
msgid "Unknown AS number. Please upgrade this program."
msgstr "Numero dell'AS sconosciuto. Per favore aggiorna il programma."
-#: ../whois.c:253
+#: ../whois.c:298
msgid "Warning: RIPE flags ignored for a traditional server."
msgstr "Attenzione: i flag RIPE sono ignorati dai server tradizionali."
-#: ../whois.c:317
+#: ../whois.c:362
#, c-format
msgid "Detected referral to %s on %s.\n"
msgstr "Trovato un riferimento a %s su %s.\n"
-#: ../whois.c:333
+#: ../whois.c:379
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -94,23 +104,22 @@ msgstr ""
"Errore catastrofico: il testo di avvertenze θ cambiato.\n"
"Aggiorna questo programma.\n"
-#: ../whois.c:405
+#: ../whois.c:450
#, c-format
msgid "Host %s not found."
msgstr "Host %s non trovato."
-#: ../whois.c:415
+#: ../whois.c:460
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: servizio sconosciuto"
-#: ../whois.c:432
+#: ../whois.c:477
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Interrotto dal segnale %d..."
-#: ../whois.c:475
-#, c-format
+#: ../whois.c:520
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
@@ -120,6 +129,8 @@ msgid ""
"-h HOST connect to server HOST\n"
"-H hide legal disclaimers\n"
"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
+"-x exact match [RPSL only]\n"
+"-l one level less specific lookup [RPSL only]\n"
"-L find all Less specific matches\n"
"-M find all More specific matches\n"
"-m find first level more specific matches\n"
@@ -130,35 +141,46 @@ msgid ""
"-S tell server to leave out syntactic sugar\n"
"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
-"-t TYPE requests template for object of TYPE ('all' for a "
+"-t TYPE request template for object of TYPE ('all' for a "
"list)\n"
-"-v TYPE requests verbose template for object of TYPE\n"
-"-V explain what is being done\n"
-"\n"
-"Version %s. Please report bugs to %s.\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources] query specified server info [RPSL only]\n"
+"-d return DNS reverse delegation objects too [RPSL "
+"only]\n"
+"-K only primary keys are returned [RPSL only\n"
+"-V --verbose explain what is being done\n"
+" --help display this help and exit\n"
+" --version output version information and exit\n"
msgstr ""
"Uso: whois [OPZIONE]... OGGETTO...\n"
"\n"
-"-a cerca tutti i database\n"
-"-F output grezzo veloce (implica -r)\n"
-"-g SOURCE:FIRST-LAST trova gli aggiornamenti di SOURCE dal seriale F a L\n"
-"-h HOST si connette al server HOST\n"
-"-H nasconde le avvertenze legali\n"
-"-i ATTR[,ATTR]... fa una ricerca inversa per l'ATTRibuto specificato\n"
-"-L trova le corrispondenze meno specifiche\n"
-"-M trova le corrispondenze piω specifiche\n"
-"-m trova le corrispondenze di primo livello piω "
-"specifiche\n"
-"-r disabilita le ricerche ricorsive\n"
-"-p PORTA si connette alla PORTA\n"
-"-R mostra la copia locale dell'oggetto domain anche se\n"
-" contiene un riferimento\n"
-"-S dice al server di non usare lo zucchero sintattico\n"
+"-a cerca in tutti i database\n"
+"-F output grezzo veloce (implica -r)\n"
+"-g SOURCE:FIRST-LAST trova gli aggiornamenti di SOURCE dal seriale F a L\n"
+"-h HOST si connette al server HOST\n"
+"-H nasconde le avvertenze legali\n"
+"-i ATTR[,ATTR]... fa una ricerca inversa per l'ATTRibuto specificato\n"
+"-x trova le corrispondenze esatte [solo RPSL]\n"
+"-l trova le corrispondenze un livello meno specifiche "
+"[RPSL]\n"
+"-L trova le corrispondenze meno specifiche\n"
+"-M trova le corrispondenze piω specifiche\n"
+"-m trova le corrispondenze di primo livello piω specifiche\n"
+"-r disabilita le ricerche ricorsive\n"
+"-p PORTA si connette alla PORTA\n"
+"-R mostra la copia locale dell'oggetto domain anche se\n"
+" contiene un riferimento\n"
+"-S dice al server di non usare zucchero sintattico\n"
"-s SOURCE[,SOURCE]... cerca il database da SOURCE\n"
-"-T TIPO[,TIPO]... cerca solo oggetti del TIPO\n"
-"-t TIPO chiede il template per un oggetto del TIPO ('all' per una "
+"-T TIPO[,TIPO]... cerca solo oggetti del TIPO\n"
+"-t TIPO chiede il template per un oggetto del TIPO ('all' per una "
"lista)\n"
-"-v TIPO chiede il template prolisso per un oggetto del TIPO\n"
-"-V spiega cosa sta facendo\n"
-"\n"
+"-v TIPO chiede il template prolisso per un oggetto del TIPO\n"
+"-q [version|sources] chiede al server le informazioni indicate [solo RPSL]\n"
+"-d restituisce anche gli oggetti per la delega inversa del DNS "
+"[RPSL]\n"
+"-K restituisce solo le chiavi primarie [solo RPSL]\n"
+"-V --verbose spiega cosa sta facendo\n"
+" --help mostra questo aiuto ed esce\n"
+" --version stampa le informazioni sulla versione ed esce\n"
"Versione %s. Segnala i bug a %s.\n"
diff --git a/po/no.po b/po/no.po
index 0b7ac35..f946a51 100644
--- a/po/no.po
+++ b/po/no.po
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: whois 4.4.5\n"
-"POT-Creation-Date: 2000-05-03 01:25+0200\n"
+"POT-Creation-Date: 2001-02-24 11:41+0100\n"
"PO-Revision-Date: 1999-12-18 14:00:00\n"
"Last-Translator: Egil Kvaleberg <egil@kvaleberg.no>\n"
"Language-Team: Norwegian <no@li.org>\n"
@@ -14,11 +14,19 @@ msgstr ""
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../whois.c:108
+#: ../whois.c:99
+#, c-format
+msgid ""
+"Version %s.\n"
+"\n"
+"Report bugs to %s.\n"
+msgstr ""
+
+#: ../whois.c:136
msgid "Connecting to whois.internic.net."
msgstr "Kobler opp mot whois.internic.net."
-#: ../whois.c:114
+#: ../whois.c:142
#, c-format
msgid ""
"\n"
@@ -29,26 +37,25 @@ msgstr ""
"Fant InterNIC-referanse til %s.\n"
"\n"
-#: ../whois.c:122
+#: ../whois.c:152
#, c-format
msgid "Using default server %s.\n"
msgstr "Bruker standardtjener %s.\n"
-#: ../whois.c:124
-msgid ""
-"This domain has no whois server, but you can access the whois database at"
+#: ../whois.c:155
+msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
-#: ../whois.c:132
-msgid "This domain has no whois server."
+#: ../whois.c:161
+msgid "This TLD has no whois server."
msgstr ""
-#: ../whois.c:135
+#: ../whois.c:165
#, c-format
msgid "Using server %s.\n"
msgstr "Bruker tjener %s.\n"
-#: ../whois.c:140
+#: ../whois.c:174
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -57,7 +64,7 @@ msgstr ""
"Forespψrsel: \"%s\"\n"
"\n"
-#: ../whois.c:188
+#: ../whois.c:234
msgid ""
"I don't know where this IP has been delegated.\n"
"I'll try ARIN and hope for the best..."
@@ -65,28 +72,28 @@ msgstr ""
"Vet ikke hvor denne IP-adressen har blitt delegert.\n"
"Prψver ARIN og hεper det beste..."
-#: ../whois.c:206
+#: ../whois.c:251
msgid "I guess it's a netblock name but I don't know where to look it up."
msgstr "Gjetter at det er et netblock-navn, men vet ikke hvor det finnes."
-#: ../whois.c:213
+#: ../whois.c:258
msgid "I guess it's a domain but I don't know where to look it up."
msgstr "Gjetter at det er er domene, men vet ikke hvor det finnes."
-#: ../whois.c:223
+#: ../whois.c:268
msgid "Unknown AS number. Please upgrade this program."
msgstr "Ukjent AS-nummer. Vennligst oppdater programmet."
-#: ../whois.c:253
+#: ../whois.c:298
msgid "Warning: RIPE flags ignored for a traditional server."
msgstr "Merk: RIPE-flaggene ignoreres for en tradisjonell tjener."
-#: ../whois.c:317
+#: ../whois.c:362
#, c-format
msgid "Detected referral to %s on %s.\n"
msgstr "Referanse til %s vedrψrende %s.\n"
-#: ../whois.c:333
+#: ../whois.c:379
#, fuzzy
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
@@ -95,23 +102,23 @@ msgstr ""
"Alvorlig feil: INTERNIC har endret standardtekst.\n"
"Vennligst oppdater programmet.\n"
-#: ../whois.c:405
+#: ../whois.c:450
#, c-format
msgid "Host %s not found."
msgstr "Finner ikke verten %s."
-#: ../whois.c:415
+#: ../whois.c:460
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: ukjent port"
-#: ../whois.c:432
+#: ../whois.c:477
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Avbrudt av signal %d..."
-#: ../whois.c:475
-#, c-format
+#: ../whois.c:520
+#, fuzzy
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
@@ -119,7 +126,10 @@ msgid ""
"-F fast raw output (implies -r)\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
"-h HOST connect to server HOST\n"
+"-H hide legal disclaimers\n"
"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
+"-x exact match [RPSL only]\n"
+"-l one level less specific lookup [RPSL only]\n"
"-L find all Less specific matches\n"
"-M find all More specific matches\n"
"-m find first level more specific matches\n"
@@ -130,12 +140,16 @@ msgid ""
"-S tell server to leave out syntactic sugar\n"
"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
-"-t TYPE requests template for object of TYPE ('all' for a "
+"-t TYPE request template for object of TYPE ('all' for a "
"list)\n"
-"-v TYPE requests verbose template for object of TYPE\n"
-"-V explain what is being done\n"
-"\n"
-"Version %s. Please report bugs to %s.\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources] query specified server info [RPSL only]\n"
+"-d return DNS reverse delegation objects too [RPSL "
+"only]\n"
+"-K only primary keys are returned [RPSL only\n"
+"-V --verbose explain what is being done\n"
+" --help display this help and exit\n"
+" --version output version information and exit\n"
msgstr ""
"Bruk: whois [OPSJONER]... OBJEKTER...\n"
"\n"
diff --git a/po/pl.po b/po/pl.po
new file mode 100644
index 0000000..b12a50c
--- /dev/null
+++ b/po/pl.po
@@ -0,0 +1,173 @@
+# cokolwi3k. whois.pot.
+# Micha³ 'CeFeK' Nazarewicz
+#
+# BUG: xxx
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: whois 4.4.5\n"
+"POT-Creation-Date: 2001-02-24 11:41+0100\n"
+"PO-Revision-Date: 1999-12-18 14:00:00\n"
+"Last-Translator: Micha³ 'CeFeK' Nazarewicz <cefek@career.pl>\n"
+"Language-Team: Polish <pl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../whois.c:99
+#, c-format
+msgid ""
+"Version %s.\n"
+"\n"
+"Report bugs to %s.\n"
+msgstr ""
+
+#: ../whois.c:136
+msgid "Connecting to whois.internic.net."
+msgstr "£±czenie z hostem whois.internic.net."
+
+#: ../whois.c:142
+#, c-format
+msgid ""
+"\n"
+"Found InterNIC referral to %s.\n"
+"\n"
+msgstr ""
+"\n"
+"Znaleziono odniesienie z InterNIC do %s.\n"
+"\n"
+
+#: ../whois.c:152
+#, c-format
+msgid "Using default server %s.\n"
+msgstr "Uzywam domy¶lnego serwera %s.\n"
+
+#: ../whois.c:155
+msgid "This TLD has no whois server, but you can access the whois database at"
+msgstr ""
+
+#: ../whois.c:161
+#, fuzzy
+msgid "This TLD has no whois server."
+msgstr "Nie ma serwera whois dla tej domeny."
+
+#: ../whois.c:165
+#, c-format
+msgid "Using server %s.\n"
+msgstr "UΏywam serwera %s.\n"
+
+#: ../whois.c:174
+#, c-format
+msgid ""
+"Query string: \"%s\"\n"
+"\n"
+msgstr ""
+"Zapytanie: \"%s\"\n"
+"\n"
+
+#: ../whois.c:234
+msgid ""
+"I don't know where this IP has been delegated.\n"
+"I'll try ARIN and hope for the best..."
+msgstr ""
+"Nie moΏna ustaliζ, do kogo ten adres IP zosta³ oddelegowany.\n"
+"Sprσbujκ ARIN i mam nadziejκ, Ώe siκ uda..."
+
+#: ../whois.c:251
+msgid "I guess it's a netblock name but I don't know where to look it up."
+msgstr "To nazwa bloku sieciowego, ale nie wiem, pod jak± nazw± szukaζ."
+
+#: ../whois.c:258
+msgid "I guess it's a domain but I don't know where to look it up."
+msgstr "To nazwa domeny, ale nie wiem, gdzie jej szukaζ."
+
+#: ../whois.c:268
+msgid "Unknown AS number. Please upgrade this program."
+msgstr "Nieznany numer AS. Zainstaluj nowsz± wersjκ programu."
+
+#: ../whois.c:298
+msgid "Warning: RIPE flags ignored for a traditional server."
+msgstr "Uwaga: flagi RIPE s± ignorowane dla starszych serwerσw."
+
+#: ../whois.c:362
+#, c-format
+msgid "Detected referral to %s on %s.\n"
+msgstr "Wykryto odniesienie do %s na %s.\n"
+
+#: ../whois.c:379
+msgid ""
+"Catastrophic error: disclaimer text has been changed.\n"
+"Please upgrade this program.\n"
+msgstr ""
+"Katastrofa! Tekst disclaimera zosta³ zmieniony.\n"
+"¦ci±gnij nowsz± wersjκ programu.\n"
+
+#: ../whois.c:450
+#, c-format
+msgid "Host %s not found."
+msgstr "Serwer %s nie zosta³ znaleziony."
+
+#: ../whois.c:460
+#, c-format
+msgid "%s/tcp: unknown service"
+msgstr "%s/tcp: us³uga nieznana"
+
+#: ../whois.c:477
+#, c-format
+msgid "Interrupted by signal %d..."
+msgstr "Przerwanie na sygna³ %d..."
+
+#: ../whois.c:520
+#, fuzzy
+msgid ""
+"Usage: whois [OPTION]... OBJECT...\n"
+"\n"
+"-a search all databases\n"
+"-F fast raw output (implies -r)\n"
+"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+"-h HOST connect to server HOST\n"
+"-H hide legal disclaimers\n"
+"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
+"-x exact match [RPSL only]\n"
+"-l one level less specific lookup [RPSL only]\n"
+"-L find all Less specific matches\n"
+"-M find all More specific matches\n"
+"-m find first level more specific matches\n"
+"-r turn off recursive lookups\n"
+"-p PORT connect to PORT\n"
+"-R force to show local copy of the domain object even\n"
+" if it contains referral\n"
+"-S tell server to leave out syntactic sugar\n"
+"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
+"-T TYPE[,TYPE]... only look for objects of TYPE\n"
+"-t TYPE request template for object of TYPE ('all' for a "
+"list)\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources] query specified server info [RPSL only]\n"
+"-d return DNS reverse delegation objects too [RPSL "
+"only]\n"
+"-K only primary keys are returned [RPSL only\n"
+"-V --verbose explain what is being done\n"
+" --help display this help and exit\n"
+" --version output version information and exit\n"
+msgstr ""
+"UΏycie: whois [OPCJA]... OBIEKT...\n"
+"\n"
+"-a przeszukuje wszystkie bazy danych\n"
+"-F szybki wydruk raw (wymusza uΏycie -r)\n"
+"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+"-h HOST ³±czy z serwerem HOST\n"
+"-i ATTR[,ATTR]... wykonuje odwrotne szukanie ATTRybutσw\n"
+"-r wy³±cza przeszukiwanie rekursywne\n"
+"-p PORT ³±czy z portem PORT\n"
+"-R force to show local copy of the domain object even\n"
+" if it contains referral\n"
+"-S tell server to leave out syntactic sugar\n"
+"-s SOURCE[,SOURCE]... przeszukuje baze danych ze ¬RΣD£A\n"
+"-T TYPE[,TYPE]... szuka tylko obiektσw TYPE\n"
+"-t TYPE requests template for object of TYPE ('all' for "
+"a\t\t\tlist)\n"
+"-v TYPE requests verbose template for object of TYPE\n"
+"-V wyja¶nia, co siκ dzieje\n"
+"\n"
+"Wersja %s. Informacje o b³κdach kieruj do %s. T³umaczenie: cefek.\n"
diff --git a/tld_serv_list b/tld_serv_list
index 7b238c0..aa74bac 100644
--- a/tld_serv_list
+++ b/tld_serv_list
@@ -1,18 +1,26 @@
# NIC? means I have not been able to find the registry
# NIC-FR means the TLD is managed by AFNIC, but I could not find any info
# UPR means the TLD is managed by UPR, but I could not find any info
-######## means I haven't checked yet this TLD
#
-.gb.com whois.nomination.net
-.gb.net whois.nomination.net
-.uk.com whois.nomination.net
-.uk.net whois.nomination.net
-.se.com whois.centralnic.com
-.se.net whois.centralnic.com
-#.com whois.networksolutions.com
-#.net whois.networksolutions.com
-#.org whois.networksolutions.com
-#.edu whois.networksolutions.com
+# centralnic domains are currently not supported
+# http://www.iana.org/root-whois/xx.htm
+.br.com whois.centralnic.net
+.cn.com whois.centralnic.net
+.eu.com whois.centralnic.net
+.gb.com whois.centralnic.net
+.gb.net whois.centralnic.net
+.hu.com whois.centralnic.net
+.no.com whois.centralnic.net
+.qc.com whois.centralnic.net
+.sa.com whois.centralnic.net
+.se.com whois.centralnic.net
+.se.net whois.centralnic.net
+.uk.com whois.centralnic.net
+.uk.net whois.centralnic.net
+.us.com whois.centralnic.net
+.uy.com whois.centralnic.net
+.za.com whois.centralnic.net
+.eu.org whois.eu.org
.gov whois.nic.gov
.int whois.isi.edu
.mil whois.nic.mil
@@ -25,40 +33,39 @@
.al NONE # http://www.inima.al/Domains.html
.am whois.amnic.net # down?
.am WEB http://www.amnic.net/cgi/engine/db/whois.html
-#.an # NIC?
-#.ao NONE # NIC? diee.fe.uan.ao
+.an NONE # http://www.una.net/an_domreg
+.ao NONE # www.dns.ao
.aq NONE # 2day.com
.ar WEB http://www.nic.ar/consultas/consdom.htm
.as whois.nic.as
-.at whois.ripe.net
+.at whois.aco.net
.net.au whois.connect.com.au
.au whois.aunic.net
#.aw # NIC? www.setarnet.aw
-#.az NONE # NIC? http://www.az/ www.domain.az
+.az NONE # www.nic.az
.ba NONE # http://www.utic.net.ba
.bb WEB http://domains.org.bb/regsearch/
-#.bd
-.be whois.ripe.net
+.bd NONE # NIC? dns.org.bd
+.be whois.dns.be
.bf NONE # http://www.onatel.bf/domaine.htm
.bg whois.ripe.net
-#.bh NONE # NIC? http://www.batelco.com.bh
+#.bh NONE # NIC? http://www.inet.com.bh
.bi WEB http://www.nic.cd/database/bi/
#.bj # NIC? www.opt.bj
-#.bm rwhois.ibl.bm:4321
-.bm NONE # http://www.bermudanic.bm
-#.bn NONE # NIC? http://jtb.brunet.bn/brunet/brunet.htm
+.bm NONE # http://www.bermudanic.bm rwhois.ibl.bm:4321
+#.bn NONE # NIC? http://www.brunet.bn
.bo WEB http://www.nic.bo/listadom.phtml
.br whois.nic.br
-#.bs # NIC? (UPR)
+.bs NONE # www.nic.bs
.bt whois.nic.tm
.bv NONE # http://www.uninett.no/navn/bv-sj.html
-#.bw # NIC? www.botsnet.bw
-#.by NONE # NIC? http://unibel.by www.open.by
+#.bw # NIC? www.botsnet.bw btc.bw
+.by WEB http://www.tld.by/indexeng.html
.bz NONE # http://www.psg.com/dns/bz/
-.ca whois.cdnnet.ca
+.ca whois.cira.ca
.cc whois.nic.cc
.cd WEB http://www.nic.cd/database/cd/
-#.cf NONE # NIC? http://www.socatel.intnet.cf
+.cf WEB http://www.nic.cf/whois.php3
.cg WEB http://www.nic.cd/database/cg/
.ch whois.nic.ch
.ci NONE # www.nic.ci
@@ -66,37 +73,38 @@
.cl whois.nic.cl
.cm NONE # http://info.intelcam.cm
.ac.cn whois.cnc.ac.cn
+.edu.cn whois.edu.cn
.cn whois.cnnic.net.cn
.uk.co whois.uk.co
.co WEB http://daimon.uniandes.edu.co:8890/dominio/plsql/PConsulta.ConsultarDominio
.cr WEB http://www.nic.cr/consulta-dns.html
.cu WEB http://www.nic.cu/consultas/consult.html
-#.cv # NIC?
+#.cv # NIC? dns.cv?
.cx whois.nic.cx
-.cy whois.ripe.net
-.cz whois.ripe.net
-.de whois.ripe.net
-#.dj NONE # NIC? http://www.intnet.dj
+.cy NONE
+.cz whois.nic.cz
+.de whois.denic.de
+.dj NONE # www.nic.dj (NOT YET)
.dk whois.dk-hostmaster.dk
#.dm # NIC? (UPR)
.do WEB http://www.nic.do
.dz NONE
.ec WEB http://www.nic.ec
-.ee NONE # http://www.eenet.ee/services/subdomains.html
+.ee WEB http://www.eenet.ee/info/index.html
#.eg NONE # NIC? http://www.frcu.eun.eg
#.eh
-#.er NONE # do they have internet there?
+#.er NONE # NIC? www.noc.net.er (recently connected!)
.es WEB http://www.nic.es/whois/
-#.et NONE # NIC? http://www.telecom.net.et
+#.et NONE # NIC? www.telecom.net.et
.fi WEB http://cgi.thk.fi/cgi-bin/domains.pl?language=eng
.fj whois.usp.ac.fj
.fk NONE # http://www.fidc.org.fk/domain-registration/home.htm
.fm WEB http://www.nic.fm/register.html
-.fo whois.ripe.net
+.fo whois.ripe.net # www.nic.fo
.fr whois.nic.fr
-#.ga ######### www.inet.ga #broken
+#.ga # (not responding) NIC? www.inet.ga
.gb NONE
-#.gd # NIC? (UPR)
+#.gd # NO NIC (UPR)
.ge WEB http://www.nic.net.ge
.gf whois.nplus.gf
.gg NONE # http://www.isles.net
@@ -105,47 +113,47 @@
.gl whois.ripe.net
.gm whois.ripe.net
.gn NONE # http://www.psg.com/dns/gn/
-#.gp ######### http://www.nic.gp broken like mq
-#.gq # NIC? http://www.getesa.gq
-.gr whois.ripe.net # http://www.hostmaster.gr
+#.gp # http://www.nic.gp broken like mq
+#.gq # NO NIC http://www.intnet.gq
+.gr WEB http://www.hostmaster.gr/cgi-bin/webwhois
.gs whois.adamsnames.tc
-#.gt ######### http://www.gt/cir/cir.htm # NIC? - broken URL
+.gt WEB http://www.gt/whois.htm
.gu WEB http://gadao.gov.gu/Scripts/wwsquery/wwsquery.dll?hois=guamquery
#.gw # no NIC?
#.gy # NIC? (UPR)
.hk whois.hknic.net.hk
.hm whois.nic.hm
.hn NONE # www.nic.hn
-.hr WEB http://www.CARNet.hr/DNS/
+.hr WEB http://noc.srce.hr/web-eng/searchdomain.htm
#.ht # NIC? http://www.haitiworld.com/
.hu whois.nic.hu
-.id whois.idnic.net.id # broken - WEB tukang.access.net.id/domain
-.ie WEB http://www.domainregistry.ie/search/whois.html
-.ie whois.ripe.net
-.il whois.ripe.net
+.id whois.idnic.net.id
+.ie whois.domainregistry.ie
+.il whois.isoc.org.il
.im WEB http://www.nic.im/exist.html
.in whois.ncst.ernet.in
.io WEB http://www.io.io/whois.html
#.iq # NIC?
.ir WEB http://aria.nic.ir/forms/whois.html
-.is whois.ripe.net
+.is whois.isnet.is
.it whois.nic.it
.je NONE # http://www.isles.net
-#.jm # NIC? uwimona.edu.jm ns.jm
+#.jm # NIC? uwimona.edu.jm http://nic.jm
.jo NONE # www.nic.gov.jo
.jp whois.nic.ad.jp
+# there is a server run by Randy bush, but I forgot the address!
.ke NONE # http://www.nbnet.co.ke/domain.htm
.kg whois.domain.kg
-#.kh # NIC? http://www.camnet.com.kh
-#.ki # NIC?
-#.km # NIC?
-#.kn # NIC? (UPR)
+.kh NONE # http://www.mptc.gov.kh/Reculation/DNS.htm
+#.ki # NIC? www.tsk.net.ki
+.km NONE # NO NIC
+#.kn # NO NIC (UPR)
#.kp
.kr whois.krnic.net
.kw WEB http://www.domainname.net.kw
.ky NONE # http://www.nic.ky
.kz whois.domain.kz
-#.la # no IP connectivity
+.la whois.nic.la
.lb WEB http://www.aub.edu.lb/lbdr/search.html
.lc NONE # http://www.isisworld.lc/domains/
.li whois.nic.li
@@ -156,7 +164,7 @@
.lu whois.restena.lu
.lv whois.ripe.net
.ly WEB http://www.lydomains.com/whois.asp
-#.ma ######### NIC? www.nic.ma
+#.ma # (not reponding) NIC? www.nic.ma
.mc whois.ripe.net
.md WEB http://www.nic.md/search.html
.mg NONE # www.nic.mg
@@ -167,7 +175,7 @@
.mn WEB http://www.nic.mn
.mo NONE # http://www.umac.mo/other/
.mp NONE # http://www.marketplace.mp
-#.mq ######## http://www.nic.mq # broken
+#.mq # http://www.nic.mq broken like gp
.mr NONE # http://www.univ-nkc.mr/nic_mr.html
.ms whois.adamsnames.tc
.mt WEB http://www.um.edu.mt/nic/dir/
@@ -176,7 +184,7 @@
.mw WEB http://www.tarsus.net/whois/
.mx whois.nic.mx
.my NONE # http://www.mynic.net
-#.mz # NIC? dzowo.uem.mz
+#.mz # NIC? www.uem.mz
.na WEB http://www.lisse.na/cgi-bin/whois.cgi
.nc NONE # http://www.orstom.nc/BASE/IRD_NOUMEA/TLD_NC/
#.ne # NIC? http://www.intnet.ne
@@ -186,17 +194,17 @@
.nl whois.domain-registry.nl
.no whois.norid.no
.np WEB http://202.52.255.47/search.htm # www.mos.com.np
-#.nr ######### NIC? cenpac.net.nr
+#.nr # NIC? www.nauru01.nr wwc.nauru01.nr
.nu whois.nic.nu
-.nz tardis.patho.gen.nz
+.nz whois.domainz.net.nz
#.om NONE # NIC? http://www.gto.net.om
.pa WEB http://www.nic.pa
.pe whois.rcp.net.pe
-#.pf # NIC? nic.pf
+#.pf # NIC? mana.pf
.pg NONE # http://www.unitech.ac.pg/Unitech_General/ITS/ITS_Dns.htm
.ph WEB http://www.names.ph/search.html
.pk whois.pknic.net.pk
-.pl whois.ripe.net
+.pl NONE # http://www.dns.pl
#.pm # NIC-FR! http://www.nic.pm
.pn NONE # http://www.nic.pn
.pr NONE # http://www.uprr.pr/main.html
@@ -204,14 +212,14 @@
.pt WEB http://www.dns.pt/dnsinfo.htm
.pw whois.nic.pw
.py WEB http://www.nic.py/consultas/
-#.qa # NIC? http://www.qatar.net.qa
+.qa NONE # http://www.qatar.net.qa/services/virtual.htm
#.re # NIC-FR!
-.ro whois.ripe.net
+.ro whois.rotld.ro
.ru whois.ripn.net
.rw WEB http://www.nic.cd/database/rw/
.sa WEB http://www.saudinic.net.sa/domain/whois.htm
.sb WEB http://www.sbnic.net.sb/search.html
-#.sc NONE # NIC? http://www.sc/
+.sc NONE # http://www.seychelles.net/services/services-pay.htm
#.sd # NIC? http://www.sudatel.sd
.se whois.nic-se.se
.sg whois.nic.net.sg
@@ -223,11 +231,11 @@
.sm whois.ripe.net
.sn NONE # www.nic.sn
.so NONE # www.nic.so
-#.sr # NIC? sr.net
+.sr NONE # http://www.sr.net/srnew/domein.html
.st whois.nic.st
.su whois.ripn.net
.sv WEB http://www.conacyt.gob.sv/dns/
-#.sy # NIC? syriatel.net
+#.sy # NIC? (usually offline?)
.sz NONE # http://www.iafrica.sz/domreg/
.tc whois.adamsnames.tc
#.td # NIC? http://www.tit.td
@@ -247,26 +255,26 @@
.tz NONE # http://www.psg.com/dns/tz/
.ua WEB http://nic.ua.net/botik.cgi
.ug NONE # http://www.nic.ug
+.gov.uk whois.ja.net
.ac.uk whois.ja.net
.uk whois.nic.uk
.um whois.isi.edu # not checked
.fed.us whois.nic.gov
.us whois.isi.edu
.uy WEB http://www.rau.edu.uy/rau/dom/reg.htm
-#.uz # NIC? http://www.freenet.uz
+#.uz # www.noc.uz (broken)
.va whois.ripe.net
-#.vc # NIC?
-#.ve rwhois.reacciun.ve:4321
-.ve WEB http://www.nic.ve/nicwho01.html
+#.vc # NIC? (UPR)
+.ve WEB http://www.nic.ve/nicwho01.html # rwhois.reacciun.ve:4321
.vg whois.adamsnames.tc
-#.vi # NIC? http://www.usvi.net/cobex/
+.vi WEB http://208.30.96.227/whoisform.htm
#.vn http://www.batin.com.vn/ # NIC?
-.vu WEB http://www.vunic.vu/whois?
+.vu WEB http://www.vunic.vu/whois
#.wf # NIC-FR!
.ws whois.samoanic.ws
#.ye # NIC? www.y.net.ye
#.yt # NIC-FR!
-.yu NONE # whois.nic.yu
+.yu NONE # www.nic.yu
.za whois.frd.ac.za
.zm NONE # http://www.zamnet.zm/siteindex/Links/JoinZamnet.htm
.zr NONE # obsoleted by cd
@@ -281,11 +289,17 @@
-gandi whois.gandi.net
-ap whois.apnic.net
-au whois.aunic.net
+-cn whois.cnnic.net.cn
+-dk whois.dk-hostmaster.dk
-ti whois.telstra.net
+-is whois.isnet.is
-6bone whois.6bone.net
-norid whois.norid.no
-ripn whois.ripn.net
-sgnic whois.nic.net.sg
-metu whois.metu.edu.tr
-cknic whois.nic.ck
+-cz whois.nic.cz
-kg whois.domain.kg
+-norid whois.norid.no
+-rotld whois.rotld.ro
diff --git a/whois.1 b/whois.1
index 51f9d9c..7424da8 100644
--- a/whois.1
+++ b/whois.1
@@ -5,7 +5,7 @@ whois \- client for the whois directory service
.B whois
[\~\fB-h\fP\~\fIHOST\fP\~]
[\~\fB-p\fP\~ \fIPORT\fP\~]
-[\~\fB-aCFLMmrRSV\fP\~]
+[\~\fB-aCFHlLMmrRSVx\fP\~]
[\~\fB-g\fP\~\fISOURCE:FIRST-LAST\fP\~]
[\~\fB-i\fP\~\fIATTR\fP\~]
[\~\fB-S\fP\~\fISOURCE\fP\~]
@@ -15,8 +15,10 @@ whois \- client for the whois directory service
.B whois
[\~\fI-t\fP\~]
[\~\fI-v\fP\~]
-[\~\fI-i\fP\~]
.I template
+.B whois
+[\~\fI-q\fP\~]
+.I keyword
.PP
.SH DESCRIPTION
\fBwhois\fP searches for an object in a \fIRFC-812\fP database.
@@ -38,26 +40,20 @@ Do not display the legal disclaimers some registries like to show you.
.TP 8
.B \-p PORT
Connect to PORT.
-.\" .TP 8
-.\" .B \-C
-.\" First query \fIwhois.internic.net\fP to find the registrar for a GTLD subdomain.
-.\" This option overrides \fB-h\fP.
.TP 8
.B \-V
Be verbose.
.TP 8
Other options are flags understood by RIPE-like servers.
.SH NOTES
-.\" The default server for gTLDs is \fIwhois.networksolutions.com\fP.
-.\" Unless the \fB-C\fP option is used the CRSNIC shared whois server is
-.\" \fBnot\fP queried and domains registered by other registrars will be
-.\" reported as unknown.
-.\" .P
Please remember that \fIwhois.networksolutions.com\fP by default will
only search in the domains database. If you want to search for hostnames,
NIC handles or people names you have to prepend the appropriate keyword
(\fIHO\fPst, \fIHA\fPndle or \fINA\fPme).
.P
+If the \fI!\fP character is prepended to a NIC handle, the default
+server becomes \fIwhois.networksolutions.com\fP.
+.P
When querying \fIwhois.arin.net\fP for AS numbers, the program will
automatically convert the request in the appropriate format, inserting
a space after the string "AS".
@@ -76,8 +72,11 @@ When querying \fIwhois.nic.ad.jp\fP english text is requested unless the
This server will be queried if the program cannot guess where the object
is located. If the variable does not exist then
\fIwhois.internic.net\fP will be queried.
+.IP "WHOIS_HIDE"
+If this variable is defined, legal disclaimers will be hidden even if
+the \fI-H\fP flag is not used.
.SH "SEE ALSO"
-\fIRFC 812:\fP NICNAME/WHOIS
+\fIRFC 812\fP: NICNAME/WHOIS
.PP
\fIRIPE-157\fP, \fIRIPE-189\fP: RIPE NCC Database Documentation
.PP
diff --git a/whois.c b/whois.c
index 7d2346c..bd35242 100644
--- a/whois.c
+++ b/whois.c
@@ -9,6 +9,10 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
+#include "config.h"
+#ifdef HAVE_GETOPT_LONG
+#include <getopt.h>
+#endif
#include <unistd.h>
#include <string.h>
#include <ctype.h>
@@ -20,18 +24,36 @@
#include <signal.h>
/* Application-specific */
-#include "config.h"
#include "data.h"
#include "whois.h"
/* Global variables */
-int sockfd, verb = 0, hide_discl = 2;
+int sockfd, verb = 0;
+
+#ifdef ALWAYS_HIDE_DISCL
+int hide_discl = 0;
+#else
+int hide_discl = 2;
+#endif
+
+#ifdef HAVE_GETOPT_LONG
+static struct option longopts[] = {
+ {"help", no_argument, NULL, 0 },
+ {"version", no_argument, NULL, 1 },
+ {"verbose", no_argument, NULL, 'V'},
+ {"server", required_argument, NULL, 'h'},
+ {"host", required_argument, NULL, 'h'},
+ {NULL, 0, NULL, 0 }
+};
+#endif
int main(int argc, char *argv[])
{
- int ch, nopar = 0, optC = 0;
+ int ch, nopar = 0;
const char *server = NULL, *port = NULL;
- char *p, *q, *qstring = NULL, fstring[64] = "\0";
+ char *p, *q, *qstring, fstring[64] = "\0";
+ extern char *optarg;
+ extern int optind;
#ifdef ENABLE_NLS
setlocale(LC_MESSAGES, "");
@@ -39,7 +61,8 @@ int main(int argc, char *argv[])
textdomain(NLS_CAT_NAME);
#endif
- while ((ch = getopt(argc, argv, "acCFg:h:Hi:LmMp:rRs:St:T:v:V")) > 0) {
+ while ((ch = GETOPT_LONGISH(argc, argv, "acFg:h:Hi:lLmMp:q:rRs:St:T:v:Vx",
+ longopts, 0)) > 0) {
/* RIPE flags */
if (strchr(ripeflags, ch)) {
for (p = fstring; *p != '\0'; p++);
@@ -49,7 +72,7 @@ int main(int argc, char *argv[])
if (strchr(ripeflagsp, ch)) {
for (p = fstring; *p != '\0'; p++);
sprintf(p--, "-%c %s ", ch, optarg);
- if (ch == 't' || ch == 'v')
+ if (ch == 't' || ch == 'v' || ch == 'q')
nopar = 1;
continue;
}
@@ -68,12 +91,17 @@ int main(int argc, char *argv[])
case 'p':
port = optarg;
break;
- case 'C':
- optC = 1;
- break;
case 'V':
verb = 1;
break;
+ case 1:
+#ifdef VERSION
+ fprintf(stderr, _("Version %s.\n\nReport bugs to %s.\n"),
+ VERSION, "<md+whois@linux.it>");
+#else
+ fprintf(stderr, "%s %s\n", inetutils_package, inetutils_version);
+#endif
+ exit(0);
default:
usage();
}
@@ -84,15 +112,16 @@ int main(int argc, char *argv[])
if (argc == 0 && !nopar) /* there is no parameter */
usage();
+ /* On some systems realloc only works on non-NULL buffers */
+ qstring = malloc(1);
+ *qstring = '\0';
+
/* parse other parameters, if any */
- if (nopar) {
- qstring = malloc(1);
- *qstring = '\0';
- } else {
+ if (!nopar) {
int qslen = 0;
while (1) {
- qslen += strlen(*argv) + 1;
+ qslen += strlen(*argv) + 1 + 1;
qstring = realloc(qstring, qslen);
strcat(qstring, *argv++);
if (argc == 1)
@@ -102,11 +131,7 @@ int main(int argc, char *argv[])
}
}
- if (!server &&
-#ifndef FIRST_ASK_INTERNIC
- optC &&
-#endif
- domfind(qstring, gtlds)) {
+ if (!server && domfind(qstring, gtlds)) {
if (verb)
puts(_("Connecting to whois.internic.net."));
sockfd = openconn("whois.internic.net", NULL);
@@ -118,30 +143,35 @@ int main(int argc, char *argv[])
}
if (!server) {
- if (!(server = whichwhois(qstring))) {
- if (!(server = getenv("WHOIS_SERVER")))
- server = DEFAULTSERVER;
- if (verb)
- printf(_("Using default server %s.\n"), server);
- } else if (server[0] == '\001') {
- puts(_("This domain has no whois server, but you can access the "
- "whois database at"));
- puts(server + 1);
- exit(0);
- } else if (server[0] == '\002') {
- puts(server + 1);
- exit(0);
- } else if (server[0] == '\003') {
- puts(_("This domain has no whois server."));
- exit(0);
- } else if (verb)
- printf(_("Using server %s.\n"), server);
+ server = whichwhois(qstring);
+ switch (server[0]) {
+ case 0:
+ if (!(server = getenv("WHOIS_SERVER")))
+ server = DEFAULTSERVER;
+ if (verb)
+ printf(_("Using default server %s.\n"), server);
+ break;
+ case 1:
+ puts(_("This TLD has no whois server, but you can access the "
+ "whois database at"));
+ case 2:
+ puts(server + 1);
+ exit(0);
+ case 3:
+ puts(_("This TLD has no whois server."));
+ exit(0);
+ default:
+ if (verb)
+ printf(_("Using server %s.\n"), server);
+ }
}
+ if (getenv("WHOIS_HIDE"))
+ hide_discl = 0;
+
p = queryformat(server, fstring, qstring);
- if (verb) {
+ if (verb)
printf(_("Query string: \"%s\"\n\n"), p);
- }
strcat(p, "\r\n");
signal(SIGTERM, sighandler);
@@ -171,10 +201,14 @@ const char *whichwhois(const char *s)
return "whois.arin.net";
if (strncasecmp(s, "2001:6", 6) == 0)
return "whois.ripe.net";
- //if (strncasecmp(s, "3ffe", 4) == 0)
+ /* if (strncasecmp(s, "3ffe", 4) == 0) */
return "whois.6bone.net";
}
+ /* email address */
+ if (strchr(s, '@'))
+ return "";
+
/* no dot and no hyphen means it's a NSI NIC handle or ASN (?) */
if (!strpbrk(s, ".-")) {
const char *p;
@@ -185,8 +219,10 @@ const char *whichwhois(const char *s)
return whereas(atoi(s + 2), as_assign);
else if (strncasecmp(p - 2, "jp", 2) == 0) /* JP NIC handle */
return "whois.nic.ad.jp";
+ if (*p == '!') /* NSI NIC handle */
+ return "whois.networksolutions.com";
else /* it's a NSI NIC handle or something we don't know about */
- return NULL;
+ return "";
}
/* smells like an IP? */
@@ -221,7 +257,7 @@ const char *whichwhois(const char *s)
if (verb)
puts(_("I guess it's a domain but I don't know where to look it"
" up."));
- return NULL;
+ return "";
}
const char *whereas(int asn, struct as_del aslist[])
@@ -241,7 +277,7 @@ char *queryformat(const char *server, const char *flags, const char *query)
char *buf;
int i, isripe = 0;
- /* +10 for CORE; +2 for \r\n; +1 for NULL*/
+ /* +10 for CORE; +2 for \r\n; +1 for NULL */
buf = malloc(strlen(flags) + strlen(query) + 10 + 2 + 1);
*buf = '\0';
for (i = 0; ripe_servers[i]; i++)
@@ -272,7 +308,7 @@ char *queryformat(const char *server, const char *flags, const char *query)
else if (!isripe && strcmp(server, "whois.corenic.net") == 0)
sprintf(buf, "--machine %s", query); /* machine readable output */
else if (!isripe && strcmp(server, "whois.ncst.ernet.in") == 0 &&
- !strchr(query, ' '))
+ !strchr(query, ' '))
sprintf(buf, "domain %s", query); /* ask for a domain */
else if (!isripe && strcmp(server, "whois.nic.ad.jp") == 0) {
char *lang = getenv("LANG"); /* not a perfect check, but... */
@@ -287,19 +323,18 @@ char *queryformat(const char *server, const char *flags, const char *query)
void do_query(const int sock, const char *query)
{
- char buf[200];
+ char buf[200], *p;
FILE *fi;
-#ifdef HIDE_DISCL
int i = 0, hide = hide_discl;
-#endif
fi = fdopen(sock, "r");
if (write(sock, query, strlen(query)) < 0)
err_sys("write");
+/* It has been reported this call breaks the client in some situations. Why?
if (shutdown(sock, 1) < 0)
err_sys("shutdown");
+*/
while (fgets(buf, 200, fi)) { /* XXX errors? */
-#ifdef HIDE_DISCL
if (hide == 1) {
if (strncmp(buf, hide_strings[i+1], strlen(hide_strings[i+1]))==0)
hide = 2; /* stop hiding */
@@ -315,7 +350,6 @@ void do_query(const int sock, const char *query)
if (hide == 1)
continue; /* hide the first line */
}
-#endif
#ifdef EXT_6BONE
/* % referto: whois -h whois.arin.net -p 43 as 1 */
if (strncmp(buf, "% referto:", 10) == 0) {
@@ -334,16 +368,16 @@ void do_query(const int sock, const char *query)
}
}
#endif
- fputs(buf, stdout);
+ for (p = buf; *p && *p != '\r' && *p != '\n'; p++);
+ *p = '\0';
+ fprintf(stdout, "%s\n", buf);
}
if (ferror(fi))
err_sys("fgets");
-#ifdef HIDE_DISCL
if (hide == 1)
err_quit(_("Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"));
-#endif
}
const char *query_crsnic(const int sock, const char *query)
@@ -382,8 +416,9 @@ const char *query_crsnic(const int sock, const char *query)
int openconn(const char *server, const char *port)
{
- int s, fd;
+ int fd;
#ifdef HAVE_GETADDRINFO
+ int i;
struct addrinfo hints, *res, *ressave;
#else
struct hostent *hostinfo;
@@ -396,9 +431,8 @@ int openconn(const char *server, const char *port)
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
- if ((s = getaddrinfo(server, port ? port : "whois", &hints, &res)) != 0)
- err_quit("getaddrinfo: %s", gai_strerror(s));
-
+ if ((i = getaddrinfo(server, port ? port : "whois", &hints, &res)) != 0)
+ err_quit("getaddrinfo: %s", gai_strerror(i));
for (ressave = res; res; res = res->ai_next) {
if ((fd = socket(res->ai_family, res->ai_socktype, res->ai_protocol))<0)
continue; /* ignore */
@@ -406,10 +440,10 @@ int openconn(const char *server, const char *port)
break; /* success */
close(fd);
}
+ freeaddrinfo(ressave);
if (!res)
err_sys("connect");
- freeaddrinfo(ressave);
#else
if ((hostinfo = gethostbyname(server)) == NULL)
err_quit(_("Host %s not found."), server);
@@ -489,6 +523,8 @@ void usage(void)
"-h HOST connect to server HOST\n"
"-H hide legal disclaimers\n"
"-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
+"-x exact match [RPSL only]\n"
+"-l one level less specific lookup [RPSL only]\n"
"-L find all Less specific matches\n"
"-M find all More specific matches\n"
"-m find first level more specific matches\n"
@@ -499,12 +535,16 @@ void usage(void)
"-S tell server to leave out syntactic sugar\n"
"-s SOURCE[,SOURCE]... search the database from SOURCE\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
-"-t TYPE requests template for object of TYPE ('all' for a list)\n"
-"-v TYPE requests verbose template for object of TYPE\n"
-"-V explain what is being done\n\n"
-"Version %s. Please report bugs to %s.\n"
- ), VERSION, "<md+whois@linux.it>");
- exit(1);
+"-t TYPE request template for object of TYPE ('all' for a list)\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources] query specified server info [RPSL only]\n"
+"-d return DNS reverse delegation objects too [RPSL only]\n"
+"-K only primary keys are returned [RPSL only\n"
+"-V --verbose explain what is being done\n"
+" --help display this help and exit\n"
+" --version output version information and exit\n"
+));
+ exit(0);
}
diff --git a/whois.h b/whois.h
index 79d469a..cec7111 100644
--- a/whois.h
+++ b/whois.h
@@ -2,23 +2,25 @@
#define REFERTO_FORMAT "%% referto: whois -h %255s -p %15s %1021[^\n\r]"
/* String sent to RIPE servers - ONLY FIVE CHARACTERS! */
-#define IDSTRING "Md4.4"
+/* Do *NOT* change it if you don't know what you are doing! */
+#define IDSTRING "Md4.5"
/* system features */
-#ifdef linux
-# define ENABLE_NLS
-# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
-# define HAVE_GETADDRINFO
-# endif
-#endif
-
#ifdef ENABLE_NLS
-# define NLS_CAT_NAME "whois"
+# ifndef NLS_CAT_NAME
+# define NLS_CAT_NAME "whois"
+# endif
# ifndef LOCALEDIR
# define LOCALEDIR "/usr/share/locale"
# endif
#endif
+#ifdef HAVE_GETOPT_LONG
+# define GETOPT_LONGISH(c, v, o, l, i) getopt_long(c, v, o, l, i)
+#else
+# define GETOPT_LONGISH(c, v, o, l, i) getopt(c, v, o)
+#endif
+
/* NLS stuff */
#ifdef ENABLE_NLS
@@ -55,6 +57,6 @@ void err_sys(const char *,...);
/* flags for RIPE-like servers */
-const char *ripeflags="acFLmMrRS";
-const char *ripeflagsp="gisTtv";
+const char *ripeflags="acFlLmMrRSx";
+const char *ripeflagsp="gisTtvq";
diff --git a/whois.spec b/whois.spec
new file mode 100644
index 0000000..4060427
--- /dev/null
+++ b/whois.spec
@@ -0,0 +1,44 @@
+Summary: Enhanced WHOIS client
+Name: whois
+Version: 4.5.3
+Release: 1
+License: GPL
+Vendor: Marco d'Itri <md@linux.it>
+Group: Applications/Internet
+Source: http://www.linux.it/~md/software/whois_%{version}.tar.gz
+BuildRoot: /var/tmp/%{name}-root
+Prefix: /usr
+
+%description
+This is a new whois (RFC 954) client rewritten from scratch by me.
+It is derived from and compatible with the usual BSD and RIPE whois(1)
+programs.
+It is intelligent and can automatically select the appropriate whois
+server for most queries.
+
+%prep
+%setup
+
+%build
+make OPTS="$RPM_OPT_FLAGS"
+
+%install
+rm -rf ${RPM_BUILD_ROOT}
+mkdir -p ${RPM_BUILD_ROOT}/usr/bin
+mkdir -p ${RPM_BUILD_ROOT}/usr/man/man1
+make install BASEDIR=${RPM_BUILD_ROOT} prefix=%{prefix}/
+gzip ${RPM_BUILD_ROOT}%{prefix}/man/man?/*
+
+find $RPM_BUILD_ROOT ! -type d | sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-filelist
+
+%clean
+rm -rf ${RPM_BUILD_ROOT}
+
+%files -f %{name}-filelist
+%defattr(-,root,root)
+%doc [A-Z][A-Z]*
+
+%changelog
+* Fri Feb 23 2001 Oren Tirosh <oren@hishome.net>
+- Initial spec based on skelgnu.spec
+