aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-03-24 10:34:30 +0100
committerDaniel Stenberg <daniel@haxx.se>2010-03-24 10:34:30 +0100
commit4259d2df7dd95637a4b1e3fb174fe5e5aef81069 (patch)
tree8abd5ab61fbacf160f9084a44613fcc4b20e8483
parent4b351d018e3d6691191fd653a17f14f4a31e0b4c (diff)
remove the ares subtree
c-ares is now hosted entirely separate from the curl project see http://c-ares.haxx.se/ for all details concerning c-ares, its source repository and more.
-rw-r--r--ares/.cvsignore35
-rw-r--r--ares/.gitignore9
-rw-r--r--ares/AUTHORS37
-rw-r--r--ares/CHANGES1151
-rw-r--r--ares/CVS-INFO7
-rw-r--r--ares/Makefile.am171
-rw-r--r--ares/Makefile.dj86
-rw-r--r--ares/Makefile.inc188
-rw-r--r--ares/Makefile.m3269
-rw-r--r--ares/Makefile.msvc475
-rw-r--r--ares/Makefile.netware430
-rw-r--r--ares/NEWS21
-rw-r--r--ares/README46
-rw-r--r--ares/README.cares63
-rw-r--r--ares/README.msvc119
-rw-r--r--ares/RELEASE-NOTES18
-rw-r--r--ares/TODO23
-rw-r--r--ares/acinclude.m41925
-rw-r--r--ares/acountry.c628
-rw-r--r--ares/adig.c820
-rw-r--r--ares/ahost.c202
-rw-r--r--ares/ares.h509
-rw-r--r--ares/ares__close_sockets.c67
-rw-r--r--ares/ares__get_hostent.c264
-rw-r--r--ares/ares__read_line.c72
-rw-r--r--ares/ares__timeval.c112
-rw-r--r--ares/ares_build.h.dist253
-rw-r--r--ares/ares_build.h.in111
-rw-r--r--ares/ares_cancel.344
-rw-r--r--ares/ares_cancel.c64
-rw-r--r--ares/ares_data.c176
-rw-r--r--ares/ares_data.h64
-rw-r--r--ares/ares_destroy.344
-rw-r--r--ares/ares_destroy.c106
-rw-r--r--ares/ares_destroy_options.339
-rw-r--r--ares/ares_dns.h91
-rw-r--r--ares/ares_dup.344
-rw-r--r--ares/ares_expand_name.364
-rw-r--r--ares/ares_expand_name.c194
-rw-r--r--ares/ares_expand_string.362
-rw-r--r--ares/ares_expand_string.c76
-rw-r--r--ares/ares_fds.362
-rw-r--r--ares/ares_fds.c63
-rw-r--r--ares/ares_free_data.366
-rw-r--r--ares/ares_free_hostent.346
-rw-r--r--ares/ares_free_hostent.c40
-rw-r--r--ares/ares_free_string.336
-rw-r--r--ares/ares_free_string.c26
-rw-r--r--ares/ares_get_servers.379
-rw-r--r--ares/ares_gethostbyaddr.3102
-rw-r--r--ares/ares_gethostbyaddr.c291
-rw-r--r--ares/ares_gethostbyname.3106
-rw-r--r--ares/ares_gethostbyname.c513
-rw-r--r--ares/ares_gethostbyname_file.384
-rw-r--r--ares/ares_getnameinfo.3150
-rw-r--r--ares/ares_getnameinfo.c413
-rw-r--r--ares/ares_getopt.c123
-rw-r--r--ares/ares_getopt.h53
-rw-r--r--ares/ares_getsock.358
-rw-r--r--ares/ares_getsock.c73
-rw-r--r--ares/ares_init.3203
-rw-r--r--ares/ares_init.c1627
-rw-r--r--ares/ares_init_options.32
-rw-r--r--ares/ares_ipv6.h75
-rw-r--r--ares/ares_library_cleanup.374
-rw-r--r--ares/ares_library_init.397
-rw-r--r--ares/ares_library_init.c133
-rw-r--r--ares/ares_library_init.h40
-rw-r--r--ares/ares_llist.c87
-rw-r--r--ares/ares_llist.h43
-rw-r--r--ares/ares_mkquery.376
-rw-r--r--ares/ares_mkquery.c196
-rw-r--r--ares/ares_nowarn.c53
-rw-r--r--ares/ares_nowarn.h23
-rw-r--r--ares/ares_options.c128
-rw-r--r--ares/ares_parse_a_reply.379
-rw-r--r--ares/ares_parse_a_reply.c257
-rw-r--r--ares/ares_parse_aaaa_reply.379
-rw-r--r--ares/ares_parse_aaaa_reply.c257
-rw-r--r--ares/ares_parse_ns_reply.366
-rw-r--r--ares/ares_parse_ns_reply.c182
-rw-r--r--ares/ares_parse_ptr_reply.375
-rw-r--r--ares/ares_parse_ptr_reply.c209
-rw-r--r--ares/ares_parse_srv_reply.381
-rw-r--r--ares/ares_parse_srv_reply.c180
-rw-r--r--ares/ares_parse_txt_reply.380
-rw-r--r--ares/ares_parse_txt_reply.c202
-rw-r--r--ares/ares_private.h345
-rw-r--r--ares/ares_process.381
-rw-r--r--ares/ares_process.c1262
-rw-r--r--ares/ares_query.3147
-rw-r--r--ares/ares_query.c184
-rw-r--r--ares/ares_rules.h145
-rw-r--r--ares/ares_save_options.375
-rw-r--r--ares/ares_search.3149
-rw-r--r--ares/ares_search.c323
-rw-r--r--ares/ares_send.3121
-rw-r--r--ares/ares_send.c135
-rw-r--r--ares/ares_set_servers.385
-rw-r--r--ares/ares_set_socket_callback.329
-rw-r--r--ares/ares_setup.h198
-rw-r--r--ares/ares_strcasecmp.c67
-rw-r--r--ares/ares_strcasecmp.h31
-rw-r--r--ares/ares_strdup.c43
-rw-r--r--ares/ares_strdup.h27
-rw-r--r--ares/ares_strerror.338
-rw-r--r--ares/ares_strerror.c57
-rw-r--r--ares/ares_timeout.362
-rw-r--r--ares/ares_timeout.c81
-rw-r--r--ares/ares_version.341
-rw-r--r--ares/ares_version.c12
-rw-r--r--ares/ares_version.h22
-rw-r--r--ares/ares_writev.c80
-rw-r--r--ares/ares_writev.h37
-rw-r--r--ares/bitncmp.c60
-rw-r--r--ares/bitncmp.h27
-rwxr-xr-xares/buildconf117
-rw-r--r--ares/buildconf.bat21
-rw-r--r--ares/cares.rc66
-rw-r--r--ares/config-win32.h354
-rw-r--r--ares/config.dos114
-rw-r--r--ares/configure.ac876
-rw-r--r--ares/get_ver.awk36
-rw-r--r--ares/inet_net_pton.c447
-rw-r--r--ares/inet_net_pton.h32
-rw-r--r--ares/inet_ntop.c233
-rw-r--r--ares/inet_ntop.h27
-rwxr-xr-xares/install-sh250
-rw-r--r--ares/libcares.pc.in21
-rw-r--r--ares/m4/.cvsignore5
-rw-r--r--ares/m4/.gitignore5
-rw-r--r--ares/m4/cares-compilers.m41551
-rw-r--r--ares/m4/cares-confopts.m4320
-rw-r--r--ares/m4/cares-functions.m43235
-rw-r--r--ares/m4/cares-override.m4102
-rw-r--r--ares/m4/cares-reentrant.m4611
-rw-r--r--ares/m4/cares-system.m483
-rwxr-xr-xares/maketgz74
-rwxr-xr-xares/mkinstalldirs40
-rw-r--r--ares/nameser.h194
-rw-r--r--ares/setup_once.h444
-rw-r--r--ares/vc/.cvsignore4
-rw-r--r--ares/vc/acountry/.cvsignore12
-rw-r--r--ares/vc/acountry/vc6acountry.dsp170
-rw-r--r--ares/vc/adig/.cvsignore10
-rw-r--r--ares/vc/adig/vc6adig.dsp170
-rw-r--r--ares/vc/ahost/.cvsignore10
-rw-r--r--ares/vc/ahost/vc6ahost.dsp170
-rw-r--r--ares/vc/cares/.cvsignore9
-rw-r--r--ares/vc/cares/vc6cares.dsp393
-rw-r--r--ares/vc/cares/vc6cares.dsw29
-rw-r--r--ares/vc/vc6aws.dsw74
-rw-r--r--ares/windows_port.c23
153 files changed, 0 insertions, 30263 deletions
diff --git a/ares/.cvsignore b/ares/.cvsignore
deleted file mode 100644
index 8887947d8..000000000
--- a/ares/.cvsignore
+++ /dev/null
@@ -1,35 +0,0 @@
-*.html
-*.lo
-*.pdf
-.deps
-.libs
-MSVC*
-Makefile
-Makefile.in
-aclocal.m4
-acountry
-adig
-ahost
-ares_build.h
-ares_config.h
-ares_config.h.in
-ares_version.h.dist
-autom4te.cache
-compile
-config.guess
-config.h
-config.h.in
-config.log
-config.lt
-config.status
-config.sub
-configure
-depcomp
-libcares.la
-libcares.pc
-libtool
-ltmain.sh
-man3
-missing
-msvc*
-stamp-h*
diff --git a/ares/.gitignore b/ares/.gitignore
deleted file mode 100644
index 582656c4a..000000000
--- a/ares/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-acountry
-adig
-ahost
-ares_build.h
-ares_config.h
-ares_config.h.in
-libcares.pc
-stamp-h1
-stamp-h2 \ No newline at end of file
diff --git a/ares/AUTHORS b/ares/AUTHORS
deleted file mode 100644
index e197a7419..000000000
--- a/ares/AUTHORS
+++ /dev/null
@@ -1,37 +0,0 @@
-c-ares is based on ares, and these are the people that have worked on it since
-the fork was made:
-
-Alexander Lazic
-Alexey Simak
-Andreas Rieke
-Ashish Sharma
-Brad House
-Brad Spencer
-Bram Matthys
-Dan Fandrich
-Daniel Stenberg
-Dirk Manske
-Dominick Meglio
-Doug Goldstein
-Duncan Wilcox
-Eino Tuominen
-Erik Kline
-George Neill
-Gisle Vanem
-Guilherme Balena Versiani
-Gunter Knauf
-Henrik Stoerner
-James Bursa
-Michael Wallner
-Nick Mathewson
-Phil Blundell
-Ravi Pratap
-Robin Cornelius
-Sebastian at basti79.de
-Shmulik Regev
-Steinar H. Gunderson
-Tofu Linden
-Vlad Dinulescu
-William Ahern
-Yang Tse
-liren at vivisimo.com
diff --git a/ares/CHANGES b/ares/CHANGES
deleted file mode 100644
index ae8a57a8b..000000000
--- a/ares/CHANGES
+++ /dev/null
@@ -1,1151 +0,0 @@
- Changelog for the c-ares project
-
-* March 5, 2010 (Daniel Stenberg)
-- Daniel Johnson provided fixes for building with the clang compiler.
-
-* March 5, 2010 (Yang Tse)
-- Added IPv6 name servers support. Implementation has been based on code,
- comments and feedback provided November and December of 2008 by Daniel
- Stenberg, Gregor Jasny, Phil Blundell and myself, December 2009 by Cedric
- Bail, and February 2010 by Jakub Hrozek on the c-ares mailing list. On
- March I reviewed all that, selected the best of each, and adjusted or
- extended parts of it to make the best fit.
-
- The external and visible result of all this is that two new functions are
- added to the external API, ares_get_servers() and ares_set_servers(), which
- becomes now the preferred way of getting and setting name servers for any
- ares channel as these support both IPv4 and IPv6 name servers.
-
- In order to not break ABI compatibility, ares_init_options() with option
- mask ARES_OPT_SERVERS and ares_save_options() may still be used in code
- which is intended to run on IPv4-only stacks. But remember that these
- functions do not support IPv6 name servers. This implies that if the user
- is capable of defining or providing an IPv6 name server, and the app is
- using ares_init_options() or ares_save_options() at some point to handle
- the name servers, the app will likely loose IPv6 name servers.
-
-* January 28, 2010 (Daniel Stenberg)
-- Tommie Gannert pointed out a silly bug in ares_process_fd() since it didn't
- check for broken connections like ares_process() did. Based on that, I
- merged the two functions into a single generic one with two front-ends.
-
-* December 29, 2009 (Yang Tse)
-- Laszlo Tamas Szabo adjusted Makefile.msvc compiler options so that where
- run-time error checks enabling compiler option /GZ was used it is replaced
- with equivalent /RTCsu for Visual Studio 2003 and newer versions. Option
- /GX is replaced with equivalent /EHsc for all versions. Also fixed socket
- data type for internal configure_socket function.
-
-* December 21, 2009 (Yang Tse)
-- Ingmar Runge noticed that Windows config-win32.h configuration file
- did not include a definition for HAVE_CLOSESOCKET which resulted in
- function close() being inappropriately used to close sockets.
-
-Version 1.7.0 (Nov 30, 2009)
-
-* November 26, 2009 (Yang Tse)
-- Larry Lansing fixed ares_parse_srv_reply to properly parse replies
- which might contain non-SRV answers, skipping over potential non-SRV
- ones such as CNAMEs.
-
-* November 23, 2009 (Yang Tse)
-- Changed naming convention for c-ares libraries built with MSVC, details
- and build instructions provided in README.msvc file.
-
-* November 22, 2009 (Yang Tse)
-- Jakub Hrozek fixed more function prototypes in man pages to sync them
- with the ones declared in ares.h
-
-- Jakub Hrozek renamed addrttl and addr6ttl structs to ares_addrttl and
- ares_addr6ttl in order to prevent name space pollution, along with
- necessary changes to code base and man pages.This change does not break
- ABI, there is no need to recompile existing applications. But existing
- applications using these structs with the old name will need source code
- adjustments when recompiled using c-ares 1.7.0.
-
-* November 21, 2009 (Yang Tse)
-- Added manifest stuff to Makefile.msvc.
-
-* November 20, 2009 (Yang Tse)
-- Fixed several function prototypes in man pages that were out of sync
- with the ones declared in ares.h. Added ares_free_data() along with
- man page. Updated ares_parse_srv_reply() and ares_parse_txt_reply()
- with changes from Jakub Hrozek making these now return linked lists
- instead of arrays, and merging the ares_free_data() adjustments.
-
-* November 10, 2009 (Yang Tse)
-- Updated MSVC 6.0 project files to match settings from Makefile.msvc.
-
-* November 9, 2009 (Yang Tse)
-- Makefile.msvc is now the reference method to build c-ares and sample
- programs with any MSVC compiler or MS Visual Studio version. If no
- option or target are specified it builds dynamic and static c-ares
- libraries in debug and release flavours and also builds all sample
- programs using each of the different c-ares libraries.
-
-* November 2, 2009 (Yang Tse)
-- Renamed c-ares setup.h to ares_setup.h
-
-* October 31, 2009 (Yang Tse)
-- Symbol hiding configure options are named now --enable-symbol-hiding
- and --disable-symbol-hiding in an attempt to make them less ambiguous.
-
-* October 30, 2009 (Yang Tse)
-- Many fixes for ares_parse_txt_reply()
-
-* October 29, 2009 (Daniel Stenberg)
-- Jakub Hrozek added ares_parse_txt_reply() for TXT parsing
-
-* October 29, 2009 (Yang Tse)
-- Updated MSVC 6.0 workspace and project files that allows building
- dynamic and static c-ares libraries in debug and release flavours.
- Additionally each of the three sample programs is built against
- each of the four possible c-ares libraries, generating all this
- a total number of 12 executables and 4 libraries.
-
-* October 28, 2009 (Yang Tse)
-- Initial step towards the ability to reduce c-ares exported symbols
- when built as a shared library based on the 'visibility' attribute
- for GNUC and Intel compilers and based on __global for Sun compilers,
- taking also in account __declspec function decoration for Win32 and
- Symbian DLL's.
-
-* October 27, 2009 (Yang Tse)
-- Fixed Pelles C Win32 target compilation issues.
-
-* October 23, 2009 (Yang Tse)
-- John Engelhart noticed an unreleased problem relative to a duplicate
- ARES_ECANCELLED error code value and missing error code description.
-
-* October 7, 2009 (Yang Tse)
-- Overhauled ares__get_hostent() Fixing out of bounds memory overwrite
- triggered with malformed /etc/hosts file. Improving parsing of /etc/hosts
- file. Validating requested address family. Ensuring that failures always
- return a NULL pointer. Adjusting header inclusions.
-
-* October 6, 2009 (Yang Tse)
-- Fix ssize_t redefinition errors on WIN64 reported by Alexey Simak.
-
-* September 29, 2009 (Yang Tse)
-- Make configure script also check if _REENTRANT definition is required to
- make errno available as a preprocessor macro.
-
-* September 7, 2009 (Yang Tse)
-- Add T_SRV portability check to ares_parse_srv_reply.c
-
-* 4 Sep 2009 (Daniel Stenberg)
-- Jakub Hrozek added ares_parse_srv_reply() for SRV parsing
-
-* 3 Aug 2009 (Daniel Stenberg)
-- Joshua Kwan fixed the init routine to fill in the defaults for stuff that
- fails to get inited by other means. This fixes a case of when the c-ares
- init fails when internet access is fone.
-
-- Timo Teras changed the reason code used in the resolve callback done when
- ares_cancel() is used, to be ARES_ECANCELLED instead of ARES_ETIMEOUT to
- better allow the callback to know what's happening.
-
-* 14 Jul 2009 (Guenter Knauf)
-- renamed generated config.h to ares_config.h to avoid any future clashes
- with config.h from other projects.
-
-* June 20 2009 (Yang Tse)
-- Refactor how libraries are checked for connect() function in configure
- script and check for connect() as it is done for other functions.
-
-* June 19 2009 (Yang Tse)
-- Make sclose() function-like macro definition used to close a socket,
- now solely based on HAVE_CLOSESOCKET and HAVE_CLOSESOCKET_CAMEL
- config file preprocessor definitions
-
-* June 18 2009 (Yang Tse)
-- Add CloseSocket camel case function check for configure script.
-
-* June 17 2009 (Yang Tse)
-- Check for socket() and closesocket() as it is done for other functions
- in configure script.
-
-* June 11 2009 (Yang Tse)
-- Modified buildconf so that when automake runs it copies missing files
- instead of symlinking them.
-
-* June 8 2009 (Yang Tse)
-- Removed buildconf.bat from release and daily snapshot archives. This
- file is only for CVS tree checkout builds.
-
-* May 26 2009 (Yang Tse)
-- Added --enable-curldebug configure option to enable and disable building
- with the low-level curl debug memory tracking 'feature' to allow decoupled
- setting from --enable-debug, allowing again to build c-ares independently
- out of the CVS tree.
-
- For the c-ares library option --enable-debug enables debug build features
- which are _not_ related with memory tracking. For the c-ares library when
- --enable-debug is given it does not enable the memory tracking feature. If
- you wish to enable the curl debug memory tracking you must use configure
- option --enable-curldebug explicitily to do so.
-
- Internally, definition of preprocessor symbol DEBUGBUILD restricts code
- which is only compiled for debug enabled builds. And symbol CURLDEBUG is
- used to differentiate code which is _only_ used for memory tracking.
-
- Make ares_init(), ares_dup() and ares_init_options() fail returning
- ARES_ENOTINITIALIZED if library initialization has not been performed
- calling ares_library_init().
-
-* May 20 2009 (Yang Tse)
-- Added ares_library_init() and ares_library_cleanup() man pages.
-
-* May 19 2009 (Yang Tse)
-- Introduced ares_library_init() and ares_library_cleanup() functions.
-
- This is an API and ABI break for Win32/64 systems. Non-Win32/64 build targets
- using c-ares 1.7.0 can still survive without calling these functions. Read all
- the details on ares_library_init(3) and ares_library_cleanup(3) man pages that
- are included.
-
- curl/libcurl 7.19.5 is fully compatible with c-ares 1.7.0 on all systems.
-
- In order to use c-ares 1.7.0 with curl/libcurl on Win32/64 systems it is
- required that curl/libcurl is 7.19.5 or newer. In other words, it is not
- possible on Win32/64 to use c-ares 1.7.0 with a curl/libcurl version less
- than 7.19.5
-
-* May 11 2009 (Daniel Stenberg)
-- Gregor Jasny made c-ares link with libtool 's -export-symbols-regex option to
- only expose functions starting with ares_.
-
-* May 7 2009 (Yang Tse)
-- Fix an m4 overquoting triggering a spurious 'AS_TR_CPP' symbol definition
- attempt in generated config.h
-
-* May 2 2009 (Yang Tse)
-- Use a build-time configured ares_socklen_t data type instead of socklen_t.
-
-* April 21 2009 (Yang Tse)
-- Moved potential inclusion of system's malloc.h and memory.h header files to
- setup_once.h. Inclusion of each header file is based on the definition of
- NEED_MALLOC_H and NEED_MEMORY_H respectively.
-
-* March 11 2009 (Yang Tse)
-- Japheth Cleaver fixed acountry.c replacing u_long with unsigned long.
-
-* February 20 2009 (Yang Tse)
-- Do not halt compilation when using VS2008 to build a Windows 2000 target.
-
-* February 3 2009 (Phil Blundell)
-- If the server returns garbage or nothing at all in response to an AAAA query,
- go on and ask for A records anyway.
-
-* January 31 2009 (Daniel Stenberg)
-- ares_gethostbyname() now accepts 'AF_UNSPEC' as a family for resolving
- either AF_INET6 or AF_INET. It works by accepting any of the looksups in the
- hosts file, and it resolves the AAAA field with a fallback to A.
-
-* January 14 2009 (Daniel Stenberg)
-- ares.h no longer uses the HAVE_STRUCT_IN6_ADDR define check, but instead it
- now declares the private struct ares_in6_addr for all systems instead of
- relying on one possibly not present in the system.
-
-* January 13 2009 (Phil Blundell)
-- ares__send_query() now varies the retry timeout pseudo-randomly to avoid
- packet storms when several queries were started at the same time.
-
-* January 11 2009 (Daniel Stenberg)
-- Phil Blundell added the internal function ares__expand_name_for_response()
- that is now used by the ares_parse_*_reply() functions instead of the
- ares_expand_name() simply to easier return ARES_EBADRESP for the cases where
- the name expansion fails as in responses that really isn't expected.
-
-Version 1.6.0 (Dec 9, 2008)
-
-* December 9 2008 (Gisle Vanem)
-
- Fixes for Win32 targets using the Watt-32 tcp/ip stack.
-
-* Dec 4 2008 (Daniel Stenberg)
-
- Gregor Jasny provided the patch that introduces ares_set_socket_callback(),
- and I edited it to also get duped by ares_dup().
-
-* Dec 3 2008 (Daniel Stenberg)
-
- API changes:
-
- I made sure the public ares_config struct looks like before and yet it
- supports the ROTATE option thanks to c-ares now storing the "optmask"
- internally. Thus we should be ABI compatible with the past release(s)
- now. My efforts mentioned below should not break backwards ABI compliance.
-
- Here's how I suggest we proceed with the API:
-
- ares_init() will be primary "channel creator" function.
-
- ares_init_options() will continue to work exactly like now and before. For
- starters, it will be the (only) way to set the existing options.
-
- ares_save_options() will continue to work like today, but will ONLY save
- options that you can set today (including ARES_OPT_ROTATE actually) but new
- options that we add may not be saved with this.
-
- Instead we introduce:
-
- ares_dup() that instead can make a new channel and clone the config used
- from an existing channel. It will then clone all config options, including
- future new things we add.
-
- ares_set_*() style functions that set (new) config options. As a start we
- simply add these for new functionality, but over time we can also introduce
- them for existing "struct ares_options" so that we can eventually deprecate
- the two ares_*_options() functions.
-
- ares_get_*() style functions for extracting info from a channel handle that
- should be used instead of ares_save_options().
-
-* Nov 26 2008 (Yang Tse)
-- Brad Spencer provided changes to allow buildconf to work on OS X.
-
-- Gerald Combs fixed a bug in ares_parse_ptr_reply() which would cause a
- buffer to shrink instead of expand if a reply contained 8 or more records.
-
-* Nov 25 2008 (Yang Tse)
-- In preparation for the upcomming IPv6 nameservers patch, the internal
- ares_addr union is now changed into an internal struct which also holds
- the address family.
-
-* Nov 19 2008 (Daniel Stenberg)
-- Brad Spencer brought the new function ares_gethostbyname_file() which simply
- resolves a host name from the given file, using the regular hosts syntax.
-
-* Nov 1 2008 (Daniel Stenberg)
-- Carlo Contavalli added support for the glibc "rotate" option, as documented
- in man resolv.conf:
-
- causes round robin selection of nameservers from among those listed. This
- has the effect of spreading the query load among all listed servers, rather
- than having all clients try the first listed server first every time.
-
- You can enable it with ARES_OPT_ROTATE
-
-* Oct 21 2008 (Yang Tse)
- Charles Hardin added handling of EINPROGRESS for UDP connects.
-
-* 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.
-
-* Oct 2 2008 (Yang Tse)
-- Added --enable-warnings configure option to enable and disable strict
- compiler warnings to allow decoupled setting from --enable-debug.
-
-* Sep 17 2008 (Yang Tse)
-- Code reorganization to allow internal/private use of "nameser.h" to any
- system that lacks arpa/nameser.h or arpa/nameser_compat.h header files.
-
-* Sep 16 2008 (Yang Tse)
-- Code reorganization to allow internal/private use of ares_writev to any
- system that lacks the writev function.
-
-* Sep 15 2008 (Yang Tse)
-- Code reorganization to allow internal/private use of ares_strcasecmp to any
- system that lacks the strcasecmp function.
-
-- Improve configure detection of some string functions.
-
-* Sep 11 2008 (Yang Tse)
-- Code reorganization to allow internal/private use of ares_strdup to any
- system that lacks the strdup function.
-
-Version 1.5.3 (Aug 29, 2008)
-
-* Aug 25 2008 (Yang Tse)
-- Improvement by Brad House:
-
- This patch addresses an issue in which a response could be sent back to the
- source port of a client from a different address than the request was made to.
- This is one form of a DNS cache poisoning attack.
-
- The patch simply uses recvfrom() rather than recv() and validates that the
- address returned from recvfrom() matches the address of the server we have
- connected to. Only necessary on UDP sockets as they are connection-less, TCP
- is unaffected.
-
-- Fix by George Neill:
- Fixed compilation of acountry sample application failure on some systems.
-
-* Aug 4 2008 (Daniel Stenberg)
-- Fix by Tofu Linden:
-
- The symptom:
- * Users (usually, but not always) on 2-Wire routers and the Comcast service
- and a wired connection to their router would find that the second and
- subsequent DNS lookups from fresh processes using c-ares to resolve the same
- address would cause the process to never see a reply (it keeps polling for
- around 1m15s before giving up).
-
- The repro:
- * On such a machine (and yeah, it took us a lot of QA to find the systems
- that reproduce such a specific problem!), do 'ahost www.secondlife.com',
- then do it again. The first process's lookup will work, subsequent lookups
- will time-out and fail.
-
- The cause:
- * init_id_key() was calling randomize_key() *before* it initialized
- key->state, meaning that the randomness generated by randomize_key() is
- immediately overwritten with deterministic values. (/dev/urandom was also
- being read incorrectly in the c-ares version we were using, but this was
- fixed in a later version.)
- * This makes the stream of generated query-IDs from any new c-ares process
- be an identical and predictable sequence of IDs.
- * This makes the 2-Wire's default built-in DNS server detect these queries
- as probable-duplicates and (erroneously) not respond at all.
-
-
-* Aug 4 2008 (Yang Tse)
-- Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
- Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. 2.62
- version of AC_AIX defines _ALL_SOURCE and other four preprocessor symbols
- no matter if the system is AIX or not. To keep the traditional behaviour,
- and an uniform one across autoconf versions AC_AIX is replaced with our
- own internal macro CARES_CHECK_AIX_ALL_SOURCE.
-
-* Aug 1 2008 (Yang Tse)
-- Configure process now checks if the preprocessor _REENTRANT symbol is already
- defined. If it isn't currently defined a set of checks are performed to test
- if its definition is required to make visible to the compiler a set of *_r
- functions. Finally, if _REENTRANT is already defined or needed it takes care
- of making adjustments necessary to ensure that it is defined equally for the
- configure process tests and generated config file.
-
-* Jul 20 2008 (Yang Tse)
-- When recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
- now cause the definition, as appropriate, of RECVFROM_TYPE_ARG2_IS_VOID,
- RECVFROM_TYPE_ARG5_IS_VOID or RECVFROM_TYPE_ARG6_IS_VOID.
-
-* Jul 17 2008 (Yang Tse)
-- RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
- to the data type pointed by its respective argument and not the pointer type.
-
-* Jul 16 2008 (Yang Tse)
-- Improved configure detection of number of arguments for getservbyport_r.
- Detection is now based on compilation checks instead of linker ones.
-
-- Configure process now checks availability of recvfrom() socket function and
- finds out its return type and the types of its arguments. Added definitions
- for non-configure systems config files, and introduced macro sreadfrom which
- will be used on udp sockets as a recvfrom() wrapper in the future.
-
-* Jul 15 2008 (Yang Tse)
-- Introduce definition of _REENTRANT symbol in setup.h to improve library
- usability. Previously the configure process only used the AC_SYS_LARGEFILE
- macro for debug builds, now it is also used for non-debug ones enabling the
- use of configure options --enable-largefile and --disable-largefile which
- might be needed for library compatibility. Remove checking the size of
- curl_off_t, it is no longer needed.
-
-* Jul 3 2008 (Daniel Stenberg)
-- Phil Blundell: If you ask ares_gethostbyname() to do an AF_INET6 lookup and
- the target host has only A records, it automatically falls back to an
- AF_INET lookup and gives you the A results. However, if the target host has
- a CNAME record, this behaviour is defeated since the original query does
- return some data even though ares_parse_aaa_reply() doesn't consider it
- relevant. Here's a small patch to make it behave the same with and without
- the CNAME.
-
-* Jul 2 2008 (Yang Tse)
-- Fallback to gettimeofday when monotonic clock is unavailable at run-time.
-
-* Jun 30 2008 (Daniel Stenberg)
-
-- As was pointed out to me by Andreas Schuldei, the MAXHOSTNAMELEN define is
- not posix or anything and thus c-ares failed to build on hurd (and possibly
- elsewhere). The define was also somewhat artificially used in the windows
- port. Now, I instead rewrote the use of gethostbyname to enlarge the host
- name buffer in case of need and totally avoid the use of the MAXHOSTNAMELEN
- define. I thus also removed the defien from the namser.h file where it was
- once added for the windows build.
-
- I also fixed init_by_defaults() function to not leak memory in case if
- error.
-
-* Jun 9 2008 (Yang Tse)
-
-- Make libcares.pc generated file for pkg-config include information relative
- to the libraries needed for the static linking of c-ares.
-
-* May 30 2008 (Yang Tse)
-
-- Brad House fixed a missing header file inclusion in adig sample program.
-
-Version 1.5.2 (May 29, 2008)
-
-* May 13 2008 (Daniel Stenberg)
-
-- Introducing millisecond resolution support for the timeout option. See
- ares_init_options()'s ARES_OPT_TIMEOUTMS.
-
-* May 9 2008 (Yang Tse)
-
-- Use monotonic time source if available, for private function ares__tvnow()
-
-* May 7 2008 (Daniel Stenberg)
-
-- Sebastian made c-ares able to return all PTR-records when doing reverse
- lookups. It is not common practice to have multiple PTR-Records for a single
- IP, but its perfectly legal and some sites have those.
-
-- Doug Goldstein provided a configure patch: updates autoconf 2.13 usage to
- autoconf 2.57 usage (which is the version you have specified as the minimum
- version). It's a minor change but it does clean up some warnings with newer
- autoconf (specifically 2.62).
-
-* May 5 2008 (Yang Tse)
-
-- Improved parsing of resolver configuration files.
-
-* April 4 2008 (Daniel Stenberg)
-
-- Eino Tuominen improved the code when a file is used to seed the randomizer.
-
-- Alexey Simak made adig support NAPTR records
-
-- Alexey Simak fixed the VC dsp file by adding the missing source file
- ares_expand_string.c
-
-* December 11 2007 (Gisle Vanem)
-
-- Added another sample application; acountry.c which converts an
- IPv4-address(es) and/or host-name(s) to country-name and country-code.
- This uses the service of the DNSBL at countries.nerd.dk.
-
-* December 3 2007 (Daniel Stenberg)
-
-- Brad Spencer fixed the configure script to assume that there's no
- /dev/urandom when built cross-compiled as then the script cannot check for
- it.
-
-- Erik Kline cleaned up ares_gethostbyaddr.c:next_lookup() somewhat
-
-Version 1.5.1 (Nov 21, 2007)
-
-* November 21 2007 (Daniel Stenberg)
-
-- Robin Cornelius pointed out that ares_llist.h was missing in the release
- archive for 1.5.0
-
-Version 1.5.0 (Nov 21, 2007)
-
-* October 2 2007 (Daniel Stenberg)
-
-- ares_strerror() segfaulted if the input error number was out of the currently
- supported range.
-
-- Yang Tse: Avoid a segfault when generating a DNS "Transaction ID" in
- internal function init_id_key() under low memory conditions.
-
-* September 28 2007 (Daniel Stenberg)
-
-- Bumped version to 1.5.0 for next release and soname bumped to 2 due to ABI
- and API changes in the progress callback (and possibly more coming up from
- Steinar)
-
-* September 28 2007 (Steinar H. Gunderson)
-
-- Don't skip a server if it's the only one. (Bugfix from the Google tree.)
-
-- Made the query callbacks receive the number of timeouts that happened during
- the execution of a query, and updated documentation accordingly. (Patch from
- the Google tree.)
-
-- Support a few more socket options: ARES_OPT_SOCK_SNDBUF and
- ARES_OPT_SOCK_RCVBUF
-
-- Always register for TCP events even if there are no outstanding queries, as
- the other side could always close the connection, which is a valid event
- which should be responded to.
-
-* September 22 2007 (Daniel Stenberg)
-
-- Steinar H. Gunderson fixed: Correctly clear sockets from the fd_set on in
- several functions (write_tcp_data, read_tcp_data, read_udp_packets) so that
- if it fails and the socket is closed the following code doesn't try to use
- the file descriptor.
-
-- Steinar H. Gunderson modified c-ares to now also do to DNS retries even when
- TCP is used since there are several edge cases where it still makes sense.
-
-- Brad House provided a fix for ares_save_options():
-
- Apparently I overlooked something with the ares_save_options() where it
- would try to do a malloc(0) when no options of that type needed to be saved.
- On most platforms, this was fine because malloc(0) doesn't actually return
- NULL, but on AIX it does, so ares_save_options would return ARES_ENOMEM.
-
-* July 14 2007 (Daniel Stenberg)
-
-- Vlad Dinulescu fixed two outstanding valgrind reports:
-
- 1. In ares_query.c , in find_query_by_id we compare q->qid (which is a short
- int variable) with qid, which is declared as an int variable. Moreover,
- DNS_HEADER_SET_QID is used to set the value of qid, but DNS_HEADER_SET_QID
- sets only the first two bytes of qid. I think that qid should be declared as
- "unsigned short" in this function.
-
- 2. The same problem occurs in ares_process.c, process_answer() . query->qid
- (an unsigned short integer variable) is compared with id, which is an
- integer variable. Moreover, id is initialized from DNS_HEADER_QID which sets
- only the first two bytes of id. I think that the id variable should be
- declared as "unsigned short" in this function.
-
- Even after declaring these variables as "unsigned short", the valgrind
- errors are still there. Which brings us to the third problem.
-
- 3. The third problem is that Valgrind assumes that query->qid is not
- initialised correctly. And it does that because query->qid is set from
- DNS_HEADER_QID(qbuf); Valgrind says that qbuf has unitialised bytes. And
- qbuf has uninitialised bytes because of channel->next_id . And next_id is
- set by ares_init.c:ares__generate_new_id() . I found that putting short r=0
- in this function (instead of short r) makes all Valgrind warnings go away.
- I have studied ares__rc4() too, and this is the offending line:
-
- buffer_ptr[counter] ^= state[xorIndex]; (ares_query.c:62)
-
- This is what triggers Valgrind.. buffer_ptr is unitialised in this function,
- and by applying ^= on it, it remains unitialised.
-
-Version 1.4.0 (June 8, 2007)
-
-* June 4 2007 (Daniel Stenberg)
-
-- James Bursa reported a major memory problem when resolving multi-IP names
- and I found and fixed the problem. It was added by Ashish Sharma's patch
- two days ago.
-
- When I then tried to verify multiple entries in /etc/hosts after my fix, I
- got another segfault and decided this code was not ripe for inclusion and I
- reverted the patch.
-
-* June 2 2007
-
-- Brad Spencer found and fixed three flaws in the code, found with the new
- gcc 4.2.0 warning: -Waddress
-
-- Brad House fixed VS2005 compiler warnings due to time_t being 64bit.
- He also made recent Microsoft compilers use _strdup() instead of strdup().
-
-- Brad House's man pages for ares_save_options() and ares_destroy_options()
- were added.
-
-- Ashish Sharma provided a patch for supporting multiple entries in the
- /etc/hosts file. Patch edited for coding style and functionality by me
- (Daniel).
-
-* May 30 2007
-
-- Shmulik Regev brought cryptographically secure transaction IDs:
-
- The c-ares library implementation uses a DNS "Transaction ID" field that is
- seeded with a pseudo random number (based on gettimeofday) which is
- incremented (++) between consecutive calls and is therefore rather
- predictable. In general, predictability of DNS Transaction ID is a well
- known security problem (e.g.
- http://bak.spc.org/dms/archive/dns_id_attack.txt) and makes a c-ares based
- implementation vulnerable to DNS poisoning. Credit goes to Amit Klein
- (Trusteer) for identifying this problem.
-
- The patch I wrote changes the implementation to use a more secure way of
- generating unique IDs. It starts by obtaining a key with reasonable entropy
- which is used with an RC4 stream to generate the cryptographically secure
- transaction IDs.
-
- Note that the key generation code (in ares_init:randomize_key) has two
- versions, the Windows specific one uses a cryptographically safe function
- provided (but undocumented :) by the operating system (described at
- http://blogs.msdn.com/michael_howard/archive/2005/01/14/353379.aspx). The
- default implementation is a bit naive and uses the standard 'rand'
- function. Surely a better way to generate random keys exists for other
- platforms.
-
- The patch can be tested by using the adig utility and using the '-s' option.
-
-- Brad House added ares_save_options() and ares_destroy_options() that can be
- used to keep options for later re-usal when ares_init_options() is used.
-
- Problem: Calling ares_init() for each lookup can be unnecessarily resource
- intensive. On windows, it must LoadLibrary() or search the registry
- on each call to ares_init(). On unix, it must read and parse
- multiple files to obtain the necessary configuration information. In
- a single-threaded environment, it would make sense to only
- ares_init() once, but in a heavily multi-threaded environment, it is
- undesirable to ares_init() and ares_destroy() for each thread created
- and track that.
-
- Solution: Create ares_save_options() and ares_destroy_options() functions to
- retrieve and free options obtained from an initialized channel. The
- options populated can be used to pass back into ares_init_options(),
- it should populate all needed fields and not retrieve any information
- from the system. Probably wise to destroy the cache every minute or
- so to prevent the data from becoming stale.
-
-- Daniel S added ares_process_fd() to allow applications to ask for processing
- on specific sockets and thus avoiding select() and associated
- functions/macros. This function will be used by upcoming libcurl releases
- for this very reason. It also made me export the ares_socket_t type in the
- public ares.h header file, since ares_process_fd() uses that type for two of
- the arguments.
-
-* May 25 2007
-
-- Ravi Pratap fixed a flaw in the init_by_resolv_conf() function for windows
- that could cause it to return a bad return code.
-
-* April 16 2007
-
-- Yang Tse: Provide ares_getopt() command-line parser function as a source
- code helper function, not belonging to the actual c-ares library.
-
-* February 19 2007
-
-- Vlad Dinulescu added ares_parse_ns_reply().
-
-* February 13 2007
-
-- Yang Tse: Fix failure to get the search sequence of /etc/hosts and
- DNS from /etc/nsswitch.conf, /etc/host.conf or /etc/svc.conf when
- /etc/resolv.conf did not exist or was unable to read it.
-
-* November 22 2006
-
-- Install ares_dns.h too
-
-- Michael Wallner fixed this problem: When I set domains in the options
- struct, and there are domain/search entries in /etc/resolv.conf, the domains
- of the options struct will be overridden.
-
-* November 6 2006
-
-- Yang Tse removed a couple of potential zero size memory allocations.
-
-- Andreas Rieke fixed the line endings in the areslib.dsp file that I (Daniel)
- broke in the 1.3.2 release. We should switch to a system where that file is
- auto-generated. We could rip some code for that from curl...
-
-Version 1.3.2 (November 3, 2006)
-
-* October 12 2006
-
-- Prevent ares_getsock() to overflow if more than 16 sockets are used.
-
-* September 11 2006
-
-- Guilherme Balena Versiani: I noted a strange BUG in Win32 port
- (ares_init.c/get_iphlpapi_dns_info() function): when I disable the network
- by hand or disconnect the network cable in Windows 2000 or Windows XP, my
- application gets 127.0.0.1 as the only name server. The problem comes from
- 'GetNetworkParams' function, that returns the empty string "" as the only
- name server in that case. Moreover, the Windows implementation of
- inet_addr() returns INADDR_LOOPBACK instead of INADDR_NONE.
-
-* August 29 2006
-
-- Brad Spencer did
-
- o made ares_version.h use extern "C" for c++ compilers
- o fixed compiler warnings in ares_getnameinfo.c
- o fixed a buffer position init for TCP reads
-
-* August 3 2006
-
-- Ravi Pratap fixed ares_getsock() to actually return the proper bitmap and
- not always zero!
-
-Version 1.3.1 (June 24, 2006)
-
-* July 23, 2006
-
-- Gisle Vanem added getopt() to the ahost program. Currently accepts
- only [-t {a|aaaa}] to specify address family in ares_gethostbyname().
-
-* June 19, 2006
-
-- (wahern) Removed "big endian" DNS section and RR data integer parser
- macros from ares_dns.h, which break c-ares on my Sparc64. Bit-wise
- operations in C operate on logical values. And in any event the octets are
- already in big-endian (aka network) byte order so they're being reversed
- (thus the source of the breakage).
-
-* June 18, 2006
-
-- William Ahern handles EAGAIN/EWOULDBLOCK errors in most of the I/O calls
- from area_process.c.
-
- TODO: Handle one last EAGAIN for a UDP socket send(2) in
- ares__send_query().
-
-* May 10, 2006
-
-- Bram Matthys brought my attention to a libtool peculiarity where detecting
- things such as C++ compiler actually is a bad thing and since we don't need
- that detection I added a work-around, much inspired by a previous patch by
- Paolo Bonzini. This also shortens the configure script quite a lot.
-
-* May 3, 2006
-
-- Nick Mathewson added the ARES_OPT_SOCK_STATE_CB option that when set makes
- c-ares call a callback on socket state changes. A better way than the
- ares_getsock() to get full control over the socket state.
-
-* January 9, 2006
-
-- Alexander Lazic improved the getservbyport_r() configure check.
-
-* January 6, 2006
-
-- Alexander Lazic pointed out that the buildconf should use the ACLOCAL_FLAGS
- variable for easier controlling what it does and how it runs.
-
-* January 5, 2006
-
-- James Bursa fixed c-ares to find the hosts file on RISC OS, and made it
- build with newer gcc versions that no longer defines "riscos".
-
-* December 22
-
-- Daniel Stenberg added ares_getsock() that extracts the set of sockets to
- wait for action on. Similar to ares_fds() but not restricted to using
- select() for the waiting.
-
-* November 25
-
-- Yang Tse fixed some send() / recv() compiler warnings
-
-* September 18
-
-- Added constants that will be used by ares_getaddrinfo
-
-- Made ares_getnameinfo use the reentrant getservbyport (getservbyport_r) if it
- is available to ensure it works properly in a threaded environment.
-
-* September 10
-
-- configure fix for detecting a member in the sockaddr_in6 struct which failed
- on ipv6-enabled HP-UX 11.00
-
-Version 1.3.0 (August 29, 2005)
-
-* August 21
-
-- Alfredo Tupone provided a fix for the Windows code in get_iphlpapi_dns_info()
- when getting the DNS server etc.
-
-* June 19
-
-- Added some checks for the addrinfo structure.
-
-* June 2
-
-- William Ahern:
-
- Make UDP sockets non-blocking. I've confirmed that at least on Linux 2.4 a
- read event can come back from poll() on a valid SOCK_DGRAM socket but
- recv(2) will still block. This patch doesn't ignore EAGAIN in
- read_udp_packets(), though maybe it should. (This patch was edited by Daniel
- Stenberg and a new configure test was added (imported from curl's configure)
- to properly detect what non-blocking socket approach to use.)
-
- I'm not quite sure how this was happening, but I've been seeing PTR queries
- which seem to return empty responses. At least, they were empty when calling
- ares_expand_name() on the record. Here's a patch which guarantees to
- NUL-terminate the expanded name. The old behavior failed to NUL-terminate if
- len was 0, and this was causing strlen() to run past the end of the buffer
- after calling ares_expand_name() and getting ARES_SUCCESS as the return
- value. If q is not greater than *s then it's equal and *s is always
- allocated with at least one byte.
-
-* May 16
-
-- Added ares_getnameinfo which mimics the getnameinfo API (another feature
- that could use testing).
-
-* May 14
-
-- Added an inet_ntop function from BIND for systems that do not have it.
-
-* April 9
-
-- Made sortlist support IPv6 (this can probably use some testing).
-
-- Made sortlist support CIDR matching for IPv4.
-
-* April 8
-
-- Added preliminary IPv6 support to ares_gethostbyname. Currently, sortlist
- does not work with IPv6. Also provided an implementation of bitncmp from
- BIND for systems that do not supply this function. This will be used to add
- IPv6 support to sortlist.
-
-- Made ares_gethostbyaddr support IPv6 by specifying AF_INET6 as the family.
- The function can lookup IPv6 addresses both from files (/etc/hosts) and
- DNS lookups.
-
-* April 7
-
-- Tupone Alfredo fixed includes of arpa/nameser_compat.h to build fine on Mac
- OS X.
-
-* April 5
-
-- Dominick Meglio: Provided implementations of inet_net_pton and inet_pton
- from BIND for systems that do not include these functions.
-
-* March 11, 2005
-
-- Dominick Meglio added ares_parse_aaaa_reply.c and did various
- adjustments. The first little steps towards IPv6 support!
-
-* November 7
-
-- Fixed the VC project and makefile to use ares_cancel and ares_version
-
-* October 24
-
-- The released ares_version.h from 1.2.1 says 1.2.0 due to a maketgz flaw.
- This is now fixed.
-
-Version 1.2.1 (October 20, 2004)
-
-* September 29
-
-- Henrik Stoerner fix: got a report that Tru64 Unix (the unix from Digital
- when they made Alpha's) uses /etc/svc.conf for the purpose fixed below for
- other OSes. He made c-ares check for and understand it if present.
-
-- Now c-ares will use local host name lookup _before_ DNS resolving by default
- if nothing else is told.
-
-* September 26
-
-- Henrik Stoerner: found out that c-ares does not look at the /etc/host.conf
- file to determine the sequence in which to search /etc/hosts and DNS. So on
- systems where this order is defined by /etc/host.conf instead of a "lookup"
- entry in /etc/resolv.conf, c-ares will always default to looking in DNS
- first, and /etc/hosts second.
-
- c-ares now looks at
-
- 1) resolv.conf (for the "lookup" line);
- 2) nsswitch.fon (for the "hosts:" line);
- 3) host.conf (for the "order" line).
-
- First match wins.
-
-- Dominick Meglio patched: C-ares on Windows assumed that the HOSTS file is
- located in a static location. It assumed
- C:\Windows\System32\Drivers\Etc. This is a poor assumption to make. In fact,
- the location of the HOSTS file can be changed via a registry setting.
-
- There is a key called DatabasePath which specifies the path to the HOSTS
- file:
- http://www.microsoft.com/technet/itsolutions/network/deploy/depovg/tcpip2k.mspx
-
- The patch will make c-ares correctly consult the registry for the location
- of this file.
-
-* August 29
-
-- Gisle Vanem fixed the MSVC build files.
-
-* August 20
-
-- Gisle Vanem made c-ares build and work with his Watt-32 TCP/IP stack.
-
-* August 13
-
-- Harshal Pradhan made a minor syntax change in ares_init.c to make it build
- fine with MSVC 7.1
-
-* July 24
-
-- Made the lib get built static only if --enable-debug is used.
-
-- Gisle Vanem fixed:
-
- Basically in loops like handle_errors(), 'query->next' was assigned a local
- variable and then query was referenced after the memory was freed by
- next_server(). I've changed that so next_server() and end_query() returns
- the next query. So callers should use this ret-value.
-
- The next problem was that 'server->tcp_buffer_pos' had a random value at
- entry to 1st recv() (luckily causing Winsock to return ENOBUFS).
-
- I've also added a ares_writev() for Windows to streamline the code a bit
- more.
-
-* July 20
-- Fixed a few variable return types for some system calls. Made configure
- check for ssize_t to make it possible to use that when receiving the send()
- error code. This is necessary to prevent compiler warnings on some systems.
-
-- Made configure create config.h, and all source files now include setup.h that
- might include the proper config.h (or a handicrafted alternative).
-
-- Switched to 'ares_socket_t' type for sockets in ares, since Windows don't
- use 'int' for that.
-
-- automake-ified and libool-ified c-ares. Now it builds libcares as a shared
- lib on most platforms if wanted. (This bloated the size of the release
- archive with another 200K!)
-
-- Makefile.am now uses Makefile.inc for the c sources, h headers and man
- pages, to make it easier for other makefiles to use the exact same set of
- files.
-
-- Adjusted 'maketgz' to use the new automake magic when building distribution
- archives.
-
-- Anyone desires HTML and/or PDF versions of the man pages in the release
- archives?
-
-* July 3
-- Günter Knauf made c-ares build and run on Novell Netware.
-
-* July 1
-- Gisle Vanem provided Makefile.dj to build with djgpp, added a few more djgpp
- fixes and made ares not use 'errno' to provide further info on Windows.
-
-* June 30
-- Gisle Vanem made it build with djgpp and run fine with the Watt-32 stack.
-
-* June 10
-- Gisle Vanem's init patch for Windows:
-
- The init_by_resolv_conf() function fetches the DNS-server(s)
- from a series of registry branches.
-
- This can be wrong in the case where DHCP has assigned nameservers, but the
- user has overridden these servers with other prefered settings. Then it's
- wrong to use the DHCPNAMESERVER setting in registry.
-
- In the case of no global DHCP-assigned or fixed servers, but DNS server(s)
- per adapter, one has to query the adapter branches. But how can c-ares know
- which adapter is valid for use? AFAICS it can't. There could be one adapter
- that is down (e.g. a VPN adapter).
-
- So it's better to leave this to the IP Helper API (iphlapi) available in
- Win-98/2000 and later. My patch falls-back to the old way if not available.
-
-* June 8
-- James Bursa fixed an init issue for RISC OS.
-
-* May 11
-- Nico Stappenbelt reported that when processing domain and search lines in
- the resolv.conf file, the first entry encountered is processed and used as
- the search list. According to the manual pages for both Linux, Solaris and
- Tru64, the last entry of either a domain or a search field is used.
-
- This is now adjusted in the code
-
-Version 1.2.0 (April 13, 2004)
-
-* April 2, 2004
-- Updated various man pages to look nicer when converted to HTML on the web
- site.
-
-* April 1, 2004
-- Dirk Manske provided a new function that is now named ares_cancel(). It is
- used to cancel/cleanup a resolve/request made using ares functions on the
- given ares channel. It does not destroy/kill the ares channel itself.
-
-- Dominick Meglio cleaned up the formatting in several man pages.
-
-* March 30, 2004
-- Dominick Meglio's new ares_expand_string. A helper function when decoding
- incoming DNS packages.
-
-- Daniel Stenberg modified the Makefile.in to use a for loop for the man page
- installation to improve overview and make it easier to add man pages.
-
-Version 1.1.0 (March 11, 2004)
-
-* March 9, 2004
-- Gisle Vanem improved build on Windows.
-
-* February 25, 2004
-- Dan Fandrich found a flaw in the Feb 22 fix.
-
-- Added better configure --enable-debug logic (taken from the curl configure
- script). Added acinclude.m4 to the tarball.
-
-* February 23, 2004
-- Removed ares_free_errmem(), the function, the file and the man page. It was
- not used and it did nothing.
-
-- Fixed a lot of code that wasn't "64bit clean" and thus caused a lot of
- compiler warnings on picky compilers.
-
-* February 22, 2004
-- Dominick Meglio made ares init support multiple name servers in the
- NameServer key on Windows.
-
-* February 16, 2004
-- Modified ares_private.h to include libcurl's memory debug header if
- CURLDEBUG is set. This makes all the ares-functions supervised properly by
- the curl test suite. This also forced me to add inclusion of the
- ares_private.h header in a few more files that are using some kind of
- memory-related resources.
-
-- Made the makefile only build ahost and adig if 'make demos' is used.
-
-* February 10, 2004
-- Dirk Manske made ares_version.h installed with 'make install'
-
-* February 4, 2004
-- ares_free_errmem() is subject for removal, it is simply present for future
- purposes, and since we removed the extra parameter in strerror() it won't
- be used by c-ares!
-- configure --enable-debug now enables picky compiler options if gcc is used
-- fixed several compiler warnings --enable-debug showed and Joerg Mueller-Tolk
- reported
-
-Version 1.0.0 (February 3, 2004)
-
-* February 3, 2004
-- now we produce the libcares.a library instead of the previous libares.a
- since we are no longer compatible
-
-* February 2, 2004
-
-- ares_strerror() has one argument less. This is the first official
- modification of the existing provided ares API.
-
-* January 29, 2004
-
-- Dirk Manske fixed how the socket is set non-blocking.
-
-* January 4, 2004
-
-- Dominick Meglio made the private gettimeofday() become ares_gettimeofday()
- instead in order to not pollute the name space and risk colliding with
- other libraries' versions of this function.
-
-* October 24, 2003. Daniel Stenberg
-
- Added ares_version().
-
-Version 1.0-pre1 (8 October 2003)
-
-- James Bursa made it run on RISC OS
-
-- Dominick Meglio made it run fine on NT4
-
-- Duncan Wilcox made it work fine on Mac OS X
-
-- Daniel Stenberg adjusted the windows port
-
-- liren at vivisimo.com made the initial windows port
-
-* Imported the sources from ares 1.1.1
diff --git a/ares/CVS-INFO b/ares/CVS-INFO
deleted file mode 100644
index 7d48d08e4..000000000
--- a/ares/CVS-INFO
+++ /dev/null
@@ -1,7 +0,0 @@
-
-CVS-INFO
-
-This file is only present in the CVS - never in release archives. It is used
-as a sentinel file in buildconf.bat in order to differentiate a CVS checkout
-from release and daily snapshot archives.
-
diff --git a/ares/Makefile.am b/ares/Makefile.am
deleted file mode 100644
index 3ed85350c..000000000
--- a/ares/Makefile.am
+++ /dev/null
@@ -1,171 +0,0 @@
-AUTOMAKE_OPTIONS = foreign nostdinc
-
-ACLOCAL_AMFLAGS = -I m4
-
-# Specify our include paths here, and do it relative to $(top_srcdir) and
-# $(top_builddir), to ensure that these paths which belong to the library
-# being currently built and tested are searched before the library which
-# might possibly already be installed in the system.
-#
-# When using the low-level hard-hacking memory leak tracking code from
-# libcurl the generated curl/curlbuild.h file must also be reachable.
-# Using the libcurl lowlevel code from within c-ares library is ugly and
-# only works when c-ares is built and linked with a similarly debug-build
-# libcurl, but we do this anyway for convenience.
-#
-# $(top_builddir)/../include/curl for generated curlbuild.h included from curl.h
-# $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file
-# $(top_srcdir)/../include is for libcurl's external include files
-# $(top_builddir)/../lib is for libcurl's generated lib/curl_config.h file
-# $(top_srcdir)/../lib is for libcurl's lib/setup.h and other "private" files
-# $(top_builddir) is for c-ares's generated ares_config.h file
-# $(top_srcdir) is for c-ares's ares_setup.h and other "c-ares-private" files
-
-if CURLDEBUG
-INCLUDES = -I$(top_builddir)/../include/curl \
- -I$(top_builddir)/../include \
- -I$(top_srcdir)/../include \
- -I$(top_builddir)/../lib \
- -I$(top_srcdir)/../lib \
- -I$(top_builddir) \
- -I$(top_srcdir)
-else
-INCLUDES = -I$(top_builddir) \
- -I$(top_srcdir)
-endif
-
-lib_LTLIBRARIES = libcares.la
-
-man_MANS = $(MANPAGES)
-
-MSVCFILES = vc/vc6aws.dsw vc/acountry/vc6acountry.dsp vc/adig/vc6adig.dsp \
- vc/ahost/vc6ahost.dsp vc/cares/vc6cares.dsp vc/cares/vc6cares.dsw
-
-if CURLDEBUG
-PROGS =
-else
-PROGS = ahost adig acountry
-endif
-
-noinst_PROGRAMS =$(PROGS)
-
-# adig and ahost are just sample programs and thus not mentioned with the
-# regular sources and headers
-EXTRA_DIST = AUTHORS CHANGES README.cares Makefile.inc Makefile.dj \
- Makefile.m32 Makefile.netware Makefile.msvc $(man_MANS) $(MSVCFILES) \
- config-win32.h RELEASE-NOTES libcares.pc.in buildconf get_ver.awk maketgz \
- TODO ares_build.h.in $(PDFPAGES) cares.rc README.msvc
-
-CLEANFILES = $(PDFPAGES) $(HTMLPAGES)
-
-DISTCLEANFILES = ares_build.h
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libcares.pc
-
-VER=-version-info 2:0:0
-# This flag accepts an argument of the form current[:revision[:age]]. So,
-# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
-# 1.
-#
-# If either revision or age are omitted, they default to 0. Also note that age
-# must be less than or equal to the current interface number.
-#
-# Here are a set of rules to help you update your library version information:
-#
-# 1.Start with version information of 0:0:0 for each libtool library.
-#
-# 2.Update the version information only immediately before a public release of
-# your software. More frequent updates are unnecessary, and only guarantee
-# that the current interface number gets larger faster.
-#
-# 3.If the library source code has changed at all since the last update, then
-# increment revision (c:r+1:a)
-#
-# 4.If any interfaces have been added, removed, or changed since the last
-# update, increment current, and set revision to 0. (c+1:r=0:a)
-#
-# 5.If any interfaces have been added since the last public release, then
-# increment age. (c:r:a+1)
-#
-# 6.If any interfaces have been removed since the last public release, then
-# set age to 0. (c:r:a=0)
-#
-
-if NO_UNDEFINED
-# The -no-undefined flag is crucial for this to build fine on some platforms
-UNDEF = -no-undefined
-endif
-
-libcares_la_LDFLAGS = $(UNDEF) $(VER)
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-libcares_la_SOURCES = $(CSOURCES) $(HHEADERS)
-
-# where to install the c-ares headers
-libcares_ladir = $(includedir)
-# what headers to install on 'make install':
-libcares_la_HEADERS = ares.h ares_version.h ares_dns.h \
- ares_build.h ares_rules.h
-
-ahost_SOURCES = ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
-ahost_LDADD = $(top_builddir)/libcares.la
-ahost_CFLAGS = $(AM_CFLAGS)
-
-adig_SOURCES = adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
-adig_LDADD = $(top_builddir)/libcares.la
-adig_CFLAGS = $(AM_CFLAGS)
-
-acountry_SOURCES = acountry.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
-acountry_LDADD = $(top_builddir)/libcares.la
-acountry_CFLAGS = $(AM_CFLAGS)
-
-SOURCEDMANDIR = man3
-SOURCEDMANPAGES = ares_init.3
-
-clean-local: clean-sourced-manpages
-
-clean-sourced-manpages:
- @srcdmandir='$(SOURCEDMANDIR)'; \
- echo "rm -rf $(top_builddir)/$$srcdmandir"; \
- rm -rf $(top_builddir)/$$srcdmandir
-
-sourced-manpages: clean-sourced-manpages
- @srcdmandir='$(SOURCEDMANDIR)'; \
- srcdmanfiles='$(SOURCEDMANPAGES)'; \
- mkdir $(top_builddir)/$$srcdmandir; \
- for file in $$srcdmanfiles; do \
- if test -f $(top_srcdir)/$$file; then \
- echo "cp $(top_srcdir)/$$file $(top_builddir)/$$srcdmandir/$$file"; \
- cp $(top_srcdir)/$$file $(top_builddir)/$$srcdmandir/$$file; \
- fi; \
- done
-
-MAN2HTML = roffit --mandir=. < $< >$@
-
-SUFFIXES = .3 .html
-
-html: sourced-manpages $(HTMLPAGES)
-
-.3.html:
- $(MAN2HTML)
-
-pdf: sourced-manpages $(PDFPAGES)
-
-.3.pdf:
- @(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
- groff -Tps -man $< >$$foo.ps; \
- ps2pdf $$foo.ps $@; \
- rm $$foo.ps; \
- echo "converted $< to $@")
-
-# Make files named *.dist replace the file without .dist extension
-dist-hook:
- find $(distdir) -name "*.dist" -exec rm {} \;
- (distit=`find $(srcdir) -name "*.dist"`; \
- for file in $$distit; do \
- strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
- cp $$file $(distdir)$$strip; \
- done)
diff --git a/ares/Makefile.dj b/ares/Makefile.dj
deleted file mode 100644
index f6b9d8f32..000000000
--- a/ares/Makefile.dj
+++ /dev/null
@@ -1,86 +0,0 @@
-#
-# c-ares Makefile for djgpp/gcc/Watt-32.
-# By Gisle Vanem <gvanem@broadpark.no> 2004.
-#
-# $Id$
-
-
-TOPDIR = ..
-
-DEPEND_PREREQ = ares_config.h
-
-include ../packages/DOS/common.dj
-include Makefile.inc
-
-CFLAGS += -DWATT32 -Dselect=select_s
-
-LDFLAGS = -s
-
-ifeq ($(USE_CURLDEBUG),1)
- EX_LIBS = ../lib/libcurl.a
- OBJ_HACK = $(OBJECTS)
-else
- OBJ_HACK = libcares.a
-endif
-
-ifeq ($(USE_SSL),1)
- EX_LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
-endif
-
-ifeq ($(USE_ZLIB),1)
- EX_LIBS += $(ZLIB_ROOT)/libz.a
-endif
-
-ifeq ($(USE_IDNA),1)
- EX_LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
-endif
-
-EX_LIBS += $(WATT32_ROOT)/lib/libwatt.a
-
-OBJECTS = $(addprefix $(OBJ_DIR)/, $(CSOURCES:.c=.o))
-
-all: $(OBJ_DIR) ares_config.h libcares.a ahost.exe adig.exe acountry.exe
- @echo Welcome to c-ares.
-
-libcares.a: $(OBJECTS)
- ar rs $@ $?
-
-ares_config.h: config.dos
- $(COPY) $^ $@
-
-ahost.exe: ahost.c $(OBJ_DIR)/ares_getopt.o $(OBJ_HACK)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
-
-adig.exe: adig.c $(OBJ_DIR)/ares_getopt.o $(OBJ_HACK)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
-
-acountry.exe: acountry.c $(OBJ_DIR)/ares_getopt.o $(OBJ_HACK)
- $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^ $(EX_LIBS)
-
-# clean generated files
-#
-genclean:
- - $(DELETE) ares_config.h
-
-# clean object files and subdir
-#
-objclean: genclean
- - $(DELETE) $(OBJ_DIR)$(DS)*.o
- - $(RMDIR) $(OBJ_DIR)
-
-# clean without removing built library and programs
-#
-clean: objclean
- - $(DELETE) depend.dj
-
-# clean everything
-#
-realclean vclean: clean
- - $(DELETE) libcares.a
- - $(DELETE) acountry.exe
- - $(DELETE) adig.exe
- - $(DELETE) ahost.exe
- - $(DELETE) libcares.a
-
--include depend.dj
-
diff --git a/ares/Makefile.inc b/ares/Makefile.inc
deleted file mode 100644
index cef828a7c..000000000
--- a/ares/Makefile.inc
+++ /dev/null
@@ -1,188 +0,0 @@
-
-CSOURCES = ares__close_sockets.c \
- ares__get_hostent.c \
- ares__read_line.c \
- ares__timeval.c \
- ares_cancel.c \
- ares_data.c \
- ares_destroy.c \
- ares_expand_name.c \
- ares_expand_string.c \
- ares_fds.c \
- ares_free_hostent.c \
- ares_free_string.c \
- ares_gethostbyaddr.c \
- ares_gethostbyname.c \
- ares_getnameinfo.c \
- ares_getsock.c \
- ares_init.c \
- ares_library_init.c \
- ares_llist.c \
- ares_mkquery.c \
- ares_nowarn.c \
- ares_options.c \
- ares_parse_a_reply.c \
- ares_parse_aaaa_reply.c \
- ares_parse_ns_reply.c \
- ares_parse_ptr_reply.c \
- ares_parse_srv_reply.c \
- ares_parse_txt_reply.c \
- ares_process.c \
- ares_query.c \
- ares_search.c \
- ares_send.c \
- ares_strcasecmp.c \
- ares_strdup.c \
- ares_strerror.c \
- ares_timeout.c \
- ares_version.c \
- ares_writev.c \
- bitncmp.c \
- inet_net_pton.c \
- inet_ntop.c \
- windows_port.c
-
-HHEADERS = ares.h \
- ares_build.h \
- ares_data.h \
- ares_dns.h \
- ares_ipv6.h \
- ares_library_init.h \
- ares_llist.h \
- ares_nowarn.h \
- ares_private.h \
- ares_rules.h \
- ares_strcasecmp.h \
- ares_strdup.h \
- ares_version.h \
- ares_writev.h \
- bitncmp.h \
- inet_net_pton.h \
- inet_ntop.h \
- nameser.h \
- ares_setup.h \
- setup_once.h
-
-MANPAGES = ares_cancel.3 \
- ares_destroy.3 \
- ares_destroy_options.3 \
- ares_dup.3 \
- ares_expand_name.3 \
- ares_expand_string.3 \
- ares_fds.3 \
- ares_free_data.3 \
- ares_free_hostent.3 \
- ares_free_string.3 \
- ares_get_servers.3 \
- ares_gethostbyaddr.3 \
- ares_gethostbyname.3 \
- ares_gethostbyname_file.3 \
- ares_getnameinfo.3 \
- ares_getsock.3 \
- ares_init.3 \
- ares_init_options.3 \
- ares_library_cleanup.3 \
- ares_library_init.3 \
- ares_mkquery.3 \
- ares_parse_a_reply.3 \
- ares_parse_aaaa_reply.3 \
- ares_parse_ns_reply.3 \
- ares_parse_ptr_reply.3 \
- ares_parse_srv_reply.3 \
- ares_parse_txt_reply.3 \
- ares_process.3 \
- ares_query.3 \
- ares_save_options.3 \
- ares_search.3 \
- ares_send.3 \
- ares_set_servers.3 \
- ares_set_socket_callback.3 \
- ares_strerror.3 \
- ares_timeout.3 \
- ares_version.3
-
-HTMLPAGES = ares_cancel.html \
- ares_destroy.html \
- ares_destroy_options.html \
- ares_dup.html \
- ares_expand_name.html \
- ares_expand_string.html \
- ares_fds.html \
- ares_free_data.html \
- ares_free_hostent.html \
- ares_free_string.html \
- ares_get_servers.html \
- ares_gethostbyaddr.html \
- ares_gethostbyname.html \
- ares_gethostbyname_file.html \
- ares_getnameinfo.html \
- ares_getsock.html \
- ares_init.html \
- ares_init_options.html \
- ares_library_cleanup.html \
- ares_library_init.html \
- ares_mkquery.html \
- ares_parse_a_reply.html \
- ares_parse_aaaa_reply.html \
- ares_parse_ns_reply.html \
- ares_parse_ptr_reply.html \
- ares_parse_srv_reply.html \
- ares_parse_txt_reply.html \
- ares_process.html \
- ares_query.html \
- ares_save_options.html \
- ares_search.html \
- ares_send.html \
- ares_set_servers.html \
- ares_set_socket_callback.html \
- ares_strerror.html \
- ares_timeout.html \
- ares_version.html
-
-PDFPAGES = ares_cancel.pdf \
- ares_destroy.pdf \
- ares_destroy_options.pdf \
- ares_dup.pdf \
- ares_expand_name.pdf \
- ares_expand_string.pdf \
- ares_fds.pdf \
- ares_free_data.pdf \
- ares_free_hostent.pdf \
- ares_free_string.pdf \
- ares_get_servers.pdf \
- ares_gethostbyaddr.pdf \
- ares_gethostbyname.pdf \
- ares_gethostbyname_file.pdf \
- ares_getnameinfo.pdf \
- ares_getsock.pdf \
- ares_init.pdf \
- ares_init_options.pdf \
- ares_library_cleanup.pdf \
- ares_library_init.pdf \
- ares_mkquery.pdf \
- ares_parse_a_reply.pdf \
- ares_parse_aaaa_reply.pdf \
- ares_parse_ns_reply.pdf \
- ares_parse_ptr_reply.pdf \
- ares_parse_srv_reply.pdf \
- ares_parse_txt_reply.pdf \
- ares_process.pdf \
- ares_query.pdf \
- ares_save_options.pdf \
- ares_search.pdf \
- ares_send.pdf \
- ares_set_servers.pdf \
- ares_set_socket_callback.pdf \
- ares_strerror.pdf \
- ares_timeout.pdf \
- ares_version.pdf
-
-SAMPLESOURCES = ares_getopt.c \
- ares_strcasecmp.c \
- inet_net_pton.c \
- inet_ntop.c
-
-SAMPLEHEADERS = ares_getopt.h \
- ares_strcasecmp.h \
- inet_net_pton.h \
- inet_ntop.h
diff --git a/ares/Makefile.m32 b/ares/Makefile.m32
deleted file mode 100644
index 120aad3c0..000000000
--- a/ares/Makefile.m32
+++ /dev/null
@@ -1,69 +0,0 @@
-#############################################################
-# $Id$
-#
-## Makefile for building libcares.a with MingW32 (GCC-3.2)
-## Use: make -f Makefile.m32 [demos]
-##
-## Quick hack by Guenter; comments to: /dev/nul
-#
-########################################################
-## Nothing more to do below this line!
-
-LIB = libcares.a
-
-CC = gcc
-LD = gcc
-RANLIB = ranlib
-#RM = rm -f
-
-CFLAGS = -O2 -Wall
-LDFLAGS = -s
-LIBS = -lwsock32
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-OBJLIB := $(patsubst %.c,%.o,$(strip $(CSOURCES)))
-
-
-$(LIB): $(OBJLIB)
- ar cru $@ $^
- $(RANLIB) $@
-
-all: $(LIB) demos
-
-demos: adig.exe ahost.exe acountry.exe
-
-tags:
- etags *.[ch]
-
-%.exe: %.o ares_getopt.o $(LIB)
- $(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
-
-$(OBJLIB): ares.h ares_dns.h ares_private.h ares_build.h ares_rules.h
-
-.c.o:
- $(CC) $(CFLAGS) -c $<
-
-check:
-
-install:
- ${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
- ${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}
- ${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man3
- ${INSTALL} -m 644 $(LIB) ${DESTDIR}${libdir}
- ${RANLIB} ${DESTDIR}${libdir}/$(LIB)
- chmod u-w ${DESTDIR}${libdir}/$(LIB)
- ${INSTALL} -m 444 ${srcdir}/ares.h ${DESTDIR}${includedir}
- ${INSTALL} -m 444 ${srcdir}/ares_build.h ${DESTDIR}${includedir}
- ${INSTALL} -m 444 ${srcdir}/ares_rules.h ${DESTDIR}${includedir}
- (for man in $(MANPAGES); do \
- ${INSTALL} -m 444 ${srcdir}/$${man} ${DESTDIR}${mandir}/man3; \
- done)
-
-clean:
- $(RM) ares_getopt.o $(OBJLIB) $(LIB) adig.exe ahost.exe acountry.exe
-
-distclean: clean
- $(RM) config.cache config.log config.status Makefile
-
diff --git a/ares/Makefile.msvc b/ares/Makefile.msvc
deleted file mode 100644
index fe3c11852..000000000
--- a/ares/Makefile.msvc
+++ /dev/null
@@ -1,475 +0,0 @@
-# $Id$
-
-# Copyright (C) 2009-2010 by Daniel Stenberg
-#
-# Permission to use, copy, modify, and distribute this
-# software and its documentation for any purpose and without
-# fee is hereby granted, provided that the above copyright
-# notice appear in all copies and that both that copyright
-# notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in
-# advertising or publicity pertaining to distribution of the
-# software without specific, written prior permission.
-# M.I.T. makes no representations about the suitability of
-# this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-
-# ------------------------------------------------------------------------------
-#
-# Makefile for building c-ares libraries and sample programs with MSVC.
-#
-# Usage: nmake /f makefile.msvc CFG=<config> <target>
-#
-# <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug }
-# <target> must be one of: [ ALL | c-ares | acountry | adig | ahost | clean }
-#
-# If a <target> other than ALL or clean is given, <config> becomes mandatory.
-#
-# If neither <config> nor <target> are specified this results in
-# all targets being built for all <config> c-ares library types.
-#
-# This makefile must be processed from the subdir where it is located.
-#
-# All results are generated below a subdirectory named msvcXXX.
-#
-# ------------------------------------------------------------------------------
-
-NAME = cares
-
-# ------------------------------------------------
-# c-ares static and dynamic libraries common base
-# file names for release and debug configurations
-# ------------------------------------------------
-
-STA_LIB_REL = lib$(NAME)
-DYN_LIB_REL = $(NAME)
-STA_LIB_DBG = $(STA_LIB_REL)d
-DYN_LIB_DBG = $(DYN_LIB_REL)d
-
-# -------------------------------------------
-# Base names for c-ares DLL import libraries
-# -------------------------------------------
-
-IMP_LIB_REL = $(DYN_LIB_REL)
-IMP_LIB_DBG = $(DYN_LIB_DBG)
-
-# --------------------------
-# Runtime library selection
-# --------------------------
-
-RTLIB = /MD
-RTLIBD = /MDd
-
-!IF "$(RTLIBCFG)" == "static"
-RTLIB = /MT
-RTLIBD = /MTd
-!ENDIF
-
-# --------------------------------------------------------
-# Define USE_WATT32 to 1 to use the Watt-32 tcp/ip stack,
-# otherwise Winsock tcp/ip stack will be used as default.
-# --------------------------------------------------------
-
-USE_WATT32 = 0
-
-# -------------------------------------------
-# Detect NMAKE version deducing MSVC version
-# -------------------------------------------
-
-!IFNDEF _NMAKE_VER
-! MESSAGE Macro _NMAKE_VER not defined.
-! MESSAGE Use MSVC's NMAKE to process this makefile.
-! ERROR See previous message.
-!ENDIF
-
-!IF "$(_NMAKE_VER)" == "6.00.8168.0"
-CC_VERS_NUM = 60
-!ELSEIF "$(_NMAKE_VER)" == "6.00.9782.0"
-CC_VERS_NUM = 60
-!ELSEIF "$(_NMAKE_VER)" == "7.00.9466"
-CC_VERS_NUM = 70
-!ELSEIF "$(_NMAKE_VER)" == "7.00.9955"
-CC_VERS_NUM = 70
-!ELSEIF "$(_NMAKE_VER)" == "7.10.3077"
-CC_VERS_NUM = 71
-!ELSEIF "$(_NMAKE_VER)" == "8.00.40607.16"
-CC_VERS_NUM = 80
-!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.42"
-CC_VERS_NUM = 80
-!ELSEIF "$(_NMAKE_VER)" == "8.00.50727.762"
-CC_VERS_NUM = 80
-!ELSEIF "$(_NMAKE_VER)" == "9.00.21022.08"
-CC_VERS_NUM = 90
-!ELSEIF "$(_NMAKE_VER)" == "9.00.30729.01"
-CC_VERS_NUM = 90
-!ELSEIF "$(_NMAKE_VER)" == "10.00.20506.01"
-CC_VERS_NUM = 100
-!ELSEIF "$(_NMAKE_VER)" == "10.00.21003.01"
-CC_VERS_NUM = 100
-!ELSE
-! MESSAGE Unknown value for _NMAKE_VER macro: "$(_NMAKE_VER)"
-! MESSAGE Please, report this condition on the c-ares development
-! MESSAGE mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/
-! ERROR See previous message.
-!ENDIF
-
-CC_VERS_STR = msvc$(CC_VERS_NUM)
-
-# ----------------------------------------------------
-# Verify that current subdir is the c-ares source one
-# ----------------------------------------------------
-
-!IF ! EXIST(.\ares_init.c)
-! MESSAGE Can not process Makefile.msvc from outside of c-ares source subdirectory.
-! MESSAGE Change to the subdirectory where Makefile.msvc is found, and try again.
-! ERROR See previous message.
-!ENDIF
-
-# ------------------------------------------------------------------
-# Base subdir is the common root from which other subdirs will hang,
-# the name depends on MSVC version being used when building c-ares.
-# ------------------------------------------------------------------
-
-BASE_DIR = .\$(CC_VERS_STR)
-
-# ----------------------------------------
-# Subdir holding sources for all projects
-# ----------------------------------------
-
-SRCDIR = .
-
-# -------------------------
-# Configuration validation
-# -------------------------
-
-VALID_CFGSET = FALSE
-!IF "$(CFG)" == "lib-release" || "$(CFG)" == "lib-debug" || \
- "$(CFG)" == "dll-release" || "$(CFG)" == "dll-debug"
-VALID_CFGSET = TRUE
-!ENDIF
-
-!IF "$(VALID_CFGSET)" == "FALSE" && "$(CFG)" != ""
-! MESSAGE MSVC c-ares makefile
-! MESSAGE
-! MESSAGE Usage: nmake /f makefile.msvc CFG=<config> <target>
-! MESSAGE
-! MESSAGE <config> must be one of: [ lib-release | lib-debug | dll-release | dll-debug }
-! MESSAGE <target> must be one of: [ ALL | c-ares | acountry | adig | ahost | clean }
-! MESSAGE
-! MESSAGE If a <target> other than ALL or clean is given, <config> becomes mandatory.
-! MESSAGE
-! MESSAGE If neither <config> nor <target> are specified this results in
-! MESSAGE all targets being built for all <config> c-ares library types.
-! MESSAGE
-! ERROR Choose a valid configuration.
-!ENDIF
-
-# --------------------------------------------------------
-# Project subdirs independent of configuration being used
-# --------------------------------------------------------
-
-CARES_DIR = $(BASE_DIR)\cares
-PROG1_DIR = $(BASE_DIR)\acountry
-PROG2_DIR = $(BASE_DIR)\adig
-PROG3_DIR = $(BASE_DIR)\ahost
-
-# ---------------------------------------------------
-# Subdirs which are configuration dependent are only
-# defined when a valid configuration has been given.
-# ---------------------------------------------------
-
-!IF "$(VALID_CFGSET)" == "TRUE"
-CARES_OUTDIR = $(CARES_DIR)\$(CFG)
-PROG1_OUTDIR = $(PROG1_DIR)\$(CFG)
-PROG2_OUTDIR = $(PROG2_DIR)\$(CFG)
-PROG3_OUTDIR = $(PROG3_DIR)\$(CFG)
-CARES_OBJDIR = $(CARES_OUTDIR)\obj
-PROG1_OBJDIR = $(PROG1_OUTDIR)\obj
-PROG2_OBJDIR = $(PROG2_OUTDIR)\obj
-PROG3_OBJDIR = $(PROG3_OUTDIR)\obj
-!ELSE
-!UNDEF CARES_OUTDIR
-!UNDEF PROG1_OUTDIR
-!UNDEF PROG2_OUTDIR
-!UNDEF PROG3_OUTDIR
-!UNDEF CARES_OBJDIR
-!UNDEF PROG1_OBJDIR
-!UNDEF PROG2_OBJDIR
-!UNDEF PROG3_OBJDIR
-!ENDIF
-
-# -------------------------------------
-# Settings that depend on tcp/ip stack
-# -------------------------------------
-
-!IF "$(USE_WATT32)" == "1"
-CFLAGS = /UWIN32 /DWATT32 /I$(WATT_ROOT)\inc
-EX_LIBS_REL = $(WATT_ROOT)\lib\wattcpvc_imp.lib
-EX_LIBS_DBG = $(WATT_ROOT)\lib\wattcpvc_imp_d.lib
-!ELSE
-CFLAGS = /DWIN32
-EX_LIBS_REL = ws2_32.lib advapi32.lib kernel32.lib
-EX_LIBS_DBG = ws2_32.lib advapi32.lib kernel32.lib
-!ENDIF
-
-# -----------------------------------------
-# Switches that depend on compiler version
-# -----------------------------------------
-
-!IF $(CC_VERS_NUM) == 60
-PDB_NONE = /pdb:none
-PDBTYPE_CONSOLIDATE = /pdbtype:consolidate
-!ELSE
-!UNDEF PDB_NONE
-!UNDEF PDBTYPE_CONSOLIDATE
-!ENDIF
-
-!IF $(CC_VERS_NUM) <= 70
-RT_ERROR_CHECKING = /GZ
-!ELSE
-RT_ERROR_CHECKING = /RTCsu
-!ENDIF
-
-# ----------------------------
-# Assorted commands and flags
-# ----------------------------
-
-CC_CMD_REL = cl.exe /nologo $(RTLIB) /DNDEBUG /O2
-CC_CMD_DBG = cl.exe /nologo $(RTLIBD) /D_DEBUG /Od /Zi $(RT_ERROR_CHECKING)
-CC_CFLAGS = $(CFLAGS) /I. /W3 /EHsc /FD
-
-RC_CMD_REL = rc.exe /l 0x409 /d "NDEBUG"
-RC_CMD_DBG = rc.exe /l 0x409 /d "_DEBUG"
-
-LINK_CMD_LIB = link.exe /lib /nologo
-LINK_CMD_DLL = link.exe /dll /nologo /incremental:no /fixed:no
-LINK_CMD_EXE = link.exe /nologo /incremental:no /fixed:no /subsystem:console
-
-LINK_CMD_EXE_REL = $(LINK_CMD_EXE) /release $(PDB_NONE)
-LINK_CMD_EXE_DBG = $(LINK_CMD_EXE) /debug $(PDBTYPE_CONSOLIDATE)
-
-# ---------------------------------
-# Configuration dependent settings
-# ---------------------------------
-
-!IF "$(CFG)" == "lib-release"
-CARES_TARGET = $(STA_LIB_REL).lib
-CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB
-CARES_LFLAGS =
-SPROG_CFLAGS = /DCARES_STATICLIB
-SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(STA_LIB_REL).lib
-CARES_LINK = $(LINK_CMD_LIB)
-SPROG_LINK = $(LINK_CMD_EXE_REL)
-CC_CMD = $(CC_CMD_REL)
-!ENDIF
-
-!IF "$(CFG)" == "lib-debug"
-CARES_TARGET = $(STA_LIB_DBG).lib
-CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DCARES_STATICLIB /DDEBUGBUILD
-CARES_LFLAGS =
-SPROG_CFLAGS = /DCARES_STATICLIB
-SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(STA_LIB_DBG).lib
-CARES_LINK = $(LINK_CMD_LIB)
-SPROG_LINK = $(LINK_CMD_EXE_DBG)
-CC_CMD = $(CC_CMD_DBG)
-!ENDIF
-
-!IF "$(CFG)" == "dll-release"
-CARES_TARGET = $(DYN_LIB_REL).dll
-CARES_CFLAGS = /DCARES_BUILDING_LIBRARY
-CARES_LFLAGS = /release $(EX_LIBS_REL) /implib:$(CARES_OUTDIR)\$(IMP_LIB_REL).lib $(PDB_NONE)
-SPROG_CFLAGS =
-SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_REL) $(IMP_LIB_REL).lib
-CARES_LINK = $(LINK_CMD_DLL)
-SPROG_LINK = $(LINK_CMD_EXE_REL)
-CC_CMD = $(CC_CMD_REL)
-USE_RES_FILE = TRUE
-RC_CMD = $(RC_CMD_REL)
-!ENDIF
-
-!IF "$(CFG)" == "dll-debug"
-CARES_TARGET = $(DYN_LIB_DBG).dll
-CARES_CFLAGS = /DCARES_BUILDING_LIBRARY /DDEBUGBUILD
-CARES_LFLAGS = /debug $(EX_LIBS_DBG) /implib:$(CARES_OUTDIR)\$(IMP_LIB_DBG).lib /pdb:$(CARES_OUTDIR)\$(DYN_LIB_DBG).pdb $(PDBTYPE_CONSOLIDATE)
-SPROG_CFLAGS =
-SPROG_LFLAGS = /libpath:$(CARES_OUTDIR) $(EX_LIBS_DBG) $(IMP_LIB_DBG).lib
-CARES_LINK = $(LINK_CMD_DLL)
-SPROG_LINK = $(LINK_CMD_EXE_DBG)
-CC_CMD = $(CC_CMD_DBG)
-USE_RES_FILE = TRUE
-RC_CMD = $(RC_CMD_DBG)
-!ENDIF
-
-# --------------------------------------------
-# Makefile.inc provides lists of source files
-# --------------------------------------------
-
-!INCLUDE .\Makefile.inc
-
-# ----------------------------
-# Build lists of object files
-# ----------------------------
-
-!IF "$(VALID_CFGSET)" == "TRUE"
-
-!IF [ECHO CARES_OBJS=^$(CARES_OBJDIR)\$(CSOURCES: = $(CARES_OBJDIR^)\) > .\cares_objs.inc] == 0
-!INCLUDE .\cares_objs.inc
-!IF [DEL .\cares_objs.inc]
-!ENDIF
-!ELSE
-!ERROR Problem generating CARES_OBJS list.
-!ENDIF
-CARES_OBJS = $(CARES_OBJS:.c=.obj)
-!IF "$(USE_RES_FILE)" == "TRUE"
-CARES_OBJS = $(CARES_OBJS) $(CARES_OBJDIR)\cares.res
-!ENDIF
-
-!IF [ECHO PROG1_OBJS=^$(PROG1_OBJDIR)\$(SAMPLESOURCES: = $(PROG1_OBJDIR^)\) > .\prog1_objs.inc] == 0
-!INCLUDE .\prog1_objs.inc
-!IF [DEL .\prog1_objs.inc]
-!ENDIF
-!ELSE
-!ERROR Problem generating PROG1_OBJS list.
-!ENDIF
-PROG1_OBJS = $(PROG1_OBJS:.c=.obj)
-PROG1_OBJS = $(PROG1_OBJS) $(PROG1_OBJDIR)\acountry.obj
-
-!IF [ECHO PROG2_OBJS=^$(PROG2_OBJDIR)\$(SAMPLESOURCES: = $(PROG2_OBJDIR^)\) > .\prog2_objs.inc] == 0
-!INCLUDE .\prog2_objs.inc
-!IF [DEL .\prog2_objs.inc]
-!ENDIF
-!ELSE
-!ERROR Problem generating PROG2_OBJS list.
-!ENDIF
-PROG2_OBJS = $(PROG2_OBJS:.c=.obj)
-PROG2_OBJS = $(PROG2_OBJS) $(PROG2_OBJDIR)\adig.obj
-
-!IF [ECHO PROG3_OBJS=^$(PROG3_OBJDIR)\$(SAMPLESOURCES: = $(PROG3_OBJDIR^)\) > .\prog3_objs.inc] == 0
-!INCLUDE .\prog3_objs.inc
-!IF [DEL .\prog3_objs.inc]
-!ENDIF
-!ELSE
-!ERROR Problem generating PROG3_OBJS list.
-!ENDIF
-PROG3_OBJS = $(PROG3_OBJS:.c=.obj)
-PROG3_OBJS = $(PROG3_OBJS) $(PROG3_OBJDIR)\ahost.obj
-
-!ENDIF
-
-# --------------------------------
-# Only our custom inference rules
-# --------------------------------
-
-.SUFFIXES:
-.SUFFIXES: .c .rc
-
-{$(SRCDIR)}.rc{$(CARES_OBJDIR)}.res:
- $(RC_CMD) /Fo $@ $<
-
-{$(SRCDIR)}.c{$(CARES_OBJDIR)}.obj:
- $(CC_CMD) $(CC_CFLAGS) $(CARES_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
-
-{$(SRCDIR)}.c{$(PROG1_OBJDIR)}.obj:
- $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
-
-{$(SRCDIR)}.c{$(PROG2_OBJDIR)}.obj:
- $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
-
-{$(SRCDIR)}.c{$(PROG3_OBJDIR)}.obj:
- $(CC_CMD) $(CC_CFLAGS) $(SPROG_CFLAGS) /Fo$@ /Fd$(@D)\ /c $<
-
-# ------------------------------------------------------------- #
-# ------------------------------------------------------------- #
-# Default target when no CFG library type has been specified, #
-# results in building target ALL for all c-ares library types. #
-# ------------------------------------------------------------- #
-# ------------------------------------------------------------- #
-
-!IF "$(VALID_CFGSET)" == "FALSE"
-
-ALL:
- $(MAKE) /f .\Makefile.msvc CFG=lib-release ALL
- $(MAKE) /f .\Makefile.msvc CFG=lib-debug ALL
- $(MAKE) /f .\Makefile.msvc CFG=dll-release ALL
- $(MAKE) /f .\Makefile.msvc CFG=dll-debug ALL
-
-clean:
- @-RMDIR /S /Q $(BASE_DIR) >NUL 2>&1
-
-!ENDIF
-
-# ---------------------------------------------------------------------
-# Targets only available when a proper CFG library type has been given
-# ---------------------------------------------------------------------
-
-!IF "$(VALID_CFGSET)" == "TRUE"
-
-ALL: c-ares acountry adig ahost
- @
-
-c-ares: $(HHEADERS) $(CSOURCES) $(CARES_OBJDIR) $(CARES_OBJS) $(CARES_OUTDIR)
- $(CARES_LINK) $(CARES_LFLAGS) /out:$(CARES_OUTDIR)\$(CARES_TARGET) $(CARES_OBJS)
-! IF "$(USE_RES_FILE)" == "TRUE"
- @if exist $(CARES_OUTDIR)\$(CARES_TARGET).manifest mt -nologo -manifest $(CARES_OUTDIR)\$(CARES_TARGET).manifest -outputresource:$(CARES_OUTDIR)\$(CARES_TARGET);2
-! ENDIF
-
-acountry: c-ares acountry.c $(SAMPLESOURCES) $(SAMPLEHEADERS) $(PROG1_OBJDIR) $(PROG1_OBJS) $(PROG1_OUTDIR)
- $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG1_OUTDIR)\acountry.exe $(PROG1_OBJS)
- @if exist $(PROG1_OUTDIR)\acountry.exe.manifest mt -nologo -manifest $(PROG1_OUTDIR)\acountry.exe.manifest -outputresource:$(PROG1_OUTDIR)\acountry.exe;1
-
-adig: c-ares adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS) $(PROG2_OBJDIR) $(PROG2_OBJS) $(PROG2_OUTDIR)
- $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG2_OUTDIR)\adig.exe $(PROG2_OBJS)
- @if exist $(PROG2_OUTDIR)\adig.exe.manifest mt -nologo -manifest $(PROG2_OUTDIR)\adig.exe.manifest -outputresource:$(PROG2_OUTDIR)\adig.exe;1
-
-ahost: c-ares ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS) $(PROG3_OBJDIR) $(PROG3_OBJS) $(PROG3_OUTDIR)
- $(SPROG_LINK) $(SPROG_LFLAGS) /out:$(PROG3_OUTDIR)\ahost.exe $(PROG3_OBJS)
- @if exist $(PROG3_OUTDIR)\ahost.exe.manifest mt -nologo -manifest $(PROG3_OUTDIR)\ahost.exe.manifest -outputresource:$(PROG3_OUTDIR)\ahost.exe;1
-
-$(CARES_OUTDIR): $(CARES_DIR)
- @if not exist $(CARES_OUTDIR) mkdir $(CARES_OUTDIR)
-
-$(PROG1_OUTDIR): $(PROG1_DIR)
- @if not exist $(PROG1_OUTDIR) mkdir $(PROG1_OUTDIR)
-
-$(PROG2_OUTDIR): $(PROG2_DIR)
- @if not exist $(PROG2_OUTDIR) mkdir $(PROG2_OUTDIR)
-
-$(PROG3_OUTDIR): $(PROG3_DIR)
- @if not exist $(PROG3_OUTDIR) mkdir $(PROG3_OUTDIR)
-
-$(CARES_OBJDIR): $(CARES_OUTDIR)
- @if not exist $(CARES_OBJDIR) mkdir $(CARES_OBJDIR)
-
-$(PROG1_OBJDIR): $(PROG1_OUTDIR)
- @if not exist $(PROG1_OBJDIR) mkdir $(PROG1_OBJDIR)
-
-$(PROG2_OBJDIR): $(PROG2_OUTDIR)
- @if not exist $(PROG2_OBJDIR) mkdir $(PROG2_OBJDIR)
-
-$(PROG3_OBJDIR): $(PROG3_OUTDIR)
- @if not exist $(PROG3_OBJDIR) mkdir $(PROG3_OBJDIR)
-
-clean:
- @-RMDIR /S /Q $(CARES_OUTDIR) >NUL 2>&1
- @-RMDIR /S /Q $(PROG1_OUTDIR) >NUL 2>&1
- @-RMDIR /S /Q $(PROG2_OUTDIR) >NUL 2>&1
- @-RMDIR /S /Q $(PROG3_OUTDIR) >NUL 2>&1
-
-!ENDIF
-
-$(BASE_DIR):
- @if not exist $(BASE_DIR) mkdir $(BASE_DIR)
-
-$(CARES_DIR): $(BASE_DIR)
- @if not exist $(CARES_DIR) mkdir $(CARES_DIR)
-
-$(PROG1_DIR): $(BASE_DIR)
- @if not exist $(PROG1_DIR) mkdir $(PROG1_DIR)
-
-$(PROG2_DIR): $(BASE_DIR)
- @if not exist $(PROG2_DIR) mkdir $(PROG2_DIR)
-
-$(PROG3_DIR): $(BASE_DIR)
- @if not exist $(PROG3_DIR) mkdir $(PROG3_DIR)
-
-# End of Makefile.msvc
diff --git a/ares/Makefile.netware b/ares/Makefile.netware
deleted file mode 100644
index 52e899ef0..000000000
--- a/ares/Makefile.netware
+++ /dev/null
@@ -1,430 +0,0 @@
-#################################################################
-# $Id$
-#
-## Makefile for building libcares (NetWare version - gnu make)
-## Use: make -f Makefile.netware
-##
-## Comments to: Guenter Knauf http://www.gknw.de/phpbb
-#
-#################################################################
-
-# Edit the path below to point to the base of your Novell NDK.
-ifndef NDKBASE
-NDKBASE = c:/novell
-endif
-
-ifndef INSTDIR
-INSTDIR = ../ares-$(LIBCARES_VERSION_STR)-bin-nw
-endif
-
-# Edit the vars below to change NLM target settings.
-TARGETS = adig.nlm ahost.nlm acountry.nlm
-LTARGET = libcares.$(LIBEXT)
-VERSION = $(LIBCARES_VERSION)
-COPYR = Copyright (C) 1996 - 2008, Daniel Stenberg, <daniel@haxx.se>
-DESCR = cURL $(subst .def,,$(notdir $@)) $(LIBCARES_VERSION_STR) - http://curl.haxx.se
-MTSAFE = YES
-STACK = 64000
-SCREEN = none
-#EXPORTS =
-# Comment the line below if you dont want to load protected automatically.
-#LDRING = 3
-
-# Edit the var below to point to your lib architecture.
-ifndef LIBARCH
-LIBARCH = LIBC
-endif
-
-# must be equal to NDEBUG or DEBUG, CURLDEBUG
-ifndef DB
-DB = NDEBUG
-endif
-# Optimization: -O<n> or debugging: -g
-ifeq ($(DB),NDEBUG)
- OPT = -O2
- OBJDIR = release
-else
- OPT = -g
- OBJDIR = debug
-endif
-
-# Include the version info retrieved from curlver.h
--include $(OBJDIR)/version.inc
-
-# The following lines defines your compiler.
-ifdef CWFolder
- METROWERKS = $(CWFolder)
-endif
-ifdef METROWERKS
- # MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support
- MWCW_PATH = $(subst \,/,$(METROWERKS))/Novell Support/Metrowerks Support
- CC = mwccnlm
-else
- CC = gcc
-endif
-# a native win32 awk can be downloaded from here:
-# http://www.gknw.net/development/prgtools/awk-20070501.zip
-AWK = awk
-YACC = bison -y
-CP = cp -afv
-MKDIR = mkdir
-# RM = rm -f
-# if you want to mark the target as MTSAFE you will need a tool for
-# generating the xdc data for the linker; here's a minimal tool:
-# http://www.gknw.net/development/prgtools/mkxdc.zip
-MPKXDC = mkxdc
-
-# Global flags for all compilers
-CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
-
-ifeq ($(CC),mwccnlm)
-LD = mwldnlm
-LDFLAGS = -nostdlib $(PRELUDE) $(OBJEXE) $(<:.def=.o) -o $@ -commandfile
-AR = mwldnlm
-ARFLAGS = -nostdlib -type library -o
-LIBEXT = lib
-#RANLIB =
-CFLAGS += -msgstyle gcc -gccinc -inline off -opt nointrinsics -proc 586
-CFLAGS += -relax_pointers
-#CFLAGS += -w on
-ifeq ($(LIBARCH),LIBC)
- PRELUDE = $(SDK_LIBC)/imports/libcpre.o
- CFLAGS += -align 4
-else
- # PRELUDE = $(SDK_CLIB)/imports/clibpre.o
- # to avoid the __init_* / __deinit_* whoes dont use prelude from NDK
- PRELUDE = "$(MWCW_PATH)/libraries/runtime/prelude.obj"
- # CFLAGS += -include "$(MWCW_PATH)/headers/nlm_clib_prefix.h"
- CFLAGS += -align 1
-endif
-else
-LD = nlmconv
-LDFLAGS = -T
-AR = ar
-ARFLAGS = -cq
-LIBEXT = a
-RANLIB = ranlib
-CFLAGS += -fno-builtin -fpcc-struct-return -fno-strict-aliasing
-CFLAGS += -Wall -Wno-format -Wno-uninitialized # -pedantic
-ifeq ($(LIBARCH),LIBC)
- PRELUDE = $(SDK_LIBC)/imports/libcpre.gcc.o
-else
- # PRELUDE = $(SDK_CLIB)/imports/clibpre.gcc.o
- # to avoid the __init_* / __deinit_* whoes dont use prelude from NDK
- # http://www.gknw.net/development/mk_nlm/gcc_pre.zip
- PRELUDE = $(NDK_ROOT)/pre/prelude.o
- CFLAGS += -include $(NDKBASE)/nlmconv/genlm.h
-endif
-endif
-
-NDK_ROOT = $(NDKBASE)/ndk
-SDK_CLIB = $(NDK_ROOT)/nwsdk
-SDK_LIBC = $(NDK_ROOT)/libc
-
-ifeq ($(LIBARCH),LIBC)
- INCLUDES += -I$(SDK_LIBC)/include
- # INCLUDES += -I$(SDK_LIBC)/include/nks
- # INCLUDES += -I$(SDK_LIBC)/include/winsock
- CFLAGS += -D_POSIX_SOURCE
-else
- INCLUDES += -I$(SDK_CLIB)/include/nlm
- # INCLUDES += -I$(SDK_CLIB)/include/nlm/obsolete
- # INCLUDES += -I$(SDK_CLIB)/include
-endif
-ifeq ($(DB),CURLDEBUG)
-INCLUDES += -I../include
-endif
-CFLAGS += -I. $(INCLUDES)
-
-ifeq ($(MTSAFE),YES)
- XDCOPT = -n
-endif
-ifeq ($(MTSAFE),NO)
- XDCOPT = -u
-endif
-
-ifeq ($(findstring linux,$(OSTYPE)),linux)
-DL = '
-#-include $(NDKBASE)/nlmconv/ncpfs.inc
-endif
-
-# Makefile.inc provides the CSOURCES and HHEADERS defines
-include Makefile.inc
-
-OBJLIB := $(patsubst %.c,$(OBJDIR)/%.o,$(strip $(CSOURCES)))
-OBJEXE = $(OBJLIB) $(OBJDIR)/ares_getopt.o
-
-.PHONY: lib nlm prebuild dist install clean
-
-lib: prebuild $(LTARGET)
-
-nlm: prebuild $(TARGETS)
-
-prebuild: $(OBJDIR) ares_build.h $(OBJDIR)/version.inc ares_config.h
-
-install: $(INSTDIR) all
- @$(CP) *.nlm $(INSTDIR)
- @$(CP) ../CHANGES $(INSTDIR)
- @$(CP) ../COPYING $(INSTDIR)
- @$(CP) ../README $(INSTDIR)
- @$(CP) ../RELEASE-NOTES $(INSTDIR)
-
-clean:
- -$(RM) $(LTARGET) $(TARGETS) ares_config.h
- -$(RM) -r $(OBJDIR)
- -$(RM) -r arpa
-
-%.$(LIBEXT): $(OBJLIB)
- @echo Creating $@
- @-$(RM) $@
- @$(AR) $(ARFLAGS) $@ $^
-ifdef RANLIB
- @$(RANLIB) $@
-endif
-
-%.nlm: $(OBJDIR)/%.def $(OBJDIR)/%.o $(OBJDIR)/%.xdc $(OBJEXE)
- @echo Linking $@
- @-$(RM) $@
- @$(LD) $(LDFLAGS) $<
-
-$(OBJDIR) $(INSTDIR):
- @$(MKDIR) $@
-
-$(OBJDIR)/%.o: %.c
-# @echo Compiling $<
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJDIR)/version.inc: ares_version.h $(OBJDIR)
- @echo Creating $@
- @$(AWK) -f get_ver.awk $< > $@
-
-$(OBJDIR)/%.xdc: Makefile.netware
- @echo Creating $@
- @$(MPKXDC) $(XDCOPT) $@
-
-$(OBJDIR)/%.def: Makefile.netware
- @echo Creating $@
- @echo $(DL)# DEF file for linking with $(LD)$(DL) > $@
- @echo $(DL)# Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)# All your changes will be lost!!$(DL) >> $@
- @echo $(DL)#$(DL) >> $@
- @echo $(DL)copyright "$(COPYR)"$(DL) >> $@
- @echo $(DL)description "$(DESCR)"$(DL) >> $@
- @echo $(DL)version $(VERSION)$(DL) >> $@
-ifdef NLMTYPE
- @echo $(DL)type $(NLMTYPE)$(DL) >> $@
-endif
-ifdef STACK
- @echo $(DL)stack $(STACK)$(DL) >> $@
-endif
-ifdef SCREEN
- @echo $(DL)screenname "$(SCREEN)"$(DL) >> $@
-else
- @echo $(DL)screenname "DEFAULT"$(DL) >> $@
-endif
-ifeq ($(DB),DEBUG)
- @echo $(DL)debug$(DL) >> $@
-endif
- @echo $(DL)threadname "$^"$(DL) >> $@
-ifdef XDCOPT
- @echo $(DL)xdcdata $(@:.def=.xdc)$(DL) >> $@
-endif
-ifeq ($(LDRING),0)
- @echo $(DL)flag_on 16$(DL) >> $@
-endif
-ifeq ($(LDRING),3)
- @echo $(DL)flag_on 512$(DL) >> $@
-endif
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)start _Prelude$(DL) >> $@
- @echo $(DL)exit _Stop$(DL) >> $@
- @echo $(DL)import @$(SDK_CLIB)/imports/clib.imp$(DL) >> $@
- @echo $(DL)import @$(SDK_CLIB)/imports/threads.imp$(DL) >> $@
- @echo $(DL)import @$(SDK_CLIB)/imports/nlmlib.imp$(DL) >> $@
- @echo $(DL)import @$(SDK_CLIB)/imports/socklib.imp$(DL) >> $@
- @echo $(DL)module clib$(DL) >> $@
-else
- @echo $(DL)flag_on 64$(DL) >> $@
- @echo $(DL)pseudopreemption$(DL) >> $@
- @echo $(DL)start _LibCPrelude$(DL) >> $@
- @echo $(DL)exit _LibCPostlude$(DL) >> $@
- @echo $(DL)check _LibCCheckUnload$(DL) >> $@
- @echo $(DL)import @$(SDK_LIBC)/imports/libc.imp$(DL) >> $@
- @echo $(DL)import @$(SDK_LIBC)/imports/netware.imp$(DL) >> $@
- @echo $(DL)module libc$(DL) >> $@
-endif
-ifdef MODULES
- @echo $(DL)module $(MODULES)$(DL) >> $@
-endif
-ifdef EXPORTS
- @echo $(DL)export $(EXPORTS)$(DL) >> $@
-endif
-ifdef IMPORTS
- @echo $(DL)import $(IMPORTS)$(DL) >> $@
-endif
-ifeq ($(LD),nlmconv)
- @echo $(DL)input $(PRELUDE)$(DL) >> $@
- @echo $(DL)input $(OBJEXE)$(DL) >> $@
- @echo $(DL)input $(@:.def=.o)$(DL) >> $@
- @echo $(DL)output $(notdir $(@:.def=.nlm))$(DL) >> $@
-endif
-
-ares_config.h: Makefile.netware
- @echo Creating $@
- @echo $(DL)/* $@ for NetWare target.$(DL) > $@
- @echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)** All your changes will be lost!!$(DL) >> $@
- @echo $(DL)*/$(DL) >> $@
- @echo $(DL)#ifndef NETWARE$(DL) >> $@
- @echo $(DL)#error This $(notdir $@) is created for NetWare platform!$(DL) >> $@
- @echo $(DL)#endif$(DL) >> $@
- @echo $(DL)#define VERSION "$(LIBCARES_VERSION_STR)"$(DL) >> $@
- @echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"$(DL) >> $@
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
- @echo $(DL)#define HAVE_STRICMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRNICMP 1$(DL) >> $@
- @echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
- @echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG3 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
-else
- @echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
- @echo $(DL)#define HAVE_DLFCN_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_DLOPEN 1$(DL) >> $@
- @echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETTIMEOFDAY 1$(DL) >> $@
- @echo $(DL)#define HAVE_INTTYPES_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LONGLONG 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDINT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRCASECMP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRLCAT 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRLCPY 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRTOLL 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_PARAM_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_SELECT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_TERMIOS_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_AF_INET6 1$(DL) >> $@
- @echo $(DL)#define HAVE_PF_INET6 1$(DL) >> $@
- @echo $(DL)#define HAVE_FREEADDRINFO 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETADDRINFO 1$(DL) >> $@
- @echo $(DL)#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_IN6_ADDR 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_SOCKADDR_IN6 1$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG2 void *$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
- @echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
- @echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG3 size_t$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
- @echo $(DL)#define SEND_TYPE_RETV ssize_t$(DL) >> $@
- @echo $(DL)#define SIZEOF_STRUCT_IN6_ADDR 16$(DL) >> $@
-endif
- @echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_FCNTL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETHOSTBYADDR 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETHOSTBYNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETHOSTNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_GETPROTOBYNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_GMTIME_R 1$(DL) >> $@
- @echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
- @echo $(DL)#define HAVE_IOCTL 1$(DL) >> $@
- @echo $(DL)#define HAVE_IOCTL_FIONBIO 1$(DL) >> $@
- @echo $(DL)#define HAVE_LIMITS_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_LL 1$(DL) >> $@
- @echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
- @echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_RECV 1$(DL) >> $@
- @echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
- @echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
- @echo $(DL)#define HAVE_SEND 1$(DL) >> $@
- @echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
- @echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
- @echo $(DL)#define HAVE_SOCKET 1$(DL) >> $@
- @echo $(DL)#define HAVE_STDLIB_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRDUP 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRFTIME 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRING_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRSTR 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_ADDRINFO 1$(DL) >> $@
- @echo $(DL)#define HAVE_STRUCT_TIMEVAL 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_IOCTL_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_STAT_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_TIME_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_TIME_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_UNAME 1$(DL) >> $@
- @echo $(DL)#define HAVE_UNISTD_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
- @echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_WRITEV 1$(DL) >> $@
- @echo $(DL)#define RETSIGTYPE void$(DL) >> $@
- @echo $(DL)#define SIZEOF_INT 4$(DL) >> $@
- @echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
- @echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
- @echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
-ifdef NW_WINSOCK
- @echo $(DL)#define HAVE_CLOSESOCKET 1$(DL) >> $@
-else
- @echo $(DL)#define HAVE_SYS_TYPES_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_SOCKET_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_SYS_SOCKIO_H 1$(DL) >> $@
- @echo $(DL)#define HAVE_NETDB_H 1$(DL) >> $@
-endif
- @echo $(DL)#ifdef __GNUC__$(DL) >> $@
- @echo $(DL)#define HAVE_VARIADIC_MACROS_GCC 1$(DL) >> $@
- @echo $(DL)#else$(DL) >> $@
- @echo $(DL)#define HAVE_VARIADIC_MACROS_C99 1$(DL) >> $@
- @echo $(DL)#endif$(DL) >> $@
-
-FORCE: ;
-
-ares_build.h: Makefile.netware FORCE
- @echo Creating $@
- @echo $(DL)/* $@ intended for NetWare target.$(DL) > $@
- @echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
- @echo $(DL)** All your changes will be lost!!$(DL) >> $@
- @echo $(DL)*/$(DL) >> $@
- @echo $(DL)#ifndef __CARES_BUILD_H$(DL) >> $@
- @echo $(DL)#define __CARES_BUILD_H$(DL) >> $@
-ifeq ($(LIBARCH),CLIB)
- @echo $(DL)#define CARES_TYPEOF_ARES_SOCKLEN_T int$(DL) >> $@
- @echo $(DL)#define CARES_SIZEOF_ARES_SOCKLEN_T 4$(DL) >> $@
-else
- @echo $(DL)#define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int$(DL) >> $@
- @echo $(DL)#define CARES_SIZEOF_ARES_SOCKLEN_T 4$(DL) >> $@
-endif
- @echo $(DL)#define CARES_SIZEOF_LONG 4$(DL) >> $@
- @echo $(DL)typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;$(DL) >> $@
- @echo $(DL)#endif /* __CARES_BUILD_H */$(DL) >> $@
diff --git a/ares/NEWS b/ares/NEWS
deleted file mode 100644
index 95a2eeea2..000000000
--- a/ares/NEWS
+++ /dev/null
@@ -1,21 +0,0 @@
-Major changes since:
-* see the CHANGES file
-
-Major changes in release 1.1.1:
-* ares should now compile as C++ code (no longer uses reserved word
- "class").
-* Added SRV support to adig test program.
-* Fixed a few error handling bugs in query processing.
-
-Major changes in release 1.1.0:
-* Added ares_free_string() function so that memory can be freed in the
- same layer as it is allocated, a desirable feature in some
- environments.
-* A few of the ares_dns.h macros are fixed to use the proper bitwise
- operator.
-* Fixed a couple of fenceposts fixed in ares_expand_name()'s
- bounds-checking.
-* In process_timeouts(), extract query->next before calling
- next_server() and possibly freeing the query structure.
-* Casted arguments to ctype macros casted to unsigned char, since not
- all char values are valid inputs to those macros according to ANSI.
diff --git a/ares/README b/ares/README
deleted file mode 100644
index e5b5e2876..000000000
--- a/ares/README
+++ /dev/null
@@ -1,46 +0,0 @@
-This is c-ares, a forked version of the original ares. The original ares
-README follows below, the c-ares specific details are in README.cares
-
-====================================================================
-
-This is ares, an asynchronous resolver library. It is intended for
-applications which need to perform DNS queries without blocking, or
-need to perform multiple DNS queries in parallel. The primary
-examples of such applications are servers which communicate with
-multiple clients and programs with graphical user interfaces.
-
-This library implementation is not especially portable to crufty old
-systems like SunOS 4. It assumes a compiler which can handle ANSI C
-syntax, a system malloc which properly handles realloc(NULL, foo) and
-free(NULL), and a reasonably up-to-date <arpa/nameser.h>.
-
-I have attempted to preserve the externally visible behavior of the
-BIND resolver in nearly all respects. The API of the library is, of
-course, very different from the synchronous BIND API; instead of
-invoking a function like res_send() and getting a return value back
-indicating the number of bytes in the response, you invoke a function
-like ares_send() and give it a callback function to invoke when the
-response arrives. You then have to select() on the file descriptors
-indicated by ares_fds(), with a timeout given by ares_timeout(). You
-call ares_process() when select() returns.
-
-Some features are missing from the current version of ares, relative
-to the BIND resolver:
-
- * There is no IPV6 support. [not true for c-ares]
- * There is no hostname verification.
- * There is no logging of unexpected events.
- * There is no debugging-oriented logging.
- * There is no YP support.
-
-libares requires an ANSI compiler to compile and use. To build the
-library, just run "./configure" and "make". To install it, run "make
-install". Run "./configure --help" to see a list of options you can
-provide to configure to change how the library builds. libares has no
-data files, so you can move the include file and library around freely
-without leaving behind any dependencies on old paths. Building the
-library will also build the "adig" program, a little toy for trying
-out the library. It doesn't get installed.
-
-libares is distributed at athena-dist.mit.edu:pub/ATHENA/ares. Please
-send bug reports and comments to ghudson@mit.edu.
diff --git a/ares/README.cares b/ares/README.cares
deleted file mode 100644
index fd37461c8..000000000
--- a/ares/README.cares
+++ /dev/null
@@ -1,63 +0,0 @@
-c-ares
-======
-
-This package is based on ares 1.1.1 (written by Greg Hudson). I decided to
-fork and release a separate project since the ares author didn't want the
-improvements that were vital for our use of it.
-
-This package is dubbed 'c-ares' since I (Daniel Stenberg) wanted this for use
-within the curl project (hence the letter C) and it makes a nice pun. Also,
-c-ares is not API compatible with ares: a new name makes that more obvious to
-the public.
-
-The full source code is available in the 'c-ares' release archives, and in the
-'ares' subdir of the curl CVS source repository.
-
-If you find bugs, correct flaws, have questions or have comments in general in
-regard to c-ares (or by all means the original ares too), get in touch with us
-on the c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares
-
-c-ares is of course distributed under the same MIT-style license as the
-original ares.
-
-You'll find all c-ares details and news here:
-
- http://c-ares.haxx.se/
-
-
-NOTES FOR C-ARES HACKERS
-
-The following notes apply to c-ares version 1.7.0 and later.
-
-* The distributed ares_build.h file is only intended to be used on systems
- which can not run the also distributed configure script.
-
-* The distributed ares_build.h file is generated as a copy of ares_build.h.dist
- when the c-ares source code distribution archive file is originally created.
-
-* If you check out from CVS on a non-configure platform, you must run the
- appropriate buildconf* script to set up ares_build.h and other local files
- before being able of compiling the library.
-
-* On systems capable of running the configure script, the configure process
- will overwrite the distributed ares_build.h file with one that is suitable
- and specific to the library being configured and built, this new file is
- generated from the ares_build.h.in template file.
-
-* If you intend to distribute an already compiled c-ares library you _MUST_
- also distribute along with it the generated ares_build.h which has been
- used to compile it. Otherwise the library will be of no use for the users of
- the library that you have built. It is _your_ responsability to provide this
- file. No one at the c-ares project can know how you have built the library.
-
-* File ares_build.h includes platform and configuration dependent info,
- and must not be modified by anyone. Configure script generates it for you.
-
-* We cannot assume anything else but very basic compiler features being
- present. While c-ares requires an ANSI C compiler to build, some of the
- earlier ANSI compilers clearly can't deal with some preprocessor operators.
-
-* Newlines must remain unix-style for older compilers' sake.
-
-* Comments must be written in the old-style /* unnested C-fashion */
-
diff --git a/ares/README.msvc b/ares/README.msvc
deleted file mode 100644
index 2c63085a0..000000000
--- a/ares/README.msvc
+++ /dev/null
@@ -1,119 +0,0 @@
- $Id$
-
-
- ___ __ _ _ __ ___ ___
- / __| ___ / _` | '__/ _ \/ __|
- | (_ |___| (_| | | | __/\__ \
- \___| \__,_|_| \___||___/
-
-
- How to build c-ares using MSVC or Visual Studio
- =================================================
-
-
-
- How to build using MSVC from the command line
- ---------------------------------------------
-
- Open a command prompt window and ensure that the environment is properly
- set up in order to use MSVC or Visual Studio compiler tools.
-
- Change to c-ares source folder where Makefile.msvc file is located and run:
-
- > nmake -f Makefile.msvc
-
- This will build all c-ares libraries as well as three sample programs.
-
- Once the above command has finished a new folder named MSVCXX will exist
- below the folder where makefile.msvc is found. The name of the folder
- depends on the MSVC compiler version being used to build c-ares.
-
- Below the MSVCXX folder there will exist four folders named 'cares',
- 'ahost', 'acountry', and 'adig'. The 'cares' folder is the one that
- holds the c-ares libraries you have just generated, the other three
- hold sample programs that use the libraries.
-
- The above command builds four versions of the c-ares library, dynamic
- and static versions and each one in release and debug flavours. Each
- of these is found in folders named dll-release, dll-debug, lib-release,
- and lib-debug, which hang from the 'cares' folder mentioned above. Each
- sample program also has folders with the same names to reflect which
- library version it is using.
-
-
- How to build using Visual Studio 6 IDE
- --------------------------------------
-
- A VC++ 6.0 reference workspace (vc6aws.dsw) is available within the 'vc'
- folder to allow proper building of the library and sample programs.
-
- 1) Open the vc6aws.dsw workspace with MSVC6's IDE.
- 2) Select 'Build' from top menu.
- 3) Select 'Batch Build' from dropdown menu.
- 4) Make sure that the sixteen project configurations are 'checked'.
- 5) Click on the 'Build' button.
- 6) Once the sixteen project configurations are built you are done.
-
- Dynamic and static c-ares libraries are built in debug and release flavours,
- and can be located each one in its own subdirectory, dll-debug, dll-release,
- lib-debug and lib-release, all of them below the 'vc\cares' subdirectory.
-
- In the same way four executable versions of each sample program are built,
- each using its respective library. The resulting sample executables are
- located in its own subdirectory, dll-debug, dll-release, lib-debug and
- lib-release, below the 'vc\acountry', 'vc\adig' and 'vc\ahost'folders.
-
- These reference VC++ 6.0 configurations are generated using the dynamic CRT.
-
-
- How to build using Visual Studio 2003 or newer IDE
- --------------------------------------------------
-
- First you have to convert the VC++ 6.0 reference workspace and project files
- to the Visual Studio IDE version you are using, following next steps:
-
- 1) Open vc\vc6aws.dsw with VS20XX.
- 2) Allow VS20XX to update all projects and workspaces.
- 3) Save ALL and close VS20XX.
- 4) Open vc\vc6aws.sln with VS20XX.
- 5) Select batch build, check 'all' projects and click 'build' button.
-
- Same comments relative to generated files and folders as done above for
- Visual Studio 6 IDE apply here.
-
-
- Relationship between c-ares library file names and versions
- -----------------------------------------------------------
-
- c-ares static release library version files:
-
- libcares.lib -> static release library
-
- c-ares static debug library version files:
-
- libcaresd.lib -> static debug library
-
- c-ares dynamic release library version files:
-
- cares.dll -> dynamic release library
- cares.lib -> import library for the dynamic release library
- cares.exp -> export file for the dynamic release library
-
- c-ares dynamic debug library version files:
-
- caresd.dll -> dynamic debug library
- caresd.lib -> import library for the dynamic debug library
- caresd.exp -> export file for the dynamic debug library
- caresd.pdb -> debug symbol file for the dynamic debug library
-
-
- How to use c-ares static libraries
- ----------------------------------
-
- When using the c-ares static library in your program, you will have to
- define preprocessor symbol CARES_STATICLIB while building your program,
- otherwise you will get errors at linkage stage.
-
-
-Have Fun!
-
diff --git a/ares/RELEASE-NOTES b/ares/RELEASE-NOTES
deleted file mode 100644
index 0e1fefb4c..000000000
--- a/ares/RELEASE-NOTES
+++ /dev/null
@@ -1,18 +0,0 @@
-This is what's new and changed in the c-ares 1.7.1 release:
-
-Changed:
-
- o added IPv6 name servers support
-
-Fixed:
-
- o closing of sockets on Windows systems
- o MSVC deprecated compiler options warnings
- o ares_process_fd() didn't check broken connections
-
-Thanks go to these friendly people for their efforts and contributions:
-
- Ingmar Runge, Laszlo Tamas Szabo, Yang Tse, Tommie Gannert, Gregor Jasny,
- Phil Blundell, Cedric Bail, Jakub Hrozek
-
-Have fun!
diff --git a/ares/TODO b/ares/TODO
deleted file mode 100644
index fa31cea6f..000000000
--- a/ares/TODO
+++ /dev/null
@@ -1,23 +0,0 @@
-TODO
-====
-
-ares_reinit()
-
-- To allow an app to force a re-read of /etc/resolv.conf etc, pretty much
- like the res_init() resolver function offers
-
-ares_gethostbyname
-
-- When built to support IPv6, it needs to also support PF_UNSPEC or similar,
- so that an application can ask for any protocol and then c-ares would return
- all known resolves and not just explicitly IPv4 _or_ IPv6 resolves.
-
-ares_process
-
-- Upon next ABI breakage ares_process() should be changed to return 'int'
- and return ARES_ENOTINITIALIZED if ares_library_init() has not been called.
-
-ares_process_fd
-
-- Upon next ABI breakage ares_process_fd() should be changed to return
- 'int' and return ARES_ENOTINITIALIZED if library has not been initialized.
diff --git a/ares/acinclude.m4 b/ares/acinclude.m4
deleted file mode 100644
index 336dfabb6..000000000
--- a/ares/acinclude.m4
+++ /dev/null
@@ -1,1925 +0,0 @@
-
-
-dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
-dnl -------------------------------------------------
-dnl Use the C preprocessor to find out if the given object-style symbol
-dnl is defined and get its expansion. This macro will not use default
-dnl includes even if no INCLUDES argument is given. This macro will run
-dnl silently when invoked with three arguments. If the expansion would
-dnl result in a set of double-quoted strings the returned expansion will
-dnl actually be a single double-quoted string concatenating all them.
-
-AC_DEFUN([CURL_CHECK_DEF], [
- AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
- AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
- if test -z "$SED"; then
- AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
- fi
- if test -z "$GREP"; then
- AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
- fi
- ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
- tmp_exp=""
- AC_PREPROC_IFELSE([
- AC_LANG_SOURCE(
-ifelse($2,,,[$2])[[
-#ifdef $1
-CURL_DEF_TOKEN $1
-#endif
- ]])
- ],[
- tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
- "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
- "$SED" 's/.*CURL_DEF_TOKEN[[ ]]//' 2>/dev/null | \
- "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
- if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
- tmp_exp=""
- fi
- ])
- if test -z "$tmp_exp"; then
- AS_VAR_SET(ac_HaveDef, no)
- ifelse($3,,[AC_MSG_RESULT([no])])
- else
- AS_VAR_SET(ac_HaveDef, yes)
- AS_VAR_SET(ac_Def, $tmp_exp)
- ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
- fi
- AS_VAR_POPDEF([ac_Def])dnl
- AS_VAR_POPDEF([ac_HaveDef])dnl
-])
-
-
-dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT])
-dnl -------------------------------------------------
-dnl Use the C compiler to find out only if the given symbol is defined
-dnl or not, this can not find out its expansion. This macro will not use
-dnl default includes even if no INCLUDES argument is given. This macro
-dnl will run silently when invoked with three arguments.
-
-AC_DEFUN([CURL_CHECK_DEF_CC], [
- AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
- ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
- AC_COMPILE_IFELSE([
- AC_LANG_SOURCE(
-ifelse($2,,,[$2])[[
-int main (void)
-{
-#ifdef $1
- return 0;
-#else
- force compilation error
-#endif
-}
- ]])
- ],[
- tst_symbol_defined="yes"
- ],[
- tst_symbol_defined="no"
- ])
- if test "$tst_symbol_defined" = "yes"; then
- AS_VAR_SET(ac_HaveDef, yes)
- ifelse($3,,[AC_MSG_RESULT([yes])])
- else
- AS_VAR_SET(ac_HaveDef, no)
- ifelse($3,,[AC_MSG_RESULT([no])])
- fi
- AS_VAR_POPDEF([ac_HaveDef])dnl
-])
-
-
-dnl CARES_CHECK_LIB_XNET
-dnl -------------------------------------------------
-dnl Verify if X/Open network library is required.
-
-AC_DEFUN([CARES_CHECK_LIB_XNET], [
- AC_MSG_CHECKING([if X/Open network library is required])
- tst_lib_xnet_required="no"
- AC_COMPILE_IFELSE([
- AC_LANG_SOURCE([[
-int main (void)
-{
-#if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
- return 0;
-#elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
- return 0;
-#else
- force compilation error
-#endif
-}
- ]])
- ],[
- tst_lib_xnet_required="yes"
- LIBS="$LIBS -lxnet"
- ])
- AC_MSG_RESULT([$tst_lib_xnet_required])
-])
-
-
-dnl CARES_CHECK_AIX_ALL_SOURCE
-dnl -------------------------------------------------
-dnl Provides a replacement of traditional AC_AIX with
-dnl an uniform behaviour across all autoconf versions,
-dnl and with our own placement rules.
-
-AC_DEFUN([CARES_CHECK_AIX_ALL_SOURCE], [
- AH_VERBATIM([_ALL_SOURCE],
- [/* Define to 1 if OS is AIX. */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif])
- AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
- AC_BEFORE([$0], [CARES_CONFIGURE_REENTRANT])dnl
- AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
- AC_EGREP_CPP([yes_this_is_aix],[
-#ifdef _AIX
- yes_this_is_aix
-#endif
- ],[
- AC_MSG_RESULT([yes])
- AC_DEFINE(_ALL_SOURCE)
- ],[
- AC_MSG_RESULT([no])
- ])
-])
-
-
-dnl CURL_CHECK_HEADER_WINDOWS
-dnl -------------------------------------------------
-dnl Check for compilable and valid windows.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
- AC_CACHE_CHECK([for windows.h], [ac_cv_header_windows_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
- ]],[[
-#if defined(__CYGWIN__) || defined(__CEGCC__)
- HAVE_WINDOWS_H shall not be defined.
-#else
- int dummy=2*WINVER;
-#endif
- ]])
- ],[
- ac_cv_header_windows_h="yes"
- ],[
- ac_cv_header_windows_h="no"
- ])
- ])
- case "$ac_cv_header_windows_h" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1,
- [Define to 1 if you have the windows.h header file.])
- AC_DEFINE_UNQUOTED(WIN32_LEAN_AND_MEAN, 1,
- [Define to avoid automatic inclusion of winsock.h])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_NATIVE_WINDOWS
-dnl -------------------------------------------------
-dnl Check if building a native Windows target
-
-AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
- AC_CACHE_CHECK([whether build target is a native Windows one], [ac_cv_native_windows], [
- if test "$ac_cv_header_windows_h" = "no"; then
- ac_cv_native_windows="no"
- else
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
-#if defined(__MINGW32__) || defined(__MINGW32CE__) || \
- (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))
- int dummy=1;
-#else
- Not a native Windows build target.
-#endif
- ]])
- ],[
- ac_cv_native_windows="yes"
- ],[
- ac_cv_native_windows="no"
- ])
- fi
- ])
- case "$ac_cv_native_windows" in
- yes)
- AC_DEFINE_UNQUOTED(NATIVE_WINDOWS, 1,
- [Define to 1 if you are building a native Windows target.])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_HEADER_WINSOCK
-dnl -------------------------------------------------
-dnl Check for compilable and valid winsock.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
- AC_CACHE_CHECK([for winsock.h], [ac_cv_header_winsock_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#include <winsock.h>
- ]],[[
-#if defined(__CYGWIN__) || defined(__CEGCC__)
- HAVE_WINSOCK_H shall not be defined.
-#else
- int dummy=WSACleanup();
-#endif
- ]])
- ],[
- ac_cv_header_winsock_h="yes"
- ],[
- ac_cv_header_winsock_h="no"
- ])
- ])
- case "$ac_cv_header_winsock_h" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_WINSOCK_H, 1,
- [Define to 1 if you have the winsock.h header file.])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_HEADER_WINSOCK2
-dnl -------------------------------------------------
-dnl Check for compilable and valid winsock2.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
- AC_CACHE_CHECK([for winsock2.h], [ac_cv_header_winsock2_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#include <winsock2.h>
- ]],[[
-#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
- HAVE_WINSOCK2_H shall not be defined.
-#else
- int dummy=2*IPPROTO_ESP;
-#endif
- ]])
- ],[
- ac_cv_header_winsock2_h="yes"
- ],[
- ac_cv_header_winsock2_h="no"
- ])
- ])
- case "$ac_cv_header_winsock2_h" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1,
- [Define to 1 if you have the winsock2.h header file.])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_HEADER_WS2TCPIP
-dnl -------------------------------------------------
-dnl Check for compilable and valid ws2tcpip.h header
-
-AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
- AC_CACHE_CHECK([for ws2tcpip.h], [ac_cv_header_ws2tcpip_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#include <winsock2.h>
-#include <ws2tcpip.h>
- ]],[[
-#if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
- HAVE_WS2TCPIP_H shall not be defined.
-#else
- int dummy=2*IP_PKTINFO;
-#endif
- ]])
- ],[
- ac_cv_header_ws2tcpip_h="yes"
- ],[
- ac_cv_header_ws2tcpip_h="no"
- ])
- ])
- case "$ac_cv_header_ws2tcpip_h" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
- [Define to 1 if you have the ws2tcpip.h header file.])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_HEADER_MALLOC
-dnl -------------------------------------------------
-dnl Check for compilable and valid malloc.h header,
-dnl and check if it is needed even with stdlib.h
-
-AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
- AC_CACHE_CHECK([for malloc.h], [ac_cv_header_malloc_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <malloc.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- ac_cv_header_malloc_h="yes"
- ],[
- ac_cv_header_malloc_h="no"
- ])
- ])
- if test "$ac_cv_header_malloc_h" = "yes"; then
- AC_DEFINE_UNQUOTED(HAVE_MALLOC_H, 1,
- [Define to 1 if you have the malloc.h header file.])
- #
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <stdlib.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- curl_cv_need_header_malloc_h="no"
- ],[
- curl_cv_need_header_malloc_h="yes"
- ])
- #
- case "$curl_cv_need_header_malloc_h" in
- yes)
- AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
- [Define to 1 if you need the malloc.h header file even with stdlib.h])
- ;;
- esac
- fi
-])
-
-
-dnl CURL_CHECK_HEADER_MEMORY
-dnl -------------------------------------------------
-dnl Check for compilable and valid memory.h header,
-dnl and check if it is needed even with stdlib.h for
-dnl memory related functions.
-
-AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
- AC_CACHE_CHECK([for memory.h], [ac_cv_header_memory_h], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <memory.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- ac_cv_header_memory_h="yes"
- ],[
- ac_cv_header_memory_h="no"
- ])
- ])
- if test "$ac_cv_header_memory_h" = "yes"; then
- AC_DEFINE_UNQUOTED(HAVE_MEMORY_H, 1,
- [Define to 1 if you have the memory.h header file.])
- #
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <stdlib.h>
- ]],[[
- void *p = malloc(10);
- void *q = calloc(10,10);
- free(p);
- free(q);
- ]])
- ],[
- curl_cv_need_header_memory_h="no"
- ],[
- curl_cv_need_header_memory_h="yes"
- ])
- #
- case "$curl_cv_need_header_memory_h" in
- yes)
- AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
- [Define to 1 if you need the memory.h header file even with stdlib.h])
- ;;
- esac
- fi
-])
-
-
-dnl CURL_CHECK_FUNC_GETNAMEINFO
-dnl -------------------------------------------------
-dnl Test if the getnameinfo function is available,
-dnl and check the types of five of its arguments.
-dnl If the function succeeds HAVE_GETNAMEINFO will be
-dnl defined, defining the types of the arguments in
-dnl GETNAMEINFO_TYPE_ARG1, GETNAMEINFO_TYPE_ARG2,
-dnl GETNAMEINFO_TYPE_ARG46 and GETNAMEINFO_TYPE_ARG7,
-dnl and also defining the type qualifier of first
-dnl argument in GETNAMEINFO_QUAL_ARG1.
-
-AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
- AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
- AC_CHECK_HEADERS(sys/types.h sys/socket.h netdb.h)
- #
- AC_MSG_CHECKING([for getnameinfo])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getnameinfo])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_getnameinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- curl_cv_getnameinfo="no"
- ])
- #
- if test "$curl_cv_getnameinfo" != "yes"; then
- AC_MSG_CHECKING([deeper for getnameinfo])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- getnameinfo();
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_getnameinfo="yes"
- ],[
- AC_MSG_RESULT([but still no])
- curl_cv_getnameinfo="no"
- ])
- fi
- #
- if test "$curl_cv_getnameinfo" != "yes"; then
- AC_MSG_CHECKING([deeper and deeper for getnameinfo])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#endif
- ]],[[
- getnameinfo(0, 0, 0, 0, 0, 0, 0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_getnameinfo="yes"
- ],[
- AC_MSG_RESULT([but still no])
- curl_cv_getnameinfo="no"
- ])
- fi
- #
- if test "$curl_cv_getnameinfo" = "yes"; then
- AC_CACHE_CHECK([types of arguments for getnameinfo],
- [curl_cv_func_getnameinfo_args], [
- curl_cv_func_getnameinfo_args="unknown"
- for gni_arg1 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
- for gni_arg2 in 'socklen_t' 'size_t' 'int'; do
- for gni_arg46 in 'size_t' 'int' 'socklen_t' 'unsigned int' 'DWORD'; do
- for gni_arg7 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#if (!defined(_WIN32_WINNT)) || (_WIN32_WINNT < 0x0501)
-#undef _WIN32_WINNT
-#define _WIN32_WINNT 0x0501
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#define GNICALLCONV WSAAPI
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#define GNICALLCONV
-#endif
- extern int GNICALLCONV getnameinfo($gni_arg1, $gni_arg2,
- char *, $gni_arg46,
- char *, $gni_arg46,
- $gni_arg7);
- ]],[[
- $gni_arg2 salen=0;
- $gni_arg46 hostlen=0;
- $gni_arg46 servlen=0;
- $gni_arg7 flags=0;
- int res = getnameinfo(0, salen, 0, hostlen, 0, servlen, flags);
- ]])
- ],[
- curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7"
- ])
- fi
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
- AC_MSG_WARN([Cannot find proper types to use for getnameinfo args])
- AC_MSG_WARN([HAVE_GETNAMEINFO will not be defined])
- else
- gni_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_getnameinfo_args" | sed 's/\*/\*/g'`
- IFS=$gni_prev_IFS
- shift
- #
- gni_qual_type_arg1=$[1]
- #
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG2, $[2],
- [Define to the type of arg 2 for getnameinfo.])
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG46, $[3],
- [Define to the type of args 4 and 6 for getnameinfo.])
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG7, $[4],
- [Define to the type of arg 7 for getnameinfo.])
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$gni_qual_type_arg1" in
- const*)
- gni_qual_arg1=const
- gni_type_arg1=`echo $gni_qual_type_arg1 | sed 's/^const //'`
- ;;
- *)
- gni_qual_arg1=
- gni_type_arg1=$gni_qual_type_arg1
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(GETNAMEINFO_QUAL_ARG1, $gni_qual_arg1,
- [Define to the type qualifier of arg 1 for getnameinfo.])
- AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG1, $gni_type_arg1,
- [Define to the type of arg 1 for getnameinfo.])
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(HAVE_GETNAMEINFO, 1,
- [Define to 1 if you have the getnameinfo function.])
- ac_cv_func_getnameinfo="yes"
- fi
- fi
-])
-
-
-dnl TYPE_SOCKADDR_STORAGE
-dnl -------------------------------------------------
-dnl Check for struct sockaddr_storage. Most IPv6-enabled
-dnl hosts have it, but AIX 4.3 is one known exception.
-
-AC_DEFUN([TYPE_SOCKADDR_STORAGE],
-[
- AC_CHECK_TYPE([struct sockaddr_storage],
- AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
- [if struct sockaddr_storage is defined]), ,
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#endif
- ])
-])
-
-
-dnl CURL_CHECK_NI_WITHSCOPEID
-dnl -------------------------------------------------
-dnl Check for working NI_WITHSCOPEID in getnameinfo()
-
-AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID], [
- AC_REQUIRE([CURL_CHECK_FUNC_GETNAMEINFO])dnl
- AC_REQUIRE([TYPE_SOCKADDR_STORAGE])dnl
- AC_CHECK_HEADERS(stdio.h sys/types.h sys/socket.h \
- netdb.h netinet/in.h arpa/inet.h)
- #
- AC_CACHE_CHECK([for working NI_WITHSCOPEID],
- [ac_cv_working_ni_withscopeid], [
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_STDIO_H
-#include <stdio.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
- ]],[[
-#if defined(NI_WITHSCOPEID) && defined(HAVE_GETNAMEINFO)
-#ifdef HAVE_STRUCT_SOCKADDR_STORAGE
- struct sockaddr_storage sa;
-#else
- unsigned char sa[256];
-#endif
- char hostbuf[NI_MAXHOST];
- int rc;
- GETNAMEINFO_TYPE_ARG2 salen = (GETNAMEINFO_TYPE_ARG2)sizeof(sa);
- GETNAMEINFO_TYPE_ARG46 hostlen = (GETNAMEINFO_TYPE_ARG46)sizeof(hostbuf);
- GETNAMEINFO_TYPE_ARG7 flags = NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID;
- int fd = socket(AF_INET6, SOCK_STREAM, 0);
- if(fd < 0) {
- perror("socket()");
- return 1; /* Error creating socket */
- }
- rc = getsockname(fd, (GETNAMEINFO_TYPE_ARG1)&sa, &salen);
- if(rc) {
- perror("getsockname()");
- return 2; /* Error retrieving socket name */
- }
- rc = getnameinfo((GETNAMEINFO_TYPE_ARG1)&sa, salen, hostbuf, hostlen, NULL, 0, flags);
- if(rc) {
- printf("rc = %s\n", gai_strerror(rc));
- return 3; /* Error translating socket address */
- }
- return 0; /* Ok, NI_WITHSCOPEID works */
-#else
- return 4; /* Error, NI_WITHSCOPEID not defined or no getnameinfo() */
-#endif
- ]]) # AC-LANG-PROGRAM
- ],[
- # Exit code == 0. Program worked.
- ac_cv_working_ni_withscopeid="yes"
- ],[
- # Exit code != 0. Program failed.
- ac_cv_working_ni_withscopeid="no"
- ],[
- # Program is not run when cross-compiling. So we assume
- # NI_WITHSCOPEID will work if we are able to compile it.
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netdb.h>
- ]],[[
- unsigned int dummy= NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID;
- ]])
- ],[
- ac_cv_working_ni_withscopeid="yes"
- ],[
- ac_cv_working_ni_withscopeid="no"
- ]) # AC-COMPILE-IFELSE
- ]) # AC-RUN-IFELSE
- ]) # AC-CACHE-CHECK
- case "$ac_cv_working_ni_withscopeid" in
- yes)
- AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
- [Define to 1 if NI_WITHSCOPEID exists and works.])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_FUNC_RECV
-dnl -------------------------------------------------
-dnl Test if the socket recv() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_RECV
-dnl will be defined, defining the types of the arguments
-dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
-dnl and RECV_TYPE_ARG4, defining the type of the function
-dnl return value in RECV_TYPE_RETV.
-
-AC_DEFUN([CURL_CHECK_FUNC_RECV], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
- AC_CHECK_HEADERS(sys/types.h sys/socket.h)
- #
- AC_MSG_CHECKING([for recv])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ]],[[
- recv(0, 0, 0, 0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_recv="yes"
- ],[
- AC_MSG_RESULT([no])
- curl_cv_recv="no"
- ])
- #
- if test "$curl_cv_recv" = "yes"; then
- AC_CACHE_CHECK([types of args and return type for recv],
- [curl_cv_func_recv_args], [
- curl_cv_func_recv_args="unknown"
- for recv_retv in 'int' 'ssize_t'; do
- for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for recv_arg2 in 'char *' 'void *'; do
- for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for recv_arg4 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_recv_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#define RECVCALLCONV PASCAL
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define RECVCALLCONV
-#endif
- extern $recv_retv RECVCALLCONV
- recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
- ]],[[
- $recv_arg1 s=0;
- $recv_arg2 buf=0;
- $recv_arg3 len=0;
- $recv_arg4 flags=0;
- $recv_retv res = recv(s, buf, len, flags);
- ]])
- ],[
- curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
- ])
- fi
- done
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_recv_args" = "unknown"; then
- AC_MSG_ERROR([Cannot find proper types to use for recv args])
- else
- recv_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
- IFS=$recv_prev_IFS
- shift
- #
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG1, $[1],
- [Define to the type of arg 1 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG2, $[2],
- [Define to the type of arg 2 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG3, $[3],
- [Define to the type of arg 3 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_ARG4, $[4],
- [Define to the type of arg 4 for recv.])
- AC_DEFINE_UNQUOTED(RECV_TYPE_RETV, $[5],
- [Define to the function return type for recv.])
- #
- AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
- [Define to 1 if you have the recv function.])
- ac_cv_func_recv="yes"
- fi
- else
- AC_MSG_ERROR([Unable to link function recv])
- fi
-])
-
-
-dnl CURL_CHECK_FUNC_SEND
-dnl -------------------------------------------------
-dnl Test if the socket send() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_SEND
-dnl will be defined, defining the types of the arguments
-dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
-dnl and SEND_TYPE_ARG4, defining the type of the function
-dnl return value in SEND_TYPE_RETV, and also defining the
-dnl type qualifier of second argument in SEND_QUAL_ARG2.
-
-AC_DEFUN([CURL_CHECK_FUNC_SEND], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
- AC_CHECK_HEADERS(sys/types.h sys/socket.h)
- #
- AC_MSG_CHECKING([for send])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ]],[[
- send(0, 0, 0, 0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_send="yes"
- ],[
- AC_MSG_RESULT([no])
- curl_cv_send="no"
- ])
- #
- if test "$curl_cv_send" = "yes"; then
- AC_CACHE_CHECK([types of args and return type for send],
- [curl_cv_func_send_args], [
- curl_cv_func_send_args="unknown"
- for send_retv in 'int' 'ssize_t'; do
- for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
- for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for send_arg4 in 'int' 'unsigned int'; do
- if test "$curl_cv_func_send_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#define SENDCALLCONV PASCAL
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define SENDCALLCONV
-#endif
- extern $send_retv SENDCALLCONV
- send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
- ]],[[
- $send_arg1 s=0;
- $send_arg3 len=0;
- $send_arg4 flags=0;
- $send_retv res = send(s, 0, len, flags);
- ]])
- ],[
- curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
- ])
- fi
- done
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- if test "$curl_cv_func_send_args" = "unknown"; then
- AC_MSG_ERROR([Cannot find proper types to use for send args])
- else
- send_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
- IFS=$send_prev_IFS
- shift
- #
- send_qual_type_arg2=$[2]
- #
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG1, $[1],
- [Define to the type of arg 1 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG3, $[3],
- [Define to the type of arg 3 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG4, $[4],
- [Define to the type of arg 4 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_RETV, $[5],
- [Define to the function return type for send.])
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- case "$send_qual_type_arg2" in
- const*)
- send_qual_arg2=const
- send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
- ;;
- *)
- send_qual_arg2=
- send_type_arg2=$send_qual_type_arg2
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(SEND_QUAL_ARG2, $send_qual_arg2,
- [Define to the type qualifier of arg 2 for send.])
- AC_DEFINE_UNQUOTED(SEND_TYPE_ARG2, $send_type_arg2,
- [Define to the type of arg 2 for send.])
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
- [Define to 1 if you have the send function.])
- ac_cv_func_send="yes"
- fi
- else
- AC_MSG_ERROR([Unable to link function send])
- fi
-])
-
-
-dnl CURL_CHECK_FUNC_RECVFROM
-dnl -------------------------------------------------
-dnl Test if the socket recvfrom() function is available,
-dnl and check its return type and the types of its
-dnl arguments. If the function succeeds HAVE_RECVFROM
-dnl will be defined, defining the types of the arguments
-dnl in RECVFROM_TYPE_ARG1, RECVFROM_TYPE_ARG2, and so on
-dnl to RECVFROM_TYPE_ARG6, defining also the type of the
-dnl function return value in RECVFROM_TYPE_RETV.
-dnl Notice that the types returned for pointer arguments
-dnl will actually be the type pointed by the pointer.
-
-AC_DEFUN([CURL_CHECK_FUNC_RECVFROM], [
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
- AC_CHECK_HEADERS(sys/types.h sys/socket.h)
- #
- AC_MSG_CHECKING([for recvfrom])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ]],[[
- recvfrom(0, 0, 0, 0, 0, 0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- curl_cv_recvfrom="yes"
- ],[
- AC_MSG_RESULT([no])
- curl_cv_recvfrom="no"
- ])
- #
- if test "$curl_cv_recvfrom" = "yes"; then
- AC_CACHE_CHECK([types of args and return type for recvfrom],
- [curl_cv_func_recvfrom_args], [
- curl_cv_func_recvfrom_args="unknown"
- for recvfrom_retv in 'int' 'ssize_t'; do
- for recvfrom_arg1 in 'int' 'ssize_t' 'SOCKET'; do
- for recvfrom_arg2 in 'char *' 'void *'; do
- for recvfrom_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
- for recvfrom_arg4 in 'int' 'unsigned int'; do
- for recvfrom_arg5 in 'struct sockaddr *' 'void *'; do
- for recvfrom_arg6 in 'socklen_t *' 'int *' 'unsigned int *' 'size_t *' 'void *'; do
- if test "$curl_cv_func_recvfrom_args" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#define RECVFROMCALLCONV PASCAL
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#define RECVFROMCALLCONV
-#endif
- extern $recvfrom_retv RECVFROMCALLCONV
- recvfrom($recvfrom_arg1, $recvfrom_arg2,
- $recvfrom_arg3, $recvfrom_arg4,
- $recvfrom_arg5, $recvfrom_arg6);
- ]],[[
- $recvfrom_arg1 s=0;
- $recvfrom_arg2 buf=0;
- $recvfrom_arg3 len=0;
- $recvfrom_arg4 flags=0;
- $recvfrom_arg5 addr=0;
- $recvfrom_arg6 addrlen=0;
- $recvfrom_retv res=0;
- res = recvfrom(s, buf, len, flags, addr, addrlen);
- ]])
- ],[
- curl_cv_func_recvfrom_args="$recvfrom_arg1,$recvfrom_arg2,$recvfrom_arg3,$recvfrom_arg4,$recvfrom_arg5,$recvfrom_arg6,$recvfrom_retv"
- ])
- fi
- done
- done
- done
- done
- done
- done
- done
- ]) # AC-CACHE-CHECK
- # Nearly last minute change for this release starts here
- AC_DEFINE_UNQUOTED(HAVE_RECVFROM, 1,
- [Define to 1 if you have the recvfrom function.])
- ac_cv_func_recvfrom="yes"
- # Nearly last minute change for this release ends here
- if test "$curl_cv_func_recvfrom_args" = "unknown"; then
- AC_MSG_WARN([Cannot find proper types to use for recvfrom args])
- else
- recvfrom_prev_IFS=$IFS; IFS=','
- set dummy `echo "$curl_cv_func_recvfrom_args" | sed 's/\*/\*/g'`
- IFS=$recvfrom_prev_IFS
- shift
- #
- recvfrom_ptrt_arg2=$[2]
- recvfrom_ptrt_arg5=$[5]
- recvfrom_ptrt_arg6=$[6]
- #
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG1, $[1],
- [Define to the type of arg 1 for recvfrom.])
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG3, $[3],
- [Define to the type of arg 3 for recvfrom.])
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG4, $[4],
- [Define to the type of arg 4 for recvfrom.])
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_RETV, $[7],
- [Define to the function return type for recvfrom.])
- #
- prev_sh_opts=$-
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set -f
- ;;
- esac
- #
- recvfrom_type_arg2=`echo $recvfrom_ptrt_arg2 | sed 's/ \*//'`
- recvfrom_type_arg5=`echo $recvfrom_ptrt_arg5 | sed 's/ \*//'`
- recvfrom_type_arg6=`echo $recvfrom_ptrt_arg6 | sed 's/ \*//'`
- #
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2, $recvfrom_type_arg2,
- [Define to the type pointed by arg 2 for recvfrom.])
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5, $recvfrom_type_arg5,
- [Define to the type pointed by arg 5 for recvfrom.])
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6, $recvfrom_type_arg6,
- [Define to the type pointed by arg 6 for recvfrom.])
- #
- if test "$recvfrom_type_arg2" = "void"; then
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2_IS_VOID, 1,
- [Define to 1 if the type pointed by arg 2 for recvfrom is void.])
- fi
- if test "$recvfrom_type_arg5" = "void"; then
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5_IS_VOID, 1,
- [Define to 1 if the type pointed by arg 5 for recvfrom is void.])
- fi
- if test "$recvfrom_type_arg6" = "void"; then
- AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6_IS_VOID, 1,
- [Define to 1 if the type pointed by arg 6 for recvfrom is void.])
- fi
- #
- case $prev_sh_opts in
- *f*)
- ;;
- *)
- set +f
- ;;
- esac
- #
- AC_DEFINE_UNQUOTED(HAVE_RECVFROM, 1,
- [Define to 1 if you have the recvfrom function.])
- ac_cv_func_recvfrom="yes"
- fi
- else
- AC_MSG_WARN([Unable to link function recvfrom])
- AC_MSG_WARN([Your system will be vulnerable to some forms of DNS cache poisoning])
- fi
-])
-
-
-dnl CURL_CHECK_MSG_NOSIGNAL
-dnl -------------------------------------------------
-dnl Check for MSG_NOSIGNAL
-
-AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
- AC_CHECK_HEADERS(sys/types.h sys/socket.h)
- AC_CACHE_CHECK([for MSG_NOSIGNAL], [ac_cv_msg_nosignal], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ]],[[
- int flag=MSG_NOSIGNAL;
- ]])
- ],[
- ac_cv_msg_nosignal="yes"
- ],[
- ac_cv_msg_nosignal="no"
- ])
- ])
- case "$ac_cv_msg_nosignal" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1,
- [Define to 1 if you have the MSG_NOSIGNAL flag.])
- ;;
- esac
-])
-
-
-dnl CURL_CHECK_STRUCT_TIMEVAL
-dnl -------------------------------------------------
-dnl Check for timeval struct
-
-AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
- AC_REQUIRE([AC_HEADER_TIME])dnl
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
- AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
- AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
- AC_CACHE_CHECK([for struct timeval], [ac_cv_struct_timeval], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#ifdef TIME_WITH_SYS_TIME
-#include <time.h>
-#endif
-#else
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
- ]],[[
- struct timeval ts;
- ts.tv_sec = 0;
- ts.tv_usec = 0;
- ]])
- ],[
- ac_cv_struct_timeval="yes"
- ],[
- ac_cv_struct_timeval="no"
- ])
- ])
- case "$ac_cv_struct_timeval" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1,
- [Define to 1 if you have the timeval struct.])
- ;;
- esac
-])
-
-
-dnl TYPE_SIG_ATOMIC_T
-dnl -------------------------------------------------
-dnl Check if the sig_atomic_t type is available, and
-dnl verify if it is already defined as volatile.
-
-AC_DEFUN([TYPE_SIG_ATOMIC_T], [
- AC_CHECK_HEADERS(signal.h)
- AC_CHECK_TYPE([sig_atomic_t],[
- AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
- [Define to 1 if sig_atomic_t is an available typedef.])
- ], ,[
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
- ])
- case "$ac_cv_type_sig_atomic_t" in
- yes)
- #
- AC_MSG_CHECKING([if sig_atomic_t is already defined as volatile])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_SIGNAL_H
-#include <signal.h>
-#endif
- ]],[[
- static volatile sig_atomic_t dummy = 0;
- ]])
- ],[
- AC_MSG_RESULT([no])
- ac_cv_sig_atomic_t_volatile="no"
- ],[
- AC_MSG_RESULT([yes])
- ac_cv_sig_atomic_t_volatile="yes"
- ])
- #
- if test "$ac_cv_sig_atomic_t_volatile" = "yes"; then
- AC_DEFINE(HAVE_SIG_ATOMIC_T_VOLATILE, 1,
- [Define to 1 if sig_atomic_t is already defined as volatile.])
- fi
- ;;
- esac
-])
-
-
-dnl TYPE_IN_ADDR_T
-dnl -------------------------------------------------
-dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
-dnl and a few other things.
-
-AC_DEFUN([TYPE_IN_ADDR_T], [
- AC_CHECK_TYPE([in_addr_t], ,[
- dnl in_addr_t not available
- AC_CACHE_CHECK([for in_addr_t equivalent],
- [curl_cv_in_addr_t_equiv], [
- curl_cv_in_addr_t_equiv="unknown"
- for t in "unsigned long" int size_t unsigned long; do
- if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#endif
- ]],[[
- $t data = inet_addr ("1.2.3.4");
- ]])
- ],[
- curl_cv_in_addr_t_equiv="$t"
- ])
- fi
- done
- ])
- case "$curl_cv_in_addr_t_equiv" in
- unknown)
- AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
- ;;
- *)
- AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
- [Type to use in place of in_addr_t when system does not provide it.])
- ;;
- esac
- ],[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-#endif
- ])
-])
-
-
-dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
-dnl -------------------------------------------------
-dnl Check if monotonic clock_gettime is available.
-
-AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
- AC_REQUIRE([AC_HEADER_TIME])dnl
- AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
- AC_MSG_CHECKING([for monotonic clock_gettime])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#ifdef TIME_WITH_SYS_TIME
-#include <time.h>
-#endif
-#else
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-#endif
- ]],[[
- struct timespec ts;
- (void)clock_gettime(CLOCK_MONOTONIC, &ts);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- ac_cv_func_clock_gettime="yes"
- ],[
- AC_MSG_RESULT([no])
- ac_cv_func_clock_gettime="no"
- ])
- dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
- dnl until library linking and run-time checks for clock_gettime succeed.
-])
-
-
-dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
-dnl -------------------------------------------------
-dnl If monotonic clock_gettime is available then,
-dnl check and prepended to LIBS any needed libraries.
-
-AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
- AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl
- #
- if test "$ac_cv_func_clock_gettime" = "yes"; then
- #
- AC_MSG_CHECKING([for clock_gettime in libraries])
- #
- curl_cv_save_LIBS="$LIBS"
- curl_cv_gclk_LIBS="unknown"
- #
- for x_xlibs in '' '-lrt' '-lposix4' ; do
- if test "$curl_cv_gclk_LIBS" = "unknown"; then
- if test -z "$x_xlibs"; then
- LIBS="$curl_cv_save_LIBS"
- else
- LIBS="$x_xlibs $curl_cv_save_LIBS"
- fi
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#ifdef TIME_WITH_SYS_TIME
-#include <time.h>
-#endif
-#else
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-#endif
- ]],[[
- struct timespec ts;
- (void)clock_gettime(CLOCK_MONOTONIC, &ts);
- ]])
- ],[
- curl_cv_gclk_LIBS="$x_xlibs"
- ])
- fi
- done
- #
- LIBS="$curl_cv_save_LIBS"
- #
- case X-"$curl_cv_gclk_LIBS" in
- X-unknown)
- AC_MSG_RESULT([cannot find clock_gettime])
- AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
- ac_cv_func_clock_gettime="no"
- ;;
- X-)
- AC_MSG_RESULT([no additional lib required])
- ac_cv_func_clock_gettime="yes"
- ;;
- *)
- if test -z "$curl_cv_save_LIBS"; then
- LIBS="$curl_cv_gclk_LIBS"
- else
- LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS"
- fi
- AC_MSG_RESULT([$curl_cv_gclk_LIBS])
- ac_cv_func_clock_gettime="yes"
- ;;
- esac
- #
- dnl only do runtime verification when not cross-compiling
- if test "x$cross_compiling" != "xyes" &&
- test "$ac_cv_func_clock_gettime" = "yes"; then
- AC_MSG_CHECKING([if monotonic clock_gettime works])
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_STDLIB_H
-#include <stdlib.h>
-#endif
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#ifdef TIME_WITH_SYS_TIME
-#include <time.h>
-#endif
-#else
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-#endif
- ]],[[
- struct timespec ts;
- if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
- exit(0);
- else
- exit(1);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
- ac_cv_func_clock_gettime="no"
- LIBS="$curl_cv_save_LIBS"
- ])
- fi
- #
- case "$ac_cv_func_clock_gettime" in
- yes)
- AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
- [Define to 1 if you have the clock_gettime function and monotonic timer.])
- ;;
- esac
- #
- fi
- #
-])
-
-
-dnl CARES_CHECK_LIBS_CONNECT
-dnl -------------------------------------------------
-dnl Verify if network connect function is already available
-dnl using current libraries or if another one is required.
-
-AC_DEFUN([CARES_CHECK_LIBS_CONNECT], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_MSG_CHECKING([for connect in libraries])
- tst_connect_save_LIBS="$LIBS"
- tst_connect_need_LIBS="unknown"
- for tst_lib in '' '-lsocket' ; do
- if test "$tst_connect_need_LIBS" = "unknown"; then
- LIBS="$tst_lib $tst_connect_save_LIBS"
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- #ifndef HAVE_WINDOWS_H
- int connect(int, void*, int);
- #endif
- ]],[[
- if(0 != connect(0, 0, 0))
- return 1;
- ]])
- ],[
- tst_connect_need_LIBS="$tst_lib"
- ])
- fi
- done
- LIBS="$tst_connect_save_LIBS"
- #
- case X-"$tst_connect_need_LIBS" in
- X-unknown)
- AC_MSG_RESULT([cannot find connect])
- AC_MSG_ERROR([cannot find connect function in libraries.])
- ;;
- X-)
- AC_MSG_RESULT([yes])
- ;;
- *)
- AC_MSG_RESULT([$tst_connect_need_LIBS])
- LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
- ;;
- esac
-])
-
-
-dnl CARES_DEFINE_UNQUOTED (VARIABLE, [VALUE])
-dnl -------------------------------------------------
-dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
-dnl symbol that can be further used in custom template configuration
-dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third
-dnl argument for the description. Symbol definitions done with this
-dnl macro are intended to be exclusively used in handcrafted *.h.in
-dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one
-dnl prevents autoheader generation and insertion of symbol template
-dnl stub and definition into the first configuration header file. Do
-dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each
-dnl one serves different functional needs.
-
-AC_DEFUN([CARES_DEFINE_UNQUOTED], [
-cat >>confdefs.h <<_EOF
-[@%:@define] $1 ifelse($#, 2, [$2], 1)
-_EOF
-])
-
-
-dnl CARES_CONFIGURE_LONG
-dnl -------------------------------------------------
-dnl Find out the size of long as reported by sizeof() and define
-dnl CARES_SIZEOF_LONG as appropriate to be used in template file
-dnl ares_build.h.in to properly configure the library.
-dnl The size of long is a build time characteristic and as such
-dnl must be recorded in ares_build.h
-
-AC_DEFUN([CARES_CONFIGURE_LONG], [
- if test -z "$ac_cv_sizeof_long" ||
- test "$ac_cv_sizeof_long" -eq "0"; then
- AC_MSG_ERROR([cannot find out size of long.])
- fi
- CARES_DEFINE_UNQUOTED([CARES_SIZEOF_LONG], [$ac_cv_sizeof_long])
-])
-
-
-dnl CARES_CONFIGURE_ARES_SOCKLEN_T
-dnl -------------------------------------------------
-dnl Find out suitable ares_socklen_t data type definition and size, making
-dnl appropriate definitions for template file ares_build.h.in
-dnl to properly configure and use the library.
-dnl
-dnl The need for the ares_socklen_t definition arises mainly to properly
-dnl interface HP-UX systems which on one hand have a typedef'ed socklen_t
-dnl data type which is 32 or 64-Bit wide depending on the data model being
-dnl used, and that on the other hand is only actually used when interfacing
-dnl the X/Open sockets provided in the xnet library.
-
-AC_DEFUN([CARES_CONFIGURE_ARES_SOCKLEN_T], [
- AC_REQUIRE([CARES_INCLUDES_WS2TCPIP])dnl
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- AC_REQUIRE([CARES_PREPROCESS_CALLCONV])dnl
- #
- AC_MSG_CHECKING([for ares_socklen_t data type])
- cares_typeof_ares_socklen_t="unknown"
- for arg1 in int SOCKET; do
- for arg2 in 'struct sockaddr' void; do
- for t in socklen_t int size_t 'unsigned int' long 'unsigned long' void; do
- if test "$cares_typeof_ares_socklen_t" = "unknown"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_preprocess_callconv
- extern int FUNCALLCONV getpeername($arg1, $arg2 *, $t *);
- ]],[[
- $t *lenptr = 0;
- if(0 != getpeername(0, 0, lenptr))
- return 1;
- ]])
- ],[
- cares_typeof_ares_socklen_t="$t"
- ])
- fi
- done
- done
- done
- for t in socklen_t int; do
- if test "$cares_typeof_ares_socklen_t" = "void"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_sys_socket
- typedef $t ares_socklen_t;
- ]],[[
- ares_socklen_t dummy;
- ]])
- ],[
- cares_typeof_ares_socklen_t="$t"
- ])
- fi
- done
- AC_MSG_RESULT([$cares_typeof_ares_socklen_t])
- if test "$cares_typeof_ares_socklen_t" = "void" ||
- test "$cares_typeof_ares_socklen_t" = "unknown"; then
- AC_MSG_ERROR([cannot find data type for ares_socklen_t.])
- fi
- #
- AC_MSG_CHECKING([size of ares_socklen_t])
- cares_sizeof_ares_socklen_t="unknown"
- cares_pull_headers_socklen_t="unknown"
- if test "$ac_cv_header_ws2tcpip_h" = "yes"; then
- tst_pull_header_checks='none ws2tcpip'
- tst_size_checks='4'
- else
- tst_pull_header_checks='none systypes syssocket'
- tst_size_checks='4 8 2'
- fi
- for tst_size in $tst_size_checks; do
- for tst_pull_headers in $tst_pull_header_checks; do
- if test "$cares_sizeof_ares_socklen_t" = "unknown"; then
- case $tst_pull_headers in
- ws2tcpip)
- tmp_includes="$cares_includes_ws2tcpip"
- ;;
- systypes)
- tmp_includes="$cares_includes_sys_types"
- ;;
- syssocket)
- tmp_includes="$cares_includes_sys_socket"
- ;;
- *)
- tmp_includes=""
- ;;
- esac
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $tmp_includes
- typedef $cares_typeof_ares_socklen_t ares_socklen_t;
- typedef char dummy_arr[sizeof(ares_socklen_t) == $tst_size ? 1 : -1];
- ]],[[
- ares_socklen_t dummy;
- ]])
- ],[
- cares_sizeof_ares_socklen_t="$tst_size"
- cares_pull_headers_socklen_t="$tst_pull_headers"
- ])
- fi
- done
- done
- AC_MSG_RESULT([$cares_sizeof_ares_socklen_t])
- if test "$cares_sizeof_ares_socklen_t" = "unknown"; then
- AC_MSG_ERROR([cannot find out size of ares_socklen_t.])
- fi
- #
- case $cares_pull_headers_socklen_t in
- ws2tcpip)
- CARES_DEFINE_UNQUOTED([CARES_PULL_WS2TCPIP_H])
- ;;
- systypes)
- CARES_DEFINE_UNQUOTED([CARES_PULL_SYS_TYPES_H])
- ;;
- syssocket)
- CARES_DEFINE_UNQUOTED([CARES_PULL_SYS_TYPES_H])
- CARES_DEFINE_UNQUOTED([CARES_PULL_SYS_SOCKET_H])
- ;;
- esac
- CARES_DEFINE_UNQUOTED([CARES_TYPEOF_ARES_SOCKLEN_T], [$cares_typeof_ares_socklen_t])
- CARES_DEFINE_UNQUOTED([CARES_SIZEOF_ARES_SOCKLEN_T], [$cares_sizeof_ares_socklen_t])
-])
-
-
-dnl This macro determines if the specified struct exists in the specified file
-dnl Syntax:
-dnl CARES_CHECK_STRUCT(headers, struct name, if found, [if not found])
-
-AC_DEFUN([CARES_CHECK_STRUCT], [
- AC_MSG_CHECKING([for struct $2])
- AC_TRY_COMPILE([$1],
- [
- struct $2 struct_instance;
- ], ac_struct="yes", ac_found="no")
- if test "$ac_struct" = "yes" ; then
- AC_MSG_RESULT(yes)
- $3
- else
- AC_MSG_RESULT(no)
- $4
- fi
-])
-
-dnl This macro determines if the specified constant exists in the specified file
-dnl Syntax:
-dnl CARES_CHECK_CONSTANT(headers, constant name, if found, [if not found])
-
-AC_DEFUN([CARES_CHECK_CONSTANT], [
- AC_MSG_CHECKING([for $2])
- AC_EGREP_CPP(VARIABLEWASDEFINED,
- [
- $1
-
- #ifdef $2
- VARIABLEWASDEFINED
- #else
- NJET
- #endif
- ], ac_constant="yes", ac_constant="no"
- )
- if test "$ac_constant" = "yes" ; then
- AC_MSG_RESULT(yes)
- $3
- else
- AC_MSG_RESULT(no)
- $4
- fi
-])
-
diff --git a/ares/acountry.c b/ares/acountry.c
deleted file mode 100644
index c30e6b7d7..000000000
--- a/ares/acountry.c
+++ /dev/null
@@ -1,628 +0,0 @@
-/*
- * $Id$
- *
- * IP-address/hostname to country converter.
- *
- * Problem; you want to know where IP a.b.c.d is located.
- *
- * Use ares_gethostbyname ("d.c.b.a.zz.countries.nerd.dk")
- * and get the CNAME (host->h_name). Result will be:
- * CNAME = zz<CC>.countries.nerd.dk with address 127.0.x.y (ver 1) or
- * CNAME = <a.b.c.d>.zz.countries.nerd.dk with address 127.0.x.y (ver 2)
- *
- * The 2 letter country code is in <CC> and the ISO-3166 country
- * number is in x.y (number = x*256 + y). Version 2 of the protocol is missing
- * the <CC> number.
- *
- * Ref: http://countries.nerd.dk/more.html
- *
- * Written by G. Vanem <gvanem@broadpark.no> 2006, 2007
- *
- * NB! This program may not be big-endian aware.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <ctype.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-#if defined(WIN32) && !defined(WATT32)
- #include <winsock.h>
-#else
- #include <sys/socket.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <netdb.h>
-#endif
-
-#include "ares.h"
-#include "ares_getopt.h"
-#include "inet_net_pton.h"
-#include "inet_ntop.h"
-
-#ifndef HAVE_STRDUP
-# include "ares_strdup.h"
-# define strdup(ptr) ares_strdup(ptr)
-#endif
-
-#ifndef HAVE_STRCASECMP
-# include "ares_strcasecmp.h"
-# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2)
-#endif
-
-#ifndef HAVE_STRNCASECMP
-# include "ares_strcasecmp.h"
-# define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n)
-#endif
-
-#ifndef INADDR_NONE
-#define INADDR_NONE 0xffffffff
-#endif
-
-static const char *usage = "acountry [-vh?] {host|addr} ...\n";
-static const char nerd_fmt[] = "%u.%u.%u.%u.zz.countries.nerd.dk";
-static const char *nerd_ver1 = nerd_fmt + 14;
-static const char *nerd_ver2 = nerd_fmt + 11;
-static int verbose = 0;
-
-#define TRACE(fmt) do { \
- if (verbose > 0) \
- printf fmt ; \
- } while (0)
-
-static void wait_ares(ares_channel channel);
-static void callback(void *arg, int status, int timeouts, struct hostent *host);
-static void callback2(void *arg, int status, int timeouts, struct hostent *host);
-static void find_country_from_cname(const char *cname, struct in_addr addr);
-
-static void Abort(const char *fmt, ...)
-{
- va_list args;
- va_start(args, fmt);
- vfprintf(stderr, fmt, args);
- va_end(args);
- exit(1);
-}
-
-int main(int argc, char **argv)
-{
- ares_channel channel;
- int ch, status;
-
-#if defined(WIN32) && !defined(WATT32)
- WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
- WSADATA wsaData;
- WSAStartup(wVersionRequested, &wsaData);
-#endif
-
- status = ares_library_init(ARES_LIB_INIT_ALL);
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status));
- return 1;
- }
-
- while ((ch = ares_getopt(argc, argv, "dvh?")) != -1)
- switch (ch)
- {
- case 'd':
-#ifdef WATT32
- dbug_init();
-#endif
- break;
- case 'v':
- verbose++;
- break;
- case 'h':
- case '?':
- default:
- Abort(usage);
- }
-
- argc -= optind;
- argv += optind;
- if (argc < 1)
- Abort(usage);
-
- status = ares_init(&channel);
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_init: %s\n", ares_strerror(status));
- return 1;
- }
-
- /* Initiate the queries, one per command-line argument. */
- for ( ; *argv; argv++)
- {
- struct in_addr addr;
- char buf[100];
-
- /* If this fails, assume '*argv' is a host-name that
- * must be resolved first
- */
- if (ares_inet_pton(AF_INET, *argv, &addr) != 1)
- {
- ares_gethostbyname(channel, *argv, AF_INET, callback2, &addr);
- wait_ares(channel);
- if (addr.s_addr == INADDR_NONE)
- {
- printf("Failed to lookup %s\n", *argv);
- continue;
- }
- }
-
- sprintf(buf, nerd_fmt,
- (unsigned int)(addr.s_addr >> 24),
- (unsigned int)((addr.s_addr >> 16) & 255),
- (unsigned int)((addr.s_addr >> 8) & 255),
- (unsigned int)(addr.s_addr & 255));
- TRACE(("Looking up %s...", buf));
- fflush(stdout);
- ares_gethostbyname(channel, buf, AF_INET, callback, buf);
- }
-
- wait_ares(channel);
- ares_destroy(channel);
-
- ares_library_cleanup();
-
-#if defined(WIN32) && !defined(WATT32)
- WSACleanup();
-#endif
-
- return 0;
-}
-
-/*
- * Wait for the queries to complete.
- */
-static void wait_ares(ares_channel channel)
-{
- for (;;)
- {
- struct timeval *tvp, tv;
- fd_set read_fds, write_fds;
- int nfds;
-
- FD_ZERO(&read_fds);
- FD_ZERO(&write_fds);
- nfds = ares_fds(channel, &read_fds, &write_fds);
- if (nfds == 0)
- break;
- tvp = ares_timeout(channel, NULL, &tv);
- select(nfds, &read_fds, &write_fds, NULL, tvp);
- ares_process(channel, &read_fds, &write_fds);
- }
-}
-
-/*
- * This is the callback used when we have the IP-address of interest.
- * Extract the CNAME and figure out the country-code from it.
- */
-static void callback(void *arg, int status, int timeouts, struct hostent *host)
-{
- const char *name = (const char*)arg;
- const char *cname;
- char buf[20];
-
- (void)timeouts;
-
- if (!host || status != ARES_SUCCESS)
- {
- printf("Failed to lookup %s: %s\n", name, ares_strerror(status));
- return;
- }
-
- TRACE(("\nFound address %s, name %s\n",
- ares_inet_ntop(AF_INET,(const char*)host->h_addr,buf,sizeof(buf)),
- host->h_name));
-
- cname = host->h_name; /* CNAME gets put here */
- if (!cname)
- printf("Failed to get CNAME for %s\n", name);
- else
- find_country_from_cname(cname, *(struct in_addr*)host->h_addr);
-}
-
-/*
- * This is the callback used to obtain the IP-address of the host of interest.
- */
-static void callback2(void *arg, int status, int timeouts, struct hostent *host)
-{
- struct in_addr *addr = (struct in_addr*) arg;
-
- (void)timeouts;
- if (!host || status != ARES_SUCCESS)
- memset(addr, INADDR_NONE, sizeof(*addr));
- else
- memcpy(addr, host->h_addr, sizeof(*addr));
-}
-
-struct search_list {
- int country_number; /* ISO-3166 country number */
- char short_name[3]; /* A2 short country code */
- const char *long_name; /* normal country name */
- };
-
-static const struct search_list *list_lookup(int number, const struct search_list *list, int num)
-{
- while (num > 0 && list->long_name)
- {
- if (list->country_number == number)
- return (list);
- num--;
- list++;
- }
- return (NULL);
-}
-
-/*
- * Ref: ftp://ftp.ripe.net/iso3166-countrycodes.txt
- */
-static const struct search_list country_list[] = {
- { 4, "af", "Afghanistan" },
- { 248, "ax", "Åland Island" },
- { 8, "al", "Albania" },
- { 12, "dz", "Algeria" },
- { 16, "as", "American Samoa" },
- { 20, "ad", "Andorra" },
- { 24, "ao", "Angola" },
- { 660, "ai", "Anguilla" },
- { 10, "aq", "Antarctica" },
- { 28, "ag", "Antigua & Barbuda" },
- { 32, "ar", "Argentina" },
- { 51, "am", "Armenia" },
- { 533, "aw", "Aruba" },
- { 36, "au", "Australia" },
- { 40, "at", "Austria" },
- { 31, "az", "Azerbaijan" },
- { 44, "bs", "Bahamas" },
- { 48, "bh", "Bahrain" },
- { 50, "bd", "Bangladesh" },
- { 52, "bb", "Barbados" },
- { 112, "by", "Belarus" },
- { 56, "be", "Belgium" },
- { 84, "bz", "Belize" },
- { 204, "bj", "Benin" },
- { 60, "bm", "Bermuda" },
- { 64, "bt", "Bhutan" },
- { 68, "bo", "Bolivia" },
- { 70, "ba", "Bosnia & Herzegowina" },
- { 72, "bw", "Botswana" },
- { 74, "bv", "Bouvet Island" },
- { 76, "br", "Brazil" },
- { 86, "io", "British Indian Ocean Territory" },
- { 96, "bn", "Brunei Darussalam" },
- { 100, "bg", "Bulgaria" },
- { 854, "bf", "Burkina Faso" },
- { 108, "bi", "Burundi" },
- { 116, "kh", "Cambodia" },
- { 120, "cm", "Cameroon" },
- { 124, "ca", "Canada" },
- { 132, "cv", "Cape Verde" },
- { 136, "ky", "Cayman Islands" },
- { 140, "cf", "Central African Republic" },
- { 148, "td", "Chad" },
- { 152, "cl", "Chile" },
- { 156, "cn", "China" },
- { 162, "cx", "Christmas Island" },
- { 166, "cc", "Cocos Islands" },
- { 170, "co", "Colombia" },
- { 174, "km", "Comoros" },
- { 178, "cg", "Congo" },
- { 180, "cd", "Congo" },
- { 184, "ck", "Cook Islands" },
- { 188, "cr", "Costa Rica" },
- { 384, "ci", "Cote d'Ivoire" },
- { 191, "hr", "Croatia" },
- { 192, "cu", "Cuba" },
- { 196, "cy", "Cyprus" },
- { 203, "cz", "Czech Republic" },
- { 208, "dk", "Denmark" },
- { 262, "dj", "Djibouti" },
- { 212, "dm", "Dominica" },
- { 214, "do", "Dominican Republic" },
- { 218, "ec", "Ecuador" },
- { 818, "eg", "Egypt" },
- { 222, "sv", "El Salvador" },
- { 226, "gq", "Equatorial Guinea" },
- { 232, "er", "Eritrea" },
- { 233, "ee", "Estonia" },
- { 231, "et", "Ethiopia" },
- { 238, "fk", "Falkland Islands" },
- { 234, "fo", "Faroe Islands" },
- { 242, "fj", "Fiji" },
- { 246, "fi", "Finland" },
- { 250, "fr", "France" },
- { 249, "fx", "France, Metropolitan" },
- { 254, "gf", "French Guiana" },
- { 258, "pf", "French Polynesia" },
- { 260, "tf", "French Southern Territories" },
- { 266, "ga", "Gabon" },
- { 270, "gm", "Gambia" },
- { 268, "ge", "Georgia" },
- { 276, "de", "Germany" },
- { 288, "gh", "Ghana" },
- { 292, "gi", "Gibraltar" },
- { 300, "gr", "Greece" },
- { 304, "gl", "Greenland" },
- { 308, "gd", "Grenada" },
- { 312, "gp", "Guadeloupe" },
- { 316, "gu", "Guam" },
- { 320, "gt", "Guatemala" },
- { 324, "gn", "Guinea" },
- { 624, "gw", "Guinea-Bissau" },
- { 328, "gy", "Guyana" },
- { 332, "ht", "Haiti" },
- { 334, "hm", "Heard & Mc Donald Islands" },
- { 336, "va", "Vatican City" },
- { 340, "hn", "Honduras" },
- { 344, "hk", "Hong kong" },
- { 348, "hu", "Hungary" },
- { 352, "is", "Iceland" },
- { 356, "in", "India" },
- { 360, "id", "Indonesia" },
- { 364, "ir", "Iran" },
- { 368, "iq", "Iraq" },
- { 372, "ie", "Ireland" },
- { 376, "il", "Israel" },
- { 380, "it", "Italy" },
- { 388, "jm", "Jamaica" },
- { 392, "jp", "Japan" },
- { 400, "jo", "Jordan" },
- { 398, "kz", "Kazakhstan" },
- { 404, "ke", "Kenya" },
- { 296, "ki", "Kiribati" },
- { 408, "kp", "Korea (north)" },
- { 410, "kr", "Korea (south)" },
- { 414, "kw", "Kuwait" },
- { 417, "kg", "Kyrgyzstan" },
- { 418, "la", "Laos" },
- { 428, "lv", "Latvia" },
- { 422, "lb", "Lebanon" },
- { 426, "ls", "Lesotho" },
- { 430, "lr", "Liberia" },
- { 434, "ly", "Libya" },
- { 438, "li", "Liechtenstein" },
- { 440, "lt", "Lithuania" },
- { 442, "lu", "Luxembourg" },
- { 446, "mo", "Macao" },
- { 807, "mk", "Macedonia" },
- { 450, "mg", "Madagascar" },
- { 454, "mw", "Malawi" },
- { 458, "my", "Malaysia" },
- { 462, "mv", "Maldives" },
- { 466, "ml", "Mali" },
- { 470, "mt", "Malta" },
- { 584, "mh", "Marshall Islands" },
- { 474, "mq", "Martinique" },
- { 478, "mr", "Mauritania" },
- { 480, "mu", "Mauritius" },
- { 175, "yt", "Mayotte" },
- { 484, "mx", "Mexico" },
- { 583, "fm", "Micronesia" },
- { 498, "md", "Moldova" },
- { 492, "mc", "Monaco" },
- { 496, "mn", "Mongolia" },
- { 500, "ms", "Montserrat" },
- { 504, "ma", "Morocco" },
- { 508, "mz", "Mozambique" },
- { 104, "mm", "Myanmar" },
- { 516, "na", "Namibia" },
- { 520, "nr", "Nauru" },
- { 524, "np", "Nepal" },
- { 528, "nl", "Netherlands" },
- { 530, "an", "Netherlands Antilles" },
- { 540, "nc", "New Caledonia" },
- { 554, "nz", "New Zealand" },
- { 558, "ni", "Nicaragua" },
- { 562, "ne", "Niger" },
- { 566, "ng", "Nigeria" },
- { 570, "nu", "Niue" },
- { 574, "nf", "Norfolk Island" },
- { 580, "mp", "Northern Mariana Islands" },
- { 578, "no", "Norway" },
- { 512, "om", "Oman" },
- { 586, "pk", "Pakistan" },
- { 585, "pw", "Palau" },
- { 275, "ps", "Palestinian Territory" },
- { 591, "pa", "Panama" },
- { 598, "pg", "Papua New Guinea" },
- { 600, "py", "Paraguay" },
- { 604, "pe", "Peru" },
- { 608, "ph", "Philippines" },
- { 612, "pn", "Pitcairn" },
- { 616, "pl", "Poland" },
- { 620, "pt", "Portugal" },
- { 630, "pr", "Puerto Rico" },
- { 634, "qa", "Qatar" },
- { 638, "re", "Reunion" },
- { 642, "ro", "Romania" },
- { 643, "ru", "Russia" },
- { 646, "rw", "Rwanda" },
- { 659, "kn", "Saint Kitts & Nevis" },
- { 662, "lc", "Saint Lucia" },
- { 670, "vc", "Saint Vincent" },
- { 882, "ws", "Samoa" },
- { 674, "sm", "San Marino" },
- { 678, "st", "Sao Tome & Principe" },
- { 682, "sa", "Saudi Arabia" },
- { 686, "sn", "Senegal" },
- { 891, "cs", "Serbia and Montenegro" },
- { 690, "sc", "Seychelles" },
- { 694, "sl", "Sierra Leone" },
- { 702, "sg", "Singapore" },
- { 703, "sk", "Slovakia" },
- { 705, "si", "Slovenia" },
- { 90, "sb", "Solomon Islands" },
- { 706, "so", "Somalia" },
- { 710, "za", "South Africa" },
- { 239, "gs", "South Georgia" },
- { 724, "es", "Spain" },
- { 144, "lk", "Sri Lanka" },
- { 654, "sh", "St. Helena" },
- { 666, "pm", "St. Pierre & Miquelon" },
- { 736, "sd", "Sudan" },
- { 740, "sr", "Suriname" },
- { 744, "sj", "Svalbard & Jan Mayen Islands" },
- { 748, "sz", "Swaziland" },
- { 752, "se", "Sweden" },
- { 756, "ch", "Switzerland" },
- { 760, "sy", "Syrian Arab Republic" },
- { 626, "tl", "Timor-Leste" },
- { 158, "tw", "Taiwan" },
- { 762, "tj", "Tajikistan" },
- { 834, "tz", "Tanzania" },
- { 764, "th", "Thailand" },
- { 768, "tg", "Togo" },
- { 772, "tk", "Tokelau" },
- { 776, "to", "Tonga" },
- { 780, "tt", "Trinidad & Tobago" },
- { 788, "tn", "Tunisia" },
- { 792, "tr", "Turkey" },
- { 795, "tm", "Turkmenistan" },
- { 796, "tc", "Turks & Caicos Islands" },
- { 798, "tv", "Tuvalu" },
- { 800, "ug", "Uganda" },
- { 804, "ua", "Ukraine" },
- { 784, "ae", "United Arab Emirates" },
- { 826, "gb", "United Kingdom" },
- { 840, "us", "United States" },
- { 581, "um", "United States Minor Outlying Islands" },
- { 858, "uy", "Uruguay" },
- { 860, "uz", "Uzbekistan" },
- { 548, "vu", "Vanuatu" },
- { 862, "ve", "Venezuela" },
- { 704, "vn", "Vietnam" },
- { 92, "vg", "Virgin Islands (British)" },
- { 850, "vi", "Virgin Islands (US)" },
- { 876, "wf", "Wallis & Futuna Islands" },
- { 732, "eh", "Western Sahara" },
- { 887, "ye", "Yemen" },
- { 894, "zm", "Zambia" },
- { 716, "zw", "Zimbabwe" }
- };
-
-/*
- * Check if start of 'str' is simply an IPv4 address.
- */
-#define BYTE_OK(x) ((x) >= 0 && (x) <= 255)
-
-static int is_addr(char *str, char **end)
-{
- int a0, a1, a2, a3, num, rc = 0, length = 0;
-
- num = sscanf(str,"%3d.%3d.%3d.%3d%n",&a0,&a1,&a2,&a3,&length);
- if( (num == 4) &&
- BYTE_OK(a0) && BYTE_OK(a1) && BYTE_OK(a2) && BYTE_OK(a3) &&
- length >= (3+4))
- {
- rc = 1;
- *end = str + length;
- }
- return rc;
-}
-
-/*
- * Find the country-code and name from the CNAME. E.g.:
- * version 1: CNAME = zzno.countries.nerd.dk with address 127.0.2.66
- * yields ccode_A" = "no" and cnumber 578 (2.66).
- * version 2: CNAME = <a.b.c.d>.zz.countries.nerd.dk with address 127.0.2.66
- * yields cnumber 578 (2.66). ccode_A is "";
- */
-static void find_country_from_cname(const char *cname, struct in_addr addr)
-{
- const struct search_list *country;
- char ccode_A2[3], *ccopy, *dot_4;
- int cnumber, z0, z1, ver_1, ver_2;
- unsigned long ip;
-
- ip = ntohl(addr.s_addr);
- z0 = tolower(cname[0]);
- z1 = tolower(cname[1]);
- ccopy = strdup(cname);
- dot_4 = NULL;
-
- ver_1 = (z0 == 'z' && z1 == 'z' && !strcasecmp(cname+4,nerd_ver1));
- ver_2 = (is_addr(ccopy,&dot_4) && !strcasecmp(dot_4,nerd_ver2));
-
- if (ver_1)
- {
- const char *dot = strchr(cname, '.');
- if ((z0 != 'z' && z1 != 'z') || dot != cname+4)
- {
- printf("Unexpected CNAME %s (ver_1)\n", cname);
- return;
- }
- }
- else if (ver_2)
- {
- z0 = tolower(dot_4[1]);
- z1 = tolower(dot_4[2]);
- if (z0 != 'z' && z1 != 'z')
- {
- printf("Unexpected CNAME %s (ver_2)\n", cname);
- return;
- }
- }
- else
- {
- printf("Unexpected CNAME %s (ver?)\n", cname);
- return;
- }
-
- if (ver_1)
- {
- ccode_A2[0] = (char)tolower(cname[2]);
- ccode_A2[1] = (char)tolower(cname[3]);
- ccode_A2[2] = '\0';
- }
- else
- ccode_A2[0] = '\0';
-
- cnumber = ip & 0xFFFF;
-
- TRACE(("Found country-code `%s', number %d\n",
- ver_1 ? ccode_A2 : "<n/a>", cnumber));
-
- country = list_lookup(cnumber, country_list,
- sizeof(country_list) / sizeof(country_list[0]));
- if (!country)
- printf("Name for country-number %d not found.\n", cnumber);
- else
- {
- if (ver_1)
- {
- if ((country->short_name[0] != ccode_A2[0]) ||
- (country->short_name[1] != ccode_A2[1]) ||
- (country->short_name[2] != ccode_A2[2]))
- printf("short-name mismatch; %s vs %s\n",
- country->short_name, ccode_A2);
- }
- printf("%s (%s), number %d.\n",
- country->long_name, country->short_name, cnumber);
- }
- free(ccopy);
-}
-
diff --git a/ares/adig.c b/ares/adig.c
deleted file mode 100644
index 4e33f6c02..000000000
--- a/ares/adig.c
+++ /dev/null
@@ -1,820 +0,0 @@
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * $Id$
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "inet_ntop.h"
-#include "inet_net_pton.h"
-#include "ares_getopt.h"
-
-#ifndef HAVE_STRDUP
-# include "ares_strdup.h"
-# define strdup(ptr) ares_strdup(ptr)
-#endif
-
-#ifndef HAVE_STRCASECMP
-# include "ares_strcasecmp.h"
-# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2)
-#endif
-
-#ifndef HAVE_STRNCASECMP
-# include "ares_strcasecmp.h"
-# define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n)
-#endif
-
-#ifdef WATT32
-#undef WIN32 /* Redefined in MingW headers */
-#endif
-
-/* Mac OS X portability check */
-#ifndef T_SRV
-#define T_SRV 33 /* server selection */
-#endif
-
-/* AIX portability check */
-#ifndef T_NAPTR
-#define T_NAPTR 35 /* naming authority pointer */
-#endif
-
-struct nv {
- const char *name;
- int value;
-};
-
-static const struct nv flags[] = {
- { "usevc", ARES_FLAG_USEVC },
- { "primary", ARES_FLAG_PRIMARY },
- { "igntc", ARES_FLAG_IGNTC },
- { "norecurse", ARES_FLAG_NORECURSE },
- { "stayopen", ARES_FLAG_STAYOPEN },
- { "noaliases", ARES_FLAG_NOALIASES }
-};
-static const int nflags = sizeof(flags) / sizeof(flags[0]);
-
-static const struct nv classes[] = {
- { "IN", C_IN },
- { "CHAOS", C_CHAOS },
- { "HS", C_HS },
- { "ANY", C_ANY }
-};
-static const int nclasses = sizeof(classes) / sizeof(classes[0]);
-
-static const struct nv types[] = {
- { "A", T_A },
- { "NS", T_NS },
- { "MD", T_MD },
- { "MF", T_MF },
- { "CNAME", T_CNAME },
- { "SOA", T_SOA },
- { "MB", T_MB },
- { "MG", T_MG },
- { "MR", T_MR },
- { "NULL", T_NULL },
- { "WKS", T_WKS },
- { "PTR", T_PTR },
- { "HINFO", T_HINFO },
- { "MINFO", T_MINFO },
- { "MX", T_MX },
- { "TXT", T_TXT },
- { "RP", T_RP },
- { "AFSDB", T_AFSDB },
- { "X25", T_X25 },
- { "ISDN", T_ISDN },
- { "RT", T_RT },
- { "NSAP", T_NSAP },
- { "NSAP_PTR", T_NSAP_PTR },
- { "SIG", T_SIG },
- { "KEY", T_KEY },
- { "PX", T_PX },
- { "GPOS", T_GPOS },
- { "AAAA", T_AAAA },
- { "LOC", T_LOC },
- { "SRV", T_SRV },
- { "AXFR", T_AXFR },
- { "MAILB", T_MAILB },
- { "MAILA", T_MAILA },
- { "NAPTR", T_NAPTR },
- { "ANY", T_ANY }
-};
-static const int ntypes = sizeof(types) / sizeof(types[0]);
-
-static const char *opcodes[] = {
- "QUERY", "IQUERY", "STATUS", "(reserved)", "NOTIFY",
- "(unknown)", "(unknown)", "(unknown)", "(unknown)",
- "UPDATEA", "UPDATED", "UPDATEDA", "UPDATEM", "UPDATEMA",
- "ZONEINIT", "ZONEREF"
-};
-
-static const char *rcodes[] = {
- "NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED",
- "(unknown)", "(unknown)", "(unknown)", "(unknown)", "(unknown)",
- "(unknown)", "(unknown)", "(unknown)", "(unknown)", "NOCHANGE"
-};
-
-static void callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen);
-static const unsigned char *display_question(const unsigned char *aptr,
- const unsigned char *abuf,
- int alen);
-static const unsigned char *display_rr(const unsigned char *aptr,
- const unsigned char *abuf, int alen);
-static const char *type_name(int type);
-static const char *class_name(int dnsclass);
-static void usage(void);
-static void destroy_addr_list(struct ares_addr_node *head);
-static void append_addr_list(struct ares_addr_node **head,
- struct ares_addr_node *node);
-
-int main(int argc, char **argv)
-{
- ares_channel channel;
- int c, i, optmask = ARES_OPT_FLAGS, dnsclass = C_IN, type = T_A;
- int status, nfds, count;
- struct ares_options options;
- struct hostent *hostent;
- fd_set read_fds, write_fds;
- struct timeval *tvp, tv;
- struct ares_addr_node *srvr, *servers = NULL;
-
-#ifdef USE_WINSOCK
- WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
- WSADATA wsaData;
- WSAStartup(wVersionRequested, &wsaData);
-#endif
-
- status = ares_library_init(ARES_LIB_INIT_ALL);
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status));
- return 1;
- }
-
- options.flags = ARES_FLAG_NOCHECKRESP;
- options.servers = NULL;
- options.nservers = 0;
- while ((c = ares_getopt(argc, argv, "df:s:c:t:T:U:")) != -1)
- {
- switch (c)
- {
- case 'd':
-#ifdef WATT32
- dbug_init();
-#endif
- break;
-
- case 'f':
- /* Add a flag. */
- for (i = 0; i < nflags; i++)
- {
- if (strcmp(flags[i].name, optarg) == 0)
- break;
- }
- if (i < nflags)
- options.flags |= flags[i].value;
- else
- usage();
- break;
-
- case 's':
- /* User specified name servers override default ones. */
- srvr = malloc(sizeof(struct ares_addr_node));
- if (!srvr)
- {
- fprintf(stderr, "Out of memory!\n");
- destroy_addr_list(servers);
- return 1;
- }
- append_addr_list(&servers, srvr);
- if (ares_inet_pton(AF_INET, optarg, &srvr->addr.addr4) > 0)
- srvr->family = AF_INET;
- else if (ares_inet_pton(AF_INET6, optarg, &srvr->addr.addr6) > 0)
- srvr->family = AF_INET6;
- else
- {
- hostent = gethostbyname(optarg);
- if (!hostent)
- {
- fprintf(stderr, "adig: server %s not found.\n", optarg);
- destroy_addr_list(servers);
- return 1;
- }
- switch (hostent->h_addrtype)
- {
- case AF_INET:
- srvr->family = AF_INET;
- memcpy(&srvr->addr.addr4, hostent->h_addr,
- sizeof(srvr->addr.addr4));
- break;
- case AF_INET6:
- srvr->family = AF_INET6;
- memcpy(&srvr->addr.addr6, hostent->h_addr,
- sizeof(srvr->addr.addr6));
- break;
- default:
- fprintf(stderr,
- "adig: server %s unsupported address family.\n", optarg);
- destroy_addr_list(servers);
- return 1;
- }
- }
- /* Notice that calling ares_init_options() without servers in the
- * options struct and with ARES_OPT_SERVERS set simultaneously in
- * the options mask, results in an initialization with no servers.
- * When alternative name servers have been specified these are set
- * later calling ares_set_servers() overriding any existing server
- * configuration. To prevent initial configuration with default
- * servers that will be discarded later ARES_OPT_SERVERS is set.
- * If this flag is not set here the result shall be the same but
- * ares_init_options() will do needless work. */
- optmask |= ARES_OPT_SERVERS;
- break;
-
- case 'c':
- /* Set the query class. */
- for (i = 0; i < nclasses; i++)
- {
- if (strcasecmp(classes[i].name, optarg) == 0)
- break;
- }
- if (i < nclasses)
- dnsclass = classes[i].value;
- else
- usage();
- break;
-
- case 't':
- /* Set the query type. */
- for (i = 0; i < ntypes; i++)
- {
- if (strcasecmp(types[i].name, optarg) == 0)
- break;
- }
- if (i < ntypes)
- type = types[i].value;
- else
- usage();
- break;
-
- case 'T':
- /* Set the TCP port number. */
- if (!ISDIGIT(*optarg))
- usage();
- options.tcp_port = (unsigned short)strtol(optarg, NULL, 0);
- optmask |= ARES_OPT_TCP_PORT;
- break;
-
- case 'U':
- /* Set the UDP port number. */
- if (!ISDIGIT(*optarg))
- usage();
- options.udp_port = (unsigned short)strtol(optarg, NULL, 0);
- optmask |= ARES_OPT_UDP_PORT;
- break;
- }
- }
- argc -= optind;
- argv += optind;
- if (argc == 0)
- usage();
-
- status = ares_init_options(&channel, &options, optmask);
-
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_init_options: %s\n",
- ares_strerror(status));
- return 1;
- }
-
- if(servers)
- {
- status = ares_set_servers(channel, servers);
- destroy_addr_list(servers);
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_init_options: %s\n",
- ares_strerror(status));
- return 1;
- }
- }
-
- /* Initiate the queries, one per command-line argument. If there is
- * only one query to do, supply NULL as the callback argument;
- * otherwise, supply the query name as an argument so we can
- * distinguish responses for the user when printing them out.
- */
- if (argc == 1)
- ares_query(channel, *argv, dnsclass, type, callback, (char *) NULL);
- else
- {
- for (; *argv; argv++)
- ares_query(channel, *argv, dnsclass, type, callback, *argv);
- }
-
- /* Wait for all queries to complete. */
- for (;;)
- {
- FD_ZERO(&read_fds);
- FD_ZERO(&write_fds);
- nfds = ares_fds(channel, &read_fds, &write_fds);
- if (nfds == 0)
- break;
- tvp = ares_timeout(channel, NULL, &tv);
- count = select(nfds, &read_fds, &write_fds, NULL, tvp);
- if (count < 0 && SOCKERRNO != EINVAL)
- {
- perror("select");
- return 1;
- }
- ares_process(channel, &read_fds, &write_fds);
- }
-
- ares_destroy(channel);
-
- ares_library_cleanup();
-
-#ifdef USE_WINSOCK
- WSACleanup();
-#endif
-
- return 0;
-}
-
-static void callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen)
-{
- char *name = (char *) arg;
- int id, qr, opcode, aa, tc, rd, ra, rcode;
- unsigned int qdcount, ancount, nscount, arcount, i;
- const unsigned char *aptr;
-
- (void) timeouts;
-
- /* Display the query name if given. */
- if (name)
- printf("Answer for query %s:\n", name);
-
- /* Display an error message if there was an error, but only stop if
- * we actually didn't get an answer buffer.
- */
- if (status != ARES_SUCCESS)
- {
- printf("%s\n", ares_strerror(status));
- if (!abuf)
- return;
- }
-
- /* Won't happen, but check anyway, for safety. */
- if (alen < HFIXEDSZ)
- return;
-
- /* Parse the answer header. */
- id = DNS_HEADER_QID(abuf);
- qr = DNS_HEADER_QR(abuf);
- opcode = DNS_HEADER_OPCODE(abuf);
- aa = DNS_HEADER_AA(abuf);
- tc = DNS_HEADER_TC(abuf);
- rd = DNS_HEADER_RD(abuf);
- ra = DNS_HEADER_RA(abuf);
- rcode = DNS_HEADER_RCODE(abuf);
- qdcount = DNS_HEADER_QDCOUNT(abuf);
- ancount = DNS_HEADER_ANCOUNT(abuf);
- nscount = DNS_HEADER_NSCOUNT(abuf);
- arcount = DNS_HEADER_ARCOUNT(abuf);
-
- /* Display the answer header. */
- printf("id: %d\n", id);
- printf("flags: %s%s%s%s%s\n",
- qr ? "qr " : "",
- aa ? "aa " : "",
- tc ? "tc " : "",
- rd ? "rd " : "",
- ra ? "ra " : "");
- printf("opcode: %s\n", opcodes[opcode]);
- printf("rcode: %s\n", rcodes[rcode]);
-
- /* Display the questions. */
- printf("Questions:\n");
- aptr = abuf + HFIXEDSZ;
- for (i = 0; i < qdcount; i++)
- {
- aptr = display_question(aptr, abuf, alen);
- if (aptr == NULL)
- return;
- }
-
- /* Display the answers. */
- printf("Answers:\n");
- for (i = 0; i < ancount; i++)
- {
- aptr = display_rr(aptr, abuf, alen);
- if (aptr == NULL)
- return;
- }
-
- /* Display the NS records. */
- printf("NS records:\n");
- for (i = 0; i < nscount; i++)
- {
- aptr = display_rr(aptr, abuf, alen);
- if (aptr == NULL)
- return;
- }
-
- /* Display the additional records. */
- printf("Additional records:\n");
- for (i = 0; i < arcount; i++)
- {
- aptr = display_rr(aptr, abuf, alen);
- if (aptr == NULL)
- return;
- }
-}
-
-static const unsigned char *display_question(const unsigned char *aptr,
- const unsigned char *abuf,
- int alen)
-{
- char *name;
- int type, dnsclass, status;
- long len;
-
- /* Parse the question name. */
- status = ares_expand_name(aptr, abuf, alen, &name, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- aptr += len;
-
- /* Make sure there's enough data after the name for the fixed part
- * of the question.
- */
- if (aptr + QFIXEDSZ > abuf + alen)
- {
- ares_free_string(name);
- return NULL;
- }
-
- /* Parse the question type and class. */
- type = DNS_QUESTION_TYPE(aptr);
- dnsclass = DNS_QUESTION_CLASS(aptr);
- aptr += QFIXEDSZ;
-
- /* Display the question, in a format sort of similar to how we will
- * display RRs.
- */
- printf("\t%-15s.\t", name);
- if (dnsclass != C_IN)
- printf("\t%s", class_name(dnsclass));
- printf("\t%s\n", type_name(type));
- ares_free_string(name);
- return aptr;
-}
-
-static const unsigned char *display_rr(const unsigned char *aptr,
- const unsigned char *abuf, int alen)
-{
- const unsigned char *p;
- int type, dnsclass, ttl, dlen, status;
- long len;
- char addr[46];
- union {
- unsigned char * as_uchar;
- char * as_char;
- } name;
-
- /* Parse the RR name. */
- status = ares_expand_name(aptr, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- aptr += len;
-
- /* Make sure there is enough data after the RR name for the fixed
- * part of the RR.
- */
- if (aptr + RRFIXEDSZ > abuf + alen)
- {
- ares_free_string(name.as_char);
- return NULL;
- }
-
- /* Parse the fixed part of the RR, and advance to the RR data
- * field. */
- type = DNS_RR_TYPE(aptr);
- dnsclass = DNS_RR_CLASS(aptr);
- ttl = DNS_RR_TTL(aptr);
- dlen = DNS_RR_LEN(aptr);
- aptr += RRFIXEDSZ;
- if (aptr + dlen > abuf + alen)
- {
- ares_free_string(name.as_char);
- return NULL;
- }
-
- /* Display the RR name, class, and type. */
- printf("\t%-15s.\t%d", name.as_char, ttl);
- if (dnsclass != C_IN)
- printf("\t%s", class_name(dnsclass));
- printf("\t%s", type_name(type));
- ares_free_string(name.as_char);
-
- /* Display the RR data. Don't touch aptr. */
- switch (type)
- {
- case T_CNAME:
- case T_MB:
- case T_MD:
- case T_MF:
- case T_MG:
- case T_MR:
- case T_NS:
- case T_PTR:
- /* For these types, the RR data is just a domain name. */
- status = ares_expand_name(aptr, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s.", name.as_char);
- ares_free_string(name.as_char);
- break;
-
- case T_HINFO:
- /* The RR data is two length-counted character strings. */
- p = aptr;
- len = *p;
- if (p + len + 1 > aptr + dlen)
- return NULL;
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s", name.as_char);
- ares_free_string(name.as_char);
- p += len;
- len = *p;
- if (p + len + 1 > aptr + dlen)
- return NULL;
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s", name.as_char);
- ares_free_string(name.as_char);
- break;
-
- case T_MINFO:
- /* The RR data is two domain names. */
- p = aptr;
- status = ares_expand_name(p, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s.", name.as_char);
- ares_free_string(name.as_char);
- p += len;
- status = ares_expand_name(p, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s.", name.as_char);
- ares_free_string(name.as_char);
- break;
-
- case T_MX:
- /* The RR data is two bytes giving a preference ordering, and
- * then a domain name.
- */
- if (dlen < 2)
- return NULL;
- printf("\t%d", DNS__16BIT(aptr));
- status = ares_expand_name(aptr + 2, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s.", name.as_char);
- ares_free_string(name.as_char);
- break;
-
- case T_SOA:
- /* The RR data is two domain names and then five four-byte
- * numbers giving the serial number and some timeouts.
- */
- p = aptr;
- status = ares_expand_name(p, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s.\n", name.as_char);
- ares_free_string(name.as_char);
- p += len;
- status = ares_expand_name(p, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t\t\t\t\t\t%s.\n", name.as_char);
- ares_free_string(name.as_char);
- p += len;
- if (p + 20 > aptr + dlen)
- return NULL;
- printf("\t\t\t\t\t\t( %lu %lu %lu %lu %lu )",
- (unsigned long)DNS__32BIT(p), (unsigned long)DNS__32BIT(p+4),
- (unsigned long)DNS__32BIT(p+8), (unsigned long)DNS__32BIT(p+12),
- (unsigned long)DNS__32BIT(p+16));
- break;
-
- case T_TXT:
- /* The RR data is one or more length-counted character
- * strings. */
- p = aptr;
- while (p < aptr + dlen)
- {
- len = *p;
- if (p + len + 1 > aptr + dlen)
- return NULL;
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s", name.as_char);
- ares_free_string(name.as_char);
- p += len;
- }
- break;
-
- case T_A:
- /* The RR data is a four-byte Internet address. */
- if (dlen != 4)
- return NULL;
- printf("\t%s", ares_inet_ntop(AF_INET,aptr,addr,sizeof(addr)));
- break;
-
- case T_AAAA:
- /* The RR data is a 16-byte IPv6 address. */
- if (dlen != 16)
- return NULL;
- printf("\t%s", ares_inet_ntop(AF_INET6,aptr,addr,sizeof(addr)));
- break;
-
- case T_WKS:
- /* Not implemented yet */
- break;
-
- case T_SRV:
- /* The RR data is three two-byte numbers representing the
- * priority, weight, and port, followed by a domain name.
- */
-
- printf("\t%d", DNS__16BIT(aptr));
- printf(" %d", DNS__16BIT(aptr + 2));
- printf(" %d", DNS__16BIT(aptr + 4));
-
- status = ares_expand_name(aptr + 6, abuf, alen, &name.as_char, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t%s.", name.as_char);
- ares_free_string(name.as_char);
- break;
-
- case T_NAPTR:
-
- printf("\t%d", DNS__16BIT(aptr)); /* order */
- printf(" %d\n", DNS__16BIT(aptr + 2)); /* preference */
-
- p = aptr + 4;
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t\t\t\t\t\t%s\n", name.as_char);
- ares_free_string(name.as_char);
- p += len;
-
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t\t\t\t\t\t%s\n", name.as_char);
- ares_free_string(name.as_char);
- p += len;
-
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t\t\t\t\t\t%s\n", name.as_char);
- ares_free_string(name.as_char);
- p += len;
-
- status = ares_expand_string(p, abuf, alen, &name.as_uchar, &len);
- if (status != ARES_SUCCESS)
- return NULL;
- printf("\t\t\t\t\t\t%s", name.as_char);
- ares_free_string(name.as_char);
- break;
-
-
- default:
- printf("\t[Unknown RR; cannot parse]");
- break;
- }
- printf("\n");
-
- return aptr + dlen;
-}
-
-static const char *type_name(int type)
-{
- int i;
-
- for (i = 0; i < ntypes; i++)
- {
- if (types[i].value == type)
- return types[i].name;
- }
- return "(unknown)";
-}
-
-static const char *class_name(int dnsclass)
-{
- int i;
-
- for (i = 0; i < nclasses; i++)
- {
- if (classes[i].value == dnsclass)
- return classes[i].name;
- }
- return "(unknown)";
-}
-
-static void usage(void)
-{
- fprintf(stderr, "usage: adig [-f flag] [-s server] [-c class] "
- "[-t type] [-p port] name ...\n");
- exit(1);
-}
-
-static void destroy_addr_list(struct ares_addr_node *head)
-{
- while(head)
- {
- struct ares_addr_node *detached = head;
- head = head->next;
- free(detached);
- }
-}
-
-static void append_addr_list(struct ares_addr_node **head,
- struct ares_addr_node *node)
-{
- struct ares_addr_node *last;
- node->next = NULL;
- if(*head)
- {
- last = *head;
- while(last->next)
- last = last->next;
- last->next = node;
- }
- else
- *head = node;
-}
diff --git a/ares/ahost.c b/ares/ahost.c
deleted file mode 100644
index f49930639..000000000
--- a/ares/ahost.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * $Id$
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#if !defined(WIN32) || defined(WATT32)
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#endif
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "inet_ntop.h"
-#include "inet_net_pton.h"
-#include "ares_getopt.h"
-#include "ares_ipv6.h"
-
-#ifndef HAVE_STRDUP
-# include "ares_strdup.h"
-# define strdup(ptr) ares_strdup(ptr)
-#endif
-
-#ifndef HAVE_STRCASECMP
-# include "ares_strcasecmp.h"
-# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2)
-#endif
-
-#ifndef HAVE_STRNCASECMP
-# include "ares_strcasecmp.h"
-# define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n)
-#endif
-
-static void callback(void *arg, int status, int timeouts, struct hostent *host);
-static void usage(void);
-
-int main(int argc, char **argv)
-{
- ares_channel channel;
- int status, nfds, c, addr_family = AF_INET;
- fd_set read_fds, write_fds;
- struct timeval *tvp, tv;
- struct in_addr addr4;
- struct ares_in6_addr addr6;
-
-#ifdef USE_WINSOCK
- WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
- WSADATA wsaData;
- WSAStartup(wVersionRequested, &wsaData);
-#endif
-
- status = ares_library_init(ARES_LIB_INIT_ALL);
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_library_init: %s\n", ares_strerror(status));
- return 1;
- }
-
- while ((c = ares_getopt(argc,argv,"dt:h")) != -1)
- {
- switch (c)
- {
- case 'd':
-#ifdef WATT32
- dbug_init();
-#endif
- break;
- case 't':
- if (!strcasecmp(optarg,"a"))
- addr_family = AF_INET;
- else if (!strcasecmp(optarg,"aaaa"))
- addr_family = AF_INET6;
- else
- usage();
- break;
- case 'h':
- default:
- usage();
- break;
- }
- }
-
- argc -= optind;
- argv += optind;
- if (argc < 1)
- usage();
-
- status = ares_init(&channel);
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "ares_init: %s\n", ares_strerror(status));
- return 1;
- }
-
- /* Initiate the queries, one per command-line argument. */
- for ( ; *argv; argv++)
- {
- if (ares_inet_pton(AF_INET, *argv, &addr4) == 1)
- {
- ares_gethostbyaddr(channel, &addr4, sizeof(addr4), AF_INET, callback,
- *argv);
- }
- else if (ares_inet_pton(AF_INET6, *argv, &addr6) == 1)
- {
- ares_gethostbyaddr(channel, &addr6, sizeof(addr6), AF_INET6, callback,
- *argv);
- }
- else
- {
- ares_gethostbyname(channel, *argv, addr_family, callback, *argv);
- }
- }
-
- /* Wait for all queries to complete. */
- for (;;)
- {
- FD_ZERO(&read_fds);
- FD_ZERO(&write_fds);
- nfds = ares_fds(channel, &read_fds, &write_fds);
- if (nfds == 0)
- break;
- tvp = ares_timeout(channel, NULL, &tv);
- select(nfds, &read_fds, &write_fds, NULL, tvp);
- ares_process(channel, &read_fds, &write_fds);
- }
-
- ares_destroy(channel);
-
- ares_library_cleanup();
-
-#ifdef USE_WINSOCK
- WSACleanup();
-#endif
-
- return 0;
-}
-
-static void callback(void *arg, int status, int timeouts, struct hostent *host)
-{
- char **p;
-
- (void)timeouts;
-
- if (status != ARES_SUCCESS)
- {
- fprintf(stderr, "%s: %s\n", (char *) arg, ares_strerror(status));
- return;
- }
-
- for (p = host->h_addr_list; *p; p++)
- {
- char addr_buf[46] = "??";
-
- ares_inet_ntop(host->h_addrtype, *p, addr_buf, sizeof(addr_buf));
- printf("%-32s\t%s", host->h_name, addr_buf);
-#if 0
- if (host->h_aliases[0])
- {
- int i;
-
- printf (", Aliases: ");
- for (i = 0; host->h_aliases[i]; i++)
- printf("%s ", host->h_aliases[i]);
- }
-#endif
- puts("");
- }
-}
-
-static void usage(void)
-{
- fprintf(stderr, "usage: ahost [-t {a|aaaa}] {host|addr} ...\n");
- exit(1);
-}
diff --git a/ares/ares.h b/ares/ares.h
deleted file mode 100644
index 6d658ad2d..000000000
--- a/ares/ares.h
+++ /dev/null
@@ -1,509 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998, 2009 by the Massachusetts Institute of Technology.
- * Copyright (C) 2007-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifndef ARES__H
-#define ARES__H
-
-#include "ares_version.h" /* c-ares version defines */
-#include "ares_build.h" /* c-ares build definitions */
-#include "ares_rules.h" /* c-ares rules enforcement */
-
-/*
- * Define WIN32 when build target is Win32 API
- */
-
-#if (defined(_WIN32) || defined(__WIN32__)) && \
- !defined(WIN32) && !defined(__SYMBIAN32__)
-# define WIN32
-#endif
-
-#include <sys/types.h>
-
-/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
- libc5-based Linux systems. Only include it on system that are known to
- require it! */
-#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
- defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY)
-#include <sys/select.h>
-#endif
-#if (defined(NETWARE) && !defined(__NOVELL_LIBC__))
-#include <sys/bsdskt.h>
-#endif
-
-#if defined(WATT32)
-# include <netinet/in.h>
-# include <sys/socket.h>
-# include <tcp.h>
-#elif defined(WIN32)
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h>
-# include <winsock2.h>
-# include <ws2tcpip.h>
-#else
-# include <sys/socket.h>
-# include <netinet/in.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
-** c-ares external API function linkage decorations.
-*/
-
-#if !defined(CARES_STATICLIB) && \
- (defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__))
- /* __declspec function decoration for Win32 and Symbian DLL's */
-# if defined(CARES_BUILDING_LIBRARY)
-# define CARES_EXTERN __declspec(dllexport)
-# else
-# define CARES_EXTERN __declspec(dllimport)
-# endif
-#else
- /* visibility function decoration for other cases */
-# if !defined(CARES_SYMBOL_HIDING) || \
- defined(WIN32) || defined(_WIN32) || defined(__SYMBIAN32__)
-# define CARES_EXTERN
-# else
-# define CARES_EXTERN CARES_SYMBOL_SCOPE_EXTERN
-# endif
-#endif
-
-
-#define ARES_SUCCESS 0
-
-/* Server error codes (ARES_ENODATA indicates no relevant answer) */
-#define ARES_ENODATA 1
-#define ARES_EFORMERR 2
-#define ARES_ESERVFAIL 3
-#define ARES_ENOTFOUND 4
-#define ARES_ENOTIMP 5
-#define ARES_EREFUSED 6
-
-/* Locally generated error codes */
-#define ARES_EBADQUERY 7
-#define ARES_EBADNAME 8
-#define ARES_EBADFAMILY 9
-#define ARES_EBADRESP 10
-#define ARES_ECONNREFUSED 11
-#define ARES_ETIMEOUT 12
-#define ARES_EOF 13
-#define ARES_EFILE 14
-#define ARES_ENOMEM 15
-#define ARES_EDESTRUCTION 16
-#define ARES_EBADSTR 17
-
-/* ares_getnameinfo error codes */
-#define ARES_EBADFLAGS 18
-
-/* ares_getaddrinfo error codes */
-#define ARES_ENONAME 19
-#define ARES_EBADHINTS 20
-
-/* Uninitialized library error code */
-#define ARES_ENOTINITIALIZED 21 /* introduced in 1.7.0 */
-
-/* ares_library_init error codes */
-#define ARES_ELOADIPHLPAPI 22 /* introduced in 1.7.0 */
-#define ARES_EADDRGETNETWORKPARAMS 23 /* introduced in 1.7.0 */
-
-/* More error codes */
-#define ARES_ECANCELLED 24 /* introduced in 1.7.0 */
-
-/* Flag values */
-#define ARES_FLAG_USEVC (1 << 0)
-#define ARES_FLAG_PRIMARY (1 << 1)
-#define ARES_FLAG_IGNTC (1 << 2)
-#define ARES_FLAG_NORECURSE (1 << 3)
-#define ARES_FLAG_STAYOPEN (1 << 4)
-#define ARES_FLAG_NOSEARCH (1 << 5)
-#define ARES_FLAG_NOALIASES (1 << 6)
-#define ARES_FLAG_NOCHECKRESP (1 << 7)
-
-/* Option mask values */
-#define ARES_OPT_FLAGS (1 << 0)
-#define ARES_OPT_TIMEOUT (1 << 1)
-#define ARES_OPT_TRIES (1 << 2)
-#define ARES_OPT_NDOTS (1 << 3)
-#define ARES_OPT_UDP_PORT (1 << 4)
-#define ARES_OPT_TCP_PORT (1 << 5)
-#define ARES_OPT_SERVERS (1 << 6)
-#define ARES_OPT_DOMAINS (1 << 7)
-#define ARES_OPT_LOOKUPS (1 << 8)
-#define ARES_OPT_SOCK_STATE_CB (1 << 9)
-#define ARES_OPT_SORTLIST (1 << 10)
-#define ARES_OPT_SOCK_SNDBUF (1 << 11)
-#define ARES_OPT_SOCK_RCVBUF (1 << 12)
-#define ARES_OPT_TIMEOUTMS (1 << 13)
-#define ARES_OPT_ROTATE (1 << 14)
-
-/* Nameinfo flag values */
-#define ARES_NI_NOFQDN (1 << 0)
-#define ARES_NI_NUMERICHOST (1 << 1)
-#define ARES_NI_NAMEREQD (1 << 2)
-#define ARES_NI_NUMERICSERV (1 << 3)
-#define ARES_NI_DGRAM (1 << 4)
-#define ARES_NI_TCP 0
-#define ARES_NI_UDP ARES_NI_DGRAM
-#define ARES_NI_SCTP (1 << 5)
-#define ARES_NI_DCCP (1 << 6)
-#define ARES_NI_NUMERICSCOPE (1 << 7)
-#define ARES_NI_LOOKUPHOST (1 << 8)
-#define ARES_NI_LOOKUPSERVICE (1 << 9)
-/* Reserved for future use */
-#define ARES_NI_IDN (1 << 10)
-#define ARES_NI_IDN_ALLOW_UNASSIGNED (1 << 11)
-#define ARES_NI_IDN_USE_STD3_ASCII_RULES (1 << 12)
-
-/* Addrinfo flag values */
-#define ARES_AI_CANONNAME (1 << 0)
-#define ARES_AI_NUMERICHOST (1 << 1)
-#define ARES_AI_PASSIVE (1 << 2)
-#define ARES_AI_NUMERICSERV (1 << 3)
-#define ARES_AI_V4MAPPED (1 << 4)
-#define ARES_AI_ALL (1 << 5)
-#define ARES_AI_ADDRCONFIG (1 << 6)
-/* Reserved for future use */
-#define ARES_AI_IDN (1 << 10)
-#define ARES_AI_IDN_ALLOW_UNASSIGNED (1 << 11)
-#define ARES_AI_IDN_USE_STD3_ASCII_RULES (1 << 12)
-#define ARES_AI_CANONIDN (1 << 13)
-
-#define ARES_AI_MASK (ARES_AI_CANONNAME|ARES_AI_NUMERICHOST|ARES_AI_PASSIVE| \
- ARES_AI_NUMERICSERV|ARES_AI_V4MAPPED|ARES_AI_ALL| \
- ARES_AI_ADDRCONFIG)
-#define ARES_GETSOCK_MAXNUM 16 /* ares_getsock() can return info about this
- many sockets */
-#define ARES_GETSOCK_READABLE(bits,num) (bits & (1<< (num)))
-#define ARES_GETSOCK_WRITABLE(bits,num) (bits & (1 << ((num) + \
- ARES_GETSOCK_MAXNUM)))
-
-/* c-ares library initialization flag values */
-#define ARES_LIB_INIT_NONE (0)
-#define ARES_LIB_INIT_WIN32 (1 << 0)
-#define ARES_LIB_INIT_ALL (ARES_LIB_INIT_WIN32)
-
-
-/*
- * Typedef our socket type
- */
-
-#ifndef ares_socket_typedef
-#ifdef WIN32
-typedef SOCKET ares_socket_t;
-#define ARES_SOCKET_BAD INVALID_SOCKET
-#else
-typedef int ares_socket_t;
-#define ARES_SOCKET_BAD -1
-#endif
-#define ares_socket_typedef
-#endif /* ares_socket_typedef */
-
-typedef void (*ares_sock_state_cb)(void *data,
- ares_socket_t socket_fd,
- int readable,
- int writable);
-
-struct apattern;
-
-/* NOTE about the ares_options struct to users and developers.
-
- This struct will remain looking like this. It will not be extended nor
- shrunk in future releases, but all new options will be set by ares_set_*()
- options instead of with the ares_init_options() function.
-
- Eventually (in a galaxy far far away), all options will be settable by
- ares_set_*() options and the ares_init_options() function will become
- deprecated.
-
- When new options are added to c-ares, they are not added to this
- struct. And they are not "saved" with the ares_save_options() function but
- instead we encourage the use of the ares_dup() function. Needless to say,
- if you add config options to c-ares you need to make sure ares_dup()
- duplicates this new option.
-
- */
-struct ares_options {
- int flags;
- int timeout; /* in seconds or milliseconds, depending on options */
- int tries;
- int ndots;
- unsigned short udp_port;
- unsigned short tcp_port;
- int socket_send_buffer_size;
- int socket_receive_buffer_size;
- struct in_addr *servers;
- int nservers;
- char **domains;
- int ndomains;
- char *lookups;
- ares_sock_state_cb sock_state_cb;
- void *sock_state_cb_data;
- struct apattern *sortlist;
- int nsort;
-};
-
-struct hostent;
-struct timeval;
-struct sockaddr;
-struct ares_channeldata;
-
-typedef struct ares_channeldata *ares_channel;
-
-typedef void (*ares_callback)(void *arg,
- int status,
- int timeouts,
- unsigned char *abuf,
- int alen);
-
-typedef void (*ares_host_callback)(void *arg,
- int status,
- int timeouts,
- struct hostent *hostent);
-
-typedef void (*ares_nameinfo_callback)(void *arg,
- int status,
- int timeouts,
- char *node,
- char *service);
-
-typedef int (*ares_sock_create_callback)(ares_socket_t socket_fd,
- int type,
- void *data);
-
-CARES_EXTERN int ares_library_init(int flags);
-
-CARES_EXTERN void ares_library_cleanup(void);
-
-CARES_EXTERN const char *ares_version(int *version);
-
-CARES_EXTERN int ares_init(ares_channel *channelptr);
-
-CARES_EXTERN int ares_init_options(ares_channel *channelptr,
- struct ares_options *options,
- int optmask);
-
-CARES_EXTERN int ares_save_options(ares_channel channel,
- struct ares_options *options,
- int *optmask);
-
-CARES_EXTERN void ares_destroy_options(struct ares_options *options);
-
-CARES_EXTERN int ares_dup(ares_channel *dest,
- ares_channel src);
-
-CARES_EXTERN void ares_destroy(ares_channel channel);
-
-CARES_EXTERN void ares_cancel(ares_channel channel);
-
-CARES_EXTERN void ares_set_socket_callback(ares_channel channel,
- ares_sock_create_callback callback,
- void *user_data);
-
-CARES_EXTERN void ares_send(ares_channel channel,
- const unsigned char *qbuf,
- int qlen,
- ares_callback callback,
- void *arg);
-
-CARES_EXTERN void ares_query(ares_channel channel,
- const char *name,
- int dnsclass,
- int type,
- ares_callback callback,
- void *arg);
-
-CARES_EXTERN void ares_search(ares_channel channel,
- const char *name,
- int dnsclass,
- int type,
- ares_callback callback,
- void *arg);
-
-CARES_EXTERN void ares_gethostbyname(ares_channel channel,
- const char *name,
- int family,
- ares_host_callback callback,
- void *arg);
-
-CARES_EXTERN int ares_gethostbyname_file(ares_channel channel,
- const char *name,
- int family,
- struct hostent **host);
-
-CARES_EXTERN void ares_gethostbyaddr(ares_channel channel,
- const void *addr,
- int addrlen,
- int family,
- ares_host_callback callback,
- void *arg);
-
-CARES_EXTERN void ares_getnameinfo(ares_channel channel,
- const struct sockaddr *sa,
- ares_socklen_t salen,
- int flags,
- ares_nameinfo_callback callback,
- void *arg);
-
-CARES_EXTERN int ares_fds(ares_channel channel,
- fd_set *read_fds,
- fd_set *write_fds);
-
-CARES_EXTERN int ares_getsock(ares_channel channel,
- ares_socket_t *socks,
- int numsocks);
-
-CARES_EXTERN struct timeval *ares_timeout(ares_channel channel,
- struct timeval *maxtv,
- struct timeval *tv);
-
-CARES_EXTERN void ares_process(ares_channel channel,
- fd_set *read_fds,
- fd_set *write_fds);
-
-CARES_EXTERN void ares_process_fd(ares_channel channel,
- ares_socket_t read_fd,
- ares_socket_t write_fd);
-
-CARES_EXTERN int ares_mkquery(const char *name,
- int dnsclass,
- int type,
- unsigned short id,
- int rd,
- unsigned char **buf,
- int *buflen);
-
-CARES_EXTERN int ares_expand_name(const unsigned char *encoded,
- const unsigned char *abuf,
- int alen,
- char **s,
- long *enclen);
-
-CARES_EXTERN int ares_expand_string(const unsigned char *encoded,
- const unsigned char *abuf,
- int alen,
- unsigned char **s,
- long *enclen);
-
-/*
- * NOTE: before c-ares 1.7.0 we would most often use the system in6_addr
- * struct below when ares itself was built, but many apps would use this
- * private version since the header checked a HAVE_* define for it. Starting
- * with 1.7.0 we always declare and use our own to stop relying on the
- * system's one.
- */
-struct ares_in6_addr {
- union {
- unsigned char _S6_u8[16];
- } _S6_un;
-};
-
-struct ares_addrttl {
- struct in_addr ipaddr;
- int ttl;
-};
-
-struct ares_addr6ttl {
- struct ares_in6_addr ip6addr;
- int ttl;
-};
-
-struct ares_srv_reply {
- struct ares_srv_reply *next;
- char *host;
- unsigned short priority;
- unsigned short weight;
- unsigned short port;
-};
-
-struct ares_txt_reply {
- struct ares_txt_reply *next;
- unsigned char *txt;
- size_t length; /* length excludes null termination */
-};
-
-/*
-** Parse the buffer, starting at *abuf and of length alen bytes, previously
-** obtained from an ares_search call. Put the results in *host, if nonnull.
-** Also, if addrttls is nonnull, put up to *naddrttls IPv4 addresses along with
-** their TTLs in that array, and set *naddrttls to the number of addresses
-** so written.
-*/
-
-CARES_EXTERN int ares_parse_a_reply(const unsigned char *abuf,
- int alen,
- struct hostent **host,
- struct ares_addrttl *addrttls,
- int *naddrttls);
-
-CARES_EXTERN int ares_parse_aaaa_reply(const unsigned char *abuf,
- int alen,
- struct hostent **host,
- struct ares_addr6ttl *addrttls,
- int *naddrttls);
-
-CARES_EXTERN int ares_parse_ptr_reply(const unsigned char *abuf,
- int alen,
- const void *addr,
- int addrlen,
- int family,
- struct hostent **host);
-
-CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf,
- int alen,
- struct hostent **host);
-
-CARES_EXTERN int ares_parse_srv_reply(const unsigned char* abuf,
- int alen,
- struct ares_srv_reply** srv_out);
-
-CARES_EXTERN int ares_parse_txt_reply(const unsigned char* abuf,
- int alen,
- struct ares_txt_reply** txt_out);
-
-CARES_EXTERN void ares_free_string(void *str);
-
-CARES_EXTERN void ares_free_hostent(struct hostent *host);
-
-CARES_EXTERN void ares_free_data(void *dataptr);
-
-CARES_EXTERN const char *ares_strerror(int code);
-
-struct ares_addr_node {
- struct ares_addr_node *next;
- int family;
- union {
- struct in_addr addr4;
- struct ares_in6_addr addr6;
- } addr;
-};
-
-CARES_EXTERN int ares_set_servers(ares_channel channel,
- struct ares_addr_node *servers);
-
-CARES_EXTERN int ares_get_servers(ares_channel channel,
- struct ares_addr_node **servers);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ARES__H */
diff --git a/ares/ares__close_sockets.c b/ares/ares__close_sockets.c
deleted file mode 100644
index d2476fdbb..000000000
--- a/ares/ares__close_sockets.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#include <stdlib.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include "ares.h"
-#include "ares_private.h"
-
-void ares__close_sockets(ares_channel channel, struct server_state *server)
-{
- struct send_request *sendreq;
-
- /* Free all pending output buffers. */
- while (server->qhead)
- {
- /* Advance server->qhead; pull out query as we go. */
- sendreq = server->qhead;
- server->qhead = sendreq->next;
- if (sendreq->data_storage != NULL)
- free(sendreq->data_storage);
- free(sendreq);
- }
- server->qtail = NULL;
-
- /* Reset any existing input buffer. */
- if (server->tcp_buffer)
- free(server->tcp_buffer);
- server->tcp_buffer = NULL;
- server->tcp_lenbuf_pos = 0;
-
- /* Reset brokenness */
- server->is_broken = 0;
-
- /* Close the TCP and UDP sockets. */
- if (server->tcp_socket != ARES_SOCKET_BAD)
- {
- SOCK_STATE_CALLBACK(channel, server->tcp_socket, 0, 0);
- sclose(server->tcp_socket);
- server->tcp_socket = ARES_SOCKET_BAD;
- server->tcp_connection_generation = ++channel->tcp_connection_generation;
- }
- if (server->udp_socket != ARES_SOCKET_BAD)
- {
- SOCK_STATE_CALLBACK(channel, server->udp_socket, 0, 0);
- sclose(server->udp_socket);
- server->udp_socket = ARES_SOCKET_BAD;
- }
-}
diff --git a/ares/ares__get_hostent.c b/ares/ares__get_hostent.c
deleted file mode 100644
index caa7f795b..000000000
--- a/ares/ares__get_hostent.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998, 2010 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-
-#include "ares.h"
-#include "inet_net_pton.h"
-#include "ares_private.h"
-
-int ares__get_hostent(FILE *fp, int family, struct hostent **host)
-{
- char *line = NULL, *p, *q, **alias;
- char *txtaddr, *txthost, *txtalias;
- int status;
- size_t addrlen, linesize, naliases;
- struct ares_addr addr;
- struct hostent *hostent = NULL;
-
- *host = NULL; /* Assume failure */
-
- /* Validate family */
- switch (family) {
- case AF_INET:
- case AF_INET6:
- case AF_UNSPEC:
- break;
- default:
- return ARES_EBADFAMILY;
- }
-
- while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
- {
-
- /* Trim line comment. */
- p = line;
- while (*p && (*p != '#'))
- p++;
- *p = '\0';
-
- /* Trim trailing whitespace. */
- q = p - 1;
- while ((q >= line) && ISSPACE(*q))
- q--;
- *++q = '\0';
-
- /* Skip leading whitespace. */
- p = line;
- while (*p && ISSPACE(*p))
- p++;
- if (!*p)
- /* Ignore line if empty. */
- continue;
-
- /* Pointer to start of IPv4 or IPv6 address part. */
- txtaddr = p;
-
- /* Advance past address part. */
- while (*p && !ISSPACE(*p))
- p++;
- if (!*p)
- /* Ignore line if reached end of line. */
- continue;
-
- /* Null terminate address part. */
- *p = '\0';
-
- /* Advance to host name */
- p++;
- while (*p && ISSPACE(*p))
- p++;
- if (!*p)
- /* Ignore line if reached end of line. */
- continue;
-
- /* Pointer to start of host name. */
- txthost = p;
-
- /* Advance past host name. */
- while (*p && !ISSPACE(*p))
- p++;
-
- /* Pointer to start of first alias. */
- txtalias = NULL;
- if (*p)
- {
- q = p + 1;
- while (*q && ISSPACE(*q))
- q++;
- if (*q)
- txtalias = q;
- }
-
- /* Null terminate host name. */
- *p = '\0';
-
- /* find out number of aliases. */
- naliases = 0;
- if (txtalias)
- {
- p = txtalias;
- while (*p)
- {
- while (*p && !ISSPACE(*p))
- p++;
- while (*p && ISSPACE(*p))
- p++;
- naliases++;
- }
- }
-
- /* Convert address string to network address for the requested family. */
- addrlen = 0;
- addr.family = AF_UNSPEC;
- addr.addrV4.s_addr = INADDR_NONE;
- if ((family == AF_INET) || (family == AF_UNSPEC))
- {
- addr.addrV4.s_addr = inet_addr(txtaddr);
- if (addr.addrV4.s_addr != INADDR_NONE)
- {
- /* Actual network address family and length. */
- addr.family = AF_INET;
- addrlen = sizeof(addr.addrV4);
- }
- }
- if ((family == AF_INET6) || ((family == AF_UNSPEC) && (!addrlen)))
- {
- if (ares_inet_pton(AF_INET6, txtaddr, &addr.addrV6) > 0)
- {
- /* Actual network address family and length. */
- addr.family = AF_INET6;
- addrlen = sizeof(addr.addrV6);
- }
- }
- if (!addrlen)
- /* Ignore line if invalid address string for the requested family. */
- continue;
-
- /*
- ** Actual address family possible values are AF_INET and AF_INET6 only.
- */
-
- /* Allocate memory for the hostent structure. */
- hostent = malloc(sizeof(struct hostent));
- if (!hostent)
- break;
-
- /* Initialize fields for out of memory condition. */
- hostent->h_aliases = NULL;
- hostent->h_addr_list = NULL;
-
- /* Copy official host name. */
- hostent->h_name = strdup(txthost);
- if (!hostent->h_name)
- break;
-
- /* Copy network address. */
- hostent->h_addr_list = malloc(2 * sizeof(char *));
- if (!hostent->h_addr_list)
- break;
- hostent->h_addr_list[1] = NULL;
- hostent->h_addr_list[0] = malloc(addrlen);
- if (!hostent->h_addr_list[0])
- break;
- if (addr.family == AF_INET)
- memcpy(hostent->h_addr_list[0], &addr.addrV4, sizeof(addr.addrV4));
- else
- memcpy(hostent->h_addr_list[0], &addr.addrV6, sizeof(addr.addrV6));
-
- /* Copy aliases. */
- hostent->h_aliases = malloc((naliases + 1) * sizeof(char *));
- if (!hostent->h_aliases)
- break;
- alias = hostent->h_aliases;
- while (naliases)
- *(alias + naliases--) = NULL;
- *alias = NULL;
- while (txtalias)
- {
- p = txtalias;
- while (*p && !ISSPACE(*p))
- p++;
- q = p;
- while (*q && ISSPACE(*q))
- q++;
- *p = '\0';
- if ((*alias = strdup(txtalias)) == NULL)
- break;
- alias++;
- txtalias = *q ? q : NULL;
- }
- if (txtalias)
- /* Alias memory allocation failure. */
- break;
-
- /* Copy actual network address family and length. */
- hostent->h_addrtype = addr.family;
- hostent->h_length = (int)addrlen;
-
- /* Free line buffer. */
- free(line);
-
- /* Return hostent successfully */
- *host = hostent;
- return ARES_SUCCESS;
-
- }
-
- /* If allocated, free line buffer. */
- if (line)
- free(line);
-
- if (status == ARES_SUCCESS)
- {
- /* Memory allocation failure; clean up. */
- if (hostent)
- {
- if (hostent->h_name)
- free((char *) hostent->h_name);
- if (hostent->h_aliases)
- {
- for (alias = hostent->h_aliases; *alias; alias++)
- free(*alias);
- free(hostent->h_aliases);
- }
- if (hostent->h_addr_list)
- {
- if (hostent->h_addr_list[0])
- free(hostent->h_addr_list[0]);
- free(hostent->h_addr_list);
- }
- free(hostent);
- }
- return ARES_ENOMEM;
- }
-
- return status;
-}
diff --git a/ares/ares__read_line.c b/ares/ares__read_line.c
deleted file mode 100644
index 2e94945dc..000000000
--- a/ares/ares__read_line.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-#include "ares_nowarn.h"
-#include "ares_private.h"
-
-/* This is an internal function. Its contract is to read a line from
- * a file into a dynamically allocated buffer, zeroing the trailing
- * newline if there is one. The calling routine may call
- * ares__read_line multiple times with the same buf and bufsize
- * pointers; *buf will be reallocated and *bufsize adjusted as
- * appropriate. The initial value of *buf should be NULL. After the
- * calling routine is done reading lines, it should free *buf.
- */
-int ares__read_line(FILE *fp, char **buf, size_t *bufsize)
-{
- char *newbuf;
- size_t offset = 0;
- size_t len;
-
- if (*buf == NULL)
- {
- *buf = malloc(128);
- if (!*buf)
- return ARES_ENOMEM;
- *bufsize = 128;
- }
-
- for (;;)
- {
- int bytestoread = aresx_uztosi(*bufsize - offset);
-
- if (!fgets(*buf + offset, bytestoread, fp))
- return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
- len = offset + strlen(*buf + offset);
- if ((*buf)[len - 1] == '\n')
- {
- (*buf)[len - 1] = 0;
- break;
- }
- offset = len;
- if(len < *bufsize - 1)
- continue;
-
- /* Allocate more space. */
- newbuf = realloc(*buf, *bufsize * 2);
- if (!newbuf)
- return ARES_ENOMEM;
- *buf = newbuf;
- *bufsize *= 2;
- }
- return ARES_SUCCESS;
-}
diff --git a/ares/ares__timeval.c b/ares/ares__timeval.c
deleted file mode 100644
index 8cf37e91c..000000000
--- a/ares/ares__timeval.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2008 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include "ares.h"
-#include "ares_private.h"
-
-#if defined(WIN32) && !defined(MSDOS)
-
-struct timeval ares__tvnow(void)
-{
- /*
- ** GetTickCount() is available on _all_ Windows versions from W95 up
- ** to nowadays. Returns milliseconds elapsed since last system boot,
- ** increases monotonically and wraps once 49.7 days have elapsed.
- */
- struct timeval now;
- DWORD milliseconds = GetTickCount();
- now.tv_sec = milliseconds / 1000;
- now.tv_usec = (milliseconds % 1000) * 1000;
- return now;
-}
-
-#elif defined(HAVE_CLOCK_GETTIME_MONOTONIC)
-
-struct timeval ares__tvnow(void)
-{
- /*
- ** clock_gettime() is granted to be increased monotonically when the
- ** monotonic clock is queried. Time starting point is unspecified, it
- ** could be the system start-up time, the Epoch, or something else,
- ** in any case the time starting point does not change once that the
- ** system has started up.
- */
- struct timeval now;
- struct timespec tsnow;
- if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
- now.tv_sec = tsnow.tv_sec;
- now.tv_usec = tsnow.tv_nsec / 1000;
- }
- /*
- ** Even when the configure process has truly detected monotonic clock
- ** availability, it might happen that it is not actually available at
- ** run-time. When this occurs simply fallback to other time source.
- */
-#ifdef HAVE_GETTIMEOFDAY
- else
- (void)gettimeofday(&now, NULL);
-#else
- else {
- now.tv_sec = (long)time(NULL);
- now.tv_usec = 0;
- }
-#endif
- return now;
-}
-
-#elif defined(HAVE_GETTIMEOFDAY)
-
-struct timeval ares__tvnow(void)
-{
- /*
- ** gettimeofday() is not granted to be increased monotonically, due to
- ** clock drifting and external source time synchronization it can jump
- ** forward or backward in time.
- */
- struct timeval now;
- (void)gettimeofday(&now, NULL);
- return now;
-}
-
-#else
-
-struct timeval ares__tvnow(void)
-{
- /*
- ** time() returns the value of time in seconds since the Epoch.
- */
- struct timeval now;
- now.tv_sec = (long)time(NULL);
- now.tv_usec = 0;
- return now;
-}
-
-#endif
-
-#if 0 /* Not used */
-/*
- * Make sure that the first argument is the more recent time, as otherwise
- * we'll get a weird negative time-diff back...
- *
- * Returns: the time difference in number of milliseconds.
- */
-long ares__tvdiff(struct timeval newer, struct timeval older)
-{
- return (newer.tv_sec-older.tv_sec)*1000+
- (newer.tv_usec-older.tv_usec)/1000;
-}
-#endif
-
diff --git a/ares/ares_build.h.dist b/ares/ares_build.h.dist
deleted file mode 100644
index a55191c53..000000000
--- a/ares/ares_build.h.dist
+++ /dev/null
@@ -1,253 +0,0 @@
-#ifndef __CARES_BUILD_H
-#define __CARES_BUILD_H
-
-/* $Id$ */
-
-/* Copyright (C) 2009 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/* ================================================================ */
-/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * See file ares_build.h.in, run configure, and forget that this file
- * exists it is only used for non-configure systems.
- * But you can keep reading if you want ;-)
- *
- */
-
-/* ================================================================ */
-/* NOTES FOR NON-CONFIGURE SYSTEMS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * Nothing in this file is intended to be modified or adjusted by the
- * c-ares library user nor by the c-ares library builder.
- *
- * If you think that something actually needs to be changed, adjusted
- * or fixed in this file, then, report it on the c-ares development
- * mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/
- *
- * Try to keep one section per platform, compiler and architecture,
- * otherwise, if an existing section is reused for a different one and
- * later on the original is adjusted, probably the piggybacking one can
- * be adversely changed.
- *
- * In order to differentiate between platforms/compilers/architectures
- * use only compiler built in predefined preprocessor symbols.
- *
- * This header file shall only export symbols which are 'cares' or 'CARES'
- * prefixed, otherwise public name space would be polluted.
- *
- * NOTE 2:
- * -------
- *
- * Right now you might be staring at file ares_build.h.dist or ares_build.h,
- * this is due to the following reason: file ares_build.h.dist is renamed
- * to ares_build.h when the c-ares source code distribution archive file is
- * created.
- *
- * File ares_build.h.dist is not included in the distribution archive.
- * File ares_build.h is not present in the CVS tree.
- *
- * The distributed ares_build.h file is only intended to be used on systems
- * which can not run the also distributed configure script.
- *
- * On systems capable of running the configure script, the configure process
- * will overwrite the distributed ares_build.h file with one that is suitable
- * and specific to the library being configured and built, which is generated
- * from the ares_build.h.in template file.
- *
- * If you check out from CVS on a non-configure platform, you must run the
- * appropriate buildconf* script to set up ares_build.h and other local files.
- *
- */
-
-/* ================================================================ */
-/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
-/* ================================================================ */
-
-#ifdef CARES_SIZEOF_LONG
-# error "CARES_SIZEOF_LONG shall not be defined except in ares_build.h"
- Error Compilation_aborted_CARES_SIZEOF_LONG_already_defined
-#endif
-
-#ifdef CARES_TYPEOF_ARES_SOCKLEN_T
-# error "CARES_TYPEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h"
- Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_already_defined
-#endif
-
-#ifdef CARES_SIZEOF_ARES_SOCKLEN_T
-# error "CARES_SIZEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h"
- Error Compilation_aborted_CARES_SIZEOF_ARES_SOCKLEN_T_already_defined
-#endif
-
-/* ================================================================ */
-/* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */
-/* ================================================================ */
-
-#if defined(__DJGPP__) || defined(__GO32__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__SALFORDC__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__BORLANDC__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__TURBOC__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__WATCOMC__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__POCC__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__LCC__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__SYMBIAN32__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__MWERKS__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(_WIN32_WCE)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__MINGW32__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__VMS)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T unsigned int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-#elif defined(__OS400__)
-# if defined(__ILEC400__)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-# define CARES_PULL_SYS_TYPES_H 1
-# define CARES_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(__MVS__)
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# if defined(_ILP32)
-# define CARES_SIZEOF_LONG 4
-# elif defined(_LP64)
-# define CARES_SIZEOF_LONG 8
-# endif
-# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-# define CARES_PULL_SYS_TYPES_H 1
-# define CARES_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(__370__)
-# if defined(__IBMC__) || defined(__IBMCPP__)
-# if defined(_ILP32)
-# define CARES_SIZEOF_LONG 4
-# elif defined(_LP64)
-# define CARES_SIZEOF_LONG 8
-# endif
-# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-# define CARES_PULL_SYS_TYPES_H 1
-# define CARES_PULL_SYS_SOCKET_H 1
-# endif
-
-#elif defined(TPF)
-# define CARES_SIZEOF_LONG 8
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-/* ===================================== */
-/* KEEP MSVC THE PENULTIMATE ENTRY */
-/* ===================================== */
-
-#elif defined(_MSC_VER)
-# define CARES_SIZEOF_LONG 4
-# define CARES_TYPEOF_ARES_SOCKLEN_T int
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-
-/* ===================================== */
-/* KEEP GENERIC GCC THE LAST ENTRY */
-/* ===================================== */
-
-#elif defined(__GNUC__)
-# if defined(__i386__) || defined(__ppc__)
-# define CARES_SIZEOF_LONG 4
-# elif defined(__x86_64__) || defined(__ppc64__)
-# define CARES_SIZEOF_LONG 8
-# endif
-# define CARES_TYPEOF_ARES_SOCKLEN_T socklen_t
-# define CARES_SIZEOF_ARES_SOCKLEN_T 4
-# define CARES_PULL_SYS_TYPES_H 1
-# define CARES_PULL_SYS_SOCKET_H 1
-
-#else
-# error "Unknown non-configure build target!"
- Error Compilation_aborted_Unknown_non_configure_build_target
-#endif
-
-/* CARES_PULL_SYS_TYPES_H is defined above when inclusion of header file */
-/* sys/types.h is required here to properly make type definitions below. */
-#ifdef CARES_PULL_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-/* CARES_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
-/* sys/socket.h is required here to properly make type definitions below. */
-#ifdef CARES_PULL_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-
-/* Data type definition of ares_socklen_t. */
-
-#ifdef CARES_TYPEOF_ARES_SOCKLEN_T
- typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
-#endif
-
-#endif /* __CARES_BUILD_H */
diff --git a/ares/ares_build.h.in b/ares/ares_build.h.in
deleted file mode 100644
index 6d2f87ca3..000000000
--- a/ares/ares_build.h.in
+++ /dev/null
@@ -1,111 +0,0 @@
-#ifndef __CARES_BUILD_H
-#define __CARES_BUILD_H
-
-/* $Id$ */
-
-/* Copyright (C) 2009 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/* ================================================================ */
-/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * Nothing in this file is intended to be modified or adjusted by the
- * c-ares library user nor by the c-ares library builder.
- *
- * If you think that something actually needs to be changed, adjusted
- * or fixed in this file, then, report it on the c-ares development
- * mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/
- *
- * This header file shall only export symbols which are 'cares' or 'CARES'
- * prefixed, otherwise public name space would be polluted.
- *
- * NOTE 2:
- * -------
- *
- * Right now you might be staring at file ares_build.h.in or ares_build.h,
- * this is due to the following reason:
- *
- * On systems capable of running the configure script, the configure process
- * will overwrite the distributed ares_build.h file with one that is suitable
- * and specific to the library being configured and built, which is generated
- * from the ares_build.h.in template file.
- *
- */
-
-/* ================================================================ */
-/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
-/* ================================================================ */
-
-#ifdef CARES_SIZEOF_LONG
-# error "CARES_SIZEOF_LONG shall not be defined except in ares_build.h"
- Error Compilation_aborted_CARES_SIZEOF_LONG_already_defined
-#endif
-
-#ifdef CARES_TYPEOF_ARES_SOCKLEN_T
-# error "CARES_TYPEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h"
- Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_already_defined
-#endif
-
-#ifdef CARES_SIZEOF_ARES_SOCKLEN_T
-# error "CARES_SIZEOF_ARES_SOCKLEN_T shall not be defined except in ares_build.h"
- Error Compilation_aborted_CARES_SIZEOF_ARES_SOCKLEN_T_already_defined
-#endif
-
-/* ================================================================ */
-/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
-/* ================================================================ */
-
-/* Configure process defines this to 1 when it finds out that system */
-/* header file ws2tcpip.h must be included by the external interface. */
-#undef CARES_PULL_WS2TCPIP_H
-#ifdef CARES_PULL_WS2TCPIP_H
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h>
-# include <winsock2.h>
-# include <ws2tcpip.h>
-#endif
-
-/* Configure process defines this to 1 when it finds out that system */
-/* header file sys/types.h must be included by the external interface. */
-#undef CARES_PULL_SYS_TYPES_H
-#ifdef CARES_PULL_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-/* Configure process defines this to 1 when it finds out that system */
-/* header file sys/socket.h must be included by the external interface. */
-#undef CARES_PULL_SYS_SOCKET_H
-#ifdef CARES_PULL_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-
-/* The size of `long', as computed by sizeof. */
-#undef CARES_SIZEOF_LONG
-
-/* Integral data type used for ares_socklen_t. */
-#undef CARES_TYPEOF_ARES_SOCKLEN_T
-
-/* The size of `ares_socklen_t', as computed by sizeof. */
-#undef CARES_SIZEOF_ARES_SOCKLEN_T
-
-/* Data type definition of ares_socklen_t. */
-typedef CARES_TYPEOF_ARES_SOCKLEN_T ares_socklen_t;
-
-#endif /* __CARES_BUILD_H */
diff --git a/ares/ares_cancel.3 b/ares/ares_cancel.3
deleted file mode 100644
index 3c6153afe..000000000
--- a/ares/ares_cancel.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_CANCEL 3 "31 March 2004"
-.SH NAME
-ares_cancel \- Cancel a resolve
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_cancel(ares_channel \fIchannel\fP)
-.fi
-.SH DESCRIPTION
-The \fBares_cancel\fP function cancels all lookups/requests made on the the
-name service channel identified by \fIchannel\fP. \fBares_cancel\fP invokes
-the callbacks for each pending query on the channel, passing a status of
-.BR ARES_ECANCELLED .
-These calls give the callbacks a chance to clean up any state which
-might have been stored in their arguments.
-.SH SEE ALSO
-.BR ares_init (3)
-.BR ares_destroy (3)
-.SH NOTES
-This function was added in c-ares 1.2.0
-
-c-ares 1.6.0 and earlier pass a status of
-.BR ARES_ETIMEOUT
-instead of
-.BR ARES_ECANCELLED .
-.SH AUTHOR
-Dirk Manske
diff --git a/ares/ares_cancel.c b/ares/ares_cancel.c
deleted file mode 100644
index a730a651e..000000000
--- a/ares/ares_cancel.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2004 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include <assert.h>
-#include <stdlib.h>
-#include "ares.h"
-#include "ares_private.h"
-
-/*
- * ares_cancel() cancels all ongoing requests/resolves that might be going on
- * on the given channel. It does NOT kill the channel, use ares_destroy() for
- * that.
- */
-void ares_cancel(ares_channel channel)
-{
- struct query *query;
- struct list_node* list_head;
- struct list_node* list_node;
- int i;
-
- list_head = &(channel->all_queries);
- for (list_node = list_head->next; list_node != list_head; )
- {
- query = list_node->data;
- list_node = list_node->next; /* since we're deleting the query */
- query->callback(query->arg, ARES_ECANCELLED, 0, NULL, 0);
- ares__free_query(query);
- }
-#ifndef NDEBUG
- /* Freeing the query should remove it from all the lists in which it sits,
- * so all query lists should be empty now.
- */
- assert(ares__is_list_empty(&(channel->all_queries)));
- for (i = 0; i < ARES_QID_TABLE_SIZE; i++)
- {
- assert(ares__is_list_empty(&(channel->queries_by_qid[i])));
- }
- for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++)
- {
- assert(ares__is_list_empty(&(channel->queries_by_timeout[i])));
- }
-#endif
- if (!(channel->flags & ARES_FLAG_STAYOPEN))
- {
- if (channel->servers)
- {
- for (i = 0; i < channel->nservers; i++)
- ares__close_sockets(channel, &channel->servers[i]);
- }
- }
-}
diff --git a/ares/ares_data.c b/ares/ares_data.c
deleted file mode 100644
index 3a4c00c97..000000000
--- a/ares/ares_data.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2009-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-
-#include "ares_setup.h"
-
-#include <stddef.h>
-
-#include "ares.h"
-#include "ares_data.h"
-#include "ares_private.h"
-
-
-/*
-** ares_free_data() - c-ares external API function.
-**
-** This function must be used by the application to free data memory that
-** has been internally allocated by some c-ares function and for which a
-** pointer has already been returned to the calling application. The list
-** of c-ares functions returning pointers that must be free'ed using this
-** function is:
-**
-** ares_get_servers()
-** ares_parse_srv_reply()
-** ares_parse_txt_reply()
-*/
-
-void ares_free_data(void *dataptr)
-{
- struct ares_data *ptr;
-
- if (!dataptr)
- return;
-
-#ifdef __INTEL_COMPILER
-# pragma warning(push)
-# pragma warning(disable:1684)
- /* 1684: conversion from pointer to same-sized integral type */
-#endif
-
- ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
-
-#ifdef __INTEL_COMPILER
-# pragma warning(pop)
-#endif
-
- if (ptr->mark != ARES_DATATYPE_MARK)
- return;
-
- switch (ptr->type)
- {
- case ARES_DATATYPE_SRV_REPLY:
-
- if (ptr->data.srv_reply.next)
- ares_free_data(ptr->data.srv_reply.next);
- if (ptr->data.srv_reply.host)
- free(ptr->data.srv_reply.host);
- break;
-
- case ARES_DATATYPE_TXT_REPLY:
-
- if (ptr->data.txt_reply.next)
- ares_free_data(ptr->data.txt_reply.next);
- if (ptr->data.txt_reply.txt)
- free(ptr->data.txt_reply.txt);
- break;
-
- case ARES_DATATYPE_ADDR_NODE:
-
- if (ptr->data.addr_node.next)
- ares_free_data(ptr->data.addr_node.next);
- break;
-
- default:
- return;
- }
-
- free(ptr);
-}
-
-
-/*
-** ares_malloc_data() - c-ares internal helper function.
-**
-** This function allocates memory for a c-ares private ares_data struct
-** for the specified ares_datatype, initializes c-ares private fields
-** and zero initializes those which later might be used from the public
-** API. It returns an interior pointer which can be passed by c-ares
-** functions to the calling application, and that must be free'ed using
-** c-ares external API function ares_free_data().
-*/
-
-void *ares_malloc_data(ares_datatype type)
-{
- struct ares_data *ptr;
-
- ptr = malloc(sizeof(struct ares_data));
- if (!ptr)
- return NULL;
-
- switch (type)
- {
- case ARES_DATATYPE_SRV_REPLY:
- ptr->data.srv_reply.next = NULL;
- ptr->data.srv_reply.host = NULL;
- ptr->data.srv_reply.priority = 0;
- ptr->data.srv_reply.weight = 0;
- ptr->data.srv_reply.port = 0;
- break;
-
- case ARES_DATATYPE_TXT_REPLY:
- ptr->data.txt_reply.next = NULL;
- ptr->data.txt_reply.txt = NULL;
- ptr->data.txt_reply.length = 0;
- break;
-
- case ARES_DATATYPE_ADDR_NODE:
- ptr->data.addr_node.next = NULL;
- ptr->data.addr_node.family = 0;
- memset(&ptr->data.addr_node.addrV6, 0,
- sizeof(ptr->data.addr_node.addrV6));
-
- default:
- free(ptr);
- return NULL;
- }
-
- ptr->mark = ARES_DATATYPE_MARK;
- ptr->type = type;
-
- return &ptr->data;
-}
-
-
-/*
-** ares_get_datatype() - c-ares internal helper function.
-**
-** This function returns the ares_datatype of the data stored in a
-** private ares_data struct when given the public API pointer.
-*/
-
-ares_datatype ares_get_datatype(void * dataptr)
-{
- struct ares_data *ptr;
-
-#ifdef __INTEL_COMPILER
-# pragma warning(push)
-# pragma warning(disable:1684)
- /* 1684: conversion from pointer to same-sized integral type */
-#endif
-
- ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
-
-#ifdef __INTEL_COMPILER
-# pragma warning(pop)
-#endif
-
- if (ptr->mark == ARES_DATATYPE_MARK)
- return ptr->type;
-
- return ARES_DATATYPE_UNKNOWN;
-}
diff --git a/ares/ares_data.h b/ares/ares_data.h
deleted file mode 100644
index 02ff1bca5..000000000
--- a/ares/ares_data.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2009-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-typedef enum {
- ARES_DATATYPE_UNKNOWN = 1, /* unknown data type - introduced in 1.7.0 */
- ARES_DATATYPE_SRV_REPLY, /* struct ares_srv_reply - introduced in 1.7.0 */
- ARES_DATATYPE_TXT_REPLY, /* struct ares_txt_reply - introduced in 1.7.0 */
- ARES_DATATYPE_ADDR_NODE, /* struct ares_addr_node - introduced in 1.7.1 */
-#if 0
- ARES_DATATYPE_ADDR6TTL, /* struct ares_addrttl */
- ARES_DATATYPE_ADDRTTL, /* struct ares_addr6ttl */
- ARES_DATATYPE_HOSTENT, /* struct hostent */
- ARES_DATATYPE_OPTIONS, /* struct ares_options */
-#endif
- ARES_DATATYPE_LAST /* not used - introduced in 1.7.0 */
-} ares_datatype;
-
-#define ARES_DATATYPE_MARK 0xbead
-
-/*
- * ares_data struct definition is internal to c-ares and shall not
- * be exposed by the public API in order to allow future changes
- * and extensions to it without breaking ABI. This will be used
- * internally by c-ares as the container of multiple types of data
- * dynamically allocated for which a reference will be returned
- * to the calling application.
- *
- * c-ares API functions returning a pointer to c-ares internally
- * allocated data will actually be returning an interior pointer
- * into this ares_data struct.
- *
- * All this is 'invisible' to the calling application, the only
- * requirement is that this kind of data must be free'ed by the
- * calling application using ares_free_data() with the pointer
- * it has received from a previous c-ares function call.
- */
-
-struct ares_data {
- ares_datatype type; /* Actual data type identifier. */
- unsigned int mark; /* Private ares_data signature. */
- union {
- struct ares_txt_reply txt_reply;
- struct ares_srv_reply srv_reply;
- struct ares_addr_node addr_node;
- } data;
-};
-
-void *ares_malloc_data(ares_datatype type);
-
-ares_datatype ares_get_datatype(void * dataptr);
diff --git a/ares/ares_destroy.3 b/ares/ares_destroy.3
deleted file mode 100644
index a6ea84fd5..000000000
--- a/ares/ares_destroy.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_DESTROY 3 "7 December 2004"
-.SH NAME
-ares_destroy \- Destroy a resolver channel
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_destroy(ares_channel \fIchannel\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_destroy
-function destroys the name service channel identified by
-.IR channel ,
-freeing all memory and closing all sockets used by the channel.
-.B ares_destroy
-invokes the callbacks for each pending query on the channel, passing a
-status of
-.BR ARES_EDESTRUCTION .
-These calls give the callbacks a chance to clean up any state which
-might have been stored in their arguments.
-.SH SEE ALSO
-.BR ares_init (3),
-.BR ares_cancel (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_destroy.c b/ares/ares_destroy.c
deleted file mode 100644
index d9216668f..000000000
--- a/ares/ares_destroy.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2004-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include <assert.h>
-#include <stdlib.h>
-#include "ares.h"
-#include "ares_private.h"
-
-void ares_destroy_options(struct ares_options *options)
-{
- int i;
-
- if(options->servers)
- free(options->servers);
- for (i = 0; i < options->ndomains; i++)
- free(options->domains[i]);
- free(options->domains);
- if(options->sortlist)
- free(options->sortlist);
- free(options->lookups);
-}
-
-void ares_destroy(ares_channel channel)
-{
- int i;
- struct query *query;
- struct list_node* list_head;
- struct list_node* list_node;
-
- if (!channel)
- return;
-
- list_head = &(channel->all_queries);
- for (list_node = list_head->next; list_node != list_head; )
- {
- query = list_node->data;
- list_node = list_node->next; /* since we're deleting the query */
- query->callback(query->arg, ARES_EDESTRUCTION, 0, NULL, 0);
- ares__free_query(query);
- }
-#ifndef NDEBUG
- /* Freeing the query should remove it from all the lists in which it sits,
- * so all query lists should be empty now.
- */
- assert(ares__is_list_empty(&(channel->all_queries)));
- for (i = 0; i < ARES_QID_TABLE_SIZE; i++)
- {
- assert(ares__is_list_empty(&(channel->queries_by_qid[i])));
- }
- for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++)
- {
- assert(ares__is_list_empty(&(channel->queries_by_timeout[i])));
- }
-#endif
-
- ares__destroy_servers_state(channel);
-
- if (channel->domains) {
- for (i = 0; i < channel->ndomains; i++)
- free(channel->domains[i]);
- free(channel->domains);
- }
-
- if(channel->sortlist)
- free(channel->sortlist);
-
- if (channel->lookups)
- free(channel->lookups);
-
- free(channel);
-}
-
-void ares__destroy_servers_state(ares_channel channel)
-{
- struct server_state *server;
- int i;
-
- if (channel->servers)
- {
- for (i = 0; i < channel->nservers; i++)
- {
- server = &channel->servers[i];
- ares__close_sockets(channel, server);
- assert(ares__is_list_empty(&server->queries_to_server));
- }
- free(channel->servers);
- channel->servers = NULL;
- }
- channel->nservers = -1;
-}
diff --git a/ares/ares_destroy_options.3 b/ares/ares_destroy_options.3
deleted file mode 100644
index 15c5f42f1..000000000
--- a/ares/ares_destroy_options.3
+++ /dev/null
@@ -1,39 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_DESTROY_OPTIONS 3 "1 June 2007"
-.SH NAME
-ares_destroy_options \- Destroy options initialized with ares_save_options
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_destroy_options(struct ares_options *\fIoptions\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_destroy_options
-function destroys the options struct identified by
-.IR options ,
-freeing all memory allocated by ares_save_options.
-
-.SH SEE ALSO
-.BR ares_save_options (3),
-.BR ares_init_options (3)
-.SH AUTHOR
-Brad House
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_dns.h b/ares/ares_dns.h
deleted file mode 100644
index 2187da6e3..000000000
--- a/ares/ares_dns.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifndef ARES__DNS_H
-#define ARES__DNS_H
-
-#define DNS__16BIT(p) (((p)[0] << 8) | (p)[1])
-#define DNS__32BIT(p) (((p)[0] << 24) | ((p)[1] << 16) | \
- ((p)[2] << 8) | (p)[3])
-
-#define DNS__SET16BIT(p, v) (((p)[0] = (unsigned char)(((v) >> 8) & 0xff)), \
- ((p)[1] = (unsigned char)((v) & 0xff)))
-#define DNS__SET32BIT(p, v) (((p)[0] = (unsigned char)(((v) >> 24) & 0xff)), \
- ((p)[1] = (unsigned char)(((v) >> 16) & 0xff)), \
- ((p)[2] = (unsigned char)(((v) >> 8) & 0xff)), \
- ((p)[3] = (unsigned char)((v) & 0xff)))
-
-#if 0
-/* we cannot use this approach on systems where we can't access 16/32 bit
- data on un-aligned addresses */
-#define DNS__16BIT(p) ntohs(*(unsigned short*)(p))
-#define DNS__32BIT(p) ntohl(*(unsigned long*)(p))
-#define DNS__SET16BIT(p, v) *(unsigned short*)(p) = htons(v)
-#define DNS__SET32BIT(p, v) *(unsigned long*)(p) = htonl(v)
-#endif
-
-/* Macros for parsing a DNS header */
-#define DNS_HEADER_QID(h) DNS__16BIT(h)
-#define DNS_HEADER_QR(h) (((h)[2] >> 7) & 0x1)
-#define DNS_HEADER_OPCODE(h) (((h)[2] >> 3) & 0xf)
-#define DNS_HEADER_AA(h) (((h)[2] >> 2) & 0x1)
-#define DNS_HEADER_TC(h) (((h)[2] >> 1) & 0x1)
-#define DNS_HEADER_RD(h) ((h)[2] & 0x1)
-#define DNS_HEADER_RA(h) (((h)[3] >> 7) & 0x1)
-#define DNS_HEADER_Z(h) (((h)[3] >> 4) & 0x7)
-#define DNS_HEADER_RCODE(h) ((h)[3] & 0xf)
-#define DNS_HEADER_QDCOUNT(h) DNS__16BIT((h) + 4)
-#define DNS_HEADER_ANCOUNT(h) DNS__16BIT((h) + 6)
-#define DNS_HEADER_NSCOUNT(h) DNS__16BIT((h) + 8)
-#define DNS_HEADER_ARCOUNT(h) DNS__16BIT((h) + 10)
-
-/* Macros for constructing a DNS header */
-#define DNS_HEADER_SET_QID(h, v) DNS__SET16BIT(h, v)
-#define DNS_HEADER_SET_QR(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 7))
-#define DNS_HEADER_SET_OPCODE(h, v) ((h)[2] |= (unsigned char)(((v) & 0xf) << 3))
-#define DNS_HEADER_SET_AA(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 2))
-#define DNS_HEADER_SET_TC(h, v) ((h)[2] |= (unsigned char)(((v) & 0x1) << 1))
-#define DNS_HEADER_SET_RD(h, v) ((h)[2] |= (unsigned char)((v) & 0x1))
-#define DNS_HEADER_SET_RA(h, v) ((h)[3] |= (unsigned char)(((v) & 0x1) << 7))
-#define DNS_HEADER_SET_Z(h, v) ((h)[3] |= (unsigned char)(((v) & 0x7) << 4))
-#define DNS_HEADER_SET_RCODE(h, v) ((h)[3] |= (unsigned char)((v) & 0xf))
-#define DNS_HEADER_SET_QDCOUNT(h, v) DNS__SET16BIT((h) + 4, v)
-#define DNS_HEADER_SET_ANCOUNT(h, v) DNS__SET16BIT((h) + 6, v)
-#define DNS_HEADER_SET_NSCOUNT(h, v) DNS__SET16BIT((h) + 8, v)
-#define DNS_HEADER_SET_ARCOUNT(h, v) DNS__SET16BIT((h) + 10, v)
-
-/* Macros for parsing the fixed part of a DNS question */
-#define DNS_QUESTION_TYPE(q) DNS__16BIT(q)
-#define DNS_QUESTION_CLASS(q) DNS__16BIT((q) + 2)
-
-/* Macros for constructing the fixed part of a DNS question */
-#define DNS_QUESTION_SET_TYPE(q, v) DNS__SET16BIT(q, v)
-#define DNS_QUESTION_SET_CLASS(q, v) DNS__SET16BIT((q) + 2, v)
-
-/* Macros for parsing the fixed part of a DNS resource record */
-#define DNS_RR_TYPE(r) DNS__16BIT(r)
-#define DNS_RR_CLASS(r) DNS__16BIT((r) + 2)
-#define DNS_RR_TTL(r) DNS__32BIT((r) + 4)
-#define DNS_RR_LEN(r) DNS__16BIT((r) + 8)
-
-/* Macros for constructing the fixed part of a DNS resource record */
-#define DNS_RR_SET_TYPE(r) DNS__SET16BIT(r, v)
-#define DNS_RR_SET_CLASS(r) DNS__SET16BIT((r) + 2, v)
-#define DNS_RR_SET_TTL(r) DNS__SET32BIT((r) + 4, v)
-#define DNS_RR_SET_LEN(r) DNS__SET16BIT((r) + 8, v)
-
-#endif /* ARES__DNS_H */
diff --git a/ares/ares_dup.3 b/ares/ares_dup.3
deleted file mode 100644
index 1b109bcdb..000000000
--- a/ares/ares_dup.3
+++ /dev/null
@@ -1,44 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright (C) 2004-2009 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_DUP 3 "26 May 2009"
-.SH NAME
-ares_dup \- Duplicate a resolver channel
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_dup(ares_channel *\fIdest\fP, ares_channel \fIsource\fP)
-.fi
-.SH DESCRIPTION
-The \fBares_dup(3)\fP function duplicates an existing communications channel
-for name service lookups. If it returns successfully, \fBares_dup(3)\fP will
-set the variable pointed to by \fIdest\fP to a handle used to identify the
-name service channel. The caller should invoke \fIares_destroy(3)\fP on the
-handle when the channel is no longer needed.
-
-The \fBares_dup_options\fP function also initializes a name service channel,
-with additional options set exactly as the \fIsource\fP channel has them
-configured.
-.SH SEE ALSO
-.BR ares_destroy(3),
-.BR ares_init(3),
-.BR ares_library_init(3)
-.SH AVAILABILITY
-ares_dup(3) was added in c-ares 1.6.0
-.SH AUTHOR
-Daniel Stenberg
-
diff --git a/ares/ares_expand_name.3 b/ares/ares_expand_name.3
deleted file mode 100644
index e960bd6ed..000000000
--- a/ares/ares_expand_name.3
+++ /dev/null
@@ -1,64 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_EXPAND_NAME 3 "20 Nov 2009"
-.SH NAME
-ares_expand_name \- Expand a DNS-encoded domain name
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_expand_name(const unsigned char *\fIencoded\fP,
-.B const unsigned char *\fIabuf\fP, int \fIalen\fP, char **\fIs\fP,
-.B long *\fIenclen\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_expand_name
-function converts a DNS-encoded domain name to a dot-separated C
-string. The argument
-.I encoded
-gives the beginning of the encoded domain name, and the arguments
-.I abuf
-and
-.I alen
-give the containing message buffer (necessary for the processing of
-indirection pointers within the encoded domain name). The result is
-placed in a NUL-terminated allocated buffer, a pointer to which is
-stored in the variable pointed to by
-.IR s .
-The length of the encoded name is stored in the variable pointed to by
-.I enclen
-so that the caller can advance past the encoded domain name to read
-further data in the message.
-.SH RETURN VALUES
-.B ares_expand_name
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-Expansion of the encoded name succeeded.
-.TP 15
-.B ARES_EBADNAME
-The encoded domain name was malformed and could not be expanded.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_mkquery (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_expand_name.c b/ares/ares_expand_name.c
deleted file mode 100644
index fd3220d69..000000000
--- a/ares/ares_expand_name.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdlib.h>
-#include "ares.h"
-#include "ares_private.h" /* for the memdebug */
-
-static int name_length(const unsigned char *encoded, const unsigned char *abuf,
- int alen);
-
-/* Expand an RFC1035-encoded domain name given by encoded. The
- * containing message is given by abuf and alen. The result given by
- * *s, which is set to a NUL-terminated allocated buffer. *enclen is
- * set to the length of the encoded name (not the length of the
- * expanded name; the goal is to tell the caller how many bytes to
- * move forward to get past the encoded name).
- *
- * In the simple case, an encoded name is a series of labels, each
- * composed of a one-byte length (limited to values between 0 and 63
- * inclusive) followed by the label contents. The name is terminated
- * by a zero-length label.
- *
- * In the more complicated case, a label may be terminated by an
- * indirection pointer, specified by two bytes with the high bits of
- * the first byte (corresponding to INDIR_MASK) set to 11. With the
- * two high bits of the first byte stripped off, the indirection
- * pointer gives an offset from the beginning of the containing
- * message with more labels to decode. Indirection can happen an
- * arbitrary number of times, so we have to detect loops.
- *
- * Since the expanded name uses '.' as a label separator, we use
- * backslashes to escape periods or backslashes in the expanded name.
- */
-
-int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
- int alen, char **s, long *enclen)
-{
- int len, indir = 0;
- char *q;
- const unsigned char *p;
- union {
- ssize_t sig;
- size_t uns;
- } nlen;
-
- nlen.sig = name_length(encoded, abuf, alen);
- if (nlen.sig < 0)
- return ARES_EBADNAME;
-
- *s = malloc(nlen.uns + 1);
- if (!*s)
- return ARES_ENOMEM;
- q = *s;
-
- if (nlen.uns == 0) {
- /* RFC2181 says this should be ".": the root of the DNS tree.
- * Since this function strips trailing dots though, it becomes ""
- */
- q[0] = '\0';
- *enclen = 1; /* the caller should move one byte to get past this */
- return ARES_SUCCESS;
- }
-
- /* No error-checking necessary; it was all done by name_length(). */
- p = encoded;
- while (*p)
- {
- if ((*p & INDIR_MASK) == INDIR_MASK)
- {
- if (!indir)
- {
- *enclen = p + 2 - encoded;
- indir = 1;
- }
- p = abuf + ((*p & ~INDIR_MASK) << 8 | *(p + 1));
- }
- else
- {
- len = *p;
- p++;
- while (len--)
- {
- if (*p == '.' || *p == '\\')
- *q++ = '\\';
- *q++ = *p;
- p++;
- }
- *q++ = '.';
- }
- }
- if (!indir)
- *enclen = p + 1 - encoded;
-
- /* Nuke the trailing period if we wrote one. */
- if (q > *s)
- *(q - 1) = 0;
- else
- *q = 0; /* zero terminate */
-
- return ARES_SUCCESS;
-}
-
-/* Return the length of the expansion of an encoded domain name, or
- * -1 if the encoding is invalid.
- */
-static int name_length(const unsigned char *encoded, const unsigned char *abuf,
- int alen)
-{
- int n = 0, offset, indir = 0;
-
- /* Allow the caller to pass us abuf + alen and have us check for it. */
- if (encoded == abuf + alen)
- return -1;
-
- while (*encoded)
- {
- if ((*encoded & INDIR_MASK) == INDIR_MASK)
- {
- /* Check the offset and go there. */
- if (encoded + 1 >= abuf + alen)
- return -1;
- offset = (*encoded & ~INDIR_MASK) << 8 | *(encoded + 1);
- if (offset >= alen)
- return -1;
- encoded = abuf + offset;
-
- /* If we've seen more indirects than the message length,
- * then there's a loop.
- */
- if (++indir > alen)
- return -1;
- }
- else
- {
- offset = *encoded;
- if (encoded + offset + 1 >= abuf + alen)
- return -1;
- encoded++;
- while (offset--)
- {
- n += (*encoded == '.' || *encoded == '\\') ? 2 : 1;
- encoded++;
- }
- n++;
- }
- }
-
- /* If there were any labels at all, then the number of dots is one
- * less than the number of labels, so subtract one.
- */
- return (n) ? n - 1 : n;
-}
-
-/* Like ares_expand_name but returns EBADRESP in case of invalid input. */
-int ares__expand_name_for_response(const unsigned char *encoded,
- const unsigned char *abuf, int alen,
- char **s, long *enclen)
-{
- int status = ares_expand_name(encoded, abuf, alen, s, enclen);
- if (status == ARES_EBADNAME)
- status = ARES_EBADRESP;
- return status;
-}
diff --git a/ares/ares_expand_string.3 b/ares/ares_expand_string.3
deleted file mode 100644
index 9e6eb5ea8..000000000
--- a/ares/ares_expand_string.3
+++ /dev/null
@@ -1,62 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_EXPAND_NAME 3 "20 Nov 2009"
-.SH NAME
-ares_expand_string \- Expand a length encoded string
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_expand_string(const unsigned char *\fIencoded\fP,
-.B const unsigned char *\fIabuf\fP, int \fIalen\fP, unsigned char **\fIs\fP,
-.B long *\fIenclen\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_expand_string
-function converts a length encoded string to a NUL-terminated C
-string. The argument
-.I encoded
-gives the beginning of the encoded string, and the arguments
-.I abuf
-and
-.I alen
-give the containing message buffer (necessary for the processing of
-indirection pointers within the encoded domain name). The result is
-placed in a NUL-terminated allocated buffer, a pointer to which is
-stored in the variable pointed to by
-.IR s .
-The length of the encoded string is stored in the variable pointed to by
-.I enclen
-so that the caller can advance past the encoded string to read
-further data in the message.
-.SH RETURN VALUES
-.B ares_expand_string
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-Expansion of the encoded string succeeded.
-.TP 15
-.B ARES_EBADSTR
-The encoded string was malformed and could not be expanded.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_free_string (3)
-.SH AUTHOR
-Dominick Meglio
diff --git a/ares/ares_expand_string.c b/ares/ares_expand_string.c
deleted file mode 100644
index 3b7b34138..000000000
--- a/ares/ares_expand_string.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-
-#include <string.h>
-#include <stdlib.h>
-#include "ares.h"
-#include "ares_private.h" /* for the memdebug */
-
-/* Simply decodes a length-encoded character string. The first byte of the
- * input is the length of the string to be returned and the bytes thereafter
- * are the characters of the string. The returned result will be NULL
- * terminated.
- */
-int ares_expand_string(const unsigned char *encoded,
- const unsigned char *abuf,
- int alen,
- unsigned char **s,
- long *enclen)
-{
- unsigned char *q;
- union {
- ssize_t sig;
- size_t uns;
- } elen;
-
- if (encoded == abuf+alen)
- return ARES_EBADSTR;
-
- elen.uns = *encoded;
- if (encoded+elen.sig+1 > abuf+alen)
- return ARES_EBADSTR;
-
- encoded++;
-
- *s = malloc(elen.uns+1);
- if (*s == NULL)
- return ARES_ENOMEM;
- q = *s;
- strncpy((char *)q, (char *)encoded, elen.uns);
- q[elen.uns] = '\0';
-
- *s = q;
-
- *enclen = (long)(elen.sig+1);
-
- return ARES_SUCCESS;
-}
-
diff --git a/ares/ares_fds.3 b/ares/ares_fds.3
deleted file mode 100644
index 64d91d277..000000000
--- a/ares/ares_fds.3
+++ /dev/null
@@ -1,62 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_FDS 3 "23 July 1998"
-.SH NAME
-ares_fds \- Get file descriptors to select on for name service
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_fds(ares_channel \fIchannel\fP, fd_set *\fIread_fds\fP,
-.B fd_set *\fIwrite_fds\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_fds
-function retrieves the set of file descriptors which the calling
-application should select on for reading and writing for the
-processing of name service queries pending on the name service channel
-identified by
-.IR channel .
-File descriptors will be set in the file descriptor sets pointed to by
-.I read_fds
-and
-.I write_fds
-as appropriate. File descriptors already set in
-.I read_fds
-and
-.I write_fds
-will remain set; initialization of the file descriptor sets
-(using
-.BR FD_ZERO )
-is the responsibility of the caller.
-.SH RETURN VALUES
-.B ares_fds
-returns one greater than the number of the highest socket set in either
-.I read_fds
-or
-.IR write_fds .
-If no queries are active,
-.B ares_fds
-will return 0.
-.SH SEE ALSO
-.BR ares_timeout (3),
-.BR ares_process (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_fds.c b/ares/ares_fds.c
deleted file mode 100644
index bbf5c454a..000000000
--- a/ares/ares_fds.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#include "ares.h"
-#include "ares_private.h"
-
-int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
-{
- struct server_state *server;
- ares_socket_t nfds;
- int i;
-
- /* Are there any active queries? */
- int active_queries = !ares__is_list_empty(&(channel->all_queries));
-
- nfds = 0;
- for (i = 0; i < channel->nservers; i++)
- {
- server = &channel->servers[i];
- /* We only need to register interest in UDP sockets if we have
- * outstanding queries.
- */
- if (active_queries && server->udp_socket != ARES_SOCKET_BAD)
- {
- FD_SET(server->udp_socket, read_fds);
- if (server->udp_socket >= nfds)
- nfds = server->udp_socket + 1;
- }
- /* We always register for TCP events, because we want to know
- * when the other side closes the connection, so we don't waste
- * time trying to use a broken connection.
- */
- if (server->tcp_socket != ARES_SOCKET_BAD)
- {
- FD_SET(server->tcp_socket, read_fds);
- if (server->qhead)
- FD_SET(server->tcp_socket, write_fds);
- if (server->tcp_socket >= nfds)
- nfds = server->tcp_socket + 1;
- }
- }
- return (int)nfds;
-}
diff --git a/ares/ares_free_data.3 b/ares/ares_free_data.3
deleted file mode 100644
index 2cb1f1442..000000000
--- a/ares/ares_free_data.3
+++ /dev/null
@@ -1,66 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\" Copyright (C) 2004-2010 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_FREE_DATA 3 "5 March 2010"
-.SH NAME
-ares_free_data \- Free data allocated by several c-ares functions
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_free_data(void *\fIdataptr\fP)
-.PP
-.B cc file.c -lcares
-.fi
-.SH DESCRIPTION
-.PP
-The
-.B ares_free_data(3)
-function frees one or more data structures allocated and returned
-by several c-ares functions. Specifically the data returned by the
-following list of functions must be deallocated using this function.
-.TP 5
-.B ares_get_servers(3)
-When used to free the data returned by ares_get_servers(3) this
-will free the whole linked list of ares_addr_node structures returned
-by ares_get_servers(3).
-.TP
-.B ares_parse_srv_reply(3)
-When used to free the data returned by ares_parse_srv_reply(3) this
-will free the whole linked list of ares_srv_reply structures returned
-by ares_parse_srv_reply(3), along with any additional storage
-associated with those structures.
-.TP
-.B ares_parse_txt_reply(3)
-When used to free the data returned by ares_parse_txt_reply(3) this
-will free the whole linked list of ares_txt_reply structures returned
-by ares_parse_txt_reply(3), along with any additional storage
-associated with those structures.
-.SH RETURN VALUE
-The ares_free_data() function does not return a value.
-.SH AVAILABILITY
-This function was first introduced in c-ares version 1.7.0.
-.SH SEE ALSO
-.BR ares_get_servers(3),
-.BR ares_parse_srv_reply(3),
-.BR ares_parse_txt_reply(3)
-.SH AUTHOR
-Yang Tse
-.PP
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2010 by Daniel Stenberg.
diff --git a/ares/ares_free_hostent.3 b/ares/ares_free_hostent.3
deleted file mode 100644
index 5b42f3937..000000000
--- a/ares/ares_free_hostent.3
+++ /dev/null
@@ -1,46 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_FREE_HOSTENT 3 "23 July 1998"
-.SH NAME
-ares_free_hostent \- Free host structure allocated by ares functions
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_free_hostent(struct hostent *\fIhost\fP)
-.fi
-.SH DESCRIPTION
-The
-.I ares_free_hostent
-function frees a
-.B struct hostent
-allocated by one of the functions \fIares_parse_a_reply(3)\fP,
-\fIares_parse_aaaa_reply(3)\fP, or \fIares_parse_ptr_reply(3)\fP.
-.SH NOTES
-It is not necessary (and is not correct) to free the host structure passed to
-the callback functions for \fIares_gethostbyname(3)\fP or
-\fIares_gethostbyaddr(3)\fP. c-ares will automatically free such host
-structures when the callback returns.
-.SH SEE ALSO
-.BR ares_parse_a_reply (3),
-.BR ares_parse_aaaa_reply (3),
-.BR ares_parse_ptr_reply (3),
-.BR ares_parse_ns_reply (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_free_hostent.c b/ares/ares_free_hostent.c
deleted file mode 100644
index f07fd7c15..000000000
--- a/ares/ares_free_hostent.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include <stdlib.h>
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-#include "ares.h"
-#include "ares_private.h" /* for memdebug */
-
-void ares_free_hostent(struct hostent *host)
-{
- char **p;
-
- free((char *)(host->h_name));
- for (p = host->h_aliases; *p; p++)
- free(*p);
- free(host->h_aliases);
- free(host->h_addr_list[0]); /* no matter if there is one or many entries,
- there is only one malloc for all of them */
- free(host->h_addr_list);
- free(host);
-}
diff --git a/ares/ares_free_string.3 b/ares/ares_free_string.3
deleted file mode 100644
index c60b92a32..000000000
--- a/ares/ares_free_string.3
+++ /dev/null
@@ -1,36 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 2000 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_FREE_STRING 3 "4 February 2004"
-.SH NAME
-ares_free_string \- Free strings allocated by ares functions
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_free_string(void *\fIstr\fP)
-.fi
-.SH DESCRIPTION
-The
-.I ares_free_string
-function frees a string allocated by an ares function.
-.SH SEE ALSO
-.BR ares_mkquery (3)
-.BR ares_expand_string (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 2000 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_free_string.c b/ares/ares_free_string.c
deleted file mode 100644
index dc27f5b34..000000000
--- a/ares/ares_free_string.c
+++ /dev/null
@@ -1,26 +0,0 @@
-/* $Id$ */
-
-/* Copyright 2000 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include <stdlib.h>
-#include "ares.h"
-#include "ares_private.h"
-
-void ares_free_string(void *str)
-{
- free(str);
-}
diff --git a/ares/ares_get_servers.3 b/ares/ares_get_servers.3
deleted file mode 100644
index 78fa7bc94..000000000
--- a/ares/ares_get_servers.3
+++ /dev/null
@@ -1,79 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\" Copyright (C) 2008-2010 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_GET_SERVERS 3 "5 March 2010"
-.SH NAME
-ares_get_servers \- Retrieve name servers from an initialized ares_channel
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_get_servers(ares_channel \fIchannel\fP, struct ares_addr_node **\fIservers\fP)
-.fi
-.SH DESCRIPTION
-The \fBares_get_servers(3)\fP function retrieves name servers configuration
-from the
-channel data identified by
-.IR channel ,
-as a linked list of ares_addr_node structs storing a pointer to the first
-node at the address specified by
-.IR servers .
-
-Function caller may traverse the returned name server linked list, or may use
-it directly as suitable input for the \fBares_set_servers(3)\fP function, but
-shall not shrink or extend the list on its own.
-
-Each node of the name server linked list is stored in memory dynamically
-allocated and managed by c-ares. It is the caller's responsibility to free
-the resulting linked list, using \fBares_free_data(3)\fP , once the caller
-does not need it any longer.
-
-This function is capable of handling IPv4 and IPv6 name server
-addresses simultaneously, rendering \fBares_save_options(3)\fP with
-optmask \fBARES_OPT_SERVERS\fP functionally obsolete except for
-IPv4-only name server usage.
-
-.SH RETURN VALUES
-.B ares_get_servers(3)
-may return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The name servers configuration was successfuly retrieved
-.TP 15
-.B ARES_ENOMEM
-The memory was exhausted
-.TP 15
-.B ARES_ENODATA
-The channel data identified by
-.IR channel
-was invalid.
-.SH SEE ALSO
-.BR ares_set_servers (3),
-.BR ares_init_options (3),
-.BR ares_save_options(3)
-.SH AVAILABILITY
-ares_get_servers(3) was added in c-ares 1.7.1
-.SH AUTHOR
-Implementation of this function and associated library internals are based
-on code, comments and feedback provided November and December of 2008 by
-Daniel Stenberg, Gregor Jasny, Phil Blundell and Yang Tse, December 2009
-by Cedric Bail, February 2010 by Jakub Hrozek. On March 2010 Yang Tse
-shuffled all the bits and this function popped out.
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2008-2010 by Daniel Stenberg
diff --git a/ares/ares_gethostbyaddr.3 b/ares/ares_gethostbyaddr.3
deleted file mode 100644
index 3782d4af5..000000000
--- a/ares/ares_gethostbyaddr.3
+++ /dev/null
@@ -1,102 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_GETHOSTBYADDR 3 "24 July 1998"
-.SH NAME
-ares_gethostbyaddr \- Initiate a host query by address
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B typedef void (*ares_host_callback)(void *\fIarg\fP, int \fIstatus\fP,
-.B int \fItimeouts\fP, struct hostent *\fIhostent\fP)
-.PP
-.B void ares_gethostbyaddr(ares_channel \fIchannel\fP, const void *\fIaddr\fP,
-.B int \fIaddrlen\fP, int \fIfamily\fP, ares_host_callback \fIcallback\fP,
-.B void *\fIarg\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_gethostbyaddr
-function initiates a host query by address on the name service channel
-identified by
-.IR channel .
-The parameters
-.I addr
-and
-.I addrlen
-give the address as a series of bytes, and
-.I family
-gives the type of address. When the query is complete or has failed, the ares
-library will invoke \fIcallback\fP. Completion or failure of the query may
-happen immediately, or may happen during a later call to
-\fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP.
-.PP
-The callback argument
-.I arg
-is copied from the
-.B ares_gethostbyaddr
-argument
-.IR arg .
-The callback argument
-.I status
-indicates whether the query succeeded and, if not, how it failed. It
-may have any of the following values:
-.TP 19
-.B ARES_SUCCESS
-The host lookup completed successfully.
-.TP 19
-.B ARES_ENOTIMP
-The ares library does not know how to look up addresses of type
-.IR family .
-.TP 19
-.B ARES_ENOTFOUND
-The address
-.I addr
-was not found.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.TP 19
-.B ARES_EDESTRUCTION
-The name service channel
-.I channel
-is being destroyed; the query will not be completed.
-.PP
-The callback argument
-.I timeouts
-reports how many times a query timed out during the execution of the
-given request.
-.PP
-On successful completion of the query, the callback argument
-.I hostent
-points to a
-.B struct hostent
-containing the name of the host returned by the query. The callback
-need not and should not attempt to free the memory pointed to by
-.IR hostent ;
-the ares library will free it when the callback returns. If the query
-did not complete successfully,
-.I hostent
-will be
-.BR NULL .
-.SH SEE ALSO
-.BR ares_process (3),
-.BR ares_gethostbyname (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_gethostbyaddr.c b/ares/ares_gethostbyaddr.c
deleted file mode 100644
index a2c3a9076..000000000
--- a/ares/ares_gethostbyaddr.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "ares.h"
-#include "inet_net_pton.h"
-#include "ares_private.h"
-
-#ifdef WATT32
-#undef WIN32
-#endif
-
-struct addr_query {
- /* Arguments passed to ares_gethostbyaddr() */
- ares_channel channel;
- struct ares_addr addr;
- ares_host_callback callback;
- void *arg;
-
- const char *remaining_lookups;
- int timeouts;
-};
-
-static void next_lookup(struct addr_query *aquery);
-static void addr_callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen);
-static void end_aquery(struct addr_query *aquery, int status,
- struct hostent *host);
-static int file_lookup(struct ares_addr *addr, struct hostent **host);
-static void ptr_rr_name(char *name, const struct ares_addr *addr);
-
-void ares_gethostbyaddr(ares_channel channel, const void *addr, int addrlen,
- int family, ares_host_callback callback, void *arg)
-{
- struct addr_query *aquery;
-
- if (family != AF_INET && family != AF_INET6)
- {
- callback(arg, ARES_ENOTIMP, 0, NULL);
- return;
- }
-
- if ((family == AF_INET && addrlen != sizeof(aquery->addr.addrV4)) ||
- (family == AF_INET6 && addrlen != sizeof(aquery->addr.addrV6)))
- {
- callback(arg, ARES_ENOTIMP, 0, NULL);
- return;
- }
-
- aquery = malloc(sizeof(struct addr_query));
- if (!aquery)
- {
- callback(arg, ARES_ENOMEM, 0, NULL);
- return;
- }
- aquery->channel = channel;
- if (family == AF_INET)
- memcpy(&aquery->addr.addrV4, addr, sizeof(aquery->addr.addrV4));
- else
- memcpy(&aquery->addr.addrV6, addr, sizeof(aquery->addr.addrV6));
- aquery->addr.family = family;
- aquery->callback = callback;
- aquery->arg = arg;
- aquery->remaining_lookups = channel->lookups;
- aquery->timeouts = 0;
-
- next_lookup(aquery);
-}
-
-static void next_lookup(struct addr_query *aquery)
-{
- const char *p;
- char name[128];
- int status;
- struct hostent *host;
-
- for (p = aquery->remaining_lookups; *p; p++)
- {
- switch (*p)
- {
- case 'b':
- ptr_rr_name(name, &aquery->addr);
- aquery->remaining_lookups = p + 1;
- ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
- aquery);
- return;
- case 'f':
- status = file_lookup(&aquery->addr, &host);
-
- /* this status check below previously checked for !ARES_ENOTFOUND,
- but we should not assume that this single error code is the one
- that can occur, as that is in fact no longer the case */
- if (status == ARES_SUCCESS)
- {
- end_aquery(aquery, status, host);
- return;
- }
- break;
- }
- }
- end_aquery(aquery, ARES_ENOTFOUND, NULL);
-}
-
-static void addr_callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen)
-{
- struct addr_query *aquery = (struct addr_query *) arg;
- struct hostent *host;
- size_t addrlen;
-
- aquery->timeouts += timeouts;
- if (status == ARES_SUCCESS)
- {
- if (aquery->addr.family == AF_INET)
- {
- addrlen = sizeof(aquery->addr.addrV4);
- status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV4,
- (int)addrlen, AF_INET, &host);
- }
- else
- {
- addrlen = sizeof(aquery->addr.addrV6);
- status = ares_parse_ptr_reply(abuf, alen, &aquery->addr.addrV6,
- (int)addrlen, AF_INET6, &host);
- }
- end_aquery(aquery, status, host);
- }
- else if (status == ARES_EDESTRUCTION)
- end_aquery(aquery, status, NULL);
- else
- next_lookup(aquery);
-}
-
-static void end_aquery(struct addr_query *aquery, int status,
- struct hostent *host)
-{
- aquery->callback(aquery->arg, status, aquery->timeouts, host);
- if (host)
- ares_free_hostent(host);
- free(aquery);
-}
-
-static int file_lookup(struct ares_addr *addr, struct hostent **host)
-{
- FILE *fp;
- int status;
- int error;
-
-#ifdef WIN32
- char PATH_HOSTS[MAX_PATH];
- if (IS_NT()) {
- char tmp[MAX_PATH];
- HKEY hkeyHosts;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
- == ERROR_SUCCESS)
- {
- DWORD dwLength = MAX_PATH;
- RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp,
- &dwLength);
- ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
- RegCloseKey(hkeyHosts);
- }
- }
- else
- GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
-
- strcat(PATH_HOSTS, WIN_PATH_HOSTS);
-
-#elif defined(WATT32)
- extern const char *_w32_GetHostsFile (void);
- const char *PATH_HOSTS = _w32_GetHostsFile();
-
- if (!PATH_HOSTS)
- return ARES_ENOTFOUND;
-#endif
-
- fp = fopen(PATH_HOSTS, "r");
- if (!fp)
- {
- error = ERRNO;
- switch(error)
- {
- case ENOENT:
- case ESRCH:
- return ARES_ENOTFOUND;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n",
- PATH_HOSTS));
- *host = NULL;
- return ARES_EFILE;
- }
- }
- while ((status = ares__get_hostent(fp, addr->family, host)) == ARES_SUCCESS)
- {
- if (addr->family != (*host)->h_addrtype)
- {
- ares_free_hostent(*host);
- continue;
- }
- if (addr->family == AF_INET)
- {
- if (memcmp((*host)->h_addr, &addr->addrV4, sizeof(addr->addrV4)) == 0)
- break;
- }
- else if (addr->family == AF_INET6)
- {
- if (memcmp((*host)->h_addr, &addr->addrV6, sizeof(addr->addrV6)) == 0)
- break;
- }
- ares_free_hostent(*host);
- }
- fclose(fp);
- if (status == ARES_EOF)
- status = ARES_ENOTFOUND;
- if (status != ARES_SUCCESS)
- *host = NULL;
- return status;
-}
-
-static void ptr_rr_name(char *name, const struct ares_addr *addr)
-{
- if (addr->family == AF_INET)
- {
- unsigned long laddr = ntohl(addr->addrV4.s_addr);
- int a1 = (int)((laddr >> 24) & 0xff);
- int a2 = (int)((laddr >> 16) & 0xff);
- int a3 = (int)((laddr >> 8) & 0xff);
- int a4 = (int)(laddr & 0xff);
- sprintf(name, "%d.%d.%d.%d.in-addr.arpa", a4, a3, a2, a1);
- }
- else
- {
- unsigned char *bytes = (unsigned char *)&addr->addrV6;
- /* There are too many arguments to do this in one line using
- * minimally C89-compliant compilers */
- sprintf(name,
- "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.",
- bytes[15]&0xf, bytes[15] >> 4, bytes[14]&0xf, bytes[14] >> 4,
- bytes[13]&0xf, bytes[13] >> 4, bytes[12]&0xf, bytes[12] >> 4,
- bytes[11]&0xf, bytes[11] >> 4, bytes[10]&0xf, bytes[10] >> 4,
- bytes[9]&0xf, bytes[9] >> 4, bytes[8]&0xf, bytes[8] >> 4);
- sprintf(name+strlen(name),
- "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa",
- bytes[7]&0xf, bytes[7] >> 4, bytes[6]&0xf, bytes[6] >> 4,
- bytes[5]&0xf, bytes[5] >> 4, bytes[4]&0xf, bytes[4] >> 4,
- bytes[3]&0xf, bytes[3] >> 4, bytes[2]&0xf, bytes[2] >> 4,
- bytes[1]&0xf, bytes[1] >> 4, bytes[0]&0xf, bytes[0] >> 4);
- }
-}
diff --git a/ares/ares_gethostbyname.3 b/ares/ares_gethostbyname.3
deleted file mode 100644
index c59c03851..000000000
--- a/ares/ares_gethostbyname.3
+++ /dev/null
@@ -1,106 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_GETHOSTBYNAME 3 "25 July 1998"
-.SH NAME
-ares_gethostbyname \- Initiate a host query by name
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B typedef void (*ares_host_callback)(void *\fIarg\fP, int \fIstatus\fP,
-.B int \fItimeouts\fP, struct hostent *\fIhostent\fP)
-.PP
-.B void ares_gethostbyname(ares_channel \fIchannel\fP, const char *\fIname\fP,
-.B int \fIfamily\fP, ares_host_callback \fIcallback\fP, void *\fIarg\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_gethostbyname
-function initiates a host query by name on the name service channel
-identified by
-.IR channel .
-The parameter
-.I name
-gives the hostname as a NUL-terminated C string, and
-.I family
-gives the desired type of address for the resulting host entry. When the
-query is complete or has failed, the ares library will invoke \fIcallback\fP.
-Completion or failure of the query may happen immediately, or may happen
-during a later call to \fIares_process(3)\fP, \fIares_destroy(3)\fP or
-\fIares_cancel(3)\fP.
-.PP
-The callback argument
-.I arg
-is copied from the
-.B ares_gethostbyname
-argument
-.IR arg .
-The callback argument
-.I status
-indicates whether the query succeeded and, if not, how it failed. It
-may have any of the following values:
-.TP 19
-.B ARES_SUCCESS
-The host lookup completed successfully.
-.TP 19
-.B ARES_ENOTIMP
-The ares library does not know how to find addresses of type
-.IR family .
-.TP 19
-.B ARES_EBADNAME
-The hostname
-.B name
-is composed entirely of numbers and periods, but is not a valid
-representation of an Internet address.
-.TP 19
-.B ARES_ENOTFOUND
-The address
-.I addr
-was not found.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.TP 19
-.B ARES_EDESTRUCTION
-The name service channel
-.I channel
-is being destroyed; the query will not be completed.
-.PP
-The callback argument
-.I timeouts
-reports how many times a query timed out during the execution of the
-given request.
-.PP
-On successful completion of the query, the callback argument
-.I hostent
-points to a
-.B struct hostent
-containing the name of the host returned by the query. The callback
-need not and should not attempt to free the memory pointed to by
-.IR hostent ;
-the ares library will free it when the callback returns. If the query
-did not complete successfully,
-.I hostent
-will be
-.BR NULL .
-.SH SEE ALSO
-.BR ares_process (3),
-.BR ares_gethostbyaddr (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_gethostbyname.c b/ares/ares_gethostbyname.c
deleted file mode 100644
index ebad67075..000000000
--- a/ares/ares_gethostbyname.c
+++ /dev/null
@@ -1,513 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-
-#include "ares.h"
-#include "inet_net_pton.h"
-#include "bitncmp.h"
-#include "ares_private.h"
-
-#ifdef WATT32
-#undef WIN32
-#endif
-
-struct host_query {
- /* Arguments passed to ares_gethostbyname() */
- ares_channel channel;
- char *name;
- ares_host_callback callback;
- void *arg;
- int sent_family; /* this family is what was is being used */
- int want_family; /* this family is what is asked for in the API */
- const char *remaining_lookups;
- int timeouts;
-};
-
-static void next_lookup(struct host_query *hquery, int status_code);
-static void host_callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen);
-static void end_hquery(struct host_query *hquery, int status,
- struct hostent *host);
-static int fake_hostent(const char *name, int family,
- ares_host_callback callback, void *arg);
-static int file_lookup(const char *name, int family, struct hostent **host);
-static void sort_addresses(struct hostent *host,
- const struct apattern *sortlist, int nsort);
-static void sort6_addresses(struct hostent *host,
- const struct apattern *sortlist, int nsort);
-static int get_address_index(const struct in_addr *addr,
- const struct apattern *sortlist, int nsort);
-static int get6_address_index(const struct ares_in6_addr *addr,
- const struct apattern *sortlist, int nsort);
-
-void ares_gethostbyname(ares_channel channel, const char *name, int family,
- ares_host_callback callback, void *arg)
-{
- struct host_query *hquery;
-
- /* Right now we only know how to look up Internet addresses - and unspec
- means try both basically. */
- switch (family) {
- case AF_INET:
- case AF_INET6:
- case AF_UNSPEC:
- break;
- default:
- callback(arg, ARES_ENOTIMP, 0, NULL);
- return;
- }
-
- if (fake_hostent(name, family, callback, arg))
- return;
-
- /* Allocate and fill in the host query structure. */
- hquery = malloc(sizeof(struct host_query));
- if (!hquery)
- {
- callback(arg, ARES_ENOMEM, 0, NULL);
- return;
- }
- hquery->channel = channel;
- hquery->name = strdup(name);
- hquery->want_family = family;
- hquery->sent_family = -1; /* nothing is sent yet */
- if (!hquery->name) {
- free(hquery);
- callback(arg, ARES_ENOMEM, 0, NULL);
- return;
- }
- hquery->callback = callback;
- hquery->arg = arg;
- hquery->remaining_lookups = channel->lookups;
- hquery->timeouts = 0;
-
- /* Start performing lookups according to channel->lookups. */
- next_lookup(hquery, ARES_ECONNREFUSED /* initial error code */);
-}
-
-static void next_lookup(struct host_query *hquery, int status_code)
-{
- const char *p;
- struct hostent *host;
- int status = status_code;
-
- for (p = hquery->remaining_lookups; *p; p++)
- {
- switch (*p)
- {
- case 'b':
- /* DNS lookup */
- hquery->remaining_lookups = p + 1;
- if ((hquery->want_family == AF_INET6) ||
- (hquery->want_family == AF_UNSPEC)) {
- /* if inet6 or unspec, start out with AAAA */
- hquery->sent_family = AF_INET6;
- ares_search(hquery->channel, hquery->name, C_IN, T_AAAA,
- host_callback, hquery);
- }
- else {
- hquery->sent_family = AF_INET;
- ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
- hquery);
- }
- return;
-
- case 'f':
- /* Host file lookup */
- status = file_lookup(hquery->name, hquery->want_family, &host);
-
- /* this status check below previously checked for !ARES_ENOTFOUND,
- but we should not assume that this single error code is the one
- that can occur, as that is in fact no longer the case */
- if (status == ARES_SUCCESS)
- {
- end_hquery(hquery, status, host);
- return;
- }
- status = status_code; /* Use original status code */
- break;
- }
- }
- end_hquery(hquery, status, NULL);
-}
-
-static void host_callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen)
-{
- struct host_query *hquery = (struct host_query *) arg;
- ares_channel channel = hquery->channel;
- struct hostent *host = NULL;
-
- hquery->timeouts += timeouts;
- if (status == ARES_SUCCESS)
- {
- if (hquery->sent_family == AF_INET)
- {
- status = ares_parse_a_reply(abuf, alen, &host, NULL, NULL);
- if (host && channel->nsort)
- sort_addresses(host, channel->sortlist, channel->nsort);
- }
- else if (hquery->sent_family == AF_INET6)
- {
- status = ares_parse_aaaa_reply(abuf, alen, &host, NULL, NULL);
- if (status == ARES_ENODATA || status == ARES_EBADRESP) {
- /* The query returned something but either there were no AAAA records (e.g. just CNAME)
- or the response was malformed. Try looking up A instead.
- We should possibly limit this attempt-next logic to AF_UNSPEC lookups only. */
- hquery->sent_family = AF_INET;
- ares_search(hquery->channel, hquery->name, C_IN, T_A,
- host_callback, hquery);
- return;
- }
- if (host && channel->nsort)
- sort6_addresses(host, channel->sortlist, channel->nsort);
- }
- end_hquery(hquery, status, host);
- }
- else if ((status == ARES_ENODATA || status == ARES_EBADRESP || status == ARES_ETIMEOUT) && hquery->sent_family == AF_INET6)
- {
- /* The AAAA query yielded no useful result. Now look up an A instead.
- We should possibly limit this attempt-next logic to AF_UNSPEC lookups only. */
- hquery->sent_family = AF_INET;
- ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
- hquery);
- }
- else if (status == ARES_EDESTRUCTION)
- end_hquery(hquery, status, NULL);
- else
- next_lookup(hquery, status);
-}
-
-static void end_hquery(struct host_query *hquery, int status,
- struct hostent *host)
-{
- hquery->callback(hquery->arg, status, hquery->timeouts, host);
- if (host)
- ares_free_hostent(host);
- free(hquery->name);
- free(hquery);
-}
-
-/* If the name looks like an IP address, fake up a host entry, end the
- * query immediately, and return true. Otherwise return false.
- */
-static int fake_hostent(const char *name, int family, ares_host_callback callback,
- void *arg)
-{
- struct hostent hostent;
- char *aliases[1] = { NULL };
- char *addrs[2];
- int result = 0;
- struct in_addr in;
- struct ares_in6_addr in6;
-
- if (family == AF_INET || family == AF_INET6)
- {
- /* It only looks like an IP address if it's all numbers and dots. */
- int numdots = 0, valid = 1;
- const char *p;
- for (p = name; *p; p++)
- {
- if (!ISDIGIT(*p) && *p != '.') {
- valid = 0;
- break;
- } else if (*p == '.') {
- numdots++;
- }
- }
-
- /* if we don't have 3 dots, it is illegal
- * (although inet_addr doesn't think so).
- */
- if (numdots != 3 || !valid)
- result = 0;
- else
- result = ((in.s_addr = inet_addr(name)) == INADDR_NONE ? 0 : 1);
-
- if (result)
- family = AF_INET;
- }
- if (family == AF_INET6)
- result = (ares_inet_pton(AF_INET6, name, &in6) < 1 ? 0 : 1);
-
- if (!result)
- return 0;
-
- if (family == AF_INET)
- {
- hostent.h_length = (int)sizeof(struct in_addr);
- addrs[0] = (char *)&in;
- }
- else if (family == AF_INET6)
- {
- hostent.h_length = (int)sizeof(struct ares_in6_addr);
- addrs[0] = (char *)&in6;
- }
- /* Duplicate the name, to avoid a constness violation. */
- hostent.h_name = strdup(name);
- if (!hostent.h_name)
- {
- callback(arg, ARES_ENOMEM, 0, NULL);
- return 1;
- }
-
- /* Fill in the rest of the host structure and terminate the query. */
- addrs[1] = NULL;
- hostent.h_aliases = aliases;
- hostent.h_addrtype = family;
- hostent.h_addr_list = addrs;
- callback(arg, ARES_SUCCESS, 0, &hostent);
-
- free((char *)(hostent.h_name));
- return 1;
-}
-
-/* This is an API method */
-int ares_gethostbyname_file(ares_channel channel, const char *name,
- int family, struct hostent **host)
-{
- int result;
-
- /* We only take the channel to ensure that ares_init() been called. */
- if(channel == NULL)
- {
- /* Anything will do, really. This seems fine, and is consistent with
- other error cases. */
- *host = NULL;
- return ARES_ENOTFOUND;
- }
-
- /* Just chain to the internal implementation we use here; it's exactly
- * what we want.
- */
- result = file_lookup(name, family, host);
- if(result != ARES_SUCCESS)
- {
- /* We guarantee a NULL hostent on failure. */
- *host = NULL;
- }
- return result;
-}
-
-static int file_lookup(const char *name, int family, struct hostent **host)
-{
- FILE *fp;
- char **alias;
- int status;
- int error;
-
-#ifdef WIN32
- char PATH_HOSTS[MAX_PATH];
- if (IS_NT()) {
- char tmp[MAX_PATH];
- HKEY hkeyHosts;
-
- if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ, &hkeyHosts)
- == ERROR_SUCCESS)
- {
- DWORD dwLength = MAX_PATH;
- RegQueryValueEx(hkeyHosts, DATABASEPATH, NULL, NULL, (LPBYTE)tmp,
- &dwLength);
- ExpandEnvironmentStrings(tmp, PATH_HOSTS, MAX_PATH);
- RegCloseKey(hkeyHosts);
- }
- }
- else
- GetWindowsDirectory(PATH_HOSTS, MAX_PATH);
-
- strcat(PATH_HOSTS, WIN_PATH_HOSTS);
-
-#elif defined(WATT32)
- extern const char *_w32_GetHostsFile (void);
- const char *PATH_HOSTS = _w32_GetHostsFile();
-
- if (!PATH_HOSTS)
- return ARES_ENOTFOUND;
-#endif
-
- fp = fopen(PATH_HOSTS, "r");
- if (!fp)
- {
- error = ERRNO;
- switch(error)
- {
- case ENOENT:
- case ESRCH:
- return ARES_ENOTFOUND;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n",
- PATH_HOSTS));
- *host = NULL;
- return ARES_EFILE;
- }
- }
- while ((status = ares__get_hostent(fp, family, host)) == ARES_SUCCESS)
- {
- if (strcasecmp((*host)->h_name, name) == 0)
- break;
- for (alias = (*host)->h_aliases; *alias; alias++)
- {
- if (strcasecmp(*alias, name) == 0)
- break;
- }
- if (*alias)
- break;
- ares_free_hostent(*host);
- }
- fclose(fp);
- if (status == ARES_EOF)
- status = ARES_ENOTFOUND;
- if (status != ARES_SUCCESS)
- *host = NULL;
- return status;
-}
-
-static void sort_addresses(struct hostent *host, const struct apattern *sortlist,
- int nsort)
-{
- struct in_addr a1, a2;
- int i1, i2, ind1, ind2;
-
- /* This is a simple insertion sort, not optimized at all. i1 walks
- * through the address list, with the loop invariant that everything
- * to the left of i1 is sorted. In the loop body, the value at i1 is moved
- * back through the list (via i2) until it is in sorted order.
- */
- for (i1 = 0; host->h_addr_list[i1]; i1++)
- {
- memcpy(&a1, host->h_addr_list[i1], sizeof(struct in_addr));
- ind1 = get_address_index(&a1, sortlist, nsort);
- for (i2 = i1 - 1; i2 >= 0; i2--)
- {
- memcpy(&a2, host->h_addr_list[i2], sizeof(struct in_addr));
- ind2 = get_address_index(&a2, sortlist, nsort);
- if (ind2 <= ind1)
- break;
- memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct in_addr));
- }
- memcpy(host->h_addr_list[i2 + 1], &a1, sizeof(struct in_addr));
- }
-}
-
-/* Find the first entry in sortlist which matches addr. Return nsort
- * if none of them match.
- */
-static int get_address_index(const struct in_addr *addr,
- const struct apattern *sortlist,
- int nsort)
-{
- int i;
-
- for (i = 0; i < nsort; i++)
- {
- if (sortlist[i].family != AF_INET)
- continue;
- if (sortlist[i].type == PATTERN_MASK)
- {
- if ((addr->s_addr & sortlist[i].mask.addr4.s_addr)
- == sortlist[i].addrV4.s_addr)
- break;
- }
- else
- {
- if (!ares_bitncmp(&addr->s_addr, &sortlist[i].addrV4.s_addr,
- sortlist[i].mask.bits))
- break;
- }
- }
- return i;
-}
-
-static void sort6_addresses(struct hostent *host, const struct apattern *sortlist,
- int nsort)
-{
- struct ares_in6_addr a1, a2;
- int i1, i2, ind1, ind2;
-
- /* This is a simple insertion sort, not optimized at all. i1 walks
- * through the address list, with the loop invariant that everything
- * to the left of i1 is sorted. In the loop body, the value at i1 is moved
- * back through the list (via i2) until it is in sorted order.
- */
- for (i1 = 0; host->h_addr_list[i1]; i1++)
- {
- memcpy(&a1, host->h_addr_list[i1], sizeof(struct ares_in6_addr));
- ind1 = get6_address_index(&a1, sortlist, nsort);
- for (i2 = i1 - 1; i2 >= 0; i2--)
- {
- memcpy(&a2, host->h_addr_list[i2], sizeof(struct ares_in6_addr));
- ind2 = get6_address_index(&a2, sortlist, nsort);
- if (ind2 <= ind1)
- break;
- memcpy(host->h_addr_list[i2 + 1], &a2, sizeof(struct ares_in6_addr));
- }
- memcpy(host->h_addr_list[i2 + 1], &a1, sizeof(struct ares_in6_addr));
- }
-}
-
-/* Find the first entry in sortlist which matches addr. Return nsort
- * if none of them match.
- */
-static int get6_address_index(const struct ares_in6_addr *addr,
- const struct apattern *sortlist,
- int nsort)
-{
- int i;
-
- for (i = 0; i < nsort; i++)
- {
- if (sortlist[i].family != AF_INET6)
- continue;
- if (!ares_bitncmp(addr,
- &sortlist[i].addrV6,
- sortlist[i].mask.bits))
- break;
- }
- return i;
-}
diff --git a/ares/ares_gethostbyname_file.3 b/ares/ares_gethostbyname_file.3
deleted file mode 100644
index 8d1d7e8c2..000000000
--- a/ares/ares_gethostbyname_file.3
+++ /dev/null
@@ -1,84 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_GETHOSTBYNAME 3 "25 July 1998"
-.SH NAME
-ares_gethostbyname_file \- Lookup a name in the system's hosts file
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_gethostbyname_file(ares_channel \fIchannel\fP, const char *\fIname\fP,
-.B int \fIfamily\fP, struct hostent **host)
-.fi
-.SH DESCRIPTION
-The
-.B ares_gethostbyname_file
-function performs a host lookup by name against the system's hosts file (or equivalent local hostname database).
-The
-.IR channel
-parameter is required, but no asynchronous queries are performed. Instead, the
-lookup is done via the same mechanism used to perform 'f' lookups
-(see the
-.I lookups
-options field in \fIares_init_options(3)\fP).
-The parameter
-.I name
-gives the hostname as a NUL-terminated C string, and
-.I family
-gives the desired type of address for the resulting host entry.
-.PP
-The return value indicates whether the query succeeded and, if not, how it
-failed. It may have any of the following values:
-.TP 19
-.B ARES_SUCCESS
-The host lookup completed successfully and
-.I host
-now points to the result (and must be freed with \fIares_free_hostent(3)\fP).
-.TP 19
-.B ARES_ENOTFOUND
-The hostname
-.I name
-was not found.
-.TP 19
-.B ARES_EFILE
-There was a file I/O error while performing the lookup.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.PP
-On successful completion of the query, the pointer pointed to by
-.I host
-points to a
-.B struct hostent
-containing the address of the host returned by the lookup. The user must
-free the memory pointed to by
-.IR host
-when finished with it by calling \fIares_free_hostent(3)\fP. If the lookup did
-not complete successfully,
-.I host
-will be
-.BR NULL .
-.SH AVAILABILITY
-Added in c-ares 1.5.4
-.SH SEE ALSO
-.BR ares_gethostbyname (3),
-.BR ares_free_hostent (3),
-.BR ares_init_options (3)
-.SH AUTHOR
-Brad Spencer
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_getnameinfo.3 b/ares/ares_getnameinfo.3
deleted file mode 100644
index f0909ccfa..000000000
--- a/ares/ares_getnameinfo.3
+++ /dev/null
@@ -1,150 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 2005 by Dominick Meglio.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_GETNAMEINFO 3 "1 May 2009"
-.SH NAME
-ares_getnameinfo \- Address-to-nodename translation in protocol-independent manner
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B typedef void (*ares_nameinfo_callback)(void *\fIarg\fP, int \fIstatus\fP,
-.B int \fItimeouts\fP, char *\fInode\fP, char *\fIservice\fP)
-.PP
-.B void ares_getnameinfo(ares_channel \fIchannel\fP, const struct sockaddr *\fIsa\fP,
-.B ares_socklen_t \fIsalen\fP, int \fIflags\fP, ares_nameinfo_callback \fIcallback\fP,
-.B void *\fIarg\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_getnameinfo
-function is defined for protocol-independent address translation. The function
-is a combination of \fIares_gethostbyaddr(3)\fP and \fIgetservbyport(3)\fP. The function will
-translate the address either by executing a host query on the name service channel
-identified by
-.IR channel
-or it will attempt to resolve it locally if possible.
-The parameters
-.I sa
-and
-.I len
-give the address as a sockaddr structure, and
-.I flags
-gives the options that the function will use. Valid flags are listed below:
-.TP 19
-.B ARES_NI_NOFQDN
-Only the nodename portion of the FQDN is returned for local hosts.
-.TP 19
-.B ARES_NI_NUMERICHOST
-The numeric form of the hostname is returned rather than the name.
-.TP 19
-.B ARES_NI_NAMEREQD
-An error is returned if the hostname cannot be found in the DNS.
-.TP 19
-.B ARES_NI_NUMERICSERV
-The numeric form of the service is returned rather than the name.
-.TP 19
-.B ARES_NI_TCP
-The service name is to be looked up for the TCP protocol.
-.TP 19
-.B ARES_NI_UDP
-The service name is to be looked up for the UDP protocol.
-.TP 19
-.B ARES_NI_SCTP
-The service name is to be looked up for the SCTP protocol.
-.TP 19
-.B ARES_NI_DCCP
-The service name is to be looked up for the DCCP protocol.
-.TP 19
-.B ARES_NI_NUMERICSCOPE
-The numeric form of the scope ID is returned rather than the name.
-.TP 19
-.B ARES_NI_LOOKUPHOST
-A hostname lookup is being requested.
-.TP 19
-.B ARES_NI_LOOKUPSERVICE
-A service name lookup is being requested.
-.PP
-When the query
-is complete or has
-failed, the ares library will invoke \fIcallback\fP. Completion or failure of
-the query may happen immediately, or may happen during a later call to
-\fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP.
-.PP
-The callback argument
-.I arg
-is copied from the
-.B ares_getnameinfo
-argument
-.IR arg .
-The callback argument
-.I status
-indicates whether the query succeeded and, if not, how it failed. It
-may have any of the following values:
-.TP 19
-.B ARES_SUCCESS
-The host lookup completed successfully.
-.TP 19
-.B ARES_ENOTIMP
-The ares library does not know how to look up addresses of type
-.IR family .
-.TP 19
-.B ARES_ENOTFOUND
-The address
-.I addr
-was not found.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.TP 19
-.B ARES_EDESTRUCTION
-The name service channel
-.I channel
-is being destroyed; the query will not be completed.
-.TP 19
-.B ARES_EBADFLAGS
-The
-.I flags
-parameter contains an illegal value.
-.PP
-The callback argument
-.I timeouts
-reports how many times a query timed out during the execution of the
-given request.
-.PP
-On successful completion of the query, the callback argument
-.I node
-contains a string representing the hostname (assuming
-.B ARES_NI_LOOKUPHOST
-was specified). Additionally,
-.I service
-contains a string representing the service name (assuming
-.B ARES_NI_LOOKUPSERVICE
-was specified).
-If the query did not complete successfully, or one of the values
-was not requested,
-.I node
-or
-.I service
-will be
-.BR NULL .
-.SH SEE ALSO
-.BR ares_process (3),
-.BR ares_getaddrinfo (3)
-.SH AUTHOR
-Dominick Meglio
-.br
-Copyright 2005 by Dominick Meglio.
diff --git a/ares/ares_getnameinfo.c b/ares/ares_getnameinfo.c
deleted file mode 100644
index 77752df02..000000000
--- a/ares/ares_getnameinfo.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/* $Id$ */
-
-/* Copyright 2005 by Dominick Meglio
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-#include "ares_setup.h"
-
-#ifdef HAVE_GETSERVBYPORT_R
-# if !defined(GETSERVBYPORT_R_ARGS) || \
- (GETSERVBYPORT_R_ARGS < 4) || (GETSERVBYPORT_R_ARGS > 6)
-# error "you MUST specifiy a valid number of arguments for getservbyport_r"
-# endif
-#endif
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_NET_IF_H
-#include <net/if.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "ares.h"
-#include "ares_ipv6.h"
-#include "inet_ntop.h"
-#include "ares_private.h"
-
-struct nameinfo_query {
- ares_nameinfo_callback callback;
- void *arg;
- union {
- struct sockaddr_in addr4;
- struct sockaddr_in6 addr6;
- } addr;
- int family;
- int flags;
- int timeouts;
-};
-
-#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
-#define IPBUFSIZ \
- (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255") + IF_NAMESIZE)
-#else
-#define IPBUFSIZ \
- (sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255"))
-#endif
-
-static void nameinfo_callback(void *arg, int status, int timeouts, struct hostent *host);
-static char *lookup_service(unsigned short port, int flags,
- char *buf, size_t buflen);
-#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
-static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int scopeid,
- char *buf, size_t buflen);
-#endif
-static char *ares_striendstr(const char *s1, const char *s2);
-
-void ares_getnameinfo(ares_channel channel, const struct sockaddr *sa,
- ares_socklen_t salen,
- int flags, ares_nameinfo_callback callback, void *arg)
-{
- struct sockaddr_in *addr = NULL;
- struct sockaddr_in6 *addr6 = NULL;
- struct nameinfo_query *niquery;
- unsigned int port = 0;
-
- /* Verify the buffer size */
- if (salen == sizeof(struct sockaddr_in))
- {
- addr = (struct sockaddr_in *)sa;
- port = addr->sin_port;
- }
- else if (salen == sizeof(struct sockaddr_in6))
- {
- addr6 = (struct sockaddr_in6 *)sa;
- port = addr6->sin6_port;
- }
- else
- {
- callback(arg, ARES_ENOTIMP, 0, NULL, NULL);
- return;
- }
-
- /* If neither, assume they want a host */
- if (!(flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST))
- flags |= ARES_NI_LOOKUPHOST;
-
- /* All they want is a service, no need for DNS */
- if ((flags & ARES_NI_LOOKUPSERVICE) && !(flags & ARES_NI_LOOKUPHOST))
- {
- char buf[33], *service;
-
- service = lookup_service((unsigned short)(port & 0xffff),
- flags, buf, sizeof(buf));
- callback(arg, ARES_SUCCESS, 0, NULL, service);
- return;
- }
-
- /* They want a host lookup */
- if ((flags & ARES_NI_LOOKUPHOST))
- {
- /* A numeric host can be handled without DNS */
- if ((flags & ARES_NI_NUMERICHOST))
- {
- char ipbuf[IPBUFSIZ];
- char srvbuf[33];
- char *service = NULL;
- ipbuf[0] = 0;
-
- /* Specifying not to lookup a host, but then saying a host
- * is required has to be illegal.
- */
- if (flags & ARES_NI_NAMEREQD)
- {
- callback(arg, ARES_EBADFLAGS, 0, NULL, NULL);
- return;
- }
- if (salen == sizeof(struct sockaddr_in6))
- {
- ares_inet_ntop(AF_INET6, &addr6->sin6_addr, ipbuf, IPBUFSIZ);
- /* If the system supports scope IDs, use it */
-#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
- append_scopeid(addr6, flags, ipbuf, sizeof(ipbuf));
-#endif
- }
- else
- {
- ares_inet_ntop(AF_INET, &addr->sin_addr, ipbuf, IPBUFSIZ);
- }
- /* They also want a service */
- if (flags & ARES_NI_LOOKUPSERVICE)
- service = lookup_service((unsigned short)(port & 0xffff),
- flags, srvbuf, sizeof(srvbuf));
- callback(arg, ARES_SUCCESS, 0, ipbuf, service);
- return;
- }
- /* This is where a DNS lookup becomes necessary */
- else
- {
- niquery = malloc(sizeof(struct nameinfo_query));
- if (!niquery)
- {
- callback(arg, ARES_ENOMEM, 0, NULL, NULL);
- return;
- }
- niquery->callback = callback;
- niquery->arg = arg;
- niquery->flags = flags;
- niquery->timeouts = 0;
- if (sa->sa_family == AF_INET)
- {
- niquery->family = AF_INET;
- memcpy(&niquery->addr.addr4, addr, sizeof(addr));
- ares_gethostbyaddr(channel, &addr->sin_addr,
- sizeof(struct in_addr), AF_INET,
- nameinfo_callback, niquery);
- }
- else
- {
- niquery->family = AF_INET6;
- memcpy(&niquery->addr.addr6, addr6, sizeof(addr6));
- ares_gethostbyaddr(channel, &addr6->sin6_addr,
- sizeof(struct ares_in6_addr), AF_INET6,
- nameinfo_callback, niquery);
- }
- }
- }
-}
-
-static void nameinfo_callback(void *arg, int status, int timeouts, struct hostent *host)
-{
- struct nameinfo_query *niquery = (struct nameinfo_query *) arg;
- char srvbuf[33];
- char *service = NULL;
-
- niquery->timeouts += timeouts;
- if (status == ARES_SUCCESS)
- {
- /* They want a service too */
- if (niquery->flags & ARES_NI_LOOKUPSERVICE)
- {
- if (niquery->family == AF_INET)
- service = lookup_service(niquery->addr.addr4.sin_port,
- niquery->flags, srvbuf, sizeof(srvbuf));
- else
- service = lookup_service(niquery->addr.addr6.sin6_port,
- niquery->flags, srvbuf, sizeof(srvbuf));
- }
- /* NOFQDN means we have to strip off the domain name portion.
- We do this by determining our own domain name, then searching the string
- for this domain name and removing it.
- */
-#ifdef HAVE_GETHOSTNAME
- if (niquery->flags & ARES_NI_NOFQDN)
- {
- char buf[255];
- char *domain;
- gethostname(buf, 255);
- if ((domain = strchr(buf, '.')))
- {
- char *end = ares_striendstr(host->h_name, domain);
- if (end)
- *end = 0;
- }
- }
-#endif
- niquery->callback(niquery->arg, ARES_SUCCESS, niquery->timeouts, (char *)(host->h_name),
- service);
- return;
- }
- /* We couldn't find the host, but it's OK, we can use the IP */
- else if (status == ARES_ENOTFOUND && !(niquery->flags & ARES_NI_NAMEREQD))
- {
- char ipbuf[IPBUFSIZ];
- if (niquery->family == AF_INET)
- ares_inet_ntop(AF_INET, &niquery->addr.addr4.sin_addr, ipbuf, IPBUFSIZ);
- else
- {
- ares_inet_ntop(AF_INET6, &niquery->addr.addr6.sin6_addr, ipbuf, IPBUFSIZ);
-#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
- append_scopeid(&niquery->addr.addr6, niquery->flags, ipbuf, sizeof(ipbuf));
-#endif
- }
- /* They want a service too */
- if (niquery->flags & ARES_NI_LOOKUPSERVICE)
- {
- if (niquery->family == AF_INET)
- service = lookup_service(niquery->addr.addr4.sin_port,
- niquery->flags, srvbuf, sizeof(srvbuf));
- else
- service = lookup_service(niquery->addr.addr6.sin6_port,
- niquery->flags, srvbuf, sizeof(srvbuf));
- }
- niquery->callback(niquery->arg, ARES_SUCCESS, niquery->timeouts, ipbuf, service);
- return;
- }
- niquery->callback(niquery->arg, status, niquery->timeouts, NULL, NULL);
- free(niquery);
-}
-
-static char *lookup_service(unsigned short port, int flags,
- char *buf, size_t buflen)
-{
- const char *proto;
- struct servent *sep;
-#ifdef HAVE_GETSERVBYPORT_R
- struct servent se;
-#endif
- char tmpbuf[4096];
-
- if (port)
- {
- if (flags & ARES_NI_NUMERICSERV)
- sep = NULL;
- else
- {
- if (flags & ARES_NI_UDP)
- proto = "udp";
- else if (flags & ARES_NI_SCTP)
- proto = "sctp";
- else if (flags & ARES_NI_DCCP)
- proto = "dccp";
- else
- proto = "tcp";
-#ifdef HAVE_GETSERVBYPORT_R
- sep = &se;
- memset(tmpbuf, 0, sizeof(tmpbuf));
-#if GETSERVBYPORT_R_ARGS == 6
- if (getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf), &sep) != 0)
- sep = NULL;
-#elif GETSERVBYPORT_R_ARGS == 5
- sep = getservbyport_r(port, proto, &se, (void *)tmpbuf, sizeof(tmpbuf));
-#elif GETSERVBYPORT_R_ARGS == 4
- if (getservbyport_r(port, proto, &se, (void *)tmpbuf) != 0)
- sep = NULL;
-#else
- /* Lets just hope the OS uses TLS! */
- sep = getservbyport(port, proto);
-#endif
-#else
- /* Lets just hope the OS uses TLS! */
-#if (defined(NETWARE) && !defined(__NOVELL_LIBC__))
- sep = getservbyport(port, (char*)proto);
-#else
- sep = getservbyport(port, proto);
-#endif
-#endif
- }
- if (sep && sep->s_name)
- /* get service name */
- strcpy(tmpbuf, sep->s_name);
- else
- /* get port as a string */
- sprintf(tmpbuf, "%u", (unsigned int)ntohs(port));
- if (strlen(tmpbuf) < buflen)
- /* return it if buffer big enough */
- strcpy(buf, tmpbuf);
- else
- /* avoid reusing previous one */
- buf[0] = '\0';
- return buf;
- }
- buf[0] = '\0';
- return NULL;
-}
-
-#ifdef HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
-static void append_scopeid(struct sockaddr_in6 *addr6, unsigned int flags,
- char *buf, size_t buflen)
-{
-#ifdef HAVE_IF_INDEXTONAME
- int is_ll, is_mcll;
-#endif
- char fmt_u[] = "%u";
- char fmt_lu[] = "%lu";
- char tmpbuf[IF_NAMESIZE + 2];
- size_t bufl;
- char *fmt = (sizeof(addr6->sin6_scope_id) > sizeof(unsigned int))?fmt_lu:fmt_u;
-
- tmpbuf[0] = '%';
-
-#ifdef HAVE_IF_INDEXTONAME
- is_ll = IN6_IS_ADDR_LINKLOCAL(&addr6->sin6_addr);
- is_mcll = IN6_IS_ADDR_MC_LINKLOCAL(&addr6->sin6_addr);
- if ((flags & ARES_NI_NUMERICSCOPE) ||
- (!is_ll && !is_mcll))
- {
- sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id);
- }
- else
- {
- if (if_indextoname(addr6->sin6_scope_id, &tmpbuf[1]) == NULL)
- sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id);
- }
-#else
- sprintf(&tmpbuf[1], fmt, addr6->sin6_scope_id);
- (void) flags;
-#endif
- tmpbuf[IF_NAMESIZE + 1] = '\0';
- bufl = strlen(buf);
-
- if(bufl + strlen(tmpbuf) < buflen)
- /* only append the scopeid string if it fits in the target buffer */
- strcpy(&buf[bufl], tmpbuf);
-}
-#endif
-
-/* Determines if s1 ends with the string in s2 (case-insensitive) */
-static char *ares_striendstr(const char *s1, const char *s2)
-{
- const char *c1, *c2, *c1_begin;
- int lo1, lo2;
- size_t s1_len = strlen(s1), s2_len = strlen(s2);
-
- /* If the substr is longer than the full str, it can't match */
- if (s2_len > s1_len)
- return NULL;
-
- /* Jump to the end of s1 minus the length of s2 */
- c1_begin = s1+s1_len-s2_len;
- c1 = (const char *)c1_begin;
- c2 = s2;
- while (c2 < s2+s2_len)
- {
- lo1 = tolower(*c1);
- lo2 = tolower(*c2);
- if (lo1 != lo2)
- return NULL;
- else
- {
- c1++;
- c2++;
- }
- }
- if (c2 == c1 && c2 == NULL)
- return (char *)c1_begin;
- return NULL;
-}
diff --git a/ares/ares_getopt.c b/ares/ares_getopt.c
deleted file mode 100644
index b3cbb012d..000000000
--- a/ares/ares_getopt.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Original file name getopt.c Initial import into the c-ares source tree
- * on 2007-04-11. Lifted from version 5.2 of the 'Open Mash' project with
- * the modified BSD license, BSD license without the advertising clause.
- *
- * $Id$
- */
-
-/*
- * getopt.c --
- *
- * Standard UNIX getopt function. Code is from BSD.
- *
- * Copyright (c) 1987-2001 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * A. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * B. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * C. Neither the names of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
- * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/* #if !defined(lint)
- * static char sccsid[] = "@(#)getopt.c 8.2 (Berkeley) 4/2/94";
- * #endif
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "ares_getopt.h"
-
-int opterr = 1, /* if error message should be printed */
- optind = 1; /* index into parent argv vector */
-int optopt = 0; /* character checked for validity */
-static int optreset; /* reset getopt */
-char *optarg; /* argument associated with option */
-
-#define BADCH (int)'?'
-#define BADARG (int)':'
-#define EMSG (char *)""
-
-/*
- * ares_getopt --
- * Parse argc/argv argument vector.
- */
-int
-ares_getopt(int nargc, char * const nargv[], const char *ostr)
-{
- static char *place = EMSG; /* option letter processing */
- char *oli; /* option letter list index */
-
- if (optreset || !*place) { /* update scanning pointer */
- optreset = 0;
- if (optind >= nargc || *(place = nargv[optind]) != '-') {
- place = EMSG;
- return (EOF);
- }
- if (place[1] && *++place == '-') { /* found "--" */
- ++optind;
- place = EMSG;
- return (EOF);
- }
- } /* option letter okay? */
- if ((optopt = (int)*place++) == (int)':' ||
- (oli = strchr(ostr, optopt)) == NULL) {
- /*
- * if the user didn't specify '-' as an option,
- * assume it means EOF.
- */
- if (optopt == (int)'-')
- return (EOF);
- if (!*place)
- ++optind;
- if (opterr && *ostr != ':')
- (void)fprintf(stderr,
- "%s: illegal option -- %c\n", __FILE__, optopt);
- return (BADCH);
- }
- if (*++oli != ':') { /* don't need argument */
- optarg = NULL;
- if (!*place)
- ++optind;
- }
- else { /* need an argument */
- if (*place) /* no white space */
- optarg = place;
- else if (nargc <= ++optind) { /* no arg */
- place = EMSG;
- if (*ostr == ':')
- return (BADARG);
- if (opterr)
- (void)fprintf(stderr,
- "%s: option requires an argument -- %c\n",
- __FILE__, optopt);
- return (BADCH);
- }
- else /* white space */
- optarg = nargv[optind];
- place = EMSG;
- ++optind;
- }
- return (optopt); /* dump back option letter */
-}
diff --git a/ares/ares_getopt.h b/ares/ares_getopt.h
deleted file mode 100644
index 63acb3b42..000000000
--- a/ares/ares_getopt.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef ARES_GETOPT_H
-#define ARES_GETOPT_H
-
-/*
- * Copyright (c) 1987-2001 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * A. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * B. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * C. Neither the names of the copyright holders nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
- * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-int ares_getopt(int nargc, char * const nargv[], const char *ostr);
-
-#undef optarg
-#undef optind
-#undef opterr
-#undef optopt
-#undef optreset
-
-#define optarg ares_optarg
-#define optind ares_optind
-#define opterr ares_opterr
-#define optopt ares_optopt
-#define optreset ares_optreset
-
-extern char *optarg;
-extern int optind;
-extern int opterr;
-extern int optopt;
-
-#endif /* ARES_GETOPT_H */
diff --git a/ares/ares_getsock.3 b/ares/ares_getsock.3
deleted file mode 100644
index ef07fb923..000000000
--- a/ares/ares_getsock.3
+++ /dev/null
@@ -1,58 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_GETSOCK 3 "11 March 2010"
-.SH NAME
-ares_getsock \- get socket descriptors to wait on
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_getsock(ares_channel \fIchannel\fP, ares_socket_t *\fIsocks\fP,
-.B int \fInumsocks\fP);
-.fi
-.SH DESCRIPTION
-The
-.B ares_getsock
-function retrieves the set of socket descriptors which the calling
-application should wait on for reading and/or writing for the
-processing of name service queries pending on the name service channel
-identified by
-.IR channel .
-Socket descriptors will be set in the socket descriptor array pointed to by
-\fIsocks\fP.
-\fInumsocks\fP is the size of the given array in number of ints.
-
-This function can only return information about up to 16 sockets. If more are
-in use (however unlikely that is), they are simply not reported back.
-.SH RETURN VALUES
-\fBares_getsock\fP returns a bitmask for what actions to wait for on the
-different sockets. The ares.h header file provides these convenience macros to
-extract the information appropriately:
-
-.nf
-#define ARES_GETSOCK_MAXNUM 16 /* ares_getsock() can return info about
- this many sockets */
-#define ARES_GETSOCK_READABLE(bits,num) (bits & (1<< (num)))
-#define ARES_GETSOCK_WRITABLE(bits,num) (bits & (1 << ((num) + \
- ARES_GETSOCK_MAXNUM)))
-.fi
-.SH NOTES
-This function was added in c-ares 1.3.1
-.SH SEE ALSO
-.BR ares_timeout (3),
-.BR ares_fds (3),
-.BR ares_process (3)
diff --git a/ares/ares_getsock.c b/ares/ares_getsock.c
deleted file mode 100644
index 52aaecd0b..000000000
--- a/ares/ares_getsock.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2005 - 2010, Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#include "ares.h"
-#include "ares_private.h"
-
-int ares_getsock(ares_channel channel,
- ares_socket_t *socks,
- int numsocks) /* size of the 'socks' array */
-{
- struct server_state *server;
- int i;
- int sockindex=0;
- int bitmap = 0;
- unsigned int setbits = 0xffffffff;
-
- /* Are there any active queries? */
- int active_queries = !ares__is_list_empty(&(channel->all_queries));
-
- for (i = 0;
- (i < channel->nservers) && (sockindex < ARES_GETSOCK_MAXNUM);
- i++)
- {
- server = &channel->servers[i];
- /* We only need to register interest in UDP sockets if we have
- * outstanding queries.
- */
- if (active_queries && server->udp_socket != ARES_SOCKET_BAD)
- {
- if(sockindex >= numsocks)
- break;
- socks[sockindex] = server->udp_socket;
- bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);
- sockindex++;
- }
- /* We always register for TCP events, because we want to know
- * when the other side closes the connection, so we don't waste
- * time trying to use a broken connection.
- */
- if (server->tcp_socket != ARES_SOCKET_BAD)
- {
- if(sockindex >= numsocks)
- break;
- socks[sockindex] = server->tcp_socket;
- bitmap |= ARES_GETSOCK_READABLE(setbits, sockindex);
-
- if (server->qhead && active_queries)
- /* then the tcp socket is also writable! */
- bitmap |= ARES_GETSOCK_WRITABLE(setbits, sockindex);
-
- sockindex++;
- }
- }
- return bitmap;
-}
diff --git a/ares/ares_init.3 b/ares/ares_init.3
deleted file mode 100644
index e24065154..000000000
--- a/ares/ares_init.3
+++ /dev/null
@@ -1,203 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\" Copyright (C) 2004-2010 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_INIT 3 "5 March 2010"
-.SH NAME
-ares_init, ares_init_options \- Initialize a resolver channel
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_init(ares_channel *\fIchannelptr\fP)
-.B int ares_init_options(ares_channel *\fIchannelptr\fP,
-.B struct ares_options *\fIoptions\fP, int \fIoptmask\fP)
-.PP
-.B cc file.c -lcares
-.fi
-.SH DESCRIPTION
-The \fBares_init\fP function initializes a communications channel for name
-service lookups. If it returns successfully, \fBares_init\fP will set the
-variable pointed to by \fIchannelptr\fP to a handle used to identify the name
-service channel. The caller should invoke
-.BR ares_destroy (3)
-on the handle when the channel is no longer needed.
-.PP
-The \fBares_init_options\fP function also initializes a name service channel,
-with additional options useful for applications requiring more control over
-name service configuration. The \fIoptmask\fP parameter specifies which fields
-in the structure pointed to by \fIoptions\fP are set, as follows:
-.TP 18
-.B ARES_OPT_FLAGS
-.B int \fIflags\fP;
-.br
-Flags controlling the behavior of the resolver. See below for a
-description of possible flag values.
-.TP 18
-.B ARES_OPT_TIMEOUT
-.B int \fItimeout\fP;
-.br
-The number of seconds each name server is given to respond to a query on the
-first try. (After the first try, the timeout algorithm becomes more
-complicated, but scales linearly with the value of \fItimeout\fP.) The
-default is five seconds. This option is being deprecated by
-\fIARES_OPT_TIMEOUTMS\fP starting in c-ares 1.5.2.
-.TP 18
-.B ARES_OPT_TIMEOUTMS
-.B int \fItimeout\fP;
-.br
-The number of milliseconds each name server is given to respond to a query on
-the first try. (After the first try, the timeout algorithm becomes more
-complicated, but scales linearly with the value of \fItimeout\fP.) The
-default is five seconds. Note that this option is specified with the same
-struct field as the former \fIARES_OPT_TIMEOUT\fP, it is but the option bits
-that tell c-ares how to interpret the number. This option was added in c-ares
-1.5.2.
-.TP 18
-.B ARES_OPT_TRIES
-.B int \fItries\fP;
-.br
-The number of tries the resolver will try contacting each name server
-before giving up. The default is four tries.
-.TP 18
-.B ARES_OPT_NDOTS
-.B int \fIndots\fP;
-.br
-The number of dots which must be present in a domain name for it to be
-queried for "as is" prior to querying for it with the default domain
-extensions appended. The default value is 1 unless set otherwise by
-resolv.conf or the RES_OPTIONS environment variable.
-.TP 18
-.B ARES_OPT_PORT
-.B unsigned short \fIport\fP;
-.br
-The port to use for queries (both TCP and UDP), in network byte order.
-The default value is 53 (in network byte order), the standard name
-service port.
-.TP 18
-.B ARES_OPT_SERVERS
-.B struct in_addr *\fIservers\fP;
-.br
-.B int \fInservers\fP;
-.br
-The list of IPv4 servers to contact, instead of the servers specified in
-resolv.conf or the local named. In order to allow specification of either
-IPv4 or IPv6 name servers, function
-.BR ares_set_servers(3)
-must be used instead.
-.TP 18
-.B ARES_OPT_DOMAINS
-.B char **\fIdomains\fP;
-.br
-.B int \fIndomains\fP;
-.br
-The domains to search, instead of the domains specified in resolv.conf
-or the domain derived from the kernel hostname variable.
-.TP 18
-.B ARES_OPT_LOOKUPS
-.B char *\fIlookups\fP;
-.br
-The lookups to perform for host queries.
-.I lookups
-should be set to a string of the characters "b" or "f", where "b"
-indicates a DNS lookup and "f" indicates a lookup in the hosts file.
-.TP 18
-.B ARES_OPT_SOCK_STATE_CB
-.B void (*\fIsock_state_cb\fP)(void *data, int s, int read, int write);
-.br
-.B void *\fIsock_state_cb_data\fP;
-.br
-A callback function to be invoked when a socket changes state.
-.I s
-will be passed the socket whose state has changed;
-.I read
-will be set to true if the socket should listen for read events, and
-.I write
-will be set to true if the socket should listen for write events.
-The value of
-.I sock_state_cb_data
-will be passed as the
-.I data
-argument.
-.PP
-The
-.I flags
-field should be the bitwise or of some subset of the following values:
-.TP 23
-.B ARES_FLAG_USEVC
-Always use TCP queries (the "virtual circuit") instead of UDP
-queries. Normally, TCP is only used if a UDP query yields a truncated
-result.
-.TP 23
-.B ARES_FLAG_PRIMARY
-Only query the first server in the list of servers to query.
-.TP 23
-.B ARES_FLAG_IGNTC
-If a truncated response to a UDP query is received, do not fall back
-to TCP; simply continue on with the truncated response.
-.TP 23
-.B ARES_FLAG_NORECURSE
-Do not set the "recursion desired" bit on outgoing queries, so that the name
-server being contacted will not try to fetch the answer from other servers if
-it doesn't know the answer locally. Be aware that ares will not do the
-recursion for you. Recursion must be handled by the application calling ares
-if \fIARES_FLAG_NORECURSE\fP is set.
-.TP 23
-.B ARES_FLAG_STAYOPEN
-Do not close communications sockets when the number of active queries
-drops to zero.
-.TP 23
-.B ARES_FLAG_NOSEARCH
-Do not use the default search domains; only query hostnames as-is or
-as aliases.
-.TP 23
-.B ARES_FLAG_NOALIASES
-Do not honor the HOSTALIASES environment variable, which normally
-specifies a file of hostname translations.
-.TP 23
-.B ARES_FLAG_NOCHECKRESP
-Do not discard responses with the SERVFAIL, NOTIMP, or REFUSED
-response code or responses whose questions don't match the questions
-in the request. Primarily useful for writing clients which might be
-used to test or debug name servers.
-.SH RETURN VALUES
-.I ares_init
-or
-.I ares_init_options
-can return any of the following values:
-.TP 14
-.B ARES_SUCCESS
-Initialization succeeded.
-.TP 14
-.B ARES_EFILE
-A configuration file could not be read.
-.TP 14
-.B ARES_ENOMEM
-The process's available memory was exhausted.
-.TP 14
-.B ARES_ENOTINITIALIZED
-c-ares library initialization not yet performed.
-.SH SEE ALSO
-.BR ares_destroy(3),
-.BR ares_dup(3),
-.BR ares_library_init(3),
-.BR ares_set_servers(3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2010 by Daniel Stenberg.
diff --git a/ares/ares_init.c b/ares/ares_init.c
deleted file mode 100644
index 0a481e156..000000000
--- a/ares/ares_init.c
+++ /dev/null
@@ -1,1627 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2007-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef USE_WINSOCK
-#include <iphlpapi.h>
-#endif
-
-#ifdef HAVE_SYS_PARAM_H
-#include <sys/param.h>
-#endif
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-
-#ifdef HAVE_ARPA_INET_H
-#include <arpa/inet.h>
-#endif
-
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <time.h>
-#include <errno.h>
-#include "ares.h"
-#include "inet_net_pton.h"
-#include "ares_library_init.h"
-#include "ares_private.h"
-
-#ifdef WATT32
-#undef WIN32 /* Redefined in MingW/MSVC headers */
-#endif
-
-static int init_by_options(ares_channel channel, const struct ares_options *options,
- int optmask);
-static int init_by_environment(ares_channel channel);
-static int init_by_resolv_conf(ares_channel channel);
-static int init_by_defaults(ares_channel channel);
-
-#ifndef WATT32
-static int config_nameserver(struct server_state **servers, int *nservers,
- char *str);
-#endif
-static int set_search(ares_channel channel, const char *str);
-static int set_options(ares_channel channel, const char *str);
-static const char *try_option(const char *p, const char *q, const char *opt);
-static int init_id_key(rc4_key* key,int key_data_len);
-
-#if !defined(WIN32) && !defined(WATT32)
-static int sortlist_alloc(struct apattern **sortlist, int *nsort, struct apattern *pat);
-static int ip_addr(const char *s, int len, struct in_addr *addr);
-static void natural_mask(struct apattern *pat);
-static int config_domain(ares_channel channel, char *str);
-static int config_lookup(ares_channel channel, const char *str,
- const char *bindch, const char *filech);
-static int config_sortlist(struct apattern **sortlist, int *nsort,
- const char *str);
-static char *try_config(char *s, const char *opt);
-#endif
-
-#define ARES_CONFIG_CHECK(x) (x->lookups && x->nsort > -1 && \
- x->nservers > -1 && \
- x->ndomains > -1 && \
- x->ndots > -1 && x->timeout > -1 && \
- x->tries > -1)
-
-int ares_init(ares_channel *channelptr)
-{
- return ares_init_options(channelptr, NULL, 0);
-}
-
-int ares_init_options(ares_channel *channelptr, struct ares_options *options,
- int optmask)
-{
- ares_channel channel;
- int i;
- int status = ARES_SUCCESS;
- struct timeval now;
-
-#ifdef CURLDEBUG
- const char *env = getenv("CARES_MEMDEBUG");
-
- if (env)
- curl_memdebug(env);
- env = getenv("CARES_MEMLIMIT");
- if (env)
- curl_memlimit(atoi(env));
-#endif
-
- if (ares_library_initialized() != ARES_SUCCESS)
- return ARES_ENOTINITIALIZED;
-
- channel = malloc(sizeof(struct ares_channeldata));
- if (!channel) {
- *channelptr = NULL;
- return ARES_ENOMEM;
- }
-
- now = ares__tvnow();
-
- /* Set everything to distinguished values so we know they haven't
- * been set yet.
- */
- channel->flags = -1;
- channel->timeout = -1;
- channel->tries = -1;
- channel->ndots = -1;
- channel->rotate = -1;
- channel->udp_port = -1;
- channel->tcp_port = -1;
- channel->socket_send_buffer_size = -1;
- channel->socket_receive_buffer_size = -1;
- channel->nservers = -1;
- channel->ndomains = -1;
- channel->nsort = -1;
- channel->tcp_connection_generation = 0;
- channel->lookups = NULL;
- channel->domains = NULL;
- channel->sortlist = NULL;
- channel->servers = NULL;
- channel->sock_state_cb = NULL;
- channel->sock_state_cb_data = NULL;
- channel->sock_create_cb = NULL;
- channel->sock_create_cb_data = NULL;
-
- channel->last_server = 0;
- channel->last_timeout_processed = (time_t)now.tv_sec;
-
- /* Initialize our lists of queries */
- ares__init_list_head(&(channel->all_queries));
- for (i = 0; i < ARES_QID_TABLE_SIZE; i++)
- {
- ares__init_list_head(&(channel->queries_by_qid[i]));
- }
- for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++)
- {
- ares__init_list_head(&(channel->queries_by_timeout[i]));
- }
-
- /* Initialize configuration by each of the four sources, from highest
- * precedence to lowest.
- */
-
- if (status == ARES_SUCCESS) {
- status = init_by_options(channel, options, optmask);
- if (status != ARES_SUCCESS)
- DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n",
- ares_strerror(status)));
- }
- if (status == ARES_SUCCESS) {
- status = init_by_environment(channel);
- if (status != ARES_SUCCESS)
- DEBUGF(fprintf(stderr, "Error: init_by_environment failed: %s\n",
- ares_strerror(status)));
- }
- if (status == ARES_SUCCESS) {
- status = init_by_resolv_conf(channel);
- if (status != ARES_SUCCESS)
- DEBUGF(fprintf(stderr, "Error: init_by_resolv_conf failed: %s\n",
- ares_strerror(status)));
- }
-
- /*
- * No matter what failed or succeeded, seed defaults to provide
- * useful behavior for things that we missed.
- */
- status = init_by_defaults(channel);
- if (status != ARES_SUCCESS)
- DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n",
- ares_strerror(status)));
-
- /* Generate random key */
-
- if (status == ARES_SUCCESS) {
- status = init_id_key(&channel->id_key, ARES_ID_KEY_LEN);
- if (status == ARES_SUCCESS)
- channel->next_id = ares__generate_new_id(&channel->id_key);
- else
- DEBUGF(fprintf(stderr, "Error: init_id_key failed: %s\n",
- ares_strerror(status)));
- }
-
- if (status != ARES_SUCCESS)
- {
- /* Something failed; clean up memory we may have allocated. */
- if (channel->servers)
- free(channel->servers);
- if (channel->domains)
- {
- for (i = 0; i < channel->ndomains; i++)
- free(channel->domains[i]);
- free(channel->domains);
- }
- if (channel->sortlist)
- free(channel->sortlist);
- if(channel->lookups)
- free(channel->lookups);
- free(channel);
- return status;
- }
-
- /* Trim to one server if ARES_FLAG_PRIMARY is set. */
- if ((channel->flags & ARES_FLAG_PRIMARY) && channel->nservers > 1)
- channel->nservers = 1;
-
- ares__init_servers_state(channel);
-
- *channelptr = channel;
- return ARES_SUCCESS;
-}
-
-/* ares_dup() duplicates a channel handle with all its options and returns a
- new channel handle */
-int ares_dup(ares_channel *dest, ares_channel src)
-{
- struct ares_options opts;
- struct ares_addr_node *servers;
- int ipv6_nservers = 0;
- int i, rc;
- int optmask;
-
- *dest = NULL; /* in case of failure return NULL explicitly */
-
- /* First get the options supported by the old ares_save_options() function,
- which is most of them */
- rc = ares_save_options(src, &opts, &optmask);
- if(rc)
- return rc;
-
- /* Then create the new channel with those options */
- rc = ares_init_options(dest, &opts, optmask);
-
- /* destroy the options copy to not leak any memory */
- ares_destroy_options(&opts);
-
- if(rc)
- return rc;
-
- /* Now clone the options that ares_save_options() doesn't support. */
- (*dest)->sock_create_cb = src->sock_create_cb;
- (*dest)->sock_create_cb_data = src->sock_create_cb_data;
-
- /* Full name server cloning required when not all are IPv4 */
- for (i = 0; i < src->nservers; i++)
- {
- if (src->servers[i].addr.family != AF_INET) {
- ipv6_nservers++;
- break;
- }
- }
- if (ipv6_nservers) {
- rc = ares_get_servers(src, &servers);
- if (rc != ARES_SUCCESS)
- return rc;
- rc = ares_set_servers(*dest, servers);
- ares_free_data(servers);
- if (rc != ARES_SUCCESS)
- return rc;
- }
-
- return ARES_SUCCESS; /* everything went fine */
-}
-
-/* Save options from initialized channel */
-int ares_save_options(ares_channel channel, struct ares_options *options,
- int *optmask)
-{
- int i, j;
- int ipv4_nservers = 0;
-
- /* Zero everything out */
- memset(options, 0, sizeof(struct ares_options));
-
- if (!ARES_CONFIG_CHECK(channel))
- return ARES_ENODATA;
-
- /* Traditionally the optmask wasn't saved in the channel struct so it was
- recreated here. ROTATE is the first option that has no struct field of
- its own in the public config struct */
- (*optmask) = (ARES_OPT_FLAGS|ARES_OPT_TRIES|ARES_OPT_NDOTS|
- ARES_OPT_UDP_PORT|ARES_OPT_TCP_PORT|ARES_OPT_SOCK_STATE_CB|
- ARES_OPT_SERVERS|ARES_OPT_DOMAINS|ARES_OPT_LOOKUPS|
- ARES_OPT_SORTLIST|ARES_OPT_TIMEOUTMS) |
- (channel->optmask & ARES_OPT_ROTATE);
-
- /* Copy easy stuff */
- options->flags = channel->flags;
-
- /* We return full millisecond resolution but that's only because we don't
- set the ARES_OPT_TIMEOUT anymore, only the new ARES_OPT_TIMEOUTMS */
- options->timeout = channel->timeout;
- options->tries = channel->tries;
- options->ndots = channel->ndots;
- options->udp_port = (unsigned short)channel->udp_port;
- options->tcp_port = (unsigned short)channel->tcp_port;
- options->sock_state_cb = channel->sock_state_cb;
- options->sock_state_cb_data = channel->sock_state_cb_data;
-
- /* Copy IPv4 servers */
- if (channel->nservers) {
- for (i = 0; i < channel->nservers; i++)
- {
- if (channel->servers[i].addr.family == AF_INET)
- ipv4_nservers++;
- }
- if (ipv4_nservers) {
- options->servers = malloc(ipv4_nservers * sizeof(struct server_state));
- if (!options->servers)
- return ARES_ENOMEM;
- for (i = j = 0; i < channel->nservers; i++)
- {
- if (channel->servers[i].addr.family == AF_INET)
- memcpy(&options->servers[j++],
- &channel->servers[i].addr.addrV4,
- sizeof(channel->servers[i].addr.addrV4));
- }
- }
- }
- options->nservers = ipv4_nservers;
-
- /* copy domains */
- if (channel->ndomains) {
- options->domains = malloc(channel->ndomains * sizeof(char *));
- if (!options->domains)
- return ARES_ENOMEM;
-
- for (i = 0; i < channel->ndomains; i++)
- {
- options->ndomains = i;
- options->domains[i] = strdup(channel->domains[i]);
- if (!options->domains[i])
- return ARES_ENOMEM;
- }
- }
- options->ndomains = channel->ndomains;
-
- /* copy lookups */
- if (channel->lookups) {
- options->lookups = strdup(channel->lookups);
- if (!options->lookups && channel->lookups)
- return ARES_ENOMEM;
- }
-
- /* copy sortlist */
- if (channel->nsort) {
- options->sortlist = malloc(channel->nsort * sizeof(struct apattern));
- if (!options->sortlist)
- return ARES_ENOMEM;
- for (i = 0; i < channel->nsort; i++)
- {
- memcpy(&(options->sortlist[i]), &(channel->sortlist[i]),
- sizeof(struct apattern));
- }
- }
- options->nsort = channel->nsort;
-
- return ARES_SUCCESS;
-}
-
-static int init_by_options(ares_channel channel,
- const struct ares_options *options,
- int optmask)
-{
- int i;
-
- /* Easy stuff. */
- if ((optmask & ARES_OPT_FLAGS) && channel->flags == -1)
- channel->flags = options->flags;
- if ((optmask & ARES_OPT_TIMEOUTMS) && channel->timeout == -1)
- channel->timeout = options->timeout;
- else if ((optmask & ARES_OPT_TIMEOUT) && channel->timeout == -1)
- channel->timeout = options->timeout * 1000;
- if ((optmask & ARES_OPT_TRIES) && channel->tries == -1)
- channel->tries = options->tries;
- if ((optmask & ARES_OPT_NDOTS) && channel->ndots == -1)
- channel->ndots = options->ndots;
- if ((optmask & ARES_OPT_ROTATE) && channel->rotate == -1)
- channel->rotate = 1;
- if ((optmask & ARES_OPT_UDP_PORT) && channel->udp_port == -1)
- channel->udp_port = options->udp_port;
- if ((optmask & ARES_OPT_TCP_PORT) && channel->tcp_port == -1)
- channel->tcp_port = options->tcp_port;
- if ((optmask & ARES_OPT_SOCK_STATE_CB) && channel->sock_state_cb == NULL)
- {
- channel->sock_state_cb = options->sock_state_cb;
- channel->sock_state_cb_data = options->sock_state_cb_data;
- }
- if ((optmask & ARES_OPT_SOCK_SNDBUF)
- && channel->socket_send_buffer_size == -1)
- channel->socket_send_buffer_size = options->socket_send_buffer_size;
- if ((optmask & ARES_OPT_SOCK_RCVBUF)
- && channel->socket_receive_buffer_size == -1)
- channel->socket_receive_buffer_size = options->socket_receive_buffer_size;
-
- /* Copy the IPv4 servers, if given. */
- if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1)
- {
- /* Avoid zero size allocations at any cost */
- if (options->nservers > 0)
- {
- channel->servers =
- malloc(options->nservers * sizeof(struct server_state));
- if (!channel->servers)
- return ARES_ENOMEM;
- for (i = 0; i < options->nservers; i++)
- {
- channel->servers[i].addr.family = AF_INET;
- memcpy(&channel->servers[i].addr.addrV4,
- &options->servers[i],
- sizeof(channel->servers[i].addr.addrV4));
- }
- }
- channel->nservers = options->nservers;
- }
-
- /* Copy the domains, if given. Keep channel->ndomains consistent so
- * we can clean up in case of error.
- */
- if ((optmask & ARES_OPT_DOMAINS) && channel->ndomains == -1)
- {
- /* Avoid zero size allocations at any cost */
- if (options->ndomains > 0)
- {
- channel->domains = malloc(options->ndomains * sizeof(char *));
- if (!channel->domains)
- return ARES_ENOMEM;
- for (i = 0; i < options->ndomains; i++)
- {
- channel->ndomains = i;
- channel->domains[i] = strdup(options->domains[i]);
- if (!channel->domains[i])
- return ARES_ENOMEM;
- }
- }
- channel->ndomains = options->ndomains;
- }
-
- /* Set lookups, if given. */
- if ((optmask & ARES_OPT_LOOKUPS) && !channel->lookups)
- {
- channel->lookups = strdup(options->lookups);
- if (!channel->lookups)
- return ARES_ENOMEM;
- }
-
- /* copy sortlist */
- if ((optmask & ARES_OPT_SORTLIST) && channel->nsort == -1)
- {
- channel->sortlist = malloc(options->nsort * sizeof(struct apattern));
- if (!channel->sortlist)
- return ARES_ENOMEM;
- for (i = 0; i < options->nsort; i++)
- {
- memcpy(&(channel->sortlist[i]), &(options->sortlist[i]),
- sizeof(struct apattern));
- }
- channel->nsort = options->nsort;
- }
-
- channel->optmask = optmask;
-
- return ARES_SUCCESS;
-}
-
-static int init_by_environment(ares_channel channel)
-{
- const char *localdomain, *res_options;
- int status;
-
- localdomain = getenv("LOCALDOMAIN");
- if (localdomain && channel->ndomains == -1)
- {
- status = set_search(channel, localdomain);
- if (status != ARES_SUCCESS)
- return status;
- }
-
- res_options = getenv("RES_OPTIONS");
- if (res_options)
- {
- status = set_options(channel, res_options);
- if (status != ARES_SUCCESS)
- return status;
- }
-
- return ARES_SUCCESS;
-}
-
-#ifdef WIN32
-/*
- * Warning: returns a dynamically allocated buffer, the user MUST
- * use free() if the function returns 1
- */
-static int get_res_nt(HKEY hKey, const char *subkey, char **obuf)
-{
- /* Test for the size we need */
- DWORD size = 0;
- int result;
-
- result = RegQueryValueEx(hKey, subkey, 0, NULL, NULL, &size);
- if ((result != ERROR_SUCCESS && result != ERROR_MORE_DATA) || !size)
- return 0;
- *obuf = malloc(size+1);
- if (!*obuf)
- return 0;
-
- if (RegQueryValueEx(hKey, subkey, 0, NULL,
- (LPBYTE)*obuf, &size) != ERROR_SUCCESS)
- {
- free(*obuf);
- return 0;
- }
- if (size == 1)
- {
- free(*obuf);
- return 0;
- }
- return 1;
-}
-
-static int get_res_interfaces_nt(HKEY hKey, const char *subkey, char **obuf)
-{
- char enumbuf[39]; /* GUIDs are 38 chars + 1 for NULL */
- DWORD enum_size = 39;
- int idx = 0;
- HKEY hVal;
-
- while (RegEnumKeyEx(hKey, idx++, enumbuf, &enum_size, 0,
- NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS)
- {
- int rc;
-
- enum_size = 39;
- if (RegOpenKeyEx(hKey, enumbuf, 0, KEY_QUERY_VALUE, &hVal) !=
- ERROR_SUCCESS)
- continue;
- rc = get_res_nt(hVal, subkey, obuf);
- RegCloseKey(hVal);
- if (rc)
- return 1;
- }
- return 0;
-}
-
-static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
-{
- FIXED_INFO *fi, *newfi;
- DWORD size = sizeof (*fi);
- IP_ADDR_STRING *ipAddr;
- int i, count = 0;
- int debug = 0;
- size_t ip_size = sizeof("255.255.255.255,")-1;
- size_t left = ret_size;
- char *ret = ret_buf;
- HRESULT res;
-
- fi = malloc(size);
- if (!fi)
- return 0;
-
- res = (*ares_fpGetNetworkParams) (fi, &size);
- if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
- goto quit;
-
- newfi = realloc(fi, size);
- if (!newfi)
- goto quit;
-
- fi = newfi;
- res = (*ares_fpGetNetworkParams) (fi, &size);
- if (res != ERROR_SUCCESS)
- goto quit;
-
- if (debug)
- {
- printf ("Host Name: %s\n", fi->HostName);
- printf ("Domain Name: %s\n", fi->DomainName);
- printf ("DNS Servers:\n"
- " %s (primary)\n", fi->DnsServerList.IpAddress.String);
- }
- if (strlen(fi->DnsServerList.IpAddress.String) > 0 &&
- inet_addr(fi->DnsServerList.IpAddress.String) != INADDR_NONE &&
- left > ip_size)
- {
- ret += sprintf (ret, "%s,", fi->DnsServerList.IpAddress.String);
- left -= ret - ret_buf;
- count++;
- }
-
- for (i = 0, ipAddr = fi->DnsServerList.Next; ipAddr && left > ip_size;
- ipAddr = ipAddr->Next, i++)
- {
- if (inet_addr(ipAddr->IpAddress.String) != INADDR_NONE)
- {
- ret += sprintf (ret, "%s,", ipAddr->IpAddress.String);
- left -= ret - ret_buf;
- count++;
- }
- if (debug)
- printf (" %s (secondary %d)\n", ipAddr->IpAddress.String, i+1);
- }
-
-quit:
- if (fi)
- free(fi);
-
- if (debug && left <= ip_size)
- printf ("Too many nameservers. Truncating to %d addressess", count);
- if (ret > ret_buf)
- ret[-1] = '\0';
- return count;
-}
-#endif
-
-static int init_by_resolv_conf(ares_channel channel)
-{
-#ifndef WATT32
- char *line = NULL;
-#endif
- int status = -1, nservers = 0, nsort = 0;
- struct server_state *servers = NULL;
- struct apattern *sortlist = NULL;
-
-#ifdef WIN32
-
- /*
- NameServer info via IPHLPAPI (IP helper API):
- GetNetworkParams() should be the trusted source for this.
- Available in Win-98/2000 and later. If that fail, fall-back to
- registry information.
-
- NameServer Registry:
-
- On Windows 9X, the DNS server can be found in:
-HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP\NameServer
-
- On Windows NT/2000/XP/2003:
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\NameServer
- or
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DhcpNameServer
- or
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\{AdapterID}\
-NameServer
- or
-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\{AdapterID}\
-DhcpNameServer
- */
-
- HKEY mykey;
- HKEY subkey;
- DWORD data_type;
- DWORD bytes;
- DWORD result;
- char buf[256];
-
- if (channel->nservers > -1) /* don't override ARES_OPT_SERVER */
- return ARES_SUCCESS;
-
- if (get_iphlpapi_dns_info(buf,sizeof(buf)) > 0)
- {
- status = config_nameserver(&servers, &nservers, buf);
- if (status == ARES_SUCCESS)
- goto okay;
- }
-
- if (IS_NT())
- {
- if (RegOpenKeyEx(
- HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
- KEY_READ, &mykey
- ) == ERROR_SUCCESS)
- {
- RegOpenKeyEx(mykey, "Interfaces", 0,
- KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS, &subkey);
- if (get_res_nt(mykey, NAMESERVER, &line))
- {
- status = config_nameserver(&servers, &nservers, line);
- free(line);
- }
- else if (get_res_nt(mykey, DHCPNAMESERVER, &line))
- {
- status = config_nameserver(&servers, &nservers, line);
- free(line);
- }
- /* Try the interfaces */
- else if (get_res_interfaces_nt(subkey, NAMESERVER, &line))
- {
- status = config_nameserver(&servers, &nservers, line);
- free(line);
- }
- else if (get_res_interfaces_nt(subkey, DHCPNAMESERVER, &line))
- {
- status = config_nameserver(&servers, &nservers, line);
- free(line);
- }
- RegCloseKey(subkey);
- RegCloseKey(mykey);
- }
- }
- else
- {
- if (RegOpenKeyEx(
- HKEY_LOCAL_MACHINE, WIN_NS_9X, 0,
- KEY_READ, &mykey
- ) == ERROR_SUCCESS)
- {
- if ((result = RegQueryValueEx(
- mykey, NAMESERVER, NULL, &data_type,
- NULL, &bytes
- )
- ) == ERROR_SUCCESS ||
- result == ERROR_MORE_DATA)
- {
- if (bytes)
- {
- line = malloc(bytes+1);
- if (RegQueryValueEx(mykey, NAMESERVER, NULL, &data_type,
- (unsigned char *)line, &bytes) ==
- ERROR_SUCCESS)
- {
- status = config_nameserver(&servers, &nservers, line);
- }
- free(line);
- }
- }
- }
- RegCloseKey(mykey);
- }
-
- if (status == ARES_SUCCESS)
- status = ARES_EOF;
- else
- /* Catch the case when all the above checks fail (which happens when there
- is no network card or the cable is unplugged) */
- status = ARES_EFILE;
-
-#elif defined(__riscos__)
-
- /* Under RISC OS, name servers are listed in the
- system variable Inet$Resolvers, space separated. */
-
- line = getenv("Inet$Resolvers");
- status = ARES_EOF;
- if (line) {
- char *resolvers = strdup(line), *pos, *space;
-
- if (!resolvers)
- return ARES_ENOMEM;
-
- pos = resolvers;
- do {
- space = strchr(pos, ' ');
- if (space)
- *space = '\0';
- status = config_nameserver(&servers, &nservers, pos);
- if (status != ARES_SUCCESS)
- break;
- pos = space + 1;
- } while (space);
-
- if (status == ARES_SUCCESS)
- status = ARES_EOF;
-
- free(resolvers);
- }
-
-#elif defined(WATT32)
- int i;
-
- sock_init();
- for (i = 0; def_nameservers[i]; i++)
- ;
- if (i == 0)
- return ARES_SUCCESS; /* use localhost DNS server */
-
- nservers = i;
- servers = calloc(i, sizeof(struct server_state));
- if (!servers)
- return ARES_ENOMEM;
-
- for (i = 0; def_nameservers[i]; i++)
- servers[i].addr.addrV4.s_addr = htonl(def_nameservers[i]);
- status = ARES_EOF;
-
-#else
- {
- char *p;
- FILE *fp;
- size_t linesize;
- int error;
-
- /* Don't read resolv.conf and friends if we don't have to */
- if (ARES_CONFIG_CHECK(channel))
- return ARES_SUCCESS;
-
- fp = fopen(PATH_RESOLV_CONF, "r");
- if (fp) {
- while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
- {
- if ((p = try_config(line, "domain")) && channel->ndomains == -1)
- status = config_domain(channel, p);
- else if ((p = try_config(line, "lookup")) && !channel->lookups)
- status = config_lookup(channel, p, "bind", "file");
- else if ((p = try_config(line, "search")) && channel->ndomains == -1)
- status = set_search(channel, p);
- else if ((p = try_config(line, "nameserver")) && channel->nservers == -1)
- status = config_nameserver(&servers, &nservers, p);
- else if ((p = try_config(line, "sortlist")) && channel->nsort == -1)
- status = config_sortlist(&sortlist, &nsort, p);
- else if ((p = try_config(line, "options")))
- status = set_options(channel, p);
- else
- status = ARES_SUCCESS;
- if (status != ARES_SUCCESS)
- break;
- }
- fclose(fp);
- }
- else {
- error = ERRNO;
- switch(error) {
- case ENOENT:
- case ESRCH:
- status = ARES_EOF;
- break;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n", PATH_RESOLV_CONF));
- status = ARES_EFILE;
- }
- }
-
- if ((status == ARES_EOF) && (!channel->lookups)) {
- /* Many systems (Solaris, Linux, BSD's) use nsswitch.conf */
- fp = fopen("/etc/nsswitch.conf", "r");
- if (fp) {
- while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
- {
- if ((p = try_config(line, "hosts:")) && !channel->lookups)
- status = config_lookup(channel, p, "dns", "files");
- }
- fclose(fp);
- }
- else {
- error = ERRNO;
- switch(error) {
- case ENOENT:
- case ESRCH:
- status = ARES_EOF;
- break;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/nsswitch.conf"));
- status = ARES_EFILE;
- }
- }
- }
-
- if ((status == ARES_EOF) && (!channel->lookups)) {
- /* Linux / GNU libc 2.x and possibly others have host.conf */
- fp = fopen("/etc/host.conf", "r");
- if (fp) {
- while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
- {
- if ((p = try_config(line, "order")) && !channel->lookups)
- status = config_lookup(channel, p, "bind", "hosts");
- }
- fclose(fp);
- }
- else {
- error = ERRNO;
- switch(error) {
- case ENOENT:
- case ESRCH:
- status = ARES_EOF;
- break;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/host.conf"));
- status = ARES_EFILE;
- }
- }
- }
-
- if ((status == ARES_EOF) && (!channel->lookups)) {
- /* Tru64 uses /etc/svc.conf */
- fp = fopen("/etc/svc.conf", "r");
- if (fp) {
- while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
- {
- if ((p = try_config(line, "hosts=")) && !channel->lookups)
- status = config_lookup(channel, p, "bind", "local");
- }
- fclose(fp);
- }
- else {
- error = ERRNO;
- switch(error) {
- case ENOENT:
- case ESRCH:
- status = ARES_EOF;
- break;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf"));
- status = ARES_EFILE;
- }
- }
- }
-
- if(line)
- free(line);
- }
-
-#endif
-
- /* Handle errors. */
- if (status != ARES_EOF)
- {
- if (servers != NULL)
- free(servers);
- if (sortlist != NULL)
- free(sortlist);
- return status;
- }
-
- /* If we got any name server entries, fill them in. */
-#ifdef WIN32
-okay:
-#endif
- if (servers)
- {
- channel->servers = servers;
- channel->nservers = nservers;
- }
-
- /* If we got any sortlist entries, fill them in. */
- if (sortlist)
- {
- channel->sortlist = sortlist;
- channel->nsort = nsort;
- }
-
- return ARES_SUCCESS;
-}
-
-static int init_by_defaults(ares_channel channel)
-{
- char *hostname = NULL;
- int rc = ARES_SUCCESS;
-#ifdef HAVE_GETHOSTNAME
- char *dot;
-#endif
-
- if (channel->flags == -1)
- channel->flags = 0;
- if (channel->timeout == -1)
- channel->timeout = DEFAULT_TIMEOUT;
- if (channel->tries == -1)
- channel->tries = DEFAULT_TRIES;
- if (channel->ndots == -1)
- channel->ndots = 1;
- if (channel->rotate == -1)
- channel->rotate = 0;
- if (channel->udp_port == -1)
- channel->udp_port = htons(NAMESERVER_PORT);
- if (channel->tcp_port == -1)
- channel->tcp_port = htons(NAMESERVER_PORT);
-
- if (channel->nservers == -1) {
- /* If nobody specified servers, try a local named. */
- channel->servers = malloc(sizeof(struct server_state));
- if (!channel->servers) {
- rc = ARES_ENOMEM;
- goto error;
- }
- channel->servers[0].addr.family = AF_INET;
- channel->servers[0].addr.addrV4.s_addr = htonl(INADDR_LOOPBACK);
- channel->nservers = 1;
- }
-
-#ifdef ENAMETOOLONG
-#define toolong(x) (x == -1) && ((ENAMETOOLONG == errno) || (EINVAL == errno))
-#else
-#define toolong(x) (x == -1) && (EINVAL == errno)
-#endif
-
- if (channel->ndomains == -1) {
- /* Derive a default domain search list from the kernel hostname,
- * or set it to empty if the hostname isn't helpful.
- */
- size_t len = 64;
- int res;
- channel->ndomains = 0; /* default to none */
-
-#ifdef HAVE_GETHOSTNAME
- hostname = malloc(len);
- if(!hostname) {
- rc = ARES_ENOMEM;
- goto error;
- }
-
- do {
- res = gethostname(hostname, len);
-
- if(toolong(res)) {
- char *p;
- len *= 2;
- p = realloc(hostname, len);
- if(!p) {
- rc = ARES_ENOMEM;
- goto error;
- }
- hostname = p;
- continue;
- }
- else if(res) {
- rc = ARES_EBADNAME;
- goto error;
- }
-
- } while(0);
-
- dot = strchr(hostname, '.');
- if (dot) {
- /* a dot was found */
- channel->domains = malloc(sizeof(char *));
- if (!channel->domains) {
- rc = ARES_ENOMEM;
- goto error;
- }
- channel->domains[0] = strdup(dot + 1);
- if (!channel->domains[0]) {
- rc = ARES_ENOMEM;
- goto error;
- }
- channel->ndomains = 1;
- }
-#endif
- }
-
- if (channel->nsort == -1) {
- channel->sortlist = NULL;
- channel->nsort = 0;
- }
-
- if (!channel->lookups) {
- channel->lookups = strdup("fb");
- if (!channel->lookups)
- rc = ARES_ENOMEM;
- }
-
- error:
- if(rc) {
- if(channel->servers)
- free(channel->servers);
-
- if(channel->domains && channel->domains[0])
- free(channel->domains[0]);
- if(channel->domains)
- free(channel->domains);
- if(channel->lookups)
- free(channel->lookups);
- }
-
- if(hostname)
- free(hostname);
-
- return rc;
-}
-
-#if !defined(WIN32) && !defined(WATT32)
-static int config_domain(ares_channel channel, char *str)
-{
- char *q;
-
- /* Set a single search domain. */
- q = str;
- while (*q && !ISSPACE(*q))
- q++;
- *q = '\0';
- return set_search(channel, str);
-}
-
-#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \
- defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__)
- /* workaround icc 9.1 optimizer issue */
-# define vqualifier volatile
-#else
-# define vqualifier
-#endif
-
-static int config_lookup(ares_channel channel, const char *str,
- const char *bindch, const char *filech)
-{
- char lookups[3], *l;
- const char *vqualifier p;
-
- /* Set the lookup order. Only the first letter of each work
- * is relevant, and it has to be "b" for DNS or "f" for the
- * host file. Ignore everything else.
- */
- l = lookups;
- p = str;
- while (*p)
- {
- if ((*p == *bindch || *p == *filech) && l < lookups + 2) {
- if (*p == *bindch) *l++ = 'b';
- else *l++ = 'f';
- }
- while (*p && !ISSPACE(*p) && (*p != ','))
- p++;
- while (*p && (ISSPACE(*p) || (*p == ',')))
- p++;
- }
- *l = '\0';
- channel->lookups = strdup(lookups);
- return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM;
-}
-#endif /* !WIN32 & !WATT32 */
-
-#ifndef WATT32
-static int config_nameserver(struct server_state **servers, int *nservers,
- char *str)
-{
- struct ares_addr host;
- struct server_state *newserv;
- char *p, *txtaddr;
- /* On Windows, there may be more than one nameserver specified in the same
- * registry key, so we parse input as a space or comma seperated list.
- */
- for (p = str; p;)
- {
- /* Skip whitespace and commas. */
- while (*p && (ISSPACE(*p) || (*p == ',')))
- p++;
- if (!*p)
- /* No more input, done. */
- break;
-
- /* Pointer to start of IPv4 or IPv6 address part. */
- txtaddr = p;
-
- /* Advance past this address. */
- while (*p && !ISSPACE(*p) && (*p != ','))
- p++;
- if (*p)
- /* Null terminate this address. */
- *p++ = '\0';
- else
- /* Reached end of input, done when this address is processed. */
- p = NULL;
-
- /* Convert textual address to binary format. */
- if (ares_inet_pton(AF_INET, txtaddr, &host.addrV4) == 1)
- host.family = AF_INET;
- else if (ares_inet_pton(AF_INET6, txtaddr, &host.addrV6) == 1)
- host.family = AF_INET6;
- else
- continue;
-
- /* Resize servers state array. */
- newserv = realloc(*servers, (*nservers + 1) *
- sizeof(struct server_state));
- if (!newserv)
- return ARES_ENOMEM;
-
- /* Store address data. */
- newserv[*nservers].addr.family = host.family;
- if (host.family == AF_INET)
- memcpy(&newserv[*nservers].addr.addrV4, &host.addrV4,
- sizeof(host.addrV4));
- else
- memcpy(&newserv[*nservers].addr.addrV6, &host.addrV6,
- sizeof(host.addrV6));
-
- /* Update arguments. */
- *servers = newserv;
- *nservers += 1;
- }
-
- return ARES_SUCCESS;
-}
-
-#ifndef WIN32
-static int config_sortlist(struct apattern **sortlist, int *nsort,
- const char *str)
-{
- struct apattern pat;
- const char *q;
-
- /* Add sortlist entries. */
- while (*str && *str != ';')
- {
- int bits;
- char ipbuf[16], ipbufpfx[32];
- /* Find just the IP */
- q = str;
- while (*q && *q != '/' && *q != ';' && !ISSPACE(*q))
- q++;
- memcpy(ipbuf, str, (int)(q-str));
- ipbuf[(int)(q-str)] = '\0';
- /* Find the prefix */
- if (*q == '/')
- {
- const char *str2 = q+1;
- while (*q && *q != ';' && !ISSPACE(*q))
- q++;
- memcpy(ipbufpfx, str, (int)(q-str));
- ipbufpfx[(int)(q-str)] = '\0';
- str = str2;
- }
- else
- ipbufpfx[0] = '\0';
- /* Lets see if it is CIDR */
- /* First we'll try IPv6 */
- if ((bits = ares_inet_net_pton(AF_INET6, ipbufpfx[0] ? ipbufpfx : ipbuf,
- &pat.addrV6,
- sizeof(pat.addrV6))) > 0)
- {
- pat.type = PATTERN_CIDR;
- pat.mask.bits = (unsigned short)bits;
- pat.family = AF_INET6;
- if (!sortlist_alloc(sortlist, nsort, &pat))
- return ARES_ENOMEM;
- }
- if (ipbufpfx[0] &&
- (bits = ares_inet_net_pton(AF_INET, ipbufpfx, &pat.addrV4,
- sizeof(pat.addrV4))) > 0)
- {
- pat.type = PATTERN_CIDR;
- pat.mask.bits = (unsigned short)bits;
- pat.family = AF_INET;
- if (!sortlist_alloc(sortlist, nsort, &pat))
- return ARES_ENOMEM;
- }
- /* See if it is just a regular IP */
- else if (ip_addr(ipbuf, (int)(q-str), &pat.addrV4) == 0)
- {
- if (ipbufpfx[0])
- {
- memcpy(ipbuf, str, (int)(q-str));
- ipbuf[(int)(q-str)] = '\0';
- if (ip_addr(ipbuf, (int)(q - str), &pat.mask.addr4) != 0)
- natural_mask(&pat);
- }
- else
- natural_mask(&pat);
- pat.family = AF_INET;
- pat.type = PATTERN_MASK;
- if (!sortlist_alloc(sortlist, nsort, &pat))
- return ARES_ENOMEM;
- }
- else
- {
- while (*q && *q != ';' && !ISSPACE(*q))
- q++;
- }
- str = q;
- while (ISSPACE(*str))
- str++;
- }
-
- return ARES_SUCCESS;
-}
-#endif /* !WIN32 */
-#endif /* !WATT32 */
-
-static int set_search(ares_channel channel, const char *str)
-{
- int n;
- const char *p, *q;
-
- if(channel->ndomains != -1) {
- /* if we already have some domains present, free them first */
- for(n=0; n < channel->ndomains; n++)
- free(channel->domains[n]);
- free(channel->domains);
- channel->domains = NULL;
- channel->ndomains = -1;
- }
-
- /* Count the domains given. */
- n = 0;
- p = str;
- while (*p)
- {
- while (*p && !ISSPACE(*p))
- p++;
- while (ISSPACE(*p))
- p++;
- n++;
- }
-
- if (!n)
- {
- channel->ndomains = 0;
- return ARES_SUCCESS;
- }
-
- channel->domains = malloc(n * sizeof(char *));
- if (!channel->domains)
- return ARES_ENOMEM;
-
- /* Now copy the domains. */
- n = 0;
- p = str;
- while (*p)
- {
- channel->ndomains = n;
- q = p;
- while (*q && !ISSPACE(*q))
- q++;
- channel->domains[n] = malloc(q - p + 1);
- if (!channel->domains[n])
- return ARES_ENOMEM;
- memcpy(channel->domains[n], p, q - p);
- channel->domains[n][q - p] = 0;
- p = q;
- while (ISSPACE(*p))
- p++;
- n++;
- }
- channel->ndomains = n;
-
- return ARES_SUCCESS;
-}
-
-static int set_options(ares_channel channel, const char *str)
-{
- const char *p, *q, *val;
-
- p = str;
- while (*p)
- {
- q = p;
- while (*q && !ISSPACE(*q))
- q++;
- val = try_option(p, q, "ndots:");
- if (val && channel->ndots == -1)
- channel->ndots = atoi(val);
- val = try_option(p, q, "retrans:");
- if (val && channel->timeout == -1)
- channel->timeout = atoi(val);
- val = try_option(p, q, "retry:");
- if (val && channel->tries == -1)
- channel->tries = atoi(val);
- val = try_option(p, q, "rotate");
- if (val && channel->rotate == -1)
- channel->rotate = 1;
- p = q;
- while (ISSPACE(*p))
- p++;
- }
-
- return ARES_SUCCESS;
-}
-
-static const char *try_option(const char *p, const char *q, const char *opt)
-{
- size_t len = strlen(opt);
- return ((size_t)(q - p) >= len && !strncmp(p, opt, len)) ? &p[len] : NULL;
-}
-
-#if !defined(WIN32) && !defined(WATT32)
-static char *try_config(char *s, const char *opt)
-{
- size_t len;
- char *p;
- char *q;
-
- if (!s || !opt)
- /* no line or no option */
- return NULL;
-
- /* trim line comment */
- p = s;
- while (*p && (*p != '#'))
- p++;
- *p = '\0';
-
- /* trim trailing whitespace */
- q = p - 1;
- while ((q >= s) && ISSPACE(*q))
- q--;
- *++q = '\0';
-
- /* skip leading whitespace */
- p = s;
- while (*p && ISSPACE(*p))
- p++;
-
- if (!*p)
- /* empty line */
- return NULL;
-
- if ((len = strlen(opt)) == 0)
- /* empty option */
- return NULL;
-
- if (strncmp(p, opt, len) != 0)
- /* line and option do not match */
- return NULL;
-
- /* skip over given option name */
- p += len;
-
- if (!*p)
- /* no option value */
- return NULL;
-
- if ((opt[len-1] != ':') && (opt[len-1] != '=') && !ISSPACE(*p))
- /* whitespace between option name and value is mandatory
- for given option names which do not end with ':' or '=' */
- return NULL;
-
- /* skip over whitespace */
- while (*p && ISSPACE(*p))
- p++;
-
- if (!*p)
- /* no option value */
- return NULL;
-
- /* return pointer to option value */
- return p;
-}
-
-static int sortlist_alloc(struct apattern **sortlist, int *nsort,
- struct apattern *pat)
-{
- struct apattern *newsort;
- newsort = realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
- if (!newsort)
- return 0;
- newsort[*nsort] = *pat;
- *sortlist = newsort;
- (*nsort)++;
- return 1;
-}
-
-static int ip_addr(const char *ipbuf, int len, struct in_addr *addr)
-{
-
- /* Four octets and three periods yields at most 15 characters. */
- if (len > 15)
- return -1;
-
- addr->s_addr = inet_addr(ipbuf);
- if (addr->s_addr == INADDR_NONE && strcmp(ipbuf, "255.255.255.255") != 0)
- return -1;
- return 0;
-}
-
-static void natural_mask(struct apattern *pat)
-{
- struct in_addr addr;
-
- /* Store a host-byte-order copy of pat in a struct in_addr. Icky,
- * but portable.
- */
- addr.s_addr = ntohl(pat->addrV4.s_addr);
-
- /* This is out of date in the CIDR world, but some people might
- * still rely on it.
- */
- if (IN_CLASSA(addr.s_addr))
- pat->mask.addr4.s_addr = htonl(IN_CLASSA_NET);
- else if (IN_CLASSB(addr.s_addr))
- pat->mask.addr4.s_addr = htonl(IN_CLASSB_NET);
- else
- pat->mask.addr4.s_addr = htonl(IN_CLASSC_NET);
-}
-#endif /* !WIN32 && !WATT32 */
-
-/* initialize an rc4 key. If possible a cryptographically secure random key
- is generated using a suitable function (for example win32's RtlGenRandom as
- described in
- http://blogs.msdn.com/michael_howard/archive/2005/01/14/353379.aspx
- otherwise the code defaults to cross-platform albeit less secure mechanism
- using rand
-*/
-static void randomize_key(unsigned char* key,int key_data_len)
-{
- int randomized = 0;
- int counter=0;
-#ifdef WIN32
- BOOLEAN res;
- if (ares_fpSystemFunction036)
- {
- res = (*ares_fpSystemFunction036) (key, key_data_len);
- if (res)
- randomized = 1;
- }
-#else /* !WIN32 */
-#ifdef RANDOM_FILE
- FILE *f = fopen(RANDOM_FILE, "rb");
- if(f) {
- counter = fread(key, 1, key_data_len, f);
- fclose(f);
- }
-#endif
-#endif /* WIN32 */
-
- if ( !randomized ) {
- for (;counter<key_data_len;counter++)
- key[counter]=(unsigned char)(rand() % 256);
- }
-}
-
-static int init_id_key(rc4_key* key,int key_data_len)
-{
- unsigned char index1;
- unsigned char index2;
- unsigned char* state;
- short counter;
- unsigned char *key_data_ptr = 0;
-
- key_data_ptr = calloc(1,key_data_len);
- if (!key_data_ptr)
- return ARES_ENOMEM;
-
- state = &key->state[0];
- for(counter = 0; counter < 256; counter++)
- /* unnecessary AND but it keeps some compilers happier */
- state[counter] = (unsigned char)(counter & 0xff);
- randomize_key(key->state,key_data_len);
- key->x = 0;
- key->y = 0;
- index1 = 0;
- index2 = 0;
- for(counter = 0; counter < 256; counter++)
- {
- index2 = (unsigned char)((key_data_ptr[index1] + state[counter] +
- index2) % 256);
- ARES_SWAP_BYTE(&state[counter], &state[index2]);
-
- index1 = (unsigned char)((index1 + 1) % key_data_len);
- }
- free(key_data_ptr);
- return ARES_SUCCESS;
-}
-
-unsigned short ares__generate_new_id(rc4_key* key)
-{
- unsigned short r=0;
- ares__rc4(key, (unsigned char *)&r, sizeof(r));
- return r;
-}
-
-void ares_set_socket_callback(ares_channel channel,
- ares_sock_create_callback cb,
- void *data)
-{
- channel->sock_create_cb = cb;
- channel->sock_create_cb_data = data;
-}
-
-void ares__init_servers_state(ares_channel channel)
-{
- struct server_state *server;
- int i;
-
- for (i = 0; i < channel->nservers; i++)
- {
- server = &channel->servers[i];
- server->udp_socket = ARES_SOCKET_BAD;
- server->tcp_socket = ARES_SOCKET_BAD;
- server->tcp_connection_generation = ++channel->tcp_connection_generation;
- server->tcp_lenbuf_pos = 0;
- server->tcp_buffer_pos = 0;
- server->tcp_buffer = NULL;
- server->tcp_length = 0;
- server->qhead = NULL;
- server->qtail = NULL;
- ares__init_list_head(&server->queries_to_server);
- server->channel = channel;
- server->is_broken = 0;
- }
-}
diff --git a/ares/ares_init_options.3 b/ares/ares_init_options.3
deleted file mode 100644
index f45a8aa13..000000000
--- a/ares/ares_init_options.3
+++ /dev/null
@@ -1,2 +0,0 @@
-.so man3/ares_init.3
-.\" $Id$
diff --git a/ares/ares_ipv6.h b/ares/ares_ipv6.h
deleted file mode 100644
index 4a97199c3..000000000
--- a/ares/ares_ipv6.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2005 by Dominick Meglio
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifndef ARES_IPV6_H
-#define ARES_IPV6_H
-
-#ifndef HAVE_PF_INET6
-#define PF_INET6 AF_INET6
-#endif
-
-#ifndef HAVE_STRUCT_SOCKADDR_IN6
-struct sockaddr_in6
-{
- unsigned short sin6_family;
- unsigned short sin6_port;
- unsigned long sin6_flowinfo;
- struct ares_in6_addr sin6_addr;
- unsigned int sin6_scope_id;
-};
-#endif
-
-#ifndef HAVE_STRUCT_ADDRINFO
-struct addrinfo
-{
- int ai_flags;
- int ai_family;
- int ai_socktype;
- int ai_protocol;
- ares_socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */
- char *ai_canonname;
- struct sockaddr *ai_addr;
- struct addrinfo *ai_next;
-};
-#endif
-
-#ifndef NS_IN6ADDRSZ
-#if SIZEOF_STRUCT_IN6_ADDR == 0
-/* We cannot have it set to zero, so we pick a fixed value here */
-#define NS_IN6ADDRSZ 16
-#else
-#define NS_IN6ADDRSZ SIZEOF_STRUCT_IN6_ADDR
-#endif
-#endif
-
-#ifndef NS_INADDRSZ
-#define NS_INADDRSZ SIZEOF_STRUCT_IN_ADDR
-#endif
-
-#ifndef NS_INT16SZ
-#define NS_INT16SZ 2
-#endif
-
-#ifndef IF_NAMESIZE
-#ifdef IFNAMSIZ
-#define IF_NAMESIZE IFNAMSIZ
-#else
-#define IF_NAMESIZE 256
-#endif
-#endif
-
-#endif /* ARES_IPV6_H */
diff --git a/ares/ares_library_cleanup.3 b/ares/ares_library_cleanup.3
deleted file mode 100644
index 4bbe0b899..000000000
--- a/ares/ares_library_cleanup.3
+++ /dev/null
@@ -1,74 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\" Copyright (C) 2004-2009 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_LIBRARY_CLEANUP 3 "19 May 2009"
-.SH NAME
-ares_library_cleanup \- c-ares library deinitialization
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_library_cleanup(void)
-.PP
-.B cc file.c -lcares
-.fi
-.SH DESCRIPTION
-.PP
-The
-.B ares_library_cleanup
-function uninitializes the c-ares library, freeing all resources
-previously aquired by \fIares_library_init(3)\fP when the library
-was initialized.
-.PP
-This function must be called when the program using c-ares will
-no longer need any c-ares function. Once the program has called
-\fIares_library_cleanup(3)\fP it shall not make any further call to any
-c-ares function.
-.PP
-This function does not cancel any pending c-ares lookups or requests
-previously done. Program must use \fIares_cancel(3)\fP for this purpose.
-.PP
-.B This function is not thread safe.
-You have to call it once the program is about to terminate, but this call must
-be done once the program has terminated every single thread that it could have
-initiated. This is required to avoid potential race conditions in library
-deinitialization, and also due to the fact that \fIares_library_cleanup(3)\fP
-might call functions from other libraries that are thread unsafe, and could
-conflict with any other thread that is already using these other libraries.
-.PP
-Win32/64 application DLLs shall not call \fIares_library_cleanup(3)\fP from
-the DllMain function. Doing so will produce deadlocks and other problems.
-.SH AVAILABILITY
-This function was first introduced in c-ares version 1.7.0 along with the
-definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_CLEANUP\fP as an
-indication of the availability of this function.
-.PP
-Since the introduction of this function, it is absolutely mandatory to call it
-for any Win32/64 program using c-ares.
-.PP
-Non-Win32/64 systems can still use c-ares version 1.7.0 without calling
-\fIares_library_cleanup(3)\fP due to the fact that \fIcurrently\fP it is nearly
-a do-nothing function on non-Win32/64 platforms.
-.SH SEE ALSO
-.BR ares_library_init(3),
-.BR ares_cancel(3)
-.SH AUTHOR
-Yang Tse
-.PP
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2009 by Daniel Stenberg.
diff --git a/ares/ares_library_init.3 b/ares/ares_library_init.3
deleted file mode 100644
index 1d49c2016..000000000
--- a/ares/ares_library_init.3
+++ /dev/null
@@ -1,97 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\" Copyright (C) 2004-2009 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_LIBRARY_INIT 3 "19 May 2009"
-.SH NAME
-ares_library_init \- c-ares library initialization
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_library_init(int \fIflags\fP)
-.PP
-.B cc file.c -lcares
-.fi
-.SH DESCRIPTION
-.PP
-The
-.B ares_library_init
-function performs initializations internally required by the c-ares
-library that must take place before any other function provided by
-c-ares can be used in a program.
-.PP
-This function must be called one time within the life of a program,
-before the program actually executes any other c-ares library function.
-Initializations done by this function remain effective until a
-call to \fIares_library_cleanup(3)\fP is performed.
-.PP
-Successive calls to this function do nothing, only the first call done
-when c-ares is in an uninitialized state is actually effective.
-.PP
-The
-.I flags
-parameter is a bit pattern that tells c-ares exactly which features
-should be initialized, as described below. Set the desired bits by
-ORing the values together. In normal operation you should specify
-\fIARES_LIB_INIT_ALL\fP. Don't use any other value unless you are
-familiar with it and trying to control some internal c-ares feature.
-.PP
-.B This function is not thread safe.
-You have to call it once the program has started, but this call must be done
-before the program starts any other thread. This is required to avoid
-potential race conditions in library initialization, and also due to the fact
-that \fIares_library_init(3)\fP might call functions from other libraries that
-are thread unsafe, and could conflict with any other thread that is already
-using these other libraries.
-.PP
-Win32/64 application DLLs shall not call \fIares_library_init(3)\fP from the
-DllMain function. Doing so will produce deadlocks and other problems.
-.SH FLAGS
-.TP 5
-.B ARES_LIB_INIT_ALL
-Initialize everything possible. This sets all known bits.
-.TP
-.B ARES_LIB_INIT_WIN32
-Initialize Win32/64 specific libraries.
-.TP
-.B ARES_LIB_INIT_NONE
-Initialize nothing extra. This sets no bit.
-.SH RETURN VALUE
-Upon successful completion, ares_library_init() will return 0. Otherwise, a
-non-zero error number will be returned to indicate the error. Except for
-\fIares_strerror(3)\fP, you shall not call any other c-ares function upon
-\fIares_library_init(3)\fP failure.
-.SH AVAILABILITY
-This function was first introduced in c-ares version 1.7.0 along with the
-definition of preprocessor symbol \fICARES_HAVE_ARES_LIBRARY_INIT\fP as an
-indication of the availability of this function.
-.PP
-Since the introduction of this function it is absolutely mandatory to
-call it for any Win32/64 program using c-ares.
-.PP
-Non-Win32/64 systems can still use c-ares version 1.7.0 without calling
-\fIares_library_init(3)\fP due to the fact that \fIcurrently\fP it is nearly
-a do-nothing function on non-Win32/64 platforms at this point.
-.SH SEE ALSO
-.BR ares_library_cleanup(3),
-.BR ares_strerror(3)
-.SH AUTHOR
-Yang Tse
-.PP
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2004-2009 by Daniel Stenberg.
diff --git a/ares/ares_library_init.c b/ares/ares_library_init.c
deleted file mode 100644
index aac34eaf4..000000000
--- a/ares/ares_library_init.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2004-2009 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#include "ares.h"
-#include "ares_library_init.h"
-#include "ares_private.h"
-
-/* library-private global and unique instance vars */
-
-#ifdef USE_WINSOCK
-fpGetNetworkParams_t ares_fpGetNetworkParams = ZERO_NULL;
-fpSystemFunction036_t ares_fpSystemFunction036 = ZERO_NULL;
-#endif
-
-/* library-private global vars with source visibility restricted to this file */
-
-static unsigned int ares_initialized;
-static int ares_init_flags;
-
-#ifdef USE_WINSOCK
-static HMODULE hnd_iphlpapi;
-static HMODULE hnd_advapi32;
-#endif
-
-
-static int ares_win32_init(void)
-{
-#ifdef USE_WINSOCK
-
- hnd_iphlpapi = 0;
- hnd_iphlpapi = LoadLibrary("iphlpapi.dll");
- if (!hnd_iphlpapi)
- return ARES_ELOADIPHLPAPI;
-
- ares_fpGetNetworkParams = (fpGetNetworkParams_t)
- GetProcAddress(hnd_iphlpapi, "GetNetworkParams");
- if (!ares_fpGetNetworkParams)
- {
- FreeLibrary(hnd_iphlpapi);
- return ARES_EADDRGETNETWORKPARAMS;
- }
-
- /*
- * When advapi32.dll is unavailable or advapi32.dll has no SystemFunction036,
- * also known as RtlGenRandom, which is the case for Windows versions prior
- * to WinXP then c-ares uses portable rand() function. Then don't error here.
- */
-
- hnd_advapi32 = 0;
- hnd_advapi32 = LoadLibrary("advapi32.dll");
- if (hnd_advapi32)
- {
- ares_fpSystemFunction036 = (fpSystemFunction036_t)
- GetProcAddress(hnd_advapi32, "SystemFunction036");
- }
-
-#endif
- return ARES_SUCCESS;
-}
-
-
-static void ares_win32_cleanup(void)
-{
-#ifdef USE_WINSOCK
- if (hnd_advapi32)
- FreeLibrary(hnd_advapi32);
- if (hnd_iphlpapi)
- FreeLibrary(hnd_iphlpapi);
-#endif
-}
-
-
-int ares_library_init(int flags)
-{
- int res;
-
- if (ares_initialized)
- return ARES_SUCCESS;
- ares_initialized++;
-
- if (flags & ARES_LIB_INIT_WIN32)
- {
- res = ares_win32_init();
- if (res != ARES_SUCCESS)
- return res;
- }
-
- ares_init_flags = flags;
-
- return ARES_SUCCESS;
-}
-
-
-void ares_library_cleanup(void)
-{
- if (!ares_initialized)
- return;
- ares_initialized--;
-
- if (ares_init_flags & ARES_LIB_INIT_WIN32)
- ares_win32_cleanup();
-
- ares_init_flags = ARES_LIB_INIT_NONE;
-}
-
-
-int ares_library_initialized(void)
-{
-#ifdef USE_WINSOCK
- if (!ares_initialized)
- return ARES_ENOTINITIALIZED;
-#endif
- return ARES_SUCCESS;
-}
-
-
diff --git a/ares/ares_library_init.h b/ares/ares_library_init.h
deleted file mode 100644
index 515c17d82..000000000
--- a/ares/ares_library_init.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef HEADER_CARES_LIBRARY_INIT_H
-#define HEADER_CARES_LIBRARY_INIT_H
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2004-2009 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef USE_WINSOCK
-
-#include <iphlpapi.h>
-
-typedef DWORD (WINAPI *fpGetNetworkParams_t) (FIXED_INFO*, DWORD*);
-typedef BOOLEAN (APIENTRY *fpSystemFunction036_t) (void*, ULONG);
-
-/* Forward-declaration of variables defined in ares_library_init.c */
-/* that are global and unique instances for whole c-ares library. */
-
-extern fpGetNetworkParams_t ares_fpGetNetworkParams;
-extern fpSystemFunction036_t ares_fpSystemFunction036;
-
-#endif /* USE_WINSOCK */
-
-#endif /* HEADER_CARES_LIBRARY_INIT_H */
-
diff --git a/ares/ares_llist.c b/ares/ares_llist.c
deleted file mode 100644
index f261dc73b..000000000
--- a/ares/ares_llist.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#include "ares.h"
-#include "ares_private.h"
-
-/* Routines for managing doubly-linked circular linked lists with a
- * dummy head.
- */
-
-/* Initialize a new head node */
-void ares__init_list_head(struct list_node* head) {
- head->prev = head;
- head->next = head;
- head->data = NULL;
-}
-
-/* Initialize a list node */
-void ares__init_list_node(struct list_node* node, void* d) {
- node->prev = NULL;
- node->next = NULL;
- node->data = d;
-}
-
-/* Returns true iff the given list is empty */
-int ares__is_list_empty(struct list_node* head) {
- return ((head->next == head) && (head->prev == head));
-}
-
-/* Inserts new_node before old_node */
-void ares__insert_in_list(struct list_node* new_node,
- struct list_node* old_node) {
- new_node->next = old_node;
- new_node->prev = old_node->prev;
- old_node->prev->next = new_node;
- old_node->prev = new_node;
-}
-
-/* Removes the node from the list it's in, if any */
-void ares__remove_from_list(struct list_node* node) {
- if (node->next != NULL) {
- node->prev->next = node->next;
- node->next->prev = node->prev;
- node->prev = NULL;
- node->next = NULL;
- }
-}
-
-/* Swap the contents of two lists */
-void ares__swap_lists(struct list_node* head_a,
- struct list_node* head_b) {
- int is_a_empty = ares__is_list_empty(head_a);
- int is_b_empty = ares__is_list_empty(head_b);
- struct list_node old_a = *head_a;
- struct list_node old_b = *head_b;
-
- if (is_a_empty) {
- ares__init_list_head(head_b);
- } else {
- *head_b = old_a;
- old_a.next->prev = head_b;
- old_a.prev->next = head_b;
- }
- if (is_b_empty) {
- ares__init_list_head(head_a);
- } else {
- *head_a = old_b;
- old_b.next->prev = head_a;
- old_b.prev->next = head_a;
- }
-}
diff --git a/ares/ares_llist.h b/ares/ares_llist.h
deleted file mode 100644
index d20af7e15..000000000
--- a/ares/ares_llist.h
+++ /dev/null
@@ -1,43 +0,0 @@
-#ifndef __ARES_LLIST_H
-#define __ARES_LLIST_H
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-
-/* Node definition for circular, doubly-linked list */
-struct list_node {
- struct list_node *prev;
- struct list_node *next;
- void* data;
-};
-
-void ares__init_list_head(struct list_node* head);
-
-void ares__init_list_node(struct list_node* node, void* d);
-
-int ares__is_list_empty(struct list_node* head);
-
-void ares__insert_in_list(struct list_node* new_node,
- struct list_node* old_node);
-
-void ares__remove_from_list(struct list_node* node);
-
-void ares__swap_lists(struct list_node* head_a,
- struct list_node* head_b);
-
-#endif /* __ARES_LLIST_H */
diff --git a/ares/ares_mkquery.3 b/ares/ares_mkquery.3
deleted file mode 100644
index ac3f36f03..000000000
--- a/ares/ares_mkquery.3
+++ /dev/null
@@ -1,76 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998, 2000 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_MKQUERY 3 "20 Nov 2009"
-.SH NAME
-ares_mkquery \- Compose a single-question DNS query buffer
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_mkquery(const char *\fIname\fP, int \fIdnsclass\fP, int \fItype\fP,
-.B unsigned short \fIid\fP, int \fIrd\fP, unsigned char **\fIbuf\fP,
-.B int *\fIbuflen\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_mkquery
-function composes a DNS query with a single question.
-The parameter
-.I name
-gives the query name as a NUL-terminated C string of period-separated
-labels optionally ending with a period; periods and backslashes within
-a label must be escaped with a backlash. The parameters
-.I dnsclass
-and
-.I type
-give the class and type of the query using the values defined in
-.BR <arpa/nameser.h> .
-The parameter
-.I id
-gives a 16-bit identifier for the query. The parameter
-.I rd
-should be nonzero if recursion is desired, zero if not. The query
-will be placed in an allocated buffer, a pointer to which will be
-stored in the variable pointed to by
-.IR buf ,
-and the length of which will be stored in the variable pointed to by
-.IR buflen .
-It is the caller's responsibility to free this buffer using
-\fIares_free_string(3)\fP when it is no longer needed.
-.SH RETURN VALUES
-.B ares_mkquery
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-Construction of the DNS query succeeded.
-.TP 15
-.B ARES_EBADNAME
-The query name
-.I name
-could not be encoded as a domain name, either because it contained a
-zero-length label or because it contained a label of more than 63
-characters.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_expand_name (3),
-.BR ares_free_string (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998, 2000 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_mkquery.c b/ares/ares_mkquery.c
deleted file mode 100644
index 56571885c..000000000
--- a/ares/ares_mkquery.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-/* Header format, from RFC 1035:
- * 1 1 1 1 1 1
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | ID |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * |QR| Opcode |AA|TC|RD|RA| Z | RCODE |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | QDCOUNT |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | ANCOUNT |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | NSCOUNT |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | ARCOUNT |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- *
- * AA, TC, RA, and RCODE are only set in responses. Brief description
- * of the remaining fields:
- * ID Identifier to match responses with queries
- * QR Query (0) or response (1)
- * Opcode For our purposes, always QUERY
- * RD Recursion desired
- * Z Reserved (zero)
- * QDCOUNT Number of queries
- * ANCOUNT Number of answers
- * NSCOUNT Number of name server records
- * ARCOUNT Number of additional records
- *
- * Question format, from RFC 1035:
- * 1 1 1 1 1 1
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | |
- * / QNAME /
- * / /
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | QTYPE |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- * | QCLASS |
- * +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- *
- * The query name is encoded as a series of labels, each represented
- * as a one-byte length (maximum 63) followed by the text of the
- * label. The list is terminated by a label of length zero (which can
- * be thought of as the root domain).
- */
-
-int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
- int rd, unsigned char **buf, int *buflen)
-{
- int len;
- unsigned char *q;
- const char *p;
-
- /* Set our results early, in case we bail out early with an error. */
- *buflen = 0;
- *buf = NULL;
-
- /* Compute the length of the encoded name so we can check buflen.
- * Start counting at 1 for the zero-length label at the end. */
- len = 1;
- for (p = name; *p; p++)
- {
- if (*p == '\\' && *(p + 1) != 0)
- p++;
- len++;
- }
- /* If there are n periods in the name, there are n + 1 labels, and
- * thus n + 1 length fields, unless the name is empty or ends with a
- * period. So add 1 unless name is empty or ends with a period.
- */
- if (*name && *(p - 1) != '.')
- len++;
-
- /* Immediately reject names that are longer than the maximum of 255
- * bytes that's specified in RFC 1035 ("To simplify implementations,
- * the total length of a domain name (i.e., label octets and label
- * length octets) is restricted to 255 octets or less."). We aren't
- * doing this just to be a stickler about RFCs. For names that are
- * too long, 'dnscache' closes its TCP connection to us immediately
- * (when using TCP) and ignores the request when using UDP, and
- * BIND's named returns ServFail (TCP or UDP). Sending a request
- * that we know will cause 'dnscache' to close the TCP connection is
- * painful, since that makes any other outstanding requests on that
- * connection fail. And sending a UDP request that we know
- * 'dnscache' will ignore is bad because resources will be tied up
- * until we time-out the request.
- */
- if (len > MAXCDNAME)
- return ARES_EBADNAME;
-
- *buflen = len + HFIXEDSZ + QFIXEDSZ;
- *buf = malloc(*buflen);
- if (!*buf)
- return ARES_ENOMEM;
-
- /* Set up the header. */
- q = *buf;
- memset(q, 0, HFIXEDSZ);
- DNS_HEADER_SET_QID(q, id);
- DNS_HEADER_SET_OPCODE(q, QUERY);
- if (rd) {
- DNS_HEADER_SET_RD(q, 1);
- }
- else {
- DNS_HEADER_SET_RD(q, 0);
- }
- DNS_HEADER_SET_QDCOUNT(q, 1);
-
- /* A name of "." is a screw case for the loop below, so adjust it. */
- if (strcmp(name, ".") == 0)
- name++;
-
- /* Start writing out the name after the header. */
- q += HFIXEDSZ;
- while (*name)
- {
- if (*name == '.')
- return ARES_EBADNAME;
-
- /* Count the number of bytes in this label. */
- len = 0;
- for (p = name; *p && *p != '.'; p++)
- {
- if (*p == '\\' && *(p + 1) != 0)
- p++;
- len++;
- }
- if (len > MAXLABEL)
- return ARES_EBADNAME;
-
- /* Encode the length and copy the data. */
- *q++ = (unsigned char)len;
- for (p = name; *p && *p != '.'; p++)
- {
- if (*p == '\\' && *(p + 1) != 0)
- p++;
- *q++ = *p;
- }
-
- /* Go to the next label and repeat, unless we hit the end. */
- if (!*p)
- break;
- name = p + 1;
- }
-
- /* Add the zero-length label at the end. */
- *q++ = 0;
-
- /* Finish off the question with the type and class. */
- DNS_QUESTION_SET_TYPE(q, type);
- DNS_QUESTION_SET_CLASS(q, dnsclass);
-
- return ARES_SUCCESS;
-}
diff --git a/ares/ares_nowarn.c b/ares/ares_nowarn.c
deleted file mode 100644
index 91d0a5f20..000000000
--- a/ares/ares_nowarn.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-
-#include "ares_setup.h"
-
-#include "ares_nowarn.h"
-
-#if (SIZEOF_INT == 2)
-# define CARES_MASK_SINT 0x7FFF
-# define CARES_MASK_UINT 0xFFFF
-#elif (SIZEOF_INT == 4)
-# define CARES_MASK_SINT 0x7FFFFFFF
-# define CARES_MASK_UINT 0xFFFFFFFF
-#elif (SIZEOF_INT == 8)
-# define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFF
-# define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFF
-#elif (SIZEOF_INT == 16)
-# define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-# define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
-#endif
-
-/*
-** size_t to signed int
-*/
-
-int aresx_uztosi(size_t uznum)
-{
-#ifdef __INTEL_COMPILER
-# pragma warning(push)
-# pragma warning(disable:810) /* conversion may lose significant bits */
-#endif
-
- return (int)(uznum & (size_t) CARES_MASK_SINT);
-
-#ifdef __INTEL_COMPILER
-# pragma warning(pop)
-#endif
-}
diff --git a/ares/ares_nowarn.h b/ares/ares_nowarn.h
deleted file mode 100644
index 0b7181bd4..000000000
--- a/ares/ares_nowarn.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef HEADER_CARES_NOWARN_H
-#define HEADER_CARES_NOWARN_H
-
-/* $Id$ */
-
-/* Copyright (C) 2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-int aresx_uztosi(size_t uznum);
-
-#endif /* HEADER_CARES_NOWARN_H */
diff --git a/ares/ares_options.c b/ares/ares_options.c
deleted file mode 100644
index 0c879740b..000000000
--- a/ares/ares_options.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2008-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-
-#include "ares_setup.h"
-
-#include "ares.h"
-#include "ares_data.h"
-#include "ares_private.h"
-
-
-int ares_get_servers(ares_channel channel,
- struct ares_addr_node **servers)
-{
- struct ares_addr_node *srvr_head = NULL;
- struct ares_addr_node *srvr_last = NULL;
- struct ares_addr_node *srvr_curr;
- int status = ARES_SUCCESS;
- int i;
-
- if (!channel)
- return ARES_ENODATA;
-
- for (i = 0; i < channel->nservers; i++)
- {
- /* Allocate storage for this server node appending it to the list */
- srvr_curr = ares_malloc_data(ARES_DATATYPE_ADDR_NODE);
- if (!srvr_curr)
- {
- status = ARES_ENOMEM;
- break;
- }
- if (srvr_last)
- {
- srvr_last->next = srvr_curr;
- }
- else
- {
- srvr_head = srvr_curr;
- }
- srvr_last = srvr_curr;
-
- /* Fill this server node data */
- srvr_curr->family = channel->servers[i].addr.family;
- if (srvr_curr->family == AF_INET)
- memcpy(&srvr_curr->addrV4, &channel->servers[i].addr.addrV4,
- sizeof(srvr_curr->addrV4));
- else
- memcpy(&srvr_curr->addrV6, &channel->servers[i].addr.addrV6,
- sizeof(srvr_curr->addrV6));
- }
-
- if (status != ARES_SUCCESS)
- {
- if (srvr_head)
- {
- ares_free_data(srvr_head);
- srvr_head = NULL;
- }
- }
-
- *servers = srvr_head;
-
- return status;
-}
-
-
-int ares_set_servers(ares_channel channel,
- struct ares_addr_node *servers)
-{
- struct ares_addr_node *srvr;
- int num_srvrs = 0;
- int i;
-
- if (ares_library_initialized() != ARES_SUCCESS)
- return ARES_ENOTINITIALIZED;
-
- if (!channel)
- return ARES_ENODATA;
-
- ares__destroy_servers_state(channel);
-
- for (srvr = servers; srvr; srvr = srvr->next)
- {
- num_srvrs++;
- }
-
- if (num_srvrs > 0)
- {
- /* Allocate storage for servers state */
- channel->servers = malloc(num_srvrs * sizeof(struct server_state));
- if (!channel->servers)
- {
- return ARES_ENOMEM;
- }
- channel->nservers = num_srvrs;
- /* Fill servers state address data */
- for (i = 0, srvr = servers; srvr; i++, srvr = srvr->next)
- {
- channel->servers[i].addr.family = srvr->family;
- if (srvr->family == AF_INET)
- memcpy(&channel->servers[i].addr.addrV4, &srvr->addrV4,
- sizeof(srvr->addrV4));
- else
- memcpy(&channel->servers[i].addr.addrV6, &srvr->addrV6,
- sizeof(srvr->addrV6));
- }
- /* Initialize servers state remaining data */
- ares__init_servers_state(channel);
- }
-
- return ARES_SUCCESS;
-}
diff --git a/ares/ares_parse_a_reply.3 b/ares/ares_parse_a_reply.3
deleted file mode 100644
index f7debb912..000000000
--- a/ares/ares_parse_a_reply.3
+++ /dev/null
@@ -1,79 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PARSE_A_REPLY 3 "25 July 1998"
-.SH NAME
-ares_parse_a_reply \- Parse a reply to a DNS query of type A
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_parse_a_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
-.B struct hostent **\fIhost\fP,
-.B struct ares_addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
-.fi
-.SH DESCRIPTION
-The
-.B ares_parse_a_reply
-function parses the response to a query of type A into a
-.BR "struct hostent"
-and/or an array of
-.BR "struct ares_addrttls" .
-The parameters
-.I abuf
-and
-.I alen
-give the contents of the response. The result is stored in allocated
-memory and a pointer to it stored into the variable pointed to by
-.IR host ,
-if host is nonnull.
-It is the caller's responsibility to free the resulting host structure
-using
-.BR ares_free_hostent (3)
-when it is no longer needed.
-.PP
-If
-.IR addrttls
-and
-.IR naddrttls
-are both nonnull,
-then up to *naddrttls
-.BR "struct ares_addrttl"
-records are stored in the array pointed to by addrttls,
-and then *naddrttls is set to the number of records so stored.
-Note that the memory for these records is supplied by the caller.
-.SH RETURN VALUES
-.B ares_parse_a_reply
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The response was successfully parsed.
-.TP 15
-.B ARES_EBADRESP
-The response was malformatted.
-.TP 15
-.B ARES_ENODATA
-The response did not contain an answer to the query.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_gethostbyname (3),
-.BR ares_free_hostent (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_parse_a_reply.c b/ares/ares_parse_a_reply.c
deleted file mode 100644
index a6ed7dd2f..000000000
--- a/ares/ares_parse_a_reply.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-int ares_parse_a_reply(const unsigned char *abuf, int alen,
- struct hostent **host,
- struct ares_addrttl *addrttls, int *naddrttls)
-{
- unsigned int qdcount, ancount;
- int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs;
- int cname_ttl = INT_MAX; /* the TTL imposed by the CNAME chain */
- int naliases;
- long len;
- const unsigned char *aptr;
- char *hostname, *rr_name, *rr_data, **aliases;
- struct in_addr *addrs;
- struct hostent *hostent;
- const int max_addr_ttls = (addrttls && naddrttls) ? *naddrttls : 0;
-
- /* Set *host to NULL for all failure cases. */
- if (host)
- *host = NULL;
- /* Same with *naddrttls. */
- if (naddrttls)
- *naddrttls = 0;
-
- /* Give up if abuf doesn't have room for a header. */
- if (alen < HFIXEDSZ)
- return ARES_EBADRESP;
-
- /* Fetch the question and answer count from the header. */
- qdcount = DNS_HEADER_QDCOUNT(abuf);
- ancount = DNS_HEADER_ANCOUNT(abuf);
- if (qdcount != 1)
- return ARES_EBADRESP;
-
- /* Expand the name from the question, and skip past the question. */
- aptr = abuf + HFIXEDSZ;
- status = ares__expand_name_for_response(aptr, abuf, alen, &hostname, &len);
- if (status != ARES_SUCCESS)
- return status;
- if (aptr + len + QFIXEDSZ > abuf + alen)
- {
- free(hostname);
- return ARES_EBADRESP;
- }
- aptr += len + QFIXEDSZ;
-
- if (host)
- {
- /* Allocate addresses and aliases; ancount gives an upper bound for
- both. */
- addrs = malloc(ancount * sizeof(struct in_addr));
- if (!addrs)
- {
- free(hostname);
- return ARES_ENOMEM;
- }
- aliases = malloc((ancount + 1) * sizeof(char *));
- if (!aliases)
- {
- free(hostname);
- free(addrs);
- return ARES_ENOMEM;
- }
- }
- else
- {
- addrs = NULL;
- aliases = NULL;
- }
-
- naddrs = 0;
- naliases = 0;
-
- /* Examine each answer resource record (RR) in turn. */
- for (i = 0; i < (int)ancount; i++)
- {
- /* Decode the RR up to the data field. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len);
- if (status != ARES_SUCCESS)
- break;
- aptr += len;
- if (aptr + RRFIXEDSZ > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- rr_type = DNS_RR_TYPE(aptr);
- rr_class = DNS_RR_CLASS(aptr);
- rr_len = DNS_RR_LEN(aptr);
- rr_ttl = DNS_RR_TTL(aptr);
- aptr += RRFIXEDSZ;
-
- if (rr_class == C_IN && rr_type == T_A
- && rr_len == sizeof(struct in_addr)
- && strcasecmp(rr_name, hostname) == 0)
- {
- if (addrs)
- {
- if (aptr + sizeof(struct in_addr) > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- memcpy(&addrs[naddrs], aptr, sizeof(struct in_addr));
- }
- if (naddrs < max_addr_ttls)
- {
- struct ares_addrttl * const at = &addrttls[naddrs];
- if (aptr + sizeof(struct in_addr) > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- memcpy(&at->ipaddr, aptr, sizeof(struct in_addr));
- at->ttl = rr_ttl;
- }
- naddrs++;
- status = ARES_SUCCESS;
- }
-
- if (rr_class == C_IN && rr_type == T_CNAME)
- {
- /* Record the RR name as an alias. */
- if (aliases)
- aliases[naliases] = rr_name;
- else
- free(rr_name);
- naliases++;
-
- /* Decode the RR data and replace the hostname with it. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data,
- &len);
- if (status != ARES_SUCCESS)
- break;
- free(hostname);
- hostname = rr_data;
-
- /* Take the min of the TTLs we see in the CNAME chain. */
- if (cname_ttl > rr_ttl)
- cname_ttl = rr_ttl;
- }
- else
- free(rr_name);
-
- aptr += rr_len;
- if (aptr > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- }
-
- if (status == ARES_SUCCESS && naddrs == 0)
- status = ARES_ENODATA;
- if (status == ARES_SUCCESS)
- {
- /* We got our answer. */
- if (naddrttls)
- {
- const int n = naddrs < max_addr_ttls ? naddrs : max_addr_ttls;
- for (i = 0; i < n; i++)
- {
- /* Ensure that each A TTL is no larger than the CNAME TTL. */
- if (addrttls[i].ttl > cname_ttl)
- addrttls[i].ttl = cname_ttl;
- }
- *naddrttls = n;
- }
- if (aliases)
- aliases[naliases] = NULL;
- if (host)
- {
- /* Allocate memory to build the host entry. */
- hostent = malloc(sizeof(struct hostent));
- if (hostent)
- {
- hostent->h_addr_list = malloc((naddrs + 1) * sizeof(char *));
- if (hostent->h_addr_list)
- {
- /* Fill in the hostent and return successfully. */
- hostent->h_name = hostname;
- hostent->h_aliases = aliases;
- hostent->h_addrtype = AF_INET;
- hostent->h_length = sizeof(struct in_addr);
- for (i = 0; i < naddrs; i++)
- hostent->h_addr_list[i] = (char *) &addrs[i];
- hostent->h_addr_list[naddrs] = NULL;
- *host = hostent;
- return ARES_SUCCESS;
- }
- free(hostent);
- }
- status = ARES_ENOMEM;
- }
- }
- if (aliases)
- {
- for (i = 0; i < naliases; i++)
- free(aliases[i]);
- free(aliases);
- }
- free(addrs);
- free(hostname);
- return status;
-}
diff --git a/ares/ares_parse_aaaa_reply.3 b/ares/ares_parse_aaaa_reply.3
deleted file mode 100644
index 0f77c0323..000000000
--- a/ares/ares_parse_aaaa_reply.3
+++ /dev/null
@@ -1,79 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 2005 by Dominick Meglio.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PARSE_AAAA_REPLY 3 "20 Nov 2009"
-.SH NAME
-ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_parse_aaaa_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
-.B struct hostent **\fIhost\fP,
-.B struct ares_addr6ttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
-.fi
-.SH DESCRIPTION
-The
-.B ares_parse_aaaa_reply
-function parses the response to a query of type AAAA into a
-.BR "struct hostent"
-and/or an array of
-.BR "struct ares_addr6ttl" .
-The parameters
-.I abuf
-and
-.I alen
-give the contents of the response. The result is stored in allocated
-memory and a pointer to it stored into the variable pointed to by
-.IR host ,
-if host is nonnull.
-It is the caller's responsibility to free the resulting host structure
-using
-.BR ares_free_hostent (3)
-when it is no longer needed.
-.PP
-If
-.IR addrttls
-and
-.IR naddrttls
-are both nonnull,
-then up to *naddrttls
-.BR "struct ares_addr6ttl"
-records are stored in the array pointed to by addrttls,
-and then *naddrttls is set to the number of records so stored.
-Note that the memory for these records is supplied by the caller.
-.SH RETURN VALUES
-.B ares_parse_aaaa_reply
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The response was successfully parsed.
-.TP 15
-.B ARES_EBADRESP
-The response was malformatted.
-.TP 15
-.B ARES_ENODATA
-The response did not contain an answer to the query.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_gethostbyname (3),
-.BR ares_free_hostent (3)
-.SH AUTHOR
-Dominick Meglio
-.br
-Copyright 2005 by Dominick Meglio.
diff --git a/ares/ares_parse_aaaa_reply.c b/ares/ares_parse_aaaa_reply.c
deleted file mode 100644
index 8c2843f47..000000000
--- a/ares/ares_parse_aaaa_reply.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright 2005 Dominick Meglio
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "inet_net_pton.h"
-#include "ares_private.h"
-
-int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
- struct hostent **host, struct ares_addr6ttl *addrttls,
- int *naddrttls)
-{
- unsigned int qdcount, ancount;
- int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs;
- int cname_ttl = INT_MAX; /* the TTL imposed by the CNAME chain */
- int naliases;
- long len;
- const unsigned char *aptr;
- char *hostname, *rr_name, *rr_data, **aliases;
- struct ares_in6_addr *addrs;
- struct hostent *hostent;
- const int max_addr_ttls = (addrttls && naddrttls) ? *naddrttls : 0;
-
- /* Set *host to NULL for all failure cases. */
- if (host)
- *host = NULL;
- /* Same with *naddrttls. */
- if (naddrttls)
- *naddrttls = 0;
-
- /* Give up if abuf doesn't have room for a header. */
- if (alen < HFIXEDSZ)
- return ARES_EBADRESP;
-
- /* Fetch the question and answer count from the header. */
- qdcount = DNS_HEADER_QDCOUNT(abuf);
- ancount = DNS_HEADER_ANCOUNT(abuf);
- if (qdcount != 1)
- return ARES_EBADRESP;
-
- /* Expand the name from the question, and skip past the question. */
- aptr = abuf + HFIXEDSZ;
- status = ares__expand_name_for_response(aptr, abuf, alen, &hostname, &len);
- if (status != ARES_SUCCESS)
- return status;
- if (aptr + len + QFIXEDSZ > abuf + alen)
- {
- free(hostname);
- return ARES_EBADRESP;
- }
- aptr += len + QFIXEDSZ;
-
- /* Allocate addresses and aliases; ancount gives an upper bound for both. */
- if (host)
- {
- addrs = malloc(ancount * sizeof(struct ares_in6_addr));
- if (!addrs)
- {
- free(hostname);
- return ARES_ENOMEM;
- }
- aliases = malloc((ancount + 1) * sizeof(char *));
- if (!aliases)
- {
- free(hostname);
- free(addrs);
- return ARES_ENOMEM;
- }
- }
- else
- {
- addrs = NULL;
- aliases = NULL;
- }
- naddrs = 0;
- naliases = 0;
-
- /* Examine each answer resource record (RR) in turn. */
- for (i = 0; i < (int)ancount; i++)
- {
- /* Decode the RR up to the data field. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len);
- if (status != ARES_SUCCESS)
- break;
- aptr += len;
- if (aptr + RRFIXEDSZ > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- rr_type = DNS_RR_TYPE(aptr);
- rr_class = DNS_RR_CLASS(aptr);
- rr_len = DNS_RR_LEN(aptr);
- rr_ttl = DNS_RR_TTL(aptr);
- aptr += RRFIXEDSZ;
-
- if (rr_class == C_IN && rr_type == T_AAAA
- && rr_len == sizeof(struct ares_in6_addr)
- && strcasecmp(rr_name, hostname) == 0)
- {
- if (addrs)
- {
- if (aptr + sizeof(struct ares_in6_addr) > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- memcpy(&addrs[naddrs], aptr, sizeof(struct ares_in6_addr));
- }
- if (naddrs < max_addr_ttls)
- {
- struct ares_addr6ttl * const at = &addrttls[naddrs];
- if (aptr + sizeof(struct ares_in6_addr) > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- memcpy(&at->ip6addr, aptr, sizeof(struct ares_in6_addr));
- at->ttl = rr_ttl;
- }
- naddrs++;
- status = ARES_SUCCESS;
- }
-
- if (rr_class == C_IN && rr_type == T_CNAME)
- {
- /* Record the RR name as an alias. */
- if (aliases)
- aliases[naliases] = rr_name;
- else
- free(rr_name);
- naliases++;
-
- /* Decode the RR data and replace the hostname with it. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data,
- &len);
- if (status != ARES_SUCCESS)
- break;
- free(hostname);
- hostname = rr_data;
-
- /* Take the min of the TTLs we see in the CNAME chain. */
- if (cname_ttl > rr_ttl)
- cname_ttl = rr_ttl;
- }
- else
- free(rr_name);
-
- aptr += rr_len;
- if (aptr > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- }
-
- if (status == ARES_SUCCESS && naddrs == 0)
- status = ARES_ENODATA;
- if (status == ARES_SUCCESS)
- {
- /* We got our answer. */
- if (naddrttls)
- {
- const int n = naddrs < max_addr_ttls ? naddrs : max_addr_ttls;
- for (i = 0; i < n; i++)
- {
- /* Ensure that each A TTL is no larger than the CNAME TTL. */
- if (addrttls[i].ttl > cname_ttl)
- addrttls[i].ttl = cname_ttl;
- }
- *naddrttls = n;
- }
- if (aliases)
- aliases[naliases] = NULL;
- if (host)
- {
- /* Allocate memory to build the host entry. */
- hostent = malloc(sizeof(struct hostent));
- if (hostent)
- {
- hostent->h_addr_list = malloc((naddrs + 1) * sizeof(char *));
- if (hostent->h_addr_list)
- {
- /* Fill in the hostent and return successfully. */
- hostent->h_name = hostname;
- hostent->h_aliases = aliases;
- hostent->h_addrtype = AF_INET6;
- hostent->h_length = sizeof(struct ares_in6_addr);
- for (i = 0; i < naddrs; i++)
- hostent->h_addr_list[i] = (char *) &addrs[i];
- hostent->h_addr_list[naddrs] = NULL;
- *host = hostent;
- return ARES_SUCCESS;
- }
- free(hostent);
- }
- status = ARES_ENOMEM;
- }
- }
- if (aliases)
- {
- for (i = 0; i < naliases; i++)
- free(aliases[i]);
- free(aliases);
- }
- free(addrs);
- free(hostname);
- return status;
-}
diff --git a/ares/ares_parse_ns_reply.3 b/ares/ares_parse_ns_reply.3
deleted file mode 100644
index b6340ac84..000000000
--- a/ares/ares_parse_ns_reply.3
+++ /dev/null
@@ -1,66 +0,0 @@
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PARSE_NS_REPLY 3 "10 February 2007"
-.SH NAME
-ares_parse_ns_reply \- Parse a reply to a DNS query of type NS into a hostent
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_parse_ns_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
-.B struct hostent **\fIhost\fP);
-.fi
-.SH DESCRIPTION
-The
-.B ares_parse_ns_reply
-function parses the response to a query of type NS into a
-.BR "struct hostent" .
-The parameters
-.I abuf
-and
-.I alen
-give the contents of the response. The result is stored in allocated
-memory and a pointer to it stored into the variable pointed to by
-.IR host .
-The nameservers are stored into the
-.BR aliases
-field of the
-.IR host
-structure.
-It is the caller's responsibility to free the resulting host structure
-using
-.BR ares_free_hostent (3)
-when it is no longer needed.
-.SH RETURN VALUES
-.B ares_parse_ns_reply
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The response was successfully parsed.
-.TP 15
-.B ARES_EBADRESP
-The response was malformatted.
-.TP 15
-.B ARES_ENODATA
-The response did not contain an answer to the query.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_query (3),
-.BR ares_free_hostent (3)
-.SH AUTHOR
-Written by Vlad Dinulescu <vlad.dinulescu@avira.com>, on behalf of AVIRA Gmbh http://www.avira.com
diff --git a/ares/ares_parse_ns_reply.c b/ares/ares_parse_ns_reply.c
deleted file mode 100644
index 25c632994..000000000
--- a/ares/ares_parse_ns_reply.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/* $Id */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/*
- * ares_parse_ns_reply created by Vlad Dinulescu <vlad.dinulescu@avira.com>
- * on behalf of AVIRA Gmbh - http://www.avira.com
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-int ares_parse_ns_reply( const unsigned char* abuf, int alen,
- struct hostent** host )
-{
- unsigned int qdcount, ancount;
- int status, i, rr_type, rr_class, rr_len;
- int nameservers_num;
- long len;
- const unsigned char *aptr;
- char* hostname, *rr_name, *rr_data, **nameservers;
- struct hostent *hostent;
-
- /* Set *host to NULL for all failure cases. */
- *host = NULL;
-
- /* Give up if abuf doesn't have room for a header. */
- if ( alen < HFIXEDSZ )
- return ARES_EBADRESP;
-
- /* Fetch the question and answer count from the header. */
- qdcount = DNS_HEADER_QDCOUNT( abuf );
- ancount = DNS_HEADER_ANCOUNT( abuf );
- if ( qdcount != 1 )
- return ARES_EBADRESP;
-
- /* Expand the name from the question, and skip past the question. */
- aptr = abuf + HFIXEDSZ;
- status = ares__expand_name_for_response( aptr, abuf, alen, &hostname, &len);
- if ( status != ARES_SUCCESS )
- return status;
- if ( aptr + len + QFIXEDSZ > abuf + alen )
- {
- free( hostname );
- return ARES_EBADRESP;
- }
- aptr += len + QFIXEDSZ;
-
- /* Allocate nameservers array; ancount gives an upper bound */
- nameservers = malloc( ( ancount + 1 ) * sizeof( char * ) );
- if ( !nameservers )
- {
- free( hostname );
- return ARES_ENOMEM;
- }
- nameservers_num = 0;
-
- /* Examine each answer resource record (RR) in turn. */
- for ( i = 0; i < ( int ) ancount; i++ )
- {
- /* Decode the RR up to the data field. */
- status = ares__expand_name_for_response( aptr, abuf, alen, &rr_name, &len );
- if ( status != ARES_SUCCESS )
- break;
- aptr += len;
- if ( aptr + RRFIXEDSZ > abuf + alen )
- {
- status = ARES_EBADRESP;
- break;
- }
- rr_type = DNS_RR_TYPE( aptr );
- rr_class = DNS_RR_CLASS( aptr );
- rr_len = DNS_RR_LEN( aptr );
- aptr += RRFIXEDSZ;
-
- if ( rr_class == C_IN && rr_type == T_NS )
- {
- /* Decode the RR data and add it to the nameservers list */
- status = ares__expand_name_for_response( aptr, abuf, alen, &rr_data,
- &len);
- if ( status != ARES_SUCCESS )
- {
- break;
- }
-
- nameservers[nameservers_num] = malloc(strlen(rr_data)+1);
-
- if (nameservers[nameservers_num]==NULL)
- {
- free(rr_name);
- free(rr_data);
- status=ARES_ENOMEM;
- break;
- }
- strcpy(nameservers[nameservers_num],rr_data);
- free(rr_data);
-
- nameservers_num++;
- }
-
- free( rr_name );
-
- aptr += rr_len;
- if ( aptr > abuf + alen )
- {
- status = ARES_EBADRESP;
- break;
- }
- }
-
- if ( status == ARES_SUCCESS && nameservers_num == 0 )
- {
- status = ARES_ENODATA;
- }
- if ( status == ARES_SUCCESS )
- {
- /* We got our answer. Allocate memory to build the host entry. */
- nameservers[nameservers_num] = NULL;
- hostent = malloc( sizeof( struct hostent ) );
- if ( hostent )
- {
- hostent->h_addr_list = malloc( 1 * sizeof( char * ) );
- if ( hostent->h_addr_list )
- {
- /* Fill in the hostent and return successfully. */
- hostent->h_name = hostname;
- hostent->h_aliases = nameservers;
- hostent->h_addrtype = AF_INET;
- hostent->h_length = sizeof( struct in_addr );
- hostent->h_addr_list[0] = NULL;
- *host = hostent;
- return ARES_SUCCESS;
- }
- free( hostent );
- }
- status = ARES_ENOMEM;
- }
- for ( i = 0; i < nameservers_num; i++ )
- free( nameservers[i] );
- free( nameservers );
- free( hostname );
- return status;
-}
diff --git a/ares/ares_parse_ptr_reply.3 b/ares/ares_parse_ptr_reply.3
deleted file mode 100644
index 93e12f76f..000000000
--- a/ares/ares_parse_ptr_reply.3
+++ /dev/null
@@ -1,75 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PARSE_PTR_REPLY 3 "25 July 1998"
-.SH NAME
-ares_parse_ptr_reply \- Parse a reply to a DNS query of type PTR into a hostent
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_parse_ptr_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
-.B const void *\fIaddr\fP, int \fIaddrlen\fP, int \fIfamily\fP,
-.B struct hostent **\fIhost\fP);
-.fi
-.SH DESCRIPTION
-The
-.B ares_parse_ptr_reply
-function parses the response to a query of type PTR into a
-.BR "struct hostent" .
-The parameters
-.I abuf
-and
-.I alen
-give the contents of the response. The parameters
-.IR addr ,
-.IR addrlen ,
-and
-.I family
-specify which address was queried for; they are not used to verify the
-response, merely used to fill in the address of the
-.BR "struct hostent" .
-The resulting
-.B struct hostent
-is stored in allocated memory and a pointer to it stored into the
-variable pointed to by
-.IR host .
-It is the caller's responsibility to free the resulting host structure
-using
-.BR ares_free_hostent (3)
-when it is no longer needed.
-.SH RETURN VALUES
-.B ares_parse_ptr_reply
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The response was successfully parsed.
-.TP 15
-.B ARES_EBADRESP
-The response was malformatted.
-.TP 15
-.B ARES_ENODATA
-The response did not contain an answer to the query.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH SEE ALSO
-.BR ares_gethostbyaddr (3),
-.BR ares_free_hostent (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_parse_ptr_reply.c b/ares/ares_parse_ptr_reply.c
deleted file mode 100644
index 9923a9da0..000000000
--- a/ares/ares_parse_ptr_reply.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
- int addrlen, int family, struct hostent **host)
-{
- unsigned int qdcount, ancount;
- int status, i, rr_type, rr_class, rr_len;
- long len;
- const unsigned char *aptr;
- char *ptrname, *hostname, *rr_name, *rr_data;
- struct hostent *hostent;
- int aliascnt = 0;
- int alias_alloc = 8;
- char ** aliases;
-
- /* Set *host to NULL for all failure cases. */
- *host = NULL;
-
- /* Give up if abuf doesn't have room for a header. */
- if (alen < HFIXEDSZ)
- return ARES_EBADRESP;
-
- /* Fetch the question and answer count from the header. */
- qdcount = DNS_HEADER_QDCOUNT(abuf);
- ancount = DNS_HEADER_ANCOUNT(abuf);
- if (qdcount != 1)
- return ARES_EBADRESP;
-
- /* Expand the name from the question, and skip past the question. */
- aptr = abuf + HFIXEDSZ;
- status = ares__expand_name_for_response(aptr, abuf, alen, &ptrname, &len);
- if (status != ARES_SUCCESS)
- return status;
- if (aptr + len + QFIXEDSZ > abuf + alen)
- {
- free(ptrname);
- return ARES_EBADRESP;
- }
- aptr += len + QFIXEDSZ;
-
- /* Examine each answer resource record (RR) in turn. */
- hostname = NULL;
- aliases = malloc(alias_alloc * sizeof(char *));
- if (!aliases)
- {
- free(ptrname);
- return ARES_ENOMEM;
- }
- for (i = 0; i < (int)ancount; i++)
- {
- /* Decode the RR up to the data field. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_name, &len);
- if (status != ARES_SUCCESS)
- break;
- aptr += len;
- if (aptr + RRFIXEDSZ > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- rr_type = DNS_RR_TYPE(aptr);
- rr_class = DNS_RR_CLASS(aptr);
- rr_len = DNS_RR_LEN(aptr);
- aptr += RRFIXEDSZ;
-
- if (rr_class == C_IN && rr_type == T_PTR
- && strcasecmp(rr_name, ptrname) == 0)
- {
- /* Decode the RR data and set hostname to it. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data,
- &len);
- if (status != ARES_SUCCESS)
- break;
- if (hostname)
- free(hostname);
- hostname = rr_data;
- aliases[aliascnt] = malloc((strlen(rr_data)+1) * sizeof(char *));
- if (!aliases[aliascnt])
- {
- status = ARES_ENOMEM;
- break;
- }
- strncpy(aliases[aliascnt], rr_data, strlen(rr_data)+1);
- aliascnt++;
- if (aliascnt >= alias_alloc) {
- char **ptr;
- alias_alloc *= 2;
- ptr = realloc(aliases, alias_alloc * sizeof(char *));
- if(!ptr) {
- status = ARES_ENOMEM;
- break;
- }
- aliases = ptr;
- }
- }
-
- if (rr_class == C_IN && rr_type == T_CNAME)
- {
- /* Decode the RR data and replace ptrname with it. */
- status = ares__expand_name_for_response(aptr, abuf, alen, &rr_data,
- &len);
- if (status != ARES_SUCCESS)
- break;
- free(ptrname);
- ptrname = rr_data;
- }
-
- free(rr_name);
- aptr += rr_len;
- if (aptr > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- }
-
- if (status == ARES_SUCCESS && !hostname)
- status = ARES_ENODATA;
- if (status == ARES_SUCCESS)
- {
- /* We got our answer. Allocate memory to build the host entry. */
- hostent = malloc(sizeof(struct hostent));
- if (hostent)
- {
- hostent->h_addr_list = malloc(2 * sizeof(char *));
- if (hostent->h_addr_list)
- {
- hostent->h_addr_list[0] = malloc(addrlen);
- if (hostent->h_addr_list[0])
- {
- hostent->h_aliases = malloc((aliascnt+1) * sizeof (char *));
- if (hostent->h_aliases)
- {
- /* Fill in the hostent and return successfully. */
- hostent->h_name = hostname;
- for (i=0 ; i<aliascnt ; i++)
- hostent->h_aliases[i] = aliases[i];
- hostent->h_aliases[aliascnt] = NULL;
- hostent->h_addrtype = family;
- hostent->h_length = addrlen;
- memcpy(hostent->h_addr_list[0], addr, addrlen);
- hostent->h_addr_list[1] = NULL;
- *host = hostent;
- free(aliases);
- free(ptrname);
- return ARES_SUCCESS;
- }
- free(hostent->h_addr_list[0]);
- }
- free(hostent->h_addr_list);
- }
- free(hostent);
- }
- status = ARES_ENOMEM;
- }
- for (i=0 ; i<aliascnt ; i++)
- if (aliases[i])
- free(aliases[i]);
- free(aliases);
- if (hostname)
- free(hostname);
- free(ptrname);
- return status;
-}
diff --git a/ares/ares_parse_srv_reply.3 b/ares/ares_parse_srv_reply.3
deleted file mode 100644
index 9b561ffa3..000000000
--- a/ares/ares_parse_srv_reply.3
+++ /dev/null
@@ -1,81 +0,0 @@
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PARSE_SRV_REPLY 3 "4 August 2009"
-.SH NAME
-ares_parse_srv_reply \- Parse a reply to a DNS query of type SRV
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_parse_srv_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP,
-.B struct ares_srv_reply** \fIsrv_out\fP);
-.fi
-.SH DESCRIPTION
-The
-.B ares_parse_srv_reply
-function parses the response to a query of type SRV into a
-linked list of
-.I struct ares_srv_reply
-The parameters
-.I abuf
-and
-.I alen
-give the contents of the response. The result is stored in allocated
-memory and a pointer to it stored into the variable pointed to by
-.IR srv_out .
-It is the caller's responsibility to free the resulting
-.IR srv_out
-structure when it is no longer needed using the function
-.B ares_free_data
-.PP
-The structure
-.I ares_srv_reply
-contains the following fields:
-.sp
-.in +4n
-.nf
-struct ares_srv_reply {
- struct ares_srv_reply *next;
- unsigned short weight;
- unsigned short priority;
- unsigned short port;
- char *host;
-};
-.fi
-.in
-.PP
-.SH RETURN VALUES
-.B ares_parse_srv_reply
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The response was successfully parsed.
-.TP 15
-.B ARES_EBADRESP
-The response was malformatted.
-.TP 15
-.B ARES_ENODATA
-The response did not contain an answer to the query.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH AVAILABILITY
-This function was first introduced in c-ares version 1.7.0.
-.SH SEE ALSO
-.BR ares_query (3)
-.BR ares_free_data (3)
-.SH AUTHOR
-Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com
diff --git a/ares/ares_parse_srv_reply.c b/ares/ares_parse_srv_reply.c
deleted file mode 100644
index de723f393..000000000
--- a/ares/ares_parse_srv_reply.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_data.h"
-#include "ares_private.h"
-
-/* AIX portability check */
-#ifndef T_SRV
-# define T_SRV 33 /* server selection */
-#endif
-
-int
-ares_parse_srv_reply (const unsigned char *abuf, int alen,
- struct ares_srv_reply **srv_out)
-{
- unsigned int qdcount, ancount, i;
- const unsigned char *aptr, *vptr;
- int status, rr_type, rr_class, rr_len;
- long len;
- char *hostname = NULL, *rr_name = NULL;
- struct ares_srv_reply *srv_head = NULL;
- struct ares_srv_reply *srv_last = NULL;
- struct ares_srv_reply *srv_curr;
-
- /* Set *srv_out to NULL for all failure cases. */
- *srv_out = NULL;
-
- /* Give up if abuf doesn't have room for a header. */
- if (alen < HFIXEDSZ)
- return ARES_EBADRESP;
-
- /* Fetch the question and answer count from the header. */
- qdcount = DNS_HEADER_QDCOUNT (abuf);
- ancount = DNS_HEADER_ANCOUNT (abuf);
- if (qdcount != 1)
- return ARES_EBADRESP;
- if (ancount == 0)
- return ARES_ENODATA;
-
- /* Expand the name from the question, and skip past the question. */
- aptr = abuf + HFIXEDSZ;
- status = ares_expand_name (aptr, abuf, alen, &hostname, &len);
- if (status != ARES_SUCCESS)
- return status;
-
- if (aptr + len + QFIXEDSZ > abuf + alen)
- {
- free (hostname);
- return ARES_EBADRESP;
- }
- aptr += len + QFIXEDSZ;
-
- /* Examine each answer resource record (RR) in turn. */
- for (i = 0; i < ancount; i++)
- {
- /* Decode the RR up to the data field. */
- status = ares_expand_name (aptr, abuf, alen, &rr_name, &len);
- if (status != ARES_SUCCESS)
- {
- break;
- }
- aptr += len;
- if (aptr + RRFIXEDSZ > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- rr_type = DNS_RR_TYPE (aptr);
- rr_class = DNS_RR_CLASS (aptr);
- rr_len = DNS_RR_LEN (aptr);
- aptr += RRFIXEDSZ;
-
- /* Check if we are really looking at a SRV record */
- if (rr_class == C_IN && rr_type == T_SRV)
- {
- /* parse the SRV record itself */
- if (rr_len < 6)
- {
- status = ARES_EBADRESP;
- break;
- }
-
- /* Allocate storage for this SRV answer appending it to the list */
- srv_curr = ares_malloc_data(ARES_DATATYPE_SRV_REPLY);
- if (!srv_curr)
- {
- status = ARES_ENOMEM;
- break;
- }
- if (srv_last)
- {
- srv_last->next = srv_curr;
- }
- else
- {
- srv_head = srv_curr;
- }
- srv_last = srv_curr;
-
- vptr = aptr;
- srv_curr->priority = ntohs (*((unsigned short *)vptr));
- vptr += sizeof(unsigned short);
- srv_curr->weight = ntohs (*((unsigned short *)vptr));
- vptr += sizeof(unsigned short);
- srv_curr->port = ntohs (*((unsigned short *)vptr));
- vptr += sizeof(unsigned short);
-
- status = ares_expand_name (vptr, abuf, alen, &srv_curr->host, &len);
- if (status != ARES_SUCCESS)
- break;
- }
-
- /* Don't lose memory in the next iteration */
- free (rr_name);
- rr_name = NULL;
-
- /* Move on to the next record */
- aptr += rr_len;
- }
-
- if (hostname)
- free (hostname);
- if (rr_name)
- free (rr_name);
-
- /* clean up on error */
- if (status != ARES_SUCCESS)
- {
- if (srv_head)
- ares_free_data (srv_head);
- return status;
- }
-
- /* everything looks fine, return the data */
- *srv_out = srv_head;
-
- return ARES_SUCCESS;
-}
diff --git a/ares/ares_parse_txt_reply.3 b/ares/ares_parse_txt_reply.3
deleted file mode 100644
index c9926bc08..000000000
--- a/ares/ares_parse_txt_reply.3
+++ /dev/null
@@ -1,80 +0,0 @@
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PARSE_TXT_REPLY 3 "27 October 2009"
-.SH NAME
-ares_parse_txt_reply \- Parse a reply to a DNS query of type TXT
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_parse_txt_reply(const unsigned char* \fIabuf\fP, int \fIalen\fP,
-.B struct ares_txt_reply **\fItxt_out\fP);
-.fi
-.SH DESCRIPTION
-The
-.B ares_parse_txt_reply
-function parses the response to a query of type TXT into a
-linked list of
-.I struct ares_txt_reply
-The parameters
-.I abuf
-and
-.I alen
-give the contents of the response. The result is stored in allocated
-memory and a pointer to it stored into the variable pointed to by
-.IR txt_out .
-It is the caller's responsibility to free the resulting
-.IR txt_out
-structure when it is no longer needed using the function
-.B ares_free_data
-.PP
-The structure
-.I ares_txt_reply
-contains the following fields:
-.sp
-.in +4n
-.nf
-struct ares_txt_reply {
- struct ares_txt_reply *next;
- unsigned int length;
- unsigned char *txt;
-};
-.fi
-.in
-.PP
-.SH RETURN VALUES
-.B ares_parse_txt_reply
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The response was successfully parsed.
-.TP 15
-.B ARES_EBADRESP
-The response was malformatted.
-.TP 15
-.B ARES_ENODATA
-The response did not contain an answer to the query.
-.TP 15
-.B ARES_ENOMEM
-Memory was exhausted.
-.SH AVAILABILITY
-This function was first introduced in c-ares version 1.7.0.
-.SH SEE ALSO
-.BR ares_query (3)
-.BR ares_free_data (3)
-.SH AUTHOR
-Written by Jakub Hrozek <jhrozek@redhat.com>, on behalf of Red Hat, Inc http://www.redhat.com
-
diff --git a/ares/ares_parse_txt_reply.c b/ares/ares_parse_txt_reply.c
deleted file mode 100644
index 8e24e63b7..000000000
--- a/ares/ares_parse_txt_reply.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com>
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_data.h"
-#include "ares_private.h"
-
-int
-ares_parse_txt_reply (const unsigned char *abuf, int alen,
- struct ares_txt_reply **txt_out)
-{
- size_t substr_len, str_len;
- unsigned int qdcount, ancount, i;
- const unsigned char *aptr;
- const unsigned char *strptr;
- int status, rr_type, rr_class, rr_len;
- long len;
- char *hostname = NULL, *rr_name = NULL;
- struct ares_txt_reply *txt_head = NULL;
- struct ares_txt_reply *txt_last = NULL;
- struct ares_txt_reply *txt_curr;
-
- /* Set *txt_out to NULL for all failure cases. */
- *txt_out = NULL;
-
- /* Give up if abuf doesn't have room for a header. */
- if (alen < HFIXEDSZ)
- return ARES_EBADRESP;
-
- /* Fetch the question and answer count from the header. */
- qdcount = DNS_HEADER_QDCOUNT (abuf);
- ancount = DNS_HEADER_ANCOUNT (abuf);
- if (qdcount != 1)
- return ARES_EBADRESP;
- if (ancount == 0)
- return ARES_ENODATA;
-
- /* Expand the name from the question, and skip past the question. */
- aptr = abuf + HFIXEDSZ;
- status = ares_expand_name (aptr, abuf, alen, &hostname, &len);
- if (status != ARES_SUCCESS)
- return status;
-
- if (aptr + len + QFIXEDSZ > abuf + alen)
- {
- free (hostname);
- return ARES_EBADRESP;
- }
- aptr += len + QFIXEDSZ;
-
- /* Examine each answer resource record (RR) in turn. */
- for (i = 0; i < ancount; i++)
- {
- /* Decode the RR up to the data field. */
- status = ares_expand_name (aptr, abuf, alen, &rr_name, &len);
- if (status != ARES_SUCCESS)
- {
- break;
- }
- aptr += len;
- if (aptr + RRFIXEDSZ > abuf + alen)
- {
- status = ARES_EBADRESP;
- break;
- }
- rr_type = DNS_RR_TYPE (aptr);
- rr_class = DNS_RR_CLASS (aptr);
- rr_len = DNS_RR_LEN (aptr);
- aptr += RRFIXEDSZ;
-
- /* Check if we are really looking at a TXT record */
- if (rr_class == C_IN && rr_type == T_TXT)
- {
- /* Allocate storage for this TXT answer appending it to the list */
- txt_curr = ares_malloc_data(ARES_DATATYPE_TXT_REPLY);
- if (!txt_curr)
- {
- status = ARES_ENOMEM;
- break;
- }
- if (txt_last)
- {
- txt_last->next = txt_curr;
- }
- else
- {
- txt_head = txt_curr;
- }
- txt_last = txt_curr;
-
- /*
- * There may be multiple substrings in a single TXT record. Each
- * substring may be up to 255 characters in length, with a
- * "length byte" indicating the size of the substring payload.
- * RDATA contains both the length-bytes and payloads of all
- * substrings contained therein.
- */
-
- /* Compute total length to allow a single memory allocation */
- strptr = aptr;
- while (strptr < (aptr + rr_len))
- {
- substr_len = (unsigned char)*strptr;
- txt_curr->length += substr_len;
- strptr += substr_len + 1;
- }
-
- /* Including null byte */
- txt_curr->txt = malloc (txt_curr->length + 1);
- if (txt_curr->txt == NULL)
- {
- status = ARES_ENOMEM;
- break;
- }
-
- /* Step through the list of substrings, concatenating them */
- str_len = 0;
- strptr = aptr;
- while (strptr < (aptr + rr_len))
- {
- substr_len = (unsigned char)*strptr;
- strptr++;
- memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
- str_len += substr_len;
- strptr += substr_len;
- }
- /* Make sure we NULL-terminate */
- *((char *) txt_curr->txt + txt_curr->length) = '\0';
- }
-
- /* Don't lose memory in the next iteration */
- free (rr_name);
- rr_name = NULL;
-
- /* Move on to the next record */
- aptr += rr_len;
- }
-
- if (hostname)
- free (hostname);
- if (rr_name)
- free (rr_name);
-
- /* clean up on error */
- if (status != ARES_SUCCESS)
- {
- if (txt_head)
- ares_free_data (txt_head);
- return status;
- }
-
- /* everything looks fine, return the data */
- *txt_out = txt_head;
-
- return ARES_SUCCESS;
-}
diff --git a/ares/ares_private.h b/ares/ares_private.h
deleted file mode 100644
index 2766d1916..000000000
--- a/ares/ares_private.h
+++ /dev/null
@@ -1,345 +0,0 @@
-#ifndef __ARES_PRIVATE_H
-#define __ARES_PRIVATE_H
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2004-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/*
- * Define WIN32 when build target is Win32 API
- */
-
-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-#define WIN32
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-
-#ifdef WATT32
-#include <tcp.h>
-#include <sys/ioctl.h>
-#define writev(s,v,c) writev_s(s,v,c)
-#define HAVE_WRITEV 1
-#endif
-
-#ifdef NETWARE
-#include <time.h>
-#endif
-
-#define DEFAULT_TIMEOUT 5000 /* milliseconds */
-#define DEFAULT_TRIES 4
-#ifndef INADDR_NONE
-#define INADDR_NONE 0xffffffff
-#endif
-
-#if defined(WIN32) && !defined(WATT32)
-
-#define IS_NT() ((int)GetVersion() > 0)
-#define WIN_NS_9X "System\\CurrentControlSet\\Services\\VxD\\MSTCP"
-#define WIN_NS_NT_KEY "System\\CurrentControlSet\\Services\\Tcpip\\Parameters"
-#define NAMESERVER "NameServer"
-#define DHCPNAMESERVER "DhcpNameServer"
-#define DATABASEPATH "DatabasePath"
-#define WIN_PATH_HOSTS "\\hosts"
-
-#elif defined(WATT32)
-
-#define PATH_RESOLV_CONF "/dev/ENV/etc/resolv.conf"
-
-#elif defined(NETWARE)
-
-#define PATH_RESOLV_CONF "sys:/etc/resolv.cfg"
-#define PATH_HOSTS "sys:/etc/hosts"
-
-#elif defined(__riscos__)
-
-#define PATH_HOSTS "InetDBase:Hosts"
-
-#else
-
-#define PATH_RESOLV_CONF "/etc/resolv.conf"
-#ifdef ETC_INET
-#define PATH_HOSTS "/etc/inet/hosts"
-#else
-#define PATH_HOSTS "/etc/hosts"
-#endif
-
-#endif
-
-#define ARES_ID_KEY_LEN 31
-
-#include "ares_ipv6.h"
-#include "ares_llist.h"
-
-#ifndef HAVE_STRDUP
-# include "ares_strdup.h"
-# define strdup(ptr) ares_strdup(ptr)
-#endif
-
-#ifndef HAVE_STRCASECMP
-# include "ares_strcasecmp.h"
-# define strcasecmp(p1,p2) ares_strcasecmp(p1,p2)
-#endif
-
-#ifndef HAVE_STRNCASECMP
-# include "ares_strcasecmp.h"
-# define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n)
-#endif
-
-#ifndef HAVE_WRITEV
-# include "ares_writev.h"
-# define writev(s,ptr,cnt) ares_writev(s,ptr,cnt)
-#endif
-
-struct ares_addr {
- int family;
- union {
- struct in_addr addr4;
- struct ares_in6_addr addr6;
- } addr;
-};
-#define addrV4 addr.addr4
-#define addrV6 addr.addr6
-
-struct query;
-
-struct send_request {
- /* Remaining data to send */
- const unsigned char *data;
- size_t len;
-
- /* The query for which we're sending this data */
- struct query* owner_query;
- /* The buffer we're using, if we have our own copy of the packet */
- unsigned char *data_storage;
-
- /* Next request in queue */
- struct send_request *next;
-};
-
-struct server_state {
- struct ares_addr addr;
- ares_socket_t udp_socket;
- ares_socket_t tcp_socket;
-
- /* Mini-buffer for reading the length word */
- unsigned char tcp_lenbuf[2];
- int tcp_lenbuf_pos;
- int tcp_length;
-
- /* Buffer for reading actual TCP data */
- unsigned char *tcp_buffer;
- int tcp_buffer_pos;
-
- /* TCP output queue */
- struct send_request *qhead;
- struct send_request *qtail;
-
- /* Which incarnation of this connection is this? We don't want to
- * retransmit requests into the very same socket, but if the server
- * closes on us and we re-open the connection, then we do want to
- * re-send. */
- int tcp_connection_generation;
-
- /* Circular, doubly-linked list of outstanding queries to this server */
- struct list_node queries_to_server;
-
- /* Link back to owning channel */
- ares_channel channel;
-
- /* Is this server broken? We mark connections as broken when a
- * request that is queued for sending times out.
- */
- int is_broken;
-};
-
-/* State to represent a DNS query */
-struct query {
- /* Query ID from qbuf, for faster lookup, and current timeout */
- unsigned short qid;
- struct timeval timeout;
-
- /*
- * Links for the doubly-linked lists in which we insert a query.
- * These circular, doubly-linked lists that are hash-bucketed based
- * the attributes we care about, help making most important
- * operations O(1).
- */
- struct list_node queries_by_qid; /* hopefully in same cache line as qid */
- struct list_node queries_by_timeout;
- struct list_node queries_to_server;
- struct list_node all_queries;
-
- /* Query buf with length at beginning, for TCP transmission */
- unsigned char *tcpbuf;
- int tcplen;
-
- /* Arguments passed to ares_send() (qbuf points into tcpbuf) */
- const unsigned char *qbuf;
- int qlen;
- ares_callback callback;
- void *arg;
-
- /* Query status */
- int try; /* Number of times we tried this query already. */
- int server; /* Server this query has last been sent to. */
- struct query_server_info *server_info; /* per-server state */
- int using_tcp;
- int error_status;
- int timeouts; /* number of timeouts we saw for this request */
-};
-
-/* Per-server state for a query */
-struct query_server_info {
- int skip_server; /* should we skip server, due to errors, etc? */
- int tcp_connection_generation; /* into which TCP connection did we send? */
-};
-
-/* An IP address pattern; matches an IP address X if X & mask == addr */
-#define PATTERN_MASK 0x1
-#define PATTERN_CIDR 0x2
-
-struct apattern {
- union
- {
- struct in_addr addr4;
- struct ares_in6_addr addr6;
- } addr;
- union
- {
- struct in_addr addr4;
- struct ares_in6_addr addr6;
- unsigned short bits;
- } mask;
- int family;
- unsigned short type;
-};
-
-typedef struct rc4_key
-{
- unsigned char state[256];
- unsigned char x;
- unsigned char y;
-} rc4_key;
-
-struct ares_channeldata {
- /* Configuration data */
- int flags;
- int timeout; /* in milliseconds */
- int tries;
- int ndots;
- int rotate; /* if true, all servers specified are used */
- int udp_port;
- int tcp_port;
- int socket_send_buffer_size;
- int socket_receive_buffer_size;
- char **domains;
- int ndomains;
- struct apattern *sortlist;
- int nsort;
- char *lookups;
-
- int optmask; /* the option bitfield passed in at init time */
-
- /* Server addresses and communications state */
- struct server_state *servers;
- int nservers;
-
- /* ID to use for next query */
- unsigned short next_id;
- /* key to use when generating new ids */
- rc4_key id_key;
-
- /* Generation number to use for the next TCP socket open/close */
- int tcp_connection_generation;
-
- /* The time at which we last called process_timeouts(). Uses integer seconds
- just to draw the line somewhere. */
- time_t last_timeout_processed;
-
- /* Last server we sent a query to. */
- int last_server;
-
- /* Circular, doubly-linked list of queries, bucketed various ways.... */
- /* All active queries in a single list: */
- struct list_node all_queries;
- /* Queries bucketed by qid, for quickly dispatching DNS responses: */
-#define ARES_QID_TABLE_SIZE 2048
- struct list_node queries_by_qid[ARES_QID_TABLE_SIZE];
- /* Queries bucketed by timeout, for quickly handling timeouts: */
-#define ARES_TIMEOUT_TABLE_SIZE 1024
- struct list_node queries_by_timeout[ARES_TIMEOUT_TABLE_SIZE];
-
- ares_sock_state_cb sock_state_cb;
- void *sock_state_cb_data;
-
- ares_sock_create_callback sock_create_cb;
- void *sock_create_cb_data;
-};
-
-/* return true if now is exactly check time or later */
-int ares__timedout(struct timeval *now,
- struct timeval *check);
-/* add the specific number of milliseconds to the time in the first argument */
-int ares__timeadd(struct timeval *now,
- int millisecs);
-/* return time offset between now and (future) check, in milliseconds */
-long ares__timeoffset(struct timeval *now,
- struct timeval *check);
-/* returns ARES_SUCCESS if library has been initialized */
-int ares_library_initialized(void);
-void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
-void ares__send_query(ares_channel channel, struct query *query,
- struct timeval *now);
-void ares__close_sockets(ares_channel channel, struct server_state *server);
-int ares__get_hostent(FILE *fp, int family, struct hostent **host);
-int ares__read_line(FILE *fp, char **buf, size_t *bufsize);
-void ares__free_query(struct query *query);
-unsigned short ares__generate_new_id(rc4_key* key);
-struct timeval ares__tvnow(void);
-int ares__expand_name_for_response(const unsigned char *encoded,
- const unsigned char *abuf, int alen,
- char **s, long *enclen);
-void ares__init_servers_state(ares_channel channel);
-void ares__destroy_servers_state(ares_channel channel);
-#if 0 /* Not used */
-long ares__tvdiff(struct timeval t1, struct timeval t2);
-#endif
-
-#define ARES_SWAP_BYTE(a,b) \
- { unsigned char swapByte = *(a); *(a) = *(b); *(b) = swapByte; }
-
-#define SOCK_STATE_CALLBACK(c, s, r, w) \
- do { \
- if ((c)->sock_state_cb) \
- (c)->sock_state_cb((c)->sock_state_cb_data, (s), (r), (w)); \
- } while (0)
-
-#ifdef CURLDEBUG
-/* This is low-level hard-hacking memory leak tracking and similar. Using the
- libcurl lowlevel code from within library is ugly and only works when
- c-ares is built and linked with a similarly curldebug-enabled libcurl,
- but we do this anyway for convenience. */
-#include "../lib/memdebug.h"
-#endif
-
-#endif /* __ARES_PRIVATE_H */
diff --git a/ares/ares_process.3 b/ares/ares_process.3
deleted file mode 100644
index c9cd5477f..000000000
--- a/ares/ares_process.3
+++ /dev/null
@@ -1,81 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_PROCESS 3 "25 July 1998"
-.SH NAME
-ares_process \- Process events for name resolution
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_process(ares_channel \fIchannel\fP, fd_set *\fIread_fds\fP,
-.B fd_set *\fIwrite_fds\fP)
-.fi
-.PP
-.B void ares_process_fd(ares_channel \fIchannel\fP,
-.B ares_socket_t \fIread_fd\fP,
-.B ares_socket_t \fIwrite_fd\fP)
-.fi
-.SH DESCRIPTION
-The \fBares_process(3)\fP function handles input/output events and timeouts
-associated with queries pending on the name service channel identified by
-.IR channel .
-The file descriptor sets pointed to by \fIread_fds\fP and \fIwrite_fds\fP
-should have file descriptors set in them according to whether the file
-descriptors specified by \fIares_fds(3)\fP are ready for reading and writing.
-(The easiest way to determine this information is to invoke
-.B select
-with a timeout no greater than the timeout given by \fIares_timeout(3)\fP ).
-.PP
-The
-.B ares_process
-function will invoke callbacks for pending queries if they complete
-successfully or fail.
-
-\fBares_process_fd(3)\fP works the same way but acts and operates only on the
-specific file descriptors (sockets) you pass in to the function. Use
-ARES_SOCKET_BAD for "no action". This function is of course provided to allow
-users of c-ares to void select() in their applications and within c-ares.
-.SS EXAMPLE
-The following code fragment waits for all pending queries on a channel
-to complete:
-.PP
-.RS
-.nf
-int nfds, count;
-fd_set readers, writers;
-struct timeval tv, *tvp;
-
-while (1)
- {
- FD_ZERO(&readers);
- FD_ZERO(&writers);
- nfds = ares_fds(channel, &readers, &writers);
- if (nfds == 0)
- break;
- tvp = ares_timeout(channel, NULL, &tv);
- count = select(nfds, &readers, &writers, NULL, tvp);
- ares_process(channel, &readers, &writers);
- }
-.fi
-.RE
-.SH SEE ALSO
-.BR ares_fds (3),
-.BR ares_timeout (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_process.c b/ares/ares_process.c
deleted file mode 100644
index ab0b79dc6..000000000
--- a/ares/ares_process.c
+++ /dev/null
@@ -1,1262 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- * Copyright (C) 2004-2010 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_NETINET_TCP_H
-# include <netinet/tcp.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif
-#ifdef NETWARE
-# include <sys/filio.h>
-#endif
-
-#include <assert.h>
-#include <string.h>
-#include <stdlib.h>
-#include <fcntl.h>
-#include <time.h>
-#include <errno.h>
-
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-
-static int try_again(int errnum);
-static void write_tcp_data(ares_channel channel, fd_set *write_fds,
- ares_socket_t write_fd, struct timeval *now);
-static void read_tcp_data(ares_channel channel, fd_set *read_fds,
- ares_socket_t read_fd, struct timeval *now);
-static void read_udp_packets(ares_channel channel, fd_set *read_fds,
- ares_socket_t read_fd, struct timeval *now);
-static void advance_tcp_send_queue(ares_channel channel, int whichserver,
- ssize_t num_bytes);
-static void process_timeouts(ares_channel channel, struct timeval *now);
-static void process_broken_connections(ares_channel channel,
- struct timeval *now);
-static void process_answer(ares_channel channel, unsigned char *abuf,
- int alen, int whichserver, int tcp,
- struct timeval *now);
-static void handle_error(ares_channel channel, int whichserver,
- struct timeval *now);
-static void skip_server(ares_channel channel, struct query *query,
- int whichserver);
-static void next_server(ares_channel channel, struct query *query,
- struct timeval *now);
-static int configure_socket(ares_socket_t s, ares_channel channel);
-static int open_tcp_socket(ares_channel channel, struct server_state *server);
-static int open_udp_socket(ares_channel channel, struct server_state *server);
-static int same_questions(const unsigned char *qbuf, int qlen,
- const unsigned char *abuf, int alen);
-static int same_address(struct sockaddr *sa, struct ares_addr *aa);
-static void end_query(ares_channel channel, struct query *query, int status,
- unsigned char *abuf, int alen);
-
-/* return true if now is exactly check time or later */
-int ares__timedout(struct timeval *now,
- struct timeval *check)
-{
- long secs = (now->tv_sec - check->tv_sec);
-
- if(secs > 0)
- return 1; /* yes, timed out */
- if(secs < 0)
- return 0; /* nope, not timed out */
-
- /* if the full seconds were identical, check the sub second parts */
- return (now->tv_usec - check->tv_usec >= 0);
-}
-
-/* add the specific number of milliseconds to the time in the first argument */
-int ares__timeadd(struct timeval *now,
- int millisecs)
-{
- now->tv_sec += millisecs/1000;
- now->tv_usec += (millisecs%1000)*1000;
-
- if(now->tv_usec >= 1000000) {
- ++(now->tv_sec);
- now->tv_usec -= 1000000;
- }
-
- return 0;
-}
-
-/* return time offset between now and (future) check, in milliseconds */
-long ares__timeoffset(struct timeval *now,
- struct timeval *check)
-{
- return (check->tv_sec - now->tv_sec)*1000 +
- (check->tv_usec - now->tv_usec)/1000;
-}
-
-
-/*
- * generic process function
- */
-static void processfds(ares_channel channel,
- fd_set *read_fds, ares_socket_t read_fd,
- fd_set *write_fds, ares_socket_t write_fd)
-{
- struct timeval now = ares__tvnow();
-
- write_tcp_data(channel, write_fds, write_fd, &now);
- read_tcp_data(channel, read_fds, read_fd, &now);
- read_udp_packets(channel, read_fds, read_fd, &now);
- process_timeouts(channel, &now);
- process_broken_connections(channel, &now);
-}
-
-/* Something interesting happened on the wire, or there was a timeout.
- * See what's up and respond accordingly.
- */
-void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
-{
- processfds(channel, read_fds, ARES_SOCKET_BAD, write_fds, ARES_SOCKET_BAD);
-}
-
-/* Something interesting happened on the wire, or there was a timeout.
- * See what's up and respond accordingly.
- */
-void ares_process_fd(ares_channel channel,
- ares_socket_t read_fd, /* use ARES_SOCKET_BAD or valid
- file descriptors */
- ares_socket_t write_fd)
-{
- processfds(channel, NULL, read_fd, NULL, write_fd);
-}
-
-
-/* Return 1 if the specified error number describes a readiness error, or 0
- * otherwise. This is mostly for HP-UX, which could return EAGAIN or
- * EWOULDBLOCK. See this man page
- *
- * http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html?
- * manpage=/usr/share/man/man2.Z/send.2
- */
-static int try_again(int errnum)
-{
-#if !defined EWOULDBLOCK && !defined EAGAIN
-#error "Neither EWOULDBLOCK nor EAGAIN defined"
-#endif
- switch (errnum)
- {
-#ifdef EWOULDBLOCK
- case EWOULDBLOCK:
- return 1;
-#endif
-#if defined EAGAIN && EAGAIN != EWOULDBLOCK
- case EAGAIN:
- return 1;
-#endif
- }
- return 0;
-}
-
-/* If any TCP sockets select true for writing, write out queued data
- * we have for them.
- */
-static void write_tcp_data(ares_channel channel,
- fd_set *write_fds,
- ares_socket_t write_fd,
- struct timeval *now)
-{
- struct server_state *server;
- struct send_request *sendreq;
- struct iovec *vec;
- int i;
- ssize_t scount;
- ssize_t wcount;
- size_t n;
-
- if(!write_fds && (write_fd == ARES_SOCKET_BAD))
- /* no possible action */
- return;
-
- for (i = 0; i < channel->nservers; i++)
- {
- /* Make sure server has data to send and is selected in write_fds or
- write_fd. */
- server = &channel->servers[i];
- if (!server->qhead || server->tcp_socket == ARES_SOCKET_BAD ||
- server->is_broken)
- continue;
-
- if(write_fds) {
- if(!FD_ISSET(server->tcp_socket, write_fds))
- continue;
- }
- else {
- if(server->tcp_socket != write_fd)
- continue;
- }
-
- if(write_fds)
- /* If there's an error and we close this socket, then open
- * another with the same fd to talk to another server, then we
- * don't want to think that it was the new socket that was
- * ready. This is not disastrous, but is likely to result in
- * extra system calls and confusion. */
- FD_CLR(server->tcp_socket, write_fds);
-
- /* Count the number of send queue items. */
- n = 0;
- for (sendreq = server->qhead; sendreq; sendreq = sendreq->next)
- n++;
-
- /* Allocate iovecs so we can send all our data at once. */
- vec = malloc(n * sizeof(struct iovec));
- if (vec)
- {
- /* Fill in the iovecs and send. */
- n = 0;
- for (sendreq = server->qhead; sendreq; sendreq = sendreq->next)
- {
- vec[n].iov_base = (char *) sendreq->data;
- vec[n].iov_len = sendreq->len;
- n++;
- }
- wcount = (ssize_t)writev(server->tcp_socket, vec, (int)n);
- free(vec);
- if (wcount < 0)
- {
- if (!try_again(SOCKERRNO))
- handle_error(channel, i, now);
- continue;
- }
-
- /* Advance the send queue by as many bytes as we sent. */
- advance_tcp_send_queue(channel, i, wcount);
- }
- else
- {
- /* Can't allocate iovecs; just send the first request. */
- sendreq = server->qhead;
-
- scount = swrite(server->tcp_socket, sendreq->data, sendreq->len);
- if (scount < 0)
- {
- if (!try_again(SOCKERRNO))
- handle_error(channel, i, now);
- continue;
- }
-
- /* Advance the send queue by as many bytes as we sent. */
- advance_tcp_send_queue(channel, i, scount);
- }
- }
-}
-
-/* Consume the given number of bytes from the head of the TCP send queue. */
-static void advance_tcp_send_queue(ares_channel channel, int whichserver,
- ssize_t num_bytes)
-{
- struct send_request *sendreq;
- struct server_state *server = &channel->servers[whichserver];
- while (num_bytes > 0)
- {
- sendreq = server->qhead;
- if ((size_t)num_bytes >= sendreq->len)
- {
- num_bytes -= sendreq->len;
- server->qhead = sendreq->next;
- if (server->qhead == NULL)
- {
- SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 0);
- server->qtail = NULL;
- }
- if (sendreq->data_storage != NULL)
- free(sendreq->data_storage);
- free(sendreq);
- }
- else
- {
- sendreq->data += num_bytes;
- sendreq->len -= num_bytes;
- num_bytes = 0;
- }
- }
-}
-
-/* If any TCP socket selects true for reading, read some data,
- * allocate a buffer if we finish reading the length word, and process
- * a packet if we finish reading one.
- */
-static void read_tcp_data(ares_channel channel, fd_set *read_fds,
- ares_socket_t read_fd, struct timeval *now)
-{
- struct server_state *server;
- int i;
- ssize_t count;
-
- if(!read_fds && (read_fd == ARES_SOCKET_BAD))
- /* no possible action */
- return;
-
- for (i = 0; i < channel->nservers; i++)
- {
- /* Make sure the server has a socket and is selected in read_fds. */
- server = &channel->servers[i];
- if (server->tcp_socket == ARES_SOCKET_BAD || server->is_broken)
- continue;
-
- if(read_fds) {
- if(!FD_ISSET(server->tcp_socket, read_fds))
- continue;
- }
- else {
- if(server->tcp_socket != read_fd)
- continue;
- }
-
- if(read_fds)
- /* If there's an error and we close this socket, then open
- * another with the same fd to talk to another server, then we
- * don't want to think that it was the new socket that was
- * ready. This is not disastrous, but is likely to result in
- * extra system calls and confusion. */
- FD_CLR(server->tcp_socket, read_fds);
-
- if (server->tcp_lenbuf_pos != 2)
- {
- /* We haven't yet read a length word, so read that (or
- * what's left to read of it).
- */
- count = sread(server->tcp_socket,
- server->tcp_lenbuf + server->tcp_lenbuf_pos,
- 2 - server->tcp_lenbuf_pos);
- if (count <= 0)
- {
- if (!(count == -1 && try_again(SOCKERRNO)))
- handle_error(channel, i, now);
- continue;
- }
-
- server->tcp_lenbuf_pos += (int)count;
- if (server->tcp_lenbuf_pos == 2)
- {
- /* We finished reading the length word. Decode the
- * length and allocate a buffer for the data.
- */
- server->tcp_length = server->tcp_lenbuf[0] << 8
- | server->tcp_lenbuf[1];
- server->tcp_buffer = malloc(server->tcp_length);
- if (!server->tcp_buffer)
- handle_error(channel, i, now);
- server->tcp_buffer_pos = 0;
- }
- }
- else
- {
- /* Read data into the allocated buffer. */
- count = sread(server->tcp_socket,
- server->tcp_buffer + server->tcp_buffer_pos,
- server->tcp_length - server->tcp_buffer_pos);
- if (count <= 0)
- {
- if (!(count == -1 && try_again(SOCKERRNO)))
- handle_error(channel, i, now);
- continue;
- }
-
- server->tcp_buffer_pos += (int)count;
- if (server->tcp_buffer_pos == server->tcp_length)
- {
- /* We finished reading this answer; process it and
- * prepare to read another length word.
- */
- process_answer(channel, server->tcp_buffer, server->tcp_length,
- i, 1, now);
- if (server->tcp_buffer)
- free(server->tcp_buffer);
- server->tcp_buffer = NULL;
- server->tcp_lenbuf_pos = 0;
- server->tcp_buffer_pos = 0;
- }
- }
- }
-}
-
-/* If any UDP sockets select true for reading, process them. */
-static void read_udp_packets(ares_channel channel, fd_set *read_fds,
- ares_socket_t read_fd, struct timeval *now)
-{
- struct server_state *server;
- int i;
- ssize_t count;
- unsigned char buf[PACKETSZ + 1];
-#ifdef HAVE_RECVFROM
- ares_socklen_t fromlen;
- union {
- struct sockaddr_in sa4;
- struct sockaddr_in6 sa6;
- } from;
-#endif
-
- if(!read_fds && (read_fd == ARES_SOCKET_BAD))
- /* no possible action */
- return;
-
- for (i = 0; i < channel->nservers; i++)
- {
- /* Make sure the server has a socket and is selected in read_fds. */
- server = &channel->servers[i];
-
- if (server->udp_socket == ARES_SOCKET_BAD || server->is_broken)
- continue;
-
- if(read_fds) {
- if(!FD_ISSET(server->udp_socket, read_fds))
- continue;
- }
- else {
- if(server->udp_socket != read_fd)
- continue;
- }
-
- if(read_fds)
- /* If there's an error and we close this socket, then open
- * another with the same fd to talk to another server, then we
- * don't want to think that it was the new socket that was
- * ready. This is not disastrous, but is likely to result in
- * extra system calls and confusion. */
- FD_CLR(server->udp_socket, read_fds);
-
- /* To reduce event loop overhead, read and process as many
- * packets as we can. */
- do {
-#ifdef HAVE_RECVFROM
- if (server->addr.family == AF_INET)
- fromlen = sizeof(from.sa4);
- else
- fromlen = sizeof(from.sa6);
- count = (ssize_t)recvfrom(server->udp_socket, (void *)buf, sizeof(buf),
- 0, (struct sockaddr *)&from, &fromlen);
-#else
- count = sread(server->udp_socket, buf, sizeof(buf));
-#endif
- if (count == -1 && try_again(SOCKERRNO))
- continue;
- else if (count <= 0)
- handle_error(channel, i, now);
-#ifdef HAVE_RECVFROM
- else if (!same_address((struct sockaddr *)&from, &server->addr))
- /* The address the response comes from does not match
- * the address we sent the request to. Someone may be
- * attempting to perform a cache poisoning attack. */
- break;
-#endif
- else
- process_answer(channel, buf, (int)count, i, 0, now);
- } while (count > 0);
- }
-}
-
-/* If any queries have timed out, note the timeout and move them on. */
-static void process_timeouts(ares_channel channel, struct timeval *now)
-{
- time_t t; /* the time of the timeouts we're processing */
- struct query *query;
- struct list_node* list_head;
- struct list_node* list_node;
-
- /* Process all the timeouts that have fired since the last time we
- * processed timeouts. If things are going well, then we'll have
- * hundreds/thousands of queries that fall into future buckets, and
- * only a handful of requests that fall into the "now" bucket, so
- * this should be quite quick.
- */
- for (t = channel->last_timeout_processed; t <= now->tv_sec; t++)
- {
- list_head = &(channel->queries_by_timeout[t % ARES_TIMEOUT_TABLE_SIZE]);
- for (list_node = list_head->next; list_node != list_head; )
- {
- query = list_node->data;
- list_node = list_node->next; /* in case the query gets deleted */
- if (query->timeout.tv_sec && ares__timedout(now, &query->timeout))
- {
- query->error_status = ARES_ETIMEOUT;
- ++query->timeouts;
- next_server(channel, query, now);
- }
- }
- }
- channel->last_timeout_processed = now->tv_sec;
-}
-
-/* Handle an answer from a server. */
-static void process_answer(ares_channel channel, unsigned char *abuf,
- int alen, int whichserver, int tcp,
- struct timeval *now)
-{
- int tc, rcode;
- unsigned short id;
- struct query *query;
- struct list_node* list_head;
- struct list_node* list_node;
-
- /* If there's no room in the answer for a header, we can't do much
- * with it. */
- if (alen < HFIXEDSZ)
- return;
-
- /* Grab the query ID, truncate bit, and response code from the packet. */
- id = DNS_HEADER_QID(abuf);
- tc = DNS_HEADER_TC(abuf);
- rcode = DNS_HEADER_RCODE(abuf);
-
- /* Find the query corresponding to this packet. The queries are
- * hashed/bucketed by query id, so this lookup should be quick.
- * Note that both the query id and the questions must be the same;
- * when the query id wraps around we can have multiple outstanding
- * queries with the same query id, so we need to check both the id and
- * question.
- */
- query = NULL;
- list_head = &(channel->queries_by_qid[id % ARES_QID_TABLE_SIZE]);
- for (list_node = list_head->next; list_node != list_head;
- list_node = list_node->next)
- {
- struct query *q = list_node->data;
- if ((q->qid == id) && same_questions(q->qbuf, q->qlen, abuf, alen))
- {
- query = q;
- break;
- }
- }
- if (!query)
- return;
-
- /* If we got a truncated UDP packet and are not ignoring truncation,
- * don't accept the packet, and switch the query to TCP if we hadn't
- * done so already.
- */
- if ((tc || alen > PACKETSZ) && !tcp && !(channel->flags & ARES_FLAG_IGNTC))
- {
- if (!query->using_tcp)
- {
- query->using_tcp = 1;
- ares__send_query(channel, query, now);
- }
- return;
- }
-
- /* Limit alen to PACKETSZ if we aren't using TCP (only relevant if we
- * are ignoring truncation.
- */
- if (alen > PACKETSZ && !tcp)
- alen = PACKETSZ;
-
- /* If we aren't passing through all error packets, discard packets
- * with SERVFAIL, NOTIMP, or REFUSED response codes.
- */
- if (!(channel->flags & ARES_FLAG_NOCHECKRESP))
- {
- if (rcode == SERVFAIL || rcode == NOTIMP || rcode == REFUSED)
- {
- skip_server(channel, query, whichserver);
- if (query->server == whichserver)
- next_server(channel, query, now);
- return;
- }
- }
-
- end_query(channel, query, ARES_SUCCESS, abuf, alen);
-}
-
-/* Close all the connections that are no longer usable. */
-static void process_broken_connections(ares_channel channel,
- struct timeval *now)
-{
- int i;
- for (i = 0; i < channel->nservers; i++)
- {
- struct server_state *server = &channel->servers[i];
- if (server->is_broken)
- {
- handle_error(channel, i, now);
- }
- }
-}
-
-static void handle_error(ares_channel channel, int whichserver,
- struct timeval *now)
-{
- struct server_state *server;
- struct query *query;
- struct list_node list_head;
- struct list_node* list_node;
-
- server = &channel->servers[whichserver];
-
- /* Reset communications with this server. */
- ares__close_sockets(channel, server);
-
- /* Tell all queries talking to this server to move on and not try
- * this server again. We steal the current list of queries that were
- * in-flight to this server, since when we call next_server this can
- * cause the queries to be re-sent to this server, which will
- * re-insert these queries in that same server->queries_to_server
- * list.
- */
- ares__init_list_head(&list_head);
- ares__swap_lists(&list_head, &(server->queries_to_server));
- for (list_node = list_head.next; list_node != &list_head; )
- {
- query = list_node->data;
- list_node = list_node->next; /* in case the query gets deleted */
- assert(query->server == whichserver);
- skip_server(channel, query, whichserver);
- next_server(channel, query, now);
- }
- /* Each query should have removed itself from our temporary list as
- * it re-sent itself or finished up...
- */
- assert(ares__is_list_empty(&list_head));
-}
-
-static void skip_server(ares_channel channel, struct query *query,
- int whichserver) {
- /* The given server gave us problems with this query, so if we have
- * the luxury of using other servers, then let's skip the
- * potentially broken server and just use the others. If we only
- * have one server and we need to retry then we should just go ahead
- * and re-use that server, since it's our only hope; perhaps we
- * just got unlucky, and retrying will work (eg, the server timed
- * out our TCP connection just as we were sending another request).
- */
- if (channel->nservers > 1)
- {
- query->server_info[whichserver].skip_server = 1;
- }
-}
-
-static void next_server(ares_channel channel, struct query *query,
- struct timeval *now)
-{
- /* We need to try each server channel->tries times. We have channel->nservers
- * servers to try. In total, we need to do channel->nservers * channel->tries
- * attempts. Use query->try to remember how many times we already attempted
- * this query. Use modular arithmetic to find the next server to try. */
- while (++(query->try) < (channel->nservers * channel->tries))
- {
- struct server_state *server;
-
- /* Move on to the next server. */
- query->server = (query->server + 1) % channel->nservers;
- server = &channel->servers[query->server];
-
- /* We don't want to use this server if (1) we decided this
- * connection is broken, and thus about to be closed, (2)
- * we've decided to skip this server because of earlier
- * errors we encountered, or (3) we already sent this query
- * over this exact connection.
- */
- if (!server->is_broken &&
- !query->server_info[query->server].skip_server &&
- !(query->using_tcp &&
- (query->server_info[query->server].tcp_connection_generation ==
- server->tcp_connection_generation)))
- {
- ares__send_query(channel, query, now);
- return;
- }
-
- /* You might think that with TCP we only need one try. However,
- * even when using TCP, servers can time-out our connection just
- * as we're sending a request, or close our connection because
- * they die, or never send us a reply because they get wedged or
- * tickle a bug that drops our request.
- */
- }
-
- /* If we are here, all attempts to perform query failed. */
- end_query(channel, query, query->error_status, NULL, 0);
-}
-
-void ares__send_query(ares_channel channel, struct query *query,
- struct timeval *now)
-{
- struct send_request *sendreq;
- struct server_state *server;
- int timeplus;
-
- server = &channel->servers[query->server];
- if (query->using_tcp)
- {
- /* Make sure the TCP socket for this server is set up and queue
- * a send request.
- */
- if (server->tcp_socket == ARES_SOCKET_BAD)
- {
- if (open_tcp_socket(channel, server) == -1)
- {
- skip_server(channel, query, query->server);
- next_server(channel, query, now);
- return;
- }
- }
- sendreq = calloc(1, sizeof(struct send_request));
- if (!sendreq)
- {
- end_query(channel, query, ARES_ENOMEM, NULL, 0);
- return;
- }
- /* To make the common case fast, we avoid copies by using the
- * query's tcpbuf for as long as the query is alive. In the rare
- * case where the query ends while it's queued for transmission,
- * then we give the sendreq its own copy of the request packet
- * and put it in sendreq->data_storage.
- */
- sendreq->data_storage = NULL;
- sendreq->data = query->tcpbuf;
- sendreq->len = query->tcplen;
- sendreq->owner_query = query;
- sendreq->next = NULL;
- if (server->qtail)
- server->qtail->next = sendreq;
- else
- {
- SOCK_STATE_CALLBACK(channel, server->tcp_socket, 1, 1);
- server->qhead = sendreq;
- }
- server->qtail = sendreq;
- query->server_info[query->server].tcp_connection_generation =
- server->tcp_connection_generation;
- }
- else
- {
- if (server->udp_socket == ARES_SOCKET_BAD)
- {
- if (open_udp_socket(channel, server) == -1)
- {
- skip_server(channel, query, query->server);
- next_server(channel, query, now);
- return;
- }
- }
- if (swrite(server->udp_socket, query->qbuf, query->qlen) == -1)
- {
- /* FIXME: Handle EAGAIN here since it likely can happen. */
- skip_server(channel, query, query->server);
- next_server(channel, query, now);
- return;
- }
- }
- timeplus = channel->timeout << (query->try / channel->nservers);
- timeplus = (timeplus * (9 + (rand () & 7))) / 16;
- query->timeout = *now;
- ares__timeadd(&query->timeout,
- timeplus);
- /* Keep track of queries bucketed by timeout, so we can process
- * timeout events quickly.
- */
- ares__remove_from_list(&(query->queries_by_timeout));
- ares__insert_in_list(
- &(query->queries_by_timeout),
- &(channel->queries_by_timeout[query->timeout.tv_sec %
- ARES_TIMEOUT_TABLE_SIZE]));
-
- /* Keep track of queries bucketed by server, so we can process server
- * errors quickly.
- */
- ares__remove_from_list(&(query->queries_to_server));
- ares__insert_in_list(&(query->queries_to_server),
- &(server->queries_to_server));
-}
-
-/*
- * setsocknonblock sets the given socket to either blocking or non-blocking
- * mode based on the 'nonblock' boolean argument. This function is highly
- * portable.
- */
-static int setsocknonblock(ares_socket_t sockfd, /* operate on this */
- int nonblock /* TRUE or FALSE */)
-{
-#if defined(USE_BLOCKING_SOCKETS)
-
- return 0; /* returns success */
-
-#elif defined(HAVE_FCNTL_O_NONBLOCK)
-
- /* most recent unix versions */
- int flags;
- flags = fcntl(sockfd, F_GETFL, 0);
- if (FALSE != nonblock)
- return fcntl(sockfd, F_SETFL, flags | O_NONBLOCK);
- else
- return fcntl(sockfd, F_SETFL, flags & (~O_NONBLOCK));
-
-#elif defined(HAVE_IOCTL_FIONBIO)
-
- /* older unix versions */
- int flags;
- flags = nonblock;
- return ioctl(sockfd, FIONBIO, &flags);
-
-#elif defined(HAVE_IOCTLSOCKET_FIONBIO)
-
-#ifdef WATT32
- char flags;
-#else
- /* Windows */
- unsigned long flags;
-#endif
- flags = nonblock;
- return ioctlsocket(sockfd, FIONBIO, &flags);
-
-#elif defined(HAVE_IOCTLSOCKET_CAMEL_FIONBIO)
-
- /* Amiga */
- return IoctlSocket(sockfd, FIONBIO, (long)nonblock);
-
-#elif defined(HAVE_SETSOCKOPT_SO_NONBLOCK)
-
- /* BeOS */
- long b = nonblock ? 1 : 0;
- return setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &b, sizeof(b));
-
-#else
-# error "no non-blocking method was found/used/set"
-#endif
-}
-
-static int configure_socket(ares_socket_t s, ares_channel channel)
-{
- setsocknonblock(s, TRUE);
-
-#if defined(FD_CLOEXEC) && !defined(MSDOS)
- /* Configure the socket fd as close-on-exec. */
- if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1)
- return -1;
-#endif
-
- /* Set the socket's send and receive buffer sizes. */
- if ((channel->socket_send_buffer_size > 0) &&
- setsockopt(s, SOL_SOCKET, SO_SNDBUF,
- (void *)&channel->socket_send_buffer_size,
- sizeof(channel->socket_send_buffer_size)) == -1)
- return -1;
-
- if ((channel->socket_receive_buffer_size > 0) &&
- setsockopt(s, SOL_SOCKET, SO_RCVBUF,
- (void *)&channel->socket_receive_buffer_size,
- sizeof(channel->socket_receive_buffer_size)) == -1)
- return -1;
-
- return 0;
- }
-
-static int open_tcp_socket(ares_channel channel, struct server_state *server)
-{
- ares_socket_t s;
- int opt;
- ares_socklen_t salen;
- union {
- struct sockaddr_in sa4;
- struct sockaddr_in6 sa6;
- } saddr;
- struct sockaddr *sa;
-
- switch (server->addr.family)
- {
- case AF_INET:
- sa = (void *)&saddr.sa4;
- salen = sizeof(saddr.sa4);
- memset(sa, 0, salen);
- saddr.sa4.sin_family = AF_INET;
- saddr.sa4.sin_port = (unsigned short)(channel->tcp_port & 0xffff);
- memcpy(&saddr.sa4.sin_addr, &server->addr.addrV4,
- sizeof(server->addr.addrV4));
- break;
- case AF_INET6:
- sa = (void *)&saddr.sa6;
- salen = sizeof(saddr.sa6);
- memset(sa, 0, salen);
- saddr.sa6.sin6_family = AF_INET6;
- saddr.sa6.sin6_port = (unsigned short)(channel->tcp_port & 0xffff);
- memcpy(&saddr.sa6.sin6_addr, &server->addr.addrV6,
- sizeof(server->addr.addrV6));
- break;
- default:
- return -1;
- }
-
- /* Acquire a socket. */
- s = socket(server->addr.family, SOCK_STREAM, 0);
- if (s == ARES_SOCKET_BAD)
- return -1;
-
- /* Configure it. */
- if (configure_socket(s, channel) < 0)
- {
- sclose(s);
- return -1;
- }
-
-#ifdef TCP_NODELAY
- /*
- * Disable the Nagle algorithm (only relevant for TCP sockets, and thus not
- * in configure_socket). In general, in DNS lookups we're pretty much
- * interested in firing off a single request and then waiting for a reply,
- * so batching isn't very interesting in general.
- */
- opt = 1;
- if (setsockopt(s, IPPROTO_TCP, TCP_NODELAY,
- (void *)&opt, sizeof(opt)) == -1)
- {
- sclose(s);
- return -1;
- }
-#endif
-
- /* Connect to the server. */
- if (connect(s, sa, salen) == -1)
- {
- int err = SOCKERRNO;
-
- if (err != EINPROGRESS && err != EWOULDBLOCK)
- {
- sclose(s);
- return -1;
- }
- }
-
- if (channel->sock_create_cb)
- {
- int err = channel->sock_create_cb(s, SOCK_STREAM,
- channel->sock_create_cb_data);
- if (err < 0)
- {
- sclose(s);
- return err;
- }
- }
-
- SOCK_STATE_CALLBACK(channel, s, 1, 0);
- server->tcp_buffer_pos = 0;
- server->tcp_socket = s;
- server->tcp_connection_generation = ++channel->tcp_connection_generation;
- return 0;
-}
-
-static int open_udp_socket(ares_channel channel, struct server_state *server)
-{
- ares_socket_t s;
- ares_socklen_t salen;
- union {
- struct sockaddr_in sa4;
- struct sockaddr_in6 sa6;
- } saddr;
- struct sockaddr *sa;
-
- switch (server->addr.family)
- {
- case AF_INET:
- sa = (void *)&saddr.sa4;
- salen = sizeof(saddr.sa4);
- memset(sa, 0, salen);
- saddr.sa4.sin_family = AF_INET;
- saddr.sa4.sin_port = (unsigned short)(channel->udp_port & 0xffff);
- memcpy(&saddr.sa4.sin_addr, &server->addr.addrV4,
- sizeof(server->addr.addrV4));
- break;
- case AF_INET6:
- sa = (void *)&saddr.sa6;
- salen = sizeof(saddr.sa6);
- memset(sa, 0, salen);
- saddr.sa6.sin6_family = AF_INET6;
- saddr.sa6.sin6_port = (unsigned short)(channel->udp_port & 0xffff);
- memcpy(&saddr.sa6.sin6_addr, &server->addr.addrV6,
- sizeof(server->addr.addrV6));
- break;
- default:
- return -1;
- }
-
- /* Acquire a socket. */
- s = socket(server->addr.family, SOCK_DGRAM, 0);
- if (s == ARES_SOCKET_BAD)
- return -1;
-
- /* Set the socket non-blocking. */
- if (configure_socket(s, channel) < 0)
- {
- sclose(s);
- return -1;
- }
-
- /* Connect to the server. */
- if (connect(s, sa, salen) == -1)
- {
- int err = SOCKERRNO;
-
- if (err != EINPROGRESS && err != EWOULDBLOCK)
- {
- sclose(s);
- return -1;
- }
- }
-
- if (channel->sock_create_cb)
- {
- int err = channel->sock_create_cb(s, SOCK_DGRAM,
- channel->sock_create_cb_data);
- if (err < 0)
- {
- sclose(s);
- return err;
- }
- }
-
- SOCK_STATE_CALLBACK(channel, s, 1, 0);
-
- server->udp_socket = s;
- return 0;
-}
-
-static int same_questions(const unsigned char *qbuf, int qlen,
- const unsigned char *abuf, int alen)
-{
- struct {
- const unsigned char *p;
- int qdcount;
- char *name;
- long namelen;
- int type;
- int dnsclass;
- } q, a;
- int i, j;
-
- if (qlen < HFIXEDSZ || alen < HFIXEDSZ)
- return 0;
-
- /* Extract qdcount from the request and reply buffers and compare them. */
- q.qdcount = DNS_HEADER_QDCOUNT(qbuf);
- a.qdcount = DNS_HEADER_QDCOUNT(abuf);
- if (q.qdcount != a.qdcount)
- return 0;
-
- /* For each question in qbuf, find it in abuf. */
- q.p = qbuf + HFIXEDSZ;
- for (i = 0; i < q.qdcount; i++)
- {
- /* Decode the question in the query. */
- if (ares_expand_name(q.p, qbuf, qlen, &q.name, &q.namelen)
- != ARES_SUCCESS)
- return 0;
- q.p += q.namelen;
- if (q.p + QFIXEDSZ > qbuf + qlen)
- {
- free(q.name);
- return 0;
- }
- q.type = DNS_QUESTION_TYPE(q.p);
- q.dnsclass = DNS_QUESTION_CLASS(q.p);
- q.p += QFIXEDSZ;
-
- /* Search for this question in the answer. */
- a.p = abuf + HFIXEDSZ;
- for (j = 0; j < a.qdcount; j++)
- {
- /* Decode the question in the answer. */
- if (ares_expand_name(a.p, abuf, alen, &a.name, &a.namelen)
- != ARES_SUCCESS)
- {
- free(q.name);
- return 0;
- }
- a.p += a.namelen;
- if (a.p + QFIXEDSZ > abuf + alen)
- {
- free(q.name);
- free(a.name);
- return 0;
- }
- a.type = DNS_QUESTION_TYPE(a.p);
- a.dnsclass = DNS_QUESTION_CLASS(a.p);
- a.p += QFIXEDSZ;
-
- /* Compare the decoded questions. */
- if (strcasecmp(q.name, a.name) == 0 && q.type == a.type
- && q.dnsclass == a.dnsclass)
- {
- free(a.name);
- break;
- }
- free(a.name);
- }
-
- free(q.name);
- if (j == a.qdcount)
- return 0;
- }
- return 1;
-}
-
-static int same_address(struct sockaddr *sa, struct ares_addr *aa)
-{
- void *addr1;
- void *addr2;
-
- if (sa->sa_family == aa->family)
- {
- switch (aa->family)
- {
- case AF_INET:
- addr1 = &aa->addrV4;
- addr2 = &((struct sockaddr_in *)sa)->sin_addr;
- if (memcmp(addr1, addr2, sizeof(aa->addrV4)) == 0)
- return 1; /* match */
- break;
- case AF_INET6:
- addr1 = &aa->addrV6;
- addr2 = &((struct sockaddr_in6 *)sa)->sin6_addr;
- if (memcmp(addr1, addr2, sizeof(aa->addrV6)) == 0)
- return 1; /* match */
- break;
- default:
- break;
- }
- }
- return 0; /* different */
-}
-
-static void end_query (ares_channel channel, struct query *query, int status,
- unsigned char *abuf, int alen)
-{
- int i;
-
- /* First we check to see if this query ended while one of our send
- * queues still has pointers to it.
- */
- for (i = 0; i < channel->nservers; i++)
- {
- struct server_state *server = &channel->servers[i];
- struct send_request *sendreq;
- for (sendreq = server->qhead; sendreq; sendreq = sendreq->next)
- if (sendreq->owner_query == query)
- {
- sendreq->owner_query = NULL;
- assert(sendreq->data_storage == NULL);
- if (status == ARES_SUCCESS)
- {
- /* We got a reply for this query, but this queued
- * sendreq points into this soon-to-be-gone query's
- * tcpbuf. Probably this means we timed out and queued
- * the query for retransmission, then received a
- * response before actually retransmitting. This is
- * perfectly fine, so we want to keep the connection
- * running smoothly if we can. But in the worst case
- * we may have sent only some prefix of the query,
- * with some suffix of the query left to send. Also,
- * the buffer may be queued on multiple queues. To
- * prevent dangling pointers to the query's tcpbuf and
- * handle these cases, we just give such sendreqs
- * their own copy of the query packet.
- */
- sendreq->data_storage = malloc(sendreq->len);
- if (sendreq->data_storage != NULL)
- {
- memcpy(sendreq->data_storage, sendreq->data, sendreq->len);
- sendreq->data = sendreq->data_storage;
- }
- }
- if ((status != ARES_SUCCESS) || (sendreq->data_storage == NULL))
- {
- /* We encountered an error (probably a timeout,
- * suggesting the DNS server we're talking to is
- * probably unreachable, wedged, or severely
- * overloaded) or we couldn't copy the request, so
- * mark the connection as broken. When we get to
- * process_broken_connections() we'll close the
- * connection and try to re-send requests to another
- * server.
- */
- server->is_broken = 1;
- /* Just to be paranoid, zero out this sendreq... */
- sendreq->data = NULL;
- sendreq->len = 0;
- }
- }
- }
-
- /* Invoke the callback */
- query->callback(query->arg, status, query->timeouts, abuf, alen);
- ares__free_query(query);
-
- /* Simple cleanup policy: if no queries are remaining, close all
- * network sockets unless STAYOPEN is set.
- */
- if (!(channel->flags & ARES_FLAG_STAYOPEN) &&
- ares__is_list_empty(&(channel->all_queries)))
- {
- for (i = 0; i < channel->nservers; i++)
- ares__close_sockets(channel, &channel->servers[i]);
- }
-}
-
-void ares__free_query(struct query *query)
-{
- /* Remove the query from all the lists in which it is linked */
- ares__remove_from_list(&(query->queries_by_qid));
- ares__remove_from_list(&(query->queries_by_timeout));
- ares__remove_from_list(&(query->queries_to_server));
- ares__remove_from_list(&(query->all_queries));
- /* Zero out some important stuff, to help catch bugs */
- query->callback = NULL;
- query->arg = NULL;
- /* Deallocate the memory associated with the query */
- free(query->tcpbuf);
- free(query->server_info);
- free(query);
-}
diff --git a/ares/ares_query.3 b/ares/ares_query.3
deleted file mode 100644
index 93f64b2f2..000000000
--- a/ares/ares_query.3
+++ /dev/null
@@ -1,147 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_QUERY 3 "24 July 1998"
-.SH NAME
-ares_query \- Initiate a single-question DNS query
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B typedef void (*ares_callback)(void *\fIarg\fP, int \fIstatus\fP,
-.B int \fItimeouts\fP, unsigned char *\fIabuf\fP, int \fIalen\fP)
-.PP
-.B void ares_query(ares_channel \fIchannel\fP, const char *\fIname\fP,
-.B int \fIdnsclass\fP, int \fItype\fP, ares_callback \fIcallback\fP,
-.B void *\fIarg\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_query
-function initiates a single-question DNS query on the name service
-channel identified by
-.IR channel .
-The parameter
-.I name
-gives the query name as a NUL-terminated C string of period-separated
-labels optionally ending with a period; periods and backslashes within
-a label must be escaped with a backslash. The parameters
-.I dnsclass
-and
-.I type
-give the class and type of the query using the values defined in
-.BR <arpa/nameser.h> .
-When the query is complete or has failed, the ares library will invoke
-.IR callback .
-Completion or failure of the query may happen immediately, or may
-happen during a later call to
-.BR ares_process (3)
-or
-.BR ares_destroy (3).
-.PP
-The callback argument
-.I arg
-is copied from the
-.B ares_query
-argument
-.IR arg .
-The callback argument
-.I status
-indicates whether the query succeeded and, if not, how it failed. It
-may have any of the following values:
-.TP 19
-.B ARES_SUCCESS
-The query completed successfully.
-.TP 19
-.B ARES_ENODATA
-The query completed but contains no answers.
-.TP 19
-.B ARES_EFORMERR
-The query completed but the server claims that the query was
-malformatted.
-.TP 19
-.B ARES_ESERVFAIL
-The query completed but the server claims to have experienced a
-failure. (This code can only occur if the
-.B ARES_FLAG_NOCHECKRESP
-flag was specified at channel initialization time; otherwise, such
-responses are ignored at the
-.BR ares_send (3)
-level.)
-.TP 19
-.B ARES_ENOTFOUND
-The query completed but the queried-for domain name was not found.
-.TP 19
-.B ARES_ENOTIMP
-The query completed but the server does not implement the operation
-requested by the query. (This code can only occur if the
-.B ARES_FLAG_NOCHECKRESP
-flag was specified at channel initialization time; otherwise, such
-responses are ignored at the
-.BR ares_send (3)
-level.)
-.TP 19
-.B ARES_EREFUSED
-The query completed but the server refused the query. (This code can
-only occur if the
-.B ARES_FLAG_NOCHECKRESP
-flag was specified at channel initialization time; otherwise, such
-responses are ignored at the
-.BR ares_send (3)
-level.)
-.TP 19
-.B ARES_EBADNAME
-The query name
-.I name
-could not be encoded as a domain name, either because it contained a
-zero-length label or because it contained a label of more than 63
-characters.
-.TP 19
-.B ARES_ETIMEOUT
-No name servers responded within the timeout period.
-.TP 19
-.B ARES_ECONNREFUSED
-No name servers could be contacted.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.TP 19
-.B ARES_EDESTRUCTION
-The name service channel
-.I channel
-is being destroyed; the query will not be completed.
-.PP
-The callback argument
-.I timeouts
-reports how many times a query timed out during the execution of the
-given request.
-.PP
-If the query completed (even if there was something wrong with it, as
-indicated by some of the above error codes), the callback argument
-.I abuf
-points to a result buffer of length
-.IR alen .
-If the query did not complete,
-.I abuf
-will be NULL and
-.I alen
-will be 0.
-.SH SEE ALSO
-.BR ares_process (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_query.c b/ares/ares_query.c
deleted file mode 100644
index 2a717fb3c..000000000
--- a/ares/ares_query.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdlib.h>
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-struct qquery {
- ares_callback callback;
- void *arg;
-};
-
-static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen);
-
-void ares__rc4(rc4_key* key, unsigned char *buffer_ptr, int buffer_len)
-{
- unsigned char x;
- unsigned char y;
- unsigned char* state;
- unsigned char xorIndex;
- short counter;
-
- x = key->x;
- y = key->y;
-
- state = &key->state[0];
- for(counter = 0; counter < buffer_len; counter ++)
- {
- x = (unsigned char)((x + 1) % 256);
- y = (unsigned char)((state[x] + y) % 256);
- ARES_SWAP_BYTE(&state[x], &state[y]);
-
- xorIndex = (unsigned char)((state[x] + state[y]) % 256);
-
- buffer_ptr[counter] = (unsigned char)(buffer_ptr[counter]^state[xorIndex]);
- }
- key->x = x;
- key->y = y;
-}
-
-static struct query* find_query_by_id(ares_channel channel, unsigned short id)
-{
- unsigned short qid;
- struct list_node* list_head;
- struct list_node* list_node;
- DNS_HEADER_SET_QID(((unsigned char*)&qid), id);
-
- /* Find the query corresponding to this packet. */
- list_head = &(channel->queries_by_qid[qid % ARES_QID_TABLE_SIZE]);
- for (list_node = list_head->next; list_node != list_head;
- list_node = list_node->next)
- {
- struct query *q = list_node->data;
- if (q->qid == qid)
- return q;
- }
- return NULL;
-}
-
-
-/* a unique query id is generated using an rc4 key. Since the id may already
- be used by a running query (as infrequent as it may be), a lookup is
- performed per id generation. In practice this search should happen only
- once per newly generated id
-*/
-static unsigned short generate_unique_id(ares_channel channel)
-{
- unsigned short id;
-
- do {
- id = ares__generate_new_id(&channel->id_key);
- } while (find_query_by_id(channel, id));
-
- return (unsigned short)id;
-}
-
-void ares_query(ares_channel channel, const char *name, int dnsclass,
- int type, ares_callback callback, void *arg)
-{
- struct qquery *qquery;
- unsigned char *qbuf;
- int qlen, rd, status;
-
- /* Compose the query. */
- rd = !(channel->flags & ARES_FLAG_NORECURSE);
- status = ares_mkquery(name, dnsclass, type, channel->next_id, rd, &qbuf,
- &qlen);
- if (status != ARES_SUCCESS)
- {
- if (qbuf != NULL) free(qbuf);
- callback(arg, status, 0, NULL, 0);
- return;
- }
-
- channel->next_id = generate_unique_id(channel);
-
- /* Allocate and fill in the query structure. */
- qquery = malloc(sizeof(struct qquery));
- if (!qquery)
- {
- ares_free_string(qbuf);
- callback(arg, ARES_ENOMEM, 0, NULL, 0);
- return;
- }
- qquery->callback = callback;
- qquery->arg = arg;
-
- /* Send it off. qcallback will be called when we get an answer. */
- ares_send(channel, qbuf, qlen, qcallback, qquery);
- ares_free_string(qbuf);
-}
-
-static void qcallback(void *arg, int status, int timeouts, unsigned char *abuf, int alen)
-{
- struct qquery *qquery = (struct qquery *) arg;
- unsigned int ancount;
- int rcode;
-
- if (status != ARES_SUCCESS)
- qquery->callback(qquery->arg, status, timeouts, abuf, alen);
- else
- {
- /* Pull the response code and answer count from the packet. */
- rcode = DNS_HEADER_RCODE(abuf);
- ancount = DNS_HEADER_ANCOUNT(abuf);
-
- /* Convert errors. */
- switch (rcode)
- {
- case NOERROR:
- status = (ancount > 0) ? ARES_SUCCESS : ARES_ENODATA;
- break;
- case FORMERR:
- status = ARES_EFORMERR;
- break;
- case SERVFAIL:
- status = ARES_ESERVFAIL;
- break;
- case NXDOMAIN:
- status = ARES_ENOTFOUND;
- break;
- case NOTIMP:
- status = ARES_ENOTIMP;
- break;
- case REFUSED:
- status = ARES_EREFUSED;
- break;
- }
- qquery->callback(qquery->arg, status, timeouts, abuf, alen);
- }
- free(qquery);
-}
diff --git a/ares/ares_rules.h b/ares/ares_rules.h
deleted file mode 100644
index cdacf4a14..000000000
--- a/ares/ares_rules.h
+++ /dev/null
@@ -1,145 +0,0 @@
-#ifndef __CARES_RULES_H
-#define __CARES_RULES_H
-
-/* $Id$ */
-
-/* Copyright (C) 2009 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/* ================================================================ */
-/* COMPILE TIME SANITY CHECKS */
-/* ================================================================ */
-
-/*
- * NOTE 1:
- * -------
- *
- * All checks done in this file are intentionally placed in a public
- * header file which is pulled by ares.h when an application is
- * being built using an already built c-ares library. Additionally
- * this file is also included and used when building the library.
- *
- * If compilation fails on this file it is certainly sure that the
- * problem is elsewhere. It could be a problem in the ares_build.h
- * header file, or simply that you are using different compilation
- * settings than those used to build the library.
- *
- * Nothing in this file is intended to be modified or adjusted by the
- * c-ares library user nor by the c-ares library builder.
- *
- * Do not deactivate any check, these are done to make sure that the
- * library is properly built and used.
- *
- * You can find further help on the c-ares development mailing list:
- * http://cool.haxx.se/mailman/listinfo/c-ares/
- *
- * NOTE 2
- * ------
- *
- * Some of the following compile time checks are based on the fact
- * that the dimension of a constant array can not be a negative one.
- * In this way if the compile time verification fails, the compilation
- * will fail issuing an error. The error description wording is compiler
- * dependent but it will be quite similar to one of the following:
- *
- * "negative subscript or subscript is too large"
- * "array must have at least one element"
- * "-1 is an illegal array size"
- * "size of array is negative"
- *
- * If you are building an application which tries to use an already
- * built c-ares library and you are getting this kind of errors on
- * this file, it is a clear indication that there is a mismatch between
- * how the library was built and how you are trying to use it for your
- * application. Your already compiled or binary library provider is the
- * only one who can give you the details you need to properly use it.
- */
-
-/*
- * Verify that some macros are actually defined.
- */
-
-#ifndef CARES_SIZEOF_LONG
-# error "CARES_SIZEOF_LONG definition is missing!"
- Error Compilation_aborted_CARES_SIZEOF_LONG_is_missing
-#endif
-
-#ifndef CARES_TYPEOF_ARES_SOCKLEN_T
-# error "CARES_TYPEOF_ARES_SOCKLEN_T definition is missing!"
- Error Compilation_aborted_CARES_TYPEOF_ARES_SOCKLEN_T_is_missing
-#endif
-
-#ifndef CARES_SIZEOF_ARES_SOCKLEN_T
-# error "CARES_SIZEOF_ARES_SOCKLEN_T definition is missing!"
- Error Compilation_aborted_CARES_SIZEOF_ARES_SOCKLEN_T_is_missing
-#endif
-
-/*
- * Macros private to this header file.
- */
-
-#define CareschkszEQ(t, s) sizeof(t) == s ? 1 : -1
-
-#define CareschkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1
-
-/*
- * Verify that the size previously defined and expected for long
- * is the same as the one reported by sizeof() at compile time.
- */
-
-typedef char
- __cares_rule_01__
- [CareschkszEQ(long, CARES_SIZEOF_LONG)];
-
-/*
- * Verify that the size previously defined and expected for
- * ares_socklen_t is actually the the same as the one reported
- * by sizeof() at compile time.
- */
-
-typedef char
- __cares_rule_02__
- [CareschkszEQ(ares_socklen_t, CARES_SIZEOF_ARES_SOCKLEN_T)];
-
-/*
- * Verify at compile time that the size of ares_socklen_t as reported
- * by sizeof() is greater or equal than the one reported for int for
- * the current compilation.
- */
-
-typedef char
- __cares_rule_03__
- [CareschkszGE(ares_socklen_t, int)];
-
-/* ================================================================ */
-/* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */
-/* ================================================================ */
-
-/*
- * Get rid of macros private to this header file.
- */
-
-#undef CareschkszEQ
-#undef CareschkszGE
-
-/*
- * Get rid of macros not intended to exist beyond this point.
- */
-
-#undef CARES_PULL_WS2TCPIP_H
-#undef CARES_PULL_SYS_TYPES_H
-#undef CARES_PULL_SYS_SOCKET_H
-
-#undef CARES_TYPEOF_ARES_SOCKLEN_T
-
-#endif /* __CARES_RULES_H */
diff --git a/ares/ares_save_options.3 b/ares/ares_save_options.3
deleted file mode 100644
index 0dd4b4ecb..000000000
--- a/ares/ares_save_options.3
+++ /dev/null
@@ -1,75 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_SAVE_OPTIONS 3 "5 March 2010"
-.SH NAME
-ares_save_options \- Save configuration values obtained from initialized ares_channel
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_save_options(ares_channel \fIchannel\fP, struct ares_options *\fIoptions\fP, int *\fIoptmask\fP)
-.fi
-.SH DESCRIPTION
-The \fBares_save_options(3)\fP function saves the channel data identified by
-.IR channel ,
-into the options struct identified by
-.IR options ,
-and saves the mask of options which are set to the integer
-pointer (passed by reference) identified by
-.IR optmask .
-
-The resultant options and optmask are then able to be
-passed directly to ares_init_options. When the options
-are no longer needed, ares_destroy_options should be called
-to free any associated memory.
-.SH RETURN VALUES
-.B ares_save_options(3)
-can return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The channel data was successfuly stored
-.TP 15
-.B ARES_ENOMEM
-The memory was exhausted
-.TP 15
-.B ARES_ENODATA
-The channel data identified by
-.IR channel
-were invalid.
-.SH NOTE
-Since c-ares 1.6.0 the ares_options struct has been "locked" meaning that it
-won't be extended to cover new functions. This function will remain
-functioning, but it can only return config data that can be represented in
-this config struct, which may no longer be the complete set of config
-options. \fBares_dup(3)\fP will not have that restriction.
-
-The ares_options struct can not handle potential IPv6 name servers the
-ares_channel might be configured to use. Function \fBares_save_options(3)\fP
-will only return IPv4 servers if any. In order to retrieve all name servers
-an ares_channel might be using, function \fBares_get_servers(3)\fP must be
-used instead.
-.SH SEE ALSO
-.BR ares_destroy_options (3),
-.BR ares_init_options (3),
-.BR ares_get_servers (3),
-.BR ares_dup (3)
-.SH AVAILABILITY
-ares_save_options(3) was added in c-ares 1.4.0
-.SH AUTHOR
-Brad House
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_search.3 b/ares/ares_search.3
deleted file mode 100644
index f5bf80d9c..000000000
--- a/ares/ares_search.3
+++ /dev/null
@@ -1,149 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_SEARCH 3 "24 July 1998"
-.SH NAME
-ares_search \- Initiate a DNS query with domain search
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B typedef void (*ares_callback)(void *\fIarg\fP, int \fIstatus\fP,
-.B int \fItimeouts\fP, unsigned char *\fIabuf\fP, int \fIalen\fP)
-.PP
-.B void ares_search(ares_channel \fIchannel\fP, const char *\fIname\fP,
-.B int \fIdnsclass\fP, int \fItype\fP, ares_callback \fIcallback\fP,
-.B void *\fIarg\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_search
-function initiates a series of single-question DNS queries on the name
-service channel identified by
-.IR channel ,
-using the channel's search domains as well as a host alias file given
-by the HOSTALIAS environment variable. The parameter
-.I name
-gives the alias name or the base of the query name as a NUL-terminated
-C string of period-separated labels; if it ends with a period, the
-channel's search domains will not be used. Periods and backslashes
-within a label must be escaped with a backslash. The parameters
-.I dnsclass
-and
-.I type
-give the class and type of the query using the values defined in
-.BR <arpa/nameser.h> .
-When the query sequence is complete or has failed, the ares library
-will invoke
-.IR callback .
-Completion or failure of the query sequence may happen immediately, or
-may happen during a later call to
-.BR ares_process (3)
-or
-.BR ares_destroy (3).
-.PP
-The callback argument
-.I arg
-is copied from the
-.B ares_search
-argument
-.IR arg .
-The callback argument
-.I status
-indicates whether the query sequence ended with a successful query
-and, if not, how the query sequence failed. It may have any of the
-following values:
-.TP 19
-.B ARES_SUCCESS
-A query completed successfully.
-.TP 19
-.B ARES_ENODATA
-No query completed successfully; when the query was tried without a
-search domain appended, a response was returned with no answers.
-.TP 19
-.B ARES_EFORMERR
-A query completed but the server claimed that the query was
-malformatted.
-.TP 19
-.B ARES_ESERVFAIL
-No query completed successfully; when the query was tried without a
-search domain appended, the server claimed to have experienced a
-failure. (This code can only occur if the
-.B ARES_FLAG_NOCHECKRESP
-flag was specified at channel initialization time; otherwise, such
-responses are ignored at the
-.BR ares_send (3)
-level.)
-.TP 19
-.B ARES_ENOTFOUND
-No query completed successfully; when the query was tried without a
-search domain appended, the server reported that the queried-for
-domain name was not found.
-.TP 19
-.B ARES_ENOTIMP
-A query completed but the server does not implement the operation
-requested by the query. (This code can only occur if the
-.B ARES_FLAG_NOCHECKRESP
-flag was specified at channel initialization time; otherwise, such
-responses are ignored at the
-.BR ares_send (3)
-level.)
-.TP 19
-.B ARES_EREFUSED
-A query completed but the server refused the query. (This code can
-only occur returned if the
-.B ARES_FLAG_NOCHECKRESP
-flag was specified at channel initialization time; otherwise, such
-responses are ignored at the
-.BR ares_send (3)
-level.)
-.TP 19
-.B ARES_TIMEOUT
-No name servers responded to a query within the timeout period.
-.TP 19
-.B ARES_ECONNREFUSED
-No name servers could be contacted.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.TP 19
-.B ARES_EDESTRUCTION
-The name service channel
-.I channel
-is being destroyed; the query will not be completed.
-.PP
-The callback argument
-.I timeouts
-reports how many times a query timed out during the execution of the
-given request.
-.PP
-If a query completed successfully, the callback argument
-.I abuf
-points to a result buffer of length
-.IR alen .
-If the query did not complete successfully,
-.I abuf
-will usually be NULL and
-.I alen
-will usually be 0, but in some cases an unsuccessful query result may
-be placed in
-.IR abuf .
-.SH SEE ALSO
-.BR ares_process (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_search.c b/ares/ares_search.c
deleted file mode 100644
index 8673c289f..000000000
--- a/ares/ares_search.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-
-#include "ares.h"
-#include "ares_private.h"
-
-struct search_query {
- /* Arguments passed to ares_search */
- ares_channel channel;
- char *name; /* copied into an allocated buffer */
- int dnsclass;
- int type;
- ares_callback callback;
- void *arg;
-
- int status_as_is; /* error status from trying as-is */
- int next_domain; /* next search domain to try */
- int trying_as_is; /* current query is for name as-is */
- int timeouts; /* number of timeouts we saw for this request */
- int ever_got_nodata; /* did we ever get ARES_ENODATA along the way? */
-};
-
-static void search_callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen);
-static void end_squery(struct search_query *squery, int status,
- unsigned char *abuf, int alen);
-static int cat_domain(const char *name, const char *domain, char **s);
-static int single_domain(ares_channel channel, const char *name, char **s);
-
-void ares_search(ares_channel channel, const char *name, int dnsclass,
- int type, ares_callback callback, void *arg)
-{
- struct search_query *squery;
- char *s;
- const char *p;
- int status, ndots;
-
- /* If name only yields one domain to search, then we don't have
- * to keep extra state, so just do an ares_query().
- */
- status = single_domain(channel, name, &s);
- if (status != ARES_SUCCESS)
- {
- callback(arg, status, 0, NULL, 0);
- return;
- }
- if (s)
- {
- ares_query(channel, s, dnsclass, type, callback, arg);
- free(s);
- return;
- }
-
- /* Allocate a search_query structure to hold the state necessary for
- * doing multiple lookups.
- */
- squery = malloc(sizeof(struct search_query));
- if (!squery)
- {
- callback(arg, ARES_ENOMEM, 0, NULL, 0);
- return;
- }
- squery->channel = channel;
- squery->name = strdup(name);
- if (!squery->name)
- {
- free(squery);
- callback(arg, ARES_ENOMEM, 0, NULL, 0);
- return;
- }
- squery->dnsclass = dnsclass;
- squery->type = type;
- squery->status_as_is = -1;
- squery->callback = callback;
- squery->arg = arg;
- squery->timeouts = 0;
- squery->ever_got_nodata = 0;
-
- /* Count the number of dots in name. */
- ndots = 0;
- for (p = name; *p; p++)
- {
- if (*p == '.')
- ndots++;
- }
-
- /* If ndots is at least the channel ndots threshold (usually 1),
- * then we try the name as-is first. Otherwise, we try the name
- * as-is last.
- */
- if (ndots >= channel->ndots)
- {
- /* Try the name as-is first. */
- squery->next_domain = 0;
- squery->trying_as_is = 1;
- ares_query(channel, name, dnsclass, type, search_callback, squery);
- }
- else
- {
- /* Try the name as-is last; start with the first search domain. */
- squery->next_domain = 1;
- squery->trying_as_is = 0;
- status = cat_domain(name, channel->domains[0], &s);
- if (status == ARES_SUCCESS)
- {
- ares_query(channel, s, dnsclass, type, search_callback, squery);
- free(s);
- }
- else
- {
- /* failed, free the malloc()ed memory */
- free(squery->name);
- free(squery);
- callback(arg, status, 0, NULL, 0);
- }
- }
-}
-
-static void search_callback(void *arg, int status, int timeouts,
- unsigned char *abuf, int alen)
-{
- struct search_query *squery = (struct search_query *) arg;
- ares_channel channel = squery->channel;
- char *s;
-
- squery->timeouts += timeouts;
-
- /* Stop searching unless we got a non-fatal error. */
- if (status != ARES_ENODATA && status != ARES_ESERVFAIL
- && status != ARES_ENOTFOUND)
- end_squery(squery, status, abuf, alen);
- else
- {
- /* Save the status if we were trying as-is. */
- if (squery->trying_as_is)
- squery->status_as_is = status;
-
- /*
- * If we ever get ARES_ENODATA along the way, record that; if the search
- * should run to the very end and we got at least one ARES_ENODATA,
- * then callers like ares_gethostbyname() may want to try a T_A search
- * even if the last domain we queried for T_AAAA resource records
- * returned ARES_ENOTFOUND.
- */
- if (status == ARES_ENODATA)
- squery->ever_got_nodata = 1;
-
- if (squery->next_domain < channel->ndomains)
- {
- /* Try the next domain. */
- status = cat_domain(squery->name,
- channel->domains[squery->next_domain], &s);
- if (status != ARES_SUCCESS)
- end_squery(squery, status, NULL, 0);
- else
- {
- squery->trying_as_is = 0;
- squery->next_domain++;
- ares_query(channel, s, squery->dnsclass, squery->type,
- search_callback, squery);
- free(s);
- }
- }
- else if (squery->status_as_is == -1)
- {
- /* Try the name as-is at the end. */
- squery->trying_as_is = 1;
- ares_query(channel, squery->name, squery->dnsclass, squery->type,
- search_callback, squery);
- }
- else {
- if (squery->status_as_is == ARES_ENOTFOUND && squery->ever_got_nodata) {
- end_squery(squery, ARES_ENODATA, NULL, 0);
- }
- else
- end_squery(squery, squery->status_as_is, NULL, 0);
- }
- }
-}
-
-static void end_squery(struct search_query *squery, int status,
- unsigned char *abuf, int alen)
-{
- squery->callback(squery->arg, status, squery->timeouts, abuf, alen);
- free(squery->name);
- free(squery);
-}
-
-/* Concatenate two domains. */
-static int cat_domain(const char *name, const char *domain, char **s)
-{
- size_t nlen = strlen(name);
- size_t dlen = strlen(domain);
-
- *s = malloc(nlen + 1 + dlen + 1);
- if (!*s)
- return ARES_ENOMEM;
- memcpy(*s, name, nlen);
- (*s)[nlen] = '.';
- memcpy(*s + nlen + 1, domain, dlen);
- (*s)[nlen + 1 + dlen] = 0;
- return ARES_SUCCESS;
-}
-
-/* Determine if this name only yields one query. If it does, set *s to
- * the string we should query, in an allocated buffer. If not, set *s
- * to NULL.
- */
-static int single_domain(ares_channel channel, const char *name, char **s)
-{
- size_t len = strlen(name);
- const char *hostaliases;
- FILE *fp;
- char *line = NULL;
- int status;
- size_t linesize;
- const char *p, *q;
- int error;
-
- /* If the name contains a trailing dot, then the single query is the name
- * sans the trailing dot.
- */
- if (name[len - 1] == '.')
- {
- *s = strdup(name);
- return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
- }
-
- if (!(channel->flags & ARES_FLAG_NOALIASES) && !strchr(name, '.'))
- {
- /* The name might be a host alias. */
- hostaliases = getenv("HOSTALIASES");
- if (hostaliases)
- {
- fp = fopen(hostaliases, "r");
- if (fp)
- {
- while ((status = ares__read_line(fp, &line, &linesize))
- == ARES_SUCCESS)
- {
- if (strncasecmp(line, name, len) != 0 ||
- !ISSPACE(line[len]))
- continue;
- p = line + len;
- while (ISSPACE(*p))
- p++;
- if (*p)
- {
- q = p + 1;
- while (*q && !ISSPACE(*q))
- q++;
- *s = malloc(q - p + 1);
- if (*s)
- {
- memcpy(*s, p, q - p);
- (*s)[q - p] = 0;
- }
- free(line);
- fclose(fp);
- return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
- }
- }
- free(line);
- fclose(fp);
- if (status != ARES_SUCCESS)
- return status;
- }
- else
- {
- error = errno;
- switch(error)
- {
- case ENOENT:
- case ESRCH:
- break;
- default:
- DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
- error, strerror(error)));
- DEBUGF(fprintf(stderr, "Error opening file: %s\n",
- hostaliases));
- *s = NULL;
- return ARES_EFILE;
- }
- }
- }
- }
-
- if (channel->flags & ARES_FLAG_NOSEARCH || channel->ndomains == 0)
- {
- /* No domain search to do; just try the name as-is. */
- *s = strdup(name);
- return (*s) ? ARES_SUCCESS : ARES_ENOMEM;
- }
-
- *s = NULL;
- return ARES_SUCCESS;
-}
diff --git a/ares/ares_send.3 b/ares/ares_send.3
deleted file mode 100644
index e8a240471..000000000
--- a/ares/ares_send.3
+++ /dev/null
@@ -1,121 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_SEND 3 "25 July 1998"
-.SH NAME
-ares_send \- Initiate a DNS query
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B typedef void (*ares_callback)(void *\fIarg\fP, int \fIstatus\fP,
-.B int \fItimeouts\fP, unsigned char *\fIabuf\fP, int \fIalen\fP)
-.PP
-.B void ares_send(ares_channel \fIchannel\fP, const unsigned char *\fIqbuf\fP,
-.B int \fIqlen\fP, ares_callback \fIcallback\fP, void *\fIarg\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_send
-function initiates a DNS query on the name service channel identified
-by
-.IR channel .
-The parameters
-.I qbuf
-and
-.I qlen
-give the DNS query, which should already have been formatted according
-to the DNS protocol. When the query is complete or has failed, the
-ares library will invoke
-.IR callback .
-Completion or failure of the query may happen immediately, or may
-happen during a later call to
-.BR ares_process (3)
-or
-.BR ares_destroy (3).
-.PP
-The callback argument
-.I arg
-is copied from the
-.B ares_send
-argument
-.IR arg .
-The callback argument
-.I status
-indicates whether the query succeeded and, if not, how it failed. It
-may have any of the following values:
-.TP 19
-.B ARES_SUCCESS
-The query completed.
-.TP 19
-.B ARES_EBADQUERY
-The query buffer was poorly formed (was not long enough for a DNS
-header or was too long for TCP transmission).
-.TP 19
-.B ARES_ETIMEOUT
-No name servers responded within the timeout period.
-.TP 19
-.B ARES_ECONNREFUSED
-No name servers could be contacted.
-.TP 19
-.B ARES_ENOMEM
-Memory was exhausted.
-.TP 19
-.B ARES_EDESTRUCTION
-The name service channel
-.I channel
-is being destroyed; the query will not be completed.
-.PP
-The callback argument
-.I timeouts
-reports how many times a query timed out during the execution of the
-given request.
-.PP
-If the query completed, the callback argument
-.I abuf
-points to a result buffer of length
-.IR alen .
-If the query did not complete,
-.I abuf
-will be NULL and
-.I alen
-will be 0.
-.PP
-Unless the flag
-.B ARES_FLAG_NOCHECKRESP
-was set at channel initialization time,
-.B ares_send
-will normally ignore responses whose questions do not match the
-questions in
-.IR qbuf ,
-as well as responses with reply codes of
-.BR SERVFAIL ,
-.BR NOTIMP ,
-and
-.BR REFUSED .
-Unlike other query functions in the ares library, however,
-.B ares_send
-does not inspect the header of the reply packet to determine the error
-status, so a callback status of
-.B ARES_SUCCESS
-does not reflect as much about the response as for other query
-functions.
-.SH SEE ALSO
-.BR ares_process (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_send.c b/ares/ares_send.c
deleted file mode 100644
index c2b006537..000000000
--- a/ares/ares_send.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include "ares.h"
-#include "ares_dns.h"
-#include "ares_private.h"
-
-void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
- ares_callback callback, void *arg)
-{
- struct query *query;
- int i;
- struct timeval now;
-
- /* Verify that the query is at least long enough to hold the header. */
- if (qlen < HFIXEDSZ || qlen >= (1 << 16))
- {
- callback(arg, ARES_EBADQUERY, 0, NULL, 0);
- return;
- }
-
- /* Allocate space for query and allocated fields. */
- query = malloc(sizeof(struct query));
- if (!query)
- {
- callback(arg, ARES_ENOMEM, 0, NULL, 0);
- return;
- }
- query->tcpbuf = malloc(qlen + 2);
- if (!query->tcpbuf)
- {
- free(query);
- callback(arg, ARES_ENOMEM, 0, NULL, 0);
- return;
- }
- query->server_info = malloc(channel->nservers *
- sizeof(query->server_info[0]));
- if (!query->server_info)
- {
- free(query->tcpbuf);
- free(query);
- callback(arg, ARES_ENOMEM, 0, NULL, 0);
- return;
- }
-
- /* Compute the query ID. Start with no timeout. */
- query->qid = (unsigned short)DNS_HEADER_QID(qbuf);
- query->timeout.tv_sec = 0;
- query->timeout.tv_usec = 0;
-
- /* Form the TCP query buffer by prepending qlen (as two
- * network-order bytes) to qbuf.
- */
- query->tcpbuf[0] = (unsigned char)((qlen >> 8) & 0xff);
- query->tcpbuf[1] = (unsigned char)(qlen & 0xff);
- memcpy(query->tcpbuf + 2, qbuf, qlen);
- query->tcplen = qlen + 2;
-
- /* Fill in query arguments. */
- query->qbuf = query->tcpbuf + 2;
- query->qlen = qlen;
- query->callback = callback;
- query->arg = arg;
-
- /* Initialize query status. */
- query->try = 0;
-
- /* Choose the server to send the query to. If rotation is enabled, keep track
- * of the next server we want to use. */
- query->server = channel->last_server;
- if (channel->rotate == 1)
- channel->last_server = (channel->last_server + 1) % channel->nservers;
-
- for (i = 0; i < channel->nservers; i++)
- {
- query->server_info[i].skip_server = 0;
- query->server_info[i].tcp_connection_generation = 0;
- }
- query->using_tcp = (channel->flags & ARES_FLAG_USEVC) || qlen > PACKETSZ;
- query->error_status = ARES_ECONNREFUSED;
- query->timeouts = 0;
-
- /* Initialize our list nodes. */
- ares__init_list_node(&(query->queries_by_qid), query);
- ares__init_list_node(&(query->queries_by_timeout), query);
- ares__init_list_node(&(query->queries_to_server), query);
- ares__init_list_node(&(query->all_queries), query);
-
- /* Chain the query into the list of all queries. */
- ares__insert_in_list(&(query->all_queries), &(channel->all_queries));
- /* Keep track of queries bucketed by qid, so we can process DNS
- * responses quickly.
- */
- ares__insert_in_list(
- &(query->queries_by_qid),
- &(channel->queries_by_qid[query->qid % ARES_QID_TABLE_SIZE]));
-
- /* Perform the first query action. */
- now = ares__tvnow();
- ares__send_query(channel, query, &now);
-}
diff --git a/ares/ares_set_servers.3 b/ares/ares_set_servers.3
deleted file mode 100644
index 949b81fbe..000000000
--- a/ares/ares_set_servers.3
+++ /dev/null
@@ -1,85 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\" Copyright (C) 2008-2010 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_SET_SERVERS 3 "5 March 2010"
-.SH NAME
-ares_set_servers \- Initialize an ares_channel name servers configuration
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B int ares_set_servers(ares_channel \fIchannel\fP, struct ares_addr_node *\fIservers\fP)
-.fi
-.SH DESCRIPTION
-The \fBares_set_servers(3)\fP function initializes name servers configuration
-for the channel data identified by
-.IR channel ,
-from a
-.IR servers
-pointer to a linked list of ares_addr_node structs holding name servers
-address data.
-
-The name server linked list pointer argument may be the result of a previous
-call to \fBares_get_servers(3)\fP or a linked list of ares_addr_node structs
-setup by other means.
-
-This function replaces any potentially previously configured name servers
-with the ones given in the linked list. So, in order to configure a channel
-with more than one name server all the desired ones must be specified in a
-single list.
-
-\fBares_set_servers(3)\fP does not take ownership of the linked list argument.
-The caller is responsible to free the linked list when no longer needed.
-
-This function is capable of handling IPv4 and IPv6 name server
-addresses simultaneously, rendering \fBares_init_options(3)\fP with
-optmask \fBARES_OPT_SERVERS\fP functionally obsolete except for
-IPv4-only name server usage.
-
-.SH RETURN VALUES
-.B ares_set_servers(3)
-may return any of the following values:
-.TP 15
-.B ARES_SUCCESS
-The name servers configuration was successfuly initialized.
-.TP 15
-.B ARES_ENOMEM
-The process's available memory was exhausted.
-.TP 15
-.B ARES_ENODATA
-The channel data identified by
-.IR channel
-was invalid.
-.TP 15
-.B ARES_ENOTINITIALIZED
-c-ares library initialization not yet performed.
-.SH SEE ALSO
-.BR ares_get_servers (3),
-.BR ares_init_options (3),
-.BR ares_dup(3)
-.SH AVAILABILITY
-ares_set_servers(3) was added in c-ares 1.7.1
-.SH AUTHOR
-Implementation of this function and associated library internals are based
-on code, comments and feedback provided November and December of 2008 by
-Daniel Stenberg, Gregor Jasny, Phil Blundell and Yang Tse, December 2009
-by Cedric Bail, February 2010 by Jakub Hrozek. On March 2010 Yang Tse
-shuffled all the bits and this function popped out.
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
-.br
-Copyright (C) 2008-2010 by Daniel Stenberg
diff --git a/ares/ares_set_socket_callback.3 b/ares/ares_set_socket_callback.3
deleted file mode 100644
index fb598ca29..000000000
--- a/ares/ares_set_socket_callback.3
+++ /dev/null
@@ -1,29 +0,0 @@
-.\" $Id$
-.\"
-.TH ARES_SET_SOCKET_CALLBACK 3 "20 Nov 2009"
-.SH NAME
-ares_set_socket_callback \- Set a socket creation callback
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B void ares_set_socket_callback(ares_channel \fIchannel\fP,
- ares_sock_create_callback \fIcallback\fP,
- void *\fIuserdata\fP)
-.PP
-.B cc file.c -lcares
-.fi
-.SH DESCRIPTION
-.PP
-This function sets a \fIcallback\fP in the given ares channel handle. This
-callback function will be invoked after the socket has been created, and
-connected to the remote server. The callback must return ARES_SUCCESS if
-things are fine, or use the standard ares error codes to signal errors
-back. Returned errors will abort the ares operation.
-.SH SEE ALSO
-.BR ares_init_options (3)
-.SH AVAILABILITY
-ares_set_socket_callback(3) was added in c-ares 1.6.0
-.SH AUTHOR
-Gregor Jasny
-
diff --git a/ares/ares_setup.h b/ares/ares_setup.h
deleted file mode 100644
index ce81b1fa3..000000000
--- a/ares/ares_setup.h
+++ /dev/null
@@ -1,198 +0,0 @@
-#ifndef HEADER_CARES_SETUP_H
-#define HEADER_CARES_SETUP_H
-
-/* $Id$ */
-
-/* Copyright (C) 2004 - 2009 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/*
- * Define WIN32 when build target is Win32 API
- */
-
-#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
-#define WIN32
-#endif
-
-/*
- * Include configuration script results or hand-crafted
- * configuration file for platforms which lack config tool.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "ares_config.h"
-#else
-
-#ifdef WIN32
-#include "config-win32.h"
-#endif
-
-#endif /* HAVE_CONFIG_H */
-
-/* ================================================================ */
-/* Definition of preprocessor macros/symbols which modify compiler */
-/* behaviour or generated code characteristics must be done here, */
-/* as appropriate, before any system header file is included. It is */
-/* also possible to have them defined in the config file included */
-/* before this point. As a result of all this we frown inclusion of */
-/* system header files in our config files, avoid this at any cost. */
-/* ================================================================ */
-
-/*
- * AIX 4.3 and newer needs _THREAD_SAFE defined to build
- * proper reentrant code. Others may also need it.
- */
-
-#ifdef NEED_THREAD_SAFE
-# ifndef _THREAD_SAFE
-# define _THREAD_SAFE
-# endif
-#endif
-
-/*
- * Tru64 needs _REENTRANT set for a few function prototypes and
- * things to appear in the system header files. Unixware needs it
- * to build proper reentrant code. Others may also need it.
- */
-
-#ifdef NEED_REENTRANT
-# ifndef _REENTRANT
-# define _REENTRANT
-# endif
-#endif
-
-/* ================================================================ */
-/* If you need to include a system header file for your platform, */
-/* please, do it beyond the point further indicated in this file. */
-/* ================================================================ */
-
-/*
- * c-ares external interface definitions are also used internally,
- * and might also include required system header files to define them.
- */
-
-#include <ares_build.h>
-
-/*
- * Compile time sanity checks must also be done when building the library.
- */
-
-#include <ares_rules.h>
-
-/* ================================================================= */
-/* No system header file shall be included in this file before this */
-/* point. The only allowed ones are those included from ares_build.h */
-/* ================================================================= */
-
-/*
- * Include header files for windows builds before redefining anything.
- * Use this preproessor block only to include or exclude windows.h,
- * winsock2.h, ws2tcpip.h or winsock.h. Any other windows thing belongs
- * to any other further and independent block. Under Cygwin things work
- * just as under linux (e.g. <sys/socket.h>) and the winsock headers should
- * never be included when __CYGWIN__ is defined. configure script takes
- * care of this, not defining HAVE_WINDOWS_H, HAVE_WINSOCK_H, HAVE_WINSOCK2_H,
- * neither HAVE_WS2TCPIP_H when __CYGWIN__ is defined.
- */
-
-#ifdef HAVE_WINDOWS_H
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h>
-# ifdef HAVE_WINSOCK2_H
-# include <winsock2.h>
-# ifdef HAVE_WS2TCPIP_H
-# include <ws2tcpip.h>
-# endif
-# else
-# ifdef HAVE_WINSOCK_H
-# include <winsock.h>
-# endif
-# endif
-#endif
-
-/*
- * Define USE_WINSOCK to 2 if we have and use WINSOCK2 API, else
- * define USE_WINSOCK to 1 if we have and use WINSOCK API, else
- * undefine USE_WINSOCK.
- */
-
-#undef USE_WINSOCK
-
-#ifdef HAVE_WINSOCK2_H
-# define USE_WINSOCK 2
-#else
-# ifdef HAVE_WINSOCK_H
-# define USE_WINSOCK 1
-# endif
-#endif
-
-/*
- * Work-arounds for systems without configure support
- */
-
-#ifndef HAVE_CONFIG_H
-
-#if !defined(HAVE_SYS_TIME_H) && !defined(_MSC_VER) && !defined(__WATCOMC__)
-#define HAVE_SYS_TIME_H
-#endif
-
-#if !defined(HAVE_UNISTD_H) && !defined(_MSC_VER)
-#define HAVE_UNISTD_H 1
-#endif
-
-#if !defined(HAVE_SYS_UIO_H) && !defined(WIN32) && !defined(MSDOS)
-#define HAVE_SYS_UIO_H
-#endif
-
-#endif /* HAVE_CONFIG_H */
-
-#ifdef __POCC__
-# include <sys/types.h>
-# include <unistd.h>
-# define ESRCH 3
-#endif
-
-/*
- * Recent autoconf versions define these symbols in ares_config.h. We don't
- * want them (since they collide with the libcurl ones when we build
- * --enable-debug) so we undef them again here.
- */
-
-#undef PACKAGE_STRING
-#undef PACKAGE_TARNAME
-#undef PACKAGE_VERSION
-#undef PACKAGE_BUGREPORT
-#undef PACKAGE_NAME
-#undef VERSION
-#undef PACKAGE
-
-/* IPv6 compatibility */
-#if !defined(HAVE_AF_INET6)
-#if defined(HAVE_PF_INET6)
-#define AF_INET6 PF_INET6
-#else
-#define AF_INET6 AF_MAX+1
-#endif
-#endif
-
-/*
- * Include macros and defines that should only be processed once.
- */
-
-#ifndef __SETUP_ONCE_H
-#include "setup_once.h"
-#endif
-
-#endif /* HEADER_CARES_SETUP_H */
diff --git a/ares/ares_strcasecmp.c b/ares/ares_strcasecmp.c
deleted file mode 100644
index 30d64b911..000000000
--- a/ares/ares_strcasecmp.c
+++ /dev/null
@@ -1,67 +0,0 @@
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include "ares_strcasecmp.h"
-
-#ifndef HAVE_STRCASECMP
-int ares_strcasecmp(const char *a, const char *b)
-{
-#if defined(HAVE_STRCMPI)
- return strcmpi(a, b);
-#elif defined(HAVE_STRICMP)
- return stricmp(a, b);
-#else
- size_t i;
-
- for (i = 0; i < (size_t)-1; i++) {
- int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i];
- int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i];
- if (c1 != c2)
- return c1-c2;
- if (!c1)
- break;
- }
- return 0;
-#endif
-}
-#endif
-
-#ifndef HAVE_STRNCASECMP
-int ares_strncasecmp(const char *a, const char *b, size_t n)
-{
-#if defined(HAVE_STRNCMPI)
- return strncmpi(a, b, n);
-#elif defined(HAVE_STRNICMP)
- return strnicmp(a, b, n);
-#else
- size_t i;
-
- for (i = 0; i < n; i++) {
- int c1 = ISUPPER(a[i]) ? tolower(a[i]) : a[i];
- int c2 = ISUPPER(b[i]) ? tolower(b[i]) : b[i];
- if (c1 != c2)
- return c1-c2;
- if (!c1)
- break;
- }
- return 0;
-#endif
-}
-#endif
-
diff --git a/ares/ares_strcasecmp.h b/ares/ares_strcasecmp.h
deleted file mode 100644
index 28164d74b..000000000
--- a/ares/ares_strcasecmp.h
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef HEADER_CARES_STRCASECMP_H
-#define HEADER_CARES_STRCASECMP_H
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifndef HAVE_STRCASECMP
-extern int ares_strcasecmp(const char *a, const char *b);
-#endif
-
-#ifndef HAVE_STRNCASECMP
-extern int ares_strncasecmp(const char *a, const char *b, size_t n);
-#endif
-
-#endif /* HEADER_CARES_STRCASECMP_H */
diff --git a/ares/ares_strdup.c b/ares/ares_strdup.c
deleted file mode 100644
index 6742c6f6b..000000000
--- a/ares/ares_strdup.c
+++ /dev/null
@@ -1,43 +0,0 @@
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include "ares_strdup.h"
-
-#ifndef HAVE_STRDUP
-char *ares_strdup(const char *s1)
-{
- size_t sz;
- char * s2;
-
- if(s1) {
- sz = strlen(s1);
- if(sz < (size_t)-1) {
- sz++;
- if(sz < ((size_t)-1) / sizeof(char)) {
- s2 = malloc(sz * sizeof(char));
- if(s2) {
- memcpy(s2, s1, sz * sizeof(char));
- return s2;
- }
- }
- }
- }
- return (char *)NULL;
-}
-#endif
diff --git a/ares/ares_strdup.h b/ares/ares_strdup.h
deleted file mode 100644
index 980da5263..000000000
--- a/ares/ares_strdup.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef HEADER_CARES_STRDUP_H
-#define HEADER_CARES_STRDUP_H
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifndef HAVE_STRDUP
-extern char *ares_strdup(const char *s1);
-#endif
-
-#endif /* HEADER_CARES_STRDUP_H */
diff --git a/ares/ares_strerror.3 b/ares/ares_strerror.3
deleted file mode 100644
index 0a46cec49..000000000
--- a/ares/ares_strerror.3
+++ /dev/null
@@ -1,38 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_STRERROR 3 "25 July 1998"
-.SH NAME
-ares_strerror \- Get the description of an ares library error code
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B const char *ares_strerror(int \fIcode\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_strerror
-function gets the description of the ares library error code
-.IR code ,
-returning the result as a NUL-terminated C string.
-.SH NOTES
-This function is not compatible with ares, it takes a different set of
-arguments.
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_strerror.c b/ares/ares_strerror.c
deleted file mode 100644
index 70af5b68d..000000000
--- a/ares/ares_strerror.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include <assert.h>
-#include "ares.h"
-
-const char *ares_strerror(int code)
-{
- /* Return a string literal from a table. */
- const char *errtext[] = {
- "Successful completion",
- "DNS server returned answer with no data",
- "DNS server claims query was misformatted",
- "DNS server returned general failure",
- "Domain name not found",
- "DNS server does not implement requested operation",
- "DNS server refused query",
- "Misformatted DNS query",
- "Misformatted domain name",
- "Unsupported address family",
- "Misformatted DNS reply",
- "Could not contact DNS servers",
- "Timeout while contacting DNS servers",
- "End of file",
- "Error reading file",
- "Out of memory",
- "Channel is being destroyed",
- "Misformatted string",
- "Illegal flags specified",
- "Given hostname is not numeric",
- "Illegal hints flags specified",
- "c-ares library initialization not yet performed",
- "Error loading iphlpapi.dll",
- "Could not find GetNetworkParams function",
- "DNS query cancelled"
- };
-
- if(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)))
- return errtext[code];
- else
- return "unknown";
-}
diff --git a/ares/ares_timeout.3 b/ares/ares_timeout.3
deleted file mode 100644
index 52308717d..000000000
--- a/ares/ares_timeout.3
+++ /dev/null
@@ -1,62 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 1998 by the Massachusetts Institute of Technology.
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_TIMEOUT 3 "25 July 1998"
-.SH NAME
-ares_fds \- Get file descriptors to select on for name service
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B struct timeval *ares_timeout(ares_channel \fIchannel\fP,
-.B struct timeval *\fImaxtv\fP, struct timeval *\fItv\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_timeout
-function determines the maximum time for which the caller should wait before
-invoking \fIares_process(3)\fP to process timeouts. The parameter
-.I maxtv
-specifies a existing maximum timeout, or
-.B NULL
-if the caller does not wish to apply a maximum timeout. The parameter
-.I tv
-must point to a writable buffer of type
-.BR "struct timeval" .
-It is valid for
-.I maxtv
-and
-.I tv
-to have the same value.
-.PP
-If no queries have timeouts pending sooner than the given maximum
-timeout,
-.B ares_timeout
-returns the value of
-.IR maxtv;
-otherwise
-.B ares_timeout
-stores the appropriate timeout value into the buffer pointed to by
-.I tv
-and returns the value of
-.IR tv .
-.SH SEE ALSO
-.BR ares_fds (3),
-.BR ares_process (3)
-.SH AUTHOR
-Greg Hudson, MIT Information Systems
-.br
-Copyright 1998 by the Massachusetts Institute of Technology.
diff --git a/ares/ares_timeout.c b/ares/ares_timeout.c
deleted file mode 100644
index 72ea0dc3f..000000000
--- a/ares/ares_timeout.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-
-#include <time.h>
-
-#include "ares.h"
-#include "ares_private.h"
-
-/* WARNING: Beware that this is linear in the number of outstanding
- * requests! You are probably far better off just calling ares_process()
- * once per second, rather than calling ares_timeout() to figure out
- * when to next call ares_process().
- */
-struct timeval *ares_timeout(ares_channel channel, struct timeval *maxtv,
- struct timeval *tvbuf)
-{
- struct query *query;
- struct list_node* list_head;
- struct list_node* list_node;
- struct timeval now;
- struct timeval nextstop;
- long offset, min_offset;
-
- /* No queries, no timeout (and no fetch of the current time). */
- if (ares__is_list_empty(&(channel->all_queries)))
- return maxtv;
-
- /* Find the minimum timeout for the current set of queries. */
- now = ares__tvnow();
- min_offset = -1;
-
- list_head = &(channel->all_queries);
- for (list_node = list_head->next; list_node != list_head;
- list_node = list_node->next)
- {
- query = list_node->data;
- if (query->timeout.tv_sec == 0)
- continue;
- offset = ares__timeoffset(&now, &query->timeout);
- if (offset < 0)
- offset = 0;
- if (min_offset == -1 || offset < min_offset)
- min_offset = offset;
- }
-
- if(min_offset != -1) {
- nextstop.tv_sec = min_offset/1000;
- nextstop.tv_usec = (min_offset%1000)*1000;
- }
-
- /* If we found a minimum timeout and it's sooner than the one specified in
- * maxtv (if any), return it. Otherwise go with maxtv.
- */
- if (min_offset != -1 && (!maxtv || ares__timedout(maxtv, &nextstop)))
- {
- *tvbuf = nextstop;
- return tvbuf;
- }
- else
- return maxtv;
-}
diff --git a/ares/ares_version.3 b/ares/ares_version.3
deleted file mode 100644
index ec9c17991..000000000
--- a/ares/ares_version.3
+++ /dev/null
@@ -1,41 +0,0 @@
-.\" $Id$
-.\"
-.\" Copyright 2004 by Daniel Stenberg
-.\"
-.\" Permission to use, copy, modify, and distribute this
-.\" software and its documentation for any purpose and without
-.\" fee is hereby granted, provided that the above copyright
-.\" notice appear in all copies and that both that copyright
-.\" notice and this permission notice appear in supporting
-.\" documentation, and that the name of M.I.T. not be used in
-.\" advertising or publicity pertaining to distribution of the
-.\" software without specific, written prior permission.
-.\" M.I.T. makes no representations about the suitability of
-.\" this software for any purpose. It is provided "as is"
-.\" without express or implied warranty.
-.\"
-.TH ARES_VERSION 3 "29 January 2004"
-.SH NAME
-ares_version \- Get the version number of the library
-.SH SYNOPSIS
-.nf
-.B #include <ares.h>
-.PP
-.B const char *ares_version(int *\fIversion\fP)
-.fi
-.SH DESCRIPTION
-The
-.B ares_version
-function gets the library version as a string and optionally as an integer
-stored in the
-.IR version ,
-argument. If you pass a NULL, no integer is attempted to be returned.
-
-The integer is built up as 24bit number, with 8 separate bits used for major
-number, minor number and patch number. This makes a version string such as
-1.2.3 will be returned as the hexadecimal number 0x010203 (decimal 66051).
-.SH NOTES
-This function is not compatible with ares.
-.SH AUTHOR
-Daniel Stenberg
-
diff --git a/ares/ares_version.c b/ares/ares_version.c
deleted file mode 100644
index 0f7d03710..000000000
--- a/ares/ares_version.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* $Id$ */
-
-#include "ares_setup.h"
-#include "ares.h"
-
-const char *ares_version(int *version)
-{
- if(version)
- *version = ARES_VERSION;
-
- return ARES_VERSION_STR;
-}
diff --git a/ares/ares_version.h b/ares/ares_version.h
deleted file mode 100644
index 07c80bafb..000000000
--- a/ares/ares_version.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* $Id$ */
-
-#ifndef ARES__VERSION_H
-#define ARES__VERSION_H
-
-#define ARES_VERSION_MAJOR 1
-#define ARES_VERSION_MINOR 7
-#define ARES_VERSION_PATCH 1
-#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
- (ARES_VERSION_MINOR<<8)|\
- (ARES_VERSION_PATCH))
-#define ARES_VERSION_STR "1.7.1-CVS"
-
-#if (ARES_VERSION >= 0x010700)
-# define CARES_HAVE_ARES_LIBRARY_INIT 1
-# define CARES_HAVE_ARES_LIBRARY_CLEANUP 1
-#else
-# undef CARES_HAVE_ARES_LIBRARY_INIT
-# undef CARES_HAVE_ARES_LIBRARY_CLEANUP
-#endif
-
-#endif
diff --git a/ares/ares_writev.c b/ares/ares_writev.c
deleted file mode 100644
index 4c12942d7..000000000
--- a/ares/ares_writev.c
+++ /dev/null
@@ -1,80 +0,0 @@
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_LIMITS_H
-# include <limits.h>
-#endif
-
-#include "ares.h"
-#include "ares_private.h"
-
-#ifndef HAVE_WRITEV
-ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt)
-{
- char *buffer, *bp;
- int i;
- size_t bytes = 0;
- ssize_t result;
-
- /* Validate iovcnt */
- if (iovcnt <= 0)
- {
- SET_ERRNO(EINVAL);
- return (-1);
- }
-
- /* Validate and find the sum of the iov_len values in the iov array */
- for (i = 0; i < iovcnt; i++)
- {
- if (iov[i].iov_len > INT_MAX - bytes)
- {
- SET_ERRNO(EINVAL);
- return (-1);
- }
- bytes += iov[i].iov_len;
- }
-
- if (bytes == 0)
- return (0);
-
- /* Allocate a temporary buffer to hold the data */
- buffer = malloc(bytes);
- if (!buffer)
- {
- SET_ERRNO(ENOMEM);
- return (-1);
- }
-
- /* Copy the data into buffer */
- for (bp = buffer, i = 0; i < iovcnt; ++i)
- {
- memcpy (bp, iov[i].iov_base, iov[i].iov_len);
- bp += iov[i].iov_len;
- }
-
- /* Send buffer contents */
- result = swrite(s, buffer, bytes);
-
- free(buffer);
-
- return (result);
-}
-#endif
-
diff --git a/ares/ares_writev.h b/ares/ares_writev.h
deleted file mode 100644
index 860b2943f..000000000
--- a/ares/ares_writev.h
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef HEADER_CARES_WRITEV_H
-#define HEADER_CARES_WRITEV_H
-
-/* $Id$ */
-
-/* Copyright 1998 by the Massachusetts Institute of Technology.
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include "ares_setup.h"
-#include "ares.h"
-
-#ifndef HAVE_WRITEV
-
-/* Structure for scatter/gather I/O. */
-struct iovec
-{
- void *iov_base; /* Pointer to data. */
- size_t iov_len; /* Length of data. */
-};
-
-extern ssize_t ares_writev(ares_socket_t s, const struct iovec *iov, int iovcnt);
-
-#endif
-
-#endif /* HEADER_CARES_WRITEV_H */
diff --git a/ares/bitncmp.c b/ares/bitncmp.c
deleted file mode 100644
index 2ec8dc58b..000000000
--- a/ares/bitncmp.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* $Id$ */
-
-/*
- * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
- * Copyright (c) 1996,1999 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#ifndef HAVE_BITNCMP
-
-#include "ares_setup.h"
-#include "bitncmp.h"
-
-/*
- * int
- * bitncmp(l, r, n)
- * compare bit masks l and r, for n bits.
- * return:
- * -1, 1, or 0 in the libc tradition.
- * note:
- * network byte order assumed. this means 192.5.5.240/28 has
- * 0x11110000 in its fourth octet.
- * author:
- * Paul Vixie (ISC), June 1996
- */
-int
-ares_bitncmp(const void *l, const void *r, int n) {
- unsigned int lb, rb;
- int x, b;
-
- b = n / 8;
- x = memcmp(l, r, b);
- if (x || (n % 8) == 0)
- return (x);
-
- lb = ((const unsigned char *)l)[b];
- rb = ((const unsigned char *)r)[b];
- for (b = n % 8; b > 0; b--) {
- if ((lb & 0x80) != (rb & 0x80)) {
- if (lb & 0x80)
- return (1);
- return (-1);
- }
- lb <<= 1;
- rb <<= 1;
- }
- return (0);
-}
-#endif
diff --git a/ares/bitncmp.h b/ares/bitncmp.h
deleted file mode 100644
index acdd45f0f..000000000
--- a/ares/bitncmp.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __ARES_BITNCMP_H
-#define __ARES_BITNCMP_H
-
-/* $Id$ */
-
-/* Copyright (C) 2005 by Dominick Meglio
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifndef HAVE_BITNCMP
-int ares_bitncmp(const void *l, const void *r, int n);
-#else
-#define ares_bitncmp(x,y,z) bitncmp(x,y,z)
-#endif
-
-#endif /* __ARES_BITNCMP_H */
diff --git a/ares/buildconf b/ares/buildconf
deleted file mode 100755
index f2e9ea5c9..000000000
--- a/ares/buildconf
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/bin/sh
-
-#--------------------------------------------------------------------------
-# findtool works as 'which' but we use a different name to make it more
-# obvious we aren't using 'which'! ;-)
-#
-findtool(){
- file="$1"
-
- old_IFS=$IFS; IFS=':'
- for path in $PATH
- do
- IFS=$old_IFS
- # echo "checks for $file in $path" >&2
- if test -f "$path/$file"; then
- echo "$path/$file"
- return
- fi
- done
- IFS=$old_IFS
-}
-
-#--------------------------------------------------------------------------
-# removethis() removes all files and subdirectories with the given name,
-# inside and below the current subdirectory at invocation time.
-#
-removethis(){
- if test "$#" = "1"; then
- find . -depth -name $1 -print > buildconf.tmp.$$
- while read fdname
- do
- if test -f "$fdname"; then
- rm -f "$fdname"
- elif test -d "$fdname"; then
- rm -f -r "$fdname"
- fi
- done < buildconf.tmp.$$
- rm -f buildconf.tmp.$$
- fi
-}
-
-#--------------------------------------------------------------------------
-# Ensure that buildconf runs from the subdirectory where configure.ac lives
-#
-if test ! -f configure.ac ||
- test ! -f ares_init.c ||
- test ! -f m4/cares-functions.m4; then
- echo "Can not run buildconf from outside of c-ares source subdirectory!"
- echo "Change to the subdirectory where buildconf is found, and try again."
- exit 1
-fi
-
-#--------------------------------------------------------------------------
-# this approach that tries 'glibtool' first is some kind of work-around for
-# some BSD-systems I believe that use to provide the GNU libtool named
-# glibtool, with 'libtool' being something completely different.
-libtool=`findtool glibtool 2>/dev/null`
-if test ! -x "$libtool"; then
- libtool=`findtool ${LIBTOOL:-libtool}`
-fi
-
-if test -z "$LIBTOOLIZE"; then
- # set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found
- # $libtool is already the full path
- libtoolize="${libtool}ize"
-else
- libtoolize=`findtool $LIBTOOLIZE`
-fi
-
-#--------------------------------------------------------------------------
-# Remove files generated on previous buildconf/configure run.
-#
-for fname in .deps \
- .libs \
- *.la \
- *.lo \
- *.a \
- *.o \
- Makefile \
- Makefile.in \
- aclocal.m4 \
- aclocal.m4.bak \
- ares_build.h \
- ares_config.h \
- ares_config.h.in \
- autom4te.cache \
- compile \
- config.guess \
- config.log \
- config.lt \
- config.status \
- config.sub \
- configure \
- depcomp \
- libcares.pc \
- libtool \
- libtool.m4 \
- ltmain.sh \
- ltoptions.m4 \
- ltsugar.m4 \
- ltversion.m4 \
- lt~obsolete.m4 \
- missing \
- stamp-h1 \
- stamp-h2 ; do
- removethis "$fname"
-done
-
-#--------------------------------------------------------------------------
-# run the correct scripts now
-#
-
-${libtoolize} --copy --automake --force
-${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS
-${AUTOHEADER:-autoheader}
-${AUTOCONF:-autoconf}
-${AUTOMAKE:-automake} --add-missing --copy
diff --git a/ares/buildconf.bat b/ares/buildconf.bat
deleted file mode 100644
index 4b6a6e213..000000000
--- a/ares/buildconf.bat
+++ /dev/null
@@ -1,21 +0,0 @@
-@echo off
-REM
-REM $Id$
-REM
-REM This batch file must be used to set up a CVS tree to build on
-REM systems where there is no autotools support (i.e. Microsoft).
-REM
-REM This file is not included nor needed for c-ares' release
-REM archives, neither for c-ares' daily snapshot archives.
-
-if exist CVS-INFO goto start_doing
-ECHO ERROR: This file shall only be used with a c-ares CVS tree checkout.
-goto end_all
-:start_doing
-
-if not exist ares_build.h.dist goto end_ares_build_h
-copy /Y ares_build.h.dist ares_build.h
-:end_ares_build_h
-
-:end_all
-
diff --git a/ares/cares.rc b/ares/cares.rc
deleted file mode 100644
index 4dfacc4d8..000000000
--- a/ares/cares.rc
+++ /dev/null
@@ -1,66 +0,0 @@
-/* $Id$ */
-
-/* Copyright (C) 2009 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#include <winver.h>
-#include "ares_version.h"
-
-LANGUAGE 0x09,0x01
-
-#define RC_VERSION ARES_VERSION_MAJOR, ARES_VERSION_MINOR, ARES_VERSION_PATCH, 0
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION RC_VERSION
- PRODUCTVERSION RC_VERSION
- FILEFLAGSMASK 0x3fL
-#if defined(DEBUGBUILD) || defined(_DEBUG)
- FILEFLAGS 1
-#else
- FILEFLAGS 0
-#endif
- FILEOS VOS__WINDOWS32
- FILETYPE VFT_DLL
- FILESUBTYPE 0x0L
-
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "CompanyName", "The c-ares library, http://c-ares.haxx.se/\0"
-#if defined(DEBUGBUILD) || defined(_DEBUG)
- VALUE "FileDescription", "c-ares Debug Shared Library\0"
- VALUE "FileVersion", ARES_VERSION_STR "\0"
- VALUE "InternalName", "c-ares\0"
- VALUE "OriginalFilename", "caresd.dll\0"
-#else
- VALUE "FileDescription", "c-ares Shared Library\0"
- VALUE "FileVersion", ARES_VERSION_STR "\0"
- VALUE "InternalName", "c-ares\0"
- VALUE "OriginalFilename", "cares.dll\0"
-#endif
- VALUE "ProductName", "The c-ares library\0"
- VALUE "ProductVersion", ARES_VERSION_STR "\0"
- VALUE "LegalCopyright", "© 2004 - 2009 Daniel Stenberg, <daniel@haxx.se>.\0"
- VALUE "License", "http://c-ares.haxx.se/license.html\0"
- END
- END
-
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
diff --git a/ares/config-win32.h b/ares/config-win32.h
deleted file mode 100644
index d7b11797f..000000000
--- a/ares/config-win32.h
+++ /dev/null
@@ -1,354 +0,0 @@
-#ifndef __ARES_CONFIG_WIN32_H
-#define __ARES_CONFIG_WIN32_H
-
-/* $Id$ */
-
-/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-/* ================================================================ */
-/* ares/config-win32.h - Hand crafted config file for Windows */
-/* ================================================================ */
-
-/* ---------------------------------------------------------------- */
-/* HEADER FILES */
-/* ---------------------------------------------------------------- */
-
-/* Define if you have the <getopt.h> header file. */
-#if defined(__MINGW32__) || defined(__POCC__)
-#define HAVE_GETOPT_H 1
-#endif
-
-/* Define if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define if you have the <process.h> header file. */
-#ifndef __SALFORDC__
-#define HAVE_PROCESS_H 1
-#endif
-
-/* Define if you have the <signal.h> header file. */
-#define HAVE_SIGNAL_H 1
-
-/* Define if you have the <sys/time.h> header file */
-/* #define HAVE_SYS_TIME_H 1 */
-
-/* Define if you have the <time.h> header file. */
-#define HAVE_TIME_H 1
-
-/* Define if you have the <unistd.h> header file. */
-#if defined(__MINGW32__) || defined(__WATCOMC__) || defined(__LCC__) || \
- defined(__POCC__)
-#define HAVE_UNISTD_H 1
-#endif
-
-/* Define if you have the <windows.h> header file. */
-#define HAVE_WINDOWS_H 1
-
-/* Define if you have the <winsock.h> header file. */
-#define HAVE_WINSOCK_H 1
-
-/* Define if you have the <winsock2.h> header file. */
-#ifndef __SALFORDC__
-#define HAVE_WINSOCK2_H 1
-#endif
-
-/* Define if you have the <ws2tcpip.h> header file. */
-#ifndef __SALFORDC__
-#define HAVE_WS2TCPIP_H 1
-#endif
-
-/* ---------------------------------------------------------------- */
-/* OTHER HEADER INFO */
-/* ---------------------------------------------------------------- */
-
-/* Define if sig_atomic_t is an available typedef. */
-#define HAVE_SIG_ATOMIC_T 1
-
-/* Define if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define if you can safely include both <sys/time.h> and <time.h>. */
-/* #define TIME_WITH_SYS_TIME 1 */
-
-/* ---------------------------------------------------------------- */
-/* FUNCTIONS */
-/* ---------------------------------------------------------------- */
-
-/* Define if you have the closesocket function. */
-#define HAVE_CLOSESOCKET 1
-
-/* Define if you have the gethostname function. */
-#define HAVE_GETHOSTNAME 1
-
-/* Define if you have the ioctlsocket function. */
-#define HAVE_IOCTLSOCKET 1
-
-/* Define if you have a working ioctlsocket FIONBIO function. */
-#define HAVE_IOCTLSOCKET_FIONBIO 1
-
-/* Define if you have the strcasecmp function. */
-/* #define HAVE_STRCASECMP 1 */
-
-/* Define if you have the strdup function. */
-#define HAVE_STRDUP 1
-
-/* Define if you have the stricmp function. */
-#define HAVE_STRICMP 1
-
-/* Define if you have the strncasecmp function. */
-/* #define HAVE_STRNCASECMP 1 */
-
-/* Define if you have the strnicmp function. */
-#define HAVE_STRNICMP 1
-
-/* Define if you have the recv function. */
-#define HAVE_RECV 1
-
-/* Define to the type of arg 1 for recv. */
-#define RECV_TYPE_ARG1 SOCKET
-
-/* Define to the type of arg 2 for recv. */
-#define RECV_TYPE_ARG2 char *
-
-/* Define to the type of arg 3 for recv. */
-#define RECV_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recv. */
-#define RECV_TYPE_ARG4 int
-
-/* Define to the function return type for recv. */
-#define RECV_TYPE_RETV int
-
-/* Define if you have the recvfrom function. */
-#define HAVE_RECVFROM 1
-
-/* Define to the type of arg 1 for recvfrom. */
-#define RECVFROM_TYPE_ARG1 SOCKET
-
-/* Define to the type pointed by arg 2 for recvfrom. */
-#define RECVFROM_TYPE_ARG2 char
-
-/* Define to the type of arg 3 for recvfrom. */
-#define RECVFROM_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for recvfrom. */
-#define RECVFROM_TYPE_ARG4 int
-
-/* Define to the type pointed by arg 5 for recvfrom. */
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-
-/* Define to the type pointed by arg 6 for recvfrom. */
-#define RECVFROM_TYPE_ARG6 int
-
-/* Define to the function return type for recvfrom. */
-#define RECVFROM_TYPE_RETV int
-
-/* Define if you have the send function. */
-#define HAVE_SEND 1
-
-/* Define to the type of arg 1 for send. */
-#define SEND_TYPE_ARG1 SOCKET
-
-/* Define to the type qualifier of arg 2 for send. */
-#define SEND_QUAL_ARG2 const
-
-/* Define to the type of arg 2 for send. */
-#define SEND_TYPE_ARG2 char *
-
-/* Define to the type of arg 3 for send. */
-#define SEND_TYPE_ARG3 int
-
-/* Define to the type of arg 4 for send. */
-#define SEND_TYPE_ARG4 int
-
-/* Define to the function return type for send. */
-#define SEND_TYPE_RETV int
-
-/* Specifics for the Watt-32 tcp/ip stack */
-#ifdef WATT32
- #define SOCKET int
- #define NS_INADDRSZ 4
- #define HAVE_ARPA_NAMESER_H 1
- #define HAVE_ARPA_INET_H 1
- #define HAVE_NETDB_H 1
- #define HAVE_NETINET_IN_H 1
- #define HAVE_SYS_SOCKET_H 1
- #define HAVE_NETINET_TCP_H 1
- #define HAVE_AF_INET6 1
- #define HAVE_PF_INET6 1
- #define HAVE_STRUCT_IN6_ADDR 1
- #define HAVE_STRUCT_SOCKADDR_IN6 1
- #undef HAVE_WINSOCK_H
- #undef HAVE_WINSOCK2_H
- #undef HAVE_WS2TCPIP_H
-#endif
-
-/* ---------------------------------------------------------------- */
-/* TYPEDEF REPLACEMENTS */
-/* ---------------------------------------------------------------- */
-
-/* Define this if in_addr_t is not an available 'typedefed' type */
-#define in_addr_t unsigned long
-
-/* Define as the return type of signal handlers (int or void). */
-#define RETSIGTYPE void
-
-/* Define ssize_t if it is not an available 'typedefed' type */
-#ifndef _SSIZE_T_DEFINED
-# if (defined(__WATCOMC__) && (__WATCOMC__ >= 1240)) || \
- defined(__POCC__) || \
- defined(__MINGW32__)
-# elif defined(_WIN64)
-# define _SSIZE_T_DEFINED
-# define ssize_t __int64
-# else
-# define _SSIZE_T_DEFINED
-# define ssize_t int
-# endif
-#endif
-
-/* ---------------------------------------------------------------- */
-/* TYPE SIZES */
-/* ---------------------------------------------------------------- */
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `short', as computed by sizeof. */
-#define SIZEOF_SHORT 2
-
-/* ---------------------------------------------------------------- */
-/* STRUCT RELATED */
-/* ---------------------------------------------------------------- */
-
-/* Define this if you have struct addrinfo */
-#define HAVE_STRUCT_ADDRINFO 1
-
-/* Define this if you have struct sockaddr_storage */
-#ifndef __SALFORDC__
-#define HAVE_STRUCT_SOCKADDR_STORAGE 1
-#endif
-
-/* Define this if you have struct timeval */
-#define HAVE_STRUCT_TIMEVAL 1
-
-/* ---------------------------------------------------------------- */
-/* COMPILER SPECIFIC */
-/* ---------------------------------------------------------------- */
-
-/* Define to avoid VS2005 complaining about portable C functions */
-#if defined(_MSC_VER) && (_MSC_VER >= 1400)
-#define _CRT_SECURE_NO_DEPRECATE 1
-#define _CRT_NONSTDC_NO_DEPRECATE 1
-#endif
-
-/* Officially, Microsoft's Windows SDK versions 6.X do not support Windows
- 2000 as a supported build target. VS2008 default installations provide an
- embedded Windows SDK v6.0A along with the claim that Windows 2000 is a
- valid build target for VS2008. Popular belief is that binaries built using
- Windows SDK versions 6.X and Windows 2000 as a build target are functional */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500)
-# define VS2008_MINIMUM_TARGET 0x0500
-#endif
-
-/* When no build target is specified VS2008 default build target is Windows
- Vista, which leaves out even Winsows XP. If no build target has been given
- for VS2008 we will target the minimum Officially supported build target,
- which happens to be Windows XP. */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500)
-# define VS2008_DEFAULT_TARGET 0x0501
-#endif
-
-/* VS2008 default target settings and minimum build target check */
-#if defined(_MSC_VER) && (_MSC_VER >= 1500)
-# ifndef _WIN32_WINNT
-# define _WIN32_WINNT VS2008_DEFAULT_TARGET
-# endif
-# ifndef WINVER
-# define WINVER VS2008_DEFAULT_TARGET
-# endif
-# if (_WIN32_WINNT < VS2008_MINIMUM_TARGET) || (WINVER < VS2008_MINIMUM_TARGET)
-# error VS2008 does not support Windows build targets prior to Windows 2000
-# endif
-#endif
-
-/* When no build target is specified Pelles C 5.00 and later default build
- target is Windows Vista. We override default target to be Windows 2000. */
-#if defined(__POCC__) && (__POCC__ >= 500)
-# ifndef _WIN32_WINNT
-# define _WIN32_WINNT 0x0500
-# endif
-# ifndef WINVER
-# define WINVER 0x0500
-# endif
-#endif
-
-/* Availability of freeaddrinfo, getaddrinfo and getnameinfo functions is
- quite convoluted, compiler dependent and even build target dependent. */
-#if defined(HAVE_WS2TCPIP_H)
-# if defined(__POCC__)
-# define HAVE_FREEADDRINFO 1
-# define HAVE_GETADDRINFO 1
-# define HAVE_GETNAMEINFO 1
-# elif defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
-# define HAVE_FREEADDRINFO 1
-# define HAVE_GETADDRINFO 1
-# define HAVE_GETNAMEINFO 1
-# elif defined(_MSC_VER) && (_MSC_VER >= 1200)
-# define HAVE_FREEADDRINFO 1
-# define HAVE_GETADDRINFO 1
-# define HAVE_GETNAMEINFO 1
-# endif
-#endif
-
-#if defined(__POCC__)
-# ifndef _MSC_VER
-# error Microsoft extensions /Ze compiler option is required
-# endif
-# ifndef __POCC__OLDNAMES
-# error Compatibility names /Go compiler option is required
-# endif
-#endif
-
-/* ---------------------------------------------------------------- */
-/* IPV6 COMPATIBILITY */
-/* ---------------------------------------------------------------- */
-
-/* Define this if you have address family AF_INET6 */
-#ifdef HAVE_WINSOCK2_H
-#define HAVE_AF_INET6 1
-#endif
-
-/* Define this if you have protocol family PF_INET6 */
-#ifdef HAVE_WINSOCK2_H
-#define HAVE_PF_INET6 1
-#endif
-
-/* Define this if you have struct in6_addr */
-#ifdef HAVE_WS2TCPIP_H
-#define HAVE_STRUCT_IN6_ADDR 1
-#endif
-
-/* Define this if you have struct sockaddr_in6 */
-#ifdef HAVE_WS2TCPIP_H
-#define HAVE_STRUCT_SOCKADDR_IN6 1
-#endif
-
-/* Define this if you have sockaddr_in6 with scopeid */
-#ifdef HAVE_WS2TCPIP_H
-#define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
-#endif
-
-
-#endif /* __ARES_CONFIG_WIN32_H */
diff --git a/ares/config.dos b/ares/config.dos
deleted file mode 100644
index 7439aa350..000000000
--- a/ares/config.dos
+++ /dev/null
@@ -1,114 +0,0 @@
-#ifndef HEADER_CONFIG_DOS_H
-#define HEADER_CONFIG_DOS_H
-
-/* $Id$ */
-
-/* ================================================================ */
-/* ares/config.dos - Hand crafted config file for DOS */
-/* ================================================================ */
-
-#define PACKAGE "c-ares"
-
-#define HAVE_GETTIMEOFDAY 1
-#define HAVE_IOCTLSOCKET 1
-#define HAVE_IOCTLSOCKET_FIONBIO 1
-#define HAVE_LIMITS_H 1
-#define HAVE_NET_IF_H 1
-#define HAVE_RECV 1
-#define HAVE_RECVFROM 1
-#define HAVE_SEND 1
-#define HAVE_STRDUP 1
-#define HAVE_STRICMP 1
-#define HAVE_STRUCT_IN6_ADDR 1
-#define HAVE_STRUCT_TIMEVAL 1
-#define HAVE_SYS_IOCTL_H 1
-#define HAVE_SYS_SOCKET_H 1
-#define HAVE_SYS_STAT_H 1
-#define HAVE_SYS_TYPES_H 1
-#define HAVE_TIME_H 1
-#define HAVE_UNISTD_H 1
-
-#define NEED_MALLOC_H 1
-
-#define RETSIGTYPE void
-#define SIZEOF_INT 4
-#define SIZEOF_SHORT 2
-#define TIME_WITH_SYS_TIME 1
-
-/* Qualifiers for send(), recv(), recvfrom() and getnameinfo(). */
-
-#define SEND_TYPE_ARG1 int
-#define SEND_QUAL_ARG2 const
-#define SEND_TYPE_ARG2 void *
-#define SEND_TYPE_ARG3 int
-#define SEND_TYPE_ARG4 int
-#define SEND_TYPE_RETV int
-
-#define RECV_TYPE_ARG1 int
-#define RECV_TYPE_ARG2 void *
-#define RECV_TYPE_ARG3 int
-#define RECV_TYPE_ARG4 int
-#define RECV_TYPE_RETV int
-
-#define RECVFROM_TYPE_ARG1 int
-#define RECVFROM_TYPE_ARG2 void
-#define RECVFROM_TYPE_ARG3 int
-#define RECVFROM_TYPE_ARG4 int
-#define RECVFROM_TYPE_ARG5 struct sockaddr
-#define RECVFROM_TYPE_ARG6 int
-#define RECVFROM_TYPE_RETV int
-#define RECVFROM_TYPE_ARG2_IS_VOID 1
-
-#define BSD
-
-#if defined(__HIGHC__) || \
- (defined(__GNUC__) && (__GNUC__ < 4))
-#define ssize_t int
-#endif
-
-/* Target HAVE_x section */
-
-#if defined(DJGPP)
- #define HAVE_STRCASECMP 1
- #define HAVE_STRNCASECMP 1
- #define HAVE_SYS_TIME_H 1
- #define HAVE_VARIADIC_MACROS_GCC 1
-
- /* Because djgpp <= 2.03 doesn't have snprintf() etc. */
- #if (DJGPP_MINOR < 4)
- #define _MPRINTF_REPLACE
- #endif
-
-#elif defined(__WATCOMC__)
- #define HAVE_STRCASECMP 1
-
-#elif defined(__HIGHC__)
- #define HAVE_SYS_TIME_H 1
-#endif
-
-#ifdef WATT32
- #define HAVE_AF_INET6 1
- #define HAVE_ARPA_INET_H 1
- #define HAVE_ARPA_NAMESER_H 1
- #define HAVE_CLOSESOCKET_CAMEL 1
- #define HAVE_GETHOSTNAME 1
- #define HAVE_NETDB_H 1
- #define HAVE_NETINET_IN_H 1
- #define HAVE_NETINET_TCP_H 1
- #define HAVE_PF_INET6 1
- #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1
- #define HAVE_STRUCT_ADDRINFO 1
- #define HAVE_STRUCT_IN6_ADDR 1
- #define HAVE_STRUCT_SOCKADDR_IN6 1
- #define HAVE_SYS_SOCKET_H 1
- #define HAVE_SYS_UIO_H 1
- #define NS_INADDRSZ 4
- #define HAVE_STRUCT_SOCKADDR_IN6 1
- #define CloseSocket(s) close_s((s))
-#endif
-
-#undef word
-#undef byte
-
-#endif /* HEADER_CONFIG_DOS_H */
-
diff --git a/ares/configure.ac b/ares/configure.ac
deleted file mode 100644
index 667141d8a..000000000
--- a/ares/configure.ac
+++ /dev/null
@@ -1,876 +0,0 @@
-AC_PREREQ(2.57)
-
-dnl Version not hardcoded here. Fetched later from ares_version.h
-AC_INIT([c-ares], [-],
- [c-ares mailing list => http://cool.haxx.se/mailman/listinfo/c-ares])
-
-CARES_OVERRIDE_AUTOCONF
-
-AC_CONFIG_SRCDIR([ares_ipv6.h])
-AM_CONFIG_HEADER([ares_config.h ares_build.h])
-AM_MAINTAINER_MODE
-
-CARES_CHECK_OPTION_DEBUG
-CARES_CHECK_OPTION_OPTIMIZE
-CARES_CHECK_OPTION_WARNINGS
-CARES_CHECK_OPTION_CURLDEBUG
-CARES_CHECK_OPTION_SYMBOL_HIDING
-
-CARES_CHECK_PATH_SEPARATOR_REQUIRED
-
-dnl SED is mandatory for configure process and libtool.
-dnl Set it now, allowing it to be changed later.
-AC_PATH_PROG([SED], [sed], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
-if test -z "$SED" || test "$SED" = "not_found"; then
- AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
-fi
-AC_SUBST([SED])
-
-dnl GREP is mandatory for configure process and libtool.
-dnl Set it now, allowing it to be changed later.
-AC_PATH_PROG([GREP], [grep], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
-if test -z "$GREP" || test "$GREP" = "not_found"; then
- AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
-fi
-AC_SUBST([GREP])
-
-dnl EGREP is mandatory for configure process and libtool.
-dnl Set it now, allowing it to be changed later.
-if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
- AC_MSG_CHECKING([for egrep])
- EGREP="$GREP -E"
- AC_MSG_RESULT([$EGREP])
-else
- AC_PATH_PROG([EGREP], [egrep], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
-fi
-if test -z "$EGREP" || test "$EGREP" = "not_found"; then
- AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
-fi
-AC_SUBST([EGREP])
-
-dnl AR is mandatory for configure process and libtool.
-dnl This is target dependent, so check it as a tool.
-AC_PATH_TOOL([AR], [ar], [not_found],
- [$PATH:/usr/bin:/usr/local/bin])
-if test -z "$AR" || test "$AR" = "not_found"; then
- AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
-fi
-AC_SUBST([AR])
-
-dnl Remove non-configure distributed ares_build.h
-if test -f ${srcdir}/ares_build.h; then
- rm -f ${srcdir}/ares_build.h
-fi
-
-dnl Fetch c-ares version from ares_version.h
-VERSION=`$SED -ne 's/^#define ARES_VERSION_STR "\(.*\)"/\1/p' ${srcdir}/ares_version.h`
-AM_INIT_AUTOMAKE([c-ares], [$VERSION])
-AC_MSG_CHECKING([c-ares version])
-AC_MSG_RESULT([$VERSION])
-
-dnl
-dnl Detect the canonical host and target build environment
-dnl
-
-AC_CANONICAL_HOST
-dnl Get system canonical name
-AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
-
-CARES_CHECK_PROG_CC
-AM_PROG_CC_C_O
-AC_PROG_INSTALL
-
-dnl This defines _ALL_SOURCE for AIX
-CARES_CHECK_AIX_ALL_SOURCE
-
-dnl Our configure and build reentrant settings
-CARES_CONFIGURE_THREAD_SAFE
-CARES_CONFIGURE_REENTRANT
-
-dnl check for how to do large files
-AC_SYS_LARGEFILE
-
-case $host_os in
- solaris*)
- AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
- ;;
-esac
-
-dnl support building of Windows DLLs
-AC_LIBTOOL_WIN32_DLL
-
-dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
-AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
-case $host in
- x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
- AC_MSG_RESULT([yes])
- with_pic=yes
- ;;
- *)
- AC_MSG_RESULT([no])
- ;;
-esac
-
-AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
-case $CC in
- icc | */icc)
- AC_MSG_RESULT([yes])
- with_pic=yes
- ;;
- *)
- AC_MSG_RESULT([no])
- ;;
-esac
-
-dnl libtool setup
-AC_PROG_LIBTOOL
-
-AC_MSG_CHECKING([if we need CARES_BUILDING_LIBRARY])
-case $host in
- *-*-mingw*)
- AC_DEFINE(CARES_BUILDING_LIBRARY, 1, [when building c-ares library])
- AC_MSG_RESULT(yes)
- AC_MSG_CHECKING([if we need CARES_STATICLIB])
- if test "X$enable_shared" = "Xno"
- then
- AC_DEFINE(CARES_STATICLIB, 1, [when not building a shared library])
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- ;;
- *)
- AC_MSG_RESULT(no)
- ;;
-esac
-
-dnl **********************************************************************
-dnl platform/compiler/architecture specific checks/flags
-dnl **********************************************************************
-
-CARES_CHECK_COMPILER
-CARES_SET_COMPILER_BASIC_OPTS
-CARES_SET_COMPILER_DEBUG_OPTS
-CARES_SET_COMPILER_OPTIMIZE_OPTS
-CARES_SET_COMPILER_WARNING_OPTS
-
-if test "$compiler_id" = "INTEL_UNIX_C"; then
- #
- if test "$compiler_num" -ge "1000"; then
- dnl icc 10.X or later
- CFLAGS="$CFLAGS -shared-intel"
- elif test "$compiler_num" -ge "900"; then
- dnl icc 9.X specific
- CFLAGS="$CFLAGS -i-dynamic"
- fi
- #
-fi
-
-CARES_CHECK_COMPILER_HALT_ON_ERROR
-CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
-CARES_CHECK_COMPILER_SYMBOL_HIDING
-
-CARES_CHECK_NO_UNDEFINED
-AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
-
-CARES_CHECK_CURLDEBUG
-AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
-
-dnl **********************************************************************
-dnl Compilation based checks should not be done before this point.
-dnl **********************************************************************
-
-dnl **********************************************************************
-dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
-dnl and ws2tcpip.h take precedence over any other further checks which
-dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
-dnl this specific header files. And do them before its results are used.
-dnl **********************************************************************
-
-CURL_CHECK_HEADER_WINDOWS
-CURL_CHECK_NATIVE_WINDOWS
-case X-"$ac_cv_native_windows" in
- X-yes)
- CURL_CHECK_HEADER_WINSOCK
- CURL_CHECK_HEADER_WINSOCK2
- CURL_CHECK_HEADER_WS2TCPIP
- ;;
- *)
- ac_cv_header_winsock_h="no"
- ac_cv_header_winsock2_h="no"
- ac_cv_header_ws2tcpip_h="no"
- ;;
-esac
-
-dnl **********************************************************************
-dnl Checks for libraries.
-dnl **********************************************************************
-
-CARES_CHECK_LIB_XNET
-
-dnl gethostbyname without lib or in the nsl lib?
-AC_CHECK_FUNC(gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- ],
- [ AC_CHECK_LIB(nsl, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="$LIBS -lnsl"
- ])
- ])
-
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- dnl gethostbyname in the socket lib?
- AC_CHECK_LIB(socket, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="$LIBS -lsocket"
- ])
-fi
-
-dnl At least one system has been identified to require BOTH nsl and socket
-dnl libs at the same time to link properly.
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
- my_ac_save_LIBS=$LIBS
- LIBS="-lnsl -lsocket $LIBS"
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- gethostbyname();
- ]])
- ],[
- AC_MSG_RESULT([yes])
- HAVE_GETHOSTBYNAME="1"
- ],[
- AC_MSG_RESULT([no])
- LIBS=$my_ac_save_LIBS
- ])
-fi
-
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- dnl This is for winsock systems
- if test "$ac_cv_header_windows_h" = "yes"; then
- if test "$ac_cv_header_winsock_h" = "yes"; then
- case $host in
- *-*-mingw32ce*)
- winsock_LIB="-lwinsock"
- ;;
- *)
- winsock_LIB="-lwsock32"
- ;;
- esac
- fi
- if test "$ac_cv_header_winsock2_h" = "yes"; then
- winsock_LIB="-lws2_32"
- fi
- if test ! -z "$winsock_LIB"; then
- my_ac_save_LIBS=$LIBS
- LIBS="$winsock_LIB $LIBS"
- AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#else
-#ifdef HAVE_WINSOCK_H
-#include <winsock.h>
-#endif
-#endif
-#endif
- ]],[[
- gethostbyname("www.dummysite.com");
- ]])
- ],[
- AC_MSG_RESULT([yes])
- HAVE_GETHOSTBYNAME="1"
- ],[
- AC_MSG_RESULT([no])
- winsock_LIB=""
- LIBS=$my_ac_save_LIBS
- ])
- fi
- fi
-fi
-
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- dnl This is for Minix 3.1
- AC_MSG_CHECKING([for gethostbyname for Minix 3])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-/* Older Minix versions may need <net/gen/netdb.h> here instead */
-#include <netdb.h>
- ]],[[
- gethostbyname("www.dummysite.com");
- ]])
- ],[
- AC_MSG_RESULT([yes])
- HAVE_GETHOSTBYNAME="1"
- ],[
- AC_MSG_RESULT([no])
- ])
-fi
-
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- dnl This is for eCos with a stubbed DNS implementation
- AC_MSG_CHECKING([for gethostbyname for eCos])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-#include <stdio.h>
-#include <netdb.h>
- ]],[[
- gethostbyname("www.dummysite.com");
- ]])
- ],[
- AC_MSG_RESULT([yes])
- HAVE_GETHOSTBYNAME="1"
- ],[
- AC_MSG_RESULT([no])
- ])
-fi
-
-if test "$HAVE_GETHOSTBYNAME" != "1"
-then
- dnl gethostbyname in the net lib - for BeOS
- AC_CHECK_LIB(net, gethostbyname,
- [HAVE_GETHOSTBYNAME="1"
- LIBS="$LIBS -lnet"
- ])
-fi
-
-
-if test "$HAVE_GETHOSTBYNAME" != "1"; then
- AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
-fi
-
-dnl resolve lib?
-AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
-
-if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
- AC_CHECK_LIB(resolve, strcasecmp,
- [LIBS="-lresolve $LIBS"],
- ,
- -lnsl)
-fi
-ac_cv_func_strcasecmp="no"
-
-CARES_CHECK_LIBS_CONNECT
-
-dnl **********************************************************************
-dnl In case that function clock_gettime with monotonic timer is available,
-dnl check for additional required libraries.
-dnl **********************************************************************
-CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
-
-AC_MSG_CHECKING([whether to use libgcc])
-AC_ARG_ENABLE(libgcc,
-AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
-[ case "$enableval" in
- yes)
- LIBS="$LIBS -lgcc"
- AC_MSG_RESULT(yes)
- ;;
- *) AC_MSG_RESULT(no)
- ;;
- esac ],
- AC_MSG_RESULT(no)
-)
-
-
-dnl Let's hope this split URL remains working:
-dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
-dnl genprogc/thread_quick_ref.htm
-
-
-dnl **********************************************************************
-dnl Back to "normal" configuring
-dnl **********************************************************************
-
-dnl Checks for header files.
-AC_HEADER_STDC
-
-CURL_CHECK_HEADER_MALLOC
-CURL_CHECK_HEADER_MEMORY
-
-dnl check for a few basic system headers we need
-AC_CHECK_HEADERS(
- sys/types.h \
- sys/time.h \
- sys/select.h \
- sys/socket.h \
- sys/ioctl.h \
- sys/param.h \
- sys/uio.h \
- assert.h \
- netdb.h \
- netinet/in.h \
- netinet/tcp.h \
- net/if.h \
- errno.h \
- socket.h \
- strings.h \
- stdbool.h \
- time.h \
- limits.h \
- arpa/nameser.h \
- arpa/nameser_compat.h \
- arpa/inet.h,
-dnl to do if not found
-[],
-dnl to do if found
-[],
-dnl default includes
-[
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-dnl We do this default-include simply to make sure that the nameser_compat.h
-dnl header *REALLY* can be include after the new nameser.h. It seems AIX 5.1
-dnl (and others?) is not designed to allow this.
-#ifdef HAVE_ARPA_NAMESER_H
-#include <arpa/nameser.h>
-#endif
-
-dnl *Sigh* these are needed in order for net/if.h to get properly detected.
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-]
-)
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_TYPE_SIZE_T
-AC_HEADER_TIME
-CURL_CHECK_STRUCT_TIMEVAL
-
-AC_CHECK_SIZEOF(size_t)
-AC_CHECK_SIZEOF(int)
-AC_CHECK_SIZEOF(long)
-CARES_CONFIGURE_LONG
-AC_CHECK_SIZEOF(time_t)
-
-AC_CHECK_TYPE(long long,
- [AC_DEFINE(HAVE_LONGLONG, 1,
- [Define to 1 if the compiler supports the 'long long' data type.])]
- longlong="yes"
-)
-
-if test "xyes" = "x$longlong"; then
- AC_MSG_CHECKING([if numberLL works])
- AC_COMPILE_IFELSE([long long val = 1000LL;],
- [AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])]
- AC_MSG_RESULT(yes),
- AC_MSG_RESULT(no)
- )
-fi
-
-
-# check for ssize_t
-AC_CHECK_TYPE(ssize_t, ,
- AC_DEFINE(ssize_t, int, [the signed version of size_t]))
-
-# check for bool type
-AC_CHECK_TYPE([bool],[
- AC_DEFINE(HAVE_BOOL_T, 1,
- [Define to 1 if bool is an available type.])
-], ,[
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_STDBOOL_H
-#include <stdbool.h>
-#endif
-])
-
-CARES_CONFIGURE_ARES_SOCKLEN_T
-
-TYPE_IN_ADDR_T
-
-TYPE_SOCKADDR_STORAGE
-
-TYPE_SIG_ATOMIC_T
-
-AC_TYPE_SIGNAL
-
-CURL_CHECK_FUNC_RECV
-CURL_CHECK_FUNC_RECVFROM
-CURL_CHECK_FUNC_SEND
-CURL_CHECK_MSG_NOSIGNAL
-
-CARES_CHECK_FUNC_CLOSESOCKET
-CARES_CHECK_FUNC_CLOSESOCKET_CAMEL
-CARES_CHECK_FUNC_CONNECT
-CARES_CHECK_FUNC_FCNTL
-CARES_CHECK_FUNC_FREEADDRINFO
-CARES_CHECK_FUNC_GETADDRINFO
-CARES_CHECK_FUNC_GETHOSTBYADDR
-CARES_CHECK_FUNC_GETHOSTBYNAME
-CARES_CHECK_FUNC_GETHOSTNAME
-CARES_CHECK_FUNC_GETSERVBYPORT_R
-CARES_CHECK_FUNC_INET_NTOP
-CARES_CHECK_FUNC_INET_PTON
-CARES_CHECK_FUNC_IOCTL
-CARES_CHECK_FUNC_IOCTLSOCKET
-CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL
-CARES_CHECK_FUNC_SETSOCKOPT
-CARES_CHECK_FUNC_SOCKET
-CARES_CHECK_FUNC_STRCASECMP
-CARES_CHECK_FUNC_STRCMPI
-CARES_CHECK_FUNC_STRDUP
-CARES_CHECK_FUNC_STRICMP
-CARES_CHECK_FUNC_STRNCASECMP
-CARES_CHECK_FUNC_STRNCMPI
-CARES_CHECK_FUNC_STRNICMP
-CARES_CHECK_FUNC_WRITEV
-
-
-dnl check for AF_INET6
-CARES_CHECK_CONSTANT(
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ], [PF_INET6],
- AC_DEFINE_UNQUOTED(HAVE_PF_INET6,1,[Define to 1 if you have PF_INET6.])
-)
-
-dnl check for PF_INET6
-CARES_CHECK_CONSTANT(
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#endif
- ], [AF_INET6],
- AC_DEFINE_UNQUOTED(HAVE_AF_INET6,1,[Define to 1 if you have AF_INET6.])
-)
-
-
-dnl check for the in6_addr structure
-CARES_CHECK_STRUCT(
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#endif
- ], [in6_addr],
- AC_DEFINE_UNQUOTED(HAVE_STRUCT_IN6_ADDR,1,[Define to 1 if you have struct in6_addr.])
-)
-
-dnl check for the sockaddr_in6 structure
-CARES_CHECK_STRUCT(
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#endif
- ], [sockaddr_in6],
- AC_DEFINE_UNQUOTED(HAVE_STRUCT_SOCKADDR_IN6,1,
- [Define to 1 if you have struct sockaddr_in6.]) ac_have_sockaddr_in6=yes
-)
-
-AC_CHECK_MEMBER(struct sockaddr_in6.sin6_scope_id,
- AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID,1,
- [Define to 1 if your struct sockaddr_in6 has sin6_scope_id.])
- , ,
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#endif
- ])
-
-dnl check for the addrinfo structure
-AC_CHECK_MEMBER(struct addrinfo.ai_flags,
- AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1,
- [Define to 1 if you have struct addrinfo.]),,
- [
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETDB_H
-#include <netdb.h>
-#endif
-#endif
- ]
-)
-
-
-AC_CHECK_FUNCS([bitncmp \
- gettimeofday \
- if_indextoname
-],[
-],[
- func="$ac_func"
- AC_MSG_CHECKING([deeper for $func])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- $func ();
- ]])
- ],[
- AC_MSG_RESULT([yes])
- eval "ac_cv_func_$func=yes"
- AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$func]), [1],
- [Define to 1 if you have the $func function.])
- ],[
- AC_MSG_RESULT([but still no])
- ])
-])
-
-
-dnl Check for inet_net_pton
-AC_CHECK_FUNCS(inet_net_pton)
-dnl Again, some systems have it, but not IPv6
-if test "$ac_cv_func_inet_net_pton" = "yes" ; then
-AC_MSG_CHECKING(if inet_net_pton supports IPv6)
-AC_TRY_RUN(
- [
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-int main()
- {
- struct in6_addr addr6;
- if (inet_net_pton(AF_INET6, "::1", &addr6, sizeof(addr6)) < 1)
- exit(1);
- else
- exit(0);
- }
- ], [
- AC_MSG_RESULT(yes)
- AC_DEFINE_UNQUOTED(HAVE_INET_NET_PTON_IPV6,1,[Define to 1 if inet_net_pton supports IPv6.])
- ], AC_MSG_RESULT(no),AC_MSG_RESULT(no))
-fi
-
-
-AC_CHECK_SIZEOF(struct in6_addr, ,
-[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#endif
-]
-)
-
-AC_CHECK_SIZEOF(struct in_addr, ,
-[
-#undef inline
-#ifdef HAVE_WINDOWS_H
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include <windows.h>
-#ifdef HAVE_WINSOCK2_H
-#include <winsock2.h>
-#ifdef HAVE_WS2TCPIP_H
-#include <ws2tcpip.h>
-#endif
-#endif
-#else
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-#include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-#include <netinet/in.h>
-#endif
-#endif
-]
-)
-
-
-dnl Check if the getnameinfo function is available
-dnl and get the types of five of its arguments.
-CURL_CHECK_FUNC_GETNAMEINFO
-
-
-AC_C_BIGENDIAN(
- [AC_DEFINE(ARES_BIG_ENDIAN, 1,
- [define this if ares is built for a big endian system])],
- ,
- [AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
-)
-
-dnl Check for user-specified random device
-AC_ARG_WITH(random,
-AC_HELP_STRING([--with-random=FILE],
- [read randomness from FILE (default=/dev/urandom)]),
- [ RANDOM_FILE="$withval" ],
- [
- dnl Check for random device. If we're cross compiling, we can't
- dnl check, and it's better to assume it doesn't exist than it is
- dnl to fail on AC_CHECK_FILE or later.
- if test "$cross_compiling" = "no"; then
- AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
- else
- AC_MSG_WARN([cannot check for /dev/urandom while cross compiling; assuming none])
- fi
-
- ]
-)
-if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
- AC_SUBST(RANDOM_FILE)
- AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
- [a suitable file/device to read random data from])
-fi
-
-CARES_CHECK_OPTION_NONBLOCKING
-CARES_CHECK_NONBLOCKING_SOCKET
-
-CARES_CONFIGURE_SYMBOL_HIDING
-
-CARES_PRIVATE_LIBS="$LIBS"
-AC_SUBST(CARES_PRIVATE_LIBS)
-
-dnl squeeze whitespace out of some variables
-
-squeeze CFLAGS
-squeeze CPPFLAGS
-squeeze DEFS
-squeeze LDFLAGS
-squeeze LIBS
-
-squeeze CARES_PRIVATE_LIBS
-
-AC_CONFIG_FILES([Makefile libcares.pc])
-AC_OUTPUT
diff --git a/ares/get_ver.awk b/ares/get_ver.awk
deleted file mode 100644
index 322f280c0..000000000
--- a/ares/get_ver.awk
+++ /dev/null
@@ -1,36 +0,0 @@
-# ***************************************************************************
-# * Project: c-ares
-# *
-# * $Id$
-# ***************************************************************************
-# awk script which fetches c-ares version number and string from input
-# file and writes them to STDOUT. Here you can get an awk version for Win32:
-# http://www.gknw.net/development/prgtools/awk-20070501.zip
-#
-BEGIN {
- if (match (ARGV[1], /ares_version.h/)) {
- while ((getline < ARGV[1]) > 0) {
- if (match ($0, /^#define ARES_COPYRIGHT "[^"]+"$/)) {
- libcares_copyright_str = substr($0, 25, length($0)-25);
- }
- else if (match ($0, /^#define ARES_VERSION_STR "[^"]+"$/)) {
- libcares_ver_str = substr($3, 2, length($3)-2);
- }
- else if (match ($0, /^#define ARES_VERSION_MAJOR [0-9]+$/)) {
- libcares_ver_major = substr($3, 1, length($3));
- }
- else if (match ($0, /^#define ARES_VERSION_MINOR [0-9]+$/)) {
- libcares_ver_minor = substr($3, 1, length($3));
- }
- else if (match ($0, /^#define ARES_VERSION_PATCH [0-9]+$/)) {
- libcares_ver_patch = substr($3, 1, length($3));
- }
- }
- libcares_ver = libcares_ver_major "," libcares_ver_minor "," libcares_ver_patch;
- print "LIBCARES_VERSION = " libcares_ver "";
- print "LIBCARES_VERSION_STR = " libcares_ver_str "";
- print "LIBCARES_COPYRIGHT_STR = " libcares_copyright_str "";
- }
-}
-
-
diff --git a/ares/inet_net_pton.c b/ares/inet_net_pton.c
deleted file mode 100644
index 9c4717ab1..000000000
--- a/ares/inet_net_pton.c
+++ /dev/null
@@ -1,447 +0,0 @@
-/* $Id$ */
-
-/*
- * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
- * Copyright (c) 1996,1999 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "ares.h"
-#include "ares_ipv6.h"
-#include "inet_net_pton.h"
-
-#if !defined(HAVE_INET_NET_PTON) || !defined(HAVE_INET_NET_PTON_IPV6)
-
-/*
- * static int
- * inet_net_pton_ipv4(src, dst, size)
- * convert IPv4 network number from presentation to network format.
- * accepts hex octets, hex strings, decimal octets, and /CIDR.
- * "size" is in bytes and describes "dst".
- * return:
- * number of bits, either imputed classfully or specified with /CIDR,
- * or -1 if some failure occurred (check errno). ENOENT means it was
- * not an IPv4 network specification.
- * note:
- * network byte order assumed. this means 192.5.5.240/28 has
- * 0b11110000 in its fourth octet.
- * note:
- * On Windows we store the error in the thread errno, not
- * in the winsock error code. This is to avoid loosing the
- * actual last winsock error. So use macro ERRNO to fetch the
- * errno this funtion sets when returning (-1), not SOCKERRNO.
- * author:
- * Paul Vixie (ISC), June 1996
- */
-static int
-inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
-{
- static const char xdigits[] = "0123456789abcdef";
- static const char digits[] = "0123456789";
- int n, ch, tmp = 0, dirty, bits;
- const unsigned char *odst = dst;
-
- ch = *src++;
- if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
- && ISXDIGIT(src[1])) {
- /* Hexadecimal: Eat nybble string. */
- if (!size)
- goto emsgsize;
- dirty = 0;
- src++; /* skip x or X. */
- while ((ch = *src++) != '\0' && ISXDIGIT(ch)) {
- if (ISUPPER(ch))
- ch = tolower(ch);
- n = (int)(strchr(xdigits, ch) - xdigits);
- if (dirty == 0)
- tmp = n;
- else
- tmp = (tmp << 4) | n;
- if (++dirty == 2) {
- if (!size--)
- goto emsgsize;
- *dst++ = (unsigned char) tmp;
- dirty = 0;
- }
- }
- if (dirty) { /* Odd trailing nybble? */
- if (!size--)
- goto emsgsize;
- *dst++ = (unsigned char) (tmp << 4);
- }
- } else if (ISDIGIT(ch)) {
- /* Decimal: eat dotted digit string. */
- for (;;) {
- tmp = 0;
- do {
- n = (int)(strchr(digits, ch) - digits);
- tmp *= 10;
- tmp += n;
- if (tmp > 255)
- goto enoent;
- } while ((ch = *src++) != '\0' &&
- ISDIGIT(ch));
- if (!size--)
- goto emsgsize;
- *dst++ = (unsigned char) tmp;
- if (ch == '\0' || ch == '/')
- break;
- if (ch != '.')
- goto enoent;
- ch = *src++;
- if (!ISDIGIT(ch))
- goto enoent;
- }
- } else
- goto enoent;
-
- bits = -1;
- if (ch == '/' &&
- ISDIGIT(src[0]) && dst > odst) {
- /* CIDR width specifier. Nothing can follow it. */
- ch = *src++; /* Skip over the /. */
- bits = 0;
- do {
- n = (int)(strchr(digits, ch) - digits);
- bits *= 10;
- bits += n;
- } while ((ch = *src++) != '\0' && ISDIGIT(ch));
- if (ch != '\0')
- goto enoent;
- if (bits > 32)
- goto emsgsize;
- }
-
- /* Firey death and destruction unless we prefetched EOS. */
- if (ch != '\0')
- goto enoent;
-
- /* If nothing was written to the destination, we found no address. */
- if (dst == odst)
- goto enoent;
- /* If no CIDR spec was given, infer width from net class. */
- if (bits == -1) {
- if (*odst >= 240) /* Class E */
- bits = 32;
- else if (*odst >= 224) /* Class D */
- bits = 8;
- else if (*odst >= 192) /* Class C */
- bits = 24;
- else if (*odst >= 128) /* Class B */
- bits = 16;
- else /* Class A */
- bits = 8;
- /* If imputed mask is narrower than specified octets, widen. */
- if (bits < ((dst - odst) * 8))
- bits = (int)(dst - odst) * 8;
- /*
- * If there are no additional bits specified for a class D
- * address adjust bits to 4.
- */
- if (bits == 8 && *odst == 224)
- bits = 4;
- }
- /* Extend network to cover the actual mask. */
- while (bits > ((dst - odst) * 8)) {
- if (!size--)
- goto emsgsize;
- *dst++ = '\0';
- }
- return (bits);
-
- enoent:
- SET_ERRNO(ENOENT);
- return (-1);
-
- emsgsize:
- SET_ERRNO(EMSGSIZE);
- return (-1);
-}
-
-static int
-getbits(const char *src, int *bitsp)
-{
- static const char digits[] = "0123456789";
- int n;
- int val;
- char ch;
-
- val = 0;
- n = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- pch = strchr(digits, ch);
- if (pch != NULL) {
- if (n++ != 0 && val == 0) /* no leading zeros */
- return (0);
- val *= 10;
- val += (pch - digits);
- if (val > 128) /* range */
- return (0);
- continue;
- }
- return (0);
- }
- if (n == 0)
- return (0);
- *bitsp = val;
- return (1);
-}
-
-static int
-getv4(const char *src, unsigned char *dst, int *bitsp)
-{
- static const char digits[] = "0123456789";
- unsigned char *odst = dst;
- int n;
- unsigned int val;
- char ch;
-
- val = 0;
- n = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- pch = strchr(digits, ch);
- if (pch != NULL) {
- if (n++ != 0 && val == 0) /* no leading zeros */
- return (0);
- val *= 10;
- val += (pch - digits);
- if (val > 255) /* range */
- return (0);
- continue;
- }
- if (ch == '.' || ch == '/') {
- if (dst - odst > 3) /* too many octets? */
- return (0);
- *dst++ = (unsigned char)val;
- if (ch == '/')
- return (getbits(src, bitsp));
- val = 0;
- n = 0;
- continue;
- }
- return (0);
- }
- if (n == 0)
- return (0);
- if (dst - odst > 3) /* too many octets? */
- return (0);
- *dst++ = (unsigned char)val;
- return (1);
-}
-
-static int
-inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
-{
- static const char xdigits_l[] = "0123456789abcdef",
- xdigits_u[] = "0123456789ABCDEF";
- unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
- const char *xdigits, *curtok;
- int ch, saw_xdigit;
- unsigned int val;
- int digits;
- int bits;
- size_t bytes;
- int words;
- int ipv4;
-
- memset((tp = tmp), '\0', NS_IN6ADDRSZ);
- endp = tp + NS_IN6ADDRSZ;
- colonp = NULL;
- /* Leading :: requires some special handling. */
- if (*src == ':')
- if (*++src != ':')
- goto enoent;
- curtok = src;
- saw_xdigit = 0;
- val = 0;
- digits = 0;
- bits = -1;
- ipv4 = 0;
- while ((ch = *src++) != '\0') {
- const char *pch;
-
- if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
- pch = strchr((xdigits = xdigits_u), ch);
- if (pch != NULL) {
- val <<= 4;
- val |= (pch - xdigits);
- if (++digits > 4)
- goto enoent;
- saw_xdigit = 1;
- continue;
- }
- if (ch == ':') {
- curtok = src;
- if (!saw_xdigit) {
- if (colonp)
- goto enoent;
- colonp = tp;
- continue;
- } else if (*src == '\0')
- goto enoent;
- if (tp + NS_INT16SZ > endp)
- return (0);
- *tp++ = (unsigned char)((val >> 8) & 0xff);
- *tp++ = (unsigned char)(val & 0xff);
- saw_xdigit = 0;
- digits = 0;
- val = 0;
- continue;
- }
- if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
- getv4(curtok, tp, &bits) > 0) {
- tp += NS_INADDRSZ;
- saw_xdigit = 0;
- ipv4 = 1;
- break; /* '\0' was seen by inet_pton4(). */
- }
- if (ch == '/' && getbits(src, &bits) > 0)
- break;
- goto enoent;
- }
- if (saw_xdigit) {
- if (tp + NS_INT16SZ > endp)
- goto enoent;
- *tp++ = (unsigned char)((val >> 8) & 0xff);
- *tp++ = (unsigned char)(val & 0xff);
- }
- if (bits == -1)
- bits = 128;
-
- words = (bits + 15) / 16;
- if (words < 2)
- words = 2;
- if (ipv4)
- words = 8;
- endp = tmp + 2 * words;
-
- if (colonp != NULL) {
- /*
- * Since some memmove()'s erroneously fail to handle
- * overlapping regions, we'll do the shift by hand.
- */
- const int n = (int)(tp - colonp);
- int i;
-
- if (tp == endp)
- goto enoent;
- for (i = 1; i <= n; i++) {
- endp[- i] = colonp[n - i];
- colonp[n - i] = 0;
- }
- tp = endp;
- }
- if (tp != endp)
- goto enoent;
-
- bytes = (bits + 7) / 8;
- if (bytes > size)
- goto emsgsize;
- memcpy(dst, tmp, bytes);
- return (bits);
-
- enoent:
- SET_ERRNO(ENOENT);
- return (-1);
-
- emsgsize:
- SET_ERRNO(EMSGSIZE);
- return (-1);
-}
-
-/*
- * int
- * inet_net_pton(af, src, dst, size)
- * convert network number from presentation to network format.
- * accepts hex octets, hex strings, decimal octets, and /CIDR.
- * "size" is in bytes and describes "dst".
- * return:
- * number of bits, either imputed classfully or specified with /CIDR,
- * or -1 if some failure occurred (check errno). ENOENT means it was
- * not a valid network specification.
- * note:
- * On Windows we store the error in the thread errno, not
- * in the winsock error code. This is to avoid loosing the
- * actual last winsock error. So use macro ERRNO to fetch the
- * errno this funtion sets when returning (-1), not SOCKERRNO.
- * author:
- * Paul Vixie (ISC), June 1996
- */
-int
-ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
-{
- switch (af) {
- case AF_INET:
- return (inet_net_pton_ipv4(src, dst, size));
- case AF_INET6:
- return (inet_net_pton_ipv6(src, dst, size));
- default:
- SET_ERRNO(EAFNOSUPPORT);
- return (-1);
- }
-}
-
-#endif
-
-#ifndef HAVE_INET_PTON
-int ares_inet_pton(int af, const char *src, void *dst)
-{
- int result;
- size_t size;
-
- if (af == AF_INET)
- size = sizeof(struct in_addr);
- else if (af == AF_INET6)
- size = sizeof(struct ares_in6_addr);
- else
- {
- SET_ERRNO(EAFNOSUPPORT);
- return -1;
- }
- result = ares_inet_net_pton(af, src, dst, size);
- if (result == -1 && ERRNO == ENOENT)
- return 0;
- return (result > -1 ? 1 : -1);
-}
-#endif
diff --git a/ares/inet_net_pton.h b/ares/inet_net_pton.h
deleted file mode 100644
index f5642a505..000000000
--- a/ares/inet_net_pton.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#ifndef __ARES_INET_NET_PTON_H
-#define __ARES_INET_NET_PTON_H
-
-/* $Id$ */
-
-/* Copyright (C) 2005 by Daniel Stenberg
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifdef HAVE_INET_PTON
-#define ares_inet_pton(x,y,z) inet_pton(x,y,z)
-#else
-int ares_inet_pton(int af, const char *src, void *dst);
-#endif
-#if defined(HAVE_INET_NET_PTON) && defined(HAVE_INET_NET_PTON_IPV6)
-#define ares_inet_net_pton(w,x,y,z) inet_net_pton(w,x,y,z)
-#else
-int ares_inet_net_pton(int af, const char *src, void *dst, size_t size);
-#endif
-
-#endif /* __ARES_INET_NET_PTON_H */
diff --git a/ares/inet_ntop.c b/ares/inet_ntop.c
deleted file mode 100644
index 3b3539780..000000000
--- a/ares/inet_ntop.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* $Id$ */
-
-/* Copyright (c) 1996 by Internet Software Consortium.
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
- * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
- * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
- * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
- * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
- * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#include "ares_setup.h"
-
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-#ifdef HAVE_ARPA_NAMESER_H
-# include <arpa/nameser.h>
-#else
-# include "nameser.h"
-#endif
-#ifdef HAVE_ARPA_NAMESER_COMPAT_H
-# include <arpa/nameser_compat.h>
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "ares.h"
-#include "ares_ipv6.h"
-#include "inet_ntop.h"
-
-
-#ifndef HAVE_INET_NTOP
-
-#ifdef SPRINTF_CHAR
-# define SPRINTF(x) strlen(sprintf/**/x)
-#else
-# define SPRINTF(x) ((size_t)sprintf x)
-#endif
-
-/*
- * WARNING: Don't even consider trying to compile this on a system where
- * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
- */
-
-static const char *inet_ntop4(const unsigned char *src, char *dst, size_t size);
-static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size);
-
-/* char *
- * inet_ntop(af, src, dst, size)
- * convert a network format address to presentation format.
- * return:
- * pointer to presentation format address (`dst'), or NULL (see errno).
- * note:
- * On Windows we store the error in the thread errno, not
- * in the winsock error code. This is to avoid loosing the
- * actual last winsock error. So use macro ERRNO to fetch the
- * errno this funtion sets when returning NULL, not SOCKERRNO.
- * author:
- * Paul Vixie, 1996.
- */
-const char *
-ares_inet_ntop(int af, const void *src, char *dst, size_t size)
-{
- switch (af)
- {
- case AF_INET:
- return (inet_ntop4(src, dst, size));
- case AF_INET6:
- return (inet_ntop6(src, dst, size));
- default:
- SET_ERRNO(EAFNOSUPPORT);
- return (NULL);
- }
- /* NOTREACHED */
-}
-
-/* const char *
- * inet_ntop4(src, dst, size)
- * format an IPv4 address, more or less like inet_ntoa()
- * return:
- * `dst' (as a const)
- * notes:
- * (1) uses no statics
- * (2) takes a unsigned char* not an in_addr as input
- * author:
- * Paul Vixie, 1996.
- */
-static const char *
-inet_ntop4(const unsigned char *src, char *dst, size_t size)
-{
- static const char fmt[] = "%u.%u.%u.%u";
- char tmp[sizeof "255.255.255.255"];
-
- if (SPRINTF((tmp, fmt, src[0], src[1], src[2], src[3])) > size)
- {
- SET_ERRNO(ENOSPC);
- return (NULL);
- }
- strcpy(dst, tmp);
- return (dst);
-}
-
-/* const char *
- * inet_ntop6(src, dst, size)
- * convert IPv6 binary address into presentation (printable) format
- * author:
- * Paul Vixie, 1996.
- */
-static const char *
-inet_ntop6(const unsigned char *src, char *dst, size_t size)
-{
- /*
- * Note that int32_t and int16_t need only be "at least" large enough
- * to contain a value of the specified size. On some systems, like
- * Crays, there is no such thing as an integer variable with 16 bits.
- * Keep this in mind if you think this function should have been coded
- * to use pointer overlays. All the world's not a VAX.
- */
- char tmp[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
- char *tp;
- struct {
- long base;
- long len;
- } best, cur;
- unsigned long words[NS_IN6ADDRSZ / NS_INT16SZ];
- int i;
-
- /*
- * Preprocess:
- * Copy the input (bytewise) array into a wordwise array.
- * Find the longest run of 0x00's in src[] for :: shorthanding.
- */
- memset(words, '\0', sizeof(words));
- for (i = 0; i < NS_IN6ADDRSZ; i++)
- words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3));
-
- best.base = -1;
- cur.base = -1;
- best.len = 0;
- cur.len = 0;
-
- for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
- {
- if (words[i] == 0)
- {
- if (cur.base == -1)
- cur.base = i, cur.len = 1;
- else
- cur.len++;
- }
- else
- {
- if (cur.base != -1)
- {
- if (best.base == -1 || cur.len > best.len)
- best = cur;
- cur.base = -1;
- }
- }
- }
- if (cur.base != -1)
- {
- if (best.base == -1 || cur.len > best.len)
- best = cur;
- }
- if (best.base != -1 && best.len < 2)
- best.base = -1;
-
- /*
- * Format the result.
- */
- tp = tmp;
- for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++)
- {
- /* Are we inside the best run of 0x00's? */
- if (best.base != -1 && i >= best.base &&
- i < (best.base + best.len))
- {
- if (i == best.base)
- *tp++ = ':';
- continue;
- }
- /* Are we following an initial run of 0x00s or any real hex? */
- if (i != 0)
- *tp++ = ':';
- /* Is this address an encapsulated IPv4? */
- if (i == 6 && best.base == 0 &&
- (best.len == 6 || (best.len == 5 && words[5] == 0xffff)))
- {
- if (!inet_ntop4(src+12, tp, sizeof(tmp) - (tp - tmp)))
- return (NULL);
- tp += strlen(tp);
- break;
- }
- tp += SPRINTF((tp, "%lx", words[i]));
- }
-
- /* Was it a trailing run of 0x00's? */
- if (best.base != -1 && (best.base + best.len) == (NS_IN6ADDRSZ / NS_INT16SZ))
- *tp++ = ':';
- *tp++ = '\0';
-
- /*
- * Check for overflow, copy, and we're done.
- */
- if ((size_t)(tp - tmp) > size)
- {
- SET_ERRNO(ENOSPC);
- return (NULL);
- }
- strcpy(dst, tmp);
- return (dst);
-}
-#endif
-
diff --git a/ares/inet_ntop.h b/ares/inet_ntop.h
deleted file mode 100644
index ab9735e80..000000000
--- a/ares/inet_ntop.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef __ARES_INET_NTOP_H
-#define __ARES_INET_NTOP_H
-
-/* $Id$ */
-
-/* Copyright (C) 2005 by Dominick Meglio
- *
- * Permission to use, copy, modify, and distribute this
- * software and its documentation for any purpose and without
- * fee is hereby granted, provided that the above copyright
- * notice appear in all copies and that both that copyright
- * notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in
- * advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- * M.I.T. makes no representations about the suitability of
- * this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-#ifdef HAVE_INET_NTOP
-#define ares_inet_ntop(w,x,y,z) inet_ntop(w,x,y,z)
-#else
-const char *ares_inet_ntop(int af, const void *src, char *dst, size_t size);
-#endif
-
-#endif /* __ARES_INET_NTOP_H */
diff --git a/ares/install-sh b/ares/install-sh
deleted file mode 100755
index e8436696c..000000000
--- a/ares/install-sh
+++ /dev/null
@@ -1,250 +0,0 @@
-#!/bin/sh
-#
-# install - install a program, script, or datafile
-# This comes from X11R5 (mit/util/scripts/install.sh).
-#
-# Copyright 1991 by the Massachusetts Institute of Technology
-#
-# Permission to use, copy, modify, distribute, and sell this software and its
-# documentation for any purpose is hereby granted without fee, provided that
-# the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-# Calling this script install-sh is preferred over install.sh, to prevent
-# `make' implicit rules from creating a file called install from it
-# when there is no Makefile.
-#
-# This script is compatible with the BSD install script, but was written
-# from scratch. It can only install one file at a time, a restriction
-# shared with many OS's install programs.
-
-
-# set DOITPROG to echo to test this script
-
-# Don't use :- since 4.3BSD and earlier shells don't like it.
-doit="${DOITPROG-}"
-
-
-# put in absolute paths if you don't have them in your path; or use env. vars.
-
-mvprog="${MVPROG-mv}"
-cpprog="${CPPROG-cp}"
-chmodprog="${CHMODPROG-chmod}"
-chownprog="${CHOWNPROG-chown}"
-chgrpprog="${CHGRPPROG-chgrp}"
-stripprog="${STRIPPROG-strip}"
-rmprog="${RMPROG-rm}"
-mkdirprog="${MKDIRPROG-mkdir}"
-
-transformbasename=""
-transform_arg=""
-instcmd="$mvprog"
-chmodcmd="$chmodprog 0755"
-chowncmd=""
-chgrpcmd=""
-stripcmd=""
-rmcmd="$rmprog -f"
-mvcmd="$mvprog"
-src=""
-dst=""
-dir_arg=""
-
-while [ x"$1" != x ]; do
- case $1 in
- -c) instcmd="$cpprog"
- shift
- continue;;
-
- -d) dir_arg=true
- shift
- continue;;
-
- -m) chmodcmd="$chmodprog $2"
- shift
- shift
- continue;;
-
- -o) chowncmd="$chownprog $2"
- shift
- shift
- continue;;
-
- -g) chgrpcmd="$chgrpprog $2"
- shift
- shift
- continue;;
-
- -s) stripcmd="$stripprog"
- shift
- continue;;
-
- -t=*) transformarg=`echo $1 | sed 's/-t=//'`
- shift
- continue;;
-
- -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
- shift
- continue;;
-
- *) if [ x"$src" = x ]
- then
- src=$1
- else
- # this colon is to work around a 386BSD /bin/sh bug
- :
- dst=$1
- fi
- shift
- continue;;
- esac
-done
-
-if [ x"$src" = x ]
-then
- echo "install: no input file specified"
- exit 1
-else
- true
-fi
-
-if [ x"$dir_arg" != x ]; then
- dst=$src
- src=""
-
- if [ -d $dst ]; then
- instcmd=:
- else
- instcmd=mkdir
- fi
-else
-
-# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
-# if $src (and thus $dsttmp) contains '*'.
-
- if [ -f $src -o -d $src ]
- then
- true
- else
- echo "install: $src does not exist"
- exit 1
- fi
-
- if [ x"$dst" = x ]
- then
- echo "install: no destination specified"
- exit 1
- else
- true
- fi
-
-# If destination is a directory, append the input filename; if your system
-# does not like double slashes in filenames, you may need to add some logic
-
- if [ -d $dst ]
- then
- dst="$dst"/`basename $src`
- else
- true
- fi
-fi
-
-## this sed command emulates the dirname command
-dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
-
-# Make sure that the destination directory exists.
-# this part is taken from Noah Friedman's mkinstalldirs script
-
-# Skip lots of stat calls in the usual case.
-if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
-IFS="${IFS-${defaultIFS}}"
-
-oIFS="${IFS}"
-# Some sh's can't handle IFS=/ for some reason.
-IFS='%'
-set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
-IFS="${oIFS}"
-
-pathcomp=''
-
-while [ $# -ne 0 ] ; do
- pathcomp="${pathcomp}${1}"
- shift
-
- if [ ! -d "${pathcomp}" ] ;
- then
- $mkdirprog "${pathcomp}"
- else
- true
- fi
-
- pathcomp="${pathcomp}/"
-done
-fi
-
-if [ x"$dir_arg" != x ]
-then
- $doit $instcmd $dst &&
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
-else
-
-# If we're going to rename the final executable, determine the name now.
-
- if [ x"$transformarg" = x ]
- then
- dstfile=`basename $dst`
- else
- dstfile=`basename $dst $transformbasename |
- sed $transformarg`$transformbasename
- fi
-
-# don't allow the sed command to completely eliminate the filename
-
- if [ x"$dstfile" = x ]
- then
- dstfile=`basename $dst`
- else
- true
- fi
-
-# Make a temp file name in the proper directory.
-
- dsttmp=$dstdir/#inst.$$#
-
-# Move or copy the file name to the temp name
-
- $doit $instcmd $src $dsttmp &&
-
- trap "rm -f ${dsttmp}" 0 &&
-
-# and set any options; do chmod last to preserve setuid bits
-
-# If any of these fail, we abort the whole thing. If we want to
-# ignore errors from any of these, just make sure not to ignore
-# errors from the above "$doit $instcmd $src $dsttmp" command.
-
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
-
-# Now rename the file to the real destination.
-
- $doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
-
-fi &&
-
-
-exit 0
diff --git a/ares/libcares.pc.in b/ares/libcares.pc.in
deleted file mode 100644
index df6a0aa24..000000000
--- a/ares/libcares.pc.in
+++ /dev/null
@@ -1,21 +0,0 @@
-#***************************************************************************
-# Project ___ __ _ _ __ ___ ___
-# / __|____ / _` | '__/ _ \/ __|
-# | (_|_____| (_| | | | __/\__ \
-# \___| \__,_|_| \___||___/
-# $Id$
-#
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: c-ares
-URL: http://daniel.haxx.se/projects/c-ares/
-Description: asynchronous DNS lookup library
-Version: @VERSION@
-Requires:
-Requires.private:
-Cflags: -I${includedir}
-Libs: -L${libdir} -lcares
-Libs.private: @CARES_PRIVATE_LIBS@
diff --git a/ares/m4/.cvsignore b/ares/m4/.cvsignore
deleted file mode 100644
index 38066ddf7..000000000
--- a/ares/m4/.cvsignore
+++ /dev/null
@@ -1,5 +0,0 @@
-libtool.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-lt~obsolete.m4
diff --git a/ares/m4/.gitignore b/ares/m4/.gitignore
deleted file mode 100644
index 38066ddf7..000000000
--- a/ares/m4/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-libtool.m4
-ltoptions.m4
-ltsugar.m4
-ltversion.m4
-lt~obsolete.m4
diff --git a/ares/m4/cares-compilers.m4 b/ares/m4/cares-compilers.m4
deleted file mode 100644
index 3a5738971..000000000
--- a/ares/m4/cares-compilers.m4
+++ /dev/null
@@ -1,1551 +0,0 @@
-#***************************************************************************
-# $Id$
-#
-# Copyright (C) 2009-2010 by Daniel Stenberg et al
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-#***************************************************************************
-
-# File version for 'aclocal' use. Keep it a single number.
-# serial 65
-
-
-dnl CARES_CHECK_COMPILER
-dnl -------------------------------------------------
-dnl Verify if the C compiler being used is known.
-
-AC_DEFUN([CARES_CHECK_COMPILER], [
- AC_BEFORE([$0],[CARES_CHECK_NO_UNDEFINED])dnl
- #
- compiler_id="unknown"
- compiler_num="0"
- #
- flags_dbg_all="unknown"
- flags_dbg_yes="unknown"
- flags_dbg_off="unknown"
- flags_opt_all="unknown"
- flags_opt_yes="unknown"
- flags_opt_off="unknown"
- #
- CARES_CHECK_COMPILER_DEC_C
- CARES_CHECK_COMPILER_HPUX_C
- CARES_CHECK_COMPILER_IBM_C
- CARES_CHECK_COMPILER_INTEL_C
- CARES_CHECK_COMPILER_CLANG
- CARES_CHECK_COMPILER_GNU_C
- CARES_CHECK_COMPILER_LCC
- CARES_CHECK_COMPILER_SGI_MIPSPRO_C
- CARES_CHECK_COMPILER_SGI_MIPS_C
- CARES_CHECK_COMPILER_SUNPRO_C
- CARES_CHECK_COMPILER_TINY_C
- CARES_CHECK_COMPILER_WATCOM_C
- #
- if test "$compiler_id" = "unknown"; then
- cat <<_EOF 1>&2
-***
-*** Warning: This configure script does not have information about the
-*** compiler you are using, relative to the flags required to enable or
-*** disable generation of debug info, optimization options or warnings.
-***
-*** Whatever settings are present in CFLAGS will be used for this run.
-***
-*** If you wish to help the c-ares project to better support your compiler
-*** you can report this and the required info on the c-ares development
-*** mailing list: http://cool.haxx.se/mailman/listinfo/c-ares/
-***
-_EOF
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_CLANG
-dnl -------------------------------------------------
-dnl Verify if compiler being used is clang.
-
-AC_DEFUN([CARES_CHECK_COMPILER_CLANG], [
- AC_BEFORE([$0],[CARES_CHECK_COMPILER_GNU_C])dnl
- AC_MSG_CHECKING([if compiler is clang])
- CURL_CHECK_DEF([__clang__], [], [silent])
- if test "$curl_cv_have_def___clang__" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="CLANG"
- clangver=`$CC -dumpversion`
- clangvhi=`echo $clangver | cut -d . -f1`
- clangvlo=`echo $clangver | cut -d . -f2`
- compiler_num=`(expr $clangvhi "*" 100 + $clangvlo) 2>/dev/null`
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
- flags_dbg_all="$flags_dbg_all -ggdb"
- flags_dbg_all="$flags_dbg_all -gstabs"
- flags_dbg_all="$flags_dbg_all -gstabs+"
- flags_dbg_all="$flags_dbg_all -gcoff"
- flags_dbg_all="$flags_dbg_all -gxcoff"
- flags_dbg_all="$flags_dbg_all -gdwarf-2"
- flags_dbg_all="$flags_dbg_all -gvms"
- flags_dbg_yes="-g"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -Os -O3 -O4"
- flags_opt_yes="-Os"
- flags_opt_off="-O0"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_DEC_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is DEC C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_DEC_C], [
- AC_MSG_CHECKING([if compiler is DEC/Compaq/HP C])
- CURL_CHECK_DEF([__DECC], [], [silent])
- CURL_CHECK_DEF([__DECC_VER], [], [silent])
- if test "$curl_cv_have_def___DECC" = "yes" &&
- test "$curl_cv_have_def___DECC_VER" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="DEC_C"
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
- flags_dbg_yes="-g2"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -O3 -O4"
- flags_opt_yes="-O1"
- flags_opt_off="-O0"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_GNU_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is GNU C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_GNU_C], [
- AC_REQUIRE([CARES_CHECK_COMPILER_INTEL_C])dnl
- AC_REQUIRE([CARES_CHECK_COMPILER_CLANG])dnl
- AC_MSG_CHECKING([if compiler is GNU C])
- CURL_CHECK_DEF([__GNUC__], [], [silent])
- if test "$curl_cv_have_def___GNUC__" = "yes" &&
- test "$compiler_id" = "unknown"; then
- AC_MSG_RESULT([yes])
- compiler_id="GNU_C"
- gccver=`$CC -dumpversion`
- gccvhi=`echo $gccver | cut -d . -f1`
- gccvlo=`echo $gccver | cut -d . -f2`
- compiler_num=`(expr $gccvhi "*" 100 + $gccvlo) 2>/dev/null`
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
- flags_dbg_all="$flags_dbg_all -ggdb"
- flags_dbg_all="$flags_dbg_all -gstabs"
- flags_dbg_all="$flags_dbg_all -gstabs+"
- flags_dbg_all="$flags_dbg_all -gcoff"
- flags_dbg_all="$flags_dbg_all -gxcoff"
- flags_dbg_all="$flags_dbg_all -gdwarf-2"
- flags_dbg_all="$flags_dbg_all -gvms"
- flags_dbg_yes="-g"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -O3 -Os"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_HPUX_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is HP-UX C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_HPUX_C], [
- AC_MSG_CHECKING([if compiler is HP-UX C])
- CURL_CHECK_DEF([__HP_cc], [], [silent])
- if test "$curl_cv_have_def___HP_cc" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="HP_UX_C"
- flags_dbg_all="-g -s"
- flags_dbg_yes="-g"
- flags_dbg_off="-s"
- flags_opt_all="-O +O0 +O1 +O2 +O3 +O4"
- flags_opt_yes="+O2"
- flags_opt_off="+O0"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_IBM_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is IBM C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_IBM_C], [
- AC_MSG_CHECKING([if compiler is IBM C])
- CURL_CHECK_DEF([__IBMC__], [], [silent])
- if test "$curl_cv_have_def___IBMC__" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="IBM_C"
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
- flags_dbg_yes="-g"
- flags_dbg_off=""
- flags_opt_all="-O -O0 -O1 -O2 -O3 -O4 -O5"
- flags_opt_all="$flags_opt_all -qnooptimize"
- flags_opt_all="$flags_opt_all -qoptimize=0"
- flags_opt_all="$flags_opt_all -qoptimize=1"
- flags_opt_all="$flags_opt_all -qoptimize=2"
- flags_opt_all="$flags_opt_all -qoptimize=3"
- flags_opt_all="$flags_opt_all -qoptimize=4"
- flags_opt_all="$flags_opt_all -qoptimize=5"
- flags_opt_yes="-O2"
- flags_opt_off="-qnooptimize"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_INTEL_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is Intel C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_INTEL_C], [
- AC_BEFORE([$0],[CARES_CHECK_COMPILER_GNU_C])dnl
- AC_MSG_CHECKING([if compiler is Intel C])
- CURL_CHECK_DEF([__INTEL_COMPILER], [], [silent])
- if test "$curl_cv_have_def___INTEL_COMPILER" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_num="$curl_cv_def___INTEL_COMPILER"
- CURL_CHECK_DEF([__unix__], [], [silent])
- if test "$curl_cv_have_def___unix__" = "yes"; then
- compiler_id="INTEL_UNIX_C"
- flags_dbg_all="-g -g0"
- flags_dbg_yes="-g"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -O3 -Os"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- compiler_id="INTEL_WINDOWS_C"
- flags_dbg_all="/ZI /Zi /zI /zi /ZD /Zd /zD /zd /Z7 /z7 /Oy /Oy-"
- flags_dbg_all="$flags_dbg_all /debug"
- flags_dbg_all="$flags_dbg_all /debug:none"
- flags_dbg_all="$flags_dbg_all /debug:minimal"
- flags_dbg_all="$flags_dbg_all /debug:partial"
- flags_dbg_all="$flags_dbg_all /debug:full"
- flags_dbg_all="$flags_dbg_all /debug:semantic_stepping"
- flags_dbg_all="$flags_dbg_all /debug:extended"
- flags_dbg_yes="/Zi /Oy-"
- flags_dbg_off="/debug:none /Oy-"
- flags_opt_all="/O /O0 /O1 /O2 /O3 /Od /Og /Og- /Oi /Oi-"
- flags_opt_yes="/O2"
- flags_opt_off="/Od"
- fi
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_LCC
-dnl -------------------------------------------------
-dnl Verify if compiler being used is LCC.
-
-AC_DEFUN([CARES_CHECK_COMPILER_LCC], [
- AC_MSG_CHECKING([if compiler is LCC])
- CURL_CHECK_DEF([__LCC__], [], [silent])
- if test "$curl_cv_have_def___LCC__" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="LCC"
- flags_dbg_all="-g"
- flags_dbg_yes="-g"
- flags_dbg_off=""
- flags_opt_all=""
- flags_opt_yes=""
- flags_opt_off=""
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_SGI_MIPS_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is SGI MIPS C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_SGI_MIPS_C], [
- AC_REQUIRE([CARES_CHECK_COMPILER_SGI_MIPSPRO_C])dnl
- AC_MSG_CHECKING([if compiler is SGI MIPS C])
- CURL_CHECK_DEF([__GNUC__], [], [silent])
- CURL_CHECK_DEF([__sgi], [], [silent])
- if test "$curl_cv_have_def___GNUC__" = "no" &&
- test "$curl_cv_have_def___sgi" = "yes" &&
- test "$compiler_id" = "unknown"; then
- AC_MSG_RESULT([yes])
- compiler_id="SGI_MIPS_C"
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
- flags_dbg_yes="-g"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_SGI_MIPSPRO_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is SGI MIPSpro C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_SGI_MIPSPRO_C], [
- AC_BEFORE([$0],[CARES_CHECK_COMPILER_SGI_MIPS_C])dnl
- AC_MSG_CHECKING([if compiler is SGI MIPSpro C])
- CURL_CHECK_DEF([__GNUC__], [], [silent])
- CURL_CHECK_DEF([_COMPILER_VERSION], [], [silent])
- CURL_CHECK_DEF([_SGI_COMPILER_VERSION], [], [silent])
- if test "$curl_cv_have_def___GNUC__" = "no" &&
- (test "$curl_cv_have_def__SGI_COMPILER_VERSION" = "yes" ||
- test "$curl_cv_have_def__COMPILER_VERSION" = "yes"); then
- AC_MSG_RESULT([yes])
- compiler_id="SGI_MIPSPRO_C"
- flags_dbg_all="-g -g0 -g1 -g2 -g3"
- flags_dbg_yes="-g"
- flags_dbg_off="-g0"
- flags_opt_all="-O -O0 -O1 -O2 -O3 -Ofast"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_SUNPRO_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is SunPro C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_SUNPRO_C], [
- AC_MSG_CHECKING([if compiler is SunPro C])
- CURL_CHECK_DEF([__SUNPRO_C], [], [silent])
- if test "$curl_cv_have_def___SUNPRO_C" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="SUNPRO_C"
- flags_dbg_all="-g -s"
- flags_dbg_yes="-g"
- flags_dbg_off="-s"
- flags_opt_all="-O -xO -xO1 -xO2 -xO3 -xO4 -xO5"
- flags_opt_yes="-xO2"
- flags_opt_off=""
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_TINY_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is Tiny C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_TINY_C], [
- AC_MSG_CHECKING([if compiler is Tiny C])
- CURL_CHECK_DEF([__TINYC__], [], [silent])
- if test "$curl_cv_have_def___TINYC__" = "yes"; then
- AC_MSG_RESULT([yes])
- compiler_id="TINY_C"
- flags_dbg_all="-g -b"
- flags_dbg_yes="-g"
- flags_dbg_off=""
- flags_opt_all=""
- flags_opt_yes=""
- flags_opt_off=""
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_WATCOM_C
-dnl -------------------------------------------------
-dnl Verify if compiler being used is Watcom C.
-
-AC_DEFUN([CARES_CHECK_COMPILER_WATCOM_C], [
- AC_MSG_CHECKING([if compiler is Watcom C])
- CURL_CHECK_DEF([__WATCOMC__], [], [silent])
- if test "$curl_cv_have_def___WATCOMC__" = "yes"; then
- AC_MSG_RESULT([yes])
- CURL_CHECK_DEF([__UNIX__], [], [silent])
- if test "$curl_cv_have_def___UNIX__" = "yes"; then
- compiler_id="WATCOM_UNIX_C"
- flags_dbg_all="-g1 -g1+ -g2 -g3"
- flags_dbg_yes="-g2"
- flags_dbg_off=""
- flags_opt_all="-O0 -O1 -O2 -O3"
- flags_opt_yes="-O2"
- flags_opt_off="-O0"
- else
- compiler_id="WATCOM_WINDOWS_C"
- flags_dbg_all=""
- flags_dbg_yes=""
- flags_dbg_off=""
- flags_opt_all=""
- flags_opt_yes=""
- flags_opt_off=""
- fi
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_CONVERT_INCLUDE_TO_ISYSTEM
-dnl -------------------------------------------------
-dnl Changes standard include paths present in CFLAGS
-dnl and CPPFLAGS into isystem include paths. This is
-dnl done to prevent GNUC from generating warnings on
-dnl headers from these locations, although on ancient
-dnl GNUC versions these warnings are not silenced.
-
-AC_DEFUN([CARES_CONVERT_INCLUDE_TO_ISYSTEM], [
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- tmp_has_include="no"
- tmp_chg_FLAGS="$CFLAGS"
- for word1 in $tmp_chg_FLAGS; do
- case "$word1" in
- -I*)
- tmp_has_include="yes"
- ;;
- esac
- done
- if test "$tmp_has_include" = "yes"; then
- tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'`
- tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'`
- CFLAGS="$tmp_chg_FLAGS"
- squeeze CFLAGS
- fi
- tmp_has_include="no"
- tmp_chg_FLAGS="$CPPFLAGS"
- for word1 in $tmp_chg_FLAGS; do
- case "$word1" in
- -I*)
- tmp_has_include="yes"
- ;;
- esac
- done
- if test "$tmp_has_include" = "yes"; then
- tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/^-I/ -isystem /g'`
- tmp_chg_FLAGS=`echo "$tmp_chg_FLAGS" | "$SED" 's/ -I/ -isystem /g'`
- CPPFLAGS="$tmp_chg_FLAGS"
- squeeze CPPFLAGS
- fi
-])
-
-
-dnl CARES_COMPILER_WORKS_IFELSE ([ACTION-IF-WORKS], [ACTION-IF-NOT-WORKS])
-dnl -------------------------------------------------
-dnl Verify if the C compiler seems to work with the
-dnl settings that are 'active' at the time the test
-dnl is performed.
-
-AC_DEFUN([CARES_COMPILER_WORKS_IFELSE], [
- dnl compilation capability verification
- tmp_compiler_works="unknown"
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- int i = 1;
- return i;
- ]])
- ],[
- tmp_compiler_works="yes"
- ],[
- tmp_compiler_works="no"
- echo " " >&6
- sed 's/^/cc-fail: /' conftest.err >&6
- echo " " >&6
- ])
- dnl linking capability verification
- if test "$tmp_compiler_works" = "yes"; then
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- int i = 1;
- return i;
- ]])
- ],[
- tmp_compiler_works="yes"
- ],[
- tmp_compiler_works="no"
- echo " " >&6
- sed 's/^/link-fail: /' conftest.err >&6
- echo " " >&6
- ])
- fi
- dnl only do runtime verification when not cross-compiling
- if test "x$cross_compiling" != "xyes" &&
- test "$tmp_compiler_works" = "yes"; then
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
-# ifdef __STDC__
-# include <stdlib.h>
-# endif
- ]],[[
- int i = 0;
- exit(i);
- ]])
- ],[
- tmp_compiler_works="yes"
- ],[
- tmp_compiler_works="no"
- echo " " >&6
- echo "run-fail: test program exited with status $ac_status" >&6
- echo " " >&6
- ])
- fi
- dnl branch upon test result
- if test "$tmp_compiler_works" = "yes"; then
- ifelse($1,,:,[$1])
- ifelse($2,,,[else
- $2])
- fi
-])
-
-
-dnl CARES_SET_COMPILER_BASIC_OPTS
-dnl -------------------------------------------------
-dnl Sets compiler specific options/flags which do not
-dnl depend on configure's debug, optimize or warnings
-dnl options.
-
-AC_DEFUN([CARES_SET_COMPILER_BASIC_OPTS], [
- AC_REQUIRE([CARES_CHECK_COMPILER])dnl
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- #
- if test "$compiler_id" != "unknown"; then
- #
- if test "$compiler_id" = "GNU_C" ||
- test "$compiler_id" = "CLANG"; then
- CARES_CONVERT_INCLUDE_TO_ISYSTEM
- fi
- #
- tmp_save_CPPFLAGS="$CPPFLAGS"
- tmp_save_CFLAGS="$CFLAGS"
- tmp_CPPFLAGS=""
- tmp_CFLAGS=""
- #
- case "$compiler_id" in
- #
- CLANG)
- #
- dnl Disable warnings for unused arguments, otherwise clang will
- dnl warn about compile-time arguments used during link-time, like
- dnl -O and -g and -pedantic.
- tmp_CFLAGS="$tmp_CFLAGS -Qunused-arguments"
- ;;
- #
- DEC_C)
- #
- dnl Select strict ANSI C compiler mode
- tmp_CFLAGS="$tmp_CFLAGS -std1"
- dnl Turn off optimizer ANSI C aliasing rules
- tmp_CFLAGS="$tmp_CFLAGS -noansi_alias"
- dnl Generate warnings for missing function prototypes
- tmp_CFLAGS="$tmp_CFLAGS -warnprotos"
- dnl Change some warnings into fatal errors
- tmp_CFLAGS="$tmp_CFLAGS -msg_fatal toofewargs,toomanyargs"
- ;;
- #
- GNU_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- HP_UX_C)
- #
- dnl Disallow run-time dereferencing of null pointers
- tmp_CFLAGS="$tmp_CFLAGS -z"
- dnl Disable some remarks
- dnl #4227: padding struct with n bytes to align member
- dnl #4255: padding size of struct with n bytes to alignment boundary
- tmp_CFLAGS="$tmp_CFLAGS +W 4227,4255"
- ;;
- #
- IBM_C)
- #
- dnl Ensure that compiler optimizations are always thread-safe.
- tmp_CFLAGS="$tmp_CFLAGS -qthreaded"
- dnl Disable type based strict aliasing optimizations, using worst
- dnl case aliasing assumptions when compiling. Type based aliasing
- dnl would restrict the lvalues that could be safely used to access
- dnl a data object.
- tmp_CFLAGS="$tmp_CFLAGS -qnoansialias"
- dnl Force compiler to stop after the compilation phase, without
- dnl generating an object code file when compilation has errors.
- tmp_CFLAGS="$tmp_CFLAGS -qhalt=e"
- ;;
- #
- INTEL_UNIX_C)
- #
- dnl On unix this compiler uses gcc's header files, so
- dnl we select ANSI C89 dialect plus GNU extensions.
- tmp_CFLAGS="$tmp_CFLAGS -std=gnu89"
- dnl Change some warnings into errors
- dnl #140: too many arguments in function call
- dnl #147: declaration is incompatible with 'previous one'
- dnl #165: too few arguments in function call
- dnl #266: function declared implicitly
- tmp_CPPFLAGS="$tmp_CPPFLAGS -we 140,147,165,266"
- dnl Disable some remarks
- dnl #279: controlling expression is constant
- dnl #981: operands are evaluated in unspecified order
- dnl #1469: "cc" clobber ignored
- tmp_CPPFLAGS="$tmp_CPPFLAGS -wd 279,981,1469"
- ;;
- #
- INTEL_WINDOWS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- LCC)
- #
- dnl Disallow run-time dereferencing of null pointers
- tmp_CFLAGS="$tmp_CFLAGS -n"
- ;;
- #
- SGI_MIPS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- SGI_MIPSPRO_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- SUNPRO_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- TINY_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- WATCOM_UNIX_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- WATCOM_WINDOWS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- esac
- #
- squeeze tmp_CPPFLAGS
- squeeze tmp_CFLAGS
- #
- if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then
- AC_MSG_CHECKING([if compiler accepts some basic options])
- CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS"
- CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
- squeeze CPPFLAGS
- squeeze CFLAGS
- CARES_COMPILER_WORKS_IFELSE([
- AC_MSG_RESULT([yes])
- AC_MSG_NOTICE([compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_WARN([compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS])
- dnl restore initial settings
- CPPFLAGS="$tmp_save_CPPFLAGS"
- CFLAGS="$tmp_save_CFLAGS"
- ])
- fi
- #
- fi
-])
-
-
-dnl CARES_SET_COMPILER_DEBUG_OPTS
-dnl -------------------------------------------------
-dnl Sets compiler specific options/flags which depend
-dnl on configure's debug option.
-
-AC_DEFUN([CARES_SET_COMPILER_DEBUG_OPTS], [
- AC_REQUIRE([CARES_CHECK_OPTION_DEBUG])dnl
- AC_REQUIRE([CARES_CHECK_COMPILER])dnl
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- #
- if test "$compiler_id" != "unknown"; then
- #
- tmp_save_CFLAGS="$CFLAGS"
- tmp_save_CPPFLAGS="$CPPFLAGS"
- #
- tmp_options=""
- tmp_CFLAGS="$CFLAGS"
- tmp_CPPFLAGS="$CPPFLAGS"
- CARES_VAR_STRIP([tmp_CFLAGS],[$flags_dbg_all])
- CARES_VAR_STRIP([tmp_CPPFLAGS],[$flags_dbg_all])
- #
- if test "$want_debug" = "yes"; then
- AC_MSG_CHECKING([if compiler accepts debug enabling options])
- tmp_options="$flags_dbg_yes"
- fi
- if test "$want_debug" = "no"; then
- AC_MSG_CHECKING([if compiler accepts debug disabling options])
- tmp_options="$flags_dbg_off"
- fi
- #
- CPPFLAGS="$tmp_CPPFLAGS"
- CFLAGS="$tmp_CFLAGS $tmp_options"
- squeeze CPPFLAGS
- squeeze CFLAGS
- CARES_COMPILER_WORKS_IFELSE([
- AC_MSG_RESULT([yes])
- AC_MSG_NOTICE([compiler options added: $tmp_options])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_WARN([compiler options rejected: $tmp_options])
- dnl restore initial settings
- CPPFLAGS="$tmp_save_CPPFLAGS"
- CFLAGS="$tmp_save_CFLAGS"
- ])
- #
- fi
-])
-
-
-dnl CARES_SET_COMPILER_OPTIMIZE_OPTS
-dnl -------------------------------------------------
-dnl Sets compiler specific options/flags which depend
-dnl on configure's optimize option.
-
-AC_DEFUN([CARES_SET_COMPILER_OPTIMIZE_OPTS], [
- AC_REQUIRE([CARES_CHECK_OPTION_OPTIMIZE])dnl
- AC_REQUIRE([CARES_CHECK_COMPILER])dnl
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- #
- if test "$compiler_id" != "unknown"; then
- #
- tmp_save_CFLAGS="$CFLAGS"
- tmp_save_CPPFLAGS="$CPPFLAGS"
- #
- tmp_options=""
- tmp_CFLAGS="$CFLAGS"
- tmp_CPPFLAGS="$CPPFLAGS"
- honor_optimize_option="yes"
- #
- dnl If optimization request setting has not been explicitly specified,
- dnl it has been derived from the debug setting and initially assumed.
- dnl This initially assumed optimizer setting will finally be ignored
- dnl if CFLAGS or CPPFLAGS already hold optimizer flags. This implies
- dnl that an initially assumed optimizer setting might not be honored.
- #
- if test "$want_optimize" = "assume_no" ||
- test "$want_optimize" = "assume_yes"; then
- AC_MSG_CHECKING([if compiler optimizer assumed setting might be used])
- CARES_VAR_MATCH_IFELSE([tmp_CFLAGS],[$flags_opt_all],[
- honor_optimize_option="no"
- ])
- CARES_VAR_MATCH_IFELSE([tmp_CPPFLAGS],[$flags_opt_all],[
- honor_optimize_option="no"
- ])
- AC_MSG_RESULT([$honor_optimize_option])
- if test "$honor_optimize_option" = "yes"; then
- if test "$want_optimize" = "assume_yes"; then
- want_optimize="yes"
- fi
- if test "$want_optimize" = "assume_no"; then
- want_optimize="no"
- fi
- fi
- fi
- #
- if test "$honor_optimize_option" = "yes"; then
- CARES_VAR_STRIP([tmp_CFLAGS],[$flags_opt_all])
- CARES_VAR_STRIP([tmp_CPPFLAGS],[$flags_opt_all])
- if test "$want_optimize" = "yes"; then
- AC_MSG_CHECKING([if compiler accepts optimizer enabling options])
- tmp_options="$flags_opt_yes"
- fi
- if test "$want_optimize" = "no"; then
- AC_MSG_CHECKING([if compiler accepts optimizer disabling options])
- tmp_options="$flags_opt_off"
- fi
- CPPFLAGS="$tmp_CPPFLAGS"
- CFLAGS="$tmp_CFLAGS $tmp_options"
- squeeze CPPFLAGS
- squeeze CFLAGS
- CARES_COMPILER_WORKS_IFELSE([
- AC_MSG_RESULT([yes])
- AC_MSG_NOTICE([compiler options added: $tmp_options])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_WARN([compiler options rejected: $tmp_options])
- dnl restore initial settings
- CPPFLAGS="$tmp_save_CPPFLAGS"
- CFLAGS="$tmp_save_CFLAGS"
- ])
- fi
- #
- fi
-])
-
-
-dnl CARES_SET_COMPILER_WARNING_OPTS
-dnl -------------------------------------------------
-dnl Sets compiler options/flags which depend on
-dnl configure's warnings given option.
-
-AC_DEFUN([CARES_SET_COMPILER_WARNING_OPTS], [
- AC_REQUIRE([CARES_CHECK_OPTION_WARNINGS])dnl
- AC_REQUIRE([CARES_CHECK_COMPILER])dnl
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- #
- if test "$compiler_id" != "unknown"; then
- #
- tmp_save_CPPFLAGS="$CPPFLAGS"
- tmp_save_CFLAGS="$CFLAGS"
- tmp_CPPFLAGS=""
- tmp_CFLAGS=""
- #
- case "$compiler_id" in
- #
- CLANG)
- #
- if test "$want_warnings" = "yes"; then
- dnl All versions of clang support the same warnings as at least
- dnl gcc 4.2.1 except -Wunused.
- tmp_CFLAGS="$tmp_CFLAGS -pedantic"
- tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
- tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings"
- tmp_CFLAGS="$tmp_CFLAGS -Wshadow"
- tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs"
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations"
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
- tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare"
- tmp_CFLAGS="$tmp_CFLAGS -Wundef"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral"
- tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes"
- tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement"
- tmp_CFLAGS="$tmp_CFLAGS -Wcast-align"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
- tmp_CFLAGS="$tmp_CFLAGS -Wshorten-64-to-32"
- #
- dnl Only clang 1.1 or later
- if test "$compiler_num" -ge "101"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wunused"
- fi
- fi
- ;;
- #
- DEC_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Select a higher warning level than default level2
- tmp_CFLAGS="$tmp_CFLAGS -msg_enable level3"
- fi
- ;;
- #
- GNU_C)
- #
- if test "$want_warnings" = "yes"; then
- #
- dnl Do not enable -pedantic when cross-compiling with a gcc older
- dnl than 3.0, to avoid warnings from third party system headers.
- if test "x$cross_compiling" != "xyes" ||
- test "$compiler_num" -ge "300"; then
- tmp_CFLAGS="$tmp_CFLAGS -pedantic"
- fi
- #
- dnl Set of options we believe *ALL* gcc versions support:
- tmp_CFLAGS="$tmp_CFLAGS -Wall -W"
- #
- dnl Only gcc 1.4 or later
- if test "$compiler_num" -ge "104"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wpointer-arith -Wwrite-strings"
- dnl If not cross-compiling with a gcc older than 3.0
- if test "x$cross_compiling" != "xyes" ||
- test "$compiler_num" -ge "300"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wunused -Wshadow"
- fi
- fi
- #
- dnl Only gcc 2.7 or later
- if test "$compiler_num" -ge "207"; then
- tmp_CFLAGS="$tmp_CFLAGS -Winline -Wnested-externs"
- dnl If not cross-compiling with a gcc older than 3.0
- if test "x$cross_compiling" != "xyes" ||
- test "$compiler_num" -ge "300"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-declarations"
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-prototypes"
- fi
- fi
- #
- dnl Only gcc 2.95 or later
- if test "$compiler_num" -ge "295"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wno-long-long"
- fi
- #
- dnl Only gcc 2.96 or later
- if test "$compiler_num" -ge "296"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wfloat-equal"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-multichar -Wsign-compare"
- dnl -Wundef used only if gcc is 2.96 or later since we get
- dnl lots of "`_POSIX_C_SOURCE' is not defined" in system
- dnl headers with gcc 2.95.4 on FreeBSD 4.9
- tmp_CFLAGS="$tmp_CFLAGS -Wundef"
- fi
- #
- dnl Only gcc 2.97 or later
- if test "$compiler_num" -ge "297"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wno-format-nonliteral"
- fi
- #
- dnl Only gcc 3.0 or later
- if test "$compiler_num" -ge "300"; then
- dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
- dnl on i686-Linux as it gives us heaps with false positives.
- dnl Also, on gcc 4.0.X it is totally unbearable and complains all
- dnl over making it unusable for generic purposes. Let's not use it.
- tmp_CFLAGS="$tmp_CFLAGS"
- fi
- #
- dnl Only gcc 3.3 or later
- if test "$compiler_num" -ge "303"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wendif-labels -Wstrict-prototypes"
- fi
- #
- dnl Only gcc 3.4 or later
- if test "$compiler_num" -ge "304"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wdeclaration-after-statement"
- fi
- #
- dnl Only gcc 4.3 or later
- if test "$compiler_num" -ge "403"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wtype-limits -Wold-style-declaration"
- tmp_CFLAGS="$tmp_CFLAGS -Wmissing-parameter-type -Wempty-body"
- tmp_CFLAGS="$tmp_CFLAGS -Wclobbered -Wignored-qualifiers"
- fi
- #
- fi
- #
- dnl Do not issue warnings for code in system include paths.
- if test "$compiler_num" -ge "300"; then
- tmp_CFLAGS="$tmp_CFLAGS -Wno-system-headers"
- else
- dnl When cross-compiling with a gcc older than 3.0, disable
- dnl some warnings triggered on third party system headers.
- if test "x$cross_compiling" = "xyes"; then
- if test "$compiler_num" -ge "104"; then
- dnl gcc 1.4 or later
- tmp_CFLAGS="$tmp_CFLAGS -Wno-unused -Wno-shadow"
- fi
- if test "$compiler_num" -ge "207"; then
- dnl gcc 2.7 or later
- tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-declarations"
- tmp_CFLAGS="$tmp_CFLAGS -Wno-missing-prototypes"
- fi
- fi
- fi
- ;;
- #
- HP_UX_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Issue all warnings
- tmp_CFLAGS="$tmp_CFLAGS +w1"
- fi
- ;;
- #
- IBM_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- INTEL_UNIX_C)
- #
- if test "$want_warnings" = "yes"; then
- if test "$compiler_num" -gt "600"; then
- dnl Show errors, warnings, and remarks
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wall -w2"
- dnl Perform extra compile-time code checking
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcheck"
- dnl Warn on nested comments
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wcomment"
- dnl Show warnings relative to deprecated features
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wdeprecated"
- dnl Enable warnings for missing prototypes
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wmissing-prototypes"
- dnl Enable warnings for 64-bit portability issues
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wp64"
- dnl Enable warnings for questionable pointer arithmetic
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wpointer-arith"
- dnl Check for function return typw issues
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wreturn-type"
- dnl Warn on variable declarations hiding a previous one
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wshadow"
- dnl Warn when a variable is used before initialized
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wuninitialized"
- dnl Warn if a declared function is not used
- tmp_CPPFLAGS="$tmp_CPPFLAGS -Wunused-function"
- fi
- fi
- dnl Disable using EBP register in optimizations
- tmp_CFLAGS="$tmp_CFLAGS -fno-omit-frame-pointer"
- dnl Disable use of ANSI C aliasing rules in optimizations
- tmp_CFLAGS="$tmp_CFLAGS -fno-strict-aliasing"
- dnl Value-safe optimizations on floating-point data
- tmp_CFLAGS="$tmp_CFLAGS -fp-model precise"
- dnl Only icc 10.0 or later
- if test "$compiler_num" -ge "1000"; then
- dnl Disable vectorizer diagnostic information
- tmp_CFLAGS="$tmp_CFLAGS -vec-report0"
- fi
- ;;
- #
- INTEL_WINDOWS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- LCC)
- #
- if test "$want_warnings" = "yes"; then
- dnl Highest warning level is double -A, next is single -A.
- dnl Due to the big number of warnings these trigger on third
- dnl party header files it is impractical for us to use any of
- dnl them here. If you want them simply define it in CPPFLAGS.
- tmp_CFLAGS="$tmp_CFLAGS"
- fi
- ;;
- #
- SGI_MIPS_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Perform stricter semantic and lint-like checks
- tmp_CFLAGS="$tmp_CFLAGS -fullwarn"
- fi
- ;;
- #
- SGI_MIPSPRO_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Perform stricter semantic and lint-like checks
- tmp_CFLAGS="$tmp_CFLAGS -fullwarn"
- dnl Disable some remarks
- dnl #1209: controlling expression is constant
- tmp_CFLAGS="$tmp_CFLAGS -woff 1209"
- fi
- ;;
- #
- SUNPRO_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Perform stricter semantic and lint-like checks
- tmp_CFLAGS="$tmp_CFLAGS -v"
- fi
- ;;
- #
- TINY_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Activate all warnings
- tmp_CFLAGS="$tmp_CFLAGS -Wall"
- dnl Make string constants be of type const char *
- tmp_CFLAGS="$tmp_CFLAGS -Wwrite-strings"
- dnl Warn use of unsupported GCC features ignored by TCC
- tmp_CFLAGS="$tmp_CFLAGS -Wunsupported"
- fi
- ;;
- #
- WATCOM_UNIX_C)
- #
- if test "$want_warnings" = "yes"; then
- dnl Issue all warnings
- tmp_CFLAGS="$tmp_CFLAGS -Wall -Wextra"
- fi
- ;;
- #
- WATCOM_WINDOWS_C)
- #
- dnl Placeholder
- tmp_CFLAGS="$tmp_CFLAGS"
- ;;
- #
- esac
- #
- squeeze tmp_CPPFLAGS
- squeeze tmp_CFLAGS
- #
- if test ! -z "$tmp_CFLAGS" || test ! -z "$tmp_CPPFLAGS"; then
- AC_MSG_CHECKING([if compiler accepts strict warning options])
- CPPFLAGS="$tmp_save_CPPFLAGS $tmp_CPPFLAGS"
- CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
- squeeze CPPFLAGS
- squeeze CFLAGS
- CARES_COMPILER_WORKS_IFELSE([
- AC_MSG_RESULT([yes])
- AC_MSG_NOTICE([compiler options added: $tmp_CFLAGS $tmp_CPPFLAGS])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_WARN([compiler options rejected: $tmp_CFLAGS $tmp_CPPFLAGS])
- dnl restore initial settings
- CPPFLAGS="$tmp_save_CPPFLAGS"
- CFLAGS="$tmp_save_CFLAGS"
- ])
- fi
- #
- fi
-])
-
-
-dnl CARES_SHFUNC_SQUEEZE
-dnl -------------------------------------------------
-dnl Declares a shell function squeeze() which removes
-dnl redundant whitespace out of a shell variable.
-
-AC_DEFUN([CARES_SHFUNC_SQUEEZE], [
-squeeze() {
- _sqz_result=""
- eval _sqz_input=\[$][$]1
- for _sqz_token in $_sqz_input; do
- if test -z "$_sqz_result"; then
- _sqz_result="$_sqz_token"
- else
- _sqz_result="$_sqz_result $_sqz_token"
- fi
- done
- eval [$]1=\$_sqz_result
- return 0
-}
-])
-
-
-dnl CARES_CHECK_CURLDEBUG
-dnl -------------------------------------------------
-dnl Settings which depend on configure's curldebug given
-dnl option, and other additional configure pre-requisites.
-dnl Using the curl debug memory tracking feature in c-ares
-dnl is a hack that actually can only be used/enabled when
-dnl c-ares is built directly in curl's CVS tree, as a static
-dnl library or as a shared one on those systems on which
-dnl shared libraries support undefined symbols, along with
-dnl an equally configured libcurl.
-
-AC_DEFUN([CARES_CHECK_CURLDEBUG], [
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- cares_builddir=`pwd`
- supports_curldebug="unknown"
- if test "$want_curldebug" = "yes"; then
- if test "x$enable_shared" != "xno" &&
- test "x$enable_shared" != "xyes"; then
- AC_MSG_WARN([unknown enable_shared setting.])
- supports_curldebug="no"
- fi
- if test "x$enable_static" != "xno" &&
- test "x$enable_static" != "xyes"; then
- AC_MSG_WARN([unknown enable_static setting.])
- supports_curldebug="no"
- fi
- if test "$supports_curldebug" != "no"; then
- if test "$enable_shared" = "yes" &&
- test "$need_no_undefined" = "yes"; then
- supports_curldebug="no"
- AC_MSG_WARN([shared library does not support undefined symbols.])
- fi
- if test ! -f "$srcdir/../include/curl/curlbuild.h.dist"; then
- AC_MSG_WARN([c-ares source not embedded in curl's CVS tree.])
- supports_curldebug="no"
- elif test ! -f "$srcdir/../include/curl/Makefile.in"; then
- AC_MSG_WARN([curl's buildconf has not been run.])
- supports_curldebug="no"
- elif test ! -f "$cares_builddir/../libcurl.pc" ||
- test ! -f "$cares_builddir/../include/curl/curlbuild.h"; then
- AC_MSG_WARN([curl's configure has not been run.])
- supports_curldebug="no"
- elif test ! -f "$cares_builddir/../lib/curl_config.h"; then
- AC_MSG_WARN([libcurl's curl_config.h is missing.])
- supports_curldebug="no"
- elif test ! -f "$cares_builddir/../config.status"; then
- AC_MSG_WARN([curl's config.status is missing.])
- supports_curldebug="no"
- fi
- if test "$supports_curldebug" != "no"; then
- grep '^#define USE_ARES' "$cares_builddir/../lib/curl_config.h" >/dev/null
- if test "$?" -ne "0"; then
- AC_MSG_WARN([libcurl configured without c-ares support.])
- supports_curldebug="no"
- fi
- fi
- if test "$supports_curldebug" != "no"; then
- grep 'CPPFLAGS.*CURLDEBUG' "$cares_builddir/../config.status" >/dev/null
- if test "$?" -ne "0"; then
- AC_MSG_WARN([libcurl configured without curldebug support.])
- supports_curldebug="no"
- fi
- fi
- fi
- fi
- #
- if test "$want_curldebug" = "yes"; then
- AC_MSG_CHECKING([if curl debug memory tracking can be enabled])
- test "$supports_curldebug" = "no" || supports_curldebug="yes"
- AC_MSG_RESULT([$supports_curldebug])
- if test "$supports_curldebug" = "no"; then
- AC_MSG_WARN([cannot enable curl debug memory tracking.])
- want_curldebug="no"
- fi
- fi
- #
- if test "$want_curldebug" = "yes"; then
- dnl TODO: Verify if the BUILDING_LIBCURL definition is still required.
- AC_DEFINE(BUILDING_LIBCURL, 1, [when building as static part of libcurl])
- CPPFLAGS="$CPPFLAGS -DCURLDEBUG"
- squeeze CPPFLAGS
- fi
- #
- if test "$want_debug" = "yes"; then
- CPPFLAGS="$CPPFLAGS -DDEBUGBUILD"
- squeeze CPPFLAGS
- fi
-])
-
-
-dnl CARES_CHECK_NO_UNDEFINED
-dnl -------------------------------------------------
-dnl Checks if the -no-undefined flag must be used when
-dnl building shared libraries. This is required on all
-dnl systems on which shared libraries should not have
-dnl references to undefined symbols. This check should
-dnl not be done before AC-PROG-LIBTOOL.
-
-AC_DEFUN([CARES_CHECK_NO_UNDEFINED], [
- AC_BEFORE([$0],[CARES_CHECK_CURLDEBUG])dnl
- AC_MSG_CHECKING([if shared libraries need -no-undefined])
- need_no_undefined="no"
- case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc* | *-*-aix*)
- need_no_undefined="yes"
- ;;
- esac
- if test "x$allow_undefined" = "xno"; then
- need_no_undefined="yes"
- elif test "x$allow_undefined_flag" = "xunsupported"; then
- need_no_undefined="yes"
- fi
- AC_MSG_RESULT($need_no_undefined)
-])
-
-
-dnl CARES_CHECK_PROG_CC
-dnl -------------------------------------------------
-dnl Check for compiler program, preventing CFLAGS and
-dnl CPPFLAGS from being unexpectedly changed.
-
-AC_DEFUN([CARES_CHECK_PROG_CC], [
- ac_save_CFLAGS="$CFLAGS"
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_PROG_CC
- CFLAGS="$ac_save_CFLAGS"
- CPPFLAGS="$ac_save_CPPFLAGS"
-])
-
-
-dnl CARES_CHECK_COMPILER_HALT_ON_ERROR
-dnl -------------------------------------------------
-dnl Verifies if the compiler actually halts after the
-dnl compilation phase without generating any object
-dnl code file, when the source compiles with errors.
-
-AC_DEFUN([CARES_CHECK_COMPILER_HALT_ON_ERROR], [
- AC_MSG_CHECKING([if compiler halts on compilation errors])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
- force compilation error
- ]])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([compiler does not halt on compilation errors.])
- ],[
- AC_MSG_RESULT([yes])
- ])
-])
-
-
-dnl CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
-dnl -------------------------------------------------
-dnl Verifies if the compiler actually halts after the
-dnl compilation phase without generating any object
-dnl code file, when the source code tries to define a
-dnl type for a constant array with negative dimension.
-
-AC_DEFUN([CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [
- AC_REQUIRE([CARES_CHECK_COMPILER_HALT_ON_ERROR])dnl
- AC_MSG_CHECKING([if compiler halts on negative sized arrays])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ];
- ]],[[
- bad_t dummy;
- ]])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([compiler does not halt on negative sized arrays.])
- ],[
- AC_MSG_RESULT([yes])
- ])
-])
-
-
-dnl CARES_CHECK_COMPILER_STRUCT_MEMBER_SIZE
-dnl -------------------------------------------------
-dnl Verifies if the compiler is capable of handling the
-dnl size of a struct member, struct which is a function
-dnl result, as a compilation-time condition inside the
-dnl type definition of a constant array.
-
-AC_DEFUN([CARES_CHECK_COMPILER_STRUCT_MEMBER_SIZE], [
- AC_REQUIRE([CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE])dnl
- AC_MSG_CHECKING([if compiler struct member size checking works])
- tst_compiler_check_one_works="unknown"
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- struct mystruct {
- int mi;
- char mc;
- struct mystruct *next;
- };
- struct mystruct myfunc();
- typedef char good_t1[sizeof(myfunc().mi) == sizeof(int) ? 1 : -1 ];
- typedef char good_t2[sizeof(myfunc().mc) == sizeof(char) ? 1 : -1 ];
- ]],[[
- good_t1 dummy1;
- good_t2 dummy2;
- ]])
- ],[
- tst_compiler_check_one_works="yes"
- ],[
- tst_compiler_check_one_works="no"
- sed 's/^/cc-src: /' conftest.$ac_ext >&6
- sed 's/^/cc-err: /' conftest.err >&6
- ])
- tst_compiler_check_two_works="unknown"
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- struct mystruct {
- int mi;
- char mc;
- struct mystruct *next;
- };
- struct mystruct myfunc();
- typedef char bad_t1[sizeof(myfunc().mi) != sizeof(int) ? 1 : -1 ];
- typedef char bad_t2[sizeof(myfunc().mc) != sizeof(char) ? 1 : -1 ];
- ]],[[
- bad_t1 dummy1;
- bad_t2 dummy2;
- ]])
- ],[
- tst_compiler_check_two_works="no"
- ],[
- tst_compiler_check_two_works="yes"
- ])
- if test "$tst_compiler_check_one_works" = "yes" &&
- test "$tst_compiler_check_two_works" = "yes"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- AC_MSG_ERROR([compiler fails struct member size checking.])
- fi
-])
-
-
-dnl CARES_CHECK_COMPILER_SYMBOL_HIDING
-dnl -------------------------------------------------
-dnl Verify if compiler supports hiding library internal symbols, setting
-dnl shell variable supports_symbol_hiding value as appropriate, as well as
-dnl variables symbol_hiding_CFLAGS and symbol_hiding_EXTERN when supported.
-
-AC_DEFUN([CARES_CHECK_COMPILER_SYMBOL_HIDING], [
- AC_REQUIRE([CARES_CHECK_COMPILER])dnl
- AC_BEFORE([$0],[CARES_CONFIGURE_SYMBOL_HIDING])dnl
- AC_MSG_CHECKING([if compiler supports hiding library internal symbols])
- supports_symbol_hiding="no"
- symbol_hiding_CFLAGS=""
- symbol_hiding_EXTERN=""
- tmp_CFLAGS=""
- tmp_EXTERN=""
- case "$compiler_id" in
- CLANG)
- dnl All versions of clang support -fvisibility=
- tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
- tmp_CFLAGS="-fvisibility=hidden"
- supports_symbol_hiding="yes"
- ;;
- GNU_C)
- dnl Only gcc 3.4 or later
- if test "$compiler_num" -ge "304"; then
- if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
- tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
- tmp_CFLAGS="-fvisibility=hidden"
- supports_symbol_hiding="yes"
- fi
- fi
- ;;
- INTEL_UNIX_C)
- dnl Only icc 9.0 or later
- if test "$compiler_num" -ge "900"; then
- if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ; then
- tmp_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS -fvisibility=hidden"
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
-# include <stdio.h>
- ]],[[
- printf("icc fvisibility bug test");
- ]])
- ],[
- tmp_EXTERN="__attribute__ ((visibility (\"default\")))"
- tmp_CFLAGS="-fvisibility=hidden"
- supports_symbol_hiding="yes"
- ])
- CFLAGS="$tmp_save_CFLAGS"
- fi
- fi
- ;;
- SUNPRO_C)
- if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
- tmp_EXTERN="__global"
- tmp_CFLAGS="-xldscope=hidden"
- supports_symbol_hiding="yes"
- fi
- ;;
- esac
- if test "$supports_symbol_hiding" = "yes"; then
- tmp_save_CFLAGS="$CFLAGS"
- CFLAGS="$tmp_save_CFLAGS $tmp_CFLAGS"
- squeeze CFLAGS
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $tmp_EXTERN char *dummy(char *buff);
- char *dummy(char *buff)
- {
- if(buff)
- return ++buff;
- else
- return buff;
- }
- ]],[[
- char b[16];
- char *r = dummy(&b);
- if(r)
- return (int)*r;
- ]])
- ],[
- supports_symbol_hiding="yes"
- ],[
- supports_symbol_hiding="no"
- echo " " >&6
- sed 's/^/cc-src: /' conftest.$ac_ext >&6
- sed 's/^/cc-err: /' conftest.err >&6
- echo " " >&6
- ])
- CFLAGS="$tmp_save_CFLAGS"
- fi
- if test "$supports_symbol_hiding" = "yes"; then
- AC_MSG_RESULT([yes])
- symbol_hiding_CFLAGS="$tmp_CFLAGS"
- symbol_hiding_EXTERN="$tmp_EXTERN"
- else
- AC_MSG_RESULT([no])
- fi
-])
-
-
-dnl CARES_VAR_MATCH (VARNAME, VALUE)
-dnl -------------------------------------------------
-dnl Verifies if shell variable VARNAME contains VALUE.
-dnl Contents of variable VARNAME and VALUE are handled
-dnl as whitespace separated lists of words. If at least
-dnl one word of VALUE is present in VARNAME the match
-dnl is considered positive, otherwise false.
-
-AC_DEFUN([CARES_VAR_MATCH], [
- ac_var_match_word="no"
- for word1 in $[$1]; do
- for word2 in [$2]; do
- if test "$word1" = "$word2"; then
- ac_var_match_word="yes"
- fi
- done
- done
-])
-
-
-dnl CARES_VAR_MATCH_IFELSE (VARNAME, VALUE,
-dnl [ACTION-IF-MATCH], [ACTION-IF-NOT-MATCH])
-dnl -------------------------------------------------
-dnl This performs a CURL_VAR_MATCH check and executes
-dnl first branch if the match is positive, otherwise
-dnl the second branch is executed.
-
-AC_DEFUN([CARES_VAR_MATCH_IFELSE], [
- CARES_VAR_MATCH([$1],[$2])
- if test "$ac_var_match_word" = "yes"; then
- ifelse($3,,:,[$3])
- ifelse($4,,,[else
- $4])
- fi
-])
-
-
-dnl CARES_VAR_STRIP (VARNAME, VALUE)
-dnl -------------------------------------------------
-dnl Contents of variable VARNAME and VALUE are handled
-dnl as whitespace separated lists of words. Each word
-dnl from VALUE is removed from VARNAME when present.
-
-AC_DEFUN([CARES_VAR_STRIP], [
- AC_REQUIRE([CARES_SHFUNC_SQUEEZE])dnl
- ac_var_stripped=""
- for word1 in $[$1]; do
- ac_var_strip_word="no"
- for word2 in [$2]; do
- if test "$word1" = "$word2"; then
- ac_var_strip_word="yes"
- fi
- done
- if test "$ac_var_strip_word" = "no"; then
- ac_var_stripped="$ac_var_stripped $word1"
- fi
- done
- dnl squeeze whitespace out of result
- [$1]="$ac_var_stripped"
- squeeze [$1]
-])
-
diff --git a/ares/m4/cares-confopts.m4 b/ares/m4/cares-confopts.m4
deleted file mode 100644
index 438f9cdc7..000000000
--- a/ares/m4/cares-confopts.m4
+++ /dev/null
@@ -1,320 +0,0 @@
-#***************************************************************************
-# $Id$
-#
-# Copyright (C) 2008 - 2009 by Daniel Stenberg et al
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-#***************************************************************************
-
-# File version for 'aclocal' use. Keep it a single number.
-# serial 8
-
-
-dnl CARES_CHECK_OPTION_CURLDEBUG
-dnl -------------------------------------------------
-dnl Verify if configure has been invoked with option
-dnl --enable-curldebug or --disable-curldebug, and set
-dnl shell variable want_curldebug value as appropriate.
-
-AC_DEFUN([CARES_CHECK_OPTION_CURLDEBUG], [
- AC_BEFORE([$0],[CARES_CHECK_CURLDEBUG])dnl
- AC_MSG_CHECKING([whether to enable curl debug memory tracking])
- OPT_CURLDEBUG_BUILD="default"
- AC_ARG_ENABLE(curldebug,
-AC_HELP_STRING([--enable-curldebug],[Enable curl debug memory tracking])
-AC_HELP_STRING([--disable-curldebug],[Disable curl debug memory tracking]),
- OPT_CURLDEBUG_BUILD=$enableval)
- case "$OPT_CURLDEBUG_BUILD" in
- no)
- dnl --disable-curldebug option used
- want_curldebug="no"
- ;;
- default)
- dnl configure option not specified
- want_curldebug="no"
- ;;
- *)
- dnl --enable-curldebug option used.
- dnl The use of this option value is a request to enable curl's
- dnl debug memory tracking for the c-ares library. This is a big
- dnl hack that can only be done when a whole bunch of requisites
- dnl are simultaneously satisfied. Later on, these requisites are
- dnl verified and if they are not fully satisfied the option will
- dnl be ignored and act as if --disable-curldebug had been given
- dnl setting shell variable want_curldebug to 'no'.
- want_curldebug="yes"
- ;;
- esac
- AC_MSG_RESULT([$want_curldebug])
-])
-
-
-dnl CARES_CHECK_OPTION_DEBUG
-dnl -------------------------------------------------
-dnl Verify if configure has been invoked with option
-dnl --enable-debug or --disable-debug, and set shell
-dnl variable want_debug value as appropriate.
-
-AC_DEFUN([CARES_CHECK_OPTION_DEBUG], [
- AC_BEFORE([$0],[CARES_CHECK_OPTION_WARNINGS])dnl
- AC_BEFORE([$0],[CARES_CHECK_OPTION_CURLDEBUG])dnl
- AC_BEFORE([$0],[CARES_CHECK_PROG_CC])dnl
- AC_MSG_CHECKING([whether to enable debug build options])
- OPT_DEBUG_BUILD="default"
- AC_ARG_ENABLE(debug,
-AC_HELP_STRING([--enable-debug],[Enable debug build options])
-AC_HELP_STRING([--disable-debug],[Disable debug build options]),
- OPT_DEBUG_BUILD=$enableval)
- case "$OPT_DEBUG_BUILD" in
- no)
- dnl --disable-debug option used
- want_debug="no"
- ;;
- default)
- dnl configure option not specified
- want_debug="no"
- ;;
- *)
- dnl --enable-debug option used
- want_debug="yes"
- ;;
- esac
- AC_MSG_RESULT([$want_debug])
-])
-
-
-dnl CARES_CHECK_OPTION_NONBLOCKING
-dnl -------------------------------------------------
-dnl Verify if configure has been invoked with option
-dnl --enable-nonblocking or --disable-nonblocking, and
-dnl set shell variable want_nonblocking as appropriate.
-
-AC_DEFUN([CARES_CHECK_OPTION_NONBLOCKING], [
- AC_BEFORE([$0],[CARES_CHECK_NONBLOCKING_SOCKET])dnl
- AC_MSG_CHECKING([whether to enable non-blocking communications])
- OPT_NONBLOCKING="default"
- AC_ARG_ENABLE(nonblocking,
-AC_HELP_STRING([--enable-nonblocking],[Enable non-blocking communications])
-AC_HELP_STRING([--disable-nonblocking],[Disable non-blocking communications]),
- OPT_NONBLOCKING=$enableval)
- case "$OPT_NONBLOCKING" in
- no)
- dnl --disable-nonblocking option used
- want_nonblocking="no"
- ;;
- default)
- dnl configure option not specified
- want_nonblocking="yes"
- ;;
- *)
- dnl --enable-nonblocking option used
- want_nonblocking="yes"
- ;;
- esac
- AC_MSG_RESULT([$want_nonblocking])
-])
-
-
-dnl CARES_CHECK_OPTION_OPTIMIZE
-dnl -------------------------------------------------
-dnl Verify if configure has been invoked with option
-dnl --enable-optimize or --disable-optimize, and set
-dnl shell variable want_optimize value as appropriate.
-
-AC_DEFUN([CARES_CHECK_OPTION_OPTIMIZE], [
- AC_REQUIRE([CARES_CHECK_OPTION_DEBUG])dnl
- AC_BEFORE([$0],[CARES_CHECK_PROG_CC])dnl
- AC_MSG_CHECKING([whether to enable compiler optimizer])
- OPT_COMPILER_OPTIMIZE="default"
- AC_ARG_ENABLE(optimize,
-AC_HELP_STRING([--enable-optimize(=OPT)],[Enable compiler optimizations (default=-O2)])
-AC_HELP_STRING([--disable-optimize],[Disable compiler optimizations]),
- OPT_COMPILER_OPTIMIZE=$enableval)
- case "$OPT_COMPILER_OPTIMIZE" in
- no)
- dnl --disable-optimize option used. We will handle this as
- dnl a request to disable compiler optimizations if possible.
- dnl If the compiler is known CFLAGS and CPPFLAGS will be
- dnl overridden, otherwise this can not be honored.
- want_optimize="no"
- AC_MSG_RESULT([no])
- ;;
- default)
- dnl configure's optimize option not specified. Initially we will
- dnl handle this as a a request contrary to configure's setting
- dnl for --enable-debug. IOW, initially, for debug-enabled builds
- dnl this will be handled as a request to disable optimizations if
- dnl possible, and for debug-disabled builds this will be handled
- dnl initially as a request to enable optimizations if possible.
- dnl Finally, if the compiler is known and CFLAGS and CPPFLAGS do
- dnl not have any optimizer flag the request will be honored, in
- dnl any other case the request can not be honored.
- dnl IOW, existing optimizer flags defined in CFLAGS or CPPFLAGS
- dnl will always take precedence over any initial assumption.
- if test "$want_debug" = "yes"; then
- want_optimize="assume_no"
- AC_MSG_RESULT([not specified (assuming no)])
- else
- want_optimize="assume_yes"
- AC_MSG_RESULT([not specified (assuming yes)])
- fi
- ;;
- *)
- dnl --enable-optimize option used. We will handle this as
- dnl a request to enable compiler optimizations if possible.
- dnl If the compiler is known CFLAGS and CPPFLAGS will be
- dnl overridden, otherwise this can not be honored.
- want_optimize="yes"
- AC_MSG_RESULT([yes])
- ;;
- esac
-])
-
-
-dnl CARES_CHECK_OPTION_SYMBOL_HIDING
-dnl -------------------------------------------------
-dnl Verify if configure has been invoked with option
-dnl --enable-symbol-hiding or --disable-symbol-hiding,
-dnl setting shell variable want_symbol_hiding value.
-
-AC_DEFUN([CARES_CHECK_OPTION_SYMBOL_HIDING], [
- AC_BEFORE([$0],[CARES_CHECK_COMPILER_SYMBOL_HIDING])dnl
- AC_MSG_CHECKING([whether to enable hiding of library internal symbols])
- OPT_SYMBOL_HIDING="default"
- AC_ARG_ENABLE(symbol-hiding,
-AC_HELP_STRING([--enable-symbol-hiding],[Enable hiding of library internal symbols])
-AC_HELP_STRING([--disable-symbol-hiding],[Disable hiding of library internal symbols]),
- OPT_SYMBOL_HIDING=$enableval)
- case "$OPT_SYMBOL_HIDING" in
- no)
- dnl --disable-symbol-hiding option used.
- dnl This is an indication to not attempt hiding of library internal
- dnl symbols. Default symbol visibility will be used, which normally
- dnl exposes all library internal symbols.
- want_symbol_hiding="no"
- AC_MSG_RESULT([no])
- ;;
- default)
- dnl configure's symbol-hiding option not specified.
- dnl Handle this as if --enable-symbol-hiding option was given.
- want_symbol_hiding="yes"
- AC_MSG_RESULT([yes])
- ;;
- *)
- dnl --enable-symbol-hiding option used.
- dnl This is an indication to attempt hiding of library internal
- dnl symbols. This is only supported on some compilers/linkers.
- want_symbol_hiding="yes"
- AC_MSG_RESULT([yes])
- ;;
- esac
-])
-
-
-dnl CARES_CHECK_OPTION_WARNINGS
-dnl -------------------------------------------------
-dnl Verify if configure has been invoked with option
-dnl --enable-warnings or --disable-warnings, and set
-dnl shell variable want_warnings as appropriate.
-
-AC_DEFUN([CARES_CHECK_OPTION_WARNINGS], [
- AC_REQUIRE([CARES_CHECK_OPTION_DEBUG])dnl
- AC_BEFORE([$0],[CARES_CHECK_PROG_CC])dnl
- AC_MSG_CHECKING([whether to enable strict compiler warnings])
- OPT_COMPILER_WARNINGS="default"
- AC_ARG_ENABLE(warnings,
-AC_HELP_STRING([--enable-warnings],[Enable strict compiler warnings])
-AC_HELP_STRING([--disable-warnings],[Disable strict compiler warnings]),
- OPT_COMPILER_WARNINGS=$enableval)
- case "$OPT_COMPILER_WARNINGS" in
- no)
- dnl --disable-warnings option used
- want_warnings="no"
- ;;
- default)
- dnl configure option not specified, so
- dnl use same setting as --enable-debug
- want_warnings="$want_debug"
- ;;
- *)
- dnl --enable-warnings option used
- want_warnings="yes"
- ;;
- esac
- AC_MSG_RESULT([$want_warnings])
-])
-
-
-dnl CARES_CHECK_NONBLOCKING_SOCKET
-dnl -------------------------------------------------
-dnl Check for how to set a socket into non-blocking state.
-
-AC_DEFUN([CARES_CHECK_NONBLOCKING_SOCKET], [
- AC_REQUIRE([CARES_CHECK_OPTION_NONBLOCKING])dnl
- AC_REQUIRE([CARES_CHECK_FUNC_FCNTL])dnl
- AC_REQUIRE([CARES_CHECK_FUNC_IOCTL])dnl
- AC_REQUIRE([CARES_CHECK_FUNC_IOCTLSOCKET])dnl
- AC_REQUIRE([CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL])dnl
- AC_REQUIRE([CARES_CHECK_FUNC_SETSOCKOPT])dnl
- #
- tst_method="unknown"
- if test "$want_nonblocking" = "yes"; then
- AC_MSG_CHECKING([how to set a socket into non-blocking mode])
- if test "x$ac_cv_func_fcntl_o_nonblock" = "xyes"; then
- tst_method="fcntl O_NONBLOCK"
- elif test "x$ac_cv_func_ioctl_fionbio" = "xyes"; then
- tst_method="ioctl FIONBIO"
- elif test "x$ac_cv_func_ioctlsocket_fionbio" = "xyes"; then
- tst_method="ioctlsocket FIONBIO"
- elif test "x$ac_cv_func_ioctlsocket_camel_fionbio" = "xyes"; then
- tst_method="IoctlSocket FIONBIO"
- elif test "x$ac_cv_func_setsockopt_so_nonblock" = "xyes"; then
- tst_method="setsockopt SO_NONBLOCK"
- fi
- AC_MSG_RESULT([$tst_method])
- if test "$tst_method" = "unknown"; then
- AC_MSG_WARN([cannot determine non-blocking socket method.])
- fi
- fi
- if test "$tst_method" = "unknown"; then
- AC_DEFINE_UNQUOTED(USE_BLOCKING_SOCKETS, 1,
- [Define to disable non-blocking sockets.])
- AC_MSG_WARN([non-blocking sockets disabled.])
- fi
-])
-
-
-dnl CARES_CONFIGURE_SYMBOL_HIDING
-dnl -------------------------------------------------
-dnl Depending on --enable-symbol-hiding or --disable-symbol-hiding
-dnl configure option, and compiler capability to actually honor such
-dnl option, this will modify compiler flags as appropriate and also
-dnl provide needed definitions for configuration file.
-dnl This macro should not be used until all compilation tests have
-dnl been done to prevent interferences on other tests.
-
-AC_DEFUN([CARES_CONFIGURE_SYMBOL_HIDING], [
- AC_MSG_CHECKING([whether hiding of library internal symbols will actually happen])
- if test x"$ac_cv_native_windows" != "xyes" &&
- test "$want_symbol_hiding" = "yes" &&
- test "$supports_symbol_hiding" = "yes"; then
- CFLAGS="$CFLAGS $symbol_hiding_CFLAGS"
- AC_DEFINE_UNQUOTED(CARES_SYMBOL_HIDING, 1,
- [Define to 1 to enable hiding of library internal symbols.])
- AC_DEFINE_UNQUOTED(CARES_SYMBOL_SCOPE_EXTERN, $symbol_hiding_EXTERN,
- [Definition to make a library symbol externally visible.])
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
-])
-
diff --git a/ares/m4/cares-functions.m4 b/ares/m4/cares-functions.m4
deleted file mode 100644
index f84778838..000000000
--- a/ares/m4/cares-functions.m4
+++ /dev/null
@@ -1,3235 +0,0 @@
-#***************************************************************************
-# $Id$
-#
-# Copyright (C) 2008 - 2009 by Daniel Stenberg et al
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-#***************************************************************************
-
-# File version for 'aclocal' use. Keep it a single number.
-# serial 39
-
-
-dnl CARES_INCLUDES_ARPA_INET
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when arpa/inet.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_ARPA_INET], [
-cares_includes_arpa_inet="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_NETINET_IN_H
-# include <netinet/in.h>
-#endif
-#ifdef HAVE_ARPA_INET_H
-# include <arpa/inet.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h sys/socket.h netinet/in.h arpa/inet.h,
- [], [], [$cares_includes_arpa_inet])
-])
-
-
-dnl CARES_INCLUDES_FCNTL
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when fcntl.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_FCNTL], [
-cares_includes_fcntl="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h unistd.h fcntl.h,
- [], [], [$cares_includes_fcntl])
-])
-
-
-dnl CARES_INCLUDES_NETDB
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when netdb.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_NETDB], [
-cares_includes_netdb="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_NETDB_H
-# include <netdb.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h netdb.h,
- [], [], [$cares_includes_netdb])
-])
-
-
-dnl CARES_INCLUDES_SOCKET
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when socket.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_SOCKET], [
-cares_includes_socket="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SOCKET_H
-# include <socket.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h socket.h,
- [], [], [$cares_includes_socket])
-])
-
-
-dnl CARES_INCLUDES_STDLIB
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when stdlib.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_STDLIB], [
-cares_includes_stdlib="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h stdlib.h,
- [], [], [$cares_includes_stdlib])
-])
-
-
-dnl CARES_INCLUDES_STRING
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when string(s).h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_STRING], [
-cares_includes_string="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h string.h strings.h,
- [], [], [$cares_includes_string])
-])
-
-
-dnl CARES_INCLUDES_STROPTS
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when stropts.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_STROPTS], [
-cares_includes_stropts="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-#ifdef HAVE_SYS_IOCTL_H
-# include <sys/ioctl.h>
-#endif
-#ifdef HAVE_STROPTS_H
-# include <stropts.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h unistd.h sys/socket.h sys/ioctl.h stropts.h,
- [], [], [$cares_includes_stropts])
-])
-
-
-dnl CARES_INCLUDES_SYS_SOCKET
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when sys/socket.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_SYS_SOCKET], [
-cares_includes_sys_socket="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_SOCKET_H
-# include <sys/socket.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h sys/socket.h,
- [], [], [$cares_includes_sys_socket])
-])
-
-
-dnl CARES_INCLUDES_SYS_TYPES
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when sys/types.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_SYS_TYPES], [
-cares_includes_sys_types="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h,
- [], [], [$cares_includes_sys_types])
-])
-
-
-dnl CARES_INCLUDES_SYS_UIO
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when sys/uio.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_SYS_UIO], [
-cares_includes_sys_uio="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_UIO_H
-# include <sys/uio.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h sys/uio.h,
- [], [], [$cares_includes_sys_uio])
-])
-
-
-dnl CARES_INCLUDES_UNISTD
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when unistd.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_UNISTD], [
-cares_includes_unistd="\
-/* includes start */
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-/* includes end */"
- AC_CHECK_HEADERS(
- sys/types.h unistd.h,
- [], [], [$cares_includes_unistd])
-])
-
-
-dnl CARES_INCLUDES_WINSOCK2
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when winsock(2).h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_WINSOCK2], [
-cares_includes_winsock2="\
-/* includes start */
-#ifdef HAVE_WINDOWS_H
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h>
-# ifdef HAVE_WINSOCK2_H
-# include <winsock2.h>
-# else
-# ifdef HAVE_WINSOCK_H
-# include <winsock.h>
-# endif
-# endif
-#endif
-/* includes end */"
- CURL_CHECK_HEADER_WINDOWS
- CURL_CHECK_HEADER_WINSOCK
- CURL_CHECK_HEADER_WINSOCK2
-])
-
-
-dnl CARES_INCLUDES_WS2TCPIP
-dnl -------------------------------------------------
-dnl Set up variable with list of headers that must be
-dnl included when ws2tcpip.h is to be included.
-
-AC_DEFUN([CARES_INCLUDES_WS2TCPIP], [
-cares_includes_ws2tcpip="\
-/* includes start */
-#ifdef HAVE_WINDOWS_H
-# ifndef WIN32_LEAN_AND_MEAN
-# define WIN32_LEAN_AND_MEAN
-# endif
-# include <windows.h>
-# ifdef HAVE_WINSOCK2_H
-# include <winsock2.h>
-# ifdef HAVE_WS2TCPIP_H
-# include <ws2tcpip.h>
-# endif
-# endif
-#endif
-/* includes end */"
- CURL_CHECK_HEADER_WINDOWS
- CURL_CHECK_HEADER_WINSOCK2
- CURL_CHECK_HEADER_WS2TCPIP
-])
-
-
-dnl CARES_PREPROCESS_CALLCONV
-dnl -------------------------------------------------
-dnl Set up variable with a preprocessor block which
-dnl defines function calling convention.
-
-AC_DEFUN([CARES_PREPROCESS_CALLCONV], [
-cares_preprocess_callconv="\
-/* preprocess start */
-#ifdef HAVE_WINDOWS_H
-# define FUNCALLCONV __stdcall
-#else
-# define FUNCALLCONV
-#endif
-/* preprocess end */"
-])
-
-
-dnl CARES_CHECK_FUNC_CLOSESOCKET
-dnl -------------------------------------------------
-dnl Verify if closesocket is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_closesocket, then
-dnl HAVE_CLOSESOCKET will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_CLOSESOCKET], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_SOCKET])dnl
- #
- tst_links_closesocket="unknown"
- tst_proto_closesocket="unknown"
- tst_compi_closesocket="unknown"
- tst_allow_closesocket="unknown"
- #
- AC_MSG_CHECKING([if closesocket can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_socket
- ]],[[
- if(0 != closesocket(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_closesocket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_closesocket="no"
- ])
- #
- if test "$tst_links_closesocket" = "yes"; then
- AC_MSG_CHECKING([if closesocket is prototyped])
- AC_EGREP_CPP([closesocket],[
- $cares_includes_winsock2
- $cares_includes_socket
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_closesocket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_closesocket="no"
- ])
- fi
- #
- if test "$tst_proto_closesocket" = "yes"; then
- AC_MSG_CHECKING([if closesocket is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_socket
- ]],[[
- if(0 != closesocket(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_closesocket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_closesocket="no"
- ])
- fi
- #
- if test "$tst_compi_closesocket" = "yes"; then
- AC_MSG_CHECKING([if closesocket usage allowed])
- if test "x$cares_disallow_closesocket" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_closesocket="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_closesocket="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if closesocket might be used])
- if test "$tst_links_closesocket" = "yes" &&
- test "$tst_proto_closesocket" = "yes" &&
- test "$tst_compi_closesocket" = "yes" &&
- test "$tst_allow_closesocket" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_CLOSESOCKET, 1,
- [Define to 1 if you have the closesocket function.])
- ac_cv_func_closesocket="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_closesocket="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_CLOSESOCKET_CAMEL
-dnl -------------------------------------------------
-dnl Verify if CloseSocket is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_closesocket_camel,
-dnl then HAVE_CLOSESOCKET_CAMEL will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_CLOSESOCKET_CAMEL], [
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- #
- tst_links_closesocket_camel="unknown"
- tst_proto_closesocket_camel="unknown"
- tst_compi_closesocket_camel="unknown"
- tst_allow_closesocket_camel="unknown"
- #
- AC_MSG_CHECKING([if CloseSocket can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_sys_socket
- ]],[[
- if(0 != CloseSocket(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_closesocket_camel="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_closesocket_camel="no"
- ])
- #
- if test "$tst_links_closesocket_camel" = "yes"; then
- AC_MSG_CHECKING([if CloseSocket is prototyped])
- AC_EGREP_CPP([CloseSocket],[
- $cares_includes_sys_socket
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_closesocket_camel="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_closesocket_camel="no"
- ])
- fi
- #
- if test "$tst_proto_closesocket_camel" = "yes"; then
- AC_MSG_CHECKING([if CloseSocket is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_sys_socket
- ]],[[
- if(0 != CloseSocket(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_closesocket_camel="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_closesocket_camel="no"
- ])
- fi
- #
- if test "$tst_compi_closesocket_camel" = "yes"; then
- AC_MSG_CHECKING([if CloseSocket usage allowed])
- if test "x$cares_disallow_closesocket_camel" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_closesocket_camel="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_closesocket_camel="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if CloseSocket might be used])
- if test "$tst_links_closesocket_camel" = "yes" &&
- test "$tst_proto_closesocket_camel" = "yes" &&
- test "$tst_compi_closesocket_camel" = "yes" &&
- test "$tst_allow_closesocket_camel" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_CLOSESOCKET_CAMEL, 1,
- [Define to 1 if you have the CloseSocket camel case function.])
- ac_cv_func_closesocket_camel="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_closesocket_camel="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_CONNECT
-dnl -------------------------------------------------
-dnl Verify if connect is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_connect, then
-dnl HAVE_CONNECT will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_CONNECT], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- AC_REQUIRE([CARES_INCLUDES_SOCKET])dnl
- #
- tst_links_connect="unknown"
- tst_proto_connect="unknown"
- tst_compi_connect="unknown"
- tst_allow_connect="unknown"
- #
- AC_MSG_CHECKING([if connect can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- $cares_includes_socket
- ]],[[
- if(0 != connect(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_connect="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_connect="no"
- ])
- #
- if test "$tst_links_connect" = "yes"; then
- AC_MSG_CHECKING([if connect is prototyped])
- AC_EGREP_CPP([connect],[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- $cares_includes_socket
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_connect="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_connect="no"
- ])
- fi
- #
- if test "$tst_proto_connect" = "yes"; then
- AC_MSG_CHECKING([if connect is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- $cares_includes_socket
- ]],[[
- if(0 != connect(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_connect="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_connect="no"
- ])
- fi
- #
- if test "$tst_compi_connect" = "yes"; then
- AC_MSG_CHECKING([if connect usage allowed])
- if test "x$cares_disallow_connect" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_connect="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_connect="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if connect might be used])
- if test "$tst_links_connect" = "yes" &&
- test "$tst_proto_connect" = "yes" &&
- test "$tst_compi_connect" = "yes" &&
- test "$tst_allow_connect" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_CONNECT, 1,
- [Define to 1 if you have the connect function.])
- ac_cv_func_connect="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_connect="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_FCNTL
-dnl -------------------------------------------------
-dnl Verify if fcntl is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_fcntl, then
-dnl HAVE_FCNTL will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_FCNTL], [
- AC_REQUIRE([CARES_INCLUDES_FCNTL])dnl
- #
- tst_links_fcntl="unknown"
- tst_proto_fcntl="unknown"
- tst_compi_fcntl="unknown"
- tst_allow_fcntl="unknown"
- #
- AC_MSG_CHECKING([if fcntl can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([fcntl])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_fcntl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_fcntl="no"
- ])
- #
- if test "$tst_links_fcntl" = "yes"; then
- AC_MSG_CHECKING([if fcntl is prototyped])
- AC_EGREP_CPP([fcntl],[
- $cares_includes_fcntl
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_fcntl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_fcntl="no"
- ])
- fi
- #
- if test "$tst_proto_fcntl" = "yes"; then
- AC_MSG_CHECKING([if fcntl is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_fcntl
- ]],[[
- if(0 != fcntl(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_fcntl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_fcntl="no"
- ])
- fi
- #
- if test "$tst_compi_fcntl" = "yes"; then
- AC_MSG_CHECKING([if fcntl usage allowed])
- if test "x$cares_disallow_fcntl" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_fcntl="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_fcntl="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if fcntl might be used])
- if test "$tst_links_fcntl" = "yes" &&
- test "$tst_proto_fcntl" = "yes" &&
- test "$tst_compi_fcntl" = "yes" &&
- test "$tst_allow_fcntl" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_FCNTL, 1,
- [Define to 1 if you have the fcntl function.])
- ac_cv_func_fcntl="yes"
- CARES_CHECK_FUNC_FCNTL_O_NONBLOCK
- else
- AC_MSG_RESULT([no])
- ac_cv_func_fcntl="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_FCNTL_O_NONBLOCK
-dnl -------------------------------------------------
-dnl Verify if fcntl with status flag O_NONBLOCK is
-dnl available, can be compiled, and seems to work. If
-dnl all of these are true, then HAVE_FCNTL_O_NONBLOCK
-dnl will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_FCNTL_O_NONBLOCK], [
- #
- tst_compi_fcntl_o_nonblock="unknown"
- tst_allow_fcntl_o_nonblock="unknown"
- #
- case $host_os in
- sunos4* | aix3* | beos*)
- dnl O_NONBLOCK does not work on these platforms
- cares_disallow_fcntl_o_nonblock="yes"
- ;;
- esac
- #
- if test "$ac_cv_func_fcntl" = "yes"; then
- AC_MSG_CHECKING([if fcntl O_NONBLOCK is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_fcntl
- ]],[[
- int flags = 0;
- if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_fcntl_o_nonblock="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_fcntl_o_nonblock="no"
- ])
- fi
- #
- if test "$tst_compi_fcntl_o_nonblock" = "yes"; then
- AC_MSG_CHECKING([if fcntl O_NONBLOCK usage allowed])
- if test "x$cares_disallow_fcntl_o_nonblock" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_fcntl_o_nonblock="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_fcntl_o_nonblock="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if fcntl O_NONBLOCK might be used])
- if test "$tst_compi_fcntl_o_nonblock" = "yes" &&
- test "$tst_allow_fcntl_o_nonblock" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_FCNTL_O_NONBLOCK, 1,
- [Define to 1 if you have a working fcntl O_NONBLOCK function.])
- ac_cv_func_fcntl_o_nonblock="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_fcntl_o_nonblock="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_FREEADDRINFO
-dnl -------------------------------------------------
-dnl Verify if freeaddrinfo is available, prototyped,
-dnl and can be compiled. If all of these are true,
-dnl and usage has not been previously disallowed with
-dnl shell variable cares_disallow_freeaddrinfo, then
-dnl HAVE_FREEADDRINFO will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_FREEADDRINFO], [
- AC_REQUIRE([CARES_INCLUDES_WS2TCPIP])dnl
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- AC_REQUIRE([CARES_INCLUDES_NETDB])dnl
- #
- tst_links_freeaddrinfo="unknown"
- tst_proto_freeaddrinfo="unknown"
- tst_compi_freeaddrinfo="unknown"
- tst_allow_freeaddrinfo="unknown"
- #
- AC_MSG_CHECKING([if freeaddrinfo can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ]],[[
- freeaddrinfo(0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_freeaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_freeaddrinfo="no"
- ])
- #
- if test "$tst_links_freeaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if freeaddrinfo is prototyped])
- AC_EGREP_CPP([freeaddrinfo],[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_freeaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_freeaddrinfo="no"
- ])
- fi
- #
- if test "$tst_proto_freeaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if freeaddrinfo is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ]],[[
- freeaddrinfo(0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_freeaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_freeaddrinfo="no"
- ])
- fi
- #
- if test "$tst_compi_freeaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if freeaddrinfo usage allowed])
- if test "x$cares_disallow_freeaddrinfo" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_freeaddrinfo="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_freeaddrinfo="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if freeaddrinfo might be used])
- if test "$tst_links_freeaddrinfo" = "yes" &&
- test "$tst_proto_freeaddrinfo" = "yes" &&
- test "$tst_compi_freeaddrinfo" = "yes" &&
- test "$tst_allow_freeaddrinfo" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_FREEADDRINFO, 1,
- [Define to 1 if you have the freeaddrinfo function.])
- ac_cv_func_freeaddrinfo="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_freeaddrinfo="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_GETADDRINFO
-dnl -------------------------------------------------
-dnl Verify if getaddrinfo is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable cares_disallow_getaddrinfo, then
-dnl HAVE_GETADDRINFO will be defined. Additionally when
-dnl HAVE_GETADDRINFO gets defined this will also attempt
-dnl to find out if getaddrinfo happens to be threadsafe,
-dnl defining HAVE_GETADDRINFO_THREADSAFE when true.
-
-AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
- AC_REQUIRE([CARES_INCLUDES_WS2TCPIP])dnl
- AC_REQUIRE([CARES_INCLUDES_STDLIB])dnl
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- AC_REQUIRE([CARES_INCLUDES_NETDB])dnl
- #
- tst_links_getaddrinfo="unknown"
- tst_proto_getaddrinfo="unknown"
- tst_compi_getaddrinfo="unknown"
- tst_works_getaddrinfo="unknown"
- tst_allow_getaddrinfo="unknown"
- tst_tsafe_getaddrinfo="unknown"
- #
- AC_MSG_CHECKING([if getaddrinfo can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ]],[[
- if(0 != getaddrinfo(0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_getaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_getaddrinfo="no"
- ])
- #
- if test "$tst_links_getaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if getaddrinfo is prototyped])
- AC_EGREP_CPP([getaddrinfo],[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_getaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_getaddrinfo="no"
- ])
- fi
- #
- if test "$tst_proto_getaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if getaddrinfo is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ]],[[
- if(0 != getaddrinfo(0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_getaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_getaddrinfo="no"
- ])
- fi
- #
- dnl only do runtime verification when not cross-compiling
- if test "x$cross_compiling" != "xyes" &&
- test "$tst_compi_getaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if getaddrinfo seems to work])
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_ws2tcpip
- $cares_includes_stdlib
- $cares_includes_string
- $cares_includes_sys_socket
- $cares_includes_netdb
- ]],[[
- struct addrinfo hints;
- struct addrinfo *ai = 0;
- int error;
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_flags = AI_NUMERICHOST;
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
- error = getaddrinfo("127.0.0.1", 0, &hints, &ai);
- if(error || !ai)
- exit(1); /* fail */
- else
- exit(0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_works_getaddrinfo="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_works_getaddrinfo="no"
- ])
- fi
- #
- if test "$tst_compi_getaddrinfo" = "yes" &&
- test "$tst_works_getaddrinfo" != "no"; then
- AC_MSG_CHECKING([if getaddrinfo usage allowed])
- if test "x$cares_disallow_getaddrinfo" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_getaddrinfo="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_getaddrinfo="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if getaddrinfo might be used])
- if test "$tst_links_getaddrinfo" = "yes" &&
- test "$tst_proto_getaddrinfo" = "yes" &&
- test "$tst_compi_getaddrinfo" = "yes" &&
- test "$tst_allow_getaddrinfo" = "yes" &&
- test "$tst_works_getaddrinfo" != "no"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO, 1,
- [Define to 1 if you have a working getaddrinfo function.])
- ac_cv_func_getaddrinfo="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_getaddrinfo="no"
- ac_cv_func_getaddrinfo_threadsafe="no"
- fi
- #
- if test "$ac_cv_func_getaddrinfo" = "yes"; then
- AC_MSG_CHECKING([if getaddrinfo is threadsafe])
- case $host_os in
- aix[[1234]].* | aix5.[[01]].*)
- dnl aix 5.1 and older
- tst_tsafe_getaddrinfo="no"
- ;;
- aix*)
- dnl aix 5.2 and newer
- tst_tsafe_getaddrinfo="yes"
- ;;
- darwin[[12345]].*)
- dnl darwin 5.0 and mac os x 10.1.X and older
- tst_tsafe_getaddrinfo="no"
- ;;
- darwin*)
- dnl darwin 6.0 and mac os x 10.2.X and newer
- tst_tsafe_getaddrinfo="yes"
- ;;
- freebsd[[1234]].* | freebsd5.[[1234]]*)
- dnl freebsd 5.4 and older
- tst_tsafe_getaddrinfo="no"
- ;;
- freebsd*)
- dnl freebsd 5.5 and newer
- tst_tsafe_getaddrinfo="yes"
- ;;
- hpux[[123456789]].* | hpux10.* | hpux11.0* | hpux11.10*)
- dnl hpux 11.10 and older
- tst_tsafe_getaddrinfo="no"
- ;;
- hpux*)
- dnl hpux 11.11 and newer
- tst_tsafe_getaddrinfo="yes"
- ;;
- netbsd[[123]].*)
- dnl netbsd 3.X and older
- tst_tsafe_getaddrinfo="no"
- ;;
- netbsd*)
- dnl netbsd 4.X and newer
- tst_tsafe_getaddrinfo="yes"
- ;;
- *bsd*)
- dnl All other bsd's
- tst_tsafe_getaddrinfo="no"
- ;;
- solaris2*)
- dnl solaris which have it
- tst_tsafe_getaddrinfo="yes"
- ;;
- esac
- if test "$tst_tsafe_getaddrinfo" = "unknown"; then
- CURL_CHECK_DEF_CC([h_errno], [
- $cares_includes_ws2tcpip
- $cares_includes_sys_socket
- $cares_includes_netdb
- ], [silent])
- if test "$curl_cv_have_def_h_errno" = "no"; then
- tst_tsafe_getaddrinfo="no"
- fi
- fi
- if test "$tst_tsafe_getaddrinfo" = "unknown"; then
- tst_tsafe_getaddrinfo="yes"
- fi
- AC_MSG_RESULT([$tst_tsafe_getaddrinfo])
- if test "$tst_tsafe_getaddrinfo" = "yes"; then
- AC_DEFINE_UNQUOTED(HAVE_GETADDRINFO_THREADSAFE, 1,
- [Define to 1 if the getaddrinfo function is threadsafe.])
- ac_cv_func_getaddrinfo_threadsafe="yes"
- else
- ac_cv_func_getaddrinfo_threadsafe="no"
- fi
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_GETHOSTBYADDR
-dnl -------------------------------------------------
-dnl Verify if gethostbyaddr is available, prototyped,
-dnl and can be compiled. If all of these are true,
-dnl and usage has not been previously disallowed with
-dnl shell variable cares_disallow_gethostbyaddr, then
-dnl HAVE_GETHOSTBYADDR will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_GETHOSTBYADDR], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_NETDB])dnl
- #
- tst_links_gethostbyaddr="unknown"
- tst_proto_gethostbyaddr="unknown"
- tst_compi_gethostbyaddr="unknown"
- tst_allow_gethostbyaddr="unknown"
- #
- AC_MSG_CHECKING([if gethostbyaddr can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_netdb
- ]],[[
- if(0 != gethostbyaddr(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_gethostbyaddr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_gethostbyaddr="no"
- ])
- #
- if test "$tst_links_gethostbyaddr" = "yes"; then
- AC_MSG_CHECKING([if gethostbyaddr is prototyped])
- AC_EGREP_CPP([gethostbyaddr],[
- $cares_includes_winsock2
- $cares_includes_netdb
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_gethostbyaddr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_gethostbyaddr="no"
- ])
- fi
- #
- if test "$tst_proto_gethostbyaddr" = "yes"; then
- AC_MSG_CHECKING([if gethostbyaddr is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_netdb
- ]],[[
- if(0 != gethostbyaddr(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_gethostbyaddr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_gethostbyaddr="no"
- ])
- fi
- #
- if test "$tst_compi_gethostbyaddr" = "yes"; then
- AC_MSG_CHECKING([if gethostbyaddr usage allowed])
- if test "x$cares_disallow_gethostbyaddr" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_gethostbyaddr="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_gethostbyaddr="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if gethostbyaddr might be used])
- if test "$tst_links_gethostbyaddr" = "yes" &&
- test "$tst_proto_gethostbyaddr" = "yes" &&
- test "$tst_compi_gethostbyaddr" = "yes" &&
- test "$tst_allow_gethostbyaddr" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYADDR, 1,
- [Define to 1 if you have the gethostbyaddr function.])
- ac_cv_func_gethostbyaddr="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_gethostbyaddr="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_GETHOSTBYNAME
-dnl -------------------------------------------------
-dnl Verify if gethostbyname is available, prototyped,
-dnl and can be compiled. If all of these are true,
-dnl and usage has not been previously disallowed with
-dnl shell variable cares_disallow_gethostbyname, then
-dnl HAVE_GETHOSTBYNAME will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_GETHOSTBYNAME], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_NETDB])dnl
- #
- tst_links_gethostbyname="unknown"
- tst_proto_gethostbyname="unknown"
- tst_compi_gethostbyname="unknown"
- tst_allow_gethostbyname="unknown"
- #
- AC_MSG_CHECKING([if gethostbyname can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_netdb
- ]],[[
- if(0 != gethostbyname(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_gethostbyname="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_gethostbyname="no"
- ])
- #
- if test "$tst_links_gethostbyname" = "yes"; then
- AC_MSG_CHECKING([if gethostbyname is prototyped])
- AC_EGREP_CPP([gethostbyname],[
- $cares_includes_winsock2
- $cares_includes_netdb
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_gethostbyname="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_gethostbyname="no"
- ])
- fi
- #
- if test "$tst_proto_gethostbyname" = "yes"; then
- AC_MSG_CHECKING([if gethostbyname is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_netdb
- ]],[[
- if(0 != gethostbyname(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_gethostbyname="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_gethostbyname="no"
- ])
- fi
- #
- if test "$tst_compi_gethostbyname" = "yes"; then
- AC_MSG_CHECKING([if gethostbyname usage allowed])
- if test "x$cares_disallow_gethostbyname" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_gethostbyname="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_gethostbyname="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if gethostbyname might be used])
- if test "$tst_links_gethostbyname" = "yes" &&
- test "$tst_proto_gethostbyname" = "yes" &&
- test "$tst_compi_gethostbyname" = "yes" &&
- test "$tst_allow_gethostbyname" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_GETHOSTBYNAME, 1,
- [Define to 1 if you have the gethostbyname function.])
- ac_cv_func_gethostbyname="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_gethostbyname="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_GETHOSTNAME
-dnl -------------------------------------------------
-dnl Verify if gethostname is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_gethostname, then
-dnl HAVE_GETHOSTNAME will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_GETHOSTNAME], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_UNISTD])dnl
- #
- tst_links_gethostname="unknown"
- tst_proto_gethostname="unknown"
- tst_compi_gethostname="unknown"
- tst_allow_gethostname="unknown"
- #
- AC_MSG_CHECKING([if gethostname can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_unistd
- ]],[[
- if(0 != gethostname(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_gethostname="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_gethostname="no"
- ])
- #
- if test "$tst_links_gethostname" = "yes"; then
- AC_MSG_CHECKING([if gethostname is prototyped])
- AC_EGREP_CPP([gethostname],[
- $cares_includes_winsock2
- $cares_includes_unistd
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_gethostname="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_gethostname="no"
- ])
- fi
- #
- if test "$tst_proto_gethostname" = "yes"; then
- AC_MSG_CHECKING([if gethostname is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_unistd
- ]],[[
- if(0 != gethostname(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_gethostname="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_gethostname="no"
- ])
- fi
- #
- if test "$tst_compi_gethostname" = "yes"; then
- AC_MSG_CHECKING([if gethostname usage allowed])
- if test "x$cares_disallow_gethostname" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_gethostname="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_gethostname="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if gethostname might be used])
- if test "$tst_links_gethostname" = "yes" &&
- test "$tst_proto_gethostname" = "yes" &&
- test "$tst_compi_gethostname" = "yes" &&
- test "$tst_allow_gethostname" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_GETHOSTNAME, 1,
- [Define to 1 if you have the gethostname function.])
- ac_cv_func_gethostname="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_gethostname="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_GETSERVBYPORT_R
-dnl -------------------------------------------------
-dnl Verify if getservbyport_r is available, prototyped,
-dnl and can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_getservbyport_r, then
-dnl HAVE_GETSERVBYPORT_R will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_GETSERVBYPORT_R], [
- AC_REQUIRE([CARES_INCLUDES_NETDB])dnl
- #
- tst_links_getservbyport_r="unknown"
- tst_proto_getservbyport_r="unknown"
- tst_compi_getservbyport_r="unknown"
- tst_allow_getservbyport_r="unknown"
- tst_nargs_getservbyport_r="unknown"
- #
- AC_MSG_CHECKING([if getservbyport_r can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getservbyport_r])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_getservbyport_r="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_getservbyport_r="no"
- ])
- #
- if test "$tst_links_getservbyport_r" = "yes"; then
- AC_MSG_CHECKING([if getservbyport_r is prototyped])
- AC_EGREP_CPP([getservbyport_r],[
- $cares_includes_netdb
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_getservbyport_r="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_getservbyport_r="no"
- ])
- fi
- #
- if test "$tst_proto_getservbyport_r" = "yes"; then
- if test "$tst_nargs_getservbyport_r" = "unknown"; then
- AC_MSG_CHECKING([if getservbyport_r takes 4 args.])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_netdb
- ]],[[
- if(0 != getservbyport_r(0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_getservbyport_r="yes"
- tst_nargs_getservbyport_r="4"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_getservbyport_r="no"
- ])
- fi
- if test "$tst_nargs_getservbyport_r" = "unknown"; then
- AC_MSG_CHECKING([if getservbyport_r takes 5 args.])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_netdb
- ]],[[
- if(0 != getservbyport_r(0, 0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_getservbyport_r="yes"
- tst_nargs_getservbyport_r="5"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_getservbyport_r="no"
- ])
- fi
- if test "$tst_nargs_getservbyport_r" = "unknown"; then
- AC_MSG_CHECKING([if getservbyport_r takes 6 args.])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_netdb
- ]],[[
- if(0 != getservbyport_r(0, 0, 0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_getservbyport_r="yes"
- tst_nargs_getservbyport_r="6"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_getservbyport_r="no"
- ])
- fi
- AC_MSG_CHECKING([if getservbyport_r is compilable])
- if test "$tst_compi_getservbyport_r" = "yes"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- fi
- #
- if test "$tst_compi_getservbyport_r" = "yes"; then
- AC_MSG_CHECKING([if getservbyport_r usage allowed])
- if test "x$cares_disallow_getservbyport_r" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_getservbyport_r="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_getservbyport_r="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if getservbyport_r might be used])
- if test "$tst_links_getservbyport_r" = "yes" &&
- test "$tst_proto_getservbyport_r" = "yes" &&
- test "$tst_compi_getservbyport_r" = "yes" &&
- test "$tst_allow_getservbyport_r" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_GETSERVBYPORT_R, 1,
- [Define to 1 if you have the getservbyport_r function.])
- AC_DEFINE_UNQUOTED(GETSERVBYPORT_R_ARGS, $tst_nargs_getservbyport_r,
- [Specifies the number of arguments to getservbyport_r])
- if test "$tst_nargs_getservbyport_r" -eq "4"; then
- AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, sizeof(struct servent_data),
- [Specifies the size of the buffer to pass to getservbyport_r])
- else
- AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, 4096,
- [Specifies the size of the buffer to pass to getservbyport_r])
- fi
- ac_cv_func_getservbyport_r="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_getservbyport_r="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_INET_NTOP
-dnl -------------------------------------------------
-dnl Verify if inet_ntop is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable cares_disallow_inet_ntop, then
-dnl HAVE_INET_NTOP will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_INET_NTOP], [
- AC_REQUIRE([CARES_INCLUDES_STDLIB])dnl
- AC_REQUIRE([CARES_INCLUDES_ARPA_INET])dnl
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_inet_ntop="unknown"
- tst_proto_inet_ntop="unknown"
- tst_compi_inet_ntop="unknown"
- tst_works_inet_ntop="unknown"
- tst_allow_inet_ntop="unknown"
- #
- AC_MSG_CHECKING([if inet_ntop can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([inet_ntop])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_inet_ntop="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_inet_ntop="no"
- ])
- #
- if test "$tst_links_inet_ntop" = "yes"; then
- AC_MSG_CHECKING([if inet_ntop is prototyped])
- AC_EGREP_CPP([inet_ntop],[
- $cares_includes_arpa_inet
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_inet_ntop="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_inet_ntop="no"
- ])
- fi
- #
- if test "$tst_proto_inet_ntop" = "yes"; then
- AC_MSG_CHECKING([if inet_ntop is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_arpa_inet
- ]],[[
- if(0 != inet_ntop(0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_inet_ntop="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_inet_ntop="no"
- ])
- fi
- #
- dnl only do runtime verification when not cross-compiling
- if test "x$cross_compiling" != "xyes" &&
- test "$tst_compi_inet_ntop" = "yes"; then
- AC_MSG_CHECKING([if inet_ntop seems to work])
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stdlib
- $cares_includes_arpa_inet
- $cares_includes_string
- ]],[[
- char ipv6res[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
- char ipv4res[sizeof "255.255.255.255"];
- unsigned char ipv6a[26];
- unsigned char ipv4a[5];
- char *ipv6ptr = 0;
- char *ipv4ptr = 0;
- /* - */
- ipv4res[0] = '\0';
- ipv4a[0] = 0xc0;
- ipv4a[1] = 0xa8;
- ipv4a[2] = 0x64;
- ipv4a[3] = 0x01;
- ipv4a[4] = 0x01;
- /* - */
- ipv4ptr = inet_ntop(AF_INET, ipv4a, ipv4res, sizeof(ipv4res));
- if(!ipv4ptr)
- exit(1); /* fail */
- if(ipv4ptr != ipv4res)
- exit(1); /* fail */
- if(!ipv4ptr[0])
- exit(1); /* fail */
- if(memcmp(ipv4res, "192.168.100.1", 13) != 0)
- exit(1); /* fail */
- /* - */
- ipv6res[0] = '\0';
- memset(ipv6a, 0, sizeof(ipv6a));
- ipv6a[0] = 0xfe;
- ipv6a[1] = 0x80;
- ipv6a[8] = 0x02;
- ipv6a[9] = 0x14;
- ipv6a[10] = 0x4f;
- ipv6a[11] = 0xff;
- ipv6a[12] = 0xfe;
- ipv6a[13] = 0x0b;
- ipv6a[14] = 0x76;
- ipv6a[15] = 0xc8;
- ipv6a[25] = 0x01;
- /* - */
- ipv6ptr = inet_ntop(AF_INET6, ipv6a, ipv6res, sizeof(ipv6res));
- if(!ipv6ptr)
- exit(1); /* fail */
- if(ipv6ptr != ipv6res)
- exit(1); /* fail */
- if(!ipv6ptr[0])
- exit(1); /* fail */
- if(memcmp(ipv6res, "fe80::214:4fff:fe0b:76c8", 24) != 0)
- exit(1); /* fail */
- /* - */
- exit(0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_works_inet_ntop="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_works_inet_ntop="no"
- ])
- fi
- #
- if test "$tst_compi_inet_ntop" = "yes" &&
- test "$tst_works_inet_ntop" != "no"; then
- AC_MSG_CHECKING([if inet_ntop usage allowed])
- if test "x$cares_disallow_inet_ntop" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_inet_ntop="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_inet_ntop="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if inet_ntop might be used])
- if test "$tst_links_inet_ntop" = "yes" &&
- test "$tst_proto_inet_ntop" = "yes" &&
- test "$tst_compi_inet_ntop" = "yes" &&
- test "$tst_allow_inet_ntop" = "yes" &&
- test "$tst_works_inet_ntop" != "no"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_INET_NTOP, 1,
- [Define to 1 if you have a IPv6 capable working inet_ntop function.])
- ac_cv_func_inet_ntop="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_inet_ntop="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_INET_PTON
-dnl -------------------------------------------------
-dnl Verify if inet_pton is available, prototyped, can
-dnl be compiled and seems to work. If all of these are
-dnl true, and usage has not been previously disallowed
-dnl with shell variable cares_disallow_inet_pton, then
-dnl HAVE_INET_PTON will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_INET_PTON], [
- AC_REQUIRE([CARES_INCLUDES_STDLIB])dnl
- AC_REQUIRE([CARES_INCLUDES_ARPA_INET])dnl
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_inet_pton="unknown"
- tst_proto_inet_pton="unknown"
- tst_compi_inet_pton="unknown"
- tst_works_inet_pton="unknown"
- tst_allow_inet_pton="unknown"
- #
- AC_MSG_CHECKING([if inet_pton can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([inet_pton])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_inet_pton="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_inet_pton="no"
- ])
- #
- if test "$tst_links_inet_pton" = "yes"; then
- AC_MSG_CHECKING([if inet_pton is prototyped])
- AC_EGREP_CPP([inet_pton],[
- $cares_includes_arpa_inet
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_inet_pton="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_inet_pton="no"
- ])
- fi
- #
- if test "$tst_proto_inet_pton" = "yes"; then
- AC_MSG_CHECKING([if inet_pton is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_arpa_inet
- ]],[[
- if(0 != inet_pton(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_inet_pton="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_inet_pton="no"
- ])
- fi
- #
- dnl only do runtime verification when not cross-compiling
- if test "x$cross_compiling" != "xyes" &&
- test "$tst_compi_inet_pton" = "yes"; then
- AC_MSG_CHECKING([if inet_pton seems to work])
- AC_RUN_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stdlib
- $cares_includes_arpa_inet
- $cares_includes_string
- ]],[[
- unsigned char ipv6a[16+1];
- unsigned char ipv4a[4+1];
- const char *ipv6src = "fe80::214:4fff:fe0b:76c8";
- const char *ipv4src = "192.168.100.1";
- /* - */
- memset(ipv4a, 1, sizeof(ipv4a));
- if(1 != inet_pton(AF_INET, ipv4src, ipv4a))
- exit(1); /* fail */
- /* - */
- if( (ipv4a[0] != 0xc0) ||
- (ipv4a[1] != 0xa8) ||
- (ipv4a[2] != 0x64) ||
- (ipv4a[3] != 0x01) ||
- (ipv4a[4] != 0x01) )
- exit(1); /* fail */
- /* - */
- memset(ipv6a, 1, sizeof(ipv6a));
- if(1 != inet_pton(AF_INET6, ipv6src, ipv6a))
- exit(1); /* fail */
- /* - */
- if( (ipv6a[0] != 0xfe) ||
- (ipv6a[1] != 0x80) ||
- (ipv6a[8] != 0x02) ||
- (ipv6a[9] != 0x14) ||
- (ipv6a[10] != 0x4f) ||
- (ipv6a[11] != 0xff) ||
- (ipv6a[12] != 0xfe) ||
- (ipv6a[13] != 0x0b) ||
- (ipv6a[14] != 0x76) ||
- (ipv6a[15] != 0xc8) ||
- (ipv6a[16] != 0x01) )
- exit(1); /* fail */
- /* - */
- if( (ipv6a[2] != 0x0) ||
- (ipv6a[3] != 0x0) ||
- (ipv6a[4] != 0x0) ||
- (ipv6a[5] != 0x0) ||
- (ipv6a[6] != 0x0) ||
- (ipv6a[7] != 0x0) )
- exit(1); /* fail */
- /* - */
- exit(0);
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_works_inet_pton="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_works_inet_pton="no"
- ])
- fi
- #
- if test "$tst_compi_inet_pton" = "yes" &&
- test "$tst_works_inet_pton" != "no"; then
- AC_MSG_CHECKING([if inet_pton usage allowed])
- if test "x$cares_disallow_inet_pton" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_inet_pton="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_inet_pton="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if inet_pton might be used])
- if test "$tst_links_inet_pton" = "yes" &&
- test "$tst_proto_inet_pton" = "yes" &&
- test "$tst_compi_inet_pton" = "yes" &&
- test "$tst_allow_inet_pton" = "yes" &&
- test "$tst_works_inet_pton" != "no"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_INET_PTON, 1,
- [Define to 1 if you have a IPv6 capable working inet_pton function.])
- ac_cv_func_inet_pton="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_inet_pton="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTL
-dnl -------------------------------------------------
-dnl Verify if ioctl is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_ioctl, then
-dnl HAVE_IOCTL will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTL], [
- AC_REQUIRE([CARES_INCLUDES_STROPTS])dnl
- #
- tst_links_ioctl="unknown"
- tst_proto_ioctl="unknown"
- tst_compi_ioctl="unknown"
- tst_allow_ioctl="unknown"
- #
- AC_MSG_CHECKING([if ioctl can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([ioctl])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_ioctl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_ioctl="no"
- ])
- #
- if test "$tst_links_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl is prototyped])
- AC_EGREP_CPP([ioctl],[
- $cares_includes_stropts
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_ioctl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_ioctl="no"
- ])
- fi
- #
- if test "$tst_proto_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stropts
- ]],[[
- if(0 != ioctl(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctl="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctl="no"
- ])
- fi
- #
- if test "$tst_compi_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl usage allowed])
- if test "x$cares_disallow_ioctl" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctl="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctl="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if ioctl might be used])
- if test "$tst_links_ioctl" = "yes" &&
- test "$tst_proto_ioctl" = "yes" &&
- test "$tst_compi_ioctl" = "yes" &&
- test "$tst_allow_ioctl" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTL, 1,
- [Define to 1 if you have the ioctl function.])
- ac_cv_func_ioctl="yes"
- CARES_CHECK_FUNC_IOCTL_FIONBIO
- CARES_CHECK_FUNC_IOCTL_SIOCGIFADDR
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctl="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTL_FIONBIO
-dnl -------------------------------------------------
-dnl Verify if ioctl with the FIONBIO command is
-dnl available, can be compiled, and seems to work. If
-dnl all of these are true, then HAVE_IOCTL_FIONBIO
-dnl will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTL_FIONBIO], [
- #
- tst_compi_ioctl_fionbio="unknown"
- tst_allow_ioctl_fionbio="unknown"
- #
- if test "$ac_cv_func_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl FIONBIO is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stropts
- ]],[[
- int flags = 0;
- if(0 != ioctl(0, FIONBIO, &flags))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctl_fionbio="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctl_fionbio="no"
- ])
- fi
- #
- if test "$tst_compi_ioctl_fionbio" = "yes"; then
- AC_MSG_CHECKING([if ioctl FIONBIO usage allowed])
- if test "x$cares_disallow_ioctl_fionbio" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctl_fionbio="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctl_fionbio="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if ioctl FIONBIO might be used])
- if test "$tst_compi_ioctl_fionbio" = "yes" &&
- test "$tst_allow_ioctl_fionbio" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTL_FIONBIO, 1,
- [Define to 1 if you have a working ioctl FIONBIO function.])
- ac_cv_func_ioctl_fionbio="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctl_fionbio="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTL_SIOCGIFADDR
-dnl -------------------------------------------------
-dnl Verify if ioctl with the SIOCGIFADDR command is available,
-dnl struct ifreq is defined, they can be compiled, and seem to
-dnl work. If all of these are true, then HAVE_IOCTL_SIOCGIFADDR
-dnl will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTL_SIOCGIFADDR], [
- #
- tst_compi_ioctl_siocgifaddr="unknown"
- tst_allow_ioctl_siocgifaddr="unknown"
- #
- if test "$ac_cv_func_ioctl" = "yes"; then
- AC_MSG_CHECKING([if ioctl SIOCGIFADDR is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stropts
- #include <net/if.h>
- ]],[[
- struct ifreq ifr;
- if(0 != ioctl(0, SIOCGIFADDR, &ifr))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctl_siocgifaddr="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctl_siocgifaddr="no"
- ])
- fi
- #
- if test "$tst_compi_ioctl_siocgifaddr" = "yes"; then
- AC_MSG_CHECKING([if ioctl SIOCGIFADDR usage allowed])
- if test "x$cares_disallow_ioctl_siocgifaddr" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctl_siocgifaddr="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctl_siocgifaddr="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if ioctl SIOCGIFADDR might be used])
- if test "$tst_compi_ioctl_siocgifaddr" = "yes" &&
- test "$tst_allow_ioctl_siocgifaddr" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTL_SIOCGIFADDR, 1,
- [Define to 1 if you have a working ioctl SIOCGIFADDR function.])
- ac_cv_func_ioctl_siocgifaddr="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctl_siocgifaddr="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTLSOCKET
-dnl -------------------------------------------------
-dnl Verify if ioctlsocket is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_ioctlsocket, then
-dnl HAVE_IOCTLSOCKET will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTLSOCKET], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- #
- tst_links_ioctlsocket="unknown"
- tst_proto_ioctlsocket="unknown"
- tst_compi_ioctlsocket="unknown"
- tst_allow_ioctlsocket="unknown"
- #
- AC_MSG_CHECKING([if ioctlsocket can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- ]],[[
- if(0 != ioctlsocket(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_ioctlsocket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_ioctlsocket="no"
- ])
- #
- if test "$tst_links_ioctlsocket" = "yes"; then
- AC_MSG_CHECKING([if ioctlsocket is prototyped])
- AC_EGREP_CPP([ioctlsocket],[
- $cares_includes_winsock2
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_ioctlsocket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_ioctlsocket="no"
- ])
- fi
- #
- if test "$tst_proto_ioctlsocket" = "yes"; then
- AC_MSG_CHECKING([if ioctlsocket is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- ]],[[
- if(0 != ioctlsocket(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctlsocket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctlsocket="no"
- ])
- fi
- #
- if test "$tst_compi_ioctlsocket" = "yes"; then
- AC_MSG_CHECKING([if ioctlsocket usage allowed])
- if test "x$cares_disallow_ioctlsocket" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctlsocket="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctlsocket="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if ioctlsocket might be used])
- if test "$tst_links_ioctlsocket" = "yes" &&
- test "$tst_proto_ioctlsocket" = "yes" &&
- test "$tst_compi_ioctlsocket" = "yes" &&
- test "$tst_allow_ioctlsocket" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET, 1,
- [Define to 1 if you have the ioctlsocket function.])
- ac_cv_func_ioctlsocket="yes"
- CARES_CHECK_FUNC_IOCTLSOCKET_FIONBIO
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctlsocket="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTLSOCKET_FIONBIO
-dnl -------------------------------------------------
-dnl Verify if ioctlsocket with the FIONBIO command is
-dnl available, can be compiled, and seems to work. If
-dnl all of these are true, then HAVE_IOCTLSOCKET_FIONBIO
-dnl will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTLSOCKET_FIONBIO], [
- #
- tst_compi_ioctlsocket_fionbio="unknown"
- tst_allow_ioctlsocket_fionbio="unknown"
- #
- if test "$ac_cv_func_ioctlsocket" = "yes"; then
- AC_MSG_CHECKING([if ioctlsocket FIONBIO is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- ]],[[
- int flags = 0;
- if(0 != ioctlsocket(0, FIONBIO, &flags))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctlsocket_fionbio="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctlsocket_fionbio="no"
- ])
- fi
- #
- if test "$tst_compi_ioctlsocket_fionbio" = "yes"; then
- AC_MSG_CHECKING([if ioctlsocket FIONBIO usage allowed])
- if test "x$cares_disallow_ioctlsocket_fionbio" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctlsocket_fionbio="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctlsocket_fionbio="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if ioctlsocket FIONBIO might be used])
- if test "$tst_compi_ioctlsocket_fionbio" = "yes" &&
- test "$tst_allow_ioctlsocket_fionbio" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_FIONBIO, 1,
- [Define to 1 if you have a working ioctlsocket FIONBIO function.])
- ac_cv_func_ioctlsocket_fionbio="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctlsocket_fionbio="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL
-dnl -------------------------------------------------
-dnl Verify if IoctlSocket is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_ioctlsocket_camel,
-dnl then HAVE_IOCTLSOCKET_CAMEL will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL], [
- AC_REQUIRE([CARES_INCLUDES_STROPTS])dnl
- #
- tst_links_ioctlsocket_camel="unknown"
- tst_proto_ioctlsocket_camel="unknown"
- tst_compi_ioctlsocket_camel="unknown"
- tst_allow_ioctlsocket_camel="unknown"
- #
- AC_MSG_CHECKING([if IoctlSocket can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([IoctlSocket])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_ioctlsocket_camel="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_ioctlsocket_camel="no"
- ])
- #
- if test "$tst_links_ioctlsocket_camel" = "yes"; then
- AC_MSG_CHECKING([if IoctlSocket is prototyped])
- AC_EGREP_CPP([IoctlSocket],[
- $cares_includes_stropts
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_ioctlsocket_camel="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_ioctlsocket_camel="no"
- ])
- fi
- #
- if test "$tst_proto_ioctlsocket_camel" = "yes"; then
- AC_MSG_CHECKING([if IoctlSocket is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stropts
- ]],[[
- if(0 != IoctlSocket(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctlsocket_camel="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctlsocket_camel="no"
- ])
- fi
- #
- if test "$tst_compi_ioctlsocket_camel" = "yes"; then
- AC_MSG_CHECKING([if IoctlSocket usage allowed])
- if test "x$cares_disallow_ioctlsocket_camel" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctlsocket_camel="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctlsocket_camel="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if IoctlSocket might be used])
- if test "$tst_links_ioctlsocket_camel" = "yes" &&
- test "$tst_proto_ioctlsocket_camel" = "yes" &&
- test "$tst_compi_ioctlsocket_camel" = "yes" &&
- test "$tst_allow_ioctlsocket_camel" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_CAMEL, 1,
- [Define to 1 if you have the IoctlSocket camel case function.])
- ac_cv_func_ioctlsocket_camel="yes"
- CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctlsocket_camel="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO
-dnl -------------------------------------------------
-dnl Verify if IoctlSocket with FIONBIO command is available,
-dnl can be compiled, and seems to work. If all of these are
-dnl true, then HAVE_IOCTLSOCKET_CAMEL_FIONBIO will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL_FIONBIO], [
- #
- tst_compi_ioctlsocket_camel_fionbio="unknown"
- tst_allow_ioctlsocket_camel_fionbio="unknown"
- #
- if test "$ac_cv_func_ioctlsocket_camel" = "yes"; then
- AC_MSG_CHECKING([if IoctlSocket FIONBIO is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_stropts
- ]],[[
- long flags = 0;
- if(0 != ioctlsocket(0, FIONBIO, &flags))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_ioctlsocket_camel_fionbio="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_ioctlsocket_camel_fionbio="no"
- ])
- fi
- #
- if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes"; then
- AC_MSG_CHECKING([if IoctlSocket FIONBIO usage allowed])
- if test "x$cares_disallow_ioctlsocket_camel_fionbio" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_ioctlsocket_camel_fionbio="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_ioctlsocket_camel_fionbio="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if IoctlSocket FIONBIO might be used])
- if test "$tst_compi_ioctlsocket_camel_fionbio" = "yes" &&
- test "$tst_allow_ioctlsocket_camel_fionbio" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_IOCTLSOCKET_CAMEL_FIONBIO, 1,
- [Define to 1 if you have a working IoctlSocket camel case FIONBIO function.])
- ac_cv_func_ioctlsocket_camel_fionbio="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_ioctlsocket_camel_fionbio="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_SETSOCKOPT
-dnl -------------------------------------------------
-dnl Verify if setsockopt is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_setsockopt, then
-dnl HAVE_SETSOCKOPT will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_SETSOCKOPT], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- #
- tst_links_setsockopt="unknown"
- tst_proto_setsockopt="unknown"
- tst_compi_setsockopt="unknown"
- tst_allow_setsockopt="unknown"
- #
- AC_MSG_CHECKING([if setsockopt can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- ]],[[
- if(0 != setsockopt(0, 0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_setsockopt="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_setsockopt="no"
- ])
- #
- if test "$tst_links_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt is prototyped])
- AC_EGREP_CPP([setsockopt],[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_setsockopt="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_setsockopt="no"
- ])
- fi
- #
- if test "$tst_proto_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- ]],[[
- if(0 != setsockopt(0, 0, 0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_setsockopt="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_setsockopt="no"
- ])
- fi
- #
- if test "$tst_compi_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt usage allowed])
- if test "x$cares_disallow_setsockopt" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_setsockopt="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_setsockopt="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if setsockopt might be used])
- if test "$tst_links_setsockopt" = "yes" &&
- test "$tst_proto_setsockopt" = "yes" &&
- test "$tst_compi_setsockopt" = "yes" &&
- test "$tst_allow_setsockopt" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT, 1,
- [Define to 1 if you have the setsockopt function.])
- ac_cv_func_setsockopt="yes"
- CARES_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
- else
- AC_MSG_RESULT([no])
- ac_cv_func_setsockopt="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK
-dnl -------------------------------------------------
-dnl Verify if setsockopt with the SO_NONBLOCK command is
-dnl available, can be compiled, and seems to work. If
-dnl all of these are true, then HAVE_SETSOCKOPT_SO_NONBLOCK
-dnl will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_SETSOCKOPT_SO_NONBLOCK], [
- #
- tst_compi_setsockopt_so_nonblock="unknown"
- tst_allow_setsockopt_so_nonblock="unknown"
- #
- if test "$ac_cv_func_setsockopt" = "yes"; then
- AC_MSG_CHECKING([if setsockopt SO_NONBLOCK is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- ]],[[
- if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_setsockopt_so_nonblock="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_setsockopt_so_nonblock="no"
- ])
- fi
- #
- if test "$tst_compi_setsockopt_so_nonblock" = "yes"; then
- AC_MSG_CHECKING([if setsockopt SO_NONBLOCK usage allowed])
- if test "x$cares_disallow_setsockopt_so_nonblock" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_setsockopt_so_nonblock="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_setsockopt_so_nonblock="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if setsockopt SO_NONBLOCK might be used])
- if test "$tst_compi_setsockopt_so_nonblock" = "yes" &&
- test "$tst_allow_setsockopt_so_nonblock" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_SETSOCKOPT_SO_NONBLOCK, 1,
- [Define to 1 if you have a working setsockopt SO_NONBLOCK function.])
- ac_cv_func_setsockopt_so_nonblock="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_setsockopt_so_nonblock="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_SOCKET
-dnl -------------------------------------------------
-dnl Verify if socket is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_socket, then
-dnl HAVE_SOCKET will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_SOCKET], [
- AC_REQUIRE([CARES_INCLUDES_WINSOCK2])dnl
- AC_REQUIRE([CARES_INCLUDES_SYS_SOCKET])dnl
- AC_REQUIRE([CARES_INCLUDES_SOCKET])dnl
- #
- tst_links_socket="unknown"
- tst_proto_socket="unknown"
- tst_compi_socket="unknown"
- tst_allow_socket="unknown"
- #
- AC_MSG_CHECKING([if socket can be linked])
- AC_LINK_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- $cares_includes_socket
- ]],[[
- if(0 != socket(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_socket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_socket="no"
- ])
- #
- if test "$tst_links_socket" = "yes"; then
- AC_MSG_CHECKING([if socket is prototyped])
- AC_EGREP_CPP([socket],[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- $cares_includes_socket
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_socket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_socket="no"
- ])
- fi
- #
- if test "$tst_proto_socket" = "yes"; then
- AC_MSG_CHECKING([if socket is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_winsock2
- $cares_includes_sys_socket
- $cares_includes_socket
- ]],[[
- if(0 != socket(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_socket="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_socket="no"
- ])
- fi
- #
- if test "$tst_compi_socket" = "yes"; then
- AC_MSG_CHECKING([if socket usage allowed])
- if test "x$cares_disallow_socket" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_socket="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_socket="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if socket might be used])
- if test "$tst_links_socket" = "yes" &&
- test "$tst_proto_socket" = "yes" &&
- test "$tst_compi_socket" = "yes" &&
- test "$tst_allow_socket" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_SOCKET, 1,
- [Define to 1 if you have the socket function.])
- ac_cv_func_socket="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_socket="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRCASECMP
-dnl -------------------------------------------------
-dnl Verify if strcasecmp is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_strcasecmp, then
-dnl HAVE_STRCASECMP will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRCASECMP], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_strcasecmp="unknown"
- tst_proto_strcasecmp="unknown"
- tst_compi_strcasecmp="unknown"
- tst_allow_strcasecmp="unknown"
- #
- AC_MSG_CHECKING([if strcasecmp can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strcasecmp])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strcasecmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strcasecmp="no"
- ])
- #
- if test "$tst_links_strcasecmp" = "yes"; then
- AC_MSG_CHECKING([if strcasecmp is prototyped])
- AC_EGREP_CPP([strcasecmp],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strcasecmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strcasecmp="no"
- ])
- fi
- #
- if test "$tst_proto_strcasecmp" = "yes"; then
- AC_MSG_CHECKING([if strcasecmp is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != strcasecmp(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strcasecmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strcasecmp="no"
- ])
- fi
- #
- if test "$tst_compi_strcasecmp" = "yes"; then
- AC_MSG_CHECKING([if strcasecmp usage allowed])
- if test "x$cares_disallow_strcasecmp" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strcasecmp="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strcasecmp="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strcasecmp might be used])
- if test "$tst_links_strcasecmp" = "yes" &&
- test "$tst_proto_strcasecmp" = "yes" &&
- test "$tst_compi_strcasecmp" = "yes" &&
- test "$tst_allow_strcasecmp" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRCASECMP, 1,
- [Define to 1 if you have the strcasecmp function.])
- ac_cv_func_strcasecmp="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_strcasecmp="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRCMPI
-dnl -------------------------------------------------
-dnl Verify if strcmpi is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_strcmpi, then
-dnl HAVE_STRCMPI will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRCMPI], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_strcmpi="unknown"
- tst_proto_strcmpi="unknown"
- tst_compi_strcmpi="unknown"
- tst_allow_strcmpi="unknown"
- #
- AC_MSG_CHECKING([if strcmpi can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strcmpi])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strcmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strcmpi="no"
- ])
- #
- if test "$tst_links_strcmpi" = "yes"; then
- AC_MSG_CHECKING([if strcmpi is prototyped])
- AC_EGREP_CPP([strcmpi],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strcmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strcmpi="no"
- ])
- fi
- #
- if test "$tst_proto_strcmpi" = "yes"; then
- AC_MSG_CHECKING([if strcmpi is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != strcmpi(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strcmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strcmpi="no"
- ])
- fi
- #
- if test "$tst_compi_strcmpi" = "yes"; then
- AC_MSG_CHECKING([if strcmpi usage allowed])
- if test "x$cares_disallow_strcmpi" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strcmpi="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strcmpi="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strcmpi might be used])
- if test "$tst_links_strcmpi" = "yes" &&
- test "$tst_proto_strcmpi" = "yes" &&
- test "$tst_compi_strcmpi" = "yes" &&
- test "$tst_allow_strcmpi" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRCMPI, 1,
- [Define to 1 if you have the strcmpi function.])
- ac_cv_func_strcmpi="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_strcmpi="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRDUP
-dnl -------------------------------------------------
-dnl Verify if strdup is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_strdup, then
-dnl HAVE_STRDUP will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRDUP], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_strdup="unknown"
- tst_proto_strdup="unknown"
- tst_compi_strdup="unknown"
- tst_allow_strdup="unknown"
- #
- AC_MSG_CHECKING([if strdup can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strdup])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strdup="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strdup="no"
- ])
- #
- if test "$tst_links_strdup" = "yes"; then
- AC_MSG_CHECKING([if strdup is prototyped])
- AC_EGREP_CPP([strdup],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strdup="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strdup="no"
- ])
- fi
- #
- if test "$tst_proto_strdup" = "yes"; then
- AC_MSG_CHECKING([if strdup is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != strdup(0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strdup="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strdup="no"
- ])
- fi
- #
- if test "$tst_compi_strdup" = "yes"; then
- AC_MSG_CHECKING([if strdup usage allowed])
- if test "x$cares_disallow_strdup" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strdup="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strdup="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strdup might be used])
- if test "$tst_links_strdup" = "yes" &&
- test "$tst_proto_strdup" = "yes" &&
- test "$tst_compi_strdup" = "yes" &&
- test "$tst_allow_strdup" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRDUP, 1,
- [Define to 1 if you have the strdup function.])
- ac_cv_func_strdup="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_strdup="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRICMP
-dnl -------------------------------------------------
-dnl Verify if stricmp is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_stricmp, then
-dnl HAVE_STRICMP will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRICMP], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_stricmp="unknown"
- tst_proto_stricmp="unknown"
- tst_compi_stricmp="unknown"
- tst_allow_stricmp="unknown"
- #
- AC_MSG_CHECKING([if stricmp can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([stricmp])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_stricmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_stricmp="no"
- ])
- #
- if test "$tst_links_stricmp" = "yes"; then
- AC_MSG_CHECKING([if stricmp is prototyped])
- AC_EGREP_CPP([stricmp],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_stricmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_stricmp="no"
- ])
- fi
- #
- if test "$tst_proto_stricmp" = "yes"; then
- AC_MSG_CHECKING([if stricmp is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != stricmp(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_stricmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_stricmp="no"
- ])
- fi
- #
- if test "$tst_compi_stricmp" = "yes"; then
- AC_MSG_CHECKING([if stricmp usage allowed])
- if test "x$cares_disallow_stricmp" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_stricmp="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_stricmp="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if stricmp might be used])
- if test "$tst_links_stricmp" = "yes" &&
- test "$tst_proto_stricmp" = "yes" &&
- test "$tst_compi_stricmp" = "yes" &&
- test "$tst_allow_stricmp" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRICMP, 1,
- [Define to 1 if you have the stricmp function.])
- ac_cv_func_stricmp="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_stricmp="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRNCASECMP
-dnl -------------------------------------------------
-dnl Verify if strncasecmp is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_strncasecmp, then
-dnl HAVE_STRNCASECMP will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRNCASECMP], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_strncasecmp="unknown"
- tst_proto_strncasecmp="unknown"
- tst_compi_strncasecmp="unknown"
- tst_allow_strncasecmp="unknown"
- #
- AC_MSG_CHECKING([if strncasecmp can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strncasecmp])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strncasecmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strncasecmp="no"
- ])
- #
- if test "$tst_links_strncasecmp" = "yes"; then
- AC_MSG_CHECKING([if strncasecmp is prototyped])
- AC_EGREP_CPP([strncasecmp],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strncasecmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strncasecmp="no"
- ])
- fi
- #
- if test "$tst_proto_strncasecmp" = "yes"; then
- AC_MSG_CHECKING([if strncasecmp is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != strncasecmp(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strncasecmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strncasecmp="no"
- ])
- fi
- #
- if test "$tst_compi_strncasecmp" = "yes"; then
- AC_MSG_CHECKING([if strncasecmp usage allowed])
- if test "x$cares_disallow_strncasecmp" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strncasecmp="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strncasecmp="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strncasecmp might be used])
- if test "$tst_links_strncasecmp" = "yes" &&
- test "$tst_proto_strncasecmp" = "yes" &&
- test "$tst_compi_strncasecmp" = "yes" &&
- test "$tst_allow_strncasecmp" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRNCASECMP, 1,
- [Define to 1 if you have the strncasecmp function.])
- ac_cv_func_strncasecmp="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_strncasecmp="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRNCMPI
-dnl -------------------------------------------------
-dnl Verify if strncmpi is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_strncmpi, then
-dnl HAVE_STRNCMPI will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRNCMPI], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_strncmpi="unknown"
- tst_proto_strncmpi="unknown"
- tst_compi_strncmpi="unknown"
- tst_allow_strncmpi="unknown"
- #
- AC_MSG_CHECKING([if strncmpi can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strncmpi])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strncmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strncmpi="no"
- ])
- #
- if test "$tst_links_strncmpi" = "yes"; then
- AC_MSG_CHECKING([if strncmpi is prototyped])
- AC_EGREP_CPP([strncmpi],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strncmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strncmpi="no"
- ])
- fi
- #
- if test "$tst_proto_strncmpi" = "yes"; then
- AC_MSG_CHECKING([if strncmpi is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != strncmpi(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strncmpi="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strncmpi="no"
- ])
- fi
- #
- if test "$tst_compi_strncmpi" = "yes"; then
- AC_MSG_CHECKING([if strncmpi usage allowed])
- if test "x$cares_disallow_strncmpi" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strncmpi="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strncmpi="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strncmpi might be used])
- if test "$tst_links_strncmpi" = "yes" &&
- test "$tst_proto_strncmpi" = "yes" &&
- test "$tst_compi_strncmpi" = "yes" &&
- test "$tst_allow_strncmpi" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRNCMPI, 1,
- [Define to 1 if you have the strncmpi function.])
- ac_cv_func_strncmpi="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_strncmpi="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_STRNICMP
-dnl -------------------------------------------------
-dnl Verify if strnicmp is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_strnicmp, then
-dnl HAVE_STRNICMP will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_STRNICMP], [
- AC_REQUIRE([CARES_INCLUDES_STRING])dnl
- #
- tst_links_strnicmp="unknown"
- tst_proto_strnicmp="unknown"
- tst_compi_strnicmp="unknown"
- tst_allow_strnicmp="unknown"
- #
- AC_MSG_CHECKING([if strnicmp can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strnicmp])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_strnicmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_strnicmp="no"
- ])
- #
- if test "$tst_links_strnicmp" = "yes"; then
- AC_MSG_CHECKING([if strnicmp is prototyped])
- AC_EGREP_CPP([strnicmp],[
- $cares_includes_string
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_strnicmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_strnicmp="no"
- ])
- fi
- #
- if test "$tst_proto_strnicmp" = "yes"; then
- AC_MSG_CHECKING([if strnicmp is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_string
- ]],[[
- if(0 != strnicmp(0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_strnicmp="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_strnicmp="no"
- ])
- fi
- #
- if test "$tst_compi_strnicmp" = "yes"; then
- AC_MSG_CHECKING([if strnicmp usage allowed])
- if test "x$cares_disallow_strnicmp" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_strnicmp="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_strnicmp="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if strnicmp might be used])
- if test "$tst_links_strnicmp" = "yes" &&
- test "$tst_proto_strnicmp" = "yes" &&
- test "$tst_compi_strnicmp" = "yes" &&
- test "$tst_allow_strnicmp" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_STRNICMP, 1,
- [Define to 1 if you have the strnicmp function.])
- ac_cv_func_strnicmp="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_strnicmp="no"
- fi
-])
-
-
-dnl CARES_CHECK_FUNC_WRITEV
-dnl -------------------------------------------------
-dnl Verify if writev is available, prototyped, and
-dnl can be compiled. If all of these are true, and
-dnl usage has not been previously disallowed with
-dnl shell variable cares_disallow_writev, then
-dnl HAVE_WRITEV will be defined.
-
-AC_DEFUN([CARES_CHECK_FUNC_WRITEV], [
- AC_REQUIRE([CARES_INCLUDES_SYS_UIO])dnl
- #
- tst_links_writev="unknown"
- tst_proto_writev="unknown"
- tst_compi_writev="unknown"
- tst_allow_writev="unknown"
- #
- AC_MSG_CHECKING([if writev can be linked])
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([writev])
- ],[
- AC_MSG_RESULT([yes])
- tst_links_writev="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_links_writev="no"
- ])
- #
- if test "$tst_links_writev" = "yes"; then
- AC_MSG_CHECKING([if writev is prototyped])
- AC_EGREP_CPP([writev],[
- $cares_includes_sys_uio
- ],[
- AC_MSG_RESULT([yes])
- tst_proto_writev="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_proto_writev="no"
- ])
- fi
- #
- if test "$tst_proto_writev" = "yes"; then
- AC_MSG_CHECKING([if writev is compilable])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- $cares_includes_sys_uio
- ]],[[
- if(0 != writev(0, 0, 0))
- return 1;
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tst_compi_writev="yes"
- ],[
- AC_MSG_RESULT([no])
- tst_compi_writev="no"
- ])
- fi
- #
- if test "$tst_compi_writev" = "yes"; then
- AC_MSG_CHECKING([if writev usage allowed])
- if test "x$cares_disallow_writev" != "xyes"; then
- AC_MSG_RESULT([yes])
- tst_allow_writev="yes"
- else
- AC_MSG_RESULT([no])
- tst_allow_writev="no"
- fi
- fi
- #
- AC_MSG_CHECKING([if writev might be used])
- if test "$tst_links_writev" = "yes" &&
- test "$tst_proto_writev" = "yes" &&
- test "$tst_compi_writev" = "yes" &&
- test "$tst_allow_writev" = "yes"; then
- AC_MSG_RESULT([yes])
- AC_DEFINE_UNQUOTED(HAVE_WRITEV, 1,
- [Define to 1 if you have the writev function.])
- ac_cv_func_writev="yes"
- else
- AC_MSG_RESULT([no])
- ac_cv_func_writev="no"
- fi
-])
diff --git a/ares/m4/cares-override.m4 b/ares/m4/cares-override.m4
deleted file mode 100644
index b29c960dc..000000000
--- a/ares/m4/cares-override.m4
+++ /dev/null
@@ -1,102 +0,0 @@
-#***************************************************************************
-# $Id$
-#***************************************************************************
-
-# File version for 'aclocal' use. Keep it a single number.
-# serial 3
-
-dnl CARES_OVERRIDE_AUTOCONF
-dnl -------------------------------------------------
-dnl Placing a call to this macro in configure.ac after
-dnl the one to AC_INIT will make macros in this file
-dnl visible to the rest of the compilation overriding
-dnl those from Autoconf.
-
-AC_DEFUN([CARES_OVERRIDE_AUTOCONF], [
-AC_BEFORE([$0],[AC_PROG_LIBTOOL])
-# using cares-override.m4
-])
-
-dnl Override some Libtool tests
-dnl -------------------------------------------------
-dnl This is done to prevent Libtool 1.5.X from doing
-dnl unnecesary C++, Fortran and Java tests and reduce
-dnl resulting configure script by nearly 300 Kb.
-
-m4_define([AC_LIBTOOL_LANG_CXX_CONFIG],[:])
-m4_define([AC_LIBTOOL_LANG_F77_CONFIG],[:])
-m4_define([AC_LIBTOOL_LANG_GCJ_CONFIG],[:])
-
-dnl Override Autoconf's AC_LANG_PROGRAM (C)
-dnl -------------------------------------------------
-dnl This is done to prevent compiler warning
-dnl 'function declaration isn't a prototype'
-dnl in function main. This requires at least
-dnl a c89 compiler and does not suport K&R.
-
-m4_define([AC_LANG_PROGRAM(C)],
-[$1
-int main (void)
-{
-$2
- ;
- return 0;
-}])
-
-dnl Override Autoconf's AC_LANG_CALL (C)
-dnl -------------------------------------------------
-dnl This is a backport of Autoconf's 2.60 with the
-dnl embedded comments that hit the resulting script
-dnl removed. This is done to reduce configure size
-dnl and use fixed macro across Autoconf versions.
-
-m4_define([AC_LANG_CALL(C)],
-[AC_LANG_PROGRAM([$1
-m4_if([$2], [main], ,
-[
-#ifdef __cplusplus
-extern "C"
-#endif
-char $2 ();])], [return $2 ();])])
-
-dnl Override Autoconf's AC_LANG_FUNC_LINK_TRY (C)
-dnl -------------------------------------------------
-dnl This is a backport of Autoconf's 2.60 with the
-dnl embedded comments that hit the resulting script
-dnl removed. This is done to reduce configure size
-dnl and use fixed macro across Autoconf versions.
-
-m4_define([AC_LANG_FUNC_LINK_TRY(C)],
-[AC_LANG_PROGRAM(
-[
-#define $1 innocuous_$1
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-#undef $1
-#ifdef __cplusplus
-extern "C"
-#endif
-char $1 ();
-#if defined __stub_$1 || defined __stub___$1
-choke me
-#endif
-], [return $1 ();])])
-
-dnl Override Autoconf's PATH_SEPARATOR check
-dnl -------------------------------------------------
-dnl This is done to ensure that the same check is
-dnl used across different Autoconf versions and to
-dnl allow us to use this macro early enough in the
-dnl configure script.
-
-m4_defun([_AS_PATH_SEPARATOR_PREPARE],
-[CARES_CHECK_PATH_SEPARATOR
-m4_define([$0],[])])
-
-m4_defun([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR],
-[CARES_CHECK_PATH_SEPARATOR
-m4_define([$0],[])])
-
diff --git a/ares/m4/cares-reentrant.m4 b/ares/m4/cares-reentrant.m4
deleted file mode 100644
index 052326b3c..000000000
--- a/ares/m4/cares-reentrant.m4
+++ /dev/null
@@ -1,611 +0,0 @@
-#***************************************************************************
-# $Id$
-#
-# Copyright (C) 2008 - 2009 by Daniel Stenberg et al
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-#***************************************************************************
-
-# File version for 'aclocal' use. Keep it a single number.
-# serial 6
-
-dnl Note 1
-dnl ------
-dnl None of the CARES_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
-dnl conditionally include header files. These macros are used early in the
-dnl configure process much before header file availability is known.
-
-
-dnl CARES_CHECK_NEED_REENTRANT_ERRNO
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes errno available as a preprocessor macro.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_ERRNO], [
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <errno.h>
- ]],[[
- if(0 != errno)
- return 1;
- ]])
- ],[
- tmp_errno="yes"
- ],[
- tmp_errno="no"
- ])
- if test "$tmp_errno" = "yes"; then
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#include <errno.h>
- ]],[[
-#ifdef errno
- int dummy=1;
-#else
- force compilation error
-#endif
- ]])
- ],[
- tmp_errno="errno_macro_defined"
- ],[
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
-#define _REENTRANT
-#include <errno.h>
- ]],[[
-#ifdef errno
- int dummy=1;
-#else
- force compilation error
-#endif
- ]])
- ],[
- tmp_errno="errno_macro_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_GMTIME_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function gmtime_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GMTIME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([gmtime_r])
- ],[
- tmp_gmtime_r="yes"
- ],[
- tmp_gmtime_r="no"
- ])
- if test "$tmp_gmtime_r" = "yes"; then
- AC_EGREP_CPP([gmtime_r],[
-#include <sys/types.h>
-#include <time.h>
- ],[
- tmp_gmtime_r="proto_declared"
- ],[
- AC_EGREP_CPP([gmtime_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <time.h>
- ],[
- tmp_gmtime_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_LOCALTIME_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function localtime_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_LOCALTIME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([localtime_r])
- ],[
- tmp_localtime_r="yes"
- ],[
- tmp_localtime_r="no"
- ])
- if test "$tmp_localtime_r" = "yes"; then
- AC_EGREP_CPP([localtime_r],[
-#include <sys/types.h>
-#include <time.h>
- ],[
- tmp_localtime_r="proto_declared"
- ],[
- AC_EGREP_CPP([localtime_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <time.h>
- ],[
- tmp_localtime_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_STRERROR_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function strerror_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_STRERROR_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strerror_r])
- ],[
- tmp_strerror_r="yes"
- ],[
- tmp_strerror_r="no"
- ])
- if test "$tmp_strerror_r" = "yes"; then
- AC_EGREP_CPP([strerror_r],[
-#include <sys/types.h>
-#include <string.h>
- ],[
- tmp_strerror_r="proto_declared"
- ],[
- AC_EGREP_CPP([strerror_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <string.h>
- ],[
- tmp_strerror_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_STRTOK_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function strtok_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_STRTOK_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([strtok_r])
- ],[
- tmp_strtok_r="yes"
- ],[
- tmp_strtok_r="no"
- ])
- if test "$tmp_strtok_r" = "yes"; then
- AC_EGREP_CPP([strtok_r],[
-#include <sys/types.h>
-#include <string.h>
- ],[
- tmp_strtok_r="proto_declared"
- ],[
- AC_EGREP_CPP([strtok_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <string.h>
- ],[
- tmp_strtok_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_INET_NTOA_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function inet_ntoa_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_INET_NTOA_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
- ],[
- tmp_inet_ntoa_r="yes"
- ],[
- tmp_inet_ntoa_r="no"
- ])
- if test "$tmp_inet_ntoa_r" = "yes"; then
- AC_EGREP_CPP([inet_ntoa_r],[
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
- ],[
- tmp_inet_ntoa_r="proto_declared"
- ],[
- AC_EGREP_CPP([inet_ntoa_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
- ],[
- tmp_inet_ntoa_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function gethostbyaddr_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
- ],[
- tmp_gethostbyaddr_r="yes"
- ],[
- tmp_gethostbyaddr_r="no"
- ])
- if test "$tmp_gethostbyaddr_r" = "yes"; then
- AC_EGREP_CPP([gethostbyaddr_r],[
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_gethostbyaddr_r="proto_declared"
- ],[
- AC_EGREP_CPP([gethostbyaddr_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_gethostbyaddr_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function gethostbyname_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
- ],[
- tmp_gethostbyname_r="yes"
- ],[
- tmp_gethostbyname_r="no"
- ])
- if test "$tmp_gethostbyname_r" = "yes"; then
- AC_EGREP_CPP([gethostbyname_r],[
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_gethostbyname_r="proto_declared"
- ],[
- AC_EGREP_CPP([gethostbyname_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_gethostbyname_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function getprotobyname_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
- ],[
- tmp_getprotobyname_r="yes"
- ],[
- tmp_getprotobyname_r="no"
- ])
- if test "$tmp_getprotobyname_r" = "yes"; then
- AC_EGREP_CPP([getprotobyname_r],[
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_getprotobyname_r="proto_declared"
- ],[
- AC_EGREP_CPP([getprotobyname_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_getprotobyname_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes function getservbyport_r compiler visible.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
- AC_LINK_IFELSE([
- AC_LANG_FUNC_LINK_TRY([getservbyport_r])
- ],[
- tmp_getservbyport_r="yes"
- ],[
- tmp_getservbyport_r="no"
- ])
- if test "$tmp_getservbyport_r" = "yes"; then
- AC_EGREP_CPP([getservbyport_r],[
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_getservbyport_r="proto_declared"
- ],[
- AC_EGREP_CPP([getservbyport_r],[
-#define _REENTRANT
-#include <sys/types.h>
-#include <netdb.h>
- ],[
- tmp_getservbyport_r="proto_needs_reentrant"
- tmp_need_reentrant="yes"
- ])
- ])
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl makes several _r functions compiler visible.
-dnl Internal macro for CARES_CONFIGURE_REENTRANT.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_GMTIME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_LOCALTIME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_STRERROR_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_STRTOK_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_INET_NTOA_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
- fi
-])
-
-
-dnl CARES_CHECK_NEED_REENTRANT_SYSTEM
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _REENTRANT definition
-dnl must be unconditionally done for this platform.
-dnl Internal macro for CARES_CONFIGURE_REENTRANT.
-
-AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
- case $host_os in
- solaris*)
- tmp_need_reentrant="yes"
- ;;
- *)
- tmp_need_reentrant="no"
- ;;
- esac
-])
-
-
-dnl CARES_CHECK_NEED_THREAD_SAFE_SYSTEM
-dnl -------------------------------------------------
-dnl Checks if the preprocessor _THREAD_SAFE definition
-dnl must be unconditionally done for this platform.
-dnl Internal macro for CARES_CONFIGURE_THREAD_SAFE.
-
-AC_DEFUN([CARES_CHECK_NEED_THREAD_SAFE_SYSTEM], [
- case $host_os in
- aix[[123]].* | aix4.[[012]].*)
- dnl aix 4.2 and older
- tmp_need_thread_safe="no"
- ;;
- aix*)
- dnl AIX 4.3 and newer
- tmp_need_thread_safe="yes"
- ;;
- *)
- tmp_need_thread_safe="no"
- ;;
- esac
-])
-
-
-dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
-dnl -------------------------------------------------
-dnl This macro ensures that configuration tests done
-dnl after this will execute with preprocessor symbol
-dnl _REENTRANT defined. This macro also ensures that
-dnl the generated config file defines NEED_REENTRANT
-dnl and that in turn setup.h will define _REENTRANT.
-dnl Internal macro for CARES_CONFIGURE_REENTRANT.
-
-AC_DEFUN([CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
-AC_DEFINE(NEED_REENTRANT, 1,
- [Define to 1 if _REENTRANT preprocessor symbol must be defined.])
-cat >>confdefs.h <<_EOF
-#ifndef _REENTRANT
-# define _REENTRANT
-#endif
-_EOF
-])
-
-
-dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
-dnl -------------------------------------------------
-dnl This macro ensures that configuration tests done
-dnl after this will execute with preprocessor symbol
-dnl _THREAD_SAFE defined. This macro also ensures that
-dnl the generated config file defines NEED_THREAD_SAFE
-dnl and that in turn setup.h will define _THREAD_SAFE.
-dnl Internal macro for CARES_CONFIGURE_THREAD_SAFE.
-
-AC_DEFUN([CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE], [
-AC_DEFINE(NEED_THREAD_SAFE, 1,
- [Define to 1 if _THREAD_SAFE preprocessor symbol must be defined.])
-cat >>confdefs.h <<_EOF
-#ifndef _THREAD_SAFE
-# define _THREAD_SAFE
-#endif
-_EOF
-])
-
-
-dnl CARES_CONFIGURE_REENTRANT
-dnl -------------------------------------------------
-dnl This first checks if the preprocessor _REENTRANT
-dnl symbol is already defined. If it isn't currently
-dnl defined a set of checks are performed to verify
-dnl if its definition is required to make visible to
-dnl the compiler a set of *_r functions. Finally, if
-dnl _REENTRANT is already defined or needed it takes
-dnl care of making adjustments necessary to ensure
-dnl that it is defined equally for further configure
-dnl tests and generated config file.
-
-AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
- AC_PREREQ([2.50])dnl
- #
- AC_MSG_CHECKING([if _REENTRANT is already defined])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
-#ifdef _REENTRANT
- int dummy=1;
-#else
- force compilation error
-#endif
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tmp_reentrant_initially_defined="yes"
- ],[
- AC_MSG_RESULT([no])
- tmp_reentrant_initially_defined="no"
- ])
- #
- if test "$tmp_reentrant_initially_defined" = "no"; then
- AC_MSG_CHECKING([if _REENTRANT is actually needed])
- CARES_CHECK_NEED_REENTRANT_SYSTEM
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_ERRNO
- fi
- if test "$tmp_need_reentrant" = "no"; then
- CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
- fi
- if test "$tmp_need_reentrant" = "yes"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- fi
- #
- AC_MSG_CHECKING([if _REENTRANT is onwards defined])
- if test "$tmp_reentrant_initially_defined" = "yes" ||
- test "$tmp_need_reentrant" = "yes"; then
- CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- #
-])
-
-
-dnl CARES_CONFIGURE_THREAD_SAFE
-dnl -------------------------------------------------
-dnl This first checks if the preprocessor _THREAD_SAFE
-dnl symbol is already defined. If it isn't currently
-dnl defined a set of checks are performed to verify
-dnl if its definition is required. Finally, if
-dnl _THREAD_SAFE is already defined or needed it takes
-dnl care of making adjustments necessary to ensure
-dnl that it is defined equally for further configure
-dnl tests and generated config file.
-
-AC_DEFUN([CARES_CONFIGURE_THREAD_SAFE], [
- AC_PREREQ([2.50])dnl
- #
- AC_MSG_CHECKING([if _THREAD_SAFE is already defined])
- AC_COMPILE_IFELSE([
- AC_LANG_PROGRAM([[
- ]],[[
-#ifdef _THREAD_SAFE
- int dummy=1;
-#else
- force compilation error
-#endif
- ]])
- ],[
- AC_MSG_RESULT([yes])
- tmp_thread_safe_initially_defined="yes"
- ],[
- AC_MSG_RESULT([no])
- tmp_thread_safe_initially_defined="no"
- ])
- #
- if test "$tmp_thread_safe_initially_defined" = "no"; then
- AC_MSG_CHECKING([if _THREAD_SAFE is actually needed])
- CARES_CHECK_NEED_THREAD_SAFE_SYSTEM
- if test "$tmp_need_thread_safe" = "yes"; then
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- fi
- #
- AC_MSG_CHECKING([if _THREAD_SAFE is onwards defined])
- if test "$tmp_thread_safe_initially_defined" = "yes" ||
- test "$tmp_need_thread_safe" = "yes"; then
- CARES_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
- #
-])
diff --git a/ares/m4/cares-system.m4 b/ares/m4/cares-system.m4
deleted file mode 100644
index f0adc8975..000000000
--- a/ares/m4/cares-system.m4
+++ /dev/null
@@ -1,83 +0,0 @@
-#***************************************************************************
-# $Id$
-#
-# Copyright (C) 2008 - 2009 by Daniel Stenberg et al
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted, provided
-# that the above copyright notice appear in all copies and that both that
-# copyright notice and this permission notice appear in supporting
-# documentation, and that the name of M.I.T. not be used in advertising or
-# publicity pertaining to distribution of the software without specific,
-# written prior permission. M.I.T. makes no representations about the
-# suitability of this software for any purpose. It is provided "as is"
-# without express or implied warranty.
-#
-#***************************************************************************
-
-# File version for 'aclocal' use. Keep it a single number.
-# serial 3
-
-
-dnl CARES_CHECK_PATH_SEPARATOR
-dnl -------------------------------------------------
-dnl Check and compute the path separator for us. This
-dnl path separator is the symbol used to diferentiate
-dnl or separate paths inside the PATH environment var.
-
-AC_DEFUN([CARES_CHECK_PATH_SEPARATOR], [
- if test -z "$cares_cv_PATH_SEPARATOR"; then
- if test -z "$PATH"; then
- AC_MSG_ERROR([PATH not set. Cannot continue without PATH being set.])
- fi
- dnl Directory count in PATH when using a colon separator.
- tst_dirs_col=0
- tst_save_IFS=$IFS; IFS=':'
- for tst_dir in $PATH; do
- IFS=$tst_save_IFS
- test -d "$tst_dir" && tst_dirs_col=`expr $tst_dirs_col + 1`
- done
- IFS=$tst_save_IFS
- dnl Directory count in PATH when using a semicolon separator.
- tst_dirs_sem=0
- tst_save_IFS=$IFS; IFS=';'
- for tst_dir in $PATH; do
- IFS=$tst_save_IFS
- test -d "$tst_dir" && tst_dirs_sem=`expr $tst_dirs_sem + 1`
- done
- IFS=$tst_save_IFS
- if test $tst_dirs_sem -eq $tst_dirs_col; then
- dnl When both counting methods give the same result we do not want to
- dnl chose one over the other, and consider auto-detection not possible.
- if test -z "$PATH_SEPARATOR"; then
- dnl Stop dead until user provides PATH_SEPARATOR definition.
- AC_MSG_ERROR([PATH_SEPARATOR not set. Cannot continue without it.])
- fi
- else
- dnl Separator with the greater directory count is the auto-detected one.
- if test $tst_dirs_sem -gt $tst_dirs_col; then
- tst_auto_separator=';'
- else
- tst_auto_separator=':'
- fi
- if test -z "$PATH_SEPARATOR"; then
- dnl Simply use the auto-detected one when not already set.
- PATH_SEPARATOR="$tst_auto_separator"
- fi
- fi
- cares_cv_PATH_SEPARATOR="$PATH_SEPARATOR"
- fi
- AC_SUBST([PATH_SEPARATOR])
- AC_SUBST([PATH])
-])
-
-
-dnl CARES_CHECK_PATH_SEPARATOR_REQUIRED
-dnl -------------------------------------------------
-dnl Use this to ensure that the path separator check
-dnl macro is only expanded and included once.
-
-AC_DEFUN([CARES_CHECK_PATH_SEPARATOR_REQUIRED], [
- AC_REQUIRE([CARES_CHECK_PATH_SEPARATOR])dnl
-])
-
diff --git a/ares/maketgz b/ares/maketgz
deleted file mode 100755
index 147f0e59e..000000000
--- a/ares/maketgz
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env perl
-
-$version = $ARGV[0];
-
-if($version eq "") {
- print "Enter version number!\n";
- exit;
-}
-
-if(!-f "ares.h") {
- print "run this script in the ares source root dir\n";
- exit;
-}
-
-my ($major, $minor, $patch)=split(/\./, $version);
-
-$major += 0;
-$minor += 0;
-$patch += 0;
-
-open(VER, "<ares_version.h") ||
- die "can't open ares_version.h";
-open(NEWV, ">ares_version.h.dist");
-while(<VER>) {
- $_ =~ s/^\#define ARES_VERSION_MAJOR .*/\#define ARES_VERSION_MAJOR $major/;
- $_ =~ s/^\#define ARES_VERSION_MINOR .*/\#define ARES_VERSION_MINOR $minor/;
- $_ =~ s/^\#define ARES_VERSION_PATCH .*/\#define ARES_VERSION_PATCH $patch/;
- $_ =~ s/^\#define ARES_VERSION_STR .*/\#define ARES_VERSION_STR \"$version\"/;
-
- print NEWV $_;
-}
-close(VER);
-close(NEWV);
-print "ares_version.h.dist created\n";
-
-if(!-f "configure") {
- print "running buildconf\n";
- `./buildconf`;
-}
-print "adding $version in the configure.ac file\n";
-`sed -e 's/AC_INIT.*/AC_INIT([c-ares], [$version],/' < configure.ac > configure.ac.dist`;
-
-# now make a new configure script with this
-print "makes a new configure script\n";
-`autoconf configure.ac.dist >configure`;
-
-# now run this new configure to get a fine makefile
-print "running configure\n";
-`./configure`;
-
-# generate HTML versions of man pages
-# Deactivated for now. It seems that man pages need some adjustments
-# relative to paragraph and/or line breaks for proper html formatting.
-# EXTRA_DIST will need $(HTMLPAGES) when this is fully activated.
-# print "running make html\n";
-# `make -s html`;
-
-# generate PDF versions of man pages
-print "running make pdf\n";
-`make -s pdf`;
-
-# now make the actual tarball
-print "running make dist\n";
-`make dist VERSION=$version`;
-
-# remove temporay sourced man pages
-`make -s clean-sourced-manpages`;
-
-print "removing temporary configure.ac file\n";
-`rm configure.ac.dist`;
-print "removing temporary ares_version.h file\n";
-`rm ares_version.h.dist`;
-
-print "NOTE: now cvs tag this release!\n";
diff --git a/ares/mkinstalldirs b/ares/mkinstalldirs
deleted file mode 100755
index d0fd194fd..000000000
--- a/ares/mkinstalldirs
+++ /dev/null
@@ -1,40 +0,0 @@
-#! /bin/sh
-# mkinstalldirs --- make directory hierarchy
-# Author: Noah Friedman <friedman@prep.ai.mit.edu>
-# Created: 1993-05-16
-# Public domain
-
-# $Id$
-
-errstatus=0
-
-for file
-do
- set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
- shift
-
- pathcomp=
- for d
- do
- pathcomp="$pathcomp$d"
- case "$pathcomp" in
- -* ) pathcomp=./$pathcomp ;;
- esac
-
- if test ! -d "$pathcomp"; then
- echo "mkdir $pathcomp" 1>&2
-
- mkdir "$pathcomp" || lasterr=$?
-
- if test ! -d "$pathcomp"; then
- errstatus=$lasterr
- fi
- fi
-
- pathcomp="$pathcomp/"
- done
-done
-
-exit $errstatus
-
-# mkinstalldirs ends here
diff --git a/ares/nameser.h b/ares/nameser.h
deleted file mode 100644
index 3d8009647..000000000
--- a/ares/nameser.h
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $Id$ */
-
-#ifndef ARES_NAMESER_H
-#define ARES_NAMESER_H
-
-/* header file provided by liren@vivisimo.com */
-
-#ifndef HAVE_ARPA_NAMESER_H
-
-#define NS_PACKETSZ 512 /* maximum packet size */
-#define NS_MAXDNAME 256 /* maximum domain name */
-#define NS_MAXCDNAME 255 /* maximum compressed domain name */
-#define NS_MAXLABEL 63
-#define NS_HFIXEDSZ 12 /* #/bytes of fixed data in header */
-#define NS_QFIXEDSZ 4 /* #/bytes of fixed data in query */
-#define NS_RRFIXEDSZ 10 /* #/bytes of fixed data in r record */
-#define NS_INT16SZ 2
-#define NS_INADDRSZ 4
-#define NS_IN6ADDRSZ 16
-#define NS_CMPRSFLGS 0xc0 /* Flag bits indicating name compression. */
-#define NS_DEFAULTPORT 53 /* For both TCP and UDP. */
-
-typedef enum __ns_class {
- ns_c_invalid = 0, /* Cookie. */
- ns_c_in = 1, /* Internet. */
- ns_c_2 = 2, /* unallocated/unsupported. */
- ns_c_chaos = 3, /* MIT Chaos-net. */
- ns_c_hs = 4, /* MIT Hesiod. */
- /* Query class values which do not appear in resource records */
- ns_c_none = 254, /* for prereq. sections in update requests */
- ns_c_any = 255, /* Wildcard match. */
- ns_c_max = 65536
-} ns_class;
-
-typedef enum __ns_type {
- ns_t_invalid = 0, /* Cookie. */
- ns_t_a = 1, /* Host address. */
- ns_t_ns = 2, /* Authoritative server. */
- ns_t_md = 3, /* Mail destination. */
- ns_t_mf = 4, /* Mail forwarder. */
- ns_t_cname = 5, /* Canonical name. */
- ns_t_soa = 6, /* Start of authority zone. */
- ns_t_mb = 7, /* Mailbox domain name. */
- ns_t_mg = 8, /* Mail group member. */
- ns_t_mr = 9, /* Mail rename name. */
- ns_t_null = 10, /* Null resource record. */
- ns_t_wks = 11, /* Well known service. */
- ns_t_ptr = 12, /* Domain name pointer. */
- ns_t_hinfo = 13, /* Host information. */
- ns_t_minfo = 14, /* Mailbox information. */
- ns_t_mx = 15, /* Mail routing information. */
- ns_t_txt = 16, /* Text strings. */
- ns_t_rp = 17, /* Responsible person. */
- ns_t_afsdb = 18, /* AFS cell database. */
- ns_t_x25 = 19, /* X_25 calling address. */
- ns_t_isdn = 20, /* ISDN calling address. */
- ns_t_rt = 21, /* Router. */
- ns_t_nsap = 22, /* NSAP address. */
- ns_t_nsap_ptr = 23, /* Reverse NSAP lookup (deprecated). */
- ns_t_sig = 24, /* Security signature. */
- ns_t_key = 25, /* Security key. */
- ns_t_px = 26, /* X.400 mail mapping. */
- ns_t_gpos = 27, /* Geographical position (withdrawn). */
- ns_t_aaaa = 28, /* Ip6 Address. */
- ns_t_loc = 29, /* Location Information. */
- ns_t_nxt = 30, /* Next domain (security). */
- ns_t_eid = 31, /* Endpoint identifier. */
- ns_t_nimloc = 32, /* Nimrod Locator. */
- ns_t_srv = 33, /* Server Selection. */
- ns_t_atma = 34, /* ATM Address */
- ns_t_naptr = 35, /* Naming Authority PoinTeR */
- ns_t_kx = 36, /* Key Exchange */
- ns_t_cert = 37, /* Certification record */
- ns_t_a6 = 38, /* IPv6 address (deprecates AAAA) */
- ns_t_dname = 39, /* Non-terminal DNAME (for IPv6) */
- ns_t_sink = 40, /* Kitchen sink (experimentatl) */
- ns_t_opt = 41, /* EDNS0 option (meta-RR) */
- ns_t_apl = 42, /* Address prefix list (RFC3123) */
- ns_t_tkey = 249, /* Transaction key */
- ns_t_tsig = 250, /* Transaction signature. */
- ns_t_ixfr = 251, /* Incremental zone transfer. */
- ns_t_axfr = 252, /* Transfer zone of authority. */
- ns_t_mailb = 253, /* Transfer mailbox records. */
- ns_t_maila = 254, /* Transfer mail agent records. */
- ns_t_any = 255, /* Wildcard match. */
- ns_t_zxfr = 256, /* BIND-specific, nonstandard. */
- ns_t_max = 65536
-} ns_type;
-
-typedef enum __ns_opcode {
- ns_o_query = 0, /* Standard query. */
- ns_o_iquery = 1, /* Inverse query (deprecated/unsupported). */
- ns_o_status = 2, /* Name server status query (unsupported). */
- /* Opcode 3 is undefined/reserved. */
- ns_o_notify = 4, /* Zone change notification. */
- ns_o_update = 5, /* Zone update message. */
- ns_o_max = 6
-} ns_opcode;
-
-typedef enum __ns_rcode {
- ns_r_noerror = 0, /* No error occurred. */
- ns_r_formerr = 1, /* Format error. */
- ns_r_servfail = 2, /* Server failure. */
- ns_r_nxdomain = 3, /* Name error. */
- ns_r_notimpl = 4, /* Unimplemented. */
- ns_r_refused = 5, /* Operation refused. */
- /* these are for BIND_UPDATE */
- ns_r_yxdomain = 6, /* Name exists */
- ns_r_yxrrset = 7, /* RRset exists */
- ns_r_nxrrset = 8, /* RRset does not exist */
- ns_r_notauth = 9, /* Not authoritative for zone */
- ns_r_notzone = 10, /* Zone of record different from zone section */
- ns_r_max = 11,
- /* The following are TSIG extended errors */
- ns_r_badsig = 16,
- ns_r_badkey = 17,
- ns_r_badtime = 18
-} ns_rcode;
-
-#endif /* HAVE_ARPA_NAMESER_H */
-
-#ifndef HAVE_ARPA_NAMESER_COMPAT_H
-
-#define PACKETSZ NS_PACKETSZ
-#define MAXDNAME NS_MAXDNAME
-#define MAXCDNAME NS_MAXCDNAME
-#define MAXLABEL NS_MAXLABEL
-#define HFIXEDSZ NS_HFIXEDSZ
-#define QFIXEDSZ NS_QFIXEDSZ
-#define RRFIXEDSZ NS_RRFIXEDSZ
-#define INDIR_MASK NS_CMPRSFLGS
-#define NAMESERVER_PORT NS_DEFAULTPORT
-
-#define QUERY ns_o_query
-
-#define SERVFAIL ns_r_servfail
-#define NOTIMP ns_r_notimpl
-#define REFUSED ns_r_refused
-#undef NOERROR /* it seems this is already defined in winerror.h */
-#define NOERROR ns_r_noerror
-#define FORMERR ns_r_formerr
-#define NXDOMAIN ns_r_nxdomain
-
-#define C_IN ns_c_in
-#define C_CHAOS ns_c_chaos
-#define C_HS ns_c_hs
-#define C_NONE ns_c_none
-#define C_ANY ns_c_any
-
-#define T_A ns_t_a
-#define T_NS ns_t_ns
-#define T_MD ns_t_md
-#define T_MF ns_t_mf
-#define T_CNAME ns_t_cname
-#define T_SOA ns_t_soa
-#define T_MB ns_t_mb
-#define T_MG ns_t_mg
-#define T_MR ns_t_mr
-#define T_NULL ns_t_null
-#define T_WKS ns_t_wks
-#define T_PTR ns_t_ptr
-#define T_HINFO ns_t_hinfo
-#define T_MINFO ns_t_minfo
-#define T_MX ns_t_mx
-#define T_TXT ns_t_txt
-#define T_RP ns_t_rp
-#define T_AFSDB ns_t_afsdb
-#define T_X25 ns_t_x25
-#define T_ISDN ns_t_isdn
-#define T_RT ns_t_rt
-#define T_NSAP ns_t_nsap
-#define T_NSAP_PTR ns_t_nsap_ptr
-#define T_SIG ns_t_sig
-#define T_KEY ns_t_key
-#define T_PX ns_t_px
-#define T_GPOS ns_t_gpos
-#define T_AAAA ns_t_aaaa
-#define T_LOC ns_t_loc
-#define T_NXT ns_t_nxt
-#define T_EID ns_t_eid
-#define T_NIMLOC ns_t_nimloc
-#define T_SRV ns_t_srv
-#define T_ATMA ns_t_atma
-#define T_NAPTR ns_t_naptr
-#define T_TSIG ns_t_tsig
-#define T_IXFR ns_t_ixfr
-#define T_AXFR ns_t_axfr
-#define T_MAILB ns_t_mailb
-#define T_MAILA ns_t_maila
-#define T_ANY ns_t_any
-
-#endif /* HAVE_ARPA_NAMESER_COMPAT_H */
-
-#endif /* ARES_NAMESER_H */
diff --git a/ares/setup_once.h b/ares/setup_once.h
deleted file mode 100644
index 95722b2b7..000000000
--- a/ares/setup_once.h
+++ /dev/null
@@ -1,444 +0,0 @@
-#ifndef __SETUP_ONCE_H
-#define __SETUP_ONCE_H
-
-/* $Id$ */
-
-/* Copyright (C) 2004 - 2009 by Daniel Stenberg et al
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-
-/********************************************************************
- * NOTICE *
- * ======== *
- * *
- * Content of header files lib/setup_once.h and ares/setup_once.h *
- * must be kept in sync. Modify the other one if you change this. *
- * *
- ********************************************************************/
-
-
-/*
- * Inclusion of common header files.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <errno.h>
-
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-
-#ifdef NEED_MALLOC_H
-#include <malloc.h>
-#endif
-
-#ifdef NEED_MEMORY_H
-#include <memory.h>
-#endif
-
-#ifdef HAVE_SYS_STAT_H
-#include <sys/stat.h>
-#endif
-
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#ifdef TIME_WITH_SYS_TIME
-#include <time.h>
-#endif
-#else
-#ifdef HAVE_TIME_H
-#include <time.h>
-#endif
-#endif
-
-#ifdef WIN32
-#include <io.h>
-#include <fcntl.h>
-#endif
-
-#ifdef HAVE_STDBOOL_H
-#include <stdbool.h>
-#endif
-
-
-/*
- * Definition of timeval struct for platforms that don't have it.
- */
-
-#ifndef HAVE_STRUCT_TIMEVAL
-struct timeval {
- long tv_sec;
- long tv_usec;
-};
-#endif
-
-
-/*
- * If we have the MSG_NOSIGNAL define, make sure we use
- * it as the fourth argument of function send()
- */
-
-#ifdef HAVE_MSG_NOSIGNAL
-#define SEND_4TH_ARG MSG_NOSIGNAL
-#else
-#define SEND_4TH_ARG 0
-#endif
-
-
-#if defined(__minix)
-/* Minix doesn't support recv on TCP sockets */
-#define sread(x,y,z) (ssize_t)read((RECV_TYPE_ARG1)(x), \
- (RECV_TYPE_ARG2)(y), \
- (RECV_TYPE_ARG3)(z))
-
-#elif defined(HAVE_RECV)
-/*
- * The definitions for the return type and arguments types
- * of functions recv() and send() belong and come from the
- * configuration file. Do not define them in any other place.
- *
- * HAVE_RECV is defined if you have a function named recv()
- * which is used to read incoming data from sockets. If your
- * function has another name then don't define HAVE_RECV.
- *
- * If HAVE_RECV is defined then RECV_TYPE_ARG1, RECV_TYPE_ARG2,
- * RECV_TYPE_ARG3, RECV_TYPE_ARG4 and RECV_TYPE_RETV must also
- * be defined.
- *
- * HAVE_SEND is defined if you have a function named send()
- * which is used to write outgoing data on a connected socket.
- * If yours has another name then don't define HAVE_SEND.
- *
- * If HAVE_SEND is defined then SEND_TYPE_ARG1, SEND_QUAL_ARG2,
- * SEND_TYPE_ARG2, SEND_TYPE_ARG3, SEND_TYPE_ARG4 and
- * SEND_TYPE_RETV must also be defined.
- */
-
-#if !defined(RECV_TYPE_ARG1) || \
- !defined(RECV_TYPE_ARG2) || \
- !defined(RECV_TYPE_ARG3) || \
- !defined(RECV_TYPE_ARG4) || \
- !defined(RECV_TYPE_RETV)
- /* */
- Error Missing_definition_of_return_and_arguments_types_of_recv
- /* */
-#else
-#define sread(x,y,z) (ssize_t)recv((RECV_TYPE_ARG1)(x), \
- (RECV_TYPE_ARG2)(y), \
- (RECV_TYPE_ARG3)(z), \
- (RECV_TYPE_ARG4)(0))
-#endif
-#else /* HAVE_RECV */
-#ifndef sread
- /* */
- Error Missing_definition_of_macro_sread
- /* */
-#endif
-#endif /* HAVE_RECV */
-
-
-#if defined(__minix)
-/* Minix doesn't support send on TCP sockets */
-#define swrite(x,y,z) (ssize_t)write((SEND_TYPE_ARG1)(x), \
- (SEND_TYPE_ARG2)(y), \
- (SEND_TYPE_ARG3)(z))
-
-#elif defined(HAVE_SEND)
-#if !defined(SEND_TYPE_ARG1) || \
- !defined(SEND_QUAL_ARG2) || \
- !defined(SEND_TYPE_ARG2) || \
- !defined(SEND_TYPE_ARG3) || \
- !defined(SEND_TYPE_ARG4) || \
- !defined(SEND_TYPE_RETV)
- /* */
- Error Missing_definition_of_return_and_arguments_types_of_send
- /* */
-#else
-#define swrite(x,y,z) (ssize_t)send((SEND_TYPE_ARG1)(x), \
- (SEND_TYPE_ARG2)(y), \
- (SEND_TYPE_ARG3)(z), \
- (SEND_TYPE_ARG4)(SEND_4TH_ARG))
-#endif
-#else /* HAVE_SEND */
-#ifndef swrite
- /* */
- Error Missing_definition_of_macro_swrite
- /* */
-#endif
-#endif /* HAVE_SEND */
-
-
-#if 0
-#if defined(HAVE_RECVFROM)
-/*
- * Currently recvfrom is only used on udp sockets.
- */
-#if !defined(RECVFROM_TYPE_ARG1) || \
- !defined(RECVFROM_TYPE_ARG2) || \
- !defined(RECVFROM_TYPE_ARG3) || \
- !defined(RECVFROM_TYPE_ARG4) || \
- !defined(RECVFROM_TYPE_ARG5) || \
- !defined(RECVFROM_TYPE_ARG6) || \
- !defined(RECVFROM_TYPE_RETV)
- /* */
- Error Missing_definition_of_return_and_arguments_types_of_recvfrom
- /* */
-#else
-#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \
- (RECVFROM_TYPE_ARG2 *)(b), \
- (RECVFROM_TYPE_ARG3) (bl), \
- (RECVFROM_TYPE_ARG4) (0), \
- (RECVFROM_TYPE_ARG5 *)(f), \
- (RECVFROM_TYPE_ARG6 *)(fl))
-#endif
-#else /* HAVE_RECVFROM */
-#ifndef sreadfrom
- /* */
- Error Missing_definition_of_macro_sreadfrom
- /* */
-#endif
-#endif /* HAVE_RECVFROM */
-
-
-#ifdef RECVFROM_TYPE_ARG6_IS_VOID
-# define RECVFROM_ARG6_T int
-#else
-# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
-#endif
-#endif /* if 0 */
-
-
-/*
- * Function-like macro definition used to close a socket.
- */
-
-#if defined(HAVE_CLOSESOCKET)
-# define sclose(x) closesocket((x))
-#elif defined(HAVE_CLOSESOCKET_CAMEL)
-# define sclose(x) CloseSocket((x))
-#else
-# define sclose(x) close((x))
-#endif
-
-
-/*
- * Uppercase macro versions of ANSI/ISO is*() functions/macros which
- * avoid negative number inputs with argument byte codes > 127.
- */
-
-#define ISSPACE(x) (isspace((int) ((unsigned char)x)))
-#define ISDIGIT(x) (isdigit((int) ((unsigned char)x)))
-#define ISALNUM(x) (isalnum((int) ((unsigned char)x)))
-#define ISXDIGIT(x) (isxdigit((int) ((unsigned char)x)))
-#define ISGRAPH(x) (isgraph((int) ((unsigned char)x)))
-#define ISALPHA(x) (isalpha((int) ((unsigned char)x)))
-#define ISPRINT(x) (isprint((int) ((unsigned char)x)))
-#define ISUPPER(x) (isupper((int) ((unsigned char)x)))
-#define ISLOWER(x) (islower((int) ((unsigned char)x)))
-
-#define ISBLANK(x) (int)((((unsigned char)x) == ' ') || \
- (((unsigned char)x) == '\t'))
-
-
-/*
- * Typedef to 'unsigned char' if bool is not an available 'typedefed' type.
- */
-
-#ifndef HAVE_BOOL_T
-typedef unsigned char bool;
-#define HAVE_BOOL_T
-#endif
-
-
-/*
- * Default definition of uppercase TRUE and FALSE.
- */
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-
-/*
- * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type.
- */
-
-#ifndef HAVE_SIG_ATOMIC_T
-typedef int sig_atomic_t;
-#define HAVE_SIG_ATOMIC_T
-#endif
-
-
-/*
- * Convenience SIG_ATOMIC_T definition
- */
-
-#ifdef HAVE_SIG_ATOMIC_T_VOLATILE
-#define SIG_ATOMIC_T static sig_atomic_t
-#else
-#define SIG_ATOMIC_T static volatile sig_atomic_t
-#endif
-
-
-/*
- * Default return type for signal handlers.
- */
-
-#ifndef RETSIGTYPE
-#define RETSIGTYPE void
-#endif
-
-
-/*
- * Macro used to include code only in debug builds.
- */
-
-#ifdef DEBUGBUILD
-#define DEBUGF(x) x
-#else
-#define DEBUGF(x) do { } while (0)
-#endif
-
-
-/*
- * Macro used to include assertion code only in debug builds.
- */
-
-#if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H)
-#define DEBUGASSERT(x) assert(x)
-#else
-#define DEBUGASSERT(x) do { } while (0)
-#endif
-
-
-/*
- * Macro SOCKERRNO / SET_SOCKERRNO() returns / sets the *socket-related* errno
- * (or equivalent) on this platform to hide platform details to code using it.
- */
-
-#ifdef USE_WINSOCK
-#define SOCKERRNO ((int)WSAGetLastError())
-#define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
-#else
-#define SOCKERRNO (errno)
-#define SET_SOCKERRNO(x) (errno = (x))
-#endif
-
-
-/*
- * Macro ERRNO / SET_ERRNO() returns / sets the NOT *socket-related* errno
- * (or equivalent) on this platform to hide platform details to code using it.
- */
-
-#ifdef WIN32
-#define ERRNO ((int)GetLastError())
-#define SET_ERRNO(x) (SetLastError((DWORD)(x)))
-#else
-#define ERRNO (errno)
-#define SET_ERRNO(x) (errno = (x))
-#endif
-
-
-/*
- * Portable error number symbolic names defined to Winsock error codes.
- */
-
-#ifdef USE_WINSOCK
-#undef EBADF /* override definition in errno.h */
-#define EBADF WSAEBADF
-#undef EINTR /* override definition in errno.h */
-#define EINTR WSAEINTR
-#undef EINVAL /* override definition in errno.h */
-#define EINVAL WSAEINVAL
-#define EWOULDBLOCK WSAEWOULDBLOCK
-#define EINPROGRESS WSAEINPROGRESS
-#define EALREADY WSAEALREADY
-#define ENOTSOCK WSAENOTSOCK
-#define EDESTADDRREQ WSAEDESTADDRREQ
-#define EMSGSIZE WSAEMSGSIZE
-#define EPROTOTYPE WSAEPROTOTYPE
-#define ENOPROTOOPT WSAENOPROTOOPT
-#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
-#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
-#define EOPNOTSUPP WSAEOPNOTSUPP
-#define EPFNOSUPPORT WSAEPFNOSUPPORT
-#define EAFNOSUPPORT WSAEAFNOSUPPORT
-#define EADDRINUSE WSAEADDRINUSE
-#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
-#define ENETDOWN WSAENETDOWN
-#define ENETUNREACH WSAENETUNREACH
-#define ENETRESET WSAENETRESET
-#define ECONNABORTED WSAECONNABORTED
-#define ECONNRESET WSAECONNRESET
-#define ENOBUFS WSAENOBUFS
-#define EISCONN WSAEISCONN
-#define ENOTCONN WSAENOTCONN
-#define ESHUTDOWN WSAESHUTDOWN
-#define ETOOMANYREFS WSAETOOMANYREFS
-#define ETIMEDOUT WSAETIMEDOUT
-#define ECONNREFUSED WSAECONNREFUSED
-#define ELOOP WSAELOOP
-#ifndef ENAMETOOLONG /* possible previous definition in errno.h */
-#define ENAMETOOLONG WSAENAMETOOLONG
-#endif
-#define EHOSTDOWN WSAEHOSTDOWN
-#define EHOSTUNREACH WSAEHOSTUNREACH
-#ifndef ENOTEMPTY /* possible previous definition in errno.h */
-#define ENOTEMPTY WSAENOTEMPTY
-#endif
-#define EPROCLIM WSAEPROCLIM
-#define EUSERS WSAEUSERS
-#define EDQUOT WSAEDQUOT
-#define ESTALE WSAESTALE
-#define EREMOTE WSAEREMOTE
-#endif
-
-
-/*
- * Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid()
- */
-
-#if defined(__VMS) && \
- defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
-#define getpwuid __32_getpwuid
-#endif
-
-
-/*
- * Macro argv_item_t hides platform details to code using it.
- */
-
-#ifdef __VMS
-#define argv_item_t __char_ptr32
-#else
-#define argv_item_t char *
-#endif
-
-
-/*
- * We use this ZERO_NULL to avoid picky compiler warnings,
- * when assigning a NULL pointer to a function pointer var.
- */
-
-#define ZERO_NULL 0
-
-
-#endif /* __SETUP_ONCE_H */
-
diff --git a/ares/vc/.cvsignore b/ares/vc/.cvsignore
deleted file mode 100644
index de8d83895..000000000
--- a/ares/vc/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-vc.ncb
-vc.opt
-vc6aws.ncb
-vc6aws.opt
diff --git a/ares/vc/acountry/.cvsignore b/ares/vc/acountry/.cvsignore
deleted file mode 100644
index 323c03b66..000000000
--- a/ares/vc/acountry/.cvsignore
+++ /dev/null
@@ -1,12 +0,0 @@
-DLL-*
-Debug
-LIB-*
-Release
-acountry.dep
-acountry.mak
-acountry.plg
-dll-*
-lib-*
-vc6acountry.dep
-vc6acountry.mak
-vc6acountry.plg
diff --git a/ares/vc/acountry/vc6acountry.dsp b/ares/vc/acountry/vc6acountry.dsp
deleted file mode 100644
index e9d497019..000000000
--- a/ares/vc/acountry/vc6acountry.dsp
+++ /dev/null
@@ -1,170 +0,0 @@
-# Microsoft Developer Studio Project File - Name="acountry" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=acountry - Win32 using cares LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vc6acountry.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vc6acountry.mak" CFG="acountry - Win32 using cares LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "acountry - Win32 using cares DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "acountry - Win32 using cares DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "acountry - Win32 using cares LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "acountry - Win32 using cares LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "acountry - Win32 using cares DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "dll-debug"
-# PROP BASE Intermediate_Dir "dll-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "dll-debug"
-# PROP Intermediate_Dir "dll-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
-# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
-
-!ELSEIF "$(CFG)" == "acountry - Win32 using cares DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "dll-release"
-# PROP BASE Intermediate_Dir "dll-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "dll-release"
-# PROP Intermediate_Dir "dll-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/acountry.exe" /libpath:"..\cares\dll-release" /fixed:no
-# ADD LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/acountry.exe" /libpath:"..\cares\dll-release" /fixed:no
-
-!ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "lib-debug"
-# PROP BASE Intermediate_Dir "lib-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "lib-debug"
-# PROP Intermediate_Dir "lib-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
-# ADD LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/acountry.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
-
-!ELSEIF "$(CFG)" == "acountry - Win32 using cares LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "lib-release"
-# PROP BASE Intermediate_Dir "lib-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "lib-release"
-# PROP Intermediate_Dir "lib-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/acountry.exe" /libpath:"..\cares\lib-release" /fixed:no
-# ADD LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/acountry.exe" /libpath:"..\cares\lib-release" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "acountry - Win32 using cares DLL Debug"
-# Name "acountry - Win32 using cares DLL Release"
-# Name "acountry - Win32 using cares LIB Debug"
-# Name "acountry - Win32 using cares LIB Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\acountry.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_net_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_ntop.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\ares_getopt.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/ares/vc/adig/.cvsignore b/ares/vc/adig/.cvsignore
deleted file mode 100644
index 4d96e30b6..000000000
--- a/ares/vc/adig/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-DLL-*
-LIB-*
-adig.dep
-adig.mak
-adig.plg
-dll-*
-lib-*
-vc6adig.dep
-vc6adig.mak
-vc6adig.plg
diff --git a/ares/vc/adig/vc6adig.dsp b/ares/vc/adig/vc6adig.dsp
deleted file mode 100644
index 913d5d9fe..000000000
--- a/ares/vc/adig/vc6adig.dsp
+++ /dev/null
@@ -1,170 +0,0 @@
-# Microsoft Developer Studio Project File - Name="adig" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=adig - Win32 using cares LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vc6adig.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vc6adig.mak" CFG="adig - Win32 using cares LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "adig - Win32 using cares DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "adig - Win32 using cares DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "adig - Win32 using cares LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "adig - Win32 using cares LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "adig - Win32 using cares DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "dll-debug"
-# PROP BASE Intermediate_Dir "dll-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "dll-debug"
-# PROP Intermediate_Dir "dll-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/adig.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
-# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/adig.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
-
-!ELSEIF "$(CFG)" == "adig - Win32 using cares DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "dll-release"
-# PROP BASE Intermediate_Dir "dll-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "dll-release"
-# PROP Intermediate_Dir "dll-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/adig.exe" /libpath:"..\cares\dll-release" /fixed:no
-# ADD LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/adig.exe" /libpath:"..\cares\dll-release" /fixed:no
-
-!ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "lib-debug"
-# PROP BASE Intermediate_Dir "lib-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "lib-debug"
-# PROP Intermediate_Dir "lib-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/adig.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
-# ADD LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/adig.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
-
-!ELSEIF "$(CFG)" == "adig - Win32 using cares LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "lib-release"
-# PROP BASE Intermediate_Dir "lib-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "lib-release"
-# PROP Intermediate_Dir "lib-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/adig.exe" /libpath:"..\cares\lib-release" /fixed:no
-# ADD LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/adig.exe" /libpath:"..\cares\lib-release" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "adig - Win32 using cares DLL Debug"
-# Name "adig - Win32 using cares DLL Release"
-# Name "adig - Win32 using cares LIB Debug"
-# Name "adig - Win32 using cares LIB Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\adig.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_net_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_ntop.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\ares_getopt.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/ares/vc/ahost/.cvsignore b/ares/vc/ahost/.cvsignore
deleted file mode 100644
index e510380a2..000000000
--- a/ares/vc/ahost/.cvsignore
+++ /dev/null
@@ -1,10 +0,0 @@
-DLL-*
-LIB-*
-ahost.dep
-ahost.mak
-ahost.plg
-dll-*
-lib-*
-vc6ahost.dep
-vc6ahost.mak
-vc6ahost.plg
diff --git a/ares/vc/ahost/vc6ahost.dsp b/ares/vc/ahost/vc6ahost.dsp
deleted file mode 100644
index 64d372849..000000000
--- a/ares/vc/ahost/vc6ahost.dsp
+++ /dev/null
@@ -1,170 +0,0 @@
-# Microsoft Developer Studio Project File - Name="ahost" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Console Application" 0x0103
-
-CFG=ahost - Win32 using cares LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vc6ahost.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vc6ahost.mak" CFG="ahost - Win32 using cares LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "ahost - Win32 using cares DLL Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ahost - Win32 using cares DLL Release" (based on "Win32 (x86) Console Application")
-!MESSAGE "ahost - Win32 using cares LIB Debug" (based on "Win32 (x86) Console Application")
-!MESSAGE "ahost - Win32 using cares LIB Release" (based on "Win32 (x86) Console Application")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-CPP=cl.exe
-RSC=rc.exe
-
-!IF "$(CFG)" == "ahost - Win32 using cares DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "dll-debug"
-# PROP BASE Intermediate_Dir "dll-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "dll-debug"
-# PROP Intermediate_Dir "dll-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
-# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"dll-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\dll-debug" /fixed:no
-
-!ELSEIF "$(CFG)" == "ahost - Win32 using cares DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "dll-release"
-# PROP BASE Intermediate_Dir "dll-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "dll-release"
-# PROP Intermediate_Dir "dll-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/ahost.exe" /libpath:"..\cares\dll-release" /fixed:no
-# ADD LINK32 cares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"dll-release/ahost.exe" /libpath:"..\cares\dll-release" /fixed:no
-
-!ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "lib-debug"
-# PROP BASE Intermediate_Dir "lib-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "lib-debug"
-# PROP Intermediate_Dir "lib-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
-# ADD LINK32 libcaresd.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"lib-debug/ahost.exe" /pdbtype:con /libpath:"..\cares\lib-debug" /fixed:no
-
-!ELSEIF "$(CFG)" == "ahost - Win32 using cares LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "lib-release"
-# PROP BASE Intermediate_Dir "lib-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "lib-release"
-# PROP Intermediate_Dir "lib-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/ahost.exe" /libpath:"..\cares\lib-release" /fixed:no
-# ADD LINK32 libcares.lib ws2_32.lib advapi32.lib kernel32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"lib-release/ahost.exe" /libpath:"..\cares\lib-release" /fixed:no
-
-!ENDIF
-
-# Begin Target
-
-# Name "ahost - Win32 using cares DLL Debug"
-# Name "ahost - Win32 using cares DLL Release"
-# Name "ahost - Win32 using cares LIB Debug"
-# Name "ahost - Win32 using cares LIB Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\ahost.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_getopt.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_net_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_ntop.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\ares_getopt.h
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/ares/vc/cares/.cvsignore b/ares/vc/cares/.cvsignore
deleted file mode 100644
index 63a088054..000000000
--- a/ares/vc/cares/.cvsignore
+++ /dev/null
@@ -1,9 +0,0 @@
-DLL-*
-LIB-*
-dll-*
-lib-*
-vc6cares.dep
-vc6cares.mak
-vc6cares.ncb
-vc6cares.opt
-vc6cares.plg
diff --git a/ares/vc/cares/vc6cares.dsp b/ares/vc/cares/vc6cares.dsp
deleted file mode 100644
index ca84f8090..000000000
--- a/ares/vc/cares/vc6cares.dsp
+++ /dev/null
@@ -1,393 +0,0 @@
-# Microsoft Developer Studio Project File - Name="cares" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 6.00
-# ** DO NOT EDIT **
-
-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
-# TARGTYPE "Win32 (x86) Static Library" 0x0104
-
-CFG=cares - Win32 LIB Debug
-!MESSAGE This is not a valid makefile. To build this project using NMAKE,
-!MESSAGE use the Export Makefile command and run
-!MESSAGE
-!MESSAGE NMAKE /f "vc6cares.mak".
-!MESSAGE
-!MESSAGE You can specify a configuration when running NMAKE
-!MESSAGE by defining the macro CFG on the command line. For example:
-!MESSAGE
-!MESSAGE NMAKE /f "vc6cares.mak" CFG="cares - Win32 LIB Debug"
-!MESSAGE
-!MESSAGE Possible choices for configuration are:
-!MESSAGE
-!MESSAGE "cares - Win32 DLL Debug" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "cares - Win32 DLL Release" (based on "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "cares - Win32 LIB Debug" (based on "Win32 (x86) Static Library")
-!MESSAGE "cares - Win32 LIB Release" (based on "Win32 (x86) Static Library")
-!MESSAGE
-
-# Begin Project
-# PROP AllowPerConfigDependencies 0
-# PROP Scc_ProjName ""
-# PROP Scc_LocalPath ""
-
-!IF "$(CFG)" == "cares - Win32 DLL Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "dll-debug"
-# PROP BASE Intermediate_Dir "dll-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "dll-debug"
-# PROP Intermediate_Dir "dll-debug/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "_DEBUG" /win32
-# ADD MTL /nologo /D "_DEBUG" /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/caresd.dll" /implib:"dll-debug/caresd.lib" /pdbtype:con /fixed:no
-# ADD LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /incremental:no /debug /machine:I386 /out:"dll-debug/caresd.dll" /implib:"dll-debug/caresd.lib" /pdbtype:con /fixed:no
-
-!ELSEIF "$(CFG)" == "cares - Win32 DLL Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "dll-release"
-# PROP BASE Intermediate_Dir "dll-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "dll-release"
-# PROP Intermediate_Dir "dll-release/obj"
-# PROP Ignore_Export_Lib 0
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
-MTL=midl.exe
-# ADD BASE MTL /nologo /D "NDEBUG" /win32
-# ADD MTL /nologo /D "NDEBUG" /win32
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LINK32=link.exe
-# ADD BASE LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/cares.dll" /implib:"dll-release/cares.lib" /fixed:no /release /incremental:no
-# ADD LINK32 ws2_32.lib advapi32.lib kernel32.lib /nologo /dll /pdb:none /machine:I386 /out:"dll-release/cares.dll" /implib:"dll-release/cares.lib" /fixed:no /release /incremental:no
-
-!ELSEIF "$(CFG)" == "cares - Win32 LIB Debug"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 1
-# PROP BASE Output_Dir "lib-debug"
-# PROP BASE Intermediate_Dir "lib-debug/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 1
-# PROP Output_Dir "lib-debug"
-# PROP Intermediate_Dir "lib-debug/obj"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
-# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "..\.." /D "_DEBUG" /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "_DEBUG"
-# ADD RSC /l 0x409 /d "_DEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib-debug/libcaresd.lib" /machine:I386
-# ADD LIB32 /nologo /out:"lib-debug/libcaresd.lib" /machine:I386
-
-!ELSEIF "$(CFG)" == "cares - Win32 LIB Release"
-
-# PROP BASE Use_MFC 0
-# PROP BASE Use_Debug_Libraries 0
-# PROP BASE Output_Dir "lib-release"
-# PROP BASE Intermediate_Dir "lib-release/obj"
-# PROP BASE Target_Dir ""
-# PROP Use_MFC 0
-# PROP Use_Debug_Libraries 0
-# PROP Output_Dir "lib-release"
-# PROP Intermediate_Dir "lib-release/obj"
-# PROP Target_Dir ""
-CPP=cl.exe
-# ADD BASE CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "NDEBUG" /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
-RSC=rc.exe
-# ADD BASE RSC /l 0x409 /d "NDEBUG"
-# ADD RSC /l 0x409 /d "NDEBUG"
-BSC32=bscmake.exe
-# ADD BASE BSC32 /nologo
-# ADD BSC32 /nologo
-LIB32=link.exe -lib
-# ADD BASE LIB32 /nologo /out:"lib-release/libcares.lib" /machine:I386
-# ADD LIB32 /nologo /out:"lib-release/libcares.lib" /machine:I386
-
-!ENDIF
-
-# Begin Target
-
-# Name "cares - Win32 DLL Debug"
-# Name "cares - Win32 DLL Release"
-# Name "cares - Win32 LIB Debug"
-# Name "cares - Win32 LIB Release"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\ares__close_sockets.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares__get_hostent.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares__read_line.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares__timeval.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_cancel.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_data.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_destroy.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_expand_name.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_expand_string.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_fds.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_free_hostent.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_free_string.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_gethostbyaddr.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_gethostbyname.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_getsock.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_init.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_library_init.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_llist.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_mkquery.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_nowarn.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_options.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_parse_a_reply.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_parse_aaaa_reply.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_parse_ns_reply.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_parse_ptr_reply.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_parse_srv_reply.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_parse_txt_reply.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_process.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_query.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_search.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_send.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_strcasecmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_strerror.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_timeout.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_version.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_writev.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\bitncmp.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_net_pton.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_ntop.c
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\windows_port.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\ares.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_build.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_data.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_dns.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_ipv6.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_library_init.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_llist.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_nowarn.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_private.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_rules.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_strcasecmp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_version.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\ares_writev.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\bitncmp.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_net_pton.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\inet_ntop.h
-# End Source File
-# Begin Source File
-
-SOURCE=..\..\nameser.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter ""
-# Begin Source File
-
-SOURCE=..\..\cares.rc
-# End Source File
-# End Group
-# End Target
-# End Project
diff --git a/ares/vc/cares/vc6cares.dsw b/ares/vc/cares/vc6cares.dsw
deleted file mode 100644
index 5bad37570..000000000
--- a/ares/vc/cares/vc6cares.dsw
+++ /dev/null
@@ -1,29 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "cares"=".\vc6cares.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/ares/vc/vc6aws.dsw b/ares/vc/vc6aws.dsw
deleted file mode 100644
index 9543a5a45..000000000
--- a/ares/vc/vc6aws.dsw
+++ /dev/null
@@ -1,74 +0,0 @@
-Microsoft Developer Studio Workspace File, Format Version 6.00
-# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
-
-###############################################################################
-
-Project: "cares"=".\cares\vc6cares.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
-}}}
-
-###############################################################################
-
-Project: "acountry"=".\acountry\vc6acountry.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name cares
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "adig"=".\adig\vc6adig.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name cares
- End Project Dependency
-}}}
-
-###############################################################################
-
-Project: "ahost"=".\ahost\vc6ahost.dsp" - Package Owner=<4>
-
-Package=<5>
-{{{
-}}}
-
-Package=<4>
-{{{
- Begin Project Dependency
- Project_Dep_Name cares
- End Project Dependency
-}}}
-
-###############################################################################
-
-Global:
-
-Package=<5>
-{{{
-}}}
-
-Package=<3>
-{{{
-}}}
-
-###############################################################################
-
diff --git a/ares/windows_port.c b/ares/windows_port.c
deleted file mode 100644
index 64096a5be..000000000
--- a/ares/windows_port.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "ares_setup.h"
-
-/* $Id$ */
-
-/* only do the following on windows
- */
-#if (defined(WIN32) || defined(WATT32)) && !defined(MSDOS)
-
-#ifdef __WATCOMC__
-/*
- * Watcom needs a DllMain() in order to initialise the clib startup code.
- */
-BOOL
-WINAPI DllMain (HINSTANCE hnd, DWORD reason, LPVOID reserved)
-{
- (void) hnd;
- (void) reason;
- (void) reserved;
- return (TRUE);
-}
-#endif
-
-#endif /* WIN32 builds only */