summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore2
-rw-r--r--Makefile68
-rw-r--r--as32_del_list6
-rw-r--r--as_del_list41
-rw-r--r--config.h45
-rw-r--r--data.h100
-rw-r--r--debian/changelog344
-rw-r--r--debian/compat2
-rw-r--r--debian/control5
-rwxr-xr-xdebian/rules55
-rw-r--r--debian/source/options1
-rw-r--r--debian/whois.docs1
-rw-r--r--debian/whois.manpages2
-rw-r--r--ip6_del_list4
-rw-r--r--ip_del_list13
-rw-r--r--ip_del_recovered.h489
-rwxr-xr-xmake_as32_del.pl10
-rwxr-xr-xmake_as_del.pl20
-rwxr-xr-xmake_ip6_del.pl9
-rwxr-xr-xmake_ip_del.pl10
-rwxr-xr-xmake_ip_del_recovered.pl34
-rwxr-xr-xmake_new_gtlds.pl16
-rwxr-xr-xmake_nic_handles.pl17
-rwxr-xr-xmake_servers_charset.pl6
-rwxr-xr-xmake_tld_serv.pl7
-rwxr-xr-xmake_version_h.pl12
-rw-r--r--mkpasswd.15
-rw-r--r--mkpasswd.c232
-rw-r--r--new_gtlds_list1240
-rw-r--r--nic_handles_list24
-rw-r--r--po/Makefile4
-rw-r--r--po/cs.po202
-rw-r--r--po/da.po198
-rw-r--r--po/de.po217
-rw-r--r--po/el.po250
-rw-r--r--po/es.po283
-rw-r--r--po/eu.po241
-rw-r--r--po/fi.po269
-rw-r--r--po/fr.po219
-rw-r--r--po/it.po194
-rw-r--r--po/ja.po222
-rw-r--r--po/nb.po200
-rw-r--r--po/pl.po294
-rw-r--r--po/pt_BR.po240
-rw-r--r--po/ru.po211
-rw-r--r--po/zh_CN.po203
-rw-r--r--servers_charset_list14
-rw-r--r--tld_serv_list315
-rw-r--r--utils.c7
-rw-r--r--utils.h11
-rw-r--r--whois.131
-rw-r--r--whois.c525
-rw-r--r--whois.h21
53 files changed, 5131 insertions, 2060 deletions
diff --git a/.gitignore b/.gitignore
index f990909..f0f26c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
*_del.h
+new_gtlds.h
+nic_handles.h
tld_serv.h
servers_charset.h
version.h
diff --git a/Makefile b/Makefile
index 8c33c61..da93d4c 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,14 @@
prefix = /usr
+ifdef DESTDIR
+BASEDIR := $(DESTDIR)
+endif
+
CFLAGS ?= -g -O2
-PERL = perl
-INSTALL = install
+PKG_CONFIG ?= pkg-config
+PERL ?= perl
+INSTALL ?= install
whois_OBJECTS := whois.o utils.o
mkpasswd_OBJECTS := mkpasswd.o utils.o
@@ -15,7 +20,7 @@ mkpasswd_OBJECTS := mkpasswd.o utils.o
# FreeBSD
#whois_LDADD += -liconv
#LIBS += -L/usr/local/lib -lintl
-#INCLUDES += -I/usr/local/include
+#DEFS += -I/usr/local/include
# OS/2 EMX
#whois_LDADD += -lsocket
@@ -32,9 +37,17 @@ ifdef LOCALEDIR
DEFS += -DLOCALEDIR=\"$(BASEDIR)$(prefix)/share/locale\"
endif
+# libidn support has been autodetected since 5.2.18
ifdef HAVE_LIBIDN
-whois_LDADD += -lidn
-DEFS += -DHAVE_LIBIDN
+$(error Please fix your build system to stop defining HAVE_LIBIDN!)
+endif
+
+ifeq ($(shell $(PKG_CONFIG) --exists 'libidn2 >= 2.0.3' || echo NO),)
+whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn2)
+DEFS += -DHAVE_LIBIDN2 $(shell $(PKG_CONFIG) --cflags libidn2)
+else ifeq ($(shell $(PKG_CONFIG) --exists 'libidn' || echo NO),)
+whois_LDADD += $(shell $(PKG_CONFIG) --libs libidn)
+DEFS += -DHAVE_LIBIDN $(shell $(PKG_CONFIG) --cflags libidn)
endif
ifdef HAVE_ICONV
@@ -42,14 +55,17 @@ whois_OBJECTS += simple_recode.o
DEFS += -DHAVE_ICONV
endif
-ifdef HAVE_XCRYPT
+ifeq ($(shell $(PKG_CONFIG) --exists 'libxcrypt >= 4.1' || echo NO),)
+DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT $(shell $(PKG_CONFIG) --cflags libcrypt)
+mkpasswd_LDADD += $(shell $(PKG_CONFIG) --libs libcrypt)
+else ifdef HAVE_XCRYPT
+DEFS += -DHAVE_XCRYPT_H -DHAVE_LINUX_CRYPT_GENSALT
mkpasswd_LDADD += -lxcrypt
-DEFS += -DHAVE_XCRYPT -DHAVE_LINUX_CRYPT_GENSALT
+else ifdef HAVE_LIBOWCRYPT
+# owl and openSUSE have crypt_gensalt(3) in libowcrypt
+DEFS += -DHAVE_CRYPT_H -DHAVE_LINUX_CRYPT_GENSALT -D_OW_SOURCE
+mkpasswd_LDADD += -lcrypt -lowcrypt
else
-ifdef HAVE_LINUX_CRYPT_GENSALT
-# owl and openSUSE have crypt_gensalt(3) in the libc's libcrypt
-DEFS += -DHAVE_LINUX_CRYPT_GENSALT
-endif
mkpasswd_LDADD += -lcrypt
endif
@@ -70,25 +86,39 @@ mkpasswd: $(mkpasswd_OBJECTS)
##############################################################################
version.h: debian/changelog make_version_h.pl
- $(PERL) -w make_version_h.pl $< > $@
+ $(PERL) make_version_h.pl $< > $@
as_del.h: as_del_list make_as_del.pl
- $(PERL) -w make_as_del.pl < $< > $@
+ $(PERL) make_as_del.pl < $< > $@
as32_del.h: as32_del_list make_as32_del.pl
- $(PERL) -w make_as32_del.pl < $< > $@
+ $(PERL) make_as32_del.pl < $< > $@
ip_del.h: ip_del_list make_ip_del.pl
- $(PERL) -w make_ip_del.pl < $< > $@
+ $(PERL) make_ip_del.pl < $< > $@
ip6_del.h: ip6_del_list make_ip6_del.pl
- $(PERL) -w make_ip6_del.pl < $< > $@
+ $(PERL) make_ip6_del.pl < $< > $@
+
+new_gtlds.h: new_gtlds_list make_new_gtlds.pl
+ $(PERL) make_new_gtlds.pl < $< > $@
+
+nic_handles.h: nic_handles_list make_nic_handles.pl
+ $(PERL) make_nic_handles.pl < $< > $@
tld_serv.h: tld_serv_list make_tld_serv.pl
- $(PERL) -w make_tld_serv.pl < $< > $@
+ $(PERL) make_tld_serv.pl < $< > $@
servers_charset.h: servers_charset_list make_servers_charset.pl
- $(PERL) -w make_servers_charset.pl < $< > $@
+ $(PERL) make_servers_charset.pl < $< > $@
+
+##############################################################################
+afl:
+ -rm -f Makefile.depend
+ DEFS=-DAFL_MODE=1 AFL_HARDEN=1 $(MAKE) whois CC=afl-gcc HAVE_ICONV=1
+
+afl-run:
+ nice afl-fuzz -i ../afl_in -o ../afl_out -- ./whois
##############################################################################
install: install-whois install-mkpasswd install-pos
@@ -115,7 +145,7 @@ distclean: clean
clean:
rm -f Makefile.depend as_del.h as32_del.h ip_del.h ip6_del.h \
- tld_serv.h servers_charset.h *.o whois mkpasswd
+ new_gtlds.h tld_serv.h servers_charset.h *.o whois mkpasswd
rm -f po/*.mo
pos:
diff --git a/as32_del_list b/as32_del_list
index 7ae2d11..ab99059 100644
--- a/as32_del_list
+++ b/as32_del_list
@@ -2,6 +2,12 @@
# actually I listed here also the unallocated space reserved for each RIR
+131077 131086 whois.nic.ad.jp
+131092 131101 whois.nic.or.kr
+131152 131161 whois.nic.ad.jp
+131791 131890 whois.nic.or.kr
+131893 131992 whois.nic.ad.jp
+
2.0 2.65535 apnic
3.0 3.65535 ripe
4.0 4.65535 lacnic
diff --git a/as_del_list b/as_del_list
index 4ec8538..96a3756 100644
--- a/as_del_list
+++ b/as_del_list
@@ -29,26 +29,27 @@
9840 9871 whois.nic.or.kr
9943 9982 whois.nic.or.kr
9990 10021 whois.nic.ad.jp
-9216 10067 apnic
10034 10073 whois.nic.or.kr
10154 10198 whois.nic.or.kr
-10074 10239 apnic
+9216 10239 apnic
12288 13311 ripe
15360 16383 ripe
17503 17534 whois.nic.ad.jp
17567 17616 whois.nic.or.kr
17673 17704 whois.nic.ad.jp
-17832 17880 whois.nic.or.kr
-17408 18431 apnic
+17832 17881 whois.nic.or.kr
17930 17961 whois.nic.ad.jp
18067 18098 whois.nic.ad.jp
18121 18152 whois.nic.ad.jp
18259 18290 whois.nic.ad.jp
-18259 18290 whois.nic.ad.jp
+18294 18343 whois.nic.or.kr
+17408 18431 apnic
20480 21503 ripe
-23552 24575 apnic
23552 23601 whois.nic.or.kr
23612 23643 whois.nic.ad.jp
+23773 23836 whois.nic.ad.jp
+24248 24297 whois.nic.ad.jp
+23552 24575 apnic
24576 25599 ripe
26592 26623 lacnic
27648 28671 lacnic
@@ -58,23 +59,39 @@
34515 34519 afrinic
33792 35839 ripe
36864 37887 afrinic
+37888 37927 whois.nic.ad.jp
+38086 38135 whois.nic.or.kr
+38387 38436 whois.nic.or.kr
+38627 38656 whois.nic.ad.jp
+38660 38709 whois.nic.or.kr
37888 38911 apnic
38912 39935 ripe
40960 45055 ripe
+45360 45409 whois.nic.or.kr
+45672 45691 whois.nic.ad.jp
+45963 46012 whois.nic.or.kr
45056 46079 apnic
47104 52223 ripe
52224 53247 lacnic
+55372 55396 whois.nic.ad.jp
+55584 55633 whois.nic.or.kr
+55888 55912 whois.nic.ad.jp
55296 56319 apnic
56320 58367 ripe
+58645 58654 whois.nic.ad.jp
+58784 58793 whois.nic.ad.jp
+59091 59130 whois.nic.ad.jp
58368 59391 apnic
59392 61439 ripe
61440 61951 lacnic
61952 62463 ripe
-63488 63999 apnic
-
-# private ASN block
-64512 65534 ripe
-
+63488 64098 apnic
+64099 64197 lacnic
# catch all: everything else comes from ARIN
-1 63487 arin
+1 64296 arin
+64297 64395 apnic
+64396 64495 ripe
+
+# documentation and private ASN block
+64496 65534 ripe
diff --git a/config.h b/config.h
index 4492e4b..d26ffb5 100644
--- a/config.h
+++ b/config.h
@@ -13,7 +13,11 @@
/* autoconf in cpp macros */
-#ifdef linux
+#if defined __NetBSD__ || __OpenBSD__
+# include <sys/param.h>
+#endif
+
+#ifdef __GLIBC__
# define ENABLE_NLS
#endif
@@ -36,6 +40,7 @@
#if defined __APPLE__ && defined __MACH__
# define HAVE_GETOPT_LONG
# define HAVE_GETADDRINFO
+# define HAVE_BSDICRYPT
#endif
#if defined __GLIBC__
@@ -48,25 +53,33 @@
# endif
#endif
+#if defined OpenBSD && OpenBSD < 201405
+# define HAVE_BCRYPT_OBSOLETE
+#elif defined OpenBSD || defined __FreeBSD__ || (defined __SVR4 && defined __sun) || defined _OW_SOURCE
+# define HAVE_BCRYPT
+#endif
+
+#if defined OpenBSD || defined __FreeBSD__ || defined __NetBSD__
+# define HAVE_BSDICRYPT
+#endif
+
/* Unknown versions of Solaris */
#if defined __SVR4 && defined __sun
# define HAVE_SHA_CRYPT
+# define HAVE_CRYPT_H
# define HAVE_SOLARIS_CRYPT_GENSALT
+# define CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX
#endif
/* FIXME: which systems lack this? */
#define HAVE_GETTIMEOFDAY
-/* FIXME: disabled because it does not parse addresses with a netmask length.
- * The code using it needs to be either fixed or removed.
-#define HAVE_INET_PTON
-*/
/*
* Please send patches to correctly ignore old releases which lack a RNG
* and add more systems which have one.
*/
#ifdef RANDOM_DEVICE
-#elif defined __GLIBC__ \
+#elif defined linux \
|| defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ \
/* AIX >= 5.2? */ \
|| defined _AIX52 \
@@ -81,6 +94,26 @@
# define RANDOM_DEVICE "/dev/urandom"
#endif
+/* use arc4random_buf instead if it is available */
+#if (defined __FreeBSD__ && __FreeBSD__ >= 9) || \
+ (defined __NetBSD__ && __NetBSD_Version__ >= 600000000) || \
+ (defined OpenBSD && OpenBSD >= 200805) || \
+ (defined __APPLE__ && defined __MACH__ && MAC_OS_X_VERSION_MIN_REQUIRED >= 1070)
+# define HAVE_ARC4RANDOM_BUF
+#endif
+
+/* or else getentropy(2) on Linux */
+#if defined __GLIBC__ && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 25
+# define HAVE_GETENTROPY
+#endif
+
+/* some versions of crypt(3) set errno on error */
+#if defined __GLIBC__ || (defined __SVR4 && defined __sun) || defined OpenBSD || AIX
+# define CRYPT_SETS_ERRNO 1
+#else
+# define CRYPT_SETS_ERRNO 0
+#endif
+
#ifdef ENABLE_NLS
# ifndef NLS_CAT_NAME
# define NLS_CAT_NAME "whois"
diff --git a/data.h b/data.h
index d25c6dc..b7f002e 100644
--- a/data.h
+++ b/data.h
@@ -1,8 +1,6 @@
/*
* RIPE-like servers.
* All of them do not understand -V2.0Md with the exception of RA and RIPN.
- * 6bone-derived servers will accept the flag with a warning (the flag must
- * match /^V [a-zA-Z]{1,4}\d+[\d\.]{0,5}$/).
*/
/* servers which accept the new syntax (-V XXn.n) */
@@ -11,43 +9,39 @@ const char *ripe_servers[] = {
"whois.apnic.net",
"whois.afrinic.net",
"rr.arin.net", /* does not accept the old syntax */
- "whois.6bone.net", /* 3.0.0b1 */
- "whois.connect.com.au", /* 3.0.0b1 */
"whois.nic.fr",
- "whois.telstra.net",
- "whois.restena.lu",
"rr.level3.net", /* 3.0.0a13 */
+ "rr.ntt.net",
+ "whois.tcinet.ru",
"whois.ripn.net",
"whois.arnes.si",
- "www.registry.co.ug",
"whois.nic.ir",
- "whois.nic.ck",
"whois.ra.net",
- "whois.bgpmon.net",
NULL
};
const char *hide_strings[] = {
- "NOTICE AND TERMS OF USE: You", "", /* NetSol */
- "TERMS OF USE: You are not", "", /* crsnic */
- "The data in Register", "", /* Register.Com */
- "The Data in the Tucows", "RECORD DOES NOT",
- "The information in this whois database", "", /* DOTSTER */
- "This whois service currently only", "top-level domains.", /* NameSecure */
- "The Data in Gabia", "you agree to abide",
- "The data contained in GoDaddy.com", "is not the registrant",
- "Disclaimer: The Global Name Registry", "for any commercial",
- "Access to America Online", "time. By accessing", /* AOL */
- "# Access and use restricted", "", /* GANDI */
- "% The data in the WHOIS database of 1&1 Internet", "",
- "The data in this whois database is", "", /* enom */
- "The Data in Moniker's WHOIS database", "of Moniker.",
- "The Data in OnlineNIC", " By starting this query",
- "Interdomain's WHOIS", "DOES NOT SIGNIFY",
- "The Data provided by Stargate Holdings", "(2) enable any",
- "; This data is provided by domaindiscount24.com", "",
- "%% NOTICE: Access to this information is provided", "%% By submitting", /* bookmyname.com */
- "% NOTICE: Access to the domains information", "% this query", /* CORE */
+ "The data in Networksolutions.com's WHOIS database", NULL,
+ /* Some registrars like .wang copied the first paragraph of this
+ * disclaimer, so the detection here needs to be split in two parts. */
+ "TERMS OF USE: You are not authorized", NULL, /* crsnic */
+ "The data in Register.com's WHOIS database", NULL,
+ "The Data in the Tucows Registrar WHOIS database", NULL,
+ "The data in NameSecure.com's WHOIS database", NULL,
+ "The Data in Gabia's WHOIS database", NULL,
+ "The data contained in GoDaddy.com", NULL,
+ "Personal data access and use are governed by French", NULL, /* GANDI */
+ "The data in this whois database is provided to you", NULL, /* enom */
+ "; Please register your domains at; http://www.", NULL, /* key-systems.net */
+ "%% NOTICE: Access to this information is provided", NULL, /* bookmyname.com */
+ "% NOTICE: Access to the domains information", NULL, /* CORE */
+ "The Data in MarkMonitor.com's", NULL, /* MarkMonitor */
+ "Corporation Service Company(c) (CSC) The Trusted Partner", "Register your domain name at", /* CSC */
+ "The data in Networksolutions.com's", NULL, /* Networksolutions */
+ "# Welcome to the OVH WHOIS Server", "", /* ovh */
+ "TERMS OF USE OF MELBOURNE IT WHOIS DATABASE", NULL,
+ "The data contained in this Registrar's Whois", NULL, /* wildwestdomains.com */
+ "The data in the FastDomain Inc. WHOIS database", NULL,
/* gTLDs */
"Access to .AERO WHOIS information", "",
@@ -55,21 +49,38 @@ const char *hide_strings[] = {
"The .coop registry WHOIS", "VERIFICATION, NOR DO",
"%% puntCAT Whois Server", "%% any time.",
"This Registry database contains ONLY .EDU", "type: help", /* edu */
- "Access to INFO WHOIS information is provided", "", /* Afilias */
+ "Access to AFILIAS WHOIS information is provided", NULL, /* .info */
"mTLD WHOIS LEGAL STATEMENT", "integrity of the database.", /* .mobi */
- "Access to .ORG WHOIS information", "",
- "Access to RegistryPro's Whois", "All rights", /* .pro */
- "Telnic, Ltd., the Registry Operator", "(b) harass any person;", /* .tel */
- "Tralliance, Inc., the Registry", "", /* .travel */
- "Access to .XXX ICM REGISTRY WHOIS", "", /* .xxx */
+ "Access to Public Interest Registry WHOIS information", NULL, /* .org */
+ "Access to .PRO REGISTRY WHOIS information", "",
+ "Telnic, Ltd., the Registry Operator for .TEL", NULL,
+ "Tralliance, Inc., the Registry Operator for .travel", NULL,
+ "Access to .XXX ICM REGISTRY WHOIS", NULL, /* .xxx */
+
+ /* new gTLDs */
+ "Terms of Use: Users accessing the Donuts WHOIS", NULL,
+ "Terms of Use: Users accessing the United TLD WHOIS", NULL,
+ "Access to WHOIS information is provided", NULL, /* Afilias */
+ "The WHOIS information provided on this page", NULL, /* uniregistry.net */
+ "The whois information provided on this site", "", /* mm-registry.com */
+ "; This data is provided by ", NULL, /* ksregistry.net */
+ "This whois service is provided by CentralNic Ltd", "",
+ ".Club Domains, LLC, the Registry Operator", NULL,
+ "% Except for agreed Internet operational purposes", NULL, /* .berlin */
+ "TERMS OF USE: The information in the Whois database", NULL, /* .wang */
+ "The WHOIS service offered by Neustar, Inc, on behalf", NULL,
+ "The WHOIS service offered by the Registry Operator", NULL, /* .science */
/* ccTLDs */
"Access to CCTLD WHOIS information is provided", "", /* Afilias */
- "Access to ASNIC", "by this policy.", /* as */
- "% The WHOIS service offered by DNS.be", "% protect the privacy", /* be */
+ "This WHOIS information is provided", NULL, /* as */
+ "% The WHOIS service offered by DNS Belgium", "", /* be */
+ "% (c) 2015 NIC Costa Rica", "", /* cr */
"% The WHOIS service offered by EURid", "% of the database", /* eu */
- "% WHOIS LEGAL STATEMENT AND TERMS & CONDITIONS", "", /* sx */
- "NeuStar, Inc., the Registry", "OF THE AVAILABILITY", /* us */
+ "Access to .IN WHOIS information", "", /* in */
+ "% WHOIS LEGAL STATEMENT AND TERMS & CONDITIONS", NULL, /* sx */
+ "; The data in the WHOIS database of KSregistry GmbH", "", /* vg */
+ "NeuStar, Inc., the Registry Administrator for .US", NULL,
NULL, NULL
};
@@ -97,6 +108,7 @@ struct ip_del {
};
const struct ip_del ip_assign[] = {
+#include "ip_del_recovered.h"
#include "ip_del.h"
{ 0, 0, NULL }
};
@@ -134,11 +146,21 @@ const struct as32_del as32_assign[] = {
{ 0, 0, NULL }
};
+const char *new_gtlds[] = {
+#include "new_gtlds.h"
+ NULL
+};
+
const char *tld_serv[] = {
#include "tld_serv.h"
NULL, NULL
};
+const char *nic_handles_post[] = {
+#include "nic_handles.h"
+ NULL, NULL
+};
+
#ifdef HAVE_ICONV
struct server_charset {
const char *name;
diff --git a/debian/changelog b/debian/changelog
index 47cdcba..912a899 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,347 @@
+whois (5.5.3) unstable; urgency=medium
+
+ * Added the new 2630:0000::/12 IPv6 assignment to ARIN.
+ * Updated the .xxx TLD server.
+ * Updated the list of new gTLDs.
+ * Converted the Debian packaging to dh.
+
+ -- Marco d'Itri <md@linux.it> Sun, 17 Nov 2019 21:33:50 +0100
+
+whois (5.5.2) unstable; urgency=medium
+
+ * Added the .xn--qxa6a (.ευ, European Union, Greek) TLD server.
+ * Updated the .td TLD server.
+ * Updated one or more translations.
+
+ -- Marco d'Itri <md@linux.it> Wed, 02 Oct 2019 23:44:49 +0200
+
+whois (5.5.1) unstable; urgency=medium
+
+ * Updated the .ge TLD server.
+ * Updated one or more translations.
+
+ -- Marco d'Itri <md@linux.it> Sun, 18 Aug 2019 19:47:55 +0200
+
+whois (5.5.0) unstable; urgency=medium
+
+ * Implemented the -I option to query whois.iana.org and use its referrals.
+ (Closes: #774603)
+ * Updated one or more translations. (Closes: #931336, #931244)
+ * Automatically generate the version string sent to servers because I
+ kept forgetting to update it with new releases.
+ * Updated the .zm TLD server.
+ * Added new recovered IPv4 allocations.
+
+ -- Marco d'Itri <md@linux.it> Fri, 19 Jul 2019 11:31:42 +0200
+
+whois (5.4.3) unstable; urgency=medium
+
+ * Added the new 2a10:0000::/12 IPv6 assignment to RIPE.
+
+ -- Marco d'Itri <md@linux.it> Wed, 12 Jun 2019 15:03:56 +0200
+
+whois (5.4.2) unstable; urgency=medium
+
+ * Added the .ss and .xn--mgbah1a3hjkrd (موريتانيا, Mauritania) TLD
+ servers.
+ * Updated the .in TLD and related IDN TLDs servers.
+ * Updated the .fm TLD server.
+
+ -- Marco d'Itri <md@linux.it> Thu, 28 Mar 2019 00:48:28 +0100
+
+whois (5.4.1) unstable; urgency=medium
+
+ * Added the .mw TLD server.
+ * Updated one or more translations.
+
+ -- Marco d'Itri <md@linux.it> Sun, 27 Jan 2019 04:48:53 +0100
+
+whois (5.4.0) unstable; urgency=medium
+
+ * Added support for the new libxcrypt 4.x.
+ This allows mkpasswd to support many modern password hash methods.
+ * Renamed the hash types (i.e. the arguments to -H) to use the naming
+ convention established by John the Ripper.
+ * Made mkpasswd use entropy gathered by crypt_gensalt(3), when available.
+ * Fixed many portability bugs in mkpasswd.
+ * Added the .gp TLD server.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Fri, 26 Oct 2018 18:32:49 +0200
+
+whois (5.3.2) unstable; urgency=medium
+
+ * Added the .ge TLD server.
+ * Updated the charset for whois.nic.cl. (Closes: #900047)
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Sun, 15 Jul 2018 12:38:42 +0200
+
+whois (5.3.1) unstable; urgency=medium
+
+ * mkpasswd: support passwords of arbitrary length. (Closes: #899254)
+ * Added the .ls TLD server. (Closes: #896452)
+ * Added support for -bzh and -uanic NIC handles.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Tue, 22 May 2018 15:32:28 +0200
+
+whois (5.3.0) unstable; urgency=medium
+
+ * Implemented querying for ip6.arpa domains.
+ * Updated the .pr TLD servers.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Sun, 21 Jan 2018 01:23:45 +0100
+
+whois (5.2.20) unstable; urgency=medium
+
+ * Added the .mr TLD server.
+ * Removed the .bs TLD server.
+ * Updated the .ai, .gh, .gr, .kw, .ls, .ph, .sb, .com.uy and .vn TLD
+ servers.
+
+ -- Marco d'Itri <md@linux.it> Wed, 27 Dec 2017 03:15:27 +0100
+
+whois (5.2.19) unstable; urgency=medium
+
+ * Switched do libidn2.
+ * Adopted getentropy(2) for mkpasswd on recent Linux.
+ * Updated the .id and .museum TLD servers.
+ * Removed the .dj TLD server.
+
+ -- Marco d'Itri <md@linux.it> Sun, 10 Dec 2017 17:16:58 +0100
+
+whois (5.2.18) unstable; urgency=medium
+
+ * Fixed an unitialised variable which used to break querying the
+ Verisign registry servers with parameters.
+ * Do not request domains only when querying the Verisign registry
+ servers for a hostname.
+ * Fixed the program return code for queries like
+ "nameserver name.example.com".
+
+ -- Marco d'Itri <md@linux.it> Tue, 22 Aug 2017 16:45:02 +0200
+
+whois (5.2.17) unstable; urgency=high
+
+ * Fixed whois referrals for .com, .net, .jobs, .bz, .cc and .tv, broken
+ by an ICANN-mandated output change:
+ https://www.icann.org/resources/pages/rdds-labeling-policy-2017-02-01-en
+ * Added the .xn--2scrj9c (ಭಾರತ, India), .xn--3hcrj9c (ଭାରତ, India),
+ .xn--45br5cyl (ভাৰত, India), .xn--h2breg3eve (भारतम्, India),
+ .xn--h2brj9c8c (भारोत, India), .xn--mgbbh1a (ﺏﺍﺮﺗ, India),
+ .xn--mgbgu82a (ڀﺍﺮﺗ, India) and .xn--rvc1e0am3e (ഭാരതം, India)
+ TLD servers.
+ * Updated the list of new gTLDs.
+ * whois.1: fixed a typo. (Closes: #866742)
+
+ -- Marco d'Itri <md@linux.it> Thu, 27 Jul 2017 17:08:47 +0200
+
+whois (5.2.16) unstable; urgency=medium
+
+ * Fixed parsing of 6to4 addresses broken in 5.2.15.
+ * Updated the .do TLD server.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Mon, 13 Mar 2017 01:40:38 +0100
+
+whois (5.2.15) unstable; urgency=medium
+
+ * Updated the .gf and .mq TLD servers.
+ * Updated the list of new gTLDs.
+ * Updated the charset for whois.nic.kz.
+ * Fixed multiple portability issues on non-Linux platforms.
+ * Fixed a lot of minor compiler warnings with no practical effects.
+ * Added support for libidn2, not enabled yet.
+
+ -- Marco d'Itri <md@linux.it> Mon, 27 Feb 2017 00:37:41 +0100
+
+whois (5.2.14) unstable; urgency=medium
+
+ * Updated the .ar, .bm and .fm TLD servers.
+ * Updated the Afilias hiding string to fix hiding for the new .bm server.
+
+ -- Marco d'Itri <md@linux.it> Thu, 29 Dec 2016 23:12:19 +0100
+
+whois (5.2.13) unstable; urgency=medium
+
+ * Use "domain" instead of "=" for default verisign-grs queries,
+ to ignore the name server names spam.
+ * Fixed make_ip_del_recovered.pl, which generated non-functioning data.
+ * Added the .xn--90ae (бг, Bulgaria) TLD server.
+ * Updated the .bd, .jobs and .mobi TLD servers.
+ * Added new ASN allocations.
+ * Added new recovered IPv4 allocations.
+ * Updated the crsnic.net hiding string to fix hiding for .bi.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Sun, 30 Oct 2016 17:08:07 +0100
+
+whois (5.2.12) unstable; urgency=medium
+
+ * Implemented support for fuzzing with the awesome american fuzzy lop.
+ * Added the .xn--e1a4c (ею, European Union) and .xn--mix891f (澳門,
+ Macao) TLD servers.
+ * Updated the .jobs, .kn and .pro TLD servers.
+ * Updated the .gi, .lc, .sc and .vc TLD servers, because the precedent
+ data caused the program to return an error status.
+ * Updated the list of new gTLDs.
+ * Fixed the code which queries whois.iana.org for TLDs to recognize IDN
+ TLDs too.
+
+ -- Marco d'Itri <md@linux.it> Tue, 29 Mar 2016 05:33:10 +0200
+
+whois (5.2.11) unstable; urgency=medium
+
+ * Fixed the --select-types and --sources long options.
+ * Updated the list of new gTLDs.
+ * Removed the .an TLD.
+ * Removed the .xn--l1acc (.МОН, Mongolia) TLD server.
+ * Added the .xn--mgbtx2b (عراق, Iraq) and .xn--qxam (.ΕΛ, Greece) TLD
+ servers.
+
+ -- Marco d'Itri <md@linux.it> Tue, 08 Dec 2015 07:43:48 +0100
+
+whois (5.2.10) unstable; urgency=medium
+
+ * Updated the list of new gTLDs.
+ * Updated the .ki and .vg TLD servers.
+
+ -- Marco d'Itri <md@linux.it> Thu, 30 Jul 2015 03:26:56 +0200
+
+whois (5.2.9) unstable; urgency=medium
+
+ * Updated the list of new gTLDs.
+ * Updated the .bn and .cr TLD servers.
+ * Updated IDSTRING to 5.2.
+
+ -- Marco d'Itri <md@linux.it> Mon, 08 Jun 2015 02:18:47 +0200
+
+whois (5.2.8) unstable; urgency=medium
+
+ * Updated the list of new gTLDs.
+ * Added new ASN allocations.
+ * Added the .xn--y9a3aq (.հայ, Armenia) TLD server.
+
+ -- Marco d'Itri <md@linux.it> Mon, 18 May 2015 00:37:32 +0200
+
+whois (5.2.7) unstable; urgency=medium
+
+ * Removed a bogus disclaimer detection string.
+ * Updated the list of new gTLDs
+
+ -- Marco d'Itri <md@linux.it> Wed, 25 Mar 2015 23:04:44 +0100
+
+whois (5.2.6) unstable; urgency=medium
+
+ * Added the .edu.ph TLD server.
+ * Removed the .gov.py TLD server. (Closes: #780562)
+ * Updated the list of new gTLDs.
+ * Implemented hiding multiple disclaimers blocks to improve detection.
+ * Updated the disclaimer detection strings.
+
+ -- Marco d'Itri <md@linux.it> Mon, 23 Mar 2015 04:28:39 +0100
+
+whois (5.2.5) unstable; urgency=medium
+
+ * Added the .xn--90ais (.бел, Belarus) TLD server.
+ * Updated the .ky TLD server.
+ * Updated the list of new gTLDs.
+ * Added new recovered IPv4 allocations.
+
+ -- Marco d'Itri <md@linux.it> Tue, 03 Mar 2015 02:15:57 +0100
+
+whois (5.2.4) unstable; urgency=medium
+
+ * Fixed referrals handling for the .cc, .tv a .jobs TLDs.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Sun, 25 Jan 2015 04:07:20 +0100
+
+whois (5.2.3) unstable; urgency=medium
+
+ * Added the .gw TLD server.
+ * Updated the .bm, .gr, .gt, .md, .np, .py, .tc, .tg, .vi, .net.za,
+ .org.za and .web.za TLD servers. (Closes: #773489)
+ * Removed the .cg TLD server.
+ * Updated the list of new gTLDs.
+ * mkpasswd: use arc4random_buf(3) where available.
+ * mkpasswd: support OpenBSD's new hash 2b.
+ * Updated some IPv4 allocations.
+ * Remove the new_gtlds.h generated file from the Debian source package.
+
+ -- Marco d'Itri <md@linux.it> Fri, 26 Dec 2014 20:12:24 +0100
+
+whois (5.2.2) unstable; urgency=medium
+
+ * Fixed the code that removes trailing dots. (Closes: #763834)
+ * Added the .xn--d1alf (.мкд, Macedonia) and .xn--node (.გე, Georgia)
+ TLD servers.
+ * Updated the list of new gTLDs.
+
+ -- Marco d'Itri <md@linux.it> Thu, 06 Nov 2014 03:47:43 +0100
+
+whois (5.2.1) unstable; urgency=medium
+
+ * Added the .aw and .zm TLD servers.
+ * Added the charset for whois.domain.kg.
+ * Updated the list of new gTLDs.
+ * Queries for bare TLDs will be directed to whois.iana.org.
+ (Closes: #763833)
+
+ -- Marco d'Itri <md@linux.it> Thu, 16 Oct 2014 02:01:20 +0200
+
+whois (5.2.0) unstable; urgency=medium
+
+ * Implemented support for the long RIPE flags.
+ * "Fixed" some harmless bugs discovered with a Coverity scan.
+ * Default to whois.ripe.net when using long flags.
+ * Updated the list of new gTLDs.
+ * Added a new ASN allocation.
+ * Added new recovered IPv4 allocations.
+ * Updated make_version_h.pl to support Debian binNMUs. (Closes: #761318)
+
+ -- Marco d'Itri <md@linux.it> Sat, 13 Sep 2014 05:05:16 +0200
+
+whois (5.1.5) unstable; urgency=medium
+
+ * Updated the list of new gTLDs.
+ * Added some disclaimer suppression strings for the new gTLDs' servers.
+ * Updated one or more translations. (Closes: #756231)
+
+ -- Marco d'Itri <md@linux.it> Sat, 02 Aug 2014 03:41:44 +0200
+
+whois (5.1.4) unstable; urgency=medium
+
+ * Added the charset for whois.lacnic.net.
+ * Updated the list of new gTLDs.
+ * Updated one or more translations.
+
+ -- Marco d'Itri <md@linux.it> Mon, 30 Jun 2014 04:22:21 +0200
+
+whois (5.1.3) unstable; urgency=medium
+
+ * Use the IANA recovered address space list.
+ * Updated the list of new gTLDs.
+ * Support hiding disclaimers until the end of the output.
+ * Fix a disclaimer hiding string. (Closes: #748363)
+
+ -- Marco d'Itri <md@linux.it> Mon, 26 May 2014 04:19:41 +0200
+
+whois (5.1.2) unstable; urgency=medium
+
+ * Always query whois.nic.$TLD for the "new" gTLDs, because the ICANN
+ contract requires that it works.
+ * Added the .aw and .zm TLD servers.
+ * Updated the .mk, .tc and .vu TLD servers.
+ * Added more ASN entries for Japan and Korea.
+ * Fixed some invalid ASN and networks entries which would never be
+ matched, reported by Henry Stern.
+ * mkpasswd ported to Solaris/Dyson, patch courtesy of Igor Pashev.
+
+ -- Marco d'Itri <md@linux.it> Fri, 02 May 2014 04:15:08 +0200
+
whois (5.1.1+dyson1) unstable; urgency=medium
* Package for Dyson
diff --git a/debian/compat b/debian/compat
index 7ed6ff8..f599e28 100644
--- a/debian/compat
+++ b/debian/compat
@@ -1 +1 @@
-5
+10
diff --git a/debian/control b/debian/control
index 9006ad9..3c99754 100644
--- a/debian/control
+++ b/debian/control
@@ -2,8 +2,9 @@ Source: whois
Section: net
Priority: standard
Maintainer: Marco d'Itri <md@linux.it>
-Standards-Version: 3.9.5
-Build-Depends: debhelper (>= 5), gettext, libidn11-dev
+Standards-Version: 4.3.0.1
+Rules-Requires-Root: no
+Build-Depends: debhelper (>= 10), gettext, libidn2-dev (>= 2.0.3)
Vcs-Git: git://github.com/rfc1036/whois.git
Vcs-Browser: https://github.com/rfc1036/whois
diff --git a/debian/rules b/debian/rules
index b975132..1f4c033 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,55 +1,8 @@
#!/usr/bin/make -f
-SHELL+= -e
-DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+%:
+ dh $@
-ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
- export CC := $(DEB_HOST_GNU_TYPE)-gcc
-endif
+override_dh_auto_build:
+ $(MAKE) CONFIG_FILE="/etc/whois.conf" HAVE_ICONV=1
-DPKG_EXPORT_BUILDFLAGS = 1
--include /usr/share/dpkg/buildflags.mk
-
-D := $(CURDIR)/debian/whois
-
-build:
- dh_testdir
- $(MAKE) CONFIG_FILE="/etc/whois.conf" HAVE_LIBIDN=1 HAVE_ICONV=1
- touch $@
-
-clean:
- dh_testdir
- -rm -f build
- $(MAKE) distclean
- dh_clean
-
-binary-arch: checkroot build
- dh_testdir
- dh_clean
-
- dh_installdirs usr/bin
- $(MAKE) install BASEDIR=$D
- dh_installman whois.1 mkpasswd.1
- dh_installdocs README
- dh_installchangelogs
- dh_strip
- dh_compress
- dh_fixperms
- dh_shlibdeps
- dh_installdeb
- dh_gencontrol
- dh_md5sums
- dh_builddeb -- -Zxz
-
-binary: binary-arch
-
-binary-indep:
-
-build-arch: build
-build-indep: build
-
-checkroot:
- test root = "`whoami`"
-
-.PHONY: binary binary-arch binary-indep build build-arch build-indep clean checkroot
diff --git a/debian/source/options b/debian/source/options
deleted file mode 100644
index 161b7e0..0000000
--- a/debian/source/options
+++ /dev/null
@@ -1 +0,0 @@
-compression=xz
diff --git a/debian/whois.docs b/debian/whois.docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/debian/whois.docs
@@ -0,0 +1 @@
+README
diff --git a/debian/whois.manpages b/debian/whois.manpages
new file mode 100644
index 0000000..c9f6daf
--- /dev/null
+++ b/debian/whois.manpages
@@ -0,0 +1,2 @@
+mkpasswd.1
+whois.1
diff --git a/ip6_del_list b/ip6_del_list
index e84623e..a9ab644 100644
--- a/ip6_del_list
+++ b/ip6_del_list
@@ -39,9 +39,9 @@
2600:0000::/12 arin
2610:0000::/23 arin
2620:0000::/23 arin
+2630:0000::/12 arin
2800:0000::/12 lacnic
2A00:0000::/12 ripe
+2A10:0000::/12 ripe
2C00:0000::/12 afrinic
-3FFE:0000::/16 6bone
-
diff --git a/ip_del_list b/ip_del_list
index 646c134..0425203 100644
--- a/ip_del_list
+++ b/ip_del_list
@@ -19,6 +19,7 @@
39.0.0.0/8 apnic
41.0.0.0/8 afrinic
42.0.0.0/8 apnic
+43.224.0.0/11 apnic
43.0.0.0/8 whois.nic.ad.jp
46.0.0.0/8 ripe
49.0.0.0/8 apnic
@@ -149,11 +150,6 @@
196.0.0.0/7 afrinic
198.0.0.0/7 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.96.0.0/13 whois.nic.br
-200.128.0.0/9 whois.nic.br
200.0.0.0/7 lacnic
202.11.0.0/16 whois.nic.ad.jp
202.13.0.0/16 whois.nic.ad.jp
@@ -187,7 +183,7 @@
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.71.128.0/17 twnic
210.90.0.0/15 whois.nic.or.kr
210.92.0.0/14 whois.nic.or.kr
210.96.0.0/11 whois.nic.or.kr # => 210.127.255.255
@@ -202,7 +198,7 @@
210.224.0.0/12 whois.nic.ad.jp # => 210.239.255.255
# some more TWNIC blocks are scattered here
210.240.0.0/16 twnic
-210.241.0.0/15 twnic
+210.241.0.0/18 twnic
210.241.224.0/19 twnic
210.242.0.0/15 twnic
210.248.0.0/13 whois.nic.ad.jp
@@ -244,7 +240,8 @@
220.103.0.0/16 whois.nic.or.kr
220.104.0.0/13 whois.nic.ad.jp
220.149.0.0/16 whois.nic.or.kr
-221.138.0.0/13 whois.nic.or.kr
+221.138.0.0/15 whois.nic.or.kr
+221.140.0.0/14 whois.nic.or.kr
221.144.0.0/12 whois.nic.or.kr
221.160.0.0/13 whois.nic.or.kr
222.96.0.0/12 whois.nic.or.kr
diff --git a/ip_del_recovered.h b/ip_del_recovered.h
new file mode 100644
index 0000000..40471e6
--- /dev/null
+++ b/ip_del_recovered.h
@@ -0,0 +1,489 @@
+/* 43.224.0.0 - 43.231.255.255 */
+{ 736100352UL, 4294443008UL, "whois.apnic.net" },
+/* 43.236.0.0 - 43.243.255.255 */
+{ 736886784UL, 4294705152UL, "whois.apnic.net" },
+{ 737148928UL, 4294705152UL, "whois.apnic.net" },
+/* 43.245.0.0 - 43.252.255.255 */
+{ 737476608UL, 4294901760UL, "whois.apnic.net" },
+{ 737542144UL, 4294836224UL, "whois.apnic.net" },
+{ 737673216UL, 4294705152UL, "whois.apnic.net" },
+{ 737935360UL, 4294901760UL, "whois.apnic.net" },
+/* 43.254.0.0 - 43.255.255.255 */
+{ 738066432UL, 4294836224UL, "whois.apnic.net" },
+/* 45.2.0.0 - 45.3.255.255 */
+{ 755105792UL, 4294836224UL, "whois.arin.net" },
+/* 45.4.0.0 - 45.7.255.255 */
+{ 755236864UL, 4294705152UL, "whois.lacnic.net" },
+/* 45.8.0.0 - 45.15.255.255 */
+{ 755499008UL, 4294443008UL, "whois.ripe.net" },
+/* 45.16.0.0 - 45.31.255.255 */
+{ 756023296UL, 4293918720UL, "whois.arin.net" },
+/* 45.32.0.0 - 45.63.255.255 */
+{ 757071872UL, 4292870144UL, "whois.arin.net" },
+/* 45.64.0.0 - 45.65.15.255 */
+{ 759234560UL, 4294963200UL, "whois.apnic.net" },
+{ 759169024UL, 4294901760UL, "whois.apnic.net" },
+/* 45.65.16.0 - 45.65.63.255 */
+{ 759238656UL, 4294963200UL, "whois.apnic.net" },
+{ 759242752UL, 4294959104UL, "whois.apnic.net" },
+/* 45.65.64.0 - 45.65.127.255 */
+{ 759250944UL, 4294950912UL, "whois.ripe.net" },
+/* 45.65.128.0 - 45.65.255.255 */
+{ 759267328UL, 4294934528UL, "whois.lacnic.net" },
+/* 45.66.0.0 - 45.67.255.255 */
+{ 759300096UL, 4294836224UL, "whois.ripe.net" },
+/* 45.68.0.0 - 45.71.255.255 */
+{ 759431168UL, 4294705152UL, "whois.lacnic.net" },
+/* 45.72.0.0 - 45.79.255.255 */
+{ 759693312UL, 4294443008UL, "whois.arin.net" },
+/* 45.80.0.0 - 45.95.255.255 */
+{ 760217600UL, 4293918720UL, "whois.ripe.net" },
+/* 45.96.0.0 - 45.111.255.255 */
+{ 761266176UL, 4293918720UL, "whois.afrinic.net" },
+/* 45.112.0.0 - 45.127.255.255 */
+{ 762314752UL, 4293918720UL, "whois.apnic.net" },
+/* 45.128.0.0 - 45.159.255.255 */
+{ 763363328UL, 4292870144UL, "whois.ripe.net" },
+/* 45.160.0.0 - 45.191.255.255 */
+{ 765460480UL, 4292870144UL, "whois.lacnic.net" },
+/* 45.192.0.0 - 45.222.255.255 */
+{ 767557632UL, 4293918720UL, "whois.afrinic.net" },
+{ 768606208UL, 4294443008UL, "whois.afrinic.net" },
+{ 769130496UL, 4294705152UL, "whois.afrinic.net" },
+{ 769392640UL, 4294836224UL, "whois.afrinic.net" },
+{ 769523712UL, 4294901760UL, "whois.afrinic.net" },
+/* 45.223.0.0 - 45.223.255.255 */
+{ 769589248UL, 4294901760UL, "whois.arin.net" },
+/* 45.224.0.0 - 45.239.255.255 */
+{ 769654784UL, 4293918720UL, "whois.lacnic.net" },
+/* 45.240.0.0 - 45.247.255.255 */
+{ 770703360UL, 4294443008UL, "whois.afrinic.net" },
+/* 45.248.0.0 - 45.255.255.255 */
+{ 771227648UL, 4294443008UL, "whois.apnic.net" },
+/* 66.218.132.0 - 66.218.133.255 */
+{ 1121616896UL, 4294966784UL, "whois.arin.net" },
+/* 66.251.128.0 - 66.251.191.255 */
+{ 1123778560UL, 4294950912UL, "whois.afrinic.net" },
+/* 72.44.16.0 - 72.44.31.255 */
+{ 1210847232UL, 4294963200UL, "whois.lacnic.net" },
+/* 74.91.48.0 - 74.91.63.255 */
+{ 1247490048UL, 4294963200UL, "whois.arin.net" },
+/* 128.201.0.0 - 128.201.255.255 */
+{ 2160656384UL, 4294901760UL, "whois.lacnic.net" },
+/* 131.196.0.0 - 131.196.255.255 */
+{ 2210660352UL, 4294901760UL, "whois.lacnic.net" },
+/* 137.59.0.0 - 137.59.255.255 */
+{ 2302345216UL, 4294901760UL, "whois.apnic.net" },
+/* 139.5.0.0 - 139.5.255.255 */
+{ 2332360704UL, 4294901760UL, "whois.apnic.net" },
+/* 139.26.0.0 - 139.26.255.255 */
+{ 2333736960UL, 4294901760UL, "whois.afrinic.net" },
+/* 139.28.0.0 - 139.28.255.255 */
+{ 2333868032UL, 4294901760UL, "whois.ripe.net" },
+/* 144.48.0.0 - 144.48.255.255 */
+{ 2419064832UL, 4294901760UL, "whois.apnic.net" },
+/* 144.168.0.0 - 144.168.255.255 */
+{ 2426929152UL, 4294901760UL, "whois.arin.net" },
+/* 146.196.32.0 - 146.196.127.255 */
+{ 2462326784UL, 4294959104UL, "whois.apnic.net" },
+{ 2462334976UL, 4294950912UL, "whois.apnic.net" },
+/* 146.196.128.0 - 146.196.255.255 */
+{ 2462351360UL, 4294934528UL, "whois.afrinic.net" },
+/* 147.78.0.0 - 147.78.255.255 */
+{ 2471362560UL, 4294901760UL, "whois.ripe.net" },
+/* 149.248.0.0 - 149.248.255.255 */
+{ 2516058112UL, 4294901760UL, "whois.arin.net" },
+/* 150.107.0.0 - 150.107.255.255 */
+{ 2523594752UL, 4294901760UL, "whois.apnic.net" },
+/* 150.129.0.0 - 150.129.255.255 */
+{ 2525036544UL, 4294901760UL, "whois.apnic.net" },
+/* 150.242.0.0 - 150.242.255.255 */
+{ 2532442112UL, 4294901760UL, "whois.apnic.net" },
+/* 152.89.0.0 - 152.89.255.255 */
+{ 2555969536UL, 4294901760UL, "whois.ripe.net" },
+/* 154.16.0.0 - 154.16.255.255 */
+{ 2584739840UL, 4294901760UL, "whois.afrinic.net" },
+/* 157.119.0.0 - 157.119.255.255 */
+{ 2641821696UL, 4294901760UL, "whois.apnic.net" },
+/* 160.19.0.0 - 160.19.15.255 */
+{ 2685599744UL, 4294963200UL, "whois.arin.net" },
+/* 160.19.20.0 - 160.19.23.255 */
+{ 2685604864UL, 4294966272UL, "whois.apnic.net" },
+/* 160.19.24.0 - 160.19.31.255 */
+{ 2685605888UL, 4294965248UL, "whois.arin.net" },
+/* 160.19.36.0 - 160.19.39.255 */
+{ 2685608960UL, 4294966272UL, "whois.afrinic.net" },
+/* 160.19.44.0 - 160.19.47.255 */
+{ 2685611008UL, 4294966272UL, "whois.lacnic.net" },
+/* 160.19.48.0 - 160.19.55.255 */
+{ 2685612032UL, 4294965248UL, "whois.apnic.net" },
+/* 160.19.60.0 - 160.19.63.255 */
+{ 2685615104UL, 4294966272UL, "whois.afrinic.net" },
+/* 160.19.64.0 - 160.19.67.255 */
+{ 2685616128UL, 4294966272UL, "whois.apnic.net" },
+/* 160.19.92.0 - 160.19.95.255 */
+{ 2685623296UL, 4294966272UL, "whois.ripe.net" },
+/* 160.19.96.0 - 160.19.103.255 */
+{ 2685624320UL, 4294965248UL, "whois.afrinic.net" },
+/* 160.19.104.0 - 160.19.107.255 */
+{ 2685626368UL, 4294966272UL, "whois.arin.net" },
+/* 160.19.112.0 - 160.19.143.255 */
+{ 2685628416UL, 4294963200UL, "whois.afrinic.net" },
+{ 2685632512UL, 4294963200UL, "whois.afrinic.net" },
+/* 160.19.152.0 - 160.19.155.255 */
+{ 2685638656UL, 4294966272UL, "whois.afrinic.net" },
+/* 160.19.160.0 - 160.19.163.255 */
+{ 2685640704UL, 4294966272UL, "whois.arin.net" },
+/* 160.19.168.0 - 160.19.175.255 */
+{ 2685642752UL, 4294965248UL, "whois.lacnic.net" },
+/* 160.19.180.0 - 160.19.183.255 */
+{ 2685645824UL, 4294966272UL, "whois.ripe.net" },
+/* 160.19.188.0 - 160.19.191.255 */
+{ 2685647872UL, 4294966272UL, "whois.afrinic.net" },
+/* 160.19.192.0 - 160.19.199.255 */
+{ 2685648896UL, 4294965248UL, "whois.afrinic.net" },
+/* 160.19.200.0 - 160.19.203.255 */
+{ 2685650944UL, 4294966272UL, "whois.lacnic.net" },
+/* 160.19.208.0 - 160.19.223.255 */
+{ 2685652992UL, 4294963200UL, "whois.apnic.net" },
+/* 160.19.224.0 - 160.19.227.255 */
+{ 2685657088UL, 4294966272UL, "whois.apnic.net" },
+/* 160.19.232.0 - 160.19.239.255 */
+{ 2685659136UL, 4294965248UL, "whois.afrinic.net" },
+/* 160.19.240.0 - 160.19.255.255 */
+{ 2685661184UL, 4294963200UL, "whois.lacnic.net" },
+/* 160.20.0.0 - 160.20.15.255 */
+{ 2685665280UL, 4294963200UL, "whois.apnic.net" },
+/* 160.20.20.0 - 160.20.23.255 */
+{ 2685670400UL, 4294966272UL, "whois.lacnic.net" },
+/* 160.20.24.0 - 160.20.31.255 */
+{ 2685671424UL, 4294965248UL, "whois.afrinic.net" },
+/* 160.20.32.0 - 160.20.35.255 */
+{ 2685673472UL, 4294966272UL, "whois.lacnic.net" },
+/* 160.20.40.0 - 160.20.47.255 */
+{ 2685675520UL, 4294965248UL, "whois.apnic.net" },
+/* 160.20.48.0 - 160.20.63.255 */
+{ 2685677568UL, 4294963200UL, "whois.apnic.net" },
+/* 160.20.64.0 - 160.20.71.255 */
+{ 2685681664UL, 4294965248UL, "whois.lacnic.net" },
+/* 160.20.72.0 - 160.20.75.255 */
+{ 2685683712UL, 4294966272UL, "whois.apnic.net" },
+/* 160.20.80.0 - 160.20.95.255 */
+{ 2685685760UL, 4294963200UL, "whois.lacnic.net" },
+/* 160.20.96.0 - 160.20.103.255 */
+{ 2685689856UL, 4294965248UL, "whois.ripe.net" },
+/* 160.20.108.0 - 160.20.111.255 */
+{ 2685692928UL, 4294966272UL, "whois.ripe.net" },
+/* 160.20.112.0 - 160.20.115.255 */
+{ 2685693952UL, 4294966272UL, "whois.afrinic.net" },
+/* 160.20.144.0 - 160.20.159.255 */
+{ 2685702144UL, 4294963200UL, "whois.ripe.net" },
+/* 160.20.160.0 - 160.20.207.255 */
+{ 2685706240UL, 4294959104UL, "whois.lacnic.net" },
+{ 2685714432UL, 4294963200UL, "whois.lacnic.net" },
+/* 160.20.208.0 - 160.20.211.255 */
+{ 2685718528UL, 4294966272UL, "whois.arin.net" },
+/* 160.20.213.0 - 160.20.213.255 */
+{ 2685719808UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.20.214.0 - 160.20.215.255 */
+{ 2685720064UL, 4294966784UL, "whois.ripe.net" },
+/* 160.20.217.0 - 160.20.217.255 */
+{ 2685720832UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.20.218.0 - 160.20.219.255 */
+{ 2685721088UL, 4294966784UL, "whois.lacnic.net" },
+/* 160.20.221.0 - 160.20.221.255 */
+{ 2685721856UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.20.222.0 - 160.20.223.255 */
+{ 2685722112UL, 4294966784UL, "whois.apnic.net" },
+/* 160.20.225.0 - 160.20.225.255 */
+{ 2685722880UL, 4294967040UL, "whois.lacnic.net" },
+/* 160.20.226.0 - 160.20.227.255 */
+{ 2685723136UL, 4294966784UL, "whois.afrinic.net" },
+/* 160.20.229.0 - 160.20.229.255 */
+{ 2685723904UL, 4294967040UL, "whois.ripe.net" },
+/* 160.20.230.0 - 160.20.231.255 */
+{ 2685724160UL, 4294966784UL, "whois.arin.net" },
+/* 160.20.232.0 - 160.20.239.255 */
+{ 2685724672UL, 4294965248UL, "whois.arin.net" },
+/* 160.20.242.0 - 160.20.243.255 */
+{ 2685727232UL, 4294966784UL, "whois.lacnic.net" },
+/* 160.20.246.0 - 160.20.247.255 */
+{ 2685728256UL, 4294966784UL, "whois.lacnic.net" },
+/* 160.20.248.0 - 160.20.249.255 */
+{ 2685728768UL, 4294966784UL, "whois.ripe.net" },
+/* 160.20.251.0 - 160.20.251.255 */
+{ 2685729536UL, 4294967040UL, "whois.arin.net" },
+/* 160.20.252.0 - 160.20.255.255 */
+{ 2685729792UL, 4294966272UL, "whois.afrinic.net" },
+/* 160.202.8.0 - 160.202.15.255 */
+{ 2697594880UL, 4294965248UL, "whois.apnic.net" },
+/* 160.202.16.0 - 160.202.31.255 */
+{ 2697596928UL, 4294963200UL, "whois.ripe.net" },
+/* 160.202.32.0 - 160.202.63.255 */
+{ 2697601024UL, 4294959104UL, "whois.apnic.net" },
+/* 160.202.64.0 - 160.202.127.255 */
+{ 2697609216UL, 4294950912UL, "whois.arin.net" },
+/* 160.202.128.0 - 160.202.255.255 */
+{ 2697625600UL, 4294934528UL, "whois.apnic.net" },
+/* 160.238.0.0 - 160.238.0.255 */
+{ 2699952128UL, 4294967040UL, "whois.apnic.net" },
+/* 160.238.11.0 - 160.238.11.255 */
+{ 2699954944UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.238.12.0 - 160.238.19.255 */
+{ 2699955200UL, 4294966272UL, "whois.apnic.net" },
+{ 2699956224UL, 4294966272UL, "whois.apnic.net" },
+/* 160.238.21.0 - 160.238.21.255 */
+{ 2699957504UL, 4294967040UL, "whois.ripe.net" },
+/* 160.238.22.0 - 160.238.23.255 */
+{ 2699957760UL, 4294966784UL, "whois.arin.net" },
+/* 160.238.24.0 - 160.238.29.255 */
+{ 2699958272UL, 4294966272UL, "whois.lacnic.net" },
+{ 2699959296UL, 4294966784UL, "whois.lacnic.net" },
+/* 160.238.31.0 - 160.238.31.255 */
+{ 2699960064UL, 4294967040UL, "whois.arin.net" },
+/* 160.238.33.0 - 160.238.33.255 */
+{ 2699960576UL, 4294967040UL, "whois.apnic.net" },
+/* 160.238.34.0 - 160.238.35.255 */
+{ 2699960832UL, 4294966784UL, "whois.apnic.net" },
+/* 160.238.36.0 - 160.238.39.255 */
+{ 2699961344UL, 4294966272UL, "whois.ripe.net" },
+/* 160.238.41.0 - 160.238.41.255 */
+{ 2699962624UL, 4294967040UL, "whois.arin.net" },
+/* 160.238.42.0 - 160.238.47.255 */
+{ 2699962880UL, 4294966784UL, "whois.arin.net" },
+{ 2699963392UL, 4294966272UL, "whois.arin.net" },
+/* 160.238.48.0 - 160.238.49.255 */
+{ 2699964416UL, 4294966784UL, "whois.afrinic.net" },
+/* 160.238.50.0 - 160.238.50.255 */
+{ 2699964928UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.238.52.0 - 160.238.55.255 */
+{ 2699965440UL, 4294966272UL, "whois.ripe.net" },
+/* 160.238.57.0 - 160.238.57.255 */
+{ 2699966720UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.238.58.0 - 160.238.59.255 */
+{ 2699966976UL, 4294966784UL, "whois.apnic.net" },
+/* 160.238.60.0 - 160.238.61.255 */
+{ 2699967488UL, 4294966784UL, "whois.ripe.net" },
+/* 160.238.63.0 - 160.238.63.255 */
+{ 2699968256UL, 4294967040UL, "whois.lacnic.net" },
+/* 160.238.64.0 - 160.238.95.255 */
+{ 2699968512UL, 4294959104UL, "whois.apnic.net" },
+/* 160.238.96.0 - 160.238.99.255 */
+{ 2699976704UL, 4294966272UL, "whois.ripe.net" },
+/* 160.238.101.0 - 160.238.101.255 */
+{ 2699977984UL, 4294967040UL, "whois.afrinic.net" },
+/* 160.238.102.0 - 160.238.103.255 */
+{ 2699978240UL, 4294966784UL, "whois.arin.net" },
+/* 160.238.104.0 - 160.238.111.255 */
+{ 2699978752UL, 4294965248UL, "whois.lacnic.net" },
+/* 160.238.112.0 - 160.238.127.255 */
+{ 2699980800UL, 4294963200UL, "whois.ripe.net" },
+/* 160.238.128.0 - 160.238.255.255 */
+{ 2699984896UL, 4294934528UL, "whois.lacnic.net" },
+/* 161.123.0.0 - 161.123.255.255 */
+{ 2709192704UL, 4294901760UL, "whois.afrinic.net" },
+/* 162.12.196.0 - 162.12.199.255 */
+{ 2718745600UL, 4294966272UL, "whois.lacnic.net" },
+/* 162.12.200.0 - 162.12.207.255 */
+{ 2718746624UL, 4294965248UL, "whois.ripe.net" },
+/* 162.12.208.0 - 162.12.215.255 */
+{ 2718748672UL, 4294965248UL, "whois.apnic.net" },
+/* 162.12.216.0 - 162.12.219.255 */
+{ 2718750720UL, 4294966272UL, "whois.arin.net" },
+/* 162.12.224.0 - 162.12.235.255 */
+{ 2718752768UL, 4294965248UL, "whois.arin.net" },
+{ 2718754816UL, 4294966272UL, "whois.arin.net" },
+/* 162.12.240.0 - 162.12.247.255 */
+{ 2718756864UL, 4294965248UL, "whois.apnic.net" },
+/* 163.47.4.0 - 163.47.18.255 */
+{ 2737767424UL, 4294966272UL, "whois.apnic.net" },
+{ 2737768448UL, 4294965248UL, "whois.apnic.net" },
+{ 2737770496UL, 4294966784UL, "whois.apnic.net" },
+{ 2737771008UL, 4294967040UL, "whois.apnic.net" },
+/* 163.47.20.0 - 163.47.21.255 */
+{ 2737771520UL, 4294966784UL, "whois.apnic.net" },
+/* 163.47.32.0 - 163.47.45.255 */
+{ 2737774592UL, 4294965248UL, "whois.apnic.net" },
+{ 2737776640UL, 4294966272UL, "whois.apnic.net" },
+{ 2737777664UL, 4294966784UL, "whois.apnic.net" },
+/* 163.47.47.0 - 163.47.255.255 */
+{ 2737778432UL, 4294967040UL, "whois.apnic.net" },
+{ 2737778688UL, 4294963200UL, "whois.apnic.net" },
+{ 2737782784UL, 4294950912UL, "whois.apnic.net" },
+{ 2737799168UL, 4294934528UL, "whois.apnic.net" },
+/* 163.53.0.0 - 163.53.255.255 */
+{ 2738159616UL, 4294901760UL, "whois.apnic.net" },
+/* 164.160.0.0 - 164.160.255.255 */
+{ 2761949184UL, 4294901760UL, "whois.afrinic.net" },
+/* 164.163.0.0 - 164.163.255.255 */
+{ 2762145792UL, 4294901760UL, "whois.lacnic.net" },
+/* 192.12.109.0 - 192.12.109.255 */
+{ 3222039808UL, 4294967040UL, "whois.apnic.net" },
+/* 192.12.110.0 - 192.12.111.255 */
+{ 3222040064UL, 4294966784UL, "whois.afrinic.net" },
+/* 192.12.112.0 - 192.12.115.255 */
+{ 3222040576UL, 4294966272UL, "whois.lacnic.net" },
+/* 192.12.116.0 - 192.12.117.255 */
+{ 3222041600UL, 4294966784UL, "whois.afrinic.net" },
+/* 192.12.118.0 - 192.12.118.255 */
+{ 3222042112UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.26.110.0 - 192.26.110.255 */
+{ 3222957568UL, 4294967040UL, "whois.apnic.net" },
+/* 192.42.65.0 - 192.42.65.255 */
+{ 3223994624UL, 4294967040UL, "whois.ripe.net" },
+/* 192.47.36.0 - 192.47.36.255 */
+{ 3224314880UL, 4294967040UL, "whois.afrinic.net" },
+/* 192.51.188.0 - 192.51.188.255 */
+{ 3224615936UL, 4294967040UL, "whois.apnic.net" },
+/* 192.51.240.0 - 192.51.240.255 */
+{ 3224629248UL, 4294967040UL, "whois.afrinic.net" },
+/* 192.54.244.0 - 192.54.244.255 */
+{ 3224826880UL, 4294967040UL, "whois.ripe.net" },
+/* 192.67.23.0 - 192.67.23.255 */
+{ 3225622272UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.68.185.0 - 192.68.185.255 */
+{ 3225729280UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.70.192.0 - 192.70.199.255 */
+{ 3225862144UL, 4294965248UL, "whois.ripe.net" },
+/* 192.70.200.0 - 192.70.201.255 */
+{ 3225864192UL, 4294966784UL, "whois.afrinic.net" },
+/* 192.75.4.0 - 192.75.4.255 */
+{ 3226141696UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.75.137.0 - 192.75.137.255 */
+{ 3226175744UL, 4294967040UL, "whois.apnic.net" },
+/* 192.75.236.0 - 192.75.236.255 */
+{ 3226201088UL, 4294967040UL, "whois.afrinic.net" },
+/* 192.83.207.0 - 192.83.207.255 */
+{ 3226717952UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.83.208.0 - 192.83.215.255 */
+{ 3226718208UL, 4294965248UL, "whois.afrinic.net" },
+/* 192.83.216.0 - 192.83.216.255 */
+{ 3226720256UL, 4294967040UL, "whois.ripe.net" },
+/* 192.91.200.0 - 192.91.200.255 */
+{ 3227240448UL, 4294967040UL, "whois.afrinic.net" },
+/* 192.91.254.0 - 192.91.254.255 */
+{ 3227254272UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.92.154.0 - 192.92.154.255 */
+{ 3227294208UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.94.77.0 - 192.94.77.255 */
+{ 3227405568UL, 4294967040UL, "whois.arin.net" },
+/* 192.94.78.0 - 192.94.78.255 */
+{ 3227405824UL, 4294967040UL, "whois.ripe.net" },
+/* 192.107.1.0 - 192.107.1.255 */
+{ 3228238080UL, 4294967040UL, "whois.arin.net" },
+/* 192.133.103.0 - 192.133.103.255 */
+{ 3229968128UL, 4294967040UL, "whois.arin.net" },
+/* 192.135.90.0 - 192.135.91.255 */
+{ 3230095872UL, 4294966784UL, "whois.apnic.net" },
+/* 192.135.95.0 - 192.135.95.255 */
+{ 3230097152UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.135.99.0 - 192.135.99.255 */
+{ 3230098176UL, 4294967040UL, "whois.apnic.net" },
+/* 192.135.100.0 - 192.135.100.255 */
+{ 3230098432UL, 4294967040UL, "whois.ripe.net" },
+/* 192.135.185.0 - 192.135.185.255 */
+{ 3230120192UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.140.1.0 - 192.140.1.255 */
+{ 3230400768UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.140.2.0 - 192.140.3.255 */
+{ 3230401024UL, 4294966784UL, "whois.ripe.net" },
+/* 192.140.4.0 - 192.140.7.255 */
+{ 3230401536UL, 4294966272UL, "whois.arin.net" },
+/* 192.140.8.0 - 192.140.15.255 */
+{ 3230402560UL, 4294965248UL, "whois.lacnic.net" },
+/* 192.140.16.0 - 192.140.127.255 */
+{ 3230404608UL, 4294963200UL, "whois.lacnic.net" },
+{ 3230408704UL, 4294959104UL, "whois.lacnic.net" },
+{ 3230416896UL, 4294950912UL, "whois.lacnic.net" },
+/* 192.140.128.0 - 192.140.255.255 */
+{ 3230433280UL, 4294934528UL, "whois.apnic.net" },
+/* 192.141.0.0 - 192.141.255.255 */
+{ 3230466048UL, 4294901760UL, "whois.lacnic.net" },
+/* 192.142.0.0 - 192.143.255.255 */
+{ 3230531584UL, 4294836224UL, "whois.afrinic.net" },
+/* 192.144.0.0 - 192.144.63.255 */
+{ 3230662656UL, 4294950912UL, "whois.ripe.net" },
+/* 192.144.64.0 - 192.144.71.255 */
+{ 3230679040UL, 4294965248UL, "whois.lacnic.net" },
+/* 192.144.72.0 - 192.144.73.255 */
+{ 3230681088UL, 4294966784UL, "whois.lacnic.net" },
+/* 192.144.75.0 - 192.144.75.255 */
+{ 3230681856UL, 4294967040UL, "whois.ripe.net" },
+/* 192.144.78.0 - 192.144.79.255 */
+{ 3230682624UL, 4294966784UL, "whois.apnic.net" },
+/* 192.144.80.0 - 192.144.95.255 */
+{ 3230683136UL, 4294963200UL, "whois.apnic.net" },
+/* 192.144.96.0 - 192.144.127.255 */
+{ 3230687232UL, 4294959104UL, "whois.lacnic.net" },
+/* 192.144.128.0 - 192.144.255.255 */
+{ 3230695424UL, 4294934528UL, "whois.arin.net" },
+/* 192.145.0.0 - 192.145.127.255 */
+{ 3230728192UL, 4294934528UL, "whois.ripe.net" },
+/* 192.145.128.0 - 192.145.191.255 */
+{ 3230760960UL, 4294950912UL, "whois.afrinic.net" },
+/* 192.145.192.0 - 192.145.223.255 */
+{ 3230777344UL, 4294959104UL, "whois.lacnic.net" },
+/* 192.145.224.0 - 192.145.227.255 */
+{ 3230785536UL, 4294966272UL, "whois.ripe.net" },
+/* 192.145.228.0 - 192.145.229.255 */
+{ 3230786560UL, 4294966784UL, "whois.apnic.net" },
+/* 192.145.230.0 - 192.145.230.255 */
+{ 3230787072UL, 4294967040UL, "whois.afrinic.net" },
+/* 192.147.11.0 - 192.147.11.255 */
+{ 3230862080UL, 4294967040UL, "whois.arin.net" },
+/* 192.153.12.0 - 192.153.12.255 */
+{ 3231255552UL, 4294967040UL, "whois.lacnic.net" },
+/* 192.156.144.0 - 192.156.144.255 */
+{ 3231485952UL, 4294967040UL, "whois.apnic.net" },
+/* 192.156.202.0 - 192.156.202.255 */
+{ 3231500800UL, 4294967040UL, "whois.arin.net" },
+/* 192.156.220.0 - 192.156.220.255 */
+{ 3231505408UL, 4294967040UL, "whois.apnic.net" },
+/* 192.172.232.0 - 192.172.232.255 */
+{ 3232557056UL, 4294967040UL, "whois.ripe.net" },
+/* 192.172.244.0 - 192.172.244.255 */
+{ 3232560128UL, 4294967040UL, "whois.arin.net" },
+/* 192.188.81.0 - 192.188.81.255 */
+{ 3233566976UL, 4294967040UL, "whois.arin.net" },
+/* 192.188.82.0 - 192.188.83.255 */
+{ 3233567232UL, 4294966784UL, "whois.apnic.net" },
+/* 192.188.248.0 - 192.188.248.255 */
+{ 3233609728UL, 4294967040UL, "whois.ripe.net" },
+/* 192.197.113.0 - 192.197.113.255 */
+{ 3234164992UL, 4294967040UL, "whois.apnic.net" },
+/* 192.231.238.0 - 192.231.238.255 */
+{ 3236425216UL, 4294967040UL, "whois.arin.net" },
+/* 192.251.230.0 - 192.251.230.255 */
+{ 3237733888UL, 4294967040UL, "whois.ripe.net" },
+/* 198.17.79.0 - 198.17.79.255 */
+{ 3323023104UL, 4294967040UL, "whois.arin.net" },
+/* 198.97.38.0 - 198.97.38.255 */
+{ 3328255488UL, 4294967040UL, "whois.lacnic.net" },
+/* 199.21.172.0 - 199.21.175.255 */
+{ 3340086272UL, 4294966272UL, "whois.apnic.net" },
+/* 199.212.57.0 - 199.212.57.255 */
+{ 3352574208UL, 4294967040UL, "whois.apnic.net" },
+/* 204.8.204.0 - 204.8.207.255 */
+{ 3423128576UL, 4294966272UL, "whois.afrinic.net" },
+/* 204.11.0.0 - 204.11.3.255 */
+{ 3423272960UL, 4294966272UL, "whois.ripe.net" },
+/* 204.48.32.0 - 204.48.33.255 */
+{ 3425705984UL, 4294966784UL, "whois.ripe.net" },
+/* 204.52.191.0 - 204.52.191.255 */
+{ 3426008832UL, 4294967040UL, "whois.apnic.net" },
+/* 204.225.42.0 - 204.225.43.255 */
+{ 3437308416UL, 4294966784UL, "whois.lacnic.net" },
+/* 205.211.83.0 - 205.211.83.255 */
+{ 3453178624UL, 4294967040UL, "whois.ripe.net" },
+/* 207.115.112.0 - 207.115.127.255 */
+{ 3480449024UL, 4294963200UL, "whois.arin.net" },
+/* 208.73.240.0 - 208.73.243.255 */
+{ 3494506496UL, 4294966272UL, "whois.arin.net" },
+/* 208.85.156.0 - 208.85.159.255 */
+{ 3495271424UL, 4294966272UL, "whois.afrinic.net" },
+/* 209.107.128.0 - 209.107.191.255 */
+{ 3513483264UL, 4294950912UL, "whois.arin.net" },
+/* 216.98.208.0 - 216.98.223.255 */
+{ 3630354432UL, 4294963200UL, "whois.lacnic.net" },
+/* 216.250.96.0 - 216.250.111.255 */
+{ 3640287232UL, 4294963200UL, "whois.apnic.net" },
diff --git a/make_as32_del.pl b/make_as32_del.pl
index 663e7f6..6382679 100755
--- a/make_as32_del.pl
+++ b/make_as32_del.pl
@@ -3,10 +3,10 @@
use warnings;
use strict;
-while (<STDIN>) {
+while (<>) {
chomp;
- s/^\s*(.+)\s*$/$1/;
- s/\s*#.*$//;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
next if /^$/;
my ($fh, $fl, $lh, $ll, $s, $f, $l);
@@ -16,10 +16,10 @@ while (<STDIN>) {
$l = ($lh << 16) + $ll;
my $server = ($s =~ /\./) ? $s : "whois.$s.net";
- print qq({ $f, $l,\t"$server" },\t/* $fh.$fl $lh.$ll */\n);
+ print qq|{ ${f}u, ${l}u,\t"$server" },\t/* $fh.$fl $lh.$ll */\n|;
} elsif (($f, $l, $s) = /^(\d+)\s+(\d+)\s+([\w\.-]+)$/) {
my $server = ($s =~ /\./) ? $s : "whois.$s.net";
- print qq({ ${f}u, ${l}u,\t"$server" },\n);
+ print qq|{ ${f}u, ${l}u,\t"$server" },\n|;
} else {
die "format error: $_";
}
diff --git a/make_as_del.pl b/make_as_del.pl
index 324d3d2..10ab071 100755
--- a/make_as_del.pl
+++ b/make_as_del.pl
@@ -1,20 +1,28 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
+use warnings;
use strict;
+my $last_l = 0;
+
while (<>) {
chomp;
- s/^\s*(.*)\s*$/$1/;
- s/\s*#.*$//;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
next if /^$/;
- die "format error: $_" unless (/^([\d\.]+)\s+([\d\.]+)\s+([\w\.]+)$/);
- my $f=$1; my $l=$2; my $s=$3;
+
+ die "format error: $_" if not (/^([\d\.]+)\s+([\d\.]+)\s+([\w\.]+)$/);
+ my $f = $1; my $l = $2; my $s = $3;
+
+ die "constraint violated: $l < $last_l" if $l < $last_l;
+ $last_l = $l;
+
print "{ ${f}, ${l}, \"";
if ($s =~ /\./) {
print "$s";
} else {
print "whois.$s.net";
}
- print "\" },\n";
+ print qq(" },\n);
}
diff --git a/make_ip6_del.pl b/make_ip6_del.pl
index d94629e..80f0b0c 100755
--- a/make_ip6_del.pl
+++ b/make_ip6_del.pl
@@ -1,14 +1,15 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
+use warnings;
use strict;
while (<>) {
chomp;
- s/^\s*(.*)\s*$/$1/;
- s/\s*#.*$//;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
next if /^$/;
- die "invalid line:\n$_\n"
+ die "format error:\n$_\n"
if not m#^([\da-fA-F]{4}):([\da-fA-F]{1,4})::/(\d+)\s+([\w\.]+)$#;
my $len = $3; my $s = $4;
my $i1 = $1; my $i2 = $2;
diff --git a/make_ip_del.pl b/make_ip_del.pl
index ed53351..7ed5c93 100755
--- a/make_ip_del.pl
+++ b/make_ip_del.pl
@@ -1,15 +1,17 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
+use warnings;
use strict;
while (<>) {
chomp;
- s/^\s*(.*)\s*$/$1/;
- s/\s*#.*$//;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
next if /^$/;
die "format error: $_" if not /^([\d\.]+)\/(\d+)\s+([\w\.]+)$/;
my $m = $2; my $s = $3;
+
my ($i1, $i2, $i3, $i4) = split(/\./, $1);
print '{ ' . (($i1 << 24) + ($i2 << 16) + ($i3 << 8) + $i4) . 'UL, '.
((~(0xffffffff >> $m)) & 0xffffffff) . 'UL, "';
@@ -22,6 +24,6 @@ while (<>) {
} else {
print "whois.$s.net";
}
- print '" },' . "\n";
+ print qq|" },\n|;
}
diff --git a/make_ip_del_recovered.pl b/make_ip_del_recovered.pl
new file mode 100755
index 0000000..65e9112
--- /dev/null
+++ b/make_ip_del_recovered.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+# https://www.iana.org/assignments/ipv4-recovered-address-space/ipv4-recovered-address-space-2.csv
+
+use warnings;
+use strict;
+use autodie;
+
+use Text::CSV;
+use Net::CIDR;
+use Net::IP;
+
+my $csv = Text::CSV->new;
+
+open(my $in, '<', 'ipv4-recovered-address-space-2.csv');
+open(my $out, '>', 'ip_del_recovered.h');
+
+while (my $row = $csv->getline($in)) {
+ next if $row->[0] eq 'Start address';
+ next if $row->[5] ne 'ALLOCATED';
+
+ print $out '/* ' . $row->[0] . ' - ' . $row->[1] . " */\n";
+ my @networks =
+ map { Net::IP->new($_) }
+ Net::CIDR::range2cidr($row->[0] . '-' . $row->[1]);
+ print $out sprintf(qq|{ %sUL, %sUL, "%s" },\n|,
+ $_->intip,
+ ((~(0xffffffff >> $_->prefixlen)) & 0xffffffff),
+ $row->[4]
+ ) foreach @networks;
+}
+
+close($in);
+close($out);
+
diff --git a/make_new_gtlds.pl b/make_new_gtlds.pl
new file mode 100755
index 0000000..dc7110e
--- /dev/null
+++ b/make_new_gtlds.pl
@@ -0,0 +1,16 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+while (<>) {
+ chomp;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
+ next if /^$/;
+
+ die "format error: $_" if not /^(xn--[a-z0-9-]+|[a-z]+)$/;
+
+ print qq| "$_",\n|;
+}
+
diff --git a/make_nic_handles.pl b/make_nic_handles.pl
new file mode 100755
index 0000000..6b031c2
--- /dev/null
+++ b/make_nic_handles.pl
@@ -0,0 +1,17 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+while (<>) {
+ chomp;
+ s/#.*$//;
+ s/^\s+//; s/\s+$//;
+ next if /^$/;
+
+ die "format error: $_" if not
+ (my ($a, $b) = /^(-\w+)\s+([\w\d\.:-]+)$/);
+
+ print qq| "$a",\t"$b",\n|;
+}
+
diff --git a/make_servers_charset.pl b/make_servers_charset.pl
index 8517b75..2f83a09 100755
--- a/make_servers_charset.pl
+++ b/make_servers_charset.pl
@@ -9,13 +9,13 @@ while (<>) {
s/^\s+//; s/\s+$//;
next if /^$/;
- die "format error: $_" unless
+ die "format error: $_" if not
(my ($a, $b, $c) = /^([a-z0-9.-]+)\s+([a-z0-9-]+)(?:\s+(.+))?$/);
if ($c) {
- print qq( { "$a",\t"$b",\t"$c" },\n);
+ print qq| { "$a",\t"$b",\t"$c" },\n|;
} else {
- print qq( { "$a",\t"$b",\tNULL },\n);
+ print qq| { "$a",\t"$b",\tNULL },\n|;
}
}
diff --git a/make_tld_serv.pl b/make_tld_serv.pl
index 60d557c..0734702 100755
--- a/make_tld_serv.pl
+++ b/make_tld_serv.pl
@@ -9,14 +9,15 @@ while (<>) {
s/^\s+//; s/\s+$//;
next if /^$/;
- die "format error: $_" unless
- (my ($a, $b) = /^([\w\d\.-]+)\s+([\w\d\.:-]+|[A-Z]+\s+.*)$/);
+ die "format error: $_" if not
+ (my ($a, $b) = /^\.(\w[\w\d\.-]+)\s+([\w\d\.:-]+|[A-Z]+\s+.*)$/);
$b =~ s/^W(?:EB)?\s+/\\x01/;
$b =~ s/^VERISIGN\s+/\\x04" "/;
$b = "\\x03" if $b eq 'NONE';
$b = "\\x08" if $b eq 'AFILIAS';
$b = "\\x0C" if $b eq 'ARPA';
- print qq( "$a",\t"$b",\n);
+ $b = "\\x0D" if $b eq 'IP6';
+ print qq| "$a",\t"$b",\n|;
}
diff --git a/make_version_h.pl b/make_version_h.pl
index ae9956a..51a8f76 100755
--- a/make_version_h.pl
+++ b/make_version_h.pl
@@ -2,22 +2,28 @@
use warnings;
use strict;
+use autodie;
my $changelog = $ARGV[0] or die "Usage: $0 debian/changelog\n";
-open(my $fh, '<', $changelog) or die "open($changelog): $!";
+open(my $fh, '<', $changelog);
my $line = <$fh>;
-close($fh) or die "close($changelog): $!";
+close($fh);
my ($ver) = $line =~ /^whois \s+ \( ( [^\)]+ ) \) \s+ \S+/x;
die "Version number not found in $changelog!\n" if not $ver;
-$ver =~ s/ ( ~deb\d+.* | ubuntu\d+ | \+dyson\d+ ) $//x;
+$ver =~ s/ ( ~bpo\d+\+\d+ | \+b\d+ | ~deb\d+.* | ubuntu\d+ | \+dyson\d+ ) $//x;
# The version number must not deviate from this format or the -V option
# to RIPE-like servers will break. If needed, update the previous regexp.
+# This may not be true anymore in 2019.
die "Invalid version number in $changelog!\n"
unless $ver =~ /^ \d+\.\d+ ( \.\d+ )? $/x;
+# This is the version number used in the help messages.
print qq|#define VERSION "$ver"\n|;
+# This is the string sent to RIPE-like servers as the argument of -V.
+print qq|#define IDSTRING "Md$ver"\n|;
+
diff --git a/mkpasswd.1 b/mkpasswd.1
index db7db47..21555ad 100644
--- a/mkpasswd.1
+++ b/mkpasswd.1
@@ -20,10 +20,13 @@ Use the \fISTRING\fP as salt. It must not contain prefixes such as \fI$1$\fP.
Use \fINUMBER\fP rounds. This argument is ignored if the method chosen
does not support variable rounds. For the OpenBSD Blowfish method this is
the logarithm of the number of rounds.
+The behavior is undefined if this option is used without \fI--method\fP.
.TP
.B -m, --method=TYPE
Compute the password using the \fITYPE\fP method.
If \fITYPE\fP is \fIhelp\fP then the available methods are printed.
+If \fITYPE\fP begins and end with \fI$\fP characters then the string
+is passed to \fIcrypt_gensalt(3)\fP as-is.
.TP
.B -5
Like \fI--method=md5\fP.
@@ -49,6 +52,8 @@ This programs suffers of a bad case of featuritis.
.IR passwd(1),
.IR passwd(5),
.IR crypt(3),
+.IR crypt(5),
+.IR crypt_gensalt(3),
.IR getpass(3)
.SH AUTHOR
.B mkpasswd
diff --git a/mkpasswd.c b/mkpasswd.c
index a80e7e9..002bb42 100644
--- a/mkpasswd.c
+++ b/mkpasswd.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2001-2008 Marco d'Itri
+ * Copyright (C) 2001-2019 Marco d'Itri <md@linux.it>.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -11,14 +11,14 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
/* for crypt, snprintf and strcasecmp */
#ifndef _XOPEN_SOURCE
-#define _XOPEN_SOURCE 600
+#define _XOPEN_SOURCE 500
#endif
#ifndef _BSD_SOURCE
#define _BSD_SOURCE 1
@@ -37,14 +37,14 @@
#endif
#include <fcntl.h>
#include <string.h>
+#include <strings.h>
#include <time.h>
#include <sys/types.h>
-#ifdef HAVE_XCRYPT
+#ifdef HAVE_XCRYPT_H
#include <xcrypt.h>
#include <sys/stat.h>
#endif
-#ifdef HAVE_LINUX_CRYPT_GENSALT
-#define _OW_SOURCE
+#ifdef HAVE_CRYPT_H
#include <crypt.h>
#endif
#ifdef HAVE_GETTIMEOFDAY
@@ -86,27 +86,45 @@ struct crypt_method {
const char *desc; /* long description for the methods list */
};
+/* XCRYPT_VERSION_NUM is defined in crypt.h from libxcrypt */
+#if defined XCRYPT_VERSION_NUM
+# define HAVE_SHA_CRYPT
+# define HAVE_BCRYPT
+# define HAVE_BSDICRYPT
+#endif
+
static const struct crypt_method methods[] = {
/* method prefix minlen, maxlen rounds description */
- { "des", "", 2, 2, 0,
- N_("standard 56 bit DES-based crypt(3)") },
- { "md5", "$1$", 8, 8, 0, "MD5" },
-#if defined OpenBSD || defined FreeBSD || (defined __SVR4 && defined __sun)
- { "bf", "$2a$", 22, 22, 1, "Blowfish" },
+#ifdef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX
+ { "auto", NULL, 0, 0, 0, NULL },
#endif
-#if defined HAVE_LINUX_CRYPT_GENSALT
- { "bf", "$2a$", 22, 22, 1, "Blowfish, system-specific on 8-bit chars" },
- /* algorithm 2y fixes CVE-2011-2483 */
- { "bfy", "$2y$", 22, 22, 1, "Blowfish, correct handling of 8-bit chars" },
+ /* compatibility aliases for mkpasswd versions < 5.4.0 */
+ { "des", "", 2, 2, 0, NULL },
+ { "md5", "$1$", 8, 8, 0, NULL },
+#if defined XCRYPT_VERSION_NUM
+ { "yescrypt", "$y$", 0, 0, 0, "Yescrypt" },
+#if XCRYPT_VERSION_NUM >= ((4 << 16) | 4)
+ { "gost-yescrypt", "$gy$", 0, 0, 0, "GOST Yescrypt" },
#endif
-#if defined FreeBSD
- { "nt", "$3$", 0, 0, 0, "NT-Hash" },
+ { "scrypt", "$7$", 0, 0, 0, "scrypt" },
+#endif
+#ifdef HAVE_BCRYPT_OBSOLETE
+ /* http://marc.info/?l=openbsd-misc&m=139320023202696 */
+ { "bf", "$2a$", 22, 22, 2, "bcrypt" },
+#endif
+#ifdef HAVE_BCRYPT
+ { "bcrypt", "$2b$", 22, 22, 2, "bcrypt" },
+ { "bcrypt-a", "$2a$", 22, 22, 2, "bcrypt (obsolete $2a$ version)" },
#endif
#if defined HAVE_SHA_CRYPT
/* http://people.redhat.com/drepper/SHA-crypt.txt */
- { "sha-256", "$5$", 8, 16, 1, "SHA-256" },
- { "sha-512", "$6$", 8, 16, 1, "SHA-512" },
+ { "sha512crypt", "$6$", 8, 16, 1, "SHA-512" },
+ { "sha256crypt", "$5$", 8, 16, 1, "SHA-256" },
+ /* compatibility aliases for mkpasswd versions < 5.4.0 */
+ { "sha-256", "$5$", 8, 16, 1, NULL },
+ { "sha-512", "$6$", 8, 16, 1, NULL },
#endif
+#if (defined __SVR4 && defined __sun) || defined XCRYPT_VERSION_NUM
/* http://www.crypticide.com/dropsafe/article/1389 */
/*
* Actually the maximum salt length is arbitrary, but Solaris by default
@@ -114,17 +132,27 @@ static const struct crypt_method methods[] = {
* http://cvs.opensolaris.org/source/xref/onnv/onnv-gate/ \
* usr/src/lib/crypt_modules/sunmd5/sunmd5.c#crypt_gensalt_impl
*/
-#if defined __SVR4 && defined __sun
{ "sunmd5", "$md5$", 8, 8, 1, "SunMD5" },
#endif
+ { "md5crypt", "$1$", 8, 8, 0, "MD5" },
+#ifdef HAVE_BSDICRYPT
+ { "bsdicrypt", "_", 0, 0, 0,
+ N_("BSDI extended DES-based crypt(3)") },
+#endif
+ { "descrypt", "", 2, 2, 0,
+ N_("standard 56 bit DES-based crypt(3)") },
+#if defined FreeBSD || defined XCRYPT_VERSION_NUM
+ { "nt", "$3$", 0, 0, 0, "NT-Hash" },
+#endif
{ NULL, NULL, 0, 0, 0, NULL }
};
void generate_salt(char *const buf, const unsigned int len);
-void *get_random_bytes(const int len);
-void display_help(int error);
+void *get_random_bytes(const unsigned int len);
+void NORETURN display_help(int error);
void display_version(void);
void display_methods(void);
+char *read_line(FILE *fp);
int main(int argc, char *argv[])
{
@@ -149,7 +177,7 @@ int main(int argc, char *argv[])
/* prepend options from environment */
argv = merge_args(getenv("MKPASSWD_OPTIONS"), argv, &argc);
- while ((ch = GETOPT_LONGISH(argc, argv, "hH:m:5P:R:sS:V", longopts, 0))
+ while ((ch = GETOPT_LONGISH(argc, argv, "hH:m:5P:R:sS:V", longopts, NULL))
> 0) {
switch (ch) {
case '5':
@@ -161,6 +189,17 @@ int main(int argc, char *argv[])
display_methods();
exit(0);
}
+#if defined HAVE_LINUX_CRYPT_GENSALT || defined HAVE_SOLARIS_CRYPT_GENSALT
+ if (optarg[0] == '$'
+ && strlen(optarg) > 2
+ && *(optarg + strlen(optarg) - 1) == '$') {
+ salt_prefix = NOFAIL(strdup(optarg));
+ salt_minlen = 0;
+ salt_maxlen = 0;
+ rounds_support = 0;
+ break;
+ }
+#endif
for (i = 0; methods[i].method != NULL; i++)
if (strcaseeq(methods[i].method, optarg)) {
salt_prefix = methods[i].prefix;
@@ -227,18 +266,21 @@ int main(int argc, char *argv[])
display_help(EXIT_FAILURE);
}
- /* default: DES password */
+ /* default: DES password, or else whatever crypt_gensalt chooses */
if (!salt_prefix) {
salt_minlen = methods[0].minlen;
salt_maxlen = methods[0].maxlen;
salt_prefix = methods[0].prefix;
+ rounds_support = methods[0].rounds;
}
- if (streq(salt_prefix, "$2a$") || streq(salt_prefix, "$2y$")) {
- /* OpenBSD Blowfish and derivatives */
+ if (!salt_prefix) {
+ /* NULL means that crypt_gensalt will choose one later */
+ } else if (rounds_support == 2) {
+ /* bcrypt strings always contain the rounds number */
if (rounds <= 5)
rounds = 5;
- /* actually for 2a/2y it is the logarithm of the number of rounds */
+ /* actually it is the logarithm of the number of rounds */
snprintf(rounds_str, sizeof(rounds_str), "%02u$", rounds);
} else if (rounds_support && rounds)
snprintf(rounds_str, sizeof(rounds_str), "rounds=%u$", rounds);
@@ -279,17 +321,20 @@ int main(int argc, char *argv[])
} else {
#ifdef HAVE_SOLARIS_CRYPT_GENSALT
salt = crypt_gensalt(salt_prefix, NULL);
- if (!salt)
- perror("crypt_gensalt");
+ if (!salt) {
+ perror("crypt_gensalt");
+ exit(2);
+ }
#elif defined HAVE_LINUX_CRYPT_GENSALT
void *entropy = get_random_bytes(64);
salt = crypt_gensalt(salt_prefix, rounds, entropy, 64);
if (!salt) {
- fprintf(stderr, "crypt_gensalt failed.\n");
- exit(2);
+ perror("crypt_gensalt");
+ exit(2);
}
- free(entropy);
+ if (entropy)
+ free(entropy);
#else
unsigned int salt_len = salt_maxlen;
@@ -310,24 +355,20 @@ int main(int argc, char *argv[])
if (password) {
} else if (password_fd != -1) {
FILE *fp;
- char *p;
if (isatty(password_fd))
fprintf(stderr, _("Password: "));
- password = NOFAIL(malloc(128));
fp = fdopen(password_fd, "r");
if (!fp) {
perror("fdopen");
exit(2);
}
- if (!fgets(password, 128, fp)) {
- perror("fgets");
+
+ password = read_line(fp);
+ if (!password) {
+ perror("fgetc");
exit(2);
}
-
- p = strpbrk(password, "\n\r");
- if (p)
- *p = '\0';
} else {
password = getpass(_("Password: "));
if (!password) {
@@ -341,12 +382,13 @@ int main(int argc, char *argv[])
result = crypt(password, salt);
/* xcrypt returns "*0" on errors */
if (!result || result[0] == '*') {
- fprintf(stderr, "crypt failed.\n");
+ if (CRYPT_SETS_ERRNO)
+ perror("crypt");
+ else
+ fprintf(stderr, "crypt failed.\n");
exit(2);
}
- /* yes, using strlen(salt_prefix) on salt. It's not
- * documented whether crypt_gensalt may change the prefix */
- if (!strneq(result, salt, strlen(salt_prefix))) {
+ if (!strneq(result, salt, strlen(salt))) {
fprintf(stderr, _("Method not supported by crypt(3).\n"));
exit(2);
}
@@ -356,44 +398,73 @@ int main(int argc, char *argv[])
exit(0);
}
-#ifdef RANDOM_DEVICE
-void* get_random_bytes(const int count)
+#ifdef CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY
+
+/*
+ * If NULL is passed to the libxcrypt version of crypt_gensalt() instead of
+ * the buffer of random bytes then the function will obtain by itself the
+ * required randomness.
+ */
+inline void *get_random_bytes(const unsigned int count)
{
- char *buf;
+ return NULL;
+}
+
+#elif defined HAVE_SOLARIS_CRYPT_GENSALT
+
+/*
+ * The Solaris version of crypt_gensalt() gathers the random data by itself.
+ */
+
+#elif defined RANDOM_DEVICE || defined HAVE_ARC4RANDOM_BUF || defined HAVE_GETENTROPY
+
+void *get_random_bytes(const unsigned int count)
+{
+ char *buf = NOFAIL(malloc(count));
+
+#if defined HAVE_ARC4RANDOM_BUF
+ arc4random_buf(buf, count);
+#elif defined HAVE_GETENTROPY
+ if (getentropy(buf, count) < 0)
+ perror("getentropy");
+#else
int fd;
+ ssize_t bytes_read;
- buf = NOFAIL(malloc(count));
fd = open(RANDOM_DEVICE, O_RDONLY);
if (fd < 0) {
perror("open(" RANDOM_DEVICE ")");
exit(2);
}
- if (read(fd, buf, count) != count) {
- if (count < 0)
- perror("read(" RANDOM_DEVICE ")");
- else
- fprintf(stderr, "Short read of %s.\n", RANDOM_DEVICE);
+ bytes_read = read(fd, buf, count);
+ if (bytes_read < 0) {
+ perror("read(" RANDOM_DEVICE ")");
+ exit(2);
+ }
+ if (bytes_read != count) {
+ fprintf(stderr, "Short read of %s.\n", RANDOM_DEVICE);
exit(2);
}
close(fd);
+#endif
return buf;
}
-#endif
-
-#ifdef RANDOM_DEVICE
void generate_salt(char *const buf, const unsigned int len)
{
unsigned int i;
+ unsigned char *entropy;
+
+ entropy = get_random_bytes(len);
- unsigned char *entropy = get_random_bytes(len * sizeof(unsigned char));
for (i = 0; i < len; i++)
buf[i] = valid_salts[entropy[i] % (sizeof valid_salts - 1)];
buf[i] = '\0';
+ free(entropy);
}
-#else /* RANDOM_DEVICE */
+#else /* RANDOM_DEVICE || HAVE_ARC4RANDOM_BUF || HAVE_GETENTROPY */
void generate_salt(char *const buf, const unsigned int len)
{
@@ -421,21 +492,25 @@ void generate_salt(char *const buf, const unsigned int len)
buf[i] = '\0';
}
-#endif /* RANDOM_DEVICE */
+#endif /* RANDOM_DEVICE || HAVE_ARC4RANDOM_BUF || HAVE_GETENTROPY*/
-void display_help(int error)
+void NORETURN display_help(int error)
{
fprintf((EXIT_SUCCESS == error) ? stdout : stderr,
_("Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
"Crypts the PASSWORD using crypt(3).\n\n"));
- fprintf(stderr, _(
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -450,7 +525,7 @@ void display_help(int error)
void display_version(void)
{
printf("mkpasswd %s\n\n", VERSION);
- puts("Copyright (C) 2001-2008 Marco d'Itri\n"
+ puts("Copyright (C) 2001-2019 Marco d'Itri\n"
"This is free software; see the source for copying conditions. There is NO\n"
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.");
}
@@ -461,6 +536,33 @@ void display_methods(void)
printf(_("Available methods:\n"));
for (i = 0; methods[i].method != NULL; i++)
- printf("%s\t%s\n", methods[i].method, methods[i].desc);
+ if (methods[i].desc)
+ printf("%-15s %s\n", methods[i].method, methods[i].desc);
+}
+
+char *read_line(FILE *fp) {
+ int size = 128;
+ int ch;
+ size_t pos = 0;
+ char *password;
+
+ password = NOFAIL(malloc(size));
+
+ while ((ch = fgetc(fp)) != EOF) {
+ if (ch == '\n' || ch == '\r')
+ break;
+ password[pos++] = ch;
+ if (pos == size) {
+ size += 128;
+ password = NOFAIL(realloc(password, size));
+ }
+ }
+ password[pos] = '\0';
+
+ if (ferror(fp)) {
+ free(password);
+ return NULL;
+ }
+ return password;
}
diff --git a/new_gtlds_list b/new_gtlds_list
new file mode 100644
index 0000000..86120c2
--- /dev/null
+++ b/new_gtlds_list
@@ -0,0 +1,1240 @@
+# If a TLD is listed in this file then queries will go to whois.nic.$TLD.
+# All "new" gTLDs are mandated by the ICANN contract to provide port 43 and
+# web-based whois service on this standard domain.
+# Any exceptions can be handled in tld_serv_list as usual, since it will
+# be checked first.
+
+aaa
+aarp
+abarth
+abb
+abbott
+abbvie
+abc
+able
+abogado
+abudhabi
+academy
+accenture
+accountant
+accountants
+aco
+active
+actor
+adac
+ads
+adult
+aeg
+aetna
+afamilycompany
+afl
+africa
+agakhan
+agency
+aig
+aigo
+airbus
+airforce
+airtel
+akdn
+alfaromeo
+alibaba
+alipay
+allfinanz
+allstate
+ally
+alsace
+alstom
+americanexpress
+americanfamily
+amex
+amfam
+amica
+amsterdam
+analytics
+android
+anquan
+anz
+aol
+apartments
+app
+apple
+aquarelle
+arab
+aramco
+archi
+army
+art
+arte
+asda
+associates
+athleta
+attorney
+auction
+audi
+audible
+audio
+auspost
+author
+auto
+autos
+avianca
+aws
+axa
+azure
+baby
+baidu
+banamex
+bananarepublic
+band
+bank
+bar
+barcelona
+barclaycard
+barclays
+barefoot
+bargains
+baseball
+basketball
+bauhaus
+bayern
+bbc
+bbt
+bbva
+bcg
+bcn
+beats
+beauty
+beer
+bentley
+berlin
+best
+bestbuy
+bet
+bharti
+bible
+bid
+bike
+bing
+bingo
+bio
+black
+blackfriday
+blanco
+blockbuster
+blog
+bloomberg
+blue
+bms
+bmw
+bnl
+bnpparibas
+boats
+boehringer
+bofa
+bom
+bond
+boo
+book
+booking
+boots
+bosch
+bostik
+boston
+bot
+boutique
+box
+bradesco
+bridgestone
+broadway
+broker
+brother
+brussels
+budapest
+bugatti
+build
+builders
+business
+buy
+buzz
+bzh
+cab
+cafe
+cal
+call
+calvinklein
+cam
+camera
+camp
+cancerresearch
+canon
+capetown
+capital
+capitalone
+car
+caravan
+cards
+care
+career
+careers
+cars
+cartier
+casa
+case
+caseih
+cash
+casino
+catering
+catholic
+cba
+cbn
+cbre
+cbs
+ceb
+center
+ceo
+cern
+cfa
+cfd
+chanel
+channel
+charity
+chase
+chat
+cheap
+chintai
+chloe
+christmas
+chrome
+chrysler
+church
+cipriani
+circle
+cisco
+citadel
+citi
+citic
+city
+cityeats
+claims
+cleaning
+click
+clinic
+clinique
+clothing
+cloud
+club
+clubmed
+coach
+codes
+coffee
+college
+cologne
+comcast
+commbank
+community
+company
+compare
+computer
+comsec
+condos
+construction
+consulting
+contact
+contractors
+cooking
+cookingchannel
+cool
+corsica
+country
+coupon
+coupons
+courses
+cpa
+credit
+creditcard
+creditunion
+cricket
+crown
+crs
+cruise
+cruises
+csc
+cuisinella
+cymru
+cyou
+dabur
+dad
+dance
+data
+date
+dating
+datsun
+day
+dclk
+dds
+deal
+dealer
+deals
+degree
+delivery
+dell
+deloitte
+delta
+democrat
+dental
+dentist
+desi
+design
+dev
+dhl
+diamonds
+diet
+digital
+direct
+directory
+discount
+discover
+dish
+diy
+dnp
+docs
+doctor
+dodge
+dog
+doha
+domains
+doosan
+dot
+download
+drive
+dtv
+dubai
+duck
+dunlop
+duns
+dupont
+durban
+dvag
+dvr
+earth
+eat
+eco
+edeka
+education
+email
+emerck
+energy
+engineer
+engineering
+enterprises
+epost
+epson
+equipment
+ericsson
+erni
+esq
+estate
+esurance
+etisalat
+eurovision
+eus
+events
+everbank
+exchange
+expert
+exposed
+express
+extraspace
+fage
+fail
+fairwinds
+faith
+family
+fan
+fans
+farm
+farmers
+fashion
+fast
+fedex
+feedback
+ferrari
+ferrero
+fiat
+fidelity
+fido
+film
+final
+finance
+financial
+fire
+firestone
+firmdale
+fish
+fishing
+fit
+fitness
+flickr
+flights
+flir
+florist
+flowers
+flsmidth
+fly
+foo
+food
+foodnetwork
+football
+ford
+forex
+forsale
+forum
+foundation
+fox
+free
+fresenius
+frl
+frogans
+frontdoor
+frontier
+ftr
+fujitsu
+fujixerox
+fun
+fund
+furniture
+futbol
+fyi
+gal
+gallery
+gallo
+gallup
+game
+games
+gap
+garden
+gay
+gbiz
+gdn
+gea
+gent
+genting
+george
+ggee
+gift
+gifts
+gives
+giving
+glade
+glass
+gle
+global
+globo
+gmail
+gmbh
+gmo
+gmx
+godaddy
+gold
+goldpoint
+golf
+goo
+goodhands
+goodyear
+goog
+google
+gop
+got
+grainger
+graphics
+gratis
+green
+gripe
+grocery
+group
+guardian
+gucci
+guge
+guide
+guitars
+guru
+hair
+hamburg
+hangout
+haus
+hbo
+hdfc
+hdfcbank
+health
+healthcare
+help
+helsinki
+here
+hermes
+hgtv
+hiphop
+hisamitsu
+hitachi
+hiv
+hkt
+hockey
+holdings
+holiday
+homedepot
+homegoods
+homes
+homesense
+honda
+honeywell
+horse
+hospital
+host
+hosting
+hot
+hoteles
+hotels
+hotmail
+house
+how
+hsbc
+htc
+hughes
+hyatt
+hyundai
+ibm
+icbc
+ice
+icu
+ieee
+ifm
+iinet
+ikano
+imamat
+imdb
+immo
+immobilien
+inc
+industries
+infiniti
+ing
+ink
+institute
+insurance
+insure
+intel
+international
+intuit
+investments
+ipiranga
+irish
+iselect
+ismaili
+ist
+istanbul
+itau
+itv
+iveco
+iwc
+jaguar
+java
+jcb
+jcp
+jeep
+jetzt
+jewelry
+jio
+jlc
+jll
+jmp
+jnj
+joburg
+jot
+joy
+jpmorgan
+jprs
+juegos
+juniper
+kaufen
+kddi
+kerryhotels
+kerrylogistics
+kerryproperties
+kfh
+kia
+kim
+kinder
+kindle
+kitchen
+kiwi
+koeln
+komatsu
+kosher
+kpmg
+kpn
+krd
+kred
+kuokgroup
+kyoto
+lacaixa
+ladbrokes
+lamborghini
+lamer
+lancaster
+lancia
+lancome
+land
+landrover
+lanxess
+lasalle
+lat
+latino
+latrobe
+law
+lawyer
+lds
+lease
+leclerc
+lefrak
+legal
+lego
+lexus
+lgbt
+liaison
+lidl
+life
+lifeinsurance
+lifestyle
+lighting
+like
+lilly
+limited
+limo
+lincoln
+linde
+link
+lipsy
+live
+living
+lixil
+llc
+loan
+loans
+locker
+locus
+loft
+lol
+london
+lotte
+lotto
+love
+lpl
+lplfinancial
+ltd
+ltda
+lundbeck
+lupin
+luxe
+luxury
+macys
+madrid
+maif
+maison
+makeup
+man
+management
+mango
+map
+market
+marketing
+markets
+marriott
+marshalls
+maserati
+mattel
+mba
+mcd
+mcdonalds
+mckinsey
+med
+media
+meet
+melbourne
+meme
+memorial
+men
+menu
+meo
+merckmsd
+metlife
+miami
+microsoft
+mini
+mint
+mit
+mitsubishi
+mlb
+mls
+mma
+mobile
+mobily
+moda
+moe
+moi
+mom
+monash
+money
+monster
+montblanc
+mopar
+mormon
+mortgage
+moscow
+moto
+motorcycles
+mov
+movie
+movistar
+msd
+mtn
+mtpc
+mtr
+mutual
+mutuelle
+nab
+nadex
+nagoya
+nationwide
+natura
+navy
+nba
+nec
+netbank
+netflix
+network
+neustar
+new
+newholland
+news
+next
+nextdirect
+nexus
+nfl
+ngo
+nhk
+nico
+nike
+nikon
+ninja
+nissan
+nissay
+nokia
+northwesternmutual
+norton
+now
+nowruz
+nowtv
+nra
+nrw
+ntt
+nyc
+obi
+observer
+off
+office
+okinawa
+olayan
+olayangroup
+oldnavy
+ollo
+omega
+one
+ong
+onl
+online
+onyourside
+ooo
+open
+oracle
+orange
+organic
+orientexpress
+origins
+osaka
+otsuka
+ott
+ovh
+page
+pamperedchef
+panasonic
+panerai
+paris
+pars
+partners
+parts
+party
+passagens
+pay
+pccw
+pet
+pfizer
+pharmacy
+phd
+philips
+phone
+photo
+photography
+photos
+physio
+piaget
+pics
+pictet
+pictures
+pid
+pin
+ping
+pink
+pioneer
+pizza
+place
+play
+playstation
+plumbing
+plus
+pnc
+pohl
+poker
+politie
+porn
+pramerica
+praxi
+press
+prime
+prod
+productions
+prof
+progressive
+promo
+properties
+property
+protection
+pru
+prudential
+pub
+pwc
+qpon
+quebec
+quest
+qvc
+racing
+radio
+raid
+read
+realestate
+realtor
+realty
+recipes
+red
+redstone
+redumbrella
+rehab
+reise
+reisen
+reit
+reliance
+ren
+rent
+rentals
+repair
+report
+republican
+rest
+restaurant
+review
+reviews
+rexroth
+rich
+richardli
+ricoh
+rightathome
+ril
+rio
+rip
+rmit
+rocher
+rocks
+rodeo
+rogers
+room
+rsvp
+rugby
+ruhr
+run
+rwe
+ryukyu
+saarland
+safe
+safety
+sakura
+sale
+salon
+samsclub
+samsung
+sandvik
+sandvikcoromant
+sanofi
+sap
+sapo
+sarl
+sas
+save
+saxo
+sbi
+sbs
+sca
+scb
+schaeffler
+schmidt
+scholarships
+school
+schule
+schwarz
+science
+scjohnson
+scor
+scot
+search
+seat
+secure
+security
+seek
+select
+sener
+services
+ses
+seven
+sew
+sex
+sexy
+sfr
+shangrila
+sharp
+shaw
+shell
+shia
+shiksha
+shoes
+shop
+shopping
+shouji
+show
+showtime
+shriram
+silk
+sina
+singles
+site
+ski
+skin
+sky
+skype
+sling
+smart
+smile
+sncf
+soccer
+social
+softbank
+software
+sohu
+solar
+solutions
+song
+sony
+soy
+space
+spiegel
+sport
+spot
+spreadbetting
+srl
+srt
+stada
+staples
+star
+starhub
+statebank
+statefarm
+statoil
+stc
+stcgroup
+stockholm
+storage
+store
+stream
+studio
+study
+style
+sucks
+supplies
+supply
+support
+surf
+surgery
+suzuki
+swatch
+swiftcover
+swiss
+sydney
+symantec
+systems
+tab
+taipei
+talk
+taobao
+target
+tatamotors
+tatar
+tattoo
+tax
+taxi
+tci
+tdk
+team
+tech
+technology
+telecity
+telefonica
+temasek
+tennis
+teva
+thd
+theater
+theatre
+tiaa
+tickets
+tienda
+tiffany
+tips
+tires
+tirol
+tjmaxx
+tjx
+tkmaxx
+tmall
+today
+tokyo
+tools
+top
+toray
+toshiba
+total
+tours
+town
+toyota
+toys
+trade
+trading
+training
+travelchannel
+travelers
+travelersinsurance
+trust
+trv
+tube
+tui
+tunes
+tushu
+tvs
+ubank
+ubs
+uconnect
+unicom
+university
+uno
+uol
+ups
+vacations
+vana
+vanguard
+vegas
+ventures
+verisign
+versicherung
+vet
+viajes
+video
+vig
+viking
+villas
+vin
+vip
+virgin
+visa
+vision
+vista
+vistaprint
+viva
+vivo
+vlaanderen
+vodka
+volkswagen
+volvo
+vote
+voting
+voto
+voyage
+vuelos
+wales
+walmart
+walter
+wang
+wanggou
+warman
+watch
+watches
+weather
+weatherchannel
+webcam
+weber
+website
+wed
+wedding
+weibo
+weir
+whoswho
+wien
+wiki
+williamhill
+win
+windows
+wine
+winners
+wme
+wolterskluwer
+woodside
+work
+works
+world
+wow
+wtc
+wtf
+xbox
+xerox
+xfinity
+xihuan
+xin
+xn--11b4c3d
+xn--1ck2e1b
+xn--1qqw23a
+xn--30rr7y
+xn--3bst00m
+xn--3ds443g
+xn--3oq18vl8pn36a
+xn--3pxu8k
+xn--42c2d9a
+xn--45q11c
+xn--4gbrim
+xn--55qw42g
+xn--55qx5d
+xn--5su34j936bgsg
+xn--5tzm5g
+xn--6frz82g
+xn--6qq986b3xl
+xn--80adxhks
+xn--80aqecdr1a
+xn--80asehdb
+xn--80aswg
+xn--8y0a063a
+xn--9dbq2a
+xn--9et52u
+xn--9krt00a
+xn--b4w605ferd
+xn--bck1b9a5dre4c
+xn--c1avg
+xn--c2br7g
+xn--cck2b3b
+xn--cg4bki
+xn--czr694b
+xn--czrs0t
+xn--czru2d
+xn--d1acj3b
+xn--eckvdtc9d
+xn--efvy88h
+xn--estv75g
+xn--fct429k
+xn--fhbei
+xn--fiq228c5hs
+xn--fiq64b
+xn--fjq720a
+xn--flw351e
+xn--fzys8d69uvgm
+xn--g2xx48c
+xn--gckr3f0f
+xn--gk3at1e
+xn--hxt814e
+xn--i1b6b1a6a2e
+xn--imr513n
+xn--io0a7i
+xn--j1aef
+xn--jlq61u9w7b
+xn--jvr189m
+xn--kcrx77d1x4a
+xn--kpu716f
+xn--kput3i
+xn--mgba3a3ejt
+xn--mgba7c0bbn0a
+xn--mgbaakc7dvf
+xn--mgbab2bd
+xn--mgbb9fbpob
+xn--mgbca7dzdo
+xn--mgbi4ecexp
+xn--mgbt3dhd
+xn--mk1bu44c
+xn--mxtq1m
+xn--ngbc5azd
+xn--ngbe9e0a
+xn--ngbrx
+xn--nqv7f
+xn--nqv7fs00ema
+xn--nyqy26a
+xn--otu796d
+xn--p1acf
+xn--pbt977c
+xn--pssy2u
+xn--q9jyb4c
+xn--qcka1pmc
+xn--rhqv96g
+xn--rovu88b
+xn--ses554g
+xn--t60b56a
+xn--tckwe
+xn--tiq49xqyj
+xn--unup4y
+xn--vermgensberater-ctb
+xn--vermgensberatung-pwb
+xn--vhquv
+xn--vuq861b
+xn--w4r85el8fhu5dnra
+xn--w4rs40l
+xn--xhq521b
+xn--zfr164b
+xperia
+xyz
+yachts
+yahoo
+yamaxun
+yandex
+yodobashi
+yoga
+yokohama
+you
+youtube
+yun
+zappos
+zara
+zero
+zip
+zippo
+zone
+zuerich
diff --git a/nic_handles_list b/nic_handles_list
new file mode 100644
index 0000000..3d3940a
--- /dev/null
+++ b/nic_handles_list
@@ -0,0 +1,24 @@
+-arin whois.arin.net
+-ripe whois.ripe.net
+-mnt whois.ripe.net
+-lacnic whois.lacnic.net
+-afrinic whois.afrinic.net
+-ap whois.apnic.net
+-cznic whois.nic.cz
+-dk whois.dk-hostmaster.dk
+-il whois.isoc.org.il
+-is whois.isnic.is
+-kg whois.domain.kg
+-coop whois.nic.coop
+-frnic whois.nic.fr
+-lrms whois.afilias.info
+-metu whois.nic.tr
+-nicat whois.nic.at
+-nicci whois.nic.ci
+-irnic whois.nic.ir
+-norid whois.norid.no
+-tel whois.nic.tel
+-adnic whois.nic.org.uy
+-sixxs whois.sixxs.net
+-uanic whois.ua
+-bzh whois.nic.bzh
diff --git a/po/Makefile b/po/Makefile
index d695b49..6df1463 100644
--- a/po/Makefile
+++ b/po/Makefile
@@ -1,5 +1,9 @@
prefix = /usr
+ifdef DESTDIR
+BASEDIR := $(DESTDIR)
+endif
+
INSTALL= install
INSTALLNLSDIR=$(BASEDIR)$(prefix)/share/locale
diff --git a/po/cs.po b/po/cs.po
index bd21907..a57dfe1 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,12 +1,12 @@
# Czech translation for whois
-# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2009, 2010, 2012, 2013.
+# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2009, 2010, 2012, 2013, 2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: whois 5.0.24\n"
+"Project-Id-Version: whois 5.4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2013-04-10 20:06+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-06-28 06:05+02:00\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
"Language: cs\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -27,31 +27,31 @@ msgstr ""
"Chyby programu hlaste na %s (anglicky), chyby překladu na\n"
"<translation-team-cs@lists.sourceforge.net> (česky).\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Používám server %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Tato TLD nemá žádný whoisový server, ale k whoisové databázi se lze dostat na"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Tato TLD nemá žádný whoisový server."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Pro tento druh objektu není znám žádný whoisový server."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr ""
"Neznámé číslo AS nebo neznámá IP síť.\n"
"Prosím, pořiďte si novou verzi tohoto programu."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Používá se server %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -62,7 +62,7 @@ msgstr ""
"Dotazuji se na IPv4 konec %s příslušející 6to4 IPv6 adrese.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -73,7 +73,7 @@ msgstr ""
"Dotazuji se na IPv4 konec %s příslušející Teredo IPv6 adrese.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -82,7 +82,7 @@ msgstr ""
"Znění dotazu: „%s“\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -95,16 +95,16 @@ msgstr ""
"Nalezen odkaz na %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Tento řádek nemohu rozebrat: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Varování: RIPE příznak použit s tradičním serverem."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -112,119 +112,163 @@ msgstr ""
"Katastrofální chyba: text prohlášení byl pozměněn.\n"
"Prosím, pořiďte si novou verzi tohoto programu.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Jméno počítače %s nenalezeno."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/TCP: neznámá služba"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Čas vypršel."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Přerušeno signálem %d…"
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Použití: whois [PŘEPÍNAČ]… OBJEKT…\n"
+"\n"
+"-h STROJ, --host STROJ připojí se na server STROJ\n"
+"-p PORT, --port PORT připojí se na PORT\n"
+"-I dotáže se whois.iana.org a následuje tamní odkazy\n"
+"-H skryje právní prohlášení\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose vysvětlí, co se právě provádí\n"
+" --help zobrazí tuto nápovědu a skončí\n"
+" --version vypíše informace o verzi a skončí\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"Tyto přepínače jsou podporovány serverem whois.ripe.net a některými\n"
+"podobnými jemu:\n"
+"-l nalezne o jednu úroveň širší shodu\n"
+"-L nalezne všechny širší shody\n"
+"-m nalezne všechny nejbližší užší shody\n"
+"-M nalezne všechny užší shody\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c nalezne nejužší shodu obsahující atribut mnt-irt\n"
+"-x přesná shoda\n"
+"-b vrátí stručný rozsah IP adres s kontaktem na "
+"stížnosti\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B vypne filtrování objektů (zobrazuje e-mailové "
+"adresy)\n"
+"-G vypne seskupování přidružených objektů\n"
+"-d vrací též objekty delegace reverzního DNS\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATR[,ATR]… provede inverzní dotaz k zadaným ATRIBUTŮM\n"
+"-T TYP[,TYP]… dotáže se jen na objekty zadaného TYPU\n"
+"-K vrátí pouze primární klíče\n"
+"-r vypne rekurzivní dohledávání kontaktů\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
-"-t TYPE request template for object of TYPE\n"
-"-v TYPE request verbose template for object of TYPE\n"
-"-q [version|sources|types] query specified server info\n"
msgstr ""
-"Použití: whois [PŘEPÍNAČ]… OBJEKT…\n"
-"\n"
-"-h STROJ, --host STROJ připojí se na server STROJ\n"
-"-p PORT, --port PORT připojí se na PORT\n"
-"-H skryje právní prohlášení\n"
-" --verbose vysvětlí, co se právě provádí\n"
-" --help zobrazí tuto nápovědu a skončí\n"
-" --version vypíše informace o verzi a skončí\n"
-"\n"
-"Tyto přepínače jsou podporovány serverem whois.ripe.net a některými\n"
-"podobnými jemu:\n"
-"-l nalezne o jednu úroveň širší shodu\n"
-"-L nalezne všechny širší shody\n"
-"-m nalezne všechny nejbližší užší shody\n"
-"-M nalezne všechny užší shody\n"
-"-c nalezne nejužší shodu obsahující atribut mnt-irt\n"
-"-x přesná shoda\n"
-"-b vrátí stručný rozsah IP adres s kontaktem na stížnosti\n"
-"-B vypne filtrování objektů (zobrazuje e-mailové adresy)\n"
-"-G vypne seskupování přidružených objektů\n"
-"-d vrací též objekty delegace reverzního DNS\n"
-"-i ATR[,ATR]… provede inverzní dotaz k zadaným ATRIBUTŮM\n"
-"-T TYP[,TYP]… dotáže se jen na objekty zadaného TYPU\n"
-"-K vrátí pouze primární klíče\n"
-"-r vypne rekurzivní dohledávání kontaktů\n"
"-R vynutí zobrazení místní kopie doménového objektu,\n"
" i když obsahuje odkaz\n"
"-a prohledá rovněž všechny zrcadlené databáze\n"
"-s ZDROJ[,ZDROJ]… prohledá databázi zrcadlenou ze ZDROJE\n"
"-g ZDROJ:PRVNÍ-POSLEDNÍ nalezne aktualizace ze ZDROJE se sériovým číslem\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
+"-t TYPE request template for object of TYPE\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources|types] query specified server info\n"
+msgstr ""
" PRVNÍ až POSLEDNÍ\n"
"-t TYP požaduje šablonu pro objekt druhu TYP\n"
"-v TYP požaduje podrobnou šablonu pro objekt druhu TYP\n"
"-q [version|sources|types]\n"
-" dotáže se na zadané informace o serveru („version“ –\n"
+" dotáže se na zadané informace o serveru („version“ "
+"–\n"
" verze, „sources“ – zdroje, „types“ – typy)\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "rozšířený BSDI crypt(3) založený na šifře DES"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "standardní crypt(3) založený na 56bitové šifře DES"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "Neplatná metoda „%s“.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Neplatné číslo „%s“.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Pro podrobnosti zkuste příkaz „%s --help“.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
@@ -232,7 +276,7 @@ msgstr[0] "Chybná délka soli: %d bajt, zatímco očekáváno %d.\n"
msgstr[1] "Chybná délka soli: %d bajty, zatímco očekáváno %d.\n"
msgstr[2] "Chybná délka soli: %d bajtů, zatímco očekáváno %d.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
@@ -240,22 +284,22 @@ msgstr[0] "Chybná délka soli: %d bajt, zatímco očekáváno %d <= n <= %d.\n"
msgstr[1] "Chybná délka soli: %d bajty, zatímco očekáváno %d <= n <= %d.\n"
msgstr[2] "Chybná délka soli: %d bajtů, zatímco očekáváno %d <= n <= %d.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Neplatný znak v soli „%c“.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Heslo: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "Metoda není podporována funkcí crypt(3).\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -266,16 +310,33 @@ msgstr ""
"Zašifruje HESLO pomocí funkce crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=DRUH vybere DRUH metody\n"
+" -5 stejné jako --method=md5\n"
+" -S, --salt=SŮL použije zadanou SŮL\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=POČET použije zadaný POČET kol\n"
+" -P, --password-fd=Č přečte heslo z deskriptoru souboru Č\n"
+" místo z /dev/tty\n"
+" -s, --stdin jako --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -285,13 +346,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=DRUH vybere DRUH metody\n"
-" -5 stejné jako --method=md5\n"
-" -S, --salt=SŮL použije zadanou SŮL\n"
-" -R, --rounds=POČET použije zadaný POČET kol\n"
-" -P, --password-fd=Č přečte heslo z deskriptoru souboru Č\n"
-" místo z /dev/tty\n"
-" -s, --stdin jako --password-fd=0\n"
" -h, --help zobrazí tuto nápovědu a skončí\n"
" -V, --version vypíše informace o verzi a skončí\n"
"\n"
@@ -302,7 +356,7 @@ msgstr ""
"Chyby programu hlaste na %s (anglicky), chyby překladu na\n"
"<translation-team-cs@lists.sourceforge.net> (česky).\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Dostupné metody:\n"
diff --git a/po/da.po b/po/da.po
index 01ce95c..7805348 100644
--- a/po/da.po
+++ b/po/da.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 5.0.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
"PO-Revision-Date: 2013-04-13 17:30+01:00\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -29,28 +29,28 @@ msgstr ""
"\n"
"Rapporter fejl til %s (på engelsk).\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Bruger server %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr "Denne TLD har ingen whois-server, men du kan tilgå whois-databasen på"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Denne TLD har ingen whois-server."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Ingen whois-server er kendt for denne type af objekt."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Ukendt AS- eller IP-netværksnummer. Opgrader venligst dette program."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Bruger server %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -61,7 +61,7 @@ msgstr ""
"Forespørger efter IPv4-slutpunktet %s for en 6to4 IPv6-adresse.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -72,7 +72,7 @@ msgstr ""
"Forespørger efter IPv4-slutpunktet %s for en Teredo IPv6-adresse.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -81,7 +81,7 @@ msgstr ""
"Forespørgelsesstreng: »%s«\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -94,16 +94,16 @@ msgstr ""
"Fandt en henvisning til %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Kan ikke fortolke denne linje: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Advarsel: RIPE-flag brugt med en traditionel server."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -111,144 +111,188 @@ msgstr ""
"Katastrofal fejl: Teksten for ansvarsfraskrivelse er blevet ændret.\n"
"Opgrader venligst dette program.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Vært %s er ikke fundet."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: Ukendt tjeneste"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Tidsudløb."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Afbrudt af signal %d ..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Brug: whois [TILVALG]... OBJEKT...\n"
+"\n"
+"-h VÆRT, --host VÆRT forbind til server-VÆRT\n"
+"-p PORT, --port PORT forbind til PORT\n"
+"-H skjul juridisk ansvarsfraskrivelse\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose forklar hvad der sker\n"
+" --help vis denne hjælpetekst og afslut\n"
+" --version vis versionsinformation og afslut\n"
+"\n"
+
+#: ../whois.c:1501
+#, fuzzy, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"-l et niveau mindre specifik opslag\n"
+"-L find alle mindre specifikke resultater\n"
+"-m find første niveau mere specifikke resultater\n"
+"-M find alle mere specifikke resultater\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c find det mindste resultat der indeholder attributten\n"
+" mnt-irt\n"
+"-x præcis match\n"
+"-b returner korte IP-adresseintervaller med "
+"misbrugskontakt\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B sluk for objektfiltrering (vis e-post-adresser)\n"
+"-G sluk for gruppering af associerede objekter\n"
+"-d returner også DNS-omvendte delegationsobjekter\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... foretag et omvendt opslag for angivne ATTRibutter\n"
+"-T TYPE[,TYPE]... kig kun efter objekter i form af TYPE\n"
+"-K kun primære nøgler returneres\n"
+"-r deaktiver omvendte opslag for kontaktinformation\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
-"-t TYPE request template for object of TYPE\n"
-"-v TYPE request verbose template for object of TYPE\n"
-"-q [version|sources|types] query specified server info\n"
msgstr ""
-"Brug: whois [TILVALG]... OBJEKT...\n"
-"\n"
-"-h VÆRT, --host VÆRT forbind til server-VÆRT\n"
-"-p PORT, --port PORT forbind til PORT\n"
-"-H skjul juridisk ansvarsfraskrivelse\n"
-" --verbose forklar hvad der sker\n"
-" --help vis denne hjælpetekst og afslut\n"
-" --version vis versionsinformation og afslut\n"
-"\n"
-"-l et niveau mindre specifik opslag\n"
-"-L find alle mindre specifikke resultater\n"
-"-m find første niveau mere specifikke resultater\n"
-"-M find alle mere specifikke resultater\n"
-"-c find det mindste resultat der indeholder attributten\n"
-" mnt-irt\n"
-"-x præcis match\n"
-"-b returner korte IP-adresseintervaller med misbrugskontakt\n"
-"-B sluk for objektfiltrering (vis e-post-adresser)\n"
-"-G sluk for gruppering af associerede objekter\n"
-"-d returner også DNS-omvendte delegationsobjekter\n"
-"-i ATTR[,ATTR]... foretag et omvendt opslag for angivne ATTRibutter\n"
-"-T TYPE[,TYPE]... kig kun efter objekter i form af TYPE\n"
-"-K kun primære nøgler returneres\n"
-"-r deaktiver omvendte opslag for kontaktinformation\n"
-"-R fremtving visning af lokal kopi af domæneobjektet selv\n"
+"-R fremtving visning af lokal kopi af domæneobjektet "
+"selv\n"
" hvis det indeholder henvisning\n"
"-a søg i alle databaser\n"
"-s KILDE[,KILDE]... søg databasen fra KILDE\n"
-"-g KILDE:FØRST-SIDST find opdateringer fra KILDE fra seriel FØRST til SIDST\n"
+"-g KILDE:FØRST-SIDST find opdateringer fra KILDE fra seriel FØRST til "
+"SIDST\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
+"-t TYPE request template for object of TYPE\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources|types] query specified server info\n"
+msgstr ""
"-t TYPE anmod om skabelon for objekttypen TYPE\n"
"-v TYPE anmod om uddybende skabelon for objekttypen TYPE\n"
"-q [version|kilder|typer] forespørg angivet serverinfo\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+#, fuzzy
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "standard 56-bit DES-baseret Crypt(3)"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "standard 56-bit DES-baseret Crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "Ugyldig metode »%s«\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Ugyldigt tal »%s«.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Prøv »%s --help« for yderligere information.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Forkert salt-længde: %d byte men %d var forventet.\n"
msgstr[1] "Forkert salt-længde: %d byte men %d var forventet.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "Forkert salt-længde: %d byte men %d <= n <= %d var forventet.\n"
msgstr[1] "Forkert salt-længde: %d byte men %d <= n <= %d var forventet.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Ugyldigt salt-tegn »%c«.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Adgangskode: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "Metoden er ikke understøttet af crypt(3).\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -259,16 +303,33 @@ msgstr ""
"Krypterer ADGANGSKODEN med crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TYPE vælg metoden TYPE\n"
+" -5 som --method=md5\n"
+" -S, --salt=SALT brug den angivne SALT\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=ANTAL brug det angivne ANTAL af runder\n"
+" -P, --password-fd=NUM læs adgangskoden fra filbeskriveren NUM\n"
+" i steden for /dev/tty\n"
+" -s, --stdin som --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -278,13 +339,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TYPE vælg metoden TYPE\n"
-" -5 som --method=md5\n"
-" -S, --salt=SALT brug den angivne SALT\n"
-" -R, --rounds=ANTAL brug det angivne ANTAL af runder\n"
-" -P, --password-fd=NUM læs adgangskoden fra filbeskriveren NUM\n"
-" i steden for /dev/tty\n"
-" -s, --stdin som --password-fd=0\n"
" -h, --help vis denne hjælpetekst og afslut\n"
" -V, --version vis versionsinformation og afslut\n"
"\n"
@@ -294,7 +348,7 @@ msgstr ""
"\n"
"Rapporter fejl til %s (på engelsk).\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Tilgængelige metoder:\n"
diff --git a/po/de.po b/po/de.po
index e6f159e..aa4b6d6 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,14 +1,14 @@
# Translation of whois to German
-# Copyright (C) 2001 Simon Richter <Simon.Richter@in.tum.de>, 2004 Adrian
-# Bunk <bunk@fs.tum.de>, 2010, 2013 Chris Leick <c.leick@vollbio.de>.
+# Copyright (C) 2001 Simon Richter <Simon.Richter@in.tum.de>, 2004 Adrian
+# Bunk <bunk@fs.tum.de>, 2010, 2013, 2019 Chris Leick <c.leick@vollbio.de>.
# This file is distributed under the same license as the whois package.
#
msgid ""
msgstr ""
-"Project-Id-Version: whois 5.0.24\n"
-"Report-Msgid-Bugs-To: whois@packages.debian.org\n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2013-04-27 21:32+0200\n"
+"Project-Id-Version: whois 5.4.4\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-06-28 18:02+0200\n"
"Last-Translator: Chris Leick <c.leick@vollbio.de>\n"
"Language-Team: German <debian-l10n-german@lists.debian.org>\n"
"Language: de\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -28,32 +28,32 @@ msgstr ""
"\n"
"Berichten Sie Fehler auf Englisch an %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Server %s wird benutzt.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Diese TLD hat keinen Whois-Server, kann aber auf eine Whois-Datenbank "
"zugreifen unter"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Diese TLD hat keinen Whois-Server."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Für diese Art von Objekten ist kein Whois-Server bekannt."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr ""
"Unbekannte AS-Nummer oder unbekanntes IP-Netzwerk. Bitte führen Sie ein "
"Upgrade dieses Programms durch."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Server %s wird benutzt.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -64,7 +64,7 @@ msgstr ""
"Abfrage des IPv4-Endpunkts %s einer 6to4-IPv6-Adresse.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -75,7 +75,7 @@ msgstr ""
"Abfrage des IPv4-Endpunkts %s einer Teredo-IPv6-Adresse.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -84,7 +84,7 @@ msgstr ""
"Abfragezeichenkette: »%s«\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -97,17 +97,17 @@ msgstr ""
"Verweis auf %s gefunden.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Diese Zeile kann nicht ausgewertet werden: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr ""
"Warnung: RIPE-Flags wurden mit einem »traditionellen« Server verwendet."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -115,154 +115,198 @@ msgstr ""
"Katastrophaler Fehler: Haftungsausschlusstext wurde geändert.\n"
"Bitte führen Sie ein Upgrade dieses Programms durch.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Host %s nicht gefunden."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: unbekannter Dienst"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Zeitüberschreitung"
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Durch Signal %d unterbrochen …"
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
-" --verbose explain what is being done\n"
-" --help display this help and exit\n"
-" --version output version information and exit\n"
-"\n"
-"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
-"-l find the one level less specific match\n"
-"-L find all levels less specific matches\n"
-"-m find all one level more specific matches\n"
-"-M find all levels of more specific matches\n"
-"-c find the smallest match containing a mnt-irt "
-"attribute\n"
-"-x exact match\n"
-"-b return brief IP address ranges with abuse contact\n"
-"-B turn off object filtering (show email addresses)\n"
-"-G turn off grouping of associated objects\n"
-"-d return DNS reverse delegation objects too\n"
-"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
-"-T TYPE[,TYPE]... only look for objects of TYPE\n"
-"-K only primary keys are returned\n"
-"-r turn off recursive look-ups for contact information\n"
-"-R force to show local copy of the domain object even\n"
-" if it contains referral\n"
-"-a also search all the mirrored databases\n"
-"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
-"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
-"-t TYPE request template for object of TYPE\n"
-"-v TYPE request verbose template for object of TYPE\n"
-"-q [version|sources|types] query specified server info\n"
msgstr ""
"Aufruf: whois [OPTION] … OBJEKT …\n"
"\n"
"-h HOST, --host HOST verbindet sich mit Server HOST.\n"
"-p PORT, --port PORT verbindet sich mit PORT.\n"
+"-I fragt whois.iana.org ab und folgt dessen Verweis.\n"
"-H versteckt Haftungsausschlussklauseln.\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
+" --verbose explain what is being done\n"
+" --help display this help and exit\n"
+" --version output version information and exit\n"
+"\n"
+msgstr ""
" --verbose erklärt, was getan wird.\n"
" --help zeigt diese Hilfe und beendet sich.\n"
" --version gibt Versionsinformationen aus und beendet sich.\n"
"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
+"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
+"-l find the one level less specific match\n"
+"-L find all levels less specific matches\n"
+"-m find all one level more specific matches\n"
+"-M find all levels of more specific matches\n"
+msgstr ""
"Diese Schalter werden von whois.ripe.net und einigen RIPE ähnlichen Servern\n"
"unterstützt:\n"
-"-l sucht den um eine Stufe weniger spezifischen Treffer.\n"
+"-l sucht den um eine Stufe weniger spezifischen "
+"Treffer.\n"
"-L sucht alle Stufen weniger spezifischer Treffer.\n"
"-m sucht alle um eine Stufe spezifischeren Treffer.\n"
"-M sucht alle Stufen der spezifischeren Treffer.\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
+"-c find the smallest match containing a mnt-irt "
+"attribute\n"
+"-x exact match\n"
+"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
"-c sucht die kleinste Übereinstimmung eines\n"
" »mnt-irt«-Attributs.\n"
"-x exakte Übereinstimmung\n"
"-b gibt einen kurzen IP-Adressbereich mit "
"Beschwerdekontakt\n"
" zurück.\n"
-"-B schaltet die Objektfilterung aus (zeigt "
-"E-Mail-Adressen)\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
+"-B turn off object filtering (show email addresses)\n"
+"-G turn off grouping of associated objects\n"
+"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B schaltet die Objektfilterung aus (zeigt E-Mail-"
+"Adressen)\n"
"-G schaltet die Gruppierung verbundener Objekte aus.\n"
"-d gibt auch DNS-Reverse-Delegation-Objekte zurück.\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
+"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
+"-T TYPE[,TYPE]... only look for objects of TYPE\n"
+"-K only primary keys are returned\n"
+"-r turn off recursive look-ups for contact information\n"
+msgstr ""
"-i ATTR[,ATTR] … schlägt angegebene ATTRibute in umgekehrter Richtung\n"
" nach.\n"
"-T TYP[,TYP] … beachtet nur Objekte dieses TYPs.\n"
"-K gibt nur Primärschlüssel zurück.\n"
"-r schaltet das rekursive Nachschlagen von\n"
" Kontaktinformationen aus.\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
+"-R force to show local copy of the domain object even\n"
+" if it contains referral\n"
+"-a also search all the mirrored databases\n"
+"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
+"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
"-R erzwingt die Anzeige einer lokalen Kopie des\n"
-" Domain-Objekts, selbst wenn es einen Verweis enthält.\n"
+" Domain-Objekts, selbst wenn es einen Verweis "
+"enthält.\n"
"-a durchsucht auch die gespiegelten Datenbanken.\n"
"-s QUELLE[,QUELLE] … durchsucht die von QUELLE gespiegelte Datenbank.\n"
"-g QUELLE:ANFANG-ENDE sucht Aktualisierungen der QUELLE aufeinanderfolgend "
"von\n"
" ANFANG bis ENDE\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
+"-t TYPE request template for object of TYPE\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources|types] query specified server info\n"
+msgstr ""
"-t TYP fragt die Schablone des Objekts des TYPs ab.\n"
"-v TYP fragt die Schablone des Objekts des TYPs ausführlich "
"ab.\n"
"-q [version|sources|types] fragt die angegebene Server-Information ab.\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+# https://en.wikipedia.org/wiki/Crypt_%28C%29#BSDi_extended_DES-based_scheme
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "BSDi-erweitertes DES-basiertes Crypt(3)"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "Standard-56-Bit-DES-basiertes Crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "Ungültige Methode »%s«\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Falsche Nummer »%s«.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Versuchen Sie »%s --help«, um weitere Informationen zu erhalten.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Falsche Salt-Länge: %d Byte, aber %d wurden erwartet.\n"
msgstr[1] "Falsche Salt-Länge: %d Byte, aber %d wurden erwartet.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "Falsche Salt-Länge: %d Byte, aber %d <= n <= %d wurden erwartet.\n"
msgstr[1] "Falsche Salt-Länge: %d Byte, aber %d <= n <= %d wurden erwartet.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Illegales Salt-Zeichen »%c«.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Passwort: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "Methode nicht von »crypt(3)« unterstützt.\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -273,16 +317,34 @@ msgstr ""
"Verschlüsselt das PASSWORT mit »crypt(3)«.\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TYP wählt die Methode TYP aus.\n"
+" -5 wie --method=md5\n"
+" -S, --salt=SALT benutzt angegebenes SALT.\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=ANZAHL benutzt angegebene ANZAHL von Runden.\n"
+" -P, --password-fd=NUM liest das Passwort vom Dateideskriptor NUM "
+"anstatt\n"
+" von /dev/tty\n"
+" -s, --stdin wie --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -292,16 +354,9 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TYP wählt die Methode TYP aus.\n"
-" -5 wie --method=md5\n"
-" -S, --salt=SALT benutzt angegebenes SALT.\n"
-" -R, --rounds=ANZAHL benutzt angegebene ANZAHL von Runden.\n"
-" -P, --password-fd=NUM liest das Passwort vom Dateideskriptor NUM "
-"anstatt\n"
-" von /dev/tty\n"
-" -s, --stdin wie --password-fd=0\n"
" -h, --help zeigt diese Hilfe an und beendet sich.\n"
-" -V, --version zeigt Versionsinformationen an und beendet sich.\n"
+" -V, --version zeigt Versionsinformationen an und beendet "
+"sich.\n"
"\n"
"Falls das PASSWORT fehlt, wird es interaktiv erfragt.\n"
"Falls SALT nicht angegeben wurde, wird ein zufälliges erzeugt.\n"
@@ -309,7 +364,7 @@ msgstr ""
"\n"
"Berichten Sie Fehler auf Englisch an %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Verfügbare Methoden:\n"
diff --git a/po/el.po b/po/el.po
index 0eff093..f06a65a 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 4.6.9\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
"PO-Revision-Date: 2003-12-10 08:51+0200\n"
"Last-Translator: Velonis Petros <velonis@freemail.gr>\n"
"Language-Team: Greek <velonis@freemail.gr>\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -27,33 +27,33 @@ msgstr ""
"\n"
"Αναφέρατε σφάλματα στο %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Γίνεται χρήση του εξυπηρετητή %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Αυτό το TLD δεν έχει εξυπηρετητή whois, ωστόσο μπορείτε να προσπελάσετε την "
"βάση whois στο"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Αυτό το TLD δεν έχει εξυπηρετητή whois."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr ""
"Κανένας εξυπηρετητής whois δεν είναι γνωστός για αυτού του είδους το "
"αντικείμενο."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr ""
"Άγνωστος αριθμός AS ή IP δικτύου. Παρακαλώ αναβαθμίστε αυτό το πρόγραμμα."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Γίνεται χρήση του εξυπηρετητή %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -64,7 +64,7 @@ msgstr ""
"Άντληση πληροφοριών για το σημείο τέλους IPv4 %s μιας διεύθυνσης 6to4 IPv6.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, fuzzy, c-format
msgid ""
"\n"
@@ -75,7 +75,7 @@ msgstr ""
"Άντληση πληροφοριών για το σημείο τέλους IPv4 %s μιας διεύθυνσης 6to4 IPv6.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -84,7 +84,7 @@ msgstr ""
"Αλφαριθμητικό ερώτησης: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -97,18 +97,18 @@ msgstr ""
"Βρέθηκε αναφορά στο %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Αδύνατη η ανάλυση αυτής της γραμμής: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr ""
"Προειδοποίηση: Η σημαίες του RIPE χρησιμοποιούνται σε έναν παραδοσιακό "
"εξυπηρετητή."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -116,113 +116,192 @@ msgstr ""
"Καταστροφικό σφάλμα: το κείμενο της αποποίησης ευθυνών έχει τροποποιηθεί.\n"
"Παρακαλώ αναβαθμίστε το πρόγραμμα.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Το σύστημα %s δε βρέθηκε."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: άγνωστη υπηρεσία"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Διάλειμμα."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Διακοπή από το σήμα %d..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Χρήση: whois [ΕΠΙΛΟΓΕΣ]... ΑΝΤΙΚΕΙΜΕΝΟ...\n"
+"\n"
+"-h ΣΥΣΤΗΜΑ σύνδεση στον εξυπηρετητή ΣΎΣΤΗΜΑ\n"
+"-p ΘΥΡΑ σύνδεση στη ΘΥΡΑ\n"
+"-H απόκρυψη του νομικού εγγράφου αποποίησης ευθύνης\n"
+
+#: ../whois.c:1495
+#, fuzzy, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose εξήγηση του τί συμβαίνει\n"
+" --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
+" --version εμφάνιση της έκδοσης και έξοδος\n"
+
+#: ../whois.c:1501
+#, fuzzy, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"-l ένα επίπεδο λιγότερο συγκεκριμένη αναζήτηση [μόνο "
+"RPSL]\n"
+"-L εύρεση όλων των Λιγότερο συγκεκριμένων ταιριασμάτων\n"
+"-m εύρεση όλων των πρώτου επιπέδου περισσότερο "
+"συγκεκριμένων ταιριασμάτων\n"
+"-M εύρεση όλων των Περισσότερο συγκεκριμένων "
+"ταιριασμάτων\n"
+
+#: ../whois.c:1508
+#, fuzzy, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c εύρεση του μικρότερου ταιριάσματος που να περιέχει "
+"μια ένα χαρακτηριστικό mnt-irt \n"
+"-x ακριβές ταίριασμα\n"
+
+#: ../whois.c:1513
+#, fuzzy, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-d επιστροφή και των αντίστροφων αντικειμένων DNS [μόνο "
+"RPSL]\n"
+
+#: ../whois.c:1518
+#, fuzzy, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ΧΑΡΑΚ[,ΧΑΡΑΚ]... να γίνει μια αντίστροφη αναζήτηση για τα καθορισμένα "
+"ΧΑΡΑΚτηριστικά\n"
+"-T ΕΙΔΟΣ[,ΕΊΔΟΣ]... αναζήτηση μόνο αντικειμένου του ΕΙΔΟΥΣ\n"
+"-K επιστροφή μόνο των πρωταρχικών κλειδιών [μόνο RPSL]\n"
+"-r απενεργοποίηση των αναδρομικών αναζητήσεων για "
+"πληροφορίες επικοινωνίας\n"
+
+#: ../whois.c:1524
+#, fuzzy, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R επιβολή εμφάνισης τοπικού αντιγράφου του αντικειμένου "
+"επιθήματος ακόμα και αν περιέχει αναφορές\n"
+"-a αναζήτηση σε όλες τις βάσεις δεδομένων\n"
+"-s ΠΗΓΗ[,ΠΗΓΉ]... αναζήτηση της βάσης δεδομένων από την ΠΗΓΗ\n"
+"-g ΠΗΓΗ:ΠΡΩΤΟ:ΤΕΛΕΥΤΑΙΟ εμφάνιση αναβαθμίσεων από την ΠΗΓΗ από το σειριακό "
+"ΠΡΏΤΟ ως ΤΕΛΕΥΤΑΙΟ\n"
+
+#: ../whois.c:1531
+#, fuzzy, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t ΕΙΔΟΣ αναζήτηση προτύπου για το αντικείμενο του ΕΊΔΟΥΣ "
+"('all' για εμφάνιση λίστας)\n"
+"-v ΕΙΔΟΣ αναζήτηση περιφραστικού προτύπου για το αντικείμενο "
+"του ΕΙΔΟΥΣ\n"
+"-q [έκδοση|πηγές|τύποι] συγκεκριμένο ερώτημα πληροφοριών εξυπηρετητή [μόνο "
+"RPSL]\n"
+
+#: ../mkpasswd.c:128
+#, fuzzy
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "\tκαθεριερωμένη 56 bit με βάση το DES crypt(3)"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:131
#, fuzzy
msgid "standard 56 bit DES-based crypt(3)"
msgstr "\tκαθεριερωμένη 56 bit με βάση το DES crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, fuzzy, c-format
msgid "Invalid method '%s'.\n"
msgstr "Μη αποδεκτό νούμερο '%s'.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Μη αποδεκτό νούμερο '%s'.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Προσπάθησε '%s --help' για περισσότερες πληροφορίες.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, fuzzy, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Εσφαλμένο μήκος salt : %d byte(s) όταν αναμένεται %d .\n"
msgstr[1] "Εσφαλμένο μήκος salt : %d byte(s) όταν αναμένεται %d .\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, fuzzy, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "Εσφαλμένο μήκος salt : %d byte(s) όταν αναμένεται %d .\n"
msgstr[1] "Εσφαλμένο μήκος salt : %d byte(s) όταν αναμένεται %d .\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Μη αποδεκτός χαρακτήρας salt '%c'.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Συνθηματικό: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr ""
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -233,16 +312,30 @@ msgstr ""
"Κρυπτογραφεί το ΣΥΝΘΗΜΑΤΙΚΟ χρησιμοποιώντας το crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, fuzzy, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr " -S, --salt=SALT χρήση του συγκεκριμένου SALT\n"
+
+#: ../mkpasswd.c:503
+#, fuzzy, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -P, --password-fd=NUM ανάγνωση του συνθηματικού από αρχείο περιγραφής "
+"NUM\n"
+" αντί από το /dev/tty\n"
+" -s, --stdin σαν το --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, fuzzy, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -252,12 +345,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -H, --hash=ΤΥΠΟΣ επιλογή hash ΤΥΠΟΣ\n"
-" -S, --salt=SALT χρήση του συγκεκριμένου SALT\n"
-" -P, --password-fd=NUM ανάγνωση του συνθηματικού από αρχείο περιγραφής "
-"NUM\n"
-" αντί από το /dev/tty\n"
-" -s, --stdin σαν το --password-fd=0\n"
" -h, --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
" -V, --version εμφάνιση πληροφοριών έκδοσης και έξοδος\n"
"\n"
@@ -267,90 +354,11 @@ msgstr ""
"\n"
"Αναφέρατε σφάλματα στο %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, fuzzy, c-format
msgid "Available methods:\n"
msgstr "Διαθέσιμοι αλγόριθμοι:\n"
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --verbose explain what is being done\n"
-#~ " --help display this help and exit\n"
-#~ " --version output version information and exit\n"
-#~ msgstr ""
-#~ "Χρήση: whois [ΕΠΙΛΟΓΕΣ]... ΑΝΤΙΚΕΙΜΕΝΟ...\n"
-#~ "\n"
-#~ "-l ένα επίπεδο λιγότερο συγκεκριμένη αναζήτηση [μόνο "
-#~ "RPSL]\n"
-#~ "-L εύρεση όλων των Λιγότερο συγκεκριμένων "
-#~ "ταιριασμάτων\n"
-#~ "-m εύρεση όλων των πρώτου επιπέδου περισσότερο "
-#~ "συγκεκριμένων ταιριασμάτων\n"
-#~ "-M εύρεση όλων των Περισσότερο συγκεκριμένων "
-#~ "ταιριασμάτων\n"
-#~ "-c εύρεση του μικρότερου ταιριάσματος που να περιέχει "
-#~ "μια ένα χαρακτηριστικό mnt-irt \n"
-#~ "-x ακριβές ταίριασμα [μόνο RPSL]\n"
-#~ "-d επιστροφή και των αντίστροφων αντικειμένων DNS "
-#~ "[μόνο RPSL]\n"
-#~ "-i ΧΑΡΑΚ[,ΧΑΡΑΚ]... να γίνει μια αντίστροφη αναζήτηση για τα "
-#~ "καθορισμένα ΧΑΡΑΚτηριστικά\n"
-#~ "-T ΕΙΔΟΣ[,ΕΊΔΟΣ]... αναζήτηση μόνο αντικειμένου του ΕΙΔΟΥΣ\n"
-#~ "-K επιστροφή μόνο των πρωταρχικών κλειδιών [μόνο "
-#~ "RPSL]\n"
-#~ "-r απενεργοποίηση των αναδρομικών αναζητήσεων για "
-#~ "πληροφορίες επικοινωνίας\n"
-#~ "-R επιβολή εμφάνισης τοπικού αντιγράφου του "
-#~ "αντικειμένου επιθήματος ακόμα και αν περιέχει αναφορές\n"
-#~ "-a αναζήτηση σε όλες τις βάσεις δεδομένων\n"
-#~ "-s ΠΗΓΗ[,ΠΗΓΉ]... αναζήτηση της βάσης δεδομένων από την ΠΗΓΗ\n"
-#~ "-g ΠΗΓΗ:ΠΡΩΤΟ:ΤΕΛΕΥΤΑΙΟ εμφάνιση αναβαθμίσεων από την ΠΗΓΗ από το "
-#~ "σειριακό ΠΡΏΤΟ ως ΤΕΛΕΥΤΑΙΟ\n"
-#~ "-t ΕΙΔΟΣ αναζήτηση προτύπου για το αντικείμενο του ΕΊΔΟΥΣ "
-#~ "('all' για εμφάνιση λίστας)\n"
-#~ "-v ΕΙΔΟΣ αναζήτηση περιφραστικού προτύπου για το "
-#~ "αντικείμενο του ΕΙΔΟΥΣ\n"
-#~ "-q [έκδοση|πηγές|τύποι] συγκεκριμένο ερώτημα πληροφοριών εξυπηρετητή "
-#~ "[μόνο RPSL]\n"
-#~ "-F γρήγορη ακατέργαστη έξοδος (υπονοεί -r)\n"
-#~ "-h ΣΥΣΤΗΜΑ σύνδεση στον εξυπηρετητή ΣΎΣΤΗΜΑ\n"
-#~ "-p ΘΥΡΑ σύνδεση στη ΘΥΡΑ\n"
-#~ "-H απόκρυψη του νομικού εγγράφου αποποίησης "
-#~ "ευθύνης\n"
-#~ " --verbose εξήγηση του τί συμβαίνει\n"
-#~ " --help εμφάνιση αυτής της βοήθειας και έξοδος\n"
-#~ " --version εμφάνιση της έκδοσης και έξοδος\n"
-
#~ msgid "Illegal password character '0x%hhx'.\n"
#~ msgstr "Μη αποδεκτός χαρακτήρας συνθηματικού '0x%hhx'.\n"
diff --git a/po/es.po b/po/es.po
index 7d67477..efdefa4 100644
--- a/po/es.po
+++ b/po/es.po
@@ -8,6 +8,7 @@
#
# - Updates
# Francisco Javier Cuadrado <fcocuadrado@gmail.com>, 2010
+# Matías A. Bellone <matiasbellone+debian@gmail.com>, 2014, 2019
#
# Traductores, si no conocen el formato PO, merece la pena leer la
# documentación de gettext, especialmente las secciones dedicadas a este
@@ -31,17 +32,17 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 5.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2010-01-29 09:16+0100\n"
-"Last-Translator: Francisco Javier Cuadrado <fcocuadrado@gmail.com>\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-07-02 02:30-0300\n"
+"Last-Translator: Matías A. Bellone <matiasbellone+debian@gmail.com>\n"
"Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n"
-"Language: \n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -52,30 +53,30 @@ msgstr ""
"\n"
"Informar de fallos a %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Usando el servidor %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Este TLD no dispone de servidor whois, pero puede acceder a la base de datos "
"de whois en"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Este TLD no dispone de servidor whois."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "No se conoce ningún servidor de whois para esta clase de objeto."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Numero AS o red IP desconocida. Por favor, actualice este programa."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Usando el servidor %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -86,7 +87,7 @@ msgstr ""
"Consultando el punto final IPv4 de %s de una dirección IPv6 6a4.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -97,7 +98,7 @@ msgstr ""
"Consultando el punto final IPv4 de %s de una dirección IPv6 Teredo.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -106,7 +107,7 @@ msgstr ""
"Cadena de la consulta: «%s»\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -119,16 +120,16 @@ msgstr ""
"Se ha encontrado una referencia a %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
-msgstr "No se pudo procesar esta linea: %s"
+msgstr "No se pudo procesar esta línea: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Atención: Se han usado opciones de RIPE con un servidor tradicional."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -136,90 +137,170 @@ msgstr ""
"Error catastrófico: el texto de las condiciones de uso ha sido cambiado.\n"
"Por favor, actualice este programa.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
-msgstr "El servidor %s no se ha encontrado."
+msgstr "No se ha encontrado el servidor %s."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: servicio desconocido"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Se ha agotado el tiempo de espera."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Interrumpido por la señal %d..."
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Utilización: whois [OPCION]... OBJETO...\n"
+"\n"
+"-h EQUIPO, --host EQUIPO conectar con el servidor EQUIPO\n"
+"-p PUERTO, --port PUERTO conectar al PUERTO\n"
+"-I consultar whois.iana.org y seguir su redirección\n"
+"-H no mostrar avisos legales\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose mostrar lo que está haciendo\n"
+" --help mostrar este mensaje de ayuda y finalizar\n"
+" --version mostrar información de la versión y finalizar\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"Estas opciones son compatibles con whois.ripe.net y algunos servidores\n"
+"similares a RIPE:\n"
+"-l buscar la coincidencia un nivel menos específica\n"
+"-L buscar coincidencias de niveles menos específicos\n"
+"-m buscar coincidencias del primer nivel más específico\n"
+"-M buscar coincidencias de niveles más específicos\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c buscar la coincidencia más pequeña que contenga\n"
+" un atributo «mnt-irt»\n"
+"-x coincidencia exacta\n"
+"-b mostrar rangos IP breves y contacto en caso de abuso\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B no filtrar objetos (mostrar direcciones de correo)\n"
+"-G no agrupar objetos asociados\n"
+"-d mostrar objetos de delegación de DNS reverso también\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATRIB[,ATRIB]... búsqueda inversa del ATRIButo indicado\n"
+"-T TIPO[,TIPO]... sólo buscar objetos del TIPO indicado\n"
+"-K mostrar sólo claves primarias\n"
+"-r no buscar información de contacto de forma recursiva\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R mostrar la copia local del objeto del dominio "
+"incluso\n"
+" si contiene una referencia\n"
+"-a buscar también en todas las réplicas de base de "
+"datos\n"
+"-s ORIGEN[,ORIGEN]... buscar en la base de datos replicada desde ORIGEN\n"
+"-g ORIGEN:PRIMERO-ÚLTIMO buscar actualizaciones desde ORIGEN en la serie\n"
+" PRIMERO a ÚLTIMO\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t TIPO solicitar plantilla para el objeto del TIPO indicado\n"
+"-v TIPO solicitar plantilla detallada para el objeto del "
+"TIPO\n"
+" indicado\n"
+"-q [versión|orígenes|tipos] consultar información con el servidor indicado\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "crypt(3) extendido BSDI basado en DES"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
-msgstr "crypt(3) basado en DES de 56 bits"
+msgstr "crypt(3) estándar basado en DES de 56 bits"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "Método «%s» inválido.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
-msgstr "El numero «%s» no es valido.\n"
+msgstr "El número «%s» no es válido.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Pruebe «%s --help» para más información.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
-msgstr[0] "Longitud del «salt» incorrecta: %d byte en lugar de %d.\n"
-msgstr[1] "Longitud del «salt» incorrecta: %d bytes en lugar de %d.\n"
+msgstr[0] "Longitud de sal («salt») incorrecta: %d byte en lugar de %d.\n"
+msgstr[1] "Longitud de sal («salt») incorrecta: %d bytes en lugar de %d.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
@@ -228,22 +309,22 @@ msgstr[0] ""
msgstr[1] ""
"Longitud del «salt» incorrecta: %d bytes cuando se esperaba %d <= n <= %d.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "El carácter «%c» no es válido en el «salt».\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Contraseña: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
-msgstr "crypt(3) no puede usar el método.\n"
+msgstr "crypt(3) no admite este método.\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -251,19 +332,36 @@ msgid ""
"\n"
msgstr ""
"Uso: mkpasswd [OPCIONES]... [CONTRASEÑA [SALT]]\n"
-"Cifra CONTRASEÑA utilizando crypt(3).\n"
+"Cifra la CONTRASEÑA utilizando crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TIPO selecciona el TIPO de método\n"
+" -5 igual que --method=md5\n"
+" -S, --salt=SALT usa el SALT indicado\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=NÚMERO usa el NÚMERO indicado de rondas\n"
+" -P, --password-fd=NUM lee la contraseña del descriptor de archivo NUM\n"
+" en lugar de «/dev/tty»\n"
+" -s, --stdin igual que --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -273,13 +371,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TIPO selecciona el TIPO de método\n"
-" -5 igual que --method=md5\n"
-" -S, --salt=SALT usa el SALT indicado\n"
-" -R, --rounds=NÚMERO usa el NÚMERO indicado de rondas\n"
-" -P, --password-fd=NUM lee la contraseña del descriptor de archivo NUM\n"
-" en lugar de «/dev/tty»\n"
-" -s, --stdin igual que --password-fd=0\n"
" -h, --help muestra este mensaje de ayuda y finaliza\n"
" -V, --version muestra la información de la versión y finaliza\n"
"\n"
@@ -289,93 +380,7 @@ msgstr ""
"\n"
"Informar de fallos a %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Métodos disponibles:\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --verbose explain what is being done\n"
-#~ " --help display this help and exit\n"
-#~ " --version output version information and exit\n"
-#~ msgstr ""
-#~ "Uso: whois [OPCIONES]... OBJETO...\n"
-#~ "\n"
-#~ "-l se realiza una búsqueda un nivel menos "
-#~ "específica\n"
-#~ " [sólo RPSL]\n"
-#~ "-L busca las correspondencias menos especificas\n"
-#~ "-m busca las correspondencias del primer nivel "
-#~ "más\n"
-#~ " específico\n"
-#~ "-M busca las correspondencias más especificas\n"
-#~ "-c busca la correspondencia más pequeña que "
-#~ "contenga\n"
-#~ " un atributo mnt-irt\n"
-#~ "-x busca la correspondencia exacta [sólo RPSL]\n"
-#~ "-d también devuelve la delegacion inversa del "
-#~ "DNS\n"
-#~ " [solo RPSL]\n"
-#~ "-i ATRIB[,ATRIB]... realiza una búsqueda inversa para el atributo\n"
-#~ " (ATRIB) indicado\n"
-#~ "-T TIPO[,TIPO]... sólo busca los objetos del tipo (TIPO) "
-#~ "indicado\n"
-#~ "-K sólo se devuelven las claves primarias\n"
-#~ " [sólo RPSL]\n"
-#~ "-r desactiva las búsquedas recursivas de la \n"
-#~ " información de contacto\n"
-#~ "-R muestra la copia local del objeto del dominio\n"
-#~ " incluso si contiene una referencia\n"
-#~ "-a busca en todas las bases de datos\n"
-#~ "-s ORIGEN[,ORIGEN]... busca en la base de datos desde ORIGEN\n"
-#~ "-g ORIGEN:PRIMERO-ÚLTIMO busca las actualizaciones desde ORIGEN en la\n"
-#~ " serie PRIMERO a ÚLTIMO\n"
-#~ "-t TIPO pide la plantilla de un objeto del tipo "
-#~ "(TIPO)\n"
-#~ " indicado («all» para una lista)\n"
-#~ "-v TIPO pide una plantilla detallada de un objeto del\n"
-#~ " tipo (TIPO) indicado\n"
-#~ "-q [versión|origenes|tipos] consulta la información con el servidor\n"
-#~ " indicado [sólo RPSL]\n"
-#~ "-F salida en bruto rápida (implica -r)\n"
-#~ "-h SERVIDOR conecta con el servidor (SERVIDOR) indicado\n"
-#~ "-p PUERTO conecta con el puerto (PUERTO) indicado\n"
-#~ "-H oculta los avisos legales\n"
-#~ " --verbose muestra lo qué está haciendo\n"
-#~ " --help muestra este mensaje de ayuda y finaliza\n"
-#~ " --version muestra la información de la versión y "
-#~ "finaliza\n"
-
-#~ msgid "Illegal password character '0x%hhx'.\n"
-#~ msgstr "El carácter «0x%hhx» no es válido en la contraseña.\n"
diff --git a/po/eu.po b/po/eu.po
index 73a6bfe..5811c7c 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -7,16 +7,16 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 4.5.29\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
"PO-Revision-Date: 2002-08-24 16:22+0200\n"
"Last-Translator: Aitor Ibaez <aitiba@gmail.com>\n"
"Language-Team: Euskara <Librezale@librezale.org>\n"
-"Language: \n"
+"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -27,31 +27,31 @@ msgstr ""
"\n"
"Bug berri baten jakinarazpena: %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "%s zerbitzaria erabiltzen.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"TLD honek ez du whois zerbitzaririk, baina whois databasera sarbidea "
"daukazu..."
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "TLD honek ez du whois zerbitzaririk."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Objetu mota horrentzako, ez da whois zerbitzaririk ezagutzen."
-#: ../whois.c:251
+#: ../whois.c:336
#, fuzzy
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "AS zenbaki edo IP sarea ezezaguna. Mesedez, programa eguneratu."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "%s zerbitzaria erabiltzen.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -62,7 +62,7 @@ msgstr ""
"Kontsula 6to4 IPv6 helbidean dagoen %s IPv4 endpoint-entzat.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, fuzzy, c-format
msgid ""
"\n"
@@ -73,7 +73,7 @@ msgstr ""
"Kontsula 6to4 IPv6 helbidean dagoen %s IPv4 endpoint-entzat.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -82,7 +82,7 @@ msgstr ""
"Kontsulta: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, fuzzy, c-format
msgid ""
"\n"
@@ -94,17 +94,17 @@ msgstr ""
"$s-ra erreferentzia aurkituta.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Lerro hau, %s , ezin da prozesatu."
-#: ../whois.c:516
+#: ../whois.c:642
#, fuzzy
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Oharra: RIPE flags-ak ohiko zerbitzariengatik ezikusiak izaten dira."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -112,113 +112,182 @@ msgstr ""
"Hondamen arriskua: erabilpen balditzen textua aldatu egin da.\n"
"Programa eguneratu.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "%s Host-a ez da aurkitu."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: zerbitzu ezezaguna"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Denbora muga."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "%d seinalearengatik etena..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Erabilpena: whois [AUKERAK]... OBJETUA...\n"
+"\n"
+"-h HOST HOST zerbitzarira konektatzen da\n"
+"-p PORTUA PORTUA konektatzen du\n"
+"-H abisu-legala ezkutatzen du\n"
+
+#: ../whois.c:1495
+#, fuzzy, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose egiten ari dena bakarrik, eraskusten du\n"
+" --help laguntza pantaila hau erakusten du eta amaitzen du\n"
+" --version programaren bertsioa erakusten du eta amaitzen du\n"
+
+#: ../whois.c:1501
+#, fuzzy, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"-l adierazitako [RPSL] bilaketarentzat, maila bat jeisten "
+"du\n"
+"-L mapeketa gutxien espezifikoenak bilatzen ditu\n"
+"-M mapeketa espezifikoenak bilatzen ditu\n"
+"-m lehen maila espezifikoena bilatzen du\n"
+
+#: ../whois.c:1508
+#, fuzzy, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr "-x bilaketa zehatza\n"
+
+#: ../whois.c:1513
+#, fuzzy, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr "-d alderantizko DNSaren ordezkaritza itzultzen du\n"
+
+#: ../whois.c:1518
+#, fuzzy, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... adierazitako ATTRibute-arentzat alderantzizko bilaketa "
+"egin du\n"
+"-T TIPO[,TIPO]... TIPO objektu motak bakarrik bilatzen ditu\n"
+"-K oinarrizko-gakoak bakarrik\n"
+"-r alderantzizko bilaketa ezgaitzen du\n"
+
+#: ../whois.c:1524
+#, fuzzy, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R Objektu zehatzaren kopia lokala eraskuten du,\n"
+" erreferentzia bat eduki ere\n"
+"-a data base guztietan bilatzen du\n"
+"-s SOURCE[,SOURCE]... SOURCE data basea bilatzen du\n"
+"-g SOURCE:HASIERA-BUKAERA H eta B tarteko serietan,SOURCE-ren agerraldiak "
+"bilatzen ditu\n"
+
+#: ../whois.c:1531
+#, fuzzy, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t TIPO TIPO objektu mota batentzako, txantiloiak "
+"lortzen ditu ('all' lista batentzako)\n"
+"-v TIPO TIPO objektu baten txantiloi zehatza lortzen du\n"
+"-q [bertsioa|sources] zerbitzariaren informazioa kontsultatzen du\n"
+
+#: ../mkpasswd.c:128
+#, fuzzy
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "56 bits-etako DESan oinarritutako \tcrypt(3)-a"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:131
#, fuzzy
msgid "standard 56 bit DES-based crypt(3)"
msgstr "56 bits-etako DESan oinarritutako \tcrypt(3)-a"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, fuzzy, c-format
msgid "Invalid method '%s'.\n"
msgstr "'%s' zenbakia ez da baliozkoa.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "'%s' zenbakia ez da baliozkoa.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "%s --help informazio gehiagorako.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, fuzzy, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Hazi tamain desegokia:%d byte %d-en ordez.\n"
msgstr[1] "Hazi tamain desegokia:%d byte %d-en ordez.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, fuzzy, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "Hazi tamain desegokia:%d byte %d-en ordez.\n"
msgstr[1] "Hazi tamain desegokia:%d byte %d-en ordez.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "'%c' karakterea, hazian, ilegala da.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Pasahitza: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr ""
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -229,16 +298,32 @@ msgstr ""
"PASAHITZA crypt(3) erabiliz enkriptatu.\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, fuzzy, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -H, --hash=MOTA Hash MOTA funtzioa aukeratu\n"
+" -S, --salt=HAZI HAZI egokia erabili\n"
+
+#: ../mkpasswd.c:503
+#, fuzzy, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -P, --password-fd=NUM /dev/tty-ak irakurri ordez, NUM deskriptore-"
+"gakoa irakurtzen du\n"
+" -s, --stdin /dev/tty-ak irakurri ordez, stdin-gakoa "
+"irakurtzen du\n"
+
+#: ../mkpasswd.c:509
+#, fuzzy, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -248,14 +333,8 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -H, --hash=MOTA Hash MOTA funtzioa aukeratu\n"
-" -S, --salt=HAZI HAZI egokia erabili\n"
-" -P, --password-fd=NUM /dev/tty-ak irakurri ordez, NUM deskriptore-"
-"gakoa irakurtzen du\n"
-" -s, --stdin /dev/tty-ak irakurri ordez, stdin-gakoa "
-"irakurtzen du\n"
-" -h, --help laguntza pantaila erakusten du\n"
-" -v, --version programaren bertsioa erakusten du\n"
+" -h, --help laguntza pantaila erakusten du\n"
+" -v, --version programaren bertsioa erakusten du\n"
"\n"
"GAKOA zehazten ez bada, modu interaktiboan eskatuko da.\n"
"HAZIa zehazten ez bada, aleatorioki bat sortuko da.\n"
@@ -263,83 +342,11 @@ msgstr ""
"\n"
"Bug berri baten jakinarazpena: %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, fuzzy, c-format
msgid "Available methods:\n"
msgstr "Algoritmo erabilgarriak:\n"
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --verbose explain what is being done\n"
-#~ " --help display this help and exit\n"
-#~ " --version output version information and exit\n"
-#~ msgstr ""
-#~ "Erabilpena: whois [AUKERAK]... OBJETUA...\n"
-#~ "\n"
-#~ "-a data base guztietan bilatzen du\n"
-#~ "-F modo azkarra (-r inplikatzen du)\n"
-#~ "-g SOURCE:HASIERA-BUKAERA H eta B tarteko serietan,SOURCE-ren "
-#~ "agerraldiak bilatzen ditu\n"
-#~ "-h HOST HOST zerbitzarira konektatzen da\n"
-#~ "-H abisu-legala ezkutatzen du\n"
-#~ "-i ATTR[,ATTR]... adierazitako ATTRibute-arentzat alderantzizko bilaketa "
-#~ "egin du\n"
-#~ "-x bilaketa zehatza [RPSL bakarrik]\n"
-#~ "-l adierazitako [RPSL] bilaketarentzat, maila bat jeisten "
-#~ "du\n"
-#~ "-L mapeketa gutxien espezifikoenak bilatzen ditu\n"
-#~ "-M mapeketa espezifikoenak bilatzen ditu\n"
-#~ "-m lehen maila espezifikoena bilatzen du\n"
-#~ "-r alderantzizko bilaketa ezgaitzen du\n"
-#~ "-p PORTUA PORTUA konektatzen du\n"
-#~ "-R Objektu zehatzaren kopia lokala eraskuten "
-#~ "du, erreferentzia bat eduki ere\n"
-#~ "-S zerbitzariari adierazten dio pekulariedade "
-#~ "sintaktikoak \t\t ez erabiltzea \n"
-#~ "-s SOURCE[,SOURCE]... SOURCE data basea bilatzen du\n"
-#~ "-T TIPO[,TIPO]... TIPO objektu motak bakarrik bilatzen ditu\n"
-#~ "-t TIPO TIPO objektu mota batentzako, txantiloiak "
-#~ "lortzen ditu ('all' lista batentzako)\n"
-#~ "-v TIPO TIPO objektu baten txantiloi zehatza lortzen du\n"
-#~ "-q [bertsioa|sources] zerbitzariaren informazioa kontsultatzen "
-#~ "du [RPSL bakarrik]\n"
-#~ "-d alderantizko DNSaren ordezkaritza itzultzen du "
-#~ "[RPSL bakarrik]\n"
-#~ "-K oinarrizko-gakoak bakarrik [RPSL bakarrik]\n"
-#~ " --verbose egiten ari dena bakarrik, eraskusten du\n"
-#~ " --help laguntza pantaila hau erakusten du eta amaitzen du\n"
-#~ " --version programaren bertsioa erakusten du eta amaitzen du\n"
-
#~ msgid "Illegal password character '0x%hhx'.\n"
#~ msgstr "'0x%hhx' password karakterea ilegala da.\n"
diff --git a/po/fi.po b/po/fi.po
index 962e285..c257f83 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -6,17 +6,18 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 5.0.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2010-01-27 15:31+0100\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-06-28 08:56+0100\n"
"Last-Translator: Sami Kerola <kerolasa@iki.fi>\n"
"Language-Team: \n"
-"Language: \n"
+"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+"X-Generator: Poedit 2.2.1\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -27,29 +28,28 @@ msgstr ""
"\n"
"Lähetä bugiraportit osoitteeseen %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Käytetään palvelinta %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
-msgstr ""
-"Tälla TLD:llä ei ole whois palvelinta, tiedot ovat nakyvissä osoitteessa"
+msgstr "Tälla TLD:llä ei ole whois palvelinta, voit hakea tiedot osoitteesta"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Tälla TLD:llä ei ole whois palvelinta."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Mikään whois palvelu ei tiedä kysyttyä tietoa."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Tuntematon AS-numero tai IP-verkko. Päivitä tämä ohjelma."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Käytetään palvelinta %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -57,10 +57,10 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Kysytään IPv4 ulostulona %s IPv6:n IPv4 avaruudesta.\n"
+"Kysytään IPv4 ulostuloa %s IPv6:n IPv4 avaruudesta.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -68,10 +68,10 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Kysytään IPv4 ulostulona %s Teredo IPv6 tunneliosoitetta.\n"
+"Kysytään IPv4 ulostuloa %s Teredo IPv6 tunneliosoitetta.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -80,7 +80,7 @@ msgstr ""
"Kysely: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -93,16 +93,16 @@ msgstr ""
"Löytyi viittaus %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
-msgstr "Ohjelma ei kykene tulkitsemaan riviä: %s"
+msgstr "Ohjelma ei ymmärrä riviä: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Varoitus: käytät RIPE valitsimia perinteiseen palvelimeen."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -110,112 +110,186 @@ msgstr ""
"Katastrofaalinen virhe: lisenssiteksti on muuttunut.\n"
"Päivita ohjelma.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Palvelinta %s ei löydy."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: tuntematon palvelu"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Aikakatkaisu."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Ohjelma keskeytyi signaaliin %d..."
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Käyttö: whois [VALITSIN]... OBJEKTI...\n"
+"\n"
+"-h PALVELIN, --host PALVELIN ota yhteys PALVELIMEEN\n"
+"-p PORTTI, --port PORTTI käytä PORTTIA\n"
+"-I ota yhteys whois.iana.org ja seuraa "
+"viittausta\n"
+"-H piilota ilmoitukset\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose näytä mitä on tekeillä\n"
+" --help näytä tämä teksti\n"
+" --version näytä versio\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"Seuraavat optiot ovat tuettuja whois.ripe.net palvelimella:\n"
+"-l etsi välittömiä tietueita\n"
+"-L etsi kaikkia vastaavia tietueita\n"
+"-m etsi kaikki samantasoiset tai erityisemmät tietueet\n"
+"-M etsi kaikkien tasojen erityiset tietueet\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c etsi vähin osuma joka liittyy mnt-irt atribuuttiin\n"
+"-x täysosuma\n"
+"-b palauta lyhyt osoiteavaruus ja abuse-tietue\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B poista objektifiltteröinti (näytä "
+"sähköpostiosoitteet)\n"
+"-G poista objektien ryhmittely\n"
+"-d näytä DNS delekointiobjektit\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... tee käänteishaku käyttäen ATTRbuutteja\n"
+"-T TYYP[,TYYP]... hae ainoastaan tietyn TYYPisiä objekteja\n"
+"-K palauta ainoastaan pääavain\n"
+"-r älä käytä rekursiota kontaktitiedoille\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R pakota näyttämään paikallinen objekti vaikka se\n"
+" sisältäisi viitteen\n"
+"-a etsi myös tietokantakopioista\n"
+"-s KOP[,KOP]... käytä KOPioita\n"
+"-g KOP:EKA-VIKA hae päivityksiä KOPioista sarjoista EKAsta VIKAaan\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t TYYPPI hae mallinne objektille TYYPPI\n"
+"-v TYYPPI hae pitkämallinne objektille TYYPPI\n"
+"-q [versio|lähde|tyyppi] hae erityisiä palvelin tietoja\n"
+
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "BSDI laajennettu DES-salaus, katso crypt(3)"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
-msgstr "Standardi 56 bittinen DES-salaus ks crypt(3)"
+msgstr "standardi 56-bittinen DES-salaus katso crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
-msgstr "Väärä metodi '%s'.\n"
+msgstr "Kelvoton metodi '%s'.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
-msgstr "Väärä numero '%s'.\n"
+msgstr "Kelvoton numero '%s'.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Käytä valitsinta '%s --help' lisätietojen saamiseen.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Väärä suolan pituus: %d tavu, kun %d odotettiin.\n"
-msgstr[1] "Väärä suolan pituus: %d tavu, kun %d odotettiin.\n"
+msgstr[1] "Väärä suolan pituus: %d tavua, kun %d odotettiin.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
-msgstr[0] "Väärä suolan pituus: %d tavua, kun %d <= n <= %d odotettiin.\n"
+msgstr[0] "Väärä suolan pituus: %d tavu, kun %d <= n <= %d odotettiin.\n"
msgstr[1] "Väärä suolan pituus: %d tavua, kun %d <= n <= %d odotettiin.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
-msgstr "Suolassa laiton merkki '%c'.\n"
+msgstr "Laiton merkki suolassa '%c'.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Salasana: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
-msgstr "Toiminto ei ole tuettu crypt(3) funktiossa.\n"
+msgstr "Functio crypt(3) ei tue toimintoa.\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -223,19 +297,36 @@ msgid ""
"\n"
msgstr ""
"Käyttö: mkpasswd [OPTIO] ... [SALASANA] [SUOLA]]\n"
-"Salaa salasanan crypt(3) funktiolla.\n"
+"Salaa SALASANA crypt(3) funktiolla.\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TYPE valitse toiminto TYPE\n"
+" -5 sama kuin --method=md5\n"
+" -S, --salt=SUOLA suolan valinta\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=NUMERO pyöristä numeroon\n"
+" -P, --password-fd=NUM lue salasana avoimesta tiedostosta NUM\n"
+" äläkä terminaalista /dev/tty\n"
+" -s, --stdin sama kuin --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -245,13 +336,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TYPE valitse toiminto TYPE\n"
-" -5 sama kuin --method=md5\n"
-" -S, --salt=SUOLA suolan valinta\n"
-" -R, --rounds=NUMERO pyöristä numeroon\n"
-" -P, --password-fd=NUM lue salasana avoimesta tiedostosta NUM\n"
-" äläkä terminaalista /dev/tty\n"
-" -s, --stdin sama kuin --password-fd=0\n"
" -h, --help tulosta tämä ruutu\n"
" -V, --version tulosta versio\n"
"\n"
@@ -261,78 +345,7 @@ msgstr ""
"\n"
"Lähetä bugiraportit osoitteeseen %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Käytettävissä olevat toiminnot:\n"
-
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --verbose explain what is being done\n"
-#~ " --help display this help and exit\n"
-#~ " --version output version information and exit\n"
-#~ msgstr ""
-#~ "Käyttö: whois [OPTIO]... OBJEKTI...\n"
-#~ "\n"
-#~ "-l tasoa epätarkempi osuma [ainoastaan RPSL]\n"
-#~ "-L etsi kaikki epätarkemmat osumat\n"
-#~ "-m etsi yhtä tasoa tarkemmat osumat\n"
-#~ "-M etsi kaikki tarkemmat osumat\n"
-#~ "-c etsi vähäisin, joka vastaa mnt-irt attribuuttia\n"
-#~ "-x täydellinen osuma [ainoastaan RPSL]\n"
-#~ "-d palauta ainoastaan käänteisdomainit [ainoastan "
-#~ "RPSL]\n"
-#~ "-i ATTR[,ATTR]... käänteiskysely ATTRibuutin perusteella\n"
-#~ "-T TYPE[,TYPE]... etsi ainoastaan määritetyn tyyppisiä objekteja\n"
-#~ "-K palauta ainoastan hakuavaimet [ainoastan RPSL]\n"
-#~ "-r älä käytä rekursiivista kontaktietohakua\n"
-#~ "-R pakota käyttämään paikallista kopiota domain\n"
-#~ " objektista, vaikka se sisältäisi viitteitä\n"
-#~ "-a etsi kaikista tietokannoista\n"
-#~ "-s SOURCE[,SOURCE]... etsi tietokannoista SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST löytö päivittää lähteen SOURCE järjestysnumeron\n"
-#~ " FIRST:stä LAST:iin\n"
-#~ "-t TYPE pyydä mallinne TYPE objektille ('all' näyttää "
-#~ "tyyppilistan)\n"
-#~ "-v TYPE monisanainen mallinne TYPE objektille\n"
-#~ "-q [version|sources|types] erityinen palvelintieto [ainostaan RPSL]\n"
-#~ "-F nopea tuloste (sisältää -r valitsimen)\n"
-#~ "-h HOST kysy palvelimelta HOST\n"
-#~ "-p PORT käytä TCP-porttia PORT\n"
-#~ "-H älä tulosta käyttöehtoja\n"
-#~ " --verbose näytä mitä tapahtuu\n"
-#~ " --help tulosta tämä ruutu\n"
-#~ " --version tulosta versio\n"
-
-#~ msgid "Illegal password character '0x%hhx'.\n"
-#~ msgstr "Laiton merkki salasanassa '0x%hhx'.\n"
diff --git a/po/fr.po b/po/fr.po
index f59a9b8..538299c 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,16 +1,16 @@
# Translation of whois to French
-# Copyright not yet (C) 2003-2009 Debian French l10n team <debian-l10n-french@lists.debian.org>
+# Copyright © 2003-2009 Debian French l10n team <debian-l10n-french@lists.debian.org>
# This file is distributed under the same license as the whois package.
-# Copyright © 2003 William Steve Applegate <wsapplegate@est.un.goret.info>
# -2003: William Steve Applegate <wsapplegate@est.un.goret.info>
# -2008: Mohammed Adnène Trojette <adn+deb@diwi.org>
# 2013: Steve Petruzzello <dlist@bluewin.ch>
+# 2019: Steve Petruzzello <dlist@bluewin.ch>
msgid ""
msgstr ""
-"Project-Id-Version: whois 5.0.24\n"
+"Project-Id-Version: whois 5.4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2013-04-18 17:47+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-06-28 17:47+0200\n"
"Last-Translator: Steve Petruzzello <dlist@bluewin.ch>\n"
"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
"Language: fr\n"
@@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -30,30 +30,30 @@ msgstr ""
"\n"
"Veuillez signaler les bogues à %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Le serveur %s est sélectionné.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Ce TLD n'a pas de serveur whois, mais vous pouvez accéder à la base de "
"données à"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Ce TLD n'a pas de serveur whois."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Aucun serveur whois n'est connu pour ce type d'objet."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Numéro d'AS ou réseau IP inconnu. Veuillez mettre à jour ce programme."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Le serveur %s est sélectionné.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -64,7 +64,7 @@ msgstr ""
"Requête faite pour l'extrémité IPv4 %s d'une adresse IPv6 6to4.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -75,7 +75,7 @@ msgstr ""
"Requête faite pour l'extrémité IPv4 %s d'une adresse IPv6 Teredo.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -84,7 +84,7 @@ msgstr ""
"Requête : \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -97,17 +97,17 @@ msgstr ""
"Renvoi trouvé vers %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Impossible d'interpréter la ligne : %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr ""
"Avertissement : des options RIPE ont été utilisées avec un serveur classique."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -115,117 +115,168 @@ msgstr ""
"Erreur catastrophique : le texte d'avertissement a changé.\n"
"Veuillez mettre à jour ce programme.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "L'hôte %s est introuvable."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp : service inconnu"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Temps limite dépassé."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Interruption par le signal %d..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Usage: whois [OPTION]... OBJET...\n"
+"\n"
+"-h HÔTE, --host HÔTE se connecter au serveur HÔTE\n"
+"-p PORT, --port PORT se connecter sur le port PORT\n"
+"-I interroger whois.iana.org et suivre son référent"
+"-H cacher les mentions légales\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose mode verbeux\n"
+" --help afficher cette aide et sortir\n"
+" --version afficher la version et sortir\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"Ces drapeaux sont gérés par le serveur whois.ripe.net et quelques serveurs "
+"de type RIPE :\n"
+"-l réduire d'un niveau la spécificité de la recherche\n"
+"-L trouver toutes les occurrences moins spécifiques\n"
+"-m trouver les occurrences de premier niveau plus "
+"spécifiques\n"
+"-M trouver toutes les occurrences plus spécifiques\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c trouver l'occurrence la plus spécifique contenant un "
+"attribut mnt-irt\n"
+"-x occurrence exacte\n"
+"-b afficher la plage des adresses IP avec l'information "
+"d'abus\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B désactiver le filtrage d'objet (montrer les adresses "
+"électroniques)\n"
+"-G désactiver le groupement des objets associés\n"
+"-d afficher aussi les objets de délégation DNS inverse\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... effectuer une recherche inverse pour les ATTRibuts "
+"spécifiés\n"
+"-T TYPE[,TYPE]... chercher seulement les objets de ce TYPE\n"
+"-K seules les clés primaires sont renvoyées\n"
+"-r désactiver la recherche récursive des informations de "
+"contact\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
-"-t TYPE request template for object of TYPE\n"
-"-v TYPE request verbose template for object of TYPE\n"
-"-q [version|sources|types] query specified server info\n"
msgstr ""
-"Usage: whois [OPTION]... OBJET...\n"
-"\n"
-"-h HÔTE, --host HÔTE se connecter au serveur HÔTE\n"
-"-p PORT, --port PORT se connecter sur le port PORT\n"
-"-H cacher les mentions légales\n"
-" --verbose mode verbeux\n"
-" --help afficher cette aide et sortir\n"
-" --version afficher la version et sortir\n"
-"\n"
-"Ces drapeaux sont gérés par le serveur whois.ripe.net et quelques serveurs de type RIPE :\n"
-"-l réduire d'un niveau la spécificité de la recherche\n"
-"-L trouver toutes les occurrences moins spécifiques\n"
-"-m trouver les occurrences de premier niveau plus spécifiques\n"
-"-M trouver toutes les occurrences plus spécifiques\n"
-"-c trouver l'occurrence la plus spécifique contenant un attribut mnt-irt\n"
-"-x occurrence exacte\n"
-"-b afficher la plage des adresses IP avec l'information d'abus\n"
-"-B désactiver le filtrage d'objet (montrer les adresses électroniques)\n"
-"-G désactiver le groupement des objets associés\n"
-"-d afficher aussi les objets de délégation DNS inverse\n"
-"-i ATTR[,ATTR]... effectuer une recherche inverse pour les ATTRibuts spécifiés\n"
-"-T TYPE[,TYPE]... chercher seulement les objets de ce TYPE\n"
-"-K seules les clés primaires sont renvoyées\n"
-"-r désactiver la recherche récursive des informations de contact\n"
-"-R forcer l'affichage de la copie locale de l'objet de domaine même\n"
+"-R forcer l'affichage de la copie locale de l'objet de "
+"domaine même\n"
" s'il contient un renvoi\n"
-"-a rechercher aussi dans toutes les bases de données miroir\n"
+"-a rechercher aussi dans toutes les bases de données "
+"miroir\n"
"-s SOURCE[,SOURCE]... rechercher dans la base de données miroir de SOURCE\n"
-"-g SOURCE:PREM-DERN trouver les mises à jour de la SOURCE ayant des numéros\n"
+"-g SOURCE:PREM-DERN trouver les mises à jour de la SOURCE ayant des "
+"numéros\n"
" de série entre PREM et DERN\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
+"-t TYPE request template for object of TYPE\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources|types] query specified server info\n"
+msgstr ""
"-t TYPE demander la syntaxe pour les objets de ce TYPE\n"
-"-v TYPE demander la syntaxe détaillée pour les objets de ce TYPE\n"
+"-v TYPE demander la syntaxe détaillée pour les objets de ce "
+"TYPE\n"
"-q [version|sources|types] demander les informations spécifiées au serveur\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "chiffrement à base DES étendu par BSDI"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "fonction crypt(3) standard, chiffrement DES à 56 bits"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "La méthode « %s » est invalide.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Le nombre « %s » est invalide.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Veuillez taper « %s --help » pour plus d'informations.\n"
# : ../mkpasswd.c:152
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
@@ -233,29 +284,29 @@ msgstr[0] "Mauvaise taille d'aléa : %d octet au lieu de %d.\n"
msgstr[1] "Mauvaise taille d'aléa : %d octets au lieu de %d.\n"
# : ../mkpasswd.c:152
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "Mauvaise taille d'aléa : %d octet, non comprise entre %d et %d.\n"
msgstr[1] "Mauvaise taille d'aléa : %d octets, non comprise entre %d et %d.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Le caractère « %c » est invalide dans l'aléa.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Mot de passe : "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "Méthode non prise en charge par crypt(3).\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -266,16 +317,34 @@ msgstr ""
"Chiffre le MOT DE PASSE à l'aide de la fonction crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TYPE sélectionner ce TYPE de méthode\n"
+" -5 équivalent à --method=md5\n"
+" -S, --salt=ALÉA utiliser cet ALÉA\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=NOMBRE utiliser le NOMBRE de passages indiqué\n"
+" -P, --password-fd=NUM lire le mot de passe depuis le descripteur de\n"
+" fichier NUM\n"
+" au lieu de /dev/tty\n"
+" -s, --stdin équivalent à --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -285,14 +354,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TYPE sélectionner ce TYPE de méthode\n"
-" -5 équivalent à --method=md5\n"
-" -S, --salt=ALÉA utiliser cet ALÉA\n"
-" -R, --rounds=NOMBRE utiliser le NOMBRE de passages indiqué\n"
-" -P, --password-fd=NUM lire le mot de passe depuis le descripteur de\n"
-" fichier NUM\n"
-" au lieu de /dev/tty\n"
-" -s, --stdin équivalent à --password-fd=0\n"
" -h, --help afficher cette page d'aide et sortir\n"
" -V, --version afficher les informations de version et sortir\n"
"\n"
@@ -302,7 +363,7 @@ msgstr ""
"\n"
"Veuillez signaler les bogues à %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Méthodes disponibles :\n"
diff --git a/po/it.po b/po/it.po
index dc02833..5e02f09 100644
--- a/po/it.po
+++ b/po/it.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 5.0.24\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2013-04-10 04:19+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-07-18 02:08+0200\n"
"Last-Translator: Marco d'Itri <md@linux.it>\n"
"Language-Team: Italian <tp@lists.linux.it>\n"
"Language: it\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -26,30 +26,30 @@ msgstr ""
"\n"
"Segnalare i bug a %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Uso il server %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Questo TLD non ha un server whois, ma si può accedere al database tramite"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Non esiste un server whois per questo TLD."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Non è noto alcun server whois per questo tipo di oggetto."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr ""
"Numero dell'AS o della rete IP sconosciuto. Per favore aggiorna il programma."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Uso il server %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -60,7 +60,7 @@ msgstr ""
"Cerco l'endpoint IPv4 %s di un indirizzo IPv6 6to4.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -71,7 +71,7 @@ msgstr ""
"Cerco l'endpoint IPv4 %s di un indirizzo IPv6 Teredo.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -80,7 +80,7 @@ msgstr ""
"Richiesta: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -93,16 +93,16 @@ msgstr ""
"Trovato un riferimento a %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Impossibile interpretare questa riga: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Attenzione: sono stati usati dei flag RIPE con un server tradizionale."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -110,145 +110,187 @@ msgstr ""
"Errore catastrofico: il testo di avvertenze è cambiato.\n"
"Aggiorna questo programma.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Host %s non trovato."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: servizio sconosciuto"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Tempo scaduto."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Interrotto dal segnale %d..."
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Uso: whois [OPZIONE]... OGGETTO...\n"
+"\n"
+"-h HOST, --host HOST si connette al server HOST\n"
+"-p PORTA, --port PORTA si connette alla PORTA\n"
+"-I chiede a whois.iana.org e segue il rinvio\n"
+"-H nasconde le avvertenze legali\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose spiega cosa sta facendo\n"
+" --help mostra questo aiuto ed esce\n"
+" --version stampa le informazioni sulla versione ed esce\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"Le seguenti opzioni sono gestite da whois.ripe.net e alcuni server simili:\n"
+"-l trova la corrispondenza un livello meno specifica\n"
+"-L trova le corrispondenze meno specifiche a tutti i "
+"livelli\n"
+"-m trova le corrispondenze di primo livello più specifiche\n"
+"-M trova le corrispondenze più specifiche a tutti i livelli\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c trova la corrispondenza più specifica contenente un\n"
+" attributo mnt-irt\n"
+"-x trova solo la corrispondenza esatta\n"
+"-b mostra solo la rete IP con il contatto per gli abusi\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B non filtra gli oggetti (mostra gli indirizzi di e-mail)\n"
+"-G non raggruppa gli oggetti collegati\n"
+"-d restituisce anche gli oggetti della delega del DNS\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... fa una ricerca inversa per l'ATTRibuto specificato\n"
+"-T TIPO[,TIPO]... cerca solo oggetti del TIPO\n"
+"-K restituisce solo le chiavi primarie\n"
+"-r disabilita le ricerche ricorsive per i contatti\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
-"-t TYPE request template for object of TYPE\n"
-"-v TYPE request verbose template for object of TYPE\n"
-"-q [version|sources|types] query specified server info\n"
msgstr ""
-"Uso: whois [OPZIONE]... OGGETTO...\n"
-"\n"
-"-h HOST, --host HOST si connette al server HOST\n"
-"-p PORTA, --port PORTA si connette alla PORTA\n"
-"-H nasconde le avvertenze legali\n"
-" --verbose spiega cosa sta facendo\n"
-" --help mostra questo aiuto ed esce\n"
-" --version stampa le informazioni sulla versione ed esce\n"
-"\n"
-"Le seguenti opzioni sono gestite da whois.ripe.net e alcuni server simili:\n"
-"-l trova la corrispondenza un livello meno specifica\n"
-"-L trova le corrispondenze meno specifiche a tutti i livelli\n"
-"-m trova le corrispondenze di primo livello più specifiche\n"
-"-M trova le corrispondenze più specifiche a tutti i livelli\n"
-"-c trova la corrispondenza più specifica contenente un\n"
-" attributo mnt-irt\n"
-"-x trova solo la corrispondenza esatta\n"
-"-b mostra solo la rete IP con il contatto per gli abusi\n"
-"-B non filtra gli oggetti (mostra gli indirizzi di e-mail)\n"
-"-B non raggruppa gli oggetti associati\n"
-"-d restituisce anche gli oggetti della delega del DNS\n"
-"-i ATTR[,ATTR]... fa una ricerca inversa per l'ATTRibuto specificato\n"
-"-T TIPO[,TIPO]... cerca solo oggetti del TIPO\n"
-"-K restituisce solo le chiavi primarie\n"
-"-r disabilita le ricerche ricorsive per i contatti\n"
"-R mostra la copia locale dell'oggetto domain anche se\n"
" contiene un riferimento\n"
"-a cerca anche in tutti i database replicati\n"
"-s SOURCE[,SOURCE]... cerca il database replicato da SOURCE\n"
"-g SOURCE:FIRST-LAST trova gli aggiornamenti di SOURCE dal seriale F a L\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
+"-t TYPE request template for object of TYPE\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources|types] query specified server info\n"
+msgstr ""
"-t TIPO chiede il template per un oggetto del TIPO\n"
"-v TIPO chiede il template prolisso per un oggetto del TIPO\n"
"-q [version|sources|types] chiede al server le informazioni indicate\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "crypt(3) estesa di BSDI basata su DES"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "crypt(3) standard a 56 bit basata su DES"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "Il metodo '%s' non è valido.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Il numero '%s' non è valido.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Per maggior informazioni prova '%s --help'.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Lunghezza del sale sbagliata: %d byte invece di %d.\n"
msgstr[1] "Lunghezza del sale sbagliata: %d byte invece di %d.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "Lunghezza del sale sbagliata: %d byte invece di %d <= n <= %d.\n"
msgstr[1] "Lunghezza del sale sbagliata: %d byte invece di %d <= n <= %d.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Il carattere '%c' non è valido in un sale.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Password: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "Metodo non gestito da crypt(3).\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -259,16 +301,33 @@ msgstr ""
"Cifra la PASSWORD usando crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TIPO seleziona il TIPO di metodo\n"
+" -5 come --method=md5\n"
+" -S, --salt=SALE usa il SALE specificato\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=NUMBER usa il NUMERO indicato di iterazioni\n"
+" -P, --password-fd=NUM legge la password dal file descriptor NUM\n"
+" invece che da /dev/tty\n"
+" -s, --stdin come --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -278,13 +337,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TIPO seleziona il TIPO di metodo\n"
-" -5 come --method=md5\n"
-" -S, --salt=SALE usa il SALE specificato\n"
-" -R, --rounds=NUMBER usa il NUMERO indicato di iterazioni\n"
-" -P, --password-fd=NUM legge la password dal file descriptor NUM\n"
-" invece che da /dev/tty\n"
-" -s, --stdin come --password-fd=0\n"
" -h, --help mostra questo aiuto ed esce\n"
" -v, --version mostra le informazioni sulla versione ed esce\n"
"\n"
@@ -294,7 +346,7 @@ msgstr ""
"\n"
"Segnalare i bug a %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Metodi disponibili:\n"
diff --git a/po/ja.po b/po/ja.po
index 0b5a936..21aa88a 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 4.7.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
"PO-Revision-Date: 2005-04-26 00:20+0900\n"
"Last-Translator: Satoru SATOH <ss@gnome.gr.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -28,30 +28,30 @@ msgstr ""
"\n"
"バグ報告は %s へ.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "サーバー %s を使用\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"この TLD には whois サーバーがありませんが、次のサーバーで whois データベース"
"にアクセスできます"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "この TLD には whois サーバーがありません"
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "この種のオブジェクトに対する既知の whois サーバーはありません"
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "不明な AS 番号または IP ネットワーク. アップグレードして下さい"
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "サーバー %s を使用\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -62,7 +62,7 @@ msgstr ""
"6to4 IPv6 アドレスの IPv4 終端 %s を問い合わせ中\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, fuzzy, c-format
msgid ""
"\n"
@@ -73,7 +73,7 @@ msgstr ""
"6to4 IPv6 アドレスの IPv4 終端 %s を問い合わせ中\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -82,7 +82,7 @@ msgstr ""
"問い合わせ文字列: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -95,16 +95,16 @@ msgstr ""
"%s への照会をみつけました\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "この行を解析できません: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "警告: 旧来のサーバーについて RIPE フラグが使用されています"
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -112,113 +112,174 @@ msgstr ""
"破滅的なエラー: 免責条項テキストが変更されました\n"
"このプログラムをアップグレードして下さい\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "ホスト %s はみつかりませんでした"
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: 不明なサービス"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "時間切れ"
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "シグナル %d が割込み..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"-h HOST サーバー HOST に接続\n"
+"-p PORT PORT に接続\n"
+"-H 法的責任棄却声明を表示しない\n"
+
+#: ../whois.c:1495
+#, fuzzy, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose 進捗について詳細に説明\n"
+" --help このヘルプを表示して終了\n"
+" --version バージョン情報を表示して終了\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+
+#: ../whois.c:1508
+#, fuzzy, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr "-x 厳密にマッチ\n"
+
+#: ../whois.c:1513
+#, fuzzy, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr "-d DNS 逆向き移譲オブジェクトも返す\n"
+
+#: ../whois.c:1518
+#, fuzzy, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... 指定属性 ATTR について逆引き\n"
+"-T TYPE[,TYPE]... TYPE オブジェクトのみについて検索\n"
+"-K 主キーのみ返す\n"
+"-r コンタクト情報について再帰検索しない\n"
+
+#: ../whois.c:1524
+#, fuzzy, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R 照会が含まれていても強制的にドメインオブジェクトの\n"
+" ローカルコピーを表示\n"
+"-a すべてのデータベースを検索\n"
+"-s SOURCE[,SOURCE]... SOURCE からデータベースを検索\n"
+"-g SOURCE:FIRST-LAST SOURCE (シリアル FIRST から LAST まで)から更新を検索\n"
+
+#: ../whois.c:1531
+#, fuzzy, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t TYPE TYPE オブジェクトについてテンプレートを要求 (リストは "
+"'all')\n"
+"-v TYPE TYPE オブジェクトについて冗長なテンプレートを要求\n"
+"-q [version|sources|types] 指定サーバー情報を問い合わせ\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+#, fuzzy
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "\t標準 56 ビット DES ベース暗号(3)"
+
+#: ../mkpasswd.c:131
#, fuzzy
msgid "standard 56 bit DES-based crypt(3)"
msgstr "\t標準 56 ビット DES ベース暗号(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, fuzzy, c-format
msgid "Invalid method '%s'.\n"
msgstr "不正な数字 '%s'\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "不正な数字 '%s'\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "さらなる詳細については '%s --help' を実行\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, fuzzy, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "間違ったソルト長: %d バイト(s) (%d を期待)\n"
msgstr[1] "間違ったソルト長: %d バイト(s) (%d を期待)\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, fuzzy, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] "間違ったソルト長: %d バイト(s) (%d を期待)\n"
msgstr[1] "間違ったソルト長: %d バイト(s) (%d を期待)\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "不正なソルト文字 '%c'\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "パスワード: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr ""
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -229,16 +290,31 @@ msgstr ""
"PASSWORD を crypt(3) で暗号化\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, fuzzy, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -H, --hash=TYPE ハッシュ TYPE を選択\n"
+" -S, --salt=SALT 指定の SALT を選択\n"
+
+#: ../mkpasswd.c:503
+#, fuzzy, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -P, --password-fd=NUM /dev/tty の代わりにファイルディスクリプタ\n"
+" NUM からパスワードを読み込む\n"
+" -s, --stdin --password-fd=0 と同様\n"
+
+#: ../mkpasswd.c:509
+#, fuzzy, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -248,11 +324,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -H, --hash=TYPE ハッシュ TYPE を選択\n"
-" -S, --salt=SALT 指定の SALT を選択\n"
-" -P, --password-fd=NUM /dev/tty の代わりにファイルディスクリプタ\n"
-" NUM からパスワードを読み込む\n"
-" -s, --stdin --password-fd=0 と同様\n"
" -h, --help このヘルプを表示して終了\n"
" -V, --version バージョン情報を出力して終了\n"
"\n"
@@ -262,80 +333,11 @@ msgstr ""
"\n"
"バグ報告は %s へ.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, fuzzy, c-format
msgid "Available methods:\n"
msgstr "利用可能なアルゴリズム:\n"
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --verbose explain what is being done\n"
-#~ " --help display this help and exit\n"
-#~ " --version output version information and exit\n"
-#~ msgstr ""
-#~ ": whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL のみ]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x 厳密にマッチ [RPSL のみ]\n"
-#~ "-d DNS 逆向き移譲オブジェクトも返す [RPSL のみ]\n"
-#~ "-i ATTR[,ATTR]... 指定属性 ATTR について逆引き\n"
-#~ "-T TYPE[,TYPE]... TYPE オブジェクトのみについて検索\n"
-#~ "-K 主キーのみ返す [RPSL のみ]\n"
-#~ "-r コンタクト情報について再帰検索しない\n"
-#~ "-R 照会が含まれていても強制的にドメインオブジェクト"
-#~ "の\n"
-#~ " ローカルコピーを表示\n"
-#~ "-a すべてのデータベースを検索\n"
-#~ "-s SOURCE[,SOURCE]... SOURCE からデータベースを検索\n"
-#~ "-g SOURCE:FIRST-LAST SOURCE (シリアル FIRST から LAST まで)から更新を検"
-#~ "索\n"
-#~ "-t TYPE TYPE オブジェクトについてテンプレートを要求 (リスト"
-#~ "は 'all')\n"
-#~ "-v TYPE TYPE オブジェクトについて冗長なテンプレートを要求\n"
-#~ "-q [version|sources|types] 指定サーバー情報を問い合わせ [RPSL のみ]\n"
-#~ "-F 高速直接(ロー)出力 (-r を暗示)\n"
-#~ "-h HOST サーバー HOST に接続\n"
-#~ "-p PORT PORT に接続\n"
-#~ "-H 法的責任棄却声明を表示しない\n"
-#~ " --verbose 進捗について詳細に説明\n"
-#~ " --help このヘルプを表示して終了\n"
-#~ " --version バージョン情報を表示して終了\n"
-
#~ msgid "Illegal password character '0x%hhx'.\n"
#~ msgstr "不正なパスワード文字 '0x%hhx'\n"
diff --git a/po/nb.po b/po/nb.po
index ee0e633..0ded92d 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 4.4.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\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"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -23,29 +23,29 @@ msgid ""
"Report bugs to %s.\n"
msgstr ""
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Bruker tjener %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr ""
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr ""
-#: ../whois.c:251
+#: ../whois.c:336
#, fuzzy
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Ukjent AS-nummer. Vennligst oppdater programmet."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Bruker tjener %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -53,7 +53,7 @@ msgid ""
"\n"
msgstr ""
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -61,7 +61,7 @@ msgid ""
"\n"
msgstr ""
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -70,7 +70,7 @@ msgstr ""
"Foresprsel: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, fuzzy, c-format
msgid ""
"\n"
@@ -82,17 +82,17 @@ msgstr ""
"Fant InterNIC-referanse til %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr ""
-#: ../whois.c:516
+#: ../whois.c:642
#, fuzzy
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Merk: RIPE-flaggene ignoreres for en tradisjonell tjener."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
#, fuzzy
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
@@ -101,112 +101,169 @@ msgstr ""
"Alvorlig feil: INTERNIC har endret standardtekst.\n"
"Vennligst oppdater programmet.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Finner ikke verten %s."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: ukjent port"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr ""
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Avbrudt av signal %d..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Bruk: whois [OPSJONER]... OBJEKTER...\n"
+"\n"
+"-h VERT koble til tjener VERT\n"
+"-p PORT koble til PORT\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+
+#: ../whois.c:1501
+#, fuzzy, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"-L finn alle mindre spesifike treff\n"
+"-m finn frste niv av mer spesifike treff\n"
+"-M finn alle mer spesifike treff\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+
+#: ../whois.c:1518
+#, fuzzy, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... gjr reversoppslag for attributtene ATTR\n"
+"-T TYPE[,TYPE]... se bare p objekttype TYPE\n"
+"-r ikke foreta rekursive oppslag\n"
+
+#: ../whois.c:1524
+#, fuzzy, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R vis lokal kopi av objektet selv om det inneholder\n"
+" en referanse\n"
+"-a sk i alle databaser\n"
+"-s KILDE[,KILDE]... sk i databasen fra KILDE\n"
+"-g KILDE:FRSTE-SISTE finn oppdateringer fra KILDE fra serie FRSTE til "
+
+#: ../whois.c:1531
+#, fuzzy, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t TYPE be om mal for objekttype TYPE ('all' gir en liste)\n"
+"-v TYPE be om utfrlig mal for objekttype TYPE\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr ""
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr ""
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr ""
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr ""
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr ""
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] ""
msgstr[1] ""
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
msgstr[0] ""
msgstr[1] ""
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr ""
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr ""
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr ""
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -214,16 +271,26 @@ msgid ""
"\n"
msgstr ""
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -234,72 +301,11 @@ msgid ""
"Report bugs to %s.\n"
msgstr ""
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr ""
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --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"
-#~ "-a sk i alle databaser\n"
-#~ "-F full utskrift (impliserer -r)\n"
-#~ "-g KILDE:FRSTE-SISTE finn oppdateringer fra KILDE fra serie FRSTE til "
-#~ "SISTE\n"
-#~ "-h VERT koble til tjener VERT\n"
-#~ "-i ATTR[,ATTR]... gjr reversoppslag for attributtene ATTR\n"
-#~ "-L finn alle mindre spesifike treff\n"
-#~ "-M finn alle mer spesifike treff\n"
-#~ "-m finn frste niv av mer spesifike treff\n"
-#~ "-r ikke foreta rekursive oppslag\n"
-#~ "-p PORT koble til PORT\n"
-#~ "-R vis lokal kopi av objektet selv om det inneholder\n"
-#~ " en referanse\n"
-#~ "-S be tjeneren utelate syntaktisk \"sukker\"\n"
-#~ "-s KILDE[,KILDE]... sk i databasen fra KILDE\n"
-#~ "-T TYPE[,TYPE]... se bare p objekttype TYPE\n"
-#~ "-t TYPE be om mal for objekttype TYPE ('all' gir en "
-#~ "liste)\n"
-#~ "-v TYPE be om utfrlig mal for objekttype TYPE\n"
-#~ "-V forklarer hva som skjer\n"
-#~ "\n"
-#~ "Versjon %s. Rapporter feil til %s.\n"
-
#~ msgid "Using default server %s.\n"
#~ msgstr "Bruker standardtjener %s.\n"
diff --git a/po/pl.po b/po/pl.po
index 48ef588..7c27dae 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,24 +1,24 @@
# Polish translation for whois.
-# Micha 'CeFeK' Nazarewicz <cefek@career.pl>, 1999
-# Przemysaw Knycz <djrzulf@pld.org.pl>, 2003
-# Jakub Bogusz <qboosh@pld-linux.org>, 2003-2013
+# Michał 'CeFeK' Nazarewicz <cefek@career.pl>, 1999
+# Przemysław Knycz <djrzulf@pld.org.pl>, 2003
+# Jakub Bogusz <qboosh@pld-linux.org>, 2003-2019
#
msgid ""
msgstr ""
-"Project-Id-Version: whois 5.0.24\n"
+"Project-Id-Version: whois 5.5.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2013-04-11 17:48+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-08-28 18:02+0200\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -27,31 +27,31 @@ msgid ""
msgstr ""
"Wersja %s.\n"
"\n"
-"Bdy prosz zgasza na adres %s.\n"
+"Błędy proszę zgłaszać na adres %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Uycie serwera %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
-"Ta gwna domena nie ma serwera whois, ale mona uy bazy danych whois pod"
+"Ta główna domena nie ma serwera whois, ale można użyć bazy danych whois pod"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
-msgstr "Ta gwna domena nie ma serwera whois."
+msgstr "Ta główna domena nie ma serwera whois."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
-msgstr "Dla tego rodzaju obiektu nie jest znany aden serwer whois."
+msgstr "Dla tego rodzaju obiektu nie jest znany żaden serwer whois."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
-msgstr "Nieznany numer AS lub sie IP. Prosz uaktualni ten program."
+msgstr "Nieznany numer AS lub sieć IP. Proszę uaktualnić ten program."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Użycie serwera %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -59,10 +59,10 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Pytanie o zakoczenie IPv4 %s adresu IPv6 typu 6to4.\n"
+"Pytanie o zakończenie IPv4 %s adresu IPv6 typu 6to4.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -70,10 +70,10 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Pytanie o zakoczenie IPv4 %s adresu IPv6 Teredo.\n"
+"Pytanie o zakończenie IPv4 %s adresu IPv6 Teredo.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -82,7 +82,7 @@ msgstr ""
"Zapytanie: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -95,185 +95,254 @@ msgstr ""
"Znaleziono odniesienie do %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
-msgstr "Nie mona przeanalizowa tej linii: %s"
+msgstr "Nie można przeanalizować tej linii: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
-msgstr "Uwaga: uyto flag RIPE ze starszym serwerem."
+msgstr "Uwaga: użyto flag RIPE ze starszym serwerem."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
msgstr ""
-"Katastrofa! Tekst owiadczenia zosta zmieniony.\n"
-"Prosz uaktualni ten program.\n"
+"Katastrofa! Tekst oświadczenia został zmieniony.\n"
+"Proszę uaktualnić ten program.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
-msgstr "Serwer %s nie zosta znaleziony."
+msgstr "Serwer %s nie został znaleziony."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
-msgstr "%s/tcp: usuga nieznana"
+msgstr "%s/tcp: usługa nieznana"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
-msgstr "Upyn limit czasu."
+msgstr "Upłynął limit czasu."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
-msgstr "Przerwano sygnaem %d..."
+msgstr "Przerwano sygnałem %d..."
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Składnia: whois [OPCJA]... OBIEKT...\n"
+"\n"
+"-h HOST, --host HOST łączenie z serwerem HOST\n"
+"-p PORT, --port PORT łączenie z portem PORT\n"
+"-I odpytanie whois.iana.org i podążanie za odwołaniami\n"
+"-H ukrycie oświadczeń prawnych\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose wyjaśnianie, co się dzieje\n"
+" --help wyświetlenie tego opisu i zakończenie działania\n"
+" --version wyświetlenie informacji o wersji i zakończenie "
+"działania\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"Następujące flagi są obsługiwane przez serwery whois.ripe.net i podobne:\n"
+"-l zapytanie o jeden poziom mniej szczegółowe\n"
+"-L wyszukanie wszystkich mniej szczegółowych dopasowań\n"
+"-m wyszukanie pierwszego bardziej szczegółowego "
+"dopasowania\n"
+"-M wyszukanie wszystkich bardziej szczegółowych "
+"dopasowań\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c wyszukanie najmniejszego dopasowania z atrybutem mnt-"
+"irt\n"
+"-x dokładne dopasowanie\n"
+"-b wypisanie zwięźle przedziałów adresów IP i kontaktu "
+"abuse\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B bez filtrowania abiektów (wyświetlanie adresów e-"
+"mail)\n"
+"-G bez grupowania powiązanych obiektów\n"
+"-d także obiekty odwrotnej delegacji DNS\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-T TYP[,TYP]... szukanie tylko obiektów podanego TYPU\n"
+"-K zwrócenie tylko podstawowych kluczy\n"
+"-r bez rekursywnego poszukiwania informacji "
+"kontaktowych\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R wymuszenie pokazania lokalnej kopii obiektu domeny "
+"nawet\n"
+" jeśli zawiera odwołanie\n"
+"-a przeszukanie wszystkich baz danych z kopii "
+"lustrzanej\n"
+"-s ŹRÓDŁO[,ŹRÓDŁO]... przeszukanie odbicia lustrzanego bazy danych ze "
+"ŹRÓDŁA\n"
+"-g ŹRÓDŁO:PIERW.-OST. szukanie uaktualnień ze ŹRÓDŁA od numeru PIERW. do "
+"OST.\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
-"Skadnia: whois [OPCJA]... OBIEKT...\n"
-"\n"
-"-h HOST, --host HOST czenie z serwerem HOST\n"
-"-p PORT, --port PORT czenie z portem PORT\n"
-"-H ukrycie owiadcze prawnych\n"
-" --verbose wyjanianie, co si dzieje\n"
-" --help wywietlenie tego opisu i zakoczenie dziaania\n"
-" --version wywietlenie informacji o wersji i zakoczenie dziaania\n"
-"\n"
-"Nastpujce flagi s obsugiwane przez serwery whois.ripe.net i podobne:\n"
-"-l zapytanie o jeden poziom mniej szczegowe\n"
-"-L wyszukanie wszystkich mniej szczegowych dopasowa\n"
-"-m wyszukanie pierwszego bardziej szczegowego dopasowania\n"
-"-M wyszukanie wszystkich bardziej szczegowych dopasowa\n"
-"-c wyszukanie najmniejszego dopasowania z atrybutem mnt-irt\n"
-"-x dokadne dopasowanie\n"
-"-b wypisanie zwile przedziaw adresw IP i kontaktu abuse\n"
-"-B bez filtrowania abiektw (wywietlanie adresw e-mail)\n"
-"-G bez grupowania powizanych obiektw\n"
-"-d take obiekty odwrotnej delegacji DNS\n"
-"-i ATR[,ATR]... wykonanie odwrotnego wyszukiwania ATRybutw\n"
-"-T TYP[,TYP]... szukanie tylko obiektw podanego TYPU\n"
-"-K zwrcenie tylko podstawowych kluczy\n"
-"-r bez rekursywnego poszukiwania informacji kontaktowych\n"
-"-R wymuszenie pokazania lokalnej kopii obiektu domeny nawet\n"
-" jeli zawiera odwoanie\n"
-"-a przeszukanie wszystkich baz danych z kopii lustrzanej\n"
-"-s RDO[,RDO]... przeszukanie odbicia lustrzanego bazy danych ze RDA\n"
-"-g RDO:PIERW.-OST. szukanie uaktualnie ze RDA od numeru PIERW. do OST.\n"
-"-t TYP danie szablonu dla obiektu podanego TYPU\n"
-"-v TYP danie szczegowego szablonu dla obiektu podanego TYPU\n"
+"-t TYP żądanie szablonu dla obiektu podanego TYPU\n"
+"-v TYP żądanie szczegółowego szablonu dla obiektu podanego "
+"TYPU\n"
"-q [version|sources|types] zapytanie serwera o podane informacje\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "oparta o DES rozszerzona funkcja crypt(3) BSDI"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "standardowa 56-bitowa, oparta o DES funkcja crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
-msgstr "Nieprawidowa metoda '%s'.\n"
+msgstr "Nieprawidłowa metoda '%s'.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
-msgstr "Nieprawidowa liczba '%s'.\n"
+msgstr "Nieprawidłowa liczba '%s'.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
-msgstr "'%s --help' poda wicej informacji.\n"
+msgstr "'%s --help' poda więcej informacji.\n"
# : ../mkpasswd.c:152
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
-msgstr[0] "Bdna dugo zarodka: %d bajt kiedy oczekiwano %d.\n"
-msgstr[1] "Bdna dugo zarodka: %d bajty kiedy oczekiwano %d.\n"
-msgstr[2] "Bdna dugo zarodka: %d bajtw kiedy oczekiwano %d.\n"
+msgstr[0] "Błędna długość zarodka: %d bajt kiedy oczekiwano %d.\n"
+msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d.\n"
+msgstr[2] "Błędna długość zarodka: %d bajtów kiedy oczekiwano %d.\n"
# : ../mkpasswd.c:152
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
-msgstr[0] "Bdna dugo zarodka: %d bajt kiedy oczekiwano %d <= n <= %d.\n"
-msgstr[1] "Bdna dugo zarodka: %d bajty kiedy oczekiwano %d <= n <= %d.\n"
-msgstr[2] "Bdna dugo zarodka: %d bajtw kiedy oczekiwano %d <= n <= %d.\n"
+msgstr[0] "Błędna długość zarodka: %d bajt kiedy oczekiwano %d <= n <= %d.\n"
+msgstr[1] "Błędna długość zarodka: %d bajty kiedy oczekiwano %d <= n <= %d.\n"
+msgstr[2] "Błędna długość zarodka: %d bajtów kiedy oczekiwano %d <= n <= %d.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
-msgstr "Bdny znak zarodka '%c'.\n"
+msgstr "Błędny znak zarodka '%c'.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
-msgstr "Haso: "
+msgstr "Hasło: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
-msgstr "Metoda nie obsugiwana przez crypt(3).\n"
+msgstr "Metoda nie obsługiwana przez crypt(3).\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
"Crypts the PASSWORD using crypt(3).\n"
"\n"
msgstr ""
-"Skadnia: mkpasswd [OPCJE]... [HASO [ZARODEK]]\n"
-"Koduje HASO przy uyciu funkcji crypt(3).\n"
+"Składnia: mkpasswd [OPCJE]... [HASŁO [ZARODEK]]\n"
+"Koduje HASŁO przy użyciu funkcji crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TYP wybór metody TYP\n"
+" -5 to samo, co --method=md5\n"
+" -S, --salt=ZARODEK użycie podanego ZARODKA\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=LICZBA użycie podanej LICZBY cykli\n"
+" -P, --password-fd=NUM odczyt hasła z deskryptora pliku NUM zamiast\n"
+" z /dev/tty\n"
+" -s, --stdin to samo co --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -283,24 +352,17 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TYP wybr metody TYP\n"
-" -5 to samo, co --method=md5\n"
-" -S, --salt=ZARODEK uycie podanego ZARODKA\n"
-" -R, --rounds=LICZBA uycie podanej LICZBY cykli\n"
-" -P, --password-fd=NUM odczyt hasa z deskryptora pliku NUM zamiast\n"
-" z /dev/tty\n"
-" -s, --stdin to samo co --password-fd=0\n"
-" -h, --help wywietlenie tego opisu i zakoczenie dziaania\n"
-" -V, --version wywietlenie informacji o wersji i zakoczenie "
-"dziaania\n"
+" -h, --help wyświetlenie tego opisu i zakończenie działania\n"
+" -V, --version wyświetlenie informacji o wersji i zakończenie "
+"działania\n"
"\n"
-"Jeli nie podano HASA, pobierane jest interaktywnie.\n"
-"Jeli nie podano ZARODKA, generowany jest losowy.\n"
-"Jeli podano TYP 'help', wypisywane s dostpne metody.\n"
+"Jeśli nie podano HASŁA, pobierane jest interaktywnie.\n"
+"Jeśli nie podano ZARODKA, generowany jest losowy.\n"
+"Jeśli podano TYP 'help', wypisywane są dostępne metody.\n"
"\n"
-"Bdy prosz zgasza na adres %s.\n"
+"Błędy proszę zgłaszać na adres %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
-msgstr "Dostpne metody:\n"
+msgstr "Dostępne metody:\n"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 34285d2..5faf711 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7,17 +7,17 @@ msgid ""
msgstr ""
"Project-Id-Version: whois 4.7.5\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
"PO-Revision-Date: 2006-04-26 21:03-0300\n"
"Last-Translator: Anderson Goulart <globalx@gmail.com>\n"
"Language-Team: Portuguese/Brazil\n"
-"Language: \n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -28,30 +28,30 @@ msgstr ""
"\n"
"Reporte bugs para %s \n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Utilizando servidor %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Este TLD no tem servidor whois, mas voc pode acessar a base de dados do "
"whois em"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "No existe servidor whois para este TLD."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Nenhum servidor whois conhecido para este tipo de objeto."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Nmero AS ou rede IP desconhecidos. Por favor, atualize este programa."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Utilizando servidor %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -62,7 +62,7 @@ msgstr ""
"Procurando pela extremidade IPv4 %s de um endereo IPv6. 6to4.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, fuzzy, c-format
msgid ""
"\n"
@@ -73,7 +73,7 @@ msgstr ""
"Procurando pela extremidade IPv4 %s de um endereo IPv6. 6to4.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -82,7 +82,7 @@ msgstr ""
"Consulta: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -95,16 +95,16 @@ msgstr ""
"Uma referncia para%s encontrada.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "No pde processar esta linha: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Aviso: RIPE flags utilizados com um servidor tradicional."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -112,91 +112,164 @@ msgstr ""
"Erro catastrfico: o texto das condies de uso foi alterado.\n"
"Por favor, atualize este programa. \n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Host %s no encontrado."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: servio desconhecido"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Tempo esgotado."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Interrompido pelo sinal %d..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Uso: whois [OPES]... OBJETO...\n"
+"\n"
+"-h HOST conecta no servidor HOST\n"
+"-p PORTA conecta na PORTA\n"
+"-H esconde o aviso legal\n"
+
+#: ../whois.c:1495
+#, fuzzy, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose mostra o que est acontecendo\n"
+" --help exibe essa ajuda e sai\n"
+" --version exibe informaes sobre a verso e sai\n"
+
+#: ../whois.c:1501
+#, fuzzy, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"-l descende em um nvel a especificidade da busca\n"
+"-L busca as correspondncias menos especficas\n"
+"-m busca o primeiro nvel mais especfico\n"
+"-M busca as correspondncias mais especficas\n"
+
+#: ../whois.c:1508
+#, fuzzy, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c busca a correspondncia menos especfica que contm o "
+"atributo mnt-irt\n"
+"-x busca exata\n"
+
+#: ../whois.c:1513
+#, fuzzy, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-d retorna tambm objetos de delegao de DNS reverso\n"
+
+#: ../whois.c:1518
+#, fuzzy, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... efetua uma busca inversa para os ATTRibutos "
+"especificados\n"
+"-T TIPO[,TIPO]... busca somente por objetos do TIPO\n"
+"-K somente chaves primrias so retornadas\n"
+"-r desabilita buscas recursivas para informaes de "
+"contatos\n"
+
+#: ../whois.c:1524
+#, fuzzy, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R mostra a cpia local do objeto especificado incluso\n"
+" se contm uma referncia\n"
+"-a busca em todas as bases de dados\n"
+"-s SOURCE[,SOURCE]... busca na base de dados de SOURCE\n"
+"-g SOURCE:FIRST-LAST encontra atualizaes de SOURCE da srie FIRST at "
+"LAST\n"
+
+#: ../whois.c:1531
+#, fuzzy, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
+"-t TIPO obtm o modelo para objeto de TIPO ('all' para uma "
+"lista)\n"
+"-v TIPO obtm o modelo detalhado para objeto de TIPO\n"
+"-q [version|sources|types] consulta informaes sobre o servidor\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+#, fuzzy
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "\tstandard 56 bit DES-based crypt(3)"
+
+#: ../mkpasswd.c:131
#, fuzzy
msgid "standard 56 bit DES-based crypt(3)"
msgstr "\tstandard 56 bit DES-based crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, fuzzy, c-format
msgid "Invalid method '%s'.\n"
msgstr "Nmero invlido '%s'.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Nmero invlido '%s'.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Tente '%s --help para maiores informaes.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] "Tamanho do salt incorreto: %d byte enquanto %d eram esperados.\n"
msgstr[1] "Tamanho do salt incorreto: %d bytes enquanto %d eram esperados.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
@@ -205,22 +278,22 @@ msgstr[0] ""
msgstr[1] ""
"Tamanho do salt incorreto: %d bytes enquanto %d <= n <= %d eram esperados.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Caractere salt ilegal '%c'.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Senha: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr ""
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -231,16 +304,31 @@ msgstr ""
"Encripta a PASSWORD utilizando crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, fuzzy, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -H, --hash=TYPE seleciona o hash TYPE\n"
+" -S, --salt=SALT usa o SALT especfico\n"
+
+#: ../mkpasswd.c:503
+#, fuzzy, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -P, --password-fd=NUM l a senha do descritor de arquivo NUM\n"
+" ao invs do /dev/tty\n"
+" -s, --stdin como em --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, fuzzy, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -250,11 +338,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -H, --hash=TYPE seleciona o hash TYPE\n"
-" -S, --salt=SALT usa o SALT especfico\n"
-" -P, --password-fd=NUM l a senha do descritor de arquivo NUM\n"
-" ao invs do /dev/tty\n"
-" -s, --stdin como em --password-fd=0\n"
" -h, --help exibe essa ajuda e sai\n"
" -V, --version exibe informaes sobre a verso e sai\n"
"\n"
@@ -264,84 +347,11 @@ msgstr ""
"\n"
"Reporte bugs para %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, fuzzy, c-format
msgid "Available methods:\n"
msgstr "Algoritmos disponveis: \n"
-#, fuzzy
-#~ msgid ""
-#~ "Usage: whois [OPTION]... OBJECT...\n"
-#~ "\n"
-#~ "-l one level less specific lookup [RPSL only]\n"
-#~ "-L find all Less specific matches\n"
-#~ "-m find first level more specific matches\n"
-#~ "-M find all More specific matches\n"
-#~ "-c find the smallest match containing a mnt-irt "
-#~ "attribute\n"
-#~ "-x exact match [RPSL only]\n"
-#~ "-d return DNS reverse delegation objects too [RPSL "
-#~ "only]\n"
-#~ "-i ATTR[,ATTR]... do an inverse lookup for specified ATTRibutes\n"
-#~ "-T TYPE[,TYPE]... only look for objects of TYPE\n"
-#~ "-K only primary keys are returned [RPSL only]\n"
-#~ "-r turn off recursive lookups for contact "
-#~ "information\n"
-#~ "-R force to show local copy of the domain object "
-#~ "even\n"
-#~ " if it contains referral\n"
-#~ "-a search all databases\n"
-#~ "-s SOURCE[,SOURCE]... search the database from SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to "
-#~ "LAST\n"
-#~ "-t TYPE request template for object of TYPE\n"
-#~ "-v TYPE request verbose template for object of TYPE\n"
-#~ "-q [version|sources|types] query specified server info [RPSL only]\n"
-#~ "-F fast raw output (implies -r)\n"
-#~ "-h HOST connect to server HOST\n"
-#~ "-p PORT connect to PORT\n"
-#~ "-H hide legal disclaimers\n"
-#~ " --verbose explain what is being done\n"
-#~ " --help display this help and exit\n"
-#~ " --version output version information and exit\n"
-#~ msgstr ""
-#~ "Uso: whois [OPES]... OBJETO...\n"
-#~ "\n"
-#~ "-l descende em um nvel a especificidade da busca "
-#~ "[RPSL]\n"
-#~ "-L busca as correspondncias menos especficas\n"
-#~ "-m busca o primeiro nvel mais especfico\n"
-#~ "-M busca as correspondncias mais especficas\n"
-#~ "-c busca a correspondncia menos especfica que "
-#~ "contm o atributo mnt-irt\n"
-#~ "-x busca exata [RPSL]\n"
-#~ "-d retorna tambm objetos de delegao de DNS reverso "
-#~ "[RPSL]\n"
-#~ "-i ATTR[,ATTR]... efetua uma busca inversa para os ATTRibutos "
-#~ "especificados\n"
-#~ "-T TIPO[,TIPO]... busca somente por objetos do TIPO\n"
-#~ "-K somente chaves primrias so retornadas [RPSL]\n"
-#~ "-r desabilita buscas recursivas para informaes de "
-#~ "contatos\n"
-#~ "-R mostra a cpia local do objeto especificado "
-#~ "incluso\n"
-#~ " se contm uma referncia\n"
-#~ "-a busca em todas as bases de dados\n"
-#~ "-s SOURCE[,SOURCE]... busca na base de dados de SOURCE\n"
-#~ "-g SOURCE:FIRST-LAST encontra atualizaes de SOURCE da srie FIRST at "
-#~ "LAST\n"
-#~ "-t TIPO obtm o modelo para objeto de TIPO ('all' para uma "
-#~ "lista)\n"
-#~ "-v TIPO obtm o modelo detalhado para objeto de TIPO\n"
-#~ "-q [version|sources|types] consulta informaes sobre o servidor [RPSL]\n"
-#~ "-F modo rpido (implica -r)\n"
-#~ "-h HOST conecta no servidor HOST\n"
-#~ "-p PORTA conecta na PORTA\n"
-#~ "-H esconde o aviso legal\n"
-#~ " --verbose mostra o que est acontecendo\n"
-#~ " --help exibe essa ajuda e sai\n"
-#~ " --version exibe informaes sobre a verso e sai\n"
-
#~ msgid "Illegal password character '0x%hhx'.\n"
#~ msgstr "Caractere de senha ilegal '0x%hhx'.\n"
diff --git a/po/ru.po b/po/ru.po
index 8189901..23dcc33 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -3,24 +3,24 @@
# This file is distributed under the same license as the whois package.
#
# Andy Shevchenko <andy@smile.org.ua>, 2005.
-# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2012, 2013.
+# Yuri Kozlov <yuray@komyakino.ru>, 2009, 2010, 2012, 2013, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: whois 5.0.24\n"
+"Project-Id-Version: whois 5.4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
-"PO-Revision-Date: 2013-04-10 21:24+0400\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
+"PO-Revision-Date: 2019-06-29 09:55+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 1.4\n"
+"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -31,29 +31,29 @@ msgstr ""
"\n"
"Сообщения об ошибках отправляйте на %s.\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "Используется сервер %s.\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr ""
"Данный TLD не имеет whois-сервера, но можно получить доступ к базе whois на"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "Данный TLD не имеет whois-сервера."
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "Нет whois-сервера для объектов данного вида."
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "Неизвестный номер AS или IP-сеть. Пожалуйста, обновите программу."
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "Используется сервер %s.\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -64,7 +64,7 @@ msgstr ""
"Запрашивается конечная IPv4-точка %s для IPv6-адреса 6-в-4.\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -75,7 +75,7 @@ msgstr ""
"Запрашивается конечная IPv4-точка %s для IPv6-адреса Teredo.\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -84,7 +84,7 @@ msgstr ""
"Строка запроса: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -97,16 +97,16 @@ msgstr ""
"Найдено перенаправление на %s.\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "Невозможно разобрать строку: %s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "Предупреждение: флаги RIPE используются с традиционным сервером."
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -114,71 +114,64 @@ msgstr ""
"Катастрофическая ошибка: текст правовой оговорки был изменён.\n"
"Пожалуйста, обновите программу.\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "Узел %s не найден."
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: неизвестный сервис"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "Задержка."
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "Прервано по сигналу %d..."
-#: ../whois.c:1189
+#: ../whois.c:1488
#, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"Использование: whois [ПАРАМЕТР]… ОБЪЕКТ…\n"
+"\n"
+"-h УЗЕЛ, --host УЗЕЛ подключиться к серверному УЗЛУ\n"
+"-p ПОРТ, --port ПОРТ подключаться по ПОРТУ\n"
+"-I запросить whois.iana.org и следовать результатам\n"
+"-H скрыть уведомление о правах\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose разъяснять, что происходит\n"
+" --help показать эту справку и закончить работу\n"
+" --version показать информацию о версии и закончить работу\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
-"-c find the smallest match containing a mnt-irt "
-"attribute\n"
-"-x exact match\n"
-"-b return brief IP address ranges with abuse contact\n"
-"-B turn off object filtering (show email addresses)\n"
-"-G turn off grouping of associated objects\n"
-"-d return DNS reverse delegation objects too\n"
-"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
-"-T TYPE[,TYPE]... only look for objects of TYPE\n"
-"-K only primary keys are returned\n"
-"-r turn off recursive look-ups for contact information\n"
-"-R force to show local copy of the domain object even\n"
-" if it contains referral\n"
-"-a also search all the mirrored databases\n"
-"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
-"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
-"-t TYPE request template for object of TYPE\n"
-"-v TYPE request verbose template for object of TYPE\n"
-"-q [version|sources|types] query specified server info\n"
msgstr ""
-"Использование: whois [ПАРАМЕТР]… ОБЪЕКТ…\n"
-"\n"
-"-h УЗЕЛ, --host УЗЕЛ подключиться к УЗЛУ\n"
-"-p ПОРТ, --port ПОРТ подключиться к ПОРТУ\n"
-"-H скрыть уведомление о правах\n"
-" --verbose разъяснять, что происходит\n"
-" --help показать эту справку и закончить работу\n"
-" --version показать информацию о версии и закончить работу\n"
-"\n"
"Эти флаги поддерживаются whois.ripe.net и некоторыми RIPE-подобными "
"серверами:\n"
"-l одноуровневый минимальный поиск\n"
@@ -186,50 +179,100 @@ msgstr ""
"-m найти первый уровень при максимуме указанных "
"совпадений\n"
"-M найти всё при максимуме указанных совпадений\n"
-"-c найти наименьшее совпадение, содержащее атрибут "
-"mnt-irt\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
+"-c find the smallest match containing a mnt-irt "
+"attribute\n"
+"-x exact match\n"
+"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c найти наименьшее совпадение, содержащее атрибут mnt-"
+"irt\n"
"-x точное совпадение\n"
"-b вернуть краткий диапазон IP-адресов\n"
" с контактом для жалоб\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
+"-B turn off object filtering (show email addresses)\n"
+"-G turn off grouping of associated objects\n"
+"-d return DNS reverse delegation objects too\n"
+msgstr ""
"-B выключить объектную фильтрацию (показ адресов эл. "
"почты)\n"
"-G выключить группировку связанных объектов\n"
-"-d возвращать также реверсные делегированные объекты DNS\n"
+"-d возвращать также реверсные делегированные объекты "
+"DNS\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
+"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
+"-T TYPE[,TYPE]... only look for objects of TYPE\n"
+"-K only primary keys are returned\n"
+"-r turn off recursive look-ups for contact information\n"
+msgstr ""
"-i АТР[,АТР]… выполнить инверсный поиск для указанных АТРибутов\n"
"-T ТИП[,ТИП]… поиск только объектов с типом ТИП\n"
"-K возвращать только основные ключи\n"
"-r выключить рекурсивный поиск контактной информации\n"
-"-R всегда показывать локальную копию объекта домена даже\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
+"-R force to show local copy of the domain object even\n"
+" if it contains referral\n"
+"-a also search all the mirrored databases\n"
+"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
+"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R всегда показывать локальную копию объекта домена "
+"даже\n"
" если она содержит перенаправление\n"
"-a искать на всех зеркалах базы\n"
"-s ИСТОЧНИК[,ИСТ]… искать в базе-зеркале ИСТОЧНИКА\n"
"-g ИСТОЧНИК:ПЕРВЫЙ-ПОСЛЕДНИЙ\n"
" найти обновления ИСТОЧНИКА от ПЕРВОГО до ПОСЛЕДНЕГО\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
+"-t TYPE request template for object of TYPE\n"
+"-v TYPE request verbose template for object of TYPE\n"
+"-q [version|sources|types] query specified server info\n"
+msgstr ""
"-t ТИП запросить шаблон для объекта с типом ТИП\n"
"-v ТИП запросить расширенный шаблон для объекта с типом ТИП\n"
"-q [version|sources|types]\n"
" запросить указанную информацию о сервере\n"
-#: ../mkpasswd.c:84
+#: ../mkpasswd.c:128
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "основанный на DES crypt(3), расширенный BSDI"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
-msgstr "стандартный 56-битный, базирующийся на DES, crypt(3)"
+msgstr "основанный на стандартном 56-битном DES crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "Неверный метод '%s'.\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "Неверный номер '%s'.\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "Доп. информацию можно получить, запустив '%s --help'.\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
@@ -237,7 +280,7 @@ msgstr[0] "Неверная длина соли: %d байт при ожидае
msgstr[1] "Неверная длина соли: %d байта при ожидаемой %d.\n"
msgstr[2] "Неверная длина соли: %d байт при ожидаемой %d.\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
@@ -245,22 +288,22 @@ msgstr[0] "Неверная длина соли: %d байт при ожидае
msgstr[1] "Неверная длина соли: %d байта при ожидаемой %d <= n <= %d.\n"
msgstr[2] "Неверная длина соли: %d байт при ожидаемой %d <= n <= %d.\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "Недопустимый для соли символ '%c'.\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "Пароль: "
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "Данный метод не поддерживается crypt(3).\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -271,16 +314,33 @@ msgstr ""
"Шифрует ПАРОЛЬ, используя crypt(3).\n"
"\n"
-#: ../mkpasswd.c:422
+#: ../mkpasswd.c:498
#, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=ТИП использовать метод ТИП\n"
+" -5 аналогично --method=md5\n"
+" -S, --salt=СОЛЬ использовать указанную СОЛЬ\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=ЧИСЛО использовать указанное ЧИСЛО округлений\n"
+" -P, --password-fd=НОМЕР прочитать пароль из дескриптора файла\n"
+" с НОМЕРом вместо /dev/tty\n"
+" -s, --stdin аналогично --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -290,13 +350,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=ТИП использовать метод ТИП\n"
-" -5 аналогично --method=md5\n"
-" -S, --salt=СОЛЬ использовать указанную СОЛЬ\n"
-" -R, --rounds=ЧИСЛО использовать указанное ЧИСЛО округлений\n"
-" -P, --password-fd=НОМЕР прочитать пароль из дескриптора файла\n"
-" с НОМЕРом вместо /dev/tty\n"
-" -s, --stdin аналогично --password-fd=0\n"
" -h, --help показать эту справку и закончить работу\n"
" -V, --version показать версию и закончить работу\n"
"\n"
@@ -306,7 +359,7 @@ msgstr ""
"\n"
"Сообщения об ошибках отправляйте на %s.\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "Доступные методы:\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index a397256..a62ae53 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: whois\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-04-10 04:23+0200\n"
+"POT-Creation-Date: 2019-06-28 01:38+0200\n"
"PO-Revision-Date: 2013-12-25 17:40+0800\n"
"Last-Translator: Terence Ng <pheotiman@gmail.com>\n"
"Language-Team: Chinese (China) <zh_CN@li.org>\n"
@@ -19,7 +19,7 @@ msgstr ""
"X-Generator: Poedit 1.5.7\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-#: ../whois.c:148
+#: ../whois.c:236
#, c-format
msgid ""
"Version %s.\n"
@@ -30,28 +30,28 @@ msgstr ""
"\n"
"向 %s 报告漏洞。\n"
-#: ../whois.c:202 ../whois.c:255 ../whois.c:261 ../whois.c:291
-#, c-format
-msgid "Using server %s.\n"
-msgstr "使用服务器 %s。\n"
-
-#: ../whois.c:240
+#: ../whois.c:325
msgid "This TLD has no whois server, but you can access the whois database at"
msgstr "此顶级域名没有 whois 服务器,但您可在这里访问 whois 数据库:"
-#: ../whois.c:245
+#: ../whois.c:330
msgid "This TLD has no whois server."
msgstr "此顶级域名没有对应的 whois 服务器。"
-#: ../whois.c:248
+#: ../whois.c:333
msgid "No whois server is known for this kind of object."
msgstr "无针对此类对象的 whois 服务器。"
-#: ../whois.c:251
+#: ../whois.c:336
msgid "Unknown AS number or IP network. Please upgrade this program."
msgstr "未知的 AS 号码或 IP 地址。请升级此程序。"
-#: ../whois.c:267
+#: ../whois.c:340 ../whois.c:347 ../whois.c:380 ../whois.c:397
+#, c-format
+msgid "Using server %s.\n"
+msgstr "使用服务器 %s。\n"
+
+#: ../whois.c:354
#, c-format
msgid ""
"\n"
@@ -62,7 +62,7 @@ msgstr ""
"查询和一个6to4 IPv6 地址相对应的 IPv4 终端 %s。\n"
"\n"
-#: ../whois.c:273
+#: ../whois.c:361
#, c-format
msgid ""
"\n"
@@ -73,7 +73,7 @@ msgstr ""
"查询一个Teredo IPv6 地址相对应的 IPv4 终端 %s。\n"
"\n"
-#: ../whois.c:292
+#: ../whois.c:398
#, c-format
msgid ""
"Query string: \"%s\"\n"
@@ -82,7 +82,7 @@ msgstr ""
"查询字符串: \"%s\"\n"
"\n"
-#: ../whois.c:302
+#: ../whois.c:408
#, c-format
msgid ""
"\n"
@@ -95,16 +95,16 @@ msgstr ""
"发现一个到 %s 的引用。\n"
"\n"
-#: ../whois.c:344 ../whois.c:347
+#: ../whois.c:450 ../whois.c:453
#, c-format
msgid "Cannot parse this line: %s"
msgstr "不能分析该行:%s"
-#: ../whois.c:516
+#: ../whois.c:642
msgid "Warning: RIPE flags used with a traditional server."
msgstr "警告: 对传统服务器使用了 RIPE 标志。"
-#: ../whois.c:675 ../whois.c:773
+#: ../whois.c:812 ../whois.c:928
msgid ""
"Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"
@@ -112,122 +112,163 @@ msgstr ""
"严重错误: 声明(disclaimer)文本已经被改变。\n"
"请升级此程序。\n"
-#: ../whois.c:828
+#: ../whois.c:1029
#, c-format
msgid "Host %s not found."
msgstr "没有找到主机 %s。"
-#: ../whois.c:838
+#: ../whois.c:1039
#, c-format
msgid "%s/tcp: unknown service"
msgstr "%s/tcp: 未知服务"
-#: ../whois.c:913
+#: ../whois.c:1114
msgid "Timeout."
msgstr "超时。"
-#: ../whois.c:919
+#: ../whois.c:1120
#, c-format
msgid "Interrupted by signal %d..."
msgstr "被信号 %d 中断..."
-#: ../whois.c:1189
-#, c-format
+#: ../whois.c:1488
+#, fuzzy, c-format
msgid ""
"Usage: whois [OPTION]... OBJECT...\n"
"\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+msgstr ""
+"用法: whois 【选项】 …… 对象 ……\n"
+"\n"
+"-h HOST, --host HOST 连接到服务器 HOST\n"
+"-p PORT, --port PORT 连接到端口 PORT\n"
+"-H 隐藏法律声明\n"
+
+#: ../whois.c:1495
+#, c-format
+msgid ""
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+msgstr ""
+" --verbose 解释正在做什么\n"
+" --help 显示帮助并退出\n"
+" --version 输出版本信息并退出\n"
+"\n"
+
+#: ../whois.c:1501
+#, c-format
+msgid ""
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+msgstr ""
+"这些标志是由 whois.ripe.net 和 RIPE-like 服务器支持的:\n"
+" -l 寻找有更少具体匹配的一个级别\n"
+"-L 寻找所有更少具体匹配的级别\n"
+"-m 寻找有更加具体匹配的一个级别\n"
+"-M 寻找有更加具体的匹配的所有级别\n"
+
+#: ../whois.c:1508
+#, c-format
+msgid ""
"-c find the smallest match containing a mnt-irt "
"attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+msgstr ""
+"-c 寻找包含 mnt-irt 属性的最小匹配\n"
+"-x 精确匹配\n"
+"-b return brief IP address ranges with abuse contact\n"
+
+#: ../whois.c:1513
+#, c-format
+msgid ""
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+msgstr ""
+"-B 关闭对象过滤(显示 email 地址)\n"
+"-G 关闭相关联对象的分组\n"
+"-d 返回 DNS 反解授权对象\n"
+
+#: ../whois.c:1518
+#, c-format
+msgid ""
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+msgstr ""
+"-i ATTR[,ATTR]... 对特定的属性( ATTR )进行逆向查询\n"
+"-T TYPE[,TYPE]... 只寻找 TYPE 的对象\n"
+"-K 只返回主键\n"
+"-r 关闭联系信息的递归查询\n"
+
+#: ../whois.c:1524
+#, c-format
+msgid ""
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+msgstr ""
+"-R 强制显示域对象的本地副本,即使\n"
+" 它包含引用\n"
+"-a 一并搜索所有的数据库镜像\n"
+"-s SOURCE[,SOURCE]... 从 SOURCE 中搜索数据库镜像\n"
+"-g SOURCE:FIRST-LAST 从串行的 FIRST 到 LAST 的 SOURCE 中查找更新\n"
+
+#: ../whois.c:1531
+#, c-format
+msgid ""
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
msgstr ""
-"用法: whois 【选项】 …… 对象 …… \n"
-"\n"
-"-h HOST, --host HOST 连接到服务器 HOST\n"
-"-p PORT, --port PORT 连接到端口 PORT\n"
-"-H 隐藏法律声明 \n"
-" --verbose 解释正在做什么 \n"
-" --help 显示帮助并退出 \n"
-" --version 输出版本信息并退出 \n"
-"\n"
-"这些标志是由 whois.ript.net 和 RIPE-like 服务器支持的: \n"
-" -l 寻找有更少具体匹配的一个级别 \n"
-"-L 寻找所有更少具体匹配的级别 \n"
-"-m 寻找有更加具体匹配的一个级别 \n"
-"-M 寻找有更加具体的匹配的所有级别 \n"
-"-c 寻找包含 mnt-irt 属性的最小匹配 \n"
-"-x 精确匹配 \n"
-"-b return brief IP address ranges with abuse contact\n"
-"-B 关闭对象过滤(显示 email 地址) \n"
-"-G 关闭相关联对象的分组 \n"
-"-d 返回 DNS 反解授权对象 \n"
-"-i ATTR[,ATTR]... 对特定的属性( ATTR )进行逆向查询 \n"
-"-T TYPE[,TYPE]... 只寻找 TYPE 的对象 \n"
-"-K 只返回主键 \n"
-"-r 关闭联系信息的递归查询 \n"
-"-R 强制显示域对象的本地副本,即使 \n"
-" 它包含引用 \n"
-"-a 一并搜索所有的数据库镜像 \n"
-"-s SOURCE[,SOURCE]... 从 SOURCE 中搜索数据库镜像 \n"
-"-g SOURCE:FIRST-LAST 从串行的 FIRST 到 LAST 的 SOURCE 中查找更新 \n"
-"-t TYPE 请求 TYPE 对象的模板 \n"
-"-v TYPE 请求 TYPE 对象的详细模板 \n"
-"-q [version|sources|types] 询问制定服务器信息 \n"
-
-#: ../mkpasswd.c:84
+"-t TYPE 请求 TYPE 对象的模板\n"
+"-v TYPE 请求 TYPE 对象的详细模板\n"
+"-q [version|sources|types] 询问制定服务器信息\n"
+
+#: ../mkpasswd.c:128
+#, fuzzy
+msgid "BSDI extended DES-based crypt(3)"
+msgstr "以标准56位DES为基础的 crypt(3)"
+
+#: ../mkpasswd.c:131
msgid "standard 56 bit DES-based crypt(3)"
msgstr "以标准56位DES为基础的 crypt(3)"
-#: ../mkpasswd.c:165
+#: ../mkpasswd.c:207
#, c-format
msgid "Invalid method '%s'.\n"
msgstr "无效方式 '%s'。\n"
-#: ../mkpasswd.c:174 ../mkpasswd.c:184
+#: ../mkpasswd.c:216 ../mkpasswd.c:228
#, c-format
msgid "Invalid number '%s'.\n"
msgstr "无效的数字 '%s'。\n"
-#: ../mkpasswd.c:201
+#: ../mkpasswd.c:246
#, c-format
msgid "Try '%s --help' for more information.\n"
msgstr "尝试用 '%s --help' 获取更多的信息。\n"
-#: ../mkpasswd.c:242
+#: ../mkpasswd.c:290
#, c-format
msgid "Wrong salt length: %d byte when %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d expected.\n"
msgstr[0] ""
"错误的随即字符 ( salt ) 长度:当前为 %d 字节,预期长度为 %d 字节。\n"
-#: ../mkpasswd.c:247
+#: ../mkpasswd.c:295
#, c-format
msgid "Wrong salt length: %d byte when %d <= n <= %d expected.\n"
msgid_plural "Wrong salt length: %d bytes when %d <= n <= %d expected.\n"
@@ -235,22 +276,22 @@ msgstr[0] ""
"错误的随机字符(salt) 长度: 当前为 %d 字节,预期长度范围为 %d <= n <= %d 字"
"节。\n"
-#: ../mkpasswd.c:256
+#: ../mkpasswd.c:304
#, c-format
msgid "Illegal salt character '%c'.\n"
msgstr "非法的随机数字符 '%c'。\n"
-#: ../mkpasswd.c:306 ../mkpasswd.c:322
+#: ../mkpasswd.c:355 ../mkpasswd.c:368
#, c-format
msgid "Password: "
msgstr "密码:"
-#: ../mkpasswd.c:340
+#: ../mkpasswd.c:387
#, c-format
msgid "Method not supported by crypt(3).\n"
msgstr "不被 crypt(3) 支持的方法。\n"
-#: ../mkpasswd.c:419
+#: ../mkpasswd.c:495
#, c-format
msgid ""
"Usage: mkpasswd [OPTIONS]... [PASSWORD [SALT]]\n"
@@ -261,16 +302,32 @@ msgstr ""
"用 crypt(3) 加密 PASSWORD。\n"
"\n"
-#: ../mkpasswd.c:422
-#, c-format
+#: ../mkpasswd.c:498
+#, fuzzy, c-format
msgid ""
" -m, --method=TYPE select method TYPE\n"
" -5 like --method=md5\n"
" -S, --salt=SALT use the specified SALT\n"
+msgstr ""
+" -m, --method=TYPE \t选择使用 TYPE 的方法\n"
+" -S, --salt=SALT \t\t使用指定随机字符\n"
+
+#: ../mkpasswd.c:503
+#, c-format
+msgid ""
" -R, --rounds=NUMBER use the specified NUMBER of rounds\n"
" -P, --password-fd=NUM read the password from file descriptor NUM\n"
" instead of /dev/tty\n"
" -s, --stdin like --password-fd=0\n"
+msgstr ""
+" -R, --rounds=NUMBER \t使用指定的循环次数 NUMBER\n"
+" -P, --password-fd=NUM \t从文件描述符 NUM 中读取密码来\n"
+"\t\t\t\t替代从 /dev/tty 中获取密码\n"
+" -s, --stdin \t\t同 --password-fd=0\n"
+
+#: ../mkpasswd.c:509
+#, c-format
+msgid ""
" -h, --help display this help and exit\n"
" -V, --version output version information and exit\n"
"\n"
@@ -280,12 +337,6 @@ msgid ""
"\n"
"Report bugs to %s.\n"
msgstr ""
-" -m, --method=TYPE \t选择使用 TYPE 的方法\n"
-" -S, --salt=SALT \t\t使用指定随机字符\n"
-" -R, --rounds=NUMBER \t使用指定的循环次数 NUMBER \n"
-" -P, --password-fd=NUM \t从文件描述符 NUM 中读取密码来\n"
-"\t\t\t\t替代从 /dev/tty 中获取密码\n"
-" -s, --stdin \t\t同 --password-fd=0\n"
" -h, --help \t\t显示帮助信息并退出\n"
" -V, --version \t\t输出版本信息并退出\n"
"\n"
@@ -295,7 +346,7 @@ msgstr ""
"\n"
"请将BUGS提交给 %s。\n"
-#: ../mkpasswd.c:452
+#: ../mkpasswd.c:532
#, c-format
msgid "Available methods:\n"
msgstr "可用方式:\n"
diff --git a/servers_charset_list b/servers_charset_list
index 735ac9a..f39760a 100644
--- a/servers_charset_list
+++ b/servers_charset_list
@@ -4,21 +4,23 @@ whois.conac.cn utf-8
whois.corenic.net utf-8 -C UTF-8
whois.online.rs.corenic.net utf-8 -C UTF-8
whois.site.rs.corenic.net utf-8 -C UTF-8
+whois.lacnic.net iso-8859-1
whois.museum utf-8 -C UTF-8
whois.aeda.net.ae utf-8
+whois.nic.ar utf-8
whois.ax iso-8859-1
whois.registro.br iso-8859-1
whois.cira.ca iso-8859-1
whois.nic.ch utf-8
-whois.nic.cl iso-8859-1
+whois.nic.cl utf-8
whois.cnnic.cn utf-8
cwhois.cnnic.cn utf-8
whois.nic.cz utf-8
whois.denic.de utf-8
whois.enum.denic.de utf-8
whois.dk-hostmaster.dk utf-8 --charset=utf-8
-whois.eenet.ee iso-8859-1
+whois.tld.ee utf-8
whois.eu utf-8
whois.fi iso-8859-1
whois.nic.fo utf-8
@@ -31,17 +33,18 @@ whois.isnic.is iso-8859-1
whois.nic.it utf-8
whois.jprs.jp iso-2022-jp
whois.nic.ad.jp iso-2022-jp
+whois.domain.kg cp1251
whois.nic.or.kr utf-8
whois.kr utf-8
-# XXX I had to guess: the server is unable to fully transcode U+49b in the
-# answer for xn--e1aybc.xn--80ao21a. Maybe it is cp1251 instead?
-whois.nic.kz rk1048
+whois.nic.kz utf-8
whois.nic.li utf-8
whois.domreg.lt utf-8
whois.dns.lu iso-8859-1
+whois.marnet.mk utf-8
whois.nic.mu utf-8
whois.norid.no iso-8859-1
whois.iis.nu utf-8
+whois.registry.om utf-8
whois.registry.pf utf-8
whois.dns.pt iso-8859-1
whois.registry.qa utf-8
@@ -62,4 +65,5 @@ whois.ua utf-8
whois.nic.org.uy utf-8
whois.nic.wf utf-8
whois.nic.yt utf-8
+whois.nic.xn--otu796d utf-8
diff --git a/tld_serv_list b/tld_serv_list
index 17e0cf6..acef452 100644
--- a/tld_serv_list
+++ b/tld_serv_list
@@ -44,131 +44,46 @@
.e164.arpa whois.ripe.net
.in-addr.arpa ARPA
+.ip6.arpa IP6
.arpa whois.iana.org
.aero whois.aero
.asia whois.nic.asia
-.biz whois.biz
-.cat whois.cat
+.biz whois.nic.biz
+.cat whois.nic.cat
.coop whois.nic.coop
.info whois.afilias.net
-.jobs VERISIGN jobswhois.verisign-grs.com
-.mobi whois.dotmobiregistry.net
-.museum whois.museum
+.jobs VERISIGN whois.nic.jobs
+.mobi whois.afilias.net
+.museum whois.nic.museum
.name whois.nic.name
.post whois.dotpostregistry.net
-.pro whois.dotproregistry.net
+.pro whois.afilias.net
.tel whois.nic.tel
.travel whois.nic.travel
-.xxx whois.nic.xxx
-
-# "new" gTLDs
-.academy whois.donuts.co
-.berlin whois.berlin.tld-box.at
-.bike whois.donuts.co
-.builders whois.donuts.co
-.buzz whois.nic.buzz
-.cab whois.donuts.co
-.camera whois.donuts.co
-.camp whois.donuts.co
-.careers whois.donuts.co
-.center whois.donuts.co
-.ceo whois.nic.ceo
-.clothing whois.donuts.co
-.codes whois.donuts.co
-.coffee whois.donuts.co
-.company whois.donuts.co
-.computer whois.donuts.co
-.construction whois.donuts.co
-.contractors whois.donuts.co
-.diamonds whois.donuts.co
-.directory whois.donuts.co
-.domains whois.donuts.co
-.education whois.donuts.co
-.email whois.donuts.co
-.enterprises whois.donuts.co
-.equipment whois.donuts.co
-.estate whois.donuts.co
-.farm whois.donuts.co
-.florist whois.donuts.co
-.gallery whois.donuts.co
-.glass whois.donuts.co
-.graphics whois.donuts.co
-.guru whois.donuts.co
-.holdings whois.donuts.co
-.holiday whois.donuts.co
-.house whois.donuts.co
-.immobilien whois.unitedtld.com
-.institute whois.donuts.co
-.international whois.donuts.co
-.kaufen whois.unitedtld.com
-.kitchen whois.donuts.co
-.kiwi whois.dot-kiwi.com
-.land whois.donuts.co
-.lighting whois.donuts.co
-.limo whois.donuts.co
-.management whois.donuts.co
-.menu whois.nic.menu
-.ninja whois.unitedtld.com
-.onl whois.afilias-srs.net
-.photography whois.donuts.co
-.photos whois.donuts.co
-.plumbing whois.donuts.co
-.recipes whois.donuts.co
-.repair whois.donuts.co
-.ruhr whois.nic.ruhr
-.sexy whois.uniregistry.net
-.shoes whois.donuts.co
-.singles whois.donuts.co
-.solar whois.donuts.co
-.solutions whois.donuts.co
-.support whois.donuts.co
-.systems whois.donuts.co
-.tattoo whois.uniregistry.net
-.technology whois.donuts.co
-.tips whois.donuts.co
-.today whois.donuts.co
-.training whois.donuts.co
-.uno whois.nic.uno
-.ventures whois.donuts.co
-.viajes whois.donuts.co
-.voyage whois.donuts.co
-.wang whois.gtld.knet.cn
-.wien whois.wien.tld-box.at
-.xn--3bst00m whois.gtld.knet.cn
-.xn--3ds443g whois.afilias-srs.net
-.xn--55qw42g whois.conac.cn
-.xn--6qq986b3xl whois.gtld.knet.cn
-.xn--80asehdb whois.online.rs.corenic.net
-.xn--80aswg whois.site.rs.corenic.net
-.xn--fiq228c5hs whois.afilias-srs.net
-.xn--ngbc5azd whois.nic.xn--ngbc5azd
-.xn--q9jyb4c domain-registry-whois.l.google.com
-.xn--unup4y whois.donuts.co
-.xn--zfr164b whois.conac.cn
+.xxx whois.registrar.adult
.ac whois.nic.ac
.ad NONE # www.nic.ad
.ae whois.aeda.net.ae
.af whois.nic.af
.ag whois.nic.ag
-.ai whois.ai
-.al NONE # http://www.akep.al/en/kerkoni-domain
+.ai whois.nic.ai
+.al NONE # https://www.akep.al/en/kerkoni-domain-2
.am whois.amnic.net
-.an NONE # being phased out. deletion planned for 2014-10-31
.ao NONE # www.dns.ao
.aq NONE # 2day.com
-.ar WEB http://www.nic.ar/
+.ar whois.nic.ar
.as whois.nic.as
.priv.at whois.nic.priv.at # "unofficial" SLD
.at whois.nic.at
-.au whois.audns.net.au
-.aw NONE # http://setar.aw/internet/domain-registration.html
+.au whois.auda.org.au
+.aw whois.nic.aw
.ax whois.ax # www.ax
.az WEB http://www.nic.az/
.ba WEB http://www.nic.ba/stream/whois/
.bb WEB http://whois.telecoms.gov.bb/search_domain.php
-.bd WEB http://whois.btcl.net.bd/
+.bd WEB http://www.registry.com.bd/whois.php
.be whois.dns.be
.bf NONE # http://www.arce.bf/ http://www.onatel.bf/internet/domaine.htm
.bg whois.register.bg
@@ -176,12 +91,12 @@
.bi whois1.nic.bi
.bj whois.nic.bj
#.bl
-.bm WEB http://207.228.133.14/cgi-bin/lansaweb?procfun+BMWHO+BMWHO2+WHO
-.bn whois.bn # www.brunet.bn
+.bm whois.afilias-srs.net
+.bn whois.bnnic.bn
.bo whois.nic.bo
#.bq
.br whois.registro.br
-.bs WEB http://www.nic.bs/cgi-bin/search.pl
+.bs NONE # http://www.register.bs/
.bt WEB http://www.nic.bt/
.bv NONE # http://www.norid.no/domenenavnbaser/bv-sj.html
.by whois.cctld.by
@@ -192,7 +107,7 @@
.cc VERISIGN ccwhois.verisign-grs.com
.cd whois.nic.cd
.cf whois.dot.cf
-.cg WEB http://www.nic.cg/cgi-bin/whois.pl
+.cg NONE
.ch whois.nic.ch
.ci whois.nic.ci
.ck NONE
@@ -202,18 +117,18 @@
.cn whois.cnnic.cn
.uk.co whois.uk.co
.co whois.nic.co
-.cr WEB http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do
+.cr whois.nic.cr
.cu WEB http://www.nic.cu/
.cv WEB http://www.dns.cv/
-.cw NONE # http://www.una.cw/cw_registry/
+.cw NONE # http://www.uoc.cw/ictssite/index.php/domreg/registering-a-cw-domain/register
.cx whois.nic.cx
.cy WEB http://www.nic.cy/nslookup/online_database.php
.cz whois.nic.cz
.de whois.denic.de
-.dj WEB http://www.nic.dj/whois.php
+.dj NONE # http://www.dj/
.dk whois.dk-hostmaster.dk
.dm whois.nic.dm
-.do WEB http://www.nic.do/whois-h.php3
+.do whois.nic.do
.dz whois.nic.dz
.ec whois.nic.ec
.ee whois.tld.ee
@@ -226,27 +141,27 @@
.fi whois.fi
.fj whois.usp.ac.fj
.fk NONE # http://www.fidc.co.fk/
-.fm WEB http://dot.fm/whois.html
+.fm whois.nic.fm
.fo whois.nic.fo
.fr whois.nic.fr
.ga whois.dot.ga # www.my.ga
.gb NONE
.gd whois.nic.gd
-.ge WEB http://www.registration.ge/
-.gf WEB https://www.dom-enic.com/whois.html
+.ge whois.nic.ge
+.gf whois.mediaserv.net
.gg whois.gg
-.gh WEB http://www.nic.gh/customer/search_c.htm
-.gi AFILIAS
+.gh whois.nic.gh
+.gi whois2.afilias-grs.net
.gl whois.nic.gl
.gm WEB http://www.nic.gm/htmlpages/whois.htm
.gn NONE # http://www.psg.com/dns/gn/
-.gp WEB https://www.dom-enic.com/whois.html
-.gq NONE # NO NIC http://www.getesa.gq/
-.gr WEB https://grweb.ics.forth.gr/Whois?lang=en
+.gp whois.nic.gp
+.gq whois.dominio.gq
+.gr WEB https://grweb.ics.forth.gr/public/whois
.gs whois.nic.gs
-.gt WEB http://www.gt/who_is.html
+.gt WEB http://www.gt/
.gu WEB http://gadao.gov.gu/domainsearch.htm
-.gw NONE # currently no registry
+.gw WEB http://nic.gw/en/whois/
.gy whois.registry.gy
.hk whois.hkirc.hk
.hm whois.registry.hm
@@ -254,11 +169,11 @@
.hr whois.dns.hr
.ht whois.nic.ht
.hu whois.nic.hu
-.id whois.pandi.or.id
-.ie whois.domainregistry.ie
+.id whois.id
+.ie whois.iedr.ie
.il whois.isoc.org.il
.im whois.nic.im
-.in whois.inregistry.net # afilias
+.in whois.registry.in
.io whois.nic.io
.iq whois.cmc.iq # http://www.cmc.iq/en/iq.html
.ir whois.nic.ir
@@ -269,50 +184,50 @@
.jo WEB http://www.dns.jo/Whois.aspx
.jp whois.jprs.jp
.ke whois.kenic.or.ke
-.kg whois.domain.kg
-.kh NONE # http://www.mptc.gov.kh/DomainNameRegistrationForm.aspx http://www.nic.net.kh/
-.ki whois.nic.mu
+.kg whois.kg
+.kh NONE # https://www.trc.gov.kh/en/offline-services/dns-registration/
+.ki whois.nic.ki
.km NONE # www.domaine.km
-.kn WEB http://www.nic.kn/
+.kn whois.nic.kn
.kp NONE # NIC? http://www.star.co.kp/
.kr whois.kr
-.kw WEB http://www.kw/
-.ky WEB http://kynseweb.messagesecure.com/kywebadmin/ # http://www.icta.ky/
+.kw whois.nic.kw
+.ky whois.kyregistry.ky
.kz whois.nic.kz
.la whois.nic.la
.lb WEB http://www.aub.edu.lb/lbdr/
-.lc AFILIAS
+.lc whois2.afilias-grs.net
.li whois.nic.li
.lk whois.nic.lk
.lr NONE # http://www.psg.com/dns/lr/
-.ls WEB http://www.co.ls/co.asp
+.ls whois.nic.ls
.lt whois.domreg.lt
.lu whois.dns.lu
.lv whois.nic.lv
.ly whois.nic.ly
-.ma whois.iam.net.ma # www.nic.ma
+.ma whois.registre.ma
.mc NONE # www.nic.mc
-.md WEB http://www.dns.md/wh1.php # whois.nic.md is restricted
+.md whois.nic.md
.me whois.nic.me # afilias
#.mf
.mg whois.nic.mg
.mh NONE # www.nic.net.mh
-.mk WEB http://dns.marnet.net.mk/registar.php
+.mk whois.marnet.mk
.ml whois.dot.ml # www.point.ml
.mm NONE # www.nic.mm
.mn whois.nic.mn
-.mo WEB http://www.monic.net.mo/ # whois.monic.mo is restricted
+.mo WEB http://www.monic.mo/ # whois.monic.mo is restricted
.mp NONE # get.mp
-.mq WEB https://www.dom-enic.com/whois.html
-.mr NONE # www.nic.mr
+.mq whois.mediaserv.net
+.mr whois.nic.mr
.ms whois.nic.ms
.mt WEB https://www.nic.org.mt/dotmt/ # whois.nic.org.mt is restricted
.mu whois.nic.mu
.mv NONE # NIC? www.dhiraagu.com.mv
-.mw WEB http://www.registrar.mw/
+.mw whois.nic.mw
.mx whois.mx
-.my whois.domainregistry.my
-.mz NONE # NIC? www.uem.mz
+.my whois.mynic.my
+.mz whois.nic.mz
.na whois.na-nic.com.na
.nc whois.nc
.ne NONE # NIC? http://www.intnet.ne
@@ -321,7 +236,7 @@
.ni WEB http://www.nic.ni/
.nl whois.domain-registry.nl
.no whois.norid.no
-.np WEB http://register.mos.com.np/userSearchInc.asp
+.np WEB http://register.mos.com.np/np-whois-lookup
.nr WEB http://www.cenpac.net.nr/dns/whois.html
.nu whois.iis.nu
.nz whois.srs.net.nz
@@ -330,17 +245,19 @@
.pe kero.yachay.pe
.pf whois.registry.pf
.pg NONE # http://www.unitech.ac.pg/
-.ph WEB http://www.dot.ph/whois
+.edu.ph WEB http://services.ph.net/dns/query.pl
+.gov.ph NONE # http://dns.gov.ph/
+.ph WEB https://whois.dot.ph/
.pk WEB http://www.pknic.net.pk/
.co.pl whois.co.pl # "unofficial" SLD
.pl whois.dns.pl
.pm whois.nic.pm
.pn WEB http://www.pitcairn.pn/PnRegistry/
-.pr whois.nic.pr
+.pr whois.afilias-srs.net
.ps whois.pnina.ps
.pt whois.dns.pt
.pw whois.nic.pw
-.py WEB http://www.nic.py/consultas.html
+.py WEB http://www.nic.py/consulta-datos.php
.qa whois.registry.qa
.re whois.nic.re
.ro whois.rotld.ro
@@ -349,13 +266,13 @@
.ru whois.tcinet.ru
.rw whois.ricta.org.rw # http://www.ricta.org.rw/
.sa whois.nic.net.sa
-.sb whois.nic.sb
-.sc AFILIAS # www.nic.sc
-.sd NONE # http://isoc.sd/sis/index.php/sd-domain
+.sb whois.nic.net.sb
+.sc whois2.afilias-grs.net # www.nic.sc
+.sd NONE # http://wwe.domains.sd/
.se whois.iis.se
.sg whois.sgnic.sg
.sh whois.nic.sh
-.si whois.arnes.si
+.si whois.register.si
.sj NONE # http://www.norid.no/domenenavnbaser/bv-sj.html
.sk whois.sk-nic.sk
.sl whois.nic.sl
@@ -363,17 +280,17 @@
.sn whois.nic.sn
.so whois.nic.so
.sr NONE # www.register.sr
-#.ss
+.ss whois.nic.ss
.st whois.nic.st
.su whois.tcinet.ru
.sv WEB http://www.svnet.org.sv/
.sx whois.sx
.sy whois.tld.sy
.sz NONE # http://www.sispa.org.sz/
-.tc whois.adamsnames.tc
-.td WEB http://www.nic.td/
+.tc whois.nic.tc
+.td whois.nic.td
.tf whois.nic.tf
-.tg WEB http://www.nic.tg/
+.tg whois.nic.tg
.th whois.thnic.co.th
.tj WEB http://www.nic.tj/whois.html
.tk whois.dot.tk
@@ -381,7 +298,6 @@
.tm whois.nic.tm
.tn whois.ati.tn
.to whois.tonic.to
-.tp NONE # phase out in progress
.tr whois.nic.tr
.tt WEB http://www.nic.tt/cgi-bin/search.pl
.tv VERISIGN tvwhois.verisign-grs.com
@@ -407,16 +323,16 @@
#.um
.fed.us whois.nic.gov
.us whois.nic.us
-.com.uy WEB https://nic.anteldata.com.uy/dns/consultaWhois/whois.action
+.com.uy WEB https://nic.com.uy/public/consulta-whois/acceder.action
.uy whois.nic.org.uy
.uz whois.cctld.uz
.va NONE
-.vc AFILIAS
+.vc whois2.afilias-grs.net
.ve whois.nic.ve
-.vg whois.adamsnames.tc
-.vi WEB http://www.nic.vi/whoisform.htm
-.vn WEB http://www.vnnic.vn/en/domain
-.vu WEB http://www.vunic.vu/whois.html
+.vg whois.nic.vg
+.vi WEB https://secure.nic.vi/whois-lookup/
+.vn WEB http://www.vnnic.vn/en
+.vu vunic.vu
.wf whois.nic.wf
.ws whois.website.ws
.ye NONE # NIC? http://www.y.net.ye/services/domain_name.htm
@@ -425,83 +341,70 @@
.alt.za whois.alt.za
.co.za whois.registry.net.za
.gov.za whois.gov.za
-.net.za whois.net.za
-.org.za WEB http://www.org.za/ # rwhois.org.za:4321 is restricted
-.web.za whois.web.za
-.za NONE # http://www.zadna.org.za/annexure-d.html
-.zm NONE # http://www.zamnet.zm/ http://www.coppernet.zm/
+.net.za net-whois.registry.net.za
+.org.za org-whois.registry.net.za
+.web.za web-whois.registry.net.za
+.za NONE # http://www.zadna.org.za/content/page/domain-information
+.zm whois.zicta.zm
.zw NONE # http://www.zispa.co.zw/
# AW means that I had to guess the whois server name, but I was not able
# to find any registered subdomains to verify it.
+.xn--2scrj9c whois.registry.in # India
.xn--3e0b707e whois.kr # Korea, Republic of
-.xn--45brj9c whois.inregistry.net # India, Bengali AW
+.xn--3hcrj9c whois.registry.in # India
+.xn--45br5cyl whois.registry.in # India
+.xn--45brj9c whois.registry.in # India, Bengali AW
+.xn--54b7fta0cc NONE # Bangladesh
.xn--80ao21a whois.nic.kz # Kazakhstan
.xn--90a3ac whois.rnids.rs # Serbia
+.xn--90ae whois.imena.bg # Bulgaria
+.xn--90ais whois.cctld.by # Belarus
.xn--clchc0ea0b2g2a9gcd whois.sgnic.sg # Singapore, Tamil
+.xn--d1alf whois.marnet.mk # Macedonia
+.xn--e1a4c whois.eu # European Union, Cyrillic AW
.xn--fiqs8s cwhois.cnnic.cn # China, Simplified Chinese
.xn--fiqz9s cwhois.cnnic.cn # China, Traditional Chinese
-.xn--fpcrj9c3d whois.inregistry.net # India, Telugu AW
+.xn--fpcrj9c3d whois.registry.in # India, Telugu AW
.xn--fzc2c9e2c whois.nic.lk # Sri Lanka, Sinhala
-.xn--gecrj9c whois.inregistry.net # India, Gujarati AW
-.xn--h2brj9c whois.inregistry.net # India, Hindi AW
+.xn--gecrj9c whois.registry.in # India, Gujarati AW
+.xn--h2breg3eve whois.registry.in # India
+.xn--h2brj9c8c whois.registry.in # India
+.xn--h2brj9c whois.registry.in # India, Hindi AW
.xn--j1amh whois.dotukr.com # Ukraine
.xn--j6w193g whois.hkirc.hk # Hong Kong
.xn--kprw13d whois.twnic.net.tw # Taiwan, Simplified Chinese
.xn--kpry57d whois.twnic.net.tw # Taiwan, Traditional Chinese
-.xn--l1acc whois.nic.mn # Mongolia AW
+.xn--l1acc NONE # Mongolia
.xn--lgbbat1ad8j whois.nic.dz # Algeria
-.xn--mgb9awbf whois.registry.om # Oman AW
+.xn--mgb9awbf whois.registry.om # Oman
.xn--mgba3a4f16a whois.nic.ir # Iran
.xn--mgbaam7a8h whois.aeda.net.ae # United Arab Emirates
+.xn--mgbah1a3hjkrd whois.nic.mr # Mauritania
+.xn--mgbai9azgqp6j NONE # Pakistan
.xn--mgbayh7gpa WEB http://idn.jo/whois_a.aspx # Jordan
-.xn--mgbbh1a71e whois.inregistry.net # India, Urdu AW
+.xn--mgbbh1a71e whois.registry.in # India, Urdu AW
+.xn--mgbbh1a whois.registry.in # India
.xn--mgbc0a9azcg NONE # Morocco
.xn--mgberp4a5d4ar whois.nic.net.sa # Saudi Arabia
-.xn--mgbx4cd0ab whois.domainregistry.my # Malaysia AW
+.xn--mgbgu82a whois.registry.in # India
+.xn--mgbpl2fh NONE # Sudan
+.xn--mgbtx2b whois.cmc.iq # Iraq
+.xn--mgbx4cd0ab whois.mynic.my # Malaysia AW
+.xn--mix891f WEB http://www.monic.mo/ # Macao
+.xn--node whois.itdc.ge # Georgia
.xn--o3cw4h whois.thnic.co.th # Thailand
.xn--ogbpf8fl whois.tld.sy # Syria
.xn--p1ai whois.tcinet.ru # Russian Federation
.xn--pgbs0dh NONE # Tunisia
-.xn--s9brj9c whois.inregistry.net # India, Punjabi AW
+.xn--qxa6a whois.eu # European Union, Greek
+.xn--qxam WEB https://grweb.ics.forth.gr/public/whois.jsp?lang=en # Greece AW
+.xn--rvc1e0am3e whois.registry.in # India
+.xn--s9brj9c whois.registry.in # India, Punjabi AW
.xn--wgbh1c whois.dotmasr.eg # Egypt
.xn--wgbl6a whois.registry.qa # Qatar
.xn--xkc2al3hye2a whois.nic.lk # Sri Lanka, Tamil
-.xn--xkc2dl3a5ee0h whois.inregistry.net # India, Tamil AW
+.xn--xkc2dl3a5ee0h whois.registry.in # India, Tamil AW
+.xn--y9a3aq whois.amnic.net # Armenia
.xn--yfro4i67o whois.sgnic.sg # Singapore, Chinese
.xn--ygbi2ammx whois.pnina.ps # Palestinian Territory
-
--dom whois.networksolutions.com
--org whois.networksolutions.com
--hst whois.networksolutions.com
--arin whois.arin.net
--ripe whois.ripe.net
--mnt whois.ripe.net
--lacnic whois.lacnic.net
--afrinic whois.afrinic.net
--ap whois.apnic.net
--cn whois.cnnic.cn
--cz whois.nic.cz
--dk whois.dk-hostmaster.dk
--il whois.isoc.org.il
--is whois.isnic.is
--kg whois.domain.kg
--ti whois.telstra.net
--tw whois.twnic.net.tw
--coop whois.nic.coop
--frnic whois.nic.fr
--gandi whois.gandi.net
--kenic whois.kenic.or.ke
--lrms whois.afilias.info
--metu whois.nic.tr
--nicat whois.nic.at
--nicci whois.nic.ci
--nicir whois.nic.ir
--norid whois.norid.no
--rotld whois.rotld.ro
--sgnic whois.sgnic.sg
--tel whois.nic.tel
--uanic whois.ua
--cunic whois.cunic.ua
--uynic whois.nic.org.uy
--sixxs whois.sixxs.net
diff --git a/utils.c b/utils.c
index 254bf2a..4ade650 100644
--- a/utils.c
+++ b/utils.c
@@ -46,7 +46,8 @@ char **merge_args(char *args, char *argv[], int *argc)
{
char *arg, *argstring;
char **newargs = NULL;
- unsigned int i, num_env = 0;
+ int i;
+ unsigned int num_env = 0;
if (!args)
return argv;
@@ -72,7 +73,7 @@ char **merge_args(char *args, char *argv[], int *argc)
}
/* Error routines */
-void err_sys(const char *fmt, ...)
+void NORETURN err_sys(const char *fmt, ...)
{
va_list ap;
@@ -83,7 +84,7 @@ void err_sys(const char *fmt, ...)
exit(2);
}
-void err_quit(const char *fmt, ...)
+void NORETURN err_quit(const char *fmt, ...)
{
va_list ap;
diff --git a/utils.h b/utils.h
index 0f226ae..32055b3 100644
--- a/utils.h
+++ b/utils.h
@@ -9,6 +9,10 @@
#define NOFAIL(ptr) do_nofail((ptr), __FILE__, __LINE__)
+#ifndef AFL_MODE
+# define AFL_MODE 0
+#endif
+
/* Portability macros */
#ifdef __GNUC__
# define NORETURN __attribute__((noreturn))
@@ -45,12 +49,15 @@
# define ngettext(a, b, c) ((c==1) ? (a) : (b))
#endif
+#if defined IDN2_VERSION_NUMBER && IDN2_VERSION_NUMBER < 0x00140000
+# define IDN2_NONTRANSITIONAL IDN2_NFC_INPUT
+#endif
/* Prototypes */
void *do_nofail(void *ptr, const char *file, const int line);
char **merge_args(char *args, char *argv[], int *argc);
-void err_quit(const char *fmt, ...) NORETURN;
-void err_sys(const char *fmt, ...) NORETURN;
+void NORETURN err_quit(const char *fmt, ...);
+void NORETURN err_sys(const char *fmt, ...);
#endif
diff --git a/whois.1 b/whois.1
index 09d115f..8c940f8 100644
--- a/whois.1
+++ b/whois.1
@@ -1,11 +1,11 @@
-.TH "WHOIS" "1" "20 December 2009" "Marco d'Itri" "Debian GNU/Linux"
+.TH "WHOIS" "1" "17 June 2019" "Marco d'Itri" "Debian GNU/Linux"
.SH "NAME"
whois \- client for the whois directory service
.SH "SYNOPSIS"
.B whois
[\~{\~\fB\-h\fP | \fB\-\-host\fP\~}\~\fIHOST\fP\~]
[\~{\~\fB\-p\fP | \fB\-\-port\fP\~}\~\fIPORT\fP\~]
-[\~\fB\-abBcdGHKlLmMrRx\fP\~]
+[\~\fB\-abBcdGHIKlLmMrRx\fP\~]
[\~\fB\-g\fP\~\fISOURCE:FIRST\-LAST\fP\~]
[\~\fB\-i\fP\~\fIATTR\fP[\fI,ATTR\fP]...\~]
[\~\fB\-s\fP\~\fISOURCE\fP[\fI,SOURCE\fP]...\~]
@@ -51,6 +51,12 @@ Do not display the legal disclaimers some registries like to show you.
.B \-p, \-\-port PORT
Connect to PORT.
.TP 8
+.B -I
+First query \fIwhois.iana.org\fP and then follow its referral to the
+whois server authoritative for that request. This works for IP addresses,
+AS numbers and domains. \fBBEWARE\fP: this means that the IANA server
+will see your complete query.
+.TP 8
.B \-\-verbose
Be verbose.
.TP 8
@@ -77,9 +83,6 @@ Return the smallest IP address range with a reference to an irt object.
.TP 8
.B \-d
Return the reverse DNS delegation object too.
-.\" .TP 8
-.\" .B \-F
-.\" Return attribute names in short format. Implies \fI-r\fP option.
.TP 8
.B \-g SOURCE:FIRST\-LAST
Search updates from \fISOURCE\fP database between \fIFIRST\fP and \fILAST\fP
@@ -136,19 +139,15 @@ a comma.
.TP 8
.B -v TYPE
Return the verbose template for a object of \fITYPE\fP.
-.\" .TP 8
-.\" .B \-V AGENT
-.\" Change user agent identifier. Typical format is \fIXXn.n\fP like \fIMd5.0\fP.
-.\" RIPE uses the value to identify a client behind a registered proxy (in that
-.\" case a comma followed by a client IP address should be appended).
.TP 8
.B -x
Search for only exact match on network address prefix.
.SH "NOTES"
-Please remember that \fIwhois.networksolutions.com\fP by default will
-only search in the domains database. If you want to search for NIC handles
-you have to prepend a \fI!\fP character. When you do this, the default
-server becomes \fIwhois.networksolutions.com\fP.
+When querying the Verisign gTLDs (e.g. .com, .net...) thin registry servers
+for a domain the program will automatically prepend the \fIdomain\fP
+keyword to only show domain records.
+The \fInameserver\fP or \fIregistrar\fP keywords must be used to show
+other kinds of records.
.P
When querying \fIwhois.arin.net\fP for IPv4 or IPv6 networks, the CIDR
netmask length will be automatically removed from the query string.
@@ -209,13 +208,11 @@ of objects are located. If the variable does not exist then
.SH "BUGS"
The program may have buffer overflows in the command line parser:
be sure to not pass untrusted data to it.
-It should be rewritten to use a dynamics strings library.
+It should be rewritten to use a dynamic strings library.
.SH "HISTORY"
This program closely tracks the user interface of the whois client
developed at RIPE by Ambrose Magee and others on the base of the
original BSD client.
-I also added support for the protocol extensions developed by David
-Kessens of QWest for the 6bone server.
.SH "AUTHOR"
.B Whois
and this man page were written by Marco d'Itri <\fImd@linux.it\fP>
diff --git a/whois.c b/whois.c
index e1fb9e3..608153b 100644
--- a/whois.c
+++ b/whois.c
@@ -1,5 +1,5 @@
/*
- * Copyright 1999-2010 by Marco d'Itri <md@linux.it>.
+ * Copyright (C) 1999-2019 Marco d'Itri <md@linux.it>.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -18,6 +18,7 @@
#include "config.h"
#include <string.h>
#include <ctype.h>
+#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
@@ -31,12 +32,11 @@
#ifdef HAVE_REGEXEC
#include <regex.h>
#endif
-#ifdef HAVE_LIBIDN
+#ifdef HAVE_LIBIDN2
+#include <idn2.h>
+#elif defined HAVE_LIBIDN
#include <idna.h>
#endif
-#ifdef HAVE_INET_PTON
-#include <arpa/inet.h>
-#endif
/* Application-specific */
#include "version.h"
@@ -71,24 +71,63 @@ int hide_discl = HIDE_DISABLED;
const char *client_tag = IDSTRING;
-#ifdef HAVE_GETOPT_LONG
-static const struct option longopts[] = {
- {"version", no_argument, NULL, 1 },
- {"verbose", no_argument, NULL, 2 },
- {"help", no_argument, NULL, 3 },
- {"server", required_argument, NULL, 'h'},
- {"host", required_argument, NULL, 'h'},
- {"port", required_argument, NULL, 'p'},
- {NULL, 0, NULL, 0 }
-};
-#else
+#ifndef HAVE_GETOPT_LONG
extern char *optarg;
extern int optind;
#endif
int main(int argc, char *argv[])
{
- int ch, nopar = 0, fstringlen = 64;
+#ifdef HAVE_GETOPT_LONG
+ const struct option longopts[] = {
+ /* program flags */
+ {"version", no_argument, NULL, 1 },
+ {"verbose", no_argument, NULL, 2 },
+ {"help", no_argument, NULL, 3 },
+ {"server", required_argument, NULL, 'h'},
+ {"host", required_argument, NULL, 'h'},
+ {"port", required_argument, NULL, 'p'},
+ /* long RIPE flags */
+ {"exact", required_argument, NULL, 'x'},
+ {"all-more", required_argument, NULL, 'M'},
+ {"one-more", required_argument, NULL, 'm'},
+ {"all-less", required_argument, NULL, 'L'},
+ {"one-less", required_argument, NULL, 'l'},
+ {"reverse-domain", required_argument, NULL, 'd'},
+ {"irt", required_argument, NULL, 'c'},
+ {"abuse-contact", no_argument, NULL, 'b'},
+ {"brief", no_argument, NULL, 'F'},
+ {"primary-keys", no_argument, NULL, 'K'},
+ {"persistent-connection", no_argument, NULL, 'k'},
+ {"no-referenced", no_argument, NULL, 'r'},
+ {"no-filtering", no_argument, NULL, 'B'},
+ {"no-grouping", no_argument, NULL, 'G'},
+ {"select-types", required_argument, NULL, 'T'},
+ {"all-sources", no_argument, NULL, 'a'},
+ {"sources", required_argument, NULL, 's'},
+ {"types", no_argument, NULL, 12 }, /* -q */
+ {"ripe-version", no_argument, NULL, 12 }, /* -q */
+ {"list-sources", no_argument, NULL, 12 }, /* -q */
+ {"template", required_argument, NULL, 't'},
+ {"ripe-verbose", required_argument, NULL, 'v'},
+ /* long RIPE flags with no short equivalent */
+ {"list-versions", no_argument, NULL, 10 },
+ {"diff-versions", required_argument, NULL, 11 },
+ {"show-version", required_argument, NULL, 11 },
+ {"resource", no_argument, NULL, 10 },
+ {"show-personal", no_argument, NULL, 10 },
+ {"no-personal", no_argument, NULL, 10 },
+ {"show-tag-info", no_argument, NULL, 10 },
+ {"no-tag-info", no_argument, NULL, 10 },
+ {"filter-tag-include", required_argument, NULL, 11 },
+ {"filter-tag-exclude", required_argument, NULL, 11 },
+ {NULL, 0, NULL, 0 }
+ };
+ int longindex;
+#endif
+
+ int ch, nopar = 0;
+ size_t fstringlen = 64;
const char *server = NULL, *port = NULL;
char *qstring, *fstring;
int ret;
@@ -102,11 +141,26 @@ int main(int argc, char *argv[])
fstring = malloc(fstringlen + 1);
*fstring = '\0';
+ /* interface for American Fuzzy Lop */
+ if (AFL_MODE) {
+ FILE *fp = fdopen(0, "r");
+ char *buf = NULL;
+ size_t len = 0;
+
+ /* read one line from stdin */
+ if (getline(&buf, &len, fp) < 0)
+ err_sys("getline");
+ fflush(fp);
+ /* and use it as command line arguments */
+ argv = merge_args(buf, argv, &argc);
+ }
+
/* prepend options from environment */
argv = merge_args(getenv("WHOIS_OPTIONS"), argv, &argc);
while ((ch = GETOPT_LONGISH(argc, argv,
- "abBcdFg:Gh:Hi:KlLmMp:q:rRs:t:T:v:V:x", longopts, 0)) > 0) {
+ "abBcdFg:Gh:Hi:IKlLmMp:q:rRs:t:T:v:V:x",
+ longopts, &longindex)) > 0) {
/* RIPE flags */
if (strchr(ripeflags, ch)) {
if (strlen(fstring) + 3 > fstringlen) {
@@ -127,8 +181,37 @@ int main(int argc, char *argv[])
nopar = 1;
continue;
}
- /* program flags */
switch (ch) {
+#ifdef HAVE_GETOPT_LONG
+ /* long RIPE flags with no short equivalent */
+ case 12:
+ nopar = 1;
+ /* fall through */
+ case 10:
+ {
+ int flaglen = 2 + strlen(longopts[longindex].name) + 1;
+ if (strlen(fstring) + flaglen > fstringlen) {
+ fstringlen += flaglen;
+ fstring = realloc(fstring, fstringlen + 1);
+ }
+ sprintf(fstring + strlen(fstring), "--%s ",
+ longopts[longindex].name);
+ }
+ break;
+ case 11:
+ {
+ int flaglen = 2 + strlen(longopts[longindex].name) + 1
+ + strlen(optarg) + 1;
+ if (strlen(fstring) + flaglen > fstringlen) {
+ fstringlen += flaglen;
+ fstring = realloc(fstring, fstringlen + 1);
+ }
+ sprintf(fstring + strlen(fstring), "--%s %s ",
+ longopts[longindex].name, optarg);
+ }
+ break;
+#endif
+ /* program flags */
case 'h':
server = strdup(optarg);
break;
@@ -138,6 +221,9 @@ int main(int argc, char *argv[])
case 'H':
hide_discl = HIDE_NOT_STARTED; /* enable disclaimers hiding */
break;
+ case 'I':
+ server = strdup("\x0E");
+ break;
case 'p':
port = strdup(optarg);
break;
@@ -187,8 +273,8 @@ int main(int argc, char *argv[])
if (getenv("WHOIS_HIDE"))
hide_discl = HIDE_NOT_STARTED;
- /* -v or -t has been used */
- if (!server && !*qstring)
+ /* -v or -t or long flags have been used */
+ if (!server && (!*qstring || *fstring))
server = strdup("whois.ripe.net");
if (*qstring) {
@@ -198,11 +284,8 @@ int main(int argc, char *argv[])
}
#ifdef CONFIG_FILE
- if (!server) {
+ if (!server)
server = match_config_file(qstring);
- if (verb && server)
- printf(_("Using server %s.\n"), server);
- }
#endif
if (!server)
@@ -286,6 +369,19 @@ int handle_query(const char *hserver, const char *hport,
server = guess_server(p);
free(p);
goto retry;
+ case 0x0D:
+ p = convert_in6arpa(query);
+ free(server);
+ server = guess_server(p);
+ free(p);
+ goto retry;
+ case 0x0E:
+ if (verb)
+ printf(_("Using server %s.\n"), "whois.iana.org");
+ sockfd = openconn("whois.iana.org", NULL);
+ free(server);
+ server = query_iana(sockfd, query);
+ break;
default:
break;
}
@@ -293,6 +389,9 @@ int handle_query(const char *hserver, const char *hport,
if (!server)
return 1;
+ if (*server == '\0')
+ return 0;
+
query_string = queryformat(server, flags, query);
if (verb) {
printf(_("Using server %s.\n"), server);
@@ -374,7 +473,7 @@ const char *match_config_file(const char *s)
}
regfree(&re);
#else
- if (domcmp(s, pattern)) {
+ if (endstrcaseeq(s, pattern)) {
fclose(fp);
return strdup(server);
}
@@ -392,7 +491,7 @@ char *guess_server(const char *s)
{
unsigned long ip, as32;
unsigned int i;
- const char *colon;
+ const char *colon, *tld;
/* IPv6 address */
if ((colon = strchr(s, ':'))) {
@@ -426,6 +525,17 @@ char *guess_server(const char *s)
if (strchr(s, '@'))
return strdup("\x05");
+ if (!strpbrk(s, ".")) {
+ /* if it is a TLD or a new gTLD then ask IANA */
+ for (i = 0; tld_serv[i]; i += 2)
+ if (strcaseeq(s, tld_serv[i]))
+ return strdup("whois.iana.org");
+
+ for (i = 0; new_gtlds[i]; i++)
+ if (strcaseeq(s, new_gtlds[i]))
+ return strdup("whois.iana.org");
+ }
+
/* no dot and no hyphen means it's a NSI NIC handle or ASN (?) */
if (!strpbrk(s, ".-")) {
if (strncaseeq(s, "as", 2) && /* it's an AS */
@@ -442,12 +552,7 @@ char *guess_server(const char *s)
return strdup(whereas32(as32));
/* smells like an IP? */
-#ifdef HAVE_INET_PTON
- if (inet_pton(AF_INET, s, &ip) > 0) {
- ip = ntohl(ip);
-#else
if ((ip = myinet_aton(s))) {
-#endif
for (i = 0; ip_assign[i].serv; i++)
if ((ip & ip_assign[i].mask) == ip_assign[i].net)
return strdup(ip_assign[i].serv);
@@ -456,15 +561,29 @@ char *guess_server(const char *s)
/* check the TLDs list */
for (i = 0; tld_serv[i]; i += 2)
- if (domcmp(s, tld_serv[i]))
+ if (in_domain(s, tld_serv[i]))
return strdup(tld_serv[i + 1]);
+ /* use the default server name for "new" gTLDs */
+ if ((tld = is_new_gtld(s))) {
+ char *server = malloc(strlen("whois.nic.") + strlen(tld) + 1);
+ strcpy(server, "whois.nic.");
+ strcat(server, tld);
+ return server;
+ }
+
/* no dot but hyphen */
if (!strchr(s, '.')) {
/* search for strings at the start of the word */
for (i = 0; nic_handles[i]; i += 2)
if (strncaseeq(s, nic_handles[i], strlen(nic_handles[i])))
return strdup(nic_handles[i + 1]);
+
+ /* search for strings at the end of the word */
+ for (i = 0; nic_handles_post[i]; i += 2)
+ if (endstrcaseeq(s, nic_handles_post[i]))
+ return strdup(nic_handles_post[i + 1]);
+
/* it's probably a network name */
return strdup("");
}
@@ -535,9 +654,15 @@ char *queryformat(const char *server, const char *flags, const char *query)
}
break;
}
+
+ /* Use UTF-8 by default for "new" gTLDs */
+ if (!simple_recode_input_charset && /* was not in the database */
+ !strchr(query, ' ') && /* and has no parameters */
+ is_new_gtld(query)) /* and is a "new" gTLD: */
+ simple_recode_input_charset = "utf-8"; /* then try UTF-8 */
#endif
-#ifdef HAVE_LIBIDN
+#if defined HAVE_LIBIDN || defined HAVE_LIBIDN2
# define DENIC_PARAM_ACE ",ace"
#else
# define DENIC_PARAM_ACE ""
@@ -551,9 +676,9 @@ char *queryformat(const char *server, const char *flags, const char *query)
/* add useful default flags if there are no flags or multiple arguments */
if (isripe) { }
else if (strchr(query, ' ') || *flags) { }
- else if (streq(server, "whois.denic.de") && domcmp(query, ".de"))
+ else if (streq(server, "whois.denic.de") && in_domain(query, "de"))
strcat(buf, "-T dn" DENIC_PARAM_ACE DENIC_PARAM_CHARSET " ");
- else if (streq(server, "whois.dk-hostmaster.dk") && domcmp(query, ".dk"))
+ else if (streq(server, "whois.dk-hostmaster.dk") && in_domain(query, "dk"))
strcat(buf, "--show-handles ");
/* mangle and add the query string */
@@ -593,12 +718,17 @@ int hide_line(int *hiding, const char *const line)
{
int i;
- if (*hiding == HIDE_DISABLED) {
+ if (*hiding == HIDE_TO_THE_END) {
+ return 1;
+ } else if (*hiding == HIDE_DISABLED) {
return 0;
} else if (*hiding == HIDE_NOT_STARTED) { /* looking for smtng to hide */
for (i = 0; hide_strings[i] != NULL; i += 2) {
if (strneq(line, hide_strings[i], strlen(hide_strings[i]))) {
- *hiding = i; /* start hiding */
+ if (hide_strings[i + 1] == NULL)
+ *hiding = HIDE_TO_THE_END; /* all the remaining output */
+ else
+ *hiding = i; /* start hiding */
return 1; /* and hide this line */
}
}
@@ -606,13 +736,13 @@ int hide_line(int *hiding, const char *const line)
} else if (*hiding > HIDE_NOT_STARTED) { /* hiding something */
if (*hide_strings[*hiding + 1] == '\0') { /*look for a blank line?*/
if (*line == '\n' || *line == '\r' || *line == '\0') {
- *hiding = HIDE_DISABLED; /* stop hiding */
+ *hiding = HIDE_NOT_STARTED; /* stop hiding */
return 0; /* but do not hide the blank line */
}
} else { /*look for a matching string*/
if (strneq(line, hide_strings[*hiding + 1],
strlen(hide_strings[*hiding + 1]))) {
- *hiding = HIDE_DISABLED; /* stop hiding */
+ *hiding = HIDE_NOT_STARTED; /* stop hiding */
return 1; /* but hide the last line */
}
}
@@ -678,7 +808,7 @@ char *do_query(const int sock, const char *query)
err_sys("fgets");
fclose(fi);
- if (hide > HIDE_NOT_STARTED)
+ if (hide > HIDE_NOT_STARTED && hide != HIDE_TO_THE_END)
err_quit(_("Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"));
@@ -692,10 +822,19 @@ char *query_crsnic(const int sock, const char *query)
int hide = hide_discl;
char *referral_server = NULL;
int state = 0;
+ int dotscount = 0;
+
+ temp = malloc(strlen("domain ") + strlen(query) + 2 + 1);
+ *temp = '\0';
- temp = malloc(strlen(query) + 1 + 2 + 1);
- *temp = '=';
- strcpy(temp + 1, query);
+ /* if this has more than one dot then it is a name server */
+ for (p = (char *) query; *p != '\0'; p++)
+ if (*p == '.')
+ dotscount++;
+
+ if (dotscount == 1 && !strpbrk(query, "=~ "))
+ strcpy(temp, "domain ");
+ strcat(temp, query);
strcat(temp, "\r\n");
fi = fdopen(sock, "r");
@@ -708,9 +847,13 @@ char *query_crsnic(const int sock, const char *query)
is queried */
if (state == 0 && strneq(buf, " Domain Name:", 15))
state = 1;
- if (state == 1 && strneq(buf, " Whois Server:", 16)) {
- for (p = buf; *p != ':'; p++); /* skip until colon */
- for (p++; *p == ' '; p++); /* skip colon and spaces */
+ if (state == 0 && strneq(buf, " Server Name:", 15)) {
+ referral_server = strdup("");
+ state = 2;
+ }
+ if (state == 1 && strneq(buf, " Registrar WHOIS Server:", 26)) {
+ for (p = buf; *p != ':'; p++); /* skip until the colon */
+ for (p++; *p == ' '; p++); /* skip the spaces */
referral_server = strdup(p);
if ((p = strpbrk(referral_server, "\r\n ")))
*p = '\0';
@@ -753,16 +896,21 @@ char *query_afilias(const int sock, const char *query)
free(temp);
while (fgets(buf, sizeof(buf), fi)) {
+ /* If multiple attributes are returned then use the first result.
+ This is not supposed to happen. */
if (state == 0 && strneq(buf, "Domain Name:", 12))
state = 1;
- if (state == 1 && strneq(buf, "Whois Server:", 13)) {
+ if (state == 1 && strneq(buf, "Registrar WHOIS Server:", 23)) {
for (p = buf; *p != ':'; p++); /* skip until colon */
for (p++; *p == ' '; p++); /* skip colon and spaces */
referral_server = strdup(p);
if ((p = strpbrk(referral_server, "\r\n ")))
*p = '\0';
+ state = 2;
}
+ /* the output must not be hidden or no data will be shown for
+ host records and not-existing domains */
if (hide_line(&hide, buf))
continue;
@@ -776,13 +924,54 @@ char *query_afilias(const int sock, const char *query)
err_sys("fgets");
fclose(fi);
- if (hide > HIDE_NOT_STARTED)
+ if (hide > HIDE_NOT_STARTED && hide != HIDE_TO_THE_END)
err_quit(_("Catastrophic error: disclaimer text has been changed.\n"
"Please upgrade this program.\n"));
return referral_server;
}
+char *query_iana(const int sock, const char *query)
+{
+ char *temp, *p, buf[2000];
+ FILE *fi;
+ char *referral_server = NULL;
+ int state = 0;
+
+ temp = malloc(strlen(query) + 2 + 1);
+ strcpy(temp, query);
+ strcat(temp, "\r\n");
+
+ fi = fdopen(sock, "r");
+ if (write(sock, temp, strlen(temp)) < 0)
+ err_sys("write");
+ free(temp);
+
+ while (fgets(buf, sizeof(buf), fi)) {
+ /* If multiple attributes are returned then use the first result.
+ This is not supposed to happen. */
+ if (state == 0 && strneq(buf, "refer:", 6)) {
+ for (p = buf; *p != ':'; p++); /* skip until colon */
+ for (p++; *p == ' '; p++); /* skip colon and spaces */
+ referral_server = strdup(p);
+ if ((p = strpbrk(referral_server, "\r\n ")))
+ *p = '\0';
+ state = 2;
+ }
+
+ if ((p = strpbrk(buf, "\r\n")))
+ *p = '\0';
+ recode_fputs(buf, stdout);
+ fputc('\n', stdout);
+ }
+
+ if (ferror(fi))
+ err_sys("fgets");
+ fclose(fi);
+
+ return referral_server;
+}
+
int openconn(const char *server, const char *port)
{
int fd = -1;
@@ -796,6 +985,13 @@ int openconn(const char *server, const char *port)
struct sockaddr_in saddr;
#endif
+ /*
+ * When using American Fuzzy Lop get the data from it using stdin
+ * instead of connecting to the actual whois server.
+ */
+ if (AFL_MODE)
+ return dup(0);
+
alarm(60);
#ifdef HAVE_GETADDRINFO
@@ -803,9 +999,7 @@ int openconn(const char *server, const char *port)
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_ADDRCONFIG;
-#ifdef HAVE_LIBIDN
hints.ai_flags |= AI_IDN;
-#endif
if ((err = getaddrinfo(server, port ? port : "nicname", &hints, &res))
!= 0) {
@@ -862,7 +1056,7 @@ int connect_with_timeout(int fd, const struct sockaddr *addr,
struct timeval tv;
if (timeout <= 0)
- return (connect(fd, addr, addrlen));
+ return connect(fd, addr, addrlen);
if ((savedflags = fcntl(fd, F_GETFL, 0)) < 0)
return -1;
@@ -914,19 +1108,20 @@ int connect_with_timeout(int fd, const struct sockaddr *addr,
return 0;
}
-void alarm_handler(int signum)
+void NORETURN alarm_handler(int signum)
{
close(sockfd);
err_quit(_("Timeout."));
}
-void sighandler(int signum)
+void NORETURN sighandler(int signum)
{
close(sockfd);
err_quit(_("Interrupted by signal %d..."), signum);
}
-int japanese_locale(void) {
+int japanese_locale(void)
+{
char *lang;
lang = getenv("LC_MESSAGE");
@@ -943,40 +1138,88 @@ int japanese_locale(void) {
}
/* check if dom ends with tld */
-int domcmp(const char *dom, const char *tld)
+int endstrcaseeq(const char *dom, const char *tld)
{
- const char *p, *q;
+ size_t dom_len, tld_len;
+ const char *p = NULL;
- for (p = dom; *p; p++); p--; /* move to the last char */
- for (q = tld; *q; q++); q--;
- while (p >= dom && q >= tld && tolower(*p) == *q) { /* compare backwards */
- if (q == tld) /* start of the second word? */
- return 1;
- p--; q--;
- }
- return 0;
+ if ((dom_len = strlen(dom)) == 0)
+ return 0;
+
+ if ((tld_len = strlen(tld)) == 0)
+ return 0;
+
+ /* dom cannot be shorter than what we are looking for */
+ if (tld_len > dom_len)
+ return 0;
+
+ p = dom + dom_len - tld_len;
+
+ return strcaseeq(p, tld);
+}
+
+/* check if dom is a subdomain of tld */
+int in_domain(const char *dom, const char *tld)
+{
+ size_t dom_len, tld_len;
+ const char *p = NULL;
+
+ if ((dom_len = strlen(dom)) == 0)
+ return 0;
+
+ if ((tld_len = strlen(tld)) == 0)
+ return 0;
+
+ /* dom cannot be shorter than what we are looking for */
+ /* -1 to ignore dom containing just a dot and tld */
+ if (tld_len >= dom_len - 1)
+ return 0;
+
+ p = dom + dom_len - tld_len;
+
+ /* fail if the character before tld is not a dot */
+ if (*(p - 1) != '.')
+ return 0;
+
+ return strcaseeq(p, tld);
+}
+
+const char *is_new_gtld(const char *s)
+{
+ int i;
+
+ for (i = 0; new_gtlds[i]; i++)
+ if (in_domain(s, new_gtlds[i]))
+ return new_gtlds[i];
+
+ return NULL;
}
/*
* Attempt to normalize a query by removing trailing dots and whitespace,
* then convert the domain to punycode.
- * The function assumes that the domain is the last token of they query.
+ * The function assumes that the domain is the last token of the query.
* Returns a malloc'ed string which needs to be freed by the caller.
*/
char *normalize_domain(const char *dom)
{
char *p, *ret;
-#ifdef HAVE_LIBIDN
+#if defined HAVE_LIBIDN || defined HAVE_LIBIDN2
char *domain_start = NULL;
#endif
ret = strdup(dom);
- /* eat trailing dots and blanks */
- p = ret + strlen(ret);
- for (; *p == '.' || *p == ' ' || *p == '\t' || p == ret; p--)
+ /* start from the last character */
+ p = ret + strlen(ret) - 1;
+ /* and then eat trailing dots and blanks */
+ while (p > ret) {
+ if (!(*p == '.' || *p == ' ' || *p == '\t'))
+ break;
*p = '\0';
+ p--;
+ }
-#ifdef HAVE_LIBIDN
+#if defined HAVE_LIBIDN || defined HAVE_LIBIDN2
/* find the start of the last word if there are spaces in the query */
for (p = ret; *p; p++)
if (*p == ' ')
@@ -986,8 +1229,13 @@ char *normalize_domain(const char *dom)
char *q, *r;
int prefix_len;
+#ifdef HAVE_LIBIDN2
+ if (idn2_lookup_ul(domain_start, &q, IDN2_NONTRANSITIONAL) != IDN2_OK)
+ return ret;
+#else
if (idna_to_ascii_lz(domain_start, &q, 0) != IDNA_SUCCESS)
return ret;
+#endif
/* reassemble the original query in a new buffer */
prefix_len = domain_start - ret;
@@ -1002,8 +1250,13 @@ char *normalize_domain(const char *dom)
} else {
char *q;
+#ifdef HAVE_LIBIDN2
+ if (idn2_lookup_ul(ret, &q, IDN2_NONTRANSITIONAL) != IDN2_OK)
+ return ret;
+#else
if (idna_to_ascii_lz(ret, &q, 0) != IDNA_SUCCESS)
return ret;
+#endif
free(ret);
return q;
@@ -1015,7 +1268,8 @@ char *normalize_domain(const char *dom)
/* server and port have to be freed by the caller */
void split_server_port(const char *const input,
- char **server, char **port) {
+ char **server, char **port)
+{
char *p;
if (*input == '[' && (p = strchr(input, ']'))) { /* IPv6 */
@@ -1048,25 +1302,13 @@ void split_server_port(const char *const input,
}
/* change the server name to lower case */
- for (p = (char *) *server; *p && *p != '\0'; p++)
+ for (p = (char *) *server; *p; p++)
*p = tolower(*p);
}
char *convert_6to4(const char *s)
{
char *new;
-
-#ifdef HAVE_INET_PTON
- struct in6_addr ipaddr;
- unsigned char *ip;
-
- if (inet_pton(AF_INET6, s, &ipaddr) <= 0)
- return strdup("0.0.0.0");
-
- ip = (unsigned char *)&ipaddr;
- new = malloc(sizeof("255.255.255.255"));
- sprintf(new, "%d.%d.%d.%d", *(ip + 2), *(ip + 3), *(ip + 4), *(ip + 5));
-#else
int items;
unsigned int a, b;
char c;
@@ -1084,8 +1326,7 @@ char *convert_6to4(const char *s)
}
new = malloc(sizeof("255.255.255.255"));
- sprintf(new, "%d.%d.%d.%d", a >> 8, a & 0xff, b >> 8, b & 0xff);
-#endif
+ sprintf(new, "%u.%u.%u.%u", a >> 8, a & 0xff, b >> 8, b & 0xff);
return new;
}
@@ -1093,19 +1334,6 @@ char *convert_6to4(const char *s)
char *convert_teredo(const char *s)
{
char *new;
-
-#ifdef HAVE_INET_PTON
- struct in6_addr ipaddr;
- unsigned char *ip;
-
- if (inet_pton(AF_INET6, s, &ipaddr) <= 0)
- return strdup("0.0.0.0");
-
- ip = (unsigned char *)&ipaddr;
- new = malloc(sizeof("255.255.255.255"));
- sprintf(new, "%d.%d.%d.%d", *(ip + 12) ^ 0xff, *(ip + 13) ^ 0xff,
- *(ip + 14) ^ 0xff, *(ip + 15) ^ 0xff);
-#else
unsigned int a, b;
if (sscanf(s, "2001:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%*[^:]:%x:%x", &a, &b) != 2)
@@ -1114,8 +1342,7 @@ char *convert_teredo(const char *s)
a ^= 0xffff;
b ^= 0xffff;
new = malloc(sizeof("255.255.255.255"));
- sprintf(new, "%d.%d.%d.%d", a >> 8, a & 0xff, b >> 8, b & 0xff);
-#endif
+ sprintf(new, "%u.%u.%u.%u", a >> 8, a & 0xff, b >> 8, b & 0xff);
return new;
}
@@ -1132,19 +1359,23 @@ char *convert_inaddr(const char *s)
if (errno || a < 0 || a > 255 || *endptr != '.')
return strdup("0.0.0.0");
- if (domcmp(endptr + 1, ".in-addr.arpa")) {
+ if (in_domain(endptr + 1, "in-addr.arpa")) {
b = strtol(endptr + 1, &endptr, 10); /* 1.2. */
if (errno || b < 0 || b > 255 || *endptr != '.')
return strdup("0.0.0.0");
- if (domcmp(endptr + 1, ".in-addr.arpa")) {
+ if (in_domain(endptr + 1, "in-addr.arpa")) {
c = strtol(endptr + 1, &endptr, 10); /* 1.2.3. */
if (errno || c < 0 || c > 255 || *endptr != '.')
return strdup("0.0.0.0");
- if (domcmp(endptr + 1, ".in-addr.arpa"))
+ if (in_domain(endptr + 1, "in-addr.arpa"))
return strdup("0.0.0.0");
+ } else {
+ c = b; b = a; a = 0;
}
+ } else {
+ c = a; a = 0;
}
new = malloc(sizeof("255.255.255.255"));
@@ -1152,7 +1383,68 @@ char *convert_inaddr(const char *s)
return new;
}
-#ifndef HAVE_INET_PTON
+char *convert_in6arpa(const char *s)
+{
+ char *ip, *p;
+ int character = 0;
+ int digits = 1;
+
+ ip = malloc(40);
+
+ p = strstr(s, ".ip6.arpa");
+ if (!p || p == s) {
+ ip[character] = '\0';
+ return ip;
+ }
+
+ /* start from the first character before ".ip6.arpa" */
+ p--;
+
+ while (1) {
+ /* check that this is a valid digit for an IPv6 address */
+ if (!((*p >= '0' && *p <= '9') || (*p >= 'a' && *p <= 'f') ||
+ (*p >= 'A' && *p <= 'F'))) {
+ ip[character] = '\0';
+ return ip;
+ }
+
+ /* copy the digit to the IP address */
+ ip[character++] = *p;
+
+ /* stop if we have reached the beginning of the string */
+ if (p == s)
+ break;
+
+ /* stop if we have parsed a complete address */
+ if (character == 39)
+ break;
+
+ /* add the colon separator every four digits */
+ if ((digits++ % 4) == 0)
+ ip[character++] = ':';
+
+ /* go to the precedent character and abort if it is not a dot */
+ p--;
+ if (*p != '.') {
+ ip[character] = '\0';
+ return ip;
+ }
+
+ /* abort if the string starts with the dot */
+ if (p == s) {
+ ip[character] = '\0';
+ return ip;
+ }
+
+ /* go to the precedent character and continue */
+ p--;
+ }
+
+ /* terminate the string */
+ ip[character] = '\0';
+ return ip;
+}
+
unsigned long myinet_aton(const char *s)
{
unsigned long a, b, c, d;
@@ -1168,7 +1460,6 @@ unsigned long myinet_aton(const char *s)
return 0;
return (a << 24) + (b << 16) + (c << 8) + d;
}
-#endif
unsigned long asn32_to_long(const char *s)
{
@@ -1184,43 +1475,59 @@ unsigned long asn32_to_long(const char *s)
return (a << 16) + b;
}
-int isasciidigit(const char c) {
+int isasciidigit(const char c)
+{
return (c >= '0' && c <= '9') ? 1 : 0;
}
/* http://www.ripe.net/ripe/docs/databaseref-manual.html */
-void usage(int error)
+void NORETURN usage(int error)
{
fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"Usage: whois [OPTION]... OBJECT...\n\n"
"-h HOST, --host HOST connect to server HOST\n"
"-p PORT, --port PORT connect to PORT\n"
+"-I query whois.iana.org and follow its referral\n"
"-H hide legal disclaimers\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
" --verbose explain what is being done\n"
" --help display this help and exit\n"
" --version output version information and exit\n"
"\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"These flags are supported by whois.ripe.net and some RIPE-like servers:\n"
"-l find the one level less specific match\n"
"-L find all levels less specific matches\n"
"-m find all one level more specific matches\n"
"-M find all levels of more specific matches\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"-c find the smallest match containing a mnt-irt attribute\n"
"-x exact match\n"
"-b return brief IP address ranges with abuse contact\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"-B turn off object filtering (show email addresses)\n"
"-G turn off grouping of associated objects\n"
"-d return DNS reverse delegation objects too\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"-i ATTR[,ATTR]... do an inverse look-up for specified ATTRibutes\n"
"-T TYPE[,TYPE]... only look for objects of TYPE\n"
"-K only primary keys are returned\n"
"-r turn off recursive look-ups for contact information\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"-R force to show local copy of the domain object even\n"
" if it contains referral\n"
"-a also search all the mirrored databases\n"
"-s SOURCE[,SOURCE]... search the database mirrored from SOURCE\n"
"-g SOURCE:FIRST-LAST find updates from SOURCE from serial FIRST to LAST\n"
+ ));
+ fprintf((EXIT_SUCCESS == error) ? stdout : stderr, _(
"-t TYPE request template for object of TYPE\n"
"-v TYPE request verbose template for object of TYPE\n"
"-q [version|sources|types] query specified server info\n"
diff --git a/whois.h b/whois.h
index a9b9a64..bb910e5 100644
--- a/whois.h
+++ b/whois.h
@@ -1,11 +1,10 @@
+#include "utils.h"
+
/* 6bone referto: extension */
#define REFERTO_FORMAT "%% referto: whois -h %255s -p %15s %1021[^\n\r]"
-/* String sent to RIPE servers - MUST NOT BE LONGER THAN FIVE CHARACTERS! */
-/* Do *NOT* change it if you don't know what you are doing! */
-#define IDSTRING "Md5.1"
-
-#define HIDE_DISABLED -2
+#define HIDE_TO_THE_END -3
+#define HIDE_DISABLED -2
#define HIDE_NOT_STARTED -1
/* prototypes */
@@ -18,21 +17,25 @@ int hide_line(int *hiding, const char *const line);
char *do_query(const int, const char *);
char *query_crsnic(const int, const char *);
char *query_afilias(const int, const char *);
+char *query_iana(const int, const char *);
int openconn(const char *, const char *);
int connect_with_timeout(int, const struct sockaddr *, socklen_t, int);
-void usage(int error);
-void alarm_handler(int);
-void sighandler(int);
+void NORETURN usage(int error);
+void NORETURN alarm_handler(int);
+void NORETURN sighandler(int);
int japanese_locale(void);
unsigned long myinet_aton(const char *);
unsigned long asn32_to_long(const char *);
int isasciidigit(const char);
-int domcmp(const char *, const char *);
+int endstrcaseeq(const char *, const char *);
+int in_domain(const char *, const char *);
+const char *is_new_gtld(const char *);
int domfind(const char *, const char *[]);
char *normalize_domain(const char *);
char *convert_6to4(const char *);
char *convert_teredo(const char *);
char *convert_inaddr(const char *);
+char *convert_in6arpa(const char *);
int handle_query(const char *server, const char *port,
const char *qstring, const char *fstring);
void split_server_port(const char *const input, char **server, char **port);