/* Host name resolution and matching.
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation,
+ Inc.
This file is part of GNU Wget.
# endif /* def __VMS [else] */
# define SET_H_ERRNO(err) ((void)(h_errno = (err)))
#else /* WINDOWS */
+# include <winsock2.h>
+# include <ws2tcpip.h>
# define SET_H_ERRNO(err) WSASetLastError (err)
#endif /* WINDOWS */
# define NO_ADDRESS NO_DATA
#endif
-#if !HAVE_DECL_H_ERRNO
+#if !HAVE_DECL_H_ERRNO && !defined(WINDOWS)
extern int h_errno;
#endif
}
/* Print error messages for host errors. */
-static char *
+static const char *
host_errstr (int error)
{
/* Can't use switch since some of these constants can be equal,
#endif /* not ENABLE_IPV6 */
/* Print the addresses determined by DNS lookup, but no more than
- three. */
+ three if show_all_dns_entries is not specified. */
if (!silent && !numeric_address)
{
int i;
- int printmax = al->count <= 3 ? al->count : 3;
+ int printmax = al->count;
+
+ if (!opt.show_all_dns_entries && printmax > 3)
+ printmax = 3;
+
for (i = 0; i < printmax; i++)
{
logputs (LOG_VERBOSE, print_address (al->addresses + i));
lw = strlen (what);
for (i = 0; list[i]; i++)
{
+ if (list[i][0] == '\0')
+ continue;
+
for (j = strlen (list[i]), k = lw; j >= 0 && k >= 0; j--, k--)
if (c_tolower (list[i][j]) != c_tolower (what[k]))
break;
host_name_addresses_map = NULL;
}
}
+
+bool
+is_valid_ip_address (const char *name)
+{
+ const char *endp;
+
+ endp = name + strlen(name);
+ if (is_valid_ipv4_address (name, endp))
+ return true;
+#ifdef ENABLE_IPV6
+ if (is_valid_ipv6_address (name, endp))
+ return true;
+#endif
+ return false;
+}