diff --git a/ares/CHANGES b/ares/CHANGES index 68ec05d5a38521050e100e4e74df316cdd16665b..c64ad799ed26b6324475618a302a2f24930c032d 100644 --- a/ares/CHANGES +++ b/ares/CHANGES @@ -1,5 +1,9 @@ Changelog for the c-ares project +* Oct 18 2008 (Daniel Stenberg) + Charles Hardin made adig support a regular numerical dotted IP address for the + -s option as well. + * Oct 7 2008 (Yang Tse) - Added --enable-optimize configure option to enable and disable compiler optimizations to allow decoupled setting from --enable-debug. diff --git a/ares/adig.c b/ares/adig.c index 0dfc8bd26dc63263f33b51ff4e7f58f42c0c4822..cc0d42d5614b172d233d726ff13e9761c9f020ed 100644 --- a/ares/adig.c +++ b/ares/adig.c @@ -151,6 +151,7 @@ static const char *opcodes[] = { "UPDATEA", "UPDATED", "UPDATEDA", "UPDATEM", "UPDATEMA", "ZONEINIT", "ZONEREF" }; + struct in_addr inaddr; static const char *rcodes[] = { "NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED", @@ -212,11 +213,15 @@ int main(int argc, char **argv) case 's': /* Add a server, and specify servers in the option mask. */ - hostent = gethostbyname(optarg); - if (!hostent || hostent->h_addrtype != AF_INET) + if (inet_pton(AF_INET, optarg, &inaddr) <= 0) { - fprintf(stderr, "adig: server %s not found.\n", optarg); - return 1; + hostent = gethostbyname(optarg); + if (!hostent || hostent->h_addrtype != AF_INET) + { + fprintf(stderr, "adig: server %s not found.\n", optarg); + return 1; + } + memcpy(&inaddr, hostent->h_addr, sizeof(struct in_addr)); } options.servers = realloc(options.servers, (options.nservers + 1) * sizeof(struct in_addr)); @@ -225,7 +230,7 @@ int main(int argc, char **argv) fprintf(stderr, "Out of memory!\n"); return 1; } - memcpy(&options.servers[options.nservers], hostent->h_addr, + memcpy(&options.servers[options.nservers], &inaddr, sizeof(struct in_addr)); options.nservers++; optmask |= ARES_OPT_SERVERS;