Compare commits
410 Commits
curl-7_19_
...
curl-7_20_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f2f07dad34 | ||
![]() |
06ae8ca5a6 | ||
![]() |
d33da42334 | ||
![]() |
e118cd4ca0 | ||
![]() |
71593dfe57 | ||
![]() |
0f4a91afde | ||
![]() |
2c2464a682 | ||
![]() |
880452d2ed | ||
![]() |
e3009f2950 | ||
![]() |
cad9c3f55f | ||
![]() |
12d01bc5f7 | ||
![]() |
bc7615ae2d | ||
![]() |
7aef172a34 | ||
![]() |
f47b84b57f | ||
![]() |
1a5749424b | ||
![]() |
a9a5a8e45c | ||
![]() |
8044366134 | ||
![]() |
15efa262bb | ||
![]() |
429e544556 | ||
![]() |
680434f313 | ||
![]() |
c9f46446d5 | ||
![]() |
b77d0db59e | ||
![]() |
3205ac35b0 | ||
![]() |
381a4d6efe | ||
![]() |
f6d288a397 | ||
![]() |
013ec6a92f | ||
![]() |
e2fc294470 | ||
![]() |
d1717e7c90 | ||
![]() |
e569ff959f | ||
![]() |
839b61c32a | ||
![]() |
d28b8d3158 | ||
![]() |
2dfbd0d050 | ||
![]() |
54879d7763 | ||
![]() |
49ba75af26 | ||
![]() |
232d17ec64 | ||
![]() |
bafba6946c | ||
![]() |
da23b16ad8 | ||
![]() |
46de140aca | ||
![]() |
17a2c32ca9 | ||
![]() |
9f6c4daa27 | ||
![]() |
ea72194650 | ||
![]() |
35e220606d | ||
![]() |
55f1e787f3 | ||
![]() |
516cf5c8dd | ||
![]() |
35fbeda003 | ||
![]() |
715e3a806f | ||
![]() |
6ebd71d186 | ||
![]() |
4ee4e66c4f | ||
![]() |
4d19ebe738 | ||
![]() |
5312fdcd73 | ||
![]() |
fce02e1cab | ||
![]() |
15ddc1f134 | ||
![]() |
d65cf7889b | ||
![]() |
ddab9bd2ec | ||
![]() |
eff18763a1 | ||
![]() |
3e21f1e971 | ||
![]() |
ccffed997e | ||
![]() |
6259bcd51f | ||
![]() |
a4031dbd85 | ||
![]() |
2f3bce1193 | ||
![]() |
3cb76e5ebb | ||
![]() |
6418c0588d | ||
![]() |
124b35aafe | ||
![]() |
bbefdf88fd | ||
![]() |
06c96d01d2 | ||
![]() |
83e91586ef | ||
![]() |
c82a1f95eb | ||
![]() |
d34982bb65 | ||
![]() |
22ed0f5059 | ||
![]() |
9bc897f380 | ||
![]() |
9b0e57b0f7 | ||
![]() |
1d86ebfc88 | ||
![]() |
a9b860765d | ||
![]() |
483ff1ca75 | ||
![]() |
c054b8bfa7 | ||
![]() |
340ab2f87f | ||
![]() |
f8b16e5ccb | ||
![]() |
4bb80cfd75 | ||
![]() |
de2cc11a73 | ||
![]() |
c656098ee0 | ||
![]() |
94f33457d3 | ||
![]() |
80675818e0 | ||
![]() |
b0e2d47a3e | ||
![]() |
0abd928d3d | ||
![]() |
597ad5a2ce | ||
![]() |
703fa98a48 | ||
![]() |
ec4647c0f9 | ||
![]() |
33ce0ec1f1 | ||
![]() |
1435864030 | ||
![]() |
4a8a731476 | ||
![]() |
6636fbf238 | ||
![]() |
c94d44505f | ||
![]() |
0032ce762e | ||
![]() |
bdb338b3c7 | ||
![]() |
099eed7bf1 | ||
![]() |
bc253a4d5f | ||
![]() |
a771fb0d41 | ||
![]() |
c047fe8e90 | ||
![]() |
e45eefcb90 | ||
![]() |
844c19cc5b | ||
![]() |
4a8570313a | ||
![]() |
e59a5cbe4e | ||
![]() |
bfc4c33985 | ||
![]() |
5af20c70e4 | ||
![]() |
bd7430c1ee | ||
![]() |
6e5acc2fc1 | ||
![]() |
abe3e6b36c | ||
![]() |
105e430641 | ||
![]() |
4a349f7a54 | ||
![]() |
2f9a17fc44 | ||
![]() |
bc4582b68a | ||
![]() |
e09718d457 | ||
![]() |
2c0418f154 | ||
![]() |
a74e885bef | ||
![]() |
6291a1cf23 | ||
![]() |
a872ff742c | ||
![]() |
58a1557088 | ||
![]() |
422a7869be | ||
![]() |
471e8eefb6 | ||
![]() |
d2e1ec58f2 | ||
![]() |
48032c0880 | ||
![]() |
877dad1e24 | ||
![]() |
01030e9240 | ||
![]() |
a5ca3f1754 | ||
![]() |
77a17a21d1 | ||
![]() |
6035a4b044 | ||
![]() |
469d3ed591 | ||
![]() |
3afe2b65b6 | ||
![]() |
afdc3d81e9 | ||
![]() |
ccfe279117 | ||
![]() |
5b5ff41ef1 | ||
![]() |
0a713139f6 | ||
![]() |
0687bc6bd6 | ||
![]() |
424a8882fb | ||
![]() |
3fdced357b | ||
![]() |
ce2ac665e4 | ||
![]() |
0375f70b5c | ||
![]() |
7f8980114b | ||
![]() |
312494f25f | ||
![]() |
8d97b33347 | ||
![]() |
b51b703a5b | ||
![]() |
071c38988d | ||
![]() |
365e75a270 | ||
![]() |
b992928f3d | ||
![]() |
32413a8e34 | ||
![]() |
ada2774ab2 | ||
![]() |
a644af129e | ||
![]() |
7624527591 | ||
![]() |
383bf1e476 | ||
![]() |
8c8df3966b | ||
![]() |
4344215309 | ||
![]() |
0643829444 | ||
![]() |
7525670610 | ||
![]() |
b32a96eda0 | ||
![]() |
82f5ffff8f | ||
![]() |
3fd67b5f36 | ||
![]() |
1647d64a4b | ||
![]() |
d17416190b | ||
![]() |
2158e234aa | ||
![]() |
cb348a5b1f | ||
![]() |
377b2db05b | ||
![]() |
78b7d7f7a8 | ||
![]() |
5bec1b1cf0 | ||
![]() |
cd7b12edff | ||
![]() |
1103d0c718 | ||
![]() |
aae97c998a | ||
![]() |
017c14cc99 | ||
![]() |
b90703f594 | ||
![]() |
552c3de357 | ||
![]() |
aa2f447400 | ||
![]() |
184f92d243 | ||
![]() |
a1d701d05a | ||
![]() |
a114b7b1c0 | ||
![]() |
8524c04ca9 | ||
![]() |
31630203b1 | ||
![]() |
d37a9c4f87 | ||
![]() |
88944eb13a | ||
![]() |
bd8096b42b | ||
![]() |
1e87e4bb4e | ||
![]() |
9bd03483ce | ||
![]() |
2e83006603 | ||
![]() |
fd903eb6be | ||
![]() |
2c93ec5303 | ||
![]() |
d79b5a0613 | ||
![]() |
a62f32d3c2 | ||
![]() |
241c0ad5bd | ||
![]() |
605bbfc4c0 | ||
![]() |
42d365f199 | ||
![]() |
31266ca92a | ||
![]() |
3f3f6be825 | ||
![]() |
01682cca55 | ||
![]() |
99a5a5a3e9 | ||
![]() |
eb0479575a | ||
![]() |
97141d08f7 | ||
![]() |
99e9938617 | ||
![]() |
6c6dc3f879 | ||
![]() |
a1311e5a24 | ||
![]() |
5e6ffe353a | ||
![]() |
d7cd761047 | ||
![]() |
05488d63d0 | ||
![]() |
3184a91ec8 | ||
![]() |
0dde9056d7 | ||
![]() |
a487c80535 | ||
![]() |
1e9a946e6d | ||
![]() |
7cd5ffc1bf | ||
![]() |
fa6631edd5 | ||
![]() |
e70c0913b1 | ||
![]() |
5b2a31ae41 | ||
![]() |
c796f2646e | ||
![]() |
d0f6bde732 | ||
![]() |
1bd5784a13 | ||
![]() |
1f7d9f4f7b | ||
![]() |
b6ac8d62a1 | ||
![]() |
4ec17a08bc | ||
![]() |
aefe0299e0 | ||
![]() |
b89789d82f | ||
![]() |
a218235964 | ||
![]() |
73ad32e125 | ||
![]() |
77625f8560 | ||
![]() |
1af64730e0 | ||
![]() |
eacf62792f | ||
![]() |
6ce407305b | ||
![]() |
ae3892e8ab | ||
![]() |
c74875d94e | ||
![]() |
271dc9c582 | ||
![]() |
7bede9180d | ||
![]() |
f0917cabb5 | ||
![]() |
96395a908a | ||
![]() |
e9a993b9e9 | ||
![]() |
982fe33924 | ||
![]() |
fa188eec7b | ||
![]() |
bdd3763980 | ||
![]() |
1cfa52b67d | ||
![]() |
57d3488a0d | ||
![]() |
83d34a246e | ||
![]() |
76b3c9d70f | ||
![]() |
d911e22d8f | ||
![]() |
efd1d9dc04 | ||
![]() |
88a0060b2e | ||
![]() |
4adf7d62d4 | ||
![]() |
6add5baa3a | ||
![]() |
2a3dafc0cd | ||
![]() |
f912f8d5d2 | ||
![]() |
af7a5b297f | ||
![]() |
344bbcf259 | ||
![]() |
240fa29e94 | ||
![]() |
010fe5acd5 | ||
![]() |
aeec8e0b38 | ||
![]() |
2d15ac3d4e | ||
![]() |
53deae3781 | ||
![]() |
39cc424e81 | ||
![]() |
4d0b0cae9e | ||
![]() |
8343cb8910 | ||
![]() |
a75d9d9169 | ||
![]() |
54c60d0067 | ||
![]() |
91d05903b4 | ||
![]() |
10a11e3abe | ||
![]() |
414180b363 | ||
![]() |
7603a29fc3 | ||
![]() |
002ed5f298 | ||
![]() |
044ba6dad2 | ||
![]() |
3802d027cd | ||
![]() |
3111701c38 | ||
![]() |
2c9644b812 | ||
![]() |
99daca5a48 | ||
![]() |
a6abbb120e | ||
![]() |
b0f548fb56 | ||
![]() |
364d76aca7 | ||
![]() |
6e9a484ea6 | ||
![]() |
303f74c740 | ||
![]() |
4ea8ad584b | ||
![]() |
19b8a80ee9 | ||
![]() |
30eb452adf | ||
![]() |
92b9b46831 | ||
![]() |
83a6b34803 | ||
![]() |
43fefab2a1 | ||
![]() |
ec3bb8f727 | ||
![]() |
463d2d395c | ||
![]() |
2fc1752d6e | ||
![]() |
296ebf382c | ||
![]() |
b91ed67276 | ||
![]() |
315253b367 | ||
![]() |
3b1de97eaa | ||
![]() |
5ce6454d33 | ||
![]() |
0653fa107f | ||
![]() |
ebe5339003 | ||
![]() |
95362af43c | ||
![]() |
d14bf09ab8 | ||
![]() |
636d2fe00a | ||
![]() |
fb2425b147 | ||
![]() |
2286f566d0 | ||
![]() |
ed2aa87e63 | ||
![]() |
f0826974f2 | ||
![]() |
d61690ef46 | ||
![]() |
a72ce23f16 | ||
![]() |
bfae1bd999 | ||
![]() |
8a7231d7ae | ||
![]() |
4d922545d5 | ||
![]() |
1fc32d866a | ||
![]() |
230dc699e2 | ||
![]() |
3f6854272f | ||
![]() |
448f6684bb | ||
![]() |
af06a0e497 | ||
![]() |
6e38cc9048 | ||
![]() |
a240f4d1df | ||
![]() |
6f273b1a5f | ||
![]() |
f07f17f2a4 | ||
![]() |
c713627412 | ||
![]() |
b1a35cd3ac | ||
![]() |
9cbf69ca0b | ||
![]() |
c7d2e4c1e1 | ||
![]() |
cbd527843b | ||
![]() |
fba233bb34 | ||
![]() |
8b49428298 | ||
![]() |
19f79e5a79 | ||
![]() |
e20f3ecd7e | ||
![]() |
c83f7ede26 | ||
![]() |
f385fdefbe | ||
![]() |
88fe6557e9 | ||
![]() |
405e18571e | ||
![]() |
094afbeb56 | ||
![]() |
1fddcb3f88 | ||
![]() |
b723500af0 | ||
![]() |
4bfa0b08de | ||
![]() |
e536cb085f | ||
![]() |
083e2df4ed | ||
![]() |
b7997d8a3b | ||
![]() |
c80b593e5b | ||
![]() |
e37f8164a9 | ||
![]() |
35d4c57051 | ||
![]() |
f6114f2ec4 | ||
![]() |
f9e55c9908 | ||
![]() |
3005e63b02 | ||
![]() |
65e628cc97 | ||
![]() |
738e547815 | ||
![]() |
5ec8a3ae06 | ||
![]() |
fdfbc5d8da | ||
![]() |
504e6d7ae6 | ||
![]() |
c3266a5eb1 | ||
![]() |
ced1e1e726 | ||
![]() |
a41493b3b0 | ||
![]() |
6da73d09f1 | ||
![]() |
4c0ffd33f5 | ||
![]() |
99363a0ee1 | ||
![]() |
71260534f9 | ||
![]() |
5e62be1d8c | ||
![]() |
7e6a67b436 | ||
![]() |
5a0a473c30 | ||
![]() |
5129442ee7 | ||
![]() |
e8fd5d8062 | ||
![]() |
2f6dcaa644 | ||
![]() |
59939313f8 | ||
![]() |
961c504ca5 | ||
![]() |
b32d1a9a1d | ||
![]() |
4c8adc8fee | ||
![]() |
69ac7b0cf8 | ||
![]() |
09526fc9e9 | ||
![]() |
f0068267ee | ||
![]() |
7db7c0af4f | ||
![]() |
6bf10a111f | ||
![]() |
530fde3a22 | ||
![]() |
5b3be2ee35 | ||
![]() |
3b8d7fddf7 | ||
![]() |
0e80f0e4c4 | ||
![]() |
a2ddb0a61b | ||
![]() |
581ce03345 | ||
![]() |
f7f76e17c3 | ||
![]() |
1cbc93fb54 | ||
![]() |
a8ddd6ce31 | ||
![]() |
eb16c0e1eb | ||
![]() |
9c49e51f7e | ||
![]() |
90bc6ee8f3 | ||
![]() |
5e75817d44 | ||
![]() |
a7e4022d6b | ||
![]() |
4999847625 | ||
![]() |
d26a92493a | ||
![]() |
05a4abea04 | ||
![]() |
c1f9440aca | ||
![]() |
011a2818db | ||
![]() |
571309dc3e | ||
![]() |
d547d00f2c | ||
![]() |
668dc0ad87 | ||
![]() |
0b7e0eed49 | ||
![]() |
9b7e45e874 | ||
![]() |
40c2c3270d | ||
![]() |
b3e8cf539d | ||
![]() |
fb5f332834 | ||
![]() |
107c4d878a | ||
![]() |
5d786d0e97 | ||
![]() |
5f77eea408 | ||
![]() |
a0905ec0ab | ||
![]() |
d7470a3629 | ||
![]() |
2287e7ba8b | ||
![]() |
16a1e251cd | ||
![]() |
1aa320dedb | ||
![]() |
d17ce4e9f1 | ||
![]() |
50c3417686 | ||
![]() |
46f294dbb0 | ||
![]() |
d7231f54d7 | ||
![]() |
809f2a190c | ||
![]() |
4f62cdf6f9 | ||
![]() |
b8012ea251 | ||
![]() |
02673a8900 | ||
![]() |
676e0c28e7 | ||
![]() |
55e68ba333 | ||
![]() |
3f56d12830 | ||
![]() |
257f2376d5 | ||
![]() |
1d8d389bce | ||
![]() |
99e43046a7 | ||
![]() |
a5460f2431 |
425
CHANGES
425
CHANGES
@@ -6,6 +6,431 @@
|
||||
|
||||
Changelog
|
||||
|
||||
Version 7.20.0 (9 February 2010)
|
||||
|
||||
Daniel Stenberg (9 Feb 2010)
|
||||
- When downloading compressed content over HTTP and the app asked libcurl to
|
||||
automatically uncompress it with the CURLOPT_ENCODING option, libcurl could
|
||||
wrongly provide the callback with more data than the maximum documented
|
||||
amount. An application could thus get tricked into badness if the maximum
|
||||
limit was trusted to be enforced by libcurl itself (as it is documented).
|
||||
|
||||
This is further detailed and explained in the libcurl security advisory
|
||||
20100209 at
|
||||
|
||||
http://curl.haxx.se/docs/adv_20100209.html
|
||||
|
||||
Daniel Fandrich (3 Feb 2010)
|
||||
- Changed the Watcom makefiles to make them easier to keep in sync with
|
||||
Makefile.inc since that can't be included directly.
|
||||
|
||||
Yang Tse (2 Feb 2010)
|
||||
- Symbol CURL_FORMAT_OFF_T now obsoleted, will be removed in a future release,
|
||||
symbol will not be available when building with CURL_NO_OLDIES defined. Use
|
||||
of CURL_FORMAT_CURL_OFF_T is preferred since 7.19.0
|
||||
|
||||
Daniel Stenberg (1 Feb 2010)
|
||||
- Using the multi_socket API, it turns out at times it seemed to "forget"
|
||||
connections (which caused a hang). It turned out to be an existing (7.19.7)
|
||||
bug in libcurl (that's been around for a long time) and it happened like
|
||||
this:
|
||||
|
||||
The app calls curl_multi_add_handle() to add a new easy handle, libcurl will
|
||||
then set it to timeout in 1 millisecond so libcurl will tell the app about
|
||||
it.
|
||||
|
||||
The app's timeout fires off that there's a timeout, the app calls libcurl as
|
||||
we so often document it:
|
||||
|
||||
do {
|
||||
res = curl_multi_socket_action(... TIMEOUT ...);
|
||||
} while(CURLM_CALL_MULTI_PERFORM == res);
|
||||
|
||||
And this is the problem number one:
|
||||
|
||||
When curl_multi_socket_action() is called with no specific handle, but only
|
||||
a timeout-action, it will *only* perform actions within libcurl that are
|
||||
marked to run at this time. In this case, the request would go from INIT to
|
||||
CONNECT and return CURLM_CALL_MULTI_PERFORM. When the app then calls libcurl
|
||||
again, there's no timer set for this handle so it remains in the CONNECT
|
||||
state. The CONNECT state is a transitional state in libcurl so it reports no
|
||||
sockets there, and thus libcurl never tells the app anything more about that
|
||||
easy handle/connection.
|
||||
|
||||
libcurl _does_ set a 1ms timeout for the handle at the end of
|
||||
multi_runsingle() if it returns CURLM_CALL_MULTI_PERFORM, but since the loop
|
||||
is instant the new job is not ready to run at that point (and there's no
|
||||
code that makes libcurl call the app to update the timout for this new
|
||||
timeout). It will simply rely on that some other timeout will trigger later
|
||||
on or that something else will update the timeout callback. This makes the
|
||||
bug fairly hard to repeat.
|
||||
|
||||
The fix made to adress this issue:
|
||||
|
||||
We introduce a loop in lib/multi.c around all calls to multi_runsingle() and
|
||||
simply check for CURLM_CALL_MULTI_PERFORM internally. This has the added
|
||||
benefit that this goes in line with my long-term wishes to get rid of the
|
||||
CURLM_CALL_MULTI_PERFORM all together from the public API.
|
||||
|
||||
The downside of this fix, is that the counter we return in 'running_handles'
|
||||
in several of our public functions then gets a slightly new and possibly
|
||||
confusing behavior during times:
|
||||
|
||||
If an app adds a handle that fails to connect (very quickly) it may just
|
||||
as well never appear as a 'running_handle' with this fix. Previously it
|
||||
would first bump the counter only to get it decreased again at next call.
|
||||
Even I have used that change in handle counter to signal "end of a
|
||||
transfer". The only *good* way to find the end of a individual transfer
|
||||
is calling curl_multi_info_read() to see if it returns one.
|
||||
|
||||
Of course, if the app previously did the looping before it checked the
|
||||
counter, it really shouldn't be any new effect.
|
||||
|
||||
Yang Tse (26 Jan 2010)
|
||||
- Constantine Sapuntzakis' and Joshua Kwan's work done in the last four months
|
||||
relative to the asynchronous DNS lookups, along with with some integration
|
||||
adjustments I have done are finally committed to CVS.
|
||||
|
||||
Currently these enhancements will benefit builds done using c-ares on any
|
||||
platform as well as Windows builds using the default threaded resolver.
|
||||
|
||||
This release does not make generally available POSIX threaded DNS lookups
|
||||
yet. There is no configure option to enable this feature yet. It is possible
|
||||
to experimantally try this feature running configure with compiler flags that
|
||||
make simultaneous definition of preprocessor symbols USE_THREADS_POSIX and
|
||||
HAVE_PTHREAD_H, as well as whatever reentrancy compiler flags and linker ones
|
||||
are required to link and properly use pthread_* functions on each platform.
|
||||
|
||||
Daniel Stenberg (26 Jan 2010)
|
||||
- Mike Crowe made libcurl return CURLE_COULDNT_RESOLVE_PROXY when it is the
|
||||
proxy that cannot be resolved when using c-ares. This matches the behaviour
|
||||
when not using c-ares.
|
||||
|
||||
Bj<EFBFBD>rn Stenberg (23 Jan 2010)
|
||||
- Added a new flag: -J/--remote-header-name. This option tells the
|
||||
-O/--remote-name option to use the server-specified Content-Disposition
|
||||
filename instead of extracting a filename from the URL.
|
||||
|
||||
Daniel Stenberg (21 Jan 2010)
|
||||
- Chris Conroy brought support for RTSP transfers, and with it comes 8(!) new
|
||||
libcurl options for controlling what to get and how to receive posssibly
|
||||
interleaved RTP data.
|
||||
|
||||
Daniel Stenberg (20 Jan 2010)
|
||||
- As was pointed out on the http-state mailing list, the order of cookies in a
|
||||
HTTP Cookie: header _needs_ to be sorted on the path length in the cases
|
||||
where two cookies using the same name are set more than once using
|
||||
(overlapping) paths. Realizing this, identically named cookies must be
|
||||
sorted correctly. But detecting only identically named cookies and take care
|
||||
of them individually is harder than just to blindly and unconditionally sort
|
||||
all cookies based on their path lengths. All major browsers also already do
|
||||
this, so this makes our behavior one step closer to them in the cookie area.
|
||||
|
||||
Test case 8 was the only one that broke due to this change and I updated it
|
||||
accordingly.
|
||||
|
||||
Daniel Stenberg (19 Jan 2010)
|
||||
- David McCreedy brought a fix and a new test case (129) to make libcurl work
|
||||
again when downloading files over FTP using ASCII and it turns out that the
|
||||
final size of the file is not the same as the initial size the server
|
||||
reported. This is very common since servers don't take the newline
|
||||
conversions into account.
|
||||
|
||||
Kamil Dudka (14 Jan 2010)
|
||||
- Suppressed side effect of OpenSSL configure checks, which prevented NSS from
|
||||
being properly detected under certain circumstances. It had been caused by
|
||||
strange behavior of pkg-config when handling PKG_CONFIG_LIBDIR. pkg-config
|
||||
distinguishes among empty and non-existent environment variable in that case.
|
||||
|
||||
Daniel Stenberg (12 Jan 2010)
|
||||
- Gil Weber reported a peculiar flaw with the multi interface when doing SFTP
|
||||
transfers: curl_multi_fdset() would return -1 and not set and file
|
||||
descriptors several times during a transfer of a single file. It turned out
|
||||
to be due to two different flaws now fixed. Gil's excellent recipe helped me
|
||||
nail this.
|
||||
|
||||
Daniel Stenberg (11 Jan 2010)
|
||||
- Made sure that the progress callback is repeatedly called at a regular
|
||||
interval even during very slow connects.
|
||||
|
||||
- The tests/runtests.pl script now checks to see if the test case that runs is
|
||||
present in the tests/data/Makefile.am and outputs a notice message on the
|
||||
screen if not. Each test file has to be included in that Makefile.am to get
|
||||
included in release archives and forgetting to add files there is a common
|
||||
mistake. This is an attempt to make it harder to forget.
|
||||
|
||||
Daniel Stenberg (9 Jan 2010)
|
||||
- Johan van Selst found and fixed a OpenSSL session ref count leak:
|
||||
|
||||
ossl_connect_step3() increments an SSL session handle reference counter on
|
||||
each call. When sessions are re-used this reference counter may be
|
||||
incremented many times, but it will be decremented only once when done (by
|
||||
Curl_ossl_session_free()); and the internal OpenSSL data will not be freed
|
||||
if this reference count remains positive. When a session is re-used the
|
||||
reference counter should be corrected by explicitly calling
|
||||
SSL_SESSION_free() after each consecutive SSL_get1_session() to avoid
|
||||
introducing a memory leak.
|
||||
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2926284)
|
||||
|
||||
Daniel Stenberg (7 Jan 2010)
|
||||
- Make sure the progress callback is called repeatedly even during very slow
|
||||
name resolves when c-ares is used for resolving.
|
||||
|
||||
Claes Jakobsson (6 Jan 2010)
|
||||
- Julien Chaffraix fixed so that the fragment part in an URL is not sent
|
||||
to the server anymore.
|
||||
|
||||
Kamil Dudka (3 Jan 2010)
|
||||
- Julien Chaffraix eliminated a duplicated initialization in singlesocket().
|
||||
|
||||
Daniel Stenberg (2 Jan 2010)
|
||||
- Make curl support --ssl and --ssl-reqd instead of the previous FTP-specific
|
||||
versions --ftp-ssl and --ftp-ssl-reqd as these options are now used to
|
||||
control SSL/TLS for IMAP, POP3 and SMTP as well in addition to FTP. The old
|
||||
option names are still working but the new ones are the ones listed and
|
||||
documented.
|
||||
|
||||
Daniel Stenberg (1 Jan 2010)
|
||||
- Ingmar Runge enhanced libcurl's FTP engine to support the PRET command. This
|
||||
command is a special "hack" used by the drftpd server, but even though it is
|
||||
a custom extension I've deemed it fine to add to libcurl since this server
|
||||
seems to survive and people keep using it and want libcurl to support
|
||||
it. The new libcurl option is named CURLOPT_FTP_USE_PRET, and it is also
|
||||
usable from the curl tool with --ftp-pret. Using this option on a server
|
||||
that doesn't support this command will make libcurl fail.
|
||||
|
||||
I added test cases 1107 and 1108 to verify the functionality.
|
||||
|
||||
The PRET command is documented at
|
||||
http://www.drftpd.org/index.php/Distributed_PASV
|
||||
|
||||
Yang Tse (30 Dec 2009)
|
||||
- Steven M. Schweda improved VMS build system, and Craig A. Berry helped
|
||||
with the patch and testing.
|
||||
|
||||
Daniel Stenberg (26 Dec 2009)
|
||||
- Renato Botelho and Peter Pentchev brought a patch that makes the libcurl
|
||||
headers work correctly even on FreeBSD systems before v8.
|
||||
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2916915)
|
||||
|
||||
Daniel Stenberg (17 Dec 2009)
|
||||
- David Byron fixed Curl_ossl_cleanup to actually call ENGINE_cleanup when
|
||||
available.
|
||||
|
||||
- Follow-up fix for the proxy fix I did for Jon Nelson's bug. It turned out I
|
||||
was a bit too quick and broke test case 1101 with that change. The order of
|
||||
some of the setups is sensitive. I now changed it slightly again to make
|
||||
sure we do them in this order:
|
||||
|
||||
1 - parse URL and figure out what protocol is used in the URL
|
||||
2 - prepend protocol:// to URL if missing
|
||||
3 - parse name+password off URL, which needs to know what protocol is used
|
||||
(since only some allows for name+password in the URL)
|
||||
4 - figure out if a proxy should be used set by an option
|
||||
5 - if no proxy option, check proxy environment variables
|
||||
6 - run the protocol-specific setup function, which needs to have the proxy
|
||||
already set
|
||||
|
||||
Daniel Stenberg (15 Dec 2009)
|
||||
- Jon Nelson found a regression that turned out to be a flaw in how libcurl
|
||||
detects and uses proxies based on the environment variables. If the proxy
|
||||
was given as an explicit option it worked, but due to the setup order
|
||||
mistake proxies would not be used fine for a few protocols when picked up
|
||||
from '[protocol]_proxy'. Obviously this broke after 7.19.4. I now also added
|
||||
test case 1106 that verifies this functionality.
|
||||
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2913886)
|
||||
|
||||
Daniel Stenberg (12 Dec 2009)
|
||||
- IMAP, POP3 and SMTP support and their TLS versions (including IMAPS, POP3S
|
||||
and SMTPS) are now supported. The current state may not yet be solid, but
|
||||
the foundation is in place and the test suite has some initial support for
|
||||
these protocols. Work will now persue to make them nice libcurl citizens
|
||||
until release.
|
||||
|
||||
The work with supporting these new protocols was sponsored by
|
||||
networking4all.com - thanks!
|
||||
|
||||
Daniel Stenberg (10 Dec 2009)
|
||||
- Siegfried Gyuricsko found out that the curl manual said --retry would retry
|
||||
on FTP errors in the transient 5xx range. Transient FTP errors are in the
|
||||
4xx range. The code itself only tried on 5xx errors that occured _at login_.
|
||||
Now the retry code retries on all FTP transfer failures that ended with a
|
||||
4xx response.
|
||||
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2911279)
|
||||
|
||||
- Constantine Sapuntzakis figured out a case which would lead to libcurl
|
||||
accessing alredy freed memory and thus crash when using HTTPS (with
|
||||
OpenSSL), multi interface and the CURLOPT_DEBUGFUNCTION and a certain order
|
||||
of cleaning things up. I fixed it.
|
||||
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2905220)
|
||||
|
||||
Daniel Stenberg (7 Dec 2009)
|
||||
- Martin Storsjo made libcurl use the Expect: 100-continue header for posts
|
||||
with unknown size. Previously it was only used for posts with a known size
|
||||
larger than 1024 bytes.
|
||||
|
||||
Daniel Stenberg (1 Dec 2009)
|
||||
- If the Expect: 100-continue header has been set by the application through
|
||||
curl_easy_setopt with CURLOPT_HTTPHEADER, the library should set
|
||||
data->state.expect100header accordingly - the current code (in 7.19.7 at
|
||||
least) doesn't handle this properly. Martin Storsjo provided the fix!
|
||||
|
||||
Yang Tse (28 Nov 2009)
|
||||
- Added Diffie-Hellman parameters to several test harness certificate files in
|
||||
PEM format. Required by several stunnel versions used by our test harness.
|
||||
|
||||
Daniel Stenberg (28 Nov 2009)
|
||||
- Markus Koetter provided a polished and updated version of Chad Monroe's TFTP
|
||||
rework patch that now integrates TFTP properly into libcurl so that it can
|
||||
be used non-blocking with the multi interface and more. BLKSIZE also works.
|
||||
|
||||
The --tftp-blksize option was added to allow setting the TFTP BLKSIZE from
|
||||
the command line.
|
||||
|
||||
Daniel Stenberg (26 Nov 2009)
|
||||
- Extended and fixed the change I did on Dec 11 for the the progress
|
||||
meter/callback during FTP command/response sequences. It turned out it was
|
||||
really lame before and now the progress meter SHOULD get called at least
|
||||
once per second.
|
||||
|
||||
Daniel Stenberg (23 Nov 2009)
|
||||
- Bjorn Augustsson reported a bug which made curl not report any problems even
|
||||
though it failed to write a very small download to disk (done in a single
|
||||
fwrite call). It turned out to be because fwrite() returned success, but
|
||||
there was insufficient error-checking for the fclose() call which tricked
|
||||
curl to believe things were fine.
|
||||
|
||||
Yang Tse (23 Nov 2009)
|
||||
- David Byron modified Makefile.dist vc8 and vc9 targets in order to allow
|
||||
finer granularity control when generating src and lib makefiles.
|
||||
|
||||
Yang Tse (22 Nov 2009)
|
||||
- I modified configure to force removal of the curlbuild.h file included in
|
||||
distribution tarballs for use by non-configure systems. As intended, this
|
||||
would get overwriten when doing in-tree builds. But VPATH builds would end
|
||||
having two curlbuild.h files, one in the source tree and another in the
|
||||
build tree. With the modification I introduced 5 Nov 2009 this could become
|
||||
an issue when running libcurl's test suite.
|
||||
|
||||
Daniel Stenberg (20 Nov 2009)
|
||||
- Constantine Sapuntzakis identified a write after close, as the sockets were
|
||||
closed by libcurl before the SSL lib were shutdown and they may write to its
|
||||
socket. Detected to at least happen with OpenSSL builds.
|
||||
|
||||
- Jad Chamcham pointed out a bug with connection re-use. If a connection had
|
||||
CURLOPT_HTTPPROXYTUNNEL enabled over a proxy, a subsequent request using the
|
||||
same proxy with the tunnel option disabled would still wrongly re-use that
|
||||
previous connection and the outcome would only be badness.
|
||||
|
||||
Yang Tse (18 Nov 2009)
|
||||
- I modified the memory tracking system to make it intolerant with zero sized
|
||||
malloc(), calloc() and realloc() function calls.
|
||||
|
||||
Daniel Stenberg (17 Nov 2009)
|
||||
- Constantine Sapuntzakis provided another fix for the DNS cache that could
|
||||
end up with entries that wouldn't time-out:
|
||||
|
||||
1. Set up a first web server that redirects (307) to a http://server:port
|
||||
that's down
|
||||
2. Have curl connect to the first web server using curl multi
|
||||
|
||||
After the curl_easy_cleanup call, there will be curl dns entries hanging
|
||||
around with in_use != 0.
|
||||
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2891591)
|
||||
|
||||
- Marc Kleine-Budde fixed: curl saved the LDFLAGS set during configure into
|
||||
its pkg-config file. So -Wl stuff ended up in the .pc file, which is really
|
||||
bad, and breaks if there are multiple -Wl in our LDFLAGS (which are in
|
||||
PTXdist). bug #2893592 (http://curl.haxx.se/bug/view.cgi?id=2893592)
|
||||
|
||||
Kamil Dudka (15 Nov 2009)
|
||||
- David Byron improved the configure script to use pkg-config to find OpenSSL
|
||||
(and in particular the list of required libraries) even if a path is given
|
||||
as argument to --with-ssl
|
||||
|
||||
Yang Tse (15 Nov 2009)
|
||||
- I removed enable-thread / disable-thread configure option. These were only
|
||||
placebo options. The library is always built as thread safe as possible on
|
||||
every system.
|
||||
|
||||
Claes Jakobsson (14 Nov 2009)
|
||||
- curl-config now accepts '--configure' to see what arguments was
|
||||
passed to the configure script when building curl.
|
||||
|
||||
Daniel Stenberg (14 Nov 2009)
|
||||
- Claes Jakobsson restored the configure functionality to detect NSS when
|
||||
--with-nss is set but not "yes".
|
||||
|
||||
I think we can still improve that to check for pkg-config in that path etc,
|
||||
but at least this patch brings back the same functionality we had before.
|
||||
|
||||
- Camille Moncelier added support for the file type SSL_FILETYPE_ENGINE for
|
||||
the client certificate. It also disable the key name test as some engines
|
||||
can select a private key/cert automatically (When there is only one key
|
||||
and/or certificate on the hardware device used by the engine)
|
||||
|
||||
Yang Tse (14 Nov 2009)
|
||||
- Constantine Sapuntzakis provided the fix that ensures that an SSL connection
|
||||
won't be reused unless protection level for peer and host verification match.
|
||||
|
||||
I refactored how preprocessor symbol _THREAD_SAFE definition is done.
|
||||
|
||||
Kamil Dudka (12 Nov 2009)
|
||||
- Kevin Baughman provided a fix preventing libcurl-NSS from crash on doubly
|
||||
closed NSPR descriptor. The issue was hard to find, reported several times
|
||||
before and always closed unresolved. More info at the RH bug:
|
||||
https://bugzilla.redhat.com/534176
|
||||
|
||||
- libcurl-NSS now tries to reconnect with TLS disabled in case it detects
|
||||
a broken TLS server. However it does not happen if SSL version is selected
|
||||
manually. The approach was originally taken from PSM. Kaspar Brand helped me
|
||||
to complete the patch. Original bug reports:
|
||||
https://bugzilla.redhat.com/525496
|
||||
https://bugzilla.redhat.com/527771
|
||||
|
||||
Yang Tse (12 Nov 2009)
|
||||
- I modified configure script to make the getaddrinfo function check also
|
||||
verify if the function is thread safe.
|
||||
|
||||
Yang Tse (11 Nov 2009)
|
||||
- Marco Maggi reported that compilation failed when configured --with-gssapi
|
||||
and GNU GSS installed due to a missing mutual exclusion of header files in
|
||||
the Kerberos 5 code path. He also verified that my patch worked for him.
|
||||
|
||||
Daniel Stenberg (11 Nov 2009)
|
||||
- Constantine Sapuntzakis posted bug #2891595
|
||||
(http://curl.haxx.se/bug/view.cgi?id=2891595) which identified how an entry
|
||||
in the DNS cache would linger too long if the request that added it was in
|
||||
use that long. He also provided the patch that now makes libcurl capable of
|
||||
still doing a request while the DNS hash entry may get timed out.
|
||||
|
||||
- Christian Schmitz noticed that the progress meter/callback was not properly
|
||||
used during the FTP connection phase (after the actual TCP connect), while
|
||||
it of course should be. I also made the speed check get called correctly so
|
||||
that really slow servers will trigger that properly too.
|
||||
|
||||
Kamil Dudka (5 Nov 2009)
|
||||
- Dropped misleading timeouts in libcurl-NSS and made sure the SSL socket works
|
||||
in non-blocking mode.
|
||||
|
||||
Yang Tse (5 Nov 2009)
|
||||
- I removed leading 'curl' path on the 'curlbuild.h' include statement in
|
||||
curl.h, adjusting auto-makefiles include path, to enhance portability to
|
||||
OS's without an orthogonal directory tree structure such as OS/400.
|
||||
|
||||
Daniel Stenberg (4 Nov 2009)
|
||||
- I fixed several problems with the transfer progress meter. It showed the
|
||||
wrong percentage for small files, most notable for <1000 bytes and could
|
||||
easily end up showing more than 100% at the end. It also didn't show any
|
||||
percentage, transfer size or estimated transfer times when transferring
|
||||
less than 100 bytes.
|
||||
|
||||
Version 7.19.7 (4 November 2009)
|
||||
|
||||
Daniel Stenberg (2 Nov 2009)
|
||||
|
@@ -263,15 +263,25 @@ linux: all
|
||||
linux-ssl: ssl
|
||||
|
||||
|
||||
vc8:
|
||||
@echo "generate VC8 makefiles"
|
||||
vc8: lib/Makefile.vc8 src/Makefile.vc8
|
||||
|
||||
lib/Makefile.vc8: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/wsock32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" lib/Makefile.vc6 > lib/Makefile.vc8
|
||||
|
||||
src/Makefile.vc8: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/wsock32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" src/Makefile.vc6 > src/Makefile.vc8
|
||||
|
||||
# VC9 makefiles are for use with VS2008
|
||||
vc9:
|
||||
@echo "generate VC9 makefiles"
|
||||
vc9: lib/Makefile.vc9 src/Makefile.vc9
|
||||
|
||||
lib/Makefile.vc9: lib/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" lib/Makefile.vc6 > lib/Makefile.vc9
|
||||
|
||||
src/Makefile.vc9: src/Makefile.vc6
|
||||
@echo "generate $@"
|
||||
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/wsock32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" src/Makefile.vc6 > src/Makefile.vc9
|
||||
|
||||
ca-bundle: lib/mk-ca-bundle.pl
|
||||
|
101
RELEASE-NOTES
101
RELEASE-NOTES
@@ -1,51 +1,59 @@
|
||||
Curl and libcurl 7.19.7
|
||||
Curl and libcurl 7.20.0
|
||||
|
||||
Public curl releases: 113
|
||||
Command line options: 132
|
||||
curl_easy_setopt() options: 163
|
||||
Public curl releases: 114
|
||||
Command line options: 136
|
||||
curl_easy_setopt() options: 174
|
||||
Public functions in libcurl: 58
|
||||
Known libcurl bindings: 38
|
||||
Contributors: 732
|
||||
Known libcurl bindings: 39
|
||||
Contributors: 761
|
||||
|
||||
This release includes the following changes:
|
||||
|
||||
o -T. is now for non-blocking uploading from stdin
|
||||
o SYST handling on FTP for OS/400 FTP server cases
|
||||
o libcurl refuses to read a single HTTP header longer than 100K
|
||||
o added the --crlfile option to curl
|
||||
o support SSL_FILETYPE_ENGINE for client certificate
|
||||
o curl-config can now show the arguments used when building curl
|
||||
o non-blocking TFTP
|
||||
o send Expect: 100-continue for POSTs with unknown sizes
|
||||
o added support for IMAP(S), POP3(S), SMTP(S) and RTSP
|
||||
o added new curl_easy_setopt() options for SMTP and RTSP
|
||||
o added --mail-from and --mail-rcpt for SMTP
|
||||
o VMS build system enhancements
|
||||
o added support for the PRET ftp command
|
||||
o curl supports --ssl and --ssl-reqd
|
||||
o added -J/--remote-header-name for using server-provided filename with -O
|
||||
o enhanced asynchronous DNS lookups
|
||||
o symbol CURL_FORMAT_OFF_T is obsoleted
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o The windows makefiles work again
|
||||
o libcurl-NSS acknowledges verifyhost
|
||||
o SIGSEGV when pipelined pipe unexpectedly breaks
|
||||
o data corruption issue with re-connected transfers
|
||||
o use after free if we're completed but easy_conn not NULL (pipelined)
|
||||
o missing strdup() return code check
|
||||
o CURLOPT_PROXY_TRANSFER_MODE could pass along wrong syntax
|
||||
o configure --with-gnutls=PATH fixed
|
||||
o ftp response reader bug on failed control connections
|
||||
o improved NSS error message on failed host name verifications
|
||||
o ftp NOBODY on re-used connection hang
|
||||
o configure uses pkg-config for cross-compiles as well
|
||||
o improved NSS detection in configure
|
||||
o cookie expiry date at 1970-jan-1 00:00:00
|
||||
o libcurl-OpenSSL failed to verify some certs with Subject Alternative Name
|
||||
o libcurl-OpenSSL can load CRL files with more than one certificate inside
|
||||
o received cookies without explicit path got saved wrong if the URL had a
|
||||
query part
|
||||
o don't shrink SO_SNDBUF on windows for those who have it set large already
|
||||
o connect next bug
|
||||
o invalid file name characters handling on Windows
|
||||
o double close() on the primary socket with libcurl-NSS
|
||||
o GSS negotiate infinite loop on bad credentials
|
||||
o memory leak in SCP/SFTP connections
|
||||
o use pkg-config to find out libssh2 installation details in configure
|
||||
o unparsable cookie expire dates make cookies get treated as session coookies
|
||||
o POST with Digest authentication and "Transfer-Encoding: chunked"
|
||||
o SCP connection re-use with wrong auth
|
||||
o CURLINFO_CONTENT_LENGTH_DOWNLOAD for 0 bytes transfers
|
||||
o CURLINFO_SIZE_DOWNLOAD for ldap transfers (-w size_download)
|
||||
o progress meter percentage and transfer time estimates fixes
|
||||
o portability enhancement for OS's without orthogonal directory tree structure
|
||||
o progress meter/callback during FTP connection
|
||||
o DNS cache timeout while transfer in progress
|
||||
o compilation when configured --with-gssapi having GNU GSS installed
|
||||
o SSL connection reused with mismatched protection level
|
||||
o configure --with-nss is set but not "yes"
|
||||
o don't store LDFLAGS in pkg-config file
|
||||
o never-pruned DNS cached entries
|
||||
o HTTP proxy tunnel re-used connection even if tunnel got disabled
|
||||
o SSL lib post-close write
|
||||
o curl failed to report write errors for tiny failed downloads
|
||||
o TFTP BLKSIZE
|
||||
o Expect: 100-continue handling when set by the application
|
||||
o multi interface with OpenSSL read already freed memory when closing down
|
||||
o --retry didn't do right for FTP transient errors
|
||||
o some *_proxy environment variables didn't function
|
||||
o libcurl-OpenSSL engine cleanup
|
||||
o header include fix for FreeBSD versions before v8
|
||||
o fragment part of URLs are no longer sent to the server
|
||||
o progress callback called repeatedly with c-ares for resolving
|
||||
o OpenSSL session id ref count leak
|
||||
o progress callback called repeatedly during slow connects
|
||||
o curl_multi_fdset() would return -1 too often during SCP/SFTP transfers
|
||||
o FTP file size checks with ASCII transfers
|
||||
o HTTP Cookie: headers sort cookies based on specified path lengths
|
||||
o CURLM_CALL_MULTI_PERFORM fix for multi socket timeout calls
|
||||
o libcurl data callback excessive length:
|
||||
http://curl.haxx.se/docs/adv_20100209.html
|
||||
|
||||
This release includes the following known bugs:
|
||||
|
||||
@@ -54,11 +62,12 @@ This release includes the following known bugs:
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
Karl Moerder, Kamil Dudka, Krister Johansen, Andre Guibert de Bruet,
|
||||
Michal Marek, Eric Wong, Guenter Knauf, Peter Sylvester, Daniel Johnson,
|
||||
Claes Jakobsson, Sven Anders, Chris Mumford, John P. McCaskey,
|
||||
Constantine Sapuntzakis, Michael Stillwell, Tom Mueller, Dan Fandrich,
|
||||
Kevin Baughman, John Dennis, Ray Dassen, Johan van Selst, Dima Barsky,
|
||||
Liza Alenchery, Gabriel Kuri, Stan van de Burgt, Didier Brisebourg
|
||||
Yang Tse, Kamil Dudka, Christian Schmitz, Constantine Sapuntzakis,
|
||||
Marco Maggi, Camille Moncelier, Claes Jakobsson, Kevin Baughman,
|
||||
Marc Kleine-Budde, Jad Chamcham, Bjorn Augustsson, David Byron,
|
||||
Markus Koetter, Chad Monroe, Martin Storsjo, Siegfried Gyuricsko,
|
||||
Jon Nelson, Julien Chaffraix, Renato Botelho, Peter Pentchev, Ingmar Runge,
|
||||
Johan van Selst, Charles Kerr, Gil Weber, David McCreedy, Chris Conroy,
|
||||
Bjorn Stenberg, Mike Crowe, Joshua Kwan, Daniel Fandrich, Wesley Miaw
|
||||
|
||||
Thanks! (and sorry if I forgot to mention someone)
|
||||
|
11
TODO-RELEASE
11
TODO-RELEASE
@@ -1,4 +1,4 @@
|
||||
To be addressed in 7.19.8 (planned release: January 2010)
|
||||
To be addressed in 7.20.0 (planned release: January 2010)
|
||||
=========================
|
||||
|
||||
244 - patch for [out] parameters
|
||||
@@ -12,11 +12,4 @@ To be addressed in 7.19.8 (planned release: January 2010)
|
||||
|
||||
253 - add option to disable SNI for TLS handshakes
|
||||
|
||||
257 - bug #2891595 DNS cache
|
||||
|
||||
258 - bug #2891591 Curl_dns_entry
|
||||
|
||||
259 - Avoding connection re-use when using CURLOPT_HTTPPROXYTUNNEL
|
||||
|
||||
260 -
|
||||
|
||||
261 -
|
25
acinclude.m4
25
acinclude.m4
@@ -3190,7 +3190,22 @@ AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
|
||||
esac
|
||||
])
|
||||
|
||||
dnl CURL_CHECK_PKGCONFIG ($module)
|
||||
dnl CURL_EXPORT_PCDIR ($pcdir)
|
||||
dnl ------------------------
|
||||
dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
|
||||
dnl
|
||||
dnl we need this macro since pkg-config distinguishes among empty and unset
|
||||
dnl variable while checking PKG_CONFIG_LIBDIR
|
||||
dnl
|
||||
|
||||
AC_DEFUN([CURL_EXPORT_PCDIR], [
|
||||
if test -n "$1"; then
|
||||
PKG_CONFIG_LIBDIR="$1"
|
||||
export PKG_CONFIG_LIBDIR
|
||||
fi
|
||||
])
|
||||
|
||||
dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
|
||||
dnl ------------------------
|
||||
dnl search for the pkg-config tool (if not cross-compiling). Set the PKGCONFIG
|
||||
dnl variable to hold the path to it, or 'no' if not found/present.
|
||||
@@ -3198,6 +3213,8 @@ dnl
|
||||
dnl If pkg-config is present, check that it has info about the $module or
|
||||
dnl return "no" anyway!
|
||||
dnl
|
||||
dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
|
||||
dnl
|
||||
|
||||
AC_DEFUN([CURL_CHECK_PKGCONFIG], [
|
||||
|
||||
@@ -3216,8 +3233,10 @@ AC_DEFUN([CURL_CHECK_PKGCONFIG], [
|
||||
if test x$PKGCONFIG != xno; then
|
||||
AC_MSG_CHECKING([for $1 options with pkg-config])
|
||||
dnl ask pkg-config about $1
|
||||
$PKGCONFIG --exists $1
|
||||
if test "$?" -ne "0"; then
|
||||
itexists=`CURL_EXPORT_PCDIR([$2]) dnl
|
||||
$PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1`
|
||||
|
||||
if test -z "$itexists"; then
|
||||
dnl pkg-config does not have info about the given module! set the
|
||||
dnl variable to 'no'
|
||||
PKGCONFIG="no"
|
||||
|
@@ -3,6 +3,7 @@
|
||||
*.pdf
|
||||
.deps
|
||||
.libs
|
||||
MSVC*
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
@@ -30,4 +31,5 @@ libtool
|
||||
ltmain.sh
|
||||
man3
|
||||
missing
|
||||
msvc*
|
||||
stamp-h*
|
||||
|
67
ares/CHANGES
67
ares/CHANGES
@@ -1,5 +1,64 @@
|
||||
Changelog for the c-ares project
|
||||
|
||||
* 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
|
||||
|
||||
@@ -117,15 +176,15 @@
|
||||
- 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.6.1 can still survive without calling these functions. Read all
|
||||
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.6.1 on all systems.
|
||||
curl/libcurl 7.19.5 is fully compatible with c-ares 1.7.0 on all systems.
|
||||
|
||||
In order to use c-ares 1.6.1 with curl/libcurl on Win32/64 systems it is
|
||||
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.6.1 with a curl/libcurl version less
|
||||
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)
|
||||
|
@@ -13,6 +13,7 @@ ACLOCAL_AMFLAGS = -I m4
|
||||
# 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
|
||||
@@ -21,11 +22,12 @@ ACLOCAL_AMFLAGS = -I m4
|
||||
# $(top_srcdir) is for c-ares's ares_setup.h and other "c-ares-private" files
|
||||
|
||||
if CURLDEBUG
|
||||
INCLUDES = -I$(top_builddir)/../include \
|
||||
-I$(top_srcdir)/../include \
|
||||
-I$(top_builddir)/../lib \
|
||||
-I$(top_srcdir)/../lib \
|
||||
-I$(top_builddir) \
|
||||
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) \
|
||||
@@ -50,9 +52,9 @@ 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.vc6 $(man_MANS) $(MSVCFILES) \
|
||||
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
|
||||
TODO ares_build.h.in $(PDFPAGES) cares.rc README.msvc
|
||||
|
||||
CLEANFILES = $(PDFPAGES) $(HTMLPAGES)
|
||||
|
||||
@@ -108,14 +110,17 @@ libcares_ladir = $(includedir)
|
||||
libcares_la_HEADERS = ares.h ares_version.h ares_dns.h \
|
||||
ares_build.h ares_rules.h
|
||||
|
||||
ahost_SOURCES = ahost.c ares_getopt.c ares_getopt.h
|
||||
ahost_SOURCES = ahost.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
|
||||
ahost_LDADD = $(top_builddir)/libcares.la
|
||||
ahost_CFLAGS = $(AM_CFLAGS)
|
||||
|
||||
adig_SOURCES = adig.c ares_getopt.c ares_getopt.h
|
||||
adig_SOURCES = adig.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
|
||||
adig_LDADD = $(top_builddir)/libcares.la
|
||||
adig_CFLAGS = $(AM_CFLAGS)
|
||||
|
||||
acountry_SOURCES = acountry.c ares_getopt.c ares_getopt.h
|
||||
acountry_SOURCES = acountry.c $(SAMPLESOURCES) $(SAMPLEHEADERS)
|
||||
acountry_LDADD = $(top_builddir)/libcares.la
|
||||
acountry_CFLAGS = $(AM_CFLAGS)
|
||||
|
||||
SOURCEDMANDIR = man3
|
||||
SOURCEDMANPAGES = ares_init.3
|
||||
|
@@ -4,6 +4,7 @@ CSOURCES = ares__close_sockets.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 \
|
||||
@@ -41,6 +42,7 @@ CSOURCES = ares__close_sockets.c \
|
||||
|
||||
HHEADERS = ares.h \
|
||||
ares_build.h \
|
||||
ares_data.h \
|
||||
ares_dns.h \
|
||||
ares_ipv6.h \
|
||||
ares_library_init.h \
|
||||
@@ -65,6 +67,7 @@ MANPAGES = ares_cancel.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_gethostbyaddr.3 \
|
||||
@@ -100,6 +103,7 @@ HTMLPAGES = ares_cancel.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_gethostbyaddr.html \
|
||||
@@ -135,6 +139,7 @@ PDFPAGES = ares_cancel.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_gethostbyaddr.pdf \
|
||||
@@ -163,3 +168,12 @@ PDFPAGES = ares_cancel.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
|
||||
|
473
ares/Makefile.msvc
Normal file
473
ares/Makefile.msvc
Normal file
@@ -0,0 +1,473 @@
|
||||
# $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.
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
#
|
||||
# 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
|
||||
!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
|
@@ -1,275 +0,0 @@
|
||||
# $Id$
|
||||
#
|
||||
# C-ares makefile for MSVC6+
|
||||
# G. Vanem <gvanem@broadpark.no>.
|
||||
#
|
||||
|
||||
CFG_MODEL = MD
|
||||
DEBUG_MODEL = d
|
||||
USE_WATT32 = 0
|
||||
|
||||
#
|
||||
# Configurations:
|
||||
# -MD - msvcrt.dll, threads, release (normal)
|
||||
# -MDd - msvcrtd.dll, threads, debug
|
||||
# -ML - libc, no threads, release (not available on VC-2008+)
|
||||
# -MLd - libc, no threads, debug (not available on VC-2008+)
|
||||
# -MT - libc, threads, release
|
||||
# -MTd - libc, threads, debug
|
||||
|
||||
CC = cl
|
||||
|
||||
CFLAGS = -nologo -$(CFG_MODEL)$(DEBUG_MODEL) -W3 -Yd -Zi
|
||||
LDFLAGS = -machine:i386 -map
|
||||
|
||||
OBJ_DIR = VC6_obj
|
||||
DEF_FILE = cares.def
|
||||
|
||||
!if "$(USE_WATT32)" == "1"
|
||||
CFLAGS = $(CFLAGS) -UWIN32 -DWATT32 -I$(WATT_ROOT)\inc
|
||||
EX_LIBS = $(WATT_ROOT)\lib\wattcpvc_imp.lib
|
||||
|
||||
!else
|
||||
CFLAGS = $(CFLAGS) -DWIN32 -DWIN32_LEAN_AND_MEAN
|
||||
EX_LIBS = advapi32.lib ws2_32.lib
|
||||
!endif
|
||||
|
||||
!if "$(DEBUG_MODEL)" == "d"
|
||||
CFLAGS = $(CFLAGS) -DDEBUGBUILD -D_DEBUG -GZ
|
||||
LDFLAGS = $(LDFLAGS) -debug -fixed:no
|
||||
|
||||
!else
|
||||
CFLAGS = $(CFLAGS) -O2 -Og
|
||||
LDFLAGS = $(LDFLAGS) -release
|
||||
!endif
|
||||
|
||||
CFLAGS = $(CFLAGS) -I.\.
|
||||
|
||||
OBJECTS = $(OBJ_DIR)\ares_fds.obj \
|
||||
$(OBJ_DIR)\ares_process.obj \
|
||||
$(OBJ_DIR)\ares_free_hostent.obj \
|
||||
$(OBJ_DIR)\ares_query.obj \
|
||||
$(OBJ_DIR)\ares__close_sockets.obj \
|
||||
$(OBJ_DIR)\ares_free_string.obj \
|
||||
$(OBJ_DIR)\ares_search.obj \
|
||||
$(OBJ_DIR)\ares__get_hostent.obj \
|
||||
$(OBJ_DIR)\ares_gethostbyaddr.obj \
|
||||
$(OBJ_DIR)\ares_getsock.obj \
|
||||
$(OBJ_DIR)\ares_send.obj \
|
||||
$(OBJ_DIR)\ares__read_line.obj \
|
||||
$(OBJ_DIR)\ares_gethostbyname.obj \
|
||||
$(OBJ_DIR)\ares_getnameinfo.obj \
|
||||
$(OBJ_DIR)\ares_strcasecmp.obj \
|
||||
$(OBJ_DIR)\ares_strerror.obj \
|
||||
$(OBJ_DIR)\ares_cancel.obj \
|
||||
$(OBJ_DIR)\ares_init.obj \
|
||||
$(OBJ_DIR)\ares_library_init.obj \
|
||||
$(OBJ_DIR)\ares_llist.obj \
|
||||
$(OBJ_DIR)\ares_timeout.obj \
|
||||
$(OBJ_DIR)\ares__timeval.obj \
|
||||
$(OBJ_DIR)\ares_destroy.obj \
|
||||
$(OBJ_DIR)\ares_mkquery.obj \
|
||||
$(OBJ_DIR)\ares_version.obj \
|
||||
$(OBJ_DIR)\ares_expand_name.obj \
|
||||
$(OBJ_DIR)\ares_parse_a_reply.obj \
|
||||
$(OBJ_DIR)\ares_parse_aaaa_reply.obj \
|
||||
$(OBJ_DIR)\ares_parse_ns_reply.obj \
|
||||
$(OBJ_DIR)\ares_parse_srv_reply.obj \
|
||||
$(OBJ_DIR)\windows_port.obj \
|
||||
$(OBJ_DIR)\ares_expand_string.obj \
|
||||
$(OBJ_DIR)\ares_parse_ptr_reply.obj \
|
||||
$(OBJ_DIR)\ares_writev.obj \
|
||||
$(OBJ_DIR)\bitncmp.obj \
|
||||
$(OBJ_DIR)\inet_net_pton.obj \
|
||||
$(OBJ_DIR)\inet_ntop.obj
|
||||
|
||||
all: $(OBJ_DIR) cares.lib cares.dll cares_imp.lib ahost.exe adig.exe acountry.exe
|
||||
@echo Welcome to c-ares library and examples
|
||||
|
||||
$(OBJ_DIR):
|
||||
mkdir $(OBJ_DIR)
|
||||
|
||||
cares.lib: $(OBJ_DIR) $(OBJECTS)
|
||||
lib -nologo -out:$@ $(OBJECTS)
|
||||
|
||||
cares_imp.lib cares.dll: $(OBJ_DIR) $(DEF_FILE) $(OBJECTS)
|
||||
link $(LDFLAGS) -dll -implib:cares_imp.lib -out:cares.dll \
|
||||
-def:$(DEF_FILE) $(OBJECTS) $(EX_LIBS)
|
||||
|
||||
$(DEF_FILE): $(OBJECTS) Makefile.VC6
|
||||
@echo ; Generated. DO NOT EDIT > $@
|
||||
@echo LIBRARY cares.dll >> $@
|
||||
@echo EXPORTS >> $@
|
||||
@echo ares_cancel >> $@
|
||||
@echo ares_destroy >> $@
|
||||
@echo ares_expand_name >> $@
|
||||
@echo ares_expand_string >> $@
|
||||
@echo ares_fds >> $@
|
||||
@echo ares_free_hostent >> $@
|
||||
@echo ares_free_string >> $@
|
||||
@echo ares_gethostbyaddr >> $@
|
||||
@echo ares_gethostbyname >> $@
|
||||
@echo ares_getsock >> $@
|
||||
@echo ares_init >> $@
|
||||
@echo ares_init_options >> $@
|
||||
@echo ares_library_init >> $@
|
||||
@echo ares_library_cleanup >> $@
|
||||
@echo ares_mkquery >> $@
|
||||
@echo ares_parse_a_reply >> $@
|
||||
@echo ares_parse_ptr_reply >> $@
|
||||
@echo ares_parse_ns_reply >> $@
|
||||
@echo ares_process >> $@
|
||||
@echo ares_process_fd >> $@
|
||||
@echo ares_query >> $@
|
||||
@echo ares_search >> $@
|
||||
@echo ares_strerror >> $@
|
||||
@echo ares_strncasecmp >> $@
|
||||
@echo ares_strcasecmp >> $@
|
||||
@echo ares_timeout >> $@
|
||||
@echo ares_version >> $@
|
||||
@echo ares_inet_net_pton >> $@
|
||||
@echo ares_inet_ntop >> $@
|
||||
@echo ares_inet_pton >> $@
|
||||
@echo ares_getnameinfo >> $@
|
||||
@echo ares_parse_aaaa_reply >> $@
|
||||
!if "$(USE_WATT32)" == "0"
|
||||
@echo ares_writev >> $@
|
||||
!endif
|
||||
|
||||
ahost.exe: $(OBJ_DIR) $(OBJ_DIR)\ahost.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib
|
||||
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\ahost.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib $(EX_LIBS)
|
||||
|
||||
adig.exe: $(OBJ_DIR) $(OBJ_DIR)\adig.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib
|
||||
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\adig.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib $(EX_LIBS)
|
||||
|
||||
acountry.exe: $(OBJ_DIR) $(OBJ_DIR)\acountry.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib
|
||||
link $(LDFLAGS) -out:$@ $(OBJ_DIR)\acountry.obj $(OBJ_DIR)\ares_getopt.obj cares_imp.lib $(EX_LIBS)
|
||||
|
||||
clean:
|
||||
- del $(OBJ_DIR)\*.obj *.ilk *.pdb *.pbt *.pbi *.pbo *._xe *.map
|
||||
|
||||
vclean realclean: clean
|
||||
- del $(DEF_FILE) cares.lib cares_imp.* cares.dll
|
||||
- del ahost.exe adig.exe acountry.exe
|
||||
- rd $(OBJ_DIR)
|
||||
|
||||
.c{$(OBJ_DIR)}.obj:
|
||||
$(CC) $(CFLAGS) -Fo$*.obj -c $<
|
||||
|
||||
#
|
||||
# Copyright "gcc -MM .."
|
||||
#
|
||||
$(OBJ_DIR)\ares_fds.obj: ares_fds.c ares_setup.h setup_once.h ares.h ares_private.h \
|
||||
ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_process.obj: ares_process.c ares_setup.h setup_once.h nameser.h \
|
||||
ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_free_hostent.obj: ares_free_hostent.c ares_setup.h setup_once.h \
|
||||
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_query.obj: ares_query.c ares_setup.h setup_once.h nameser.h \
|
||||
ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares__close_sockets.obj: ares__close_sockets.c ares_setup.h setup_once.h \
|
||||
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_free_string.obj: ares_free_string.c ares_setup.h setup_once.h \
|
||||
ares.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_search.obj: ares_search.c ares_setup.h setup_once.h nameser.h \
|
||||
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares__get_hostent.obj: ares__get_hostent.c ares_setup.h setup_once.h \
|
||||
ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_gethostbyaddr.obj: ares_gethostbyaddr.c ares_setup.h setup_once.h \
|
||||
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h \
|
||||
ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_send.obj: ares_send.c ares_setup.h setup_once.h nameser.h ares.h \
|
||||
ares_dns.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares__read_line.obj: ares__read_line.c ares_setup.h setup_once.h ares.h \
|
||||
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_gethostbyname.obj: ares_gethostbyname.c ares_setup.h setup_once.h \
|
||||
nameser.h ares.h ares_private.h ares_ipv6.h inet_net_pton.h bitncmp.h \
|
||||
ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_strcasecmp.obj: ares_strcasecmp.c ares_setup.h setup_once.h ares.h \
|
||||
ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_strerror.obj: ares_strerror.c ares_setup.h setup_once.h ares.h \
|
||||
ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_cancel.obj: ares_cancel.c ares_setup.h setup_once.h ares.h \
|
||||
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_init.obj: ares_init.c ares_setup.h setup_once.h nameser.h ares.h \
|
||||
ares_private.h ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h \
|
||||
ares_library_init.h
|
||||
|
||||
$(OBJ_DIR)\ares_timeout.obj: ares_timeout.c ares_setup.h setup_once.h ares.h \
|
||||
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares__timeval.obj: ares__timeval.c ares_setup.h setup_once.h ares.h \
|
||||
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_destroy.obj: ares_destroy.c ares_setup.h setup_once.h ares.h \
|
||||
ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_mkquery.obj: ares_mkquery.c ares_setup.h setup_once.h nameser.h \
|
||||
ares.h ares_dns.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_version.obj: ares_version.c ares_setup.h setup_once.h ares.h \
|
||||
ares_version.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_expand_name.obj: ares_expand_name.c ares_setup.h setup_once.h \
|
||||
nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_parse_a_reply.obj: ares_parse_a_reply.c ares_setup.h setup_once.h \
|
||||
nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h ares_build.h \
|
||||
ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\windows_port.obj: windows_port.c ares_setup.h setup_once.h nameser.h \
|
||||
ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_expand_string.obj: ares_expand_string.c ares_setup.h setup_once.h \
|
||||
nameser.h ares.h ares_private.h ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_parse_ptr_reply.obj: ares_parse_ptr_reply.c ares_setup.h \
|
||||
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \
|
||||
ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_parse_aaaa_reply.obj: ares_parse_aaaa_reply.c ares_setup.h \
|
||||
setup_once.h nameser.h ares.h ares_dns.h inet_net_pton.h ares_private.h \
|
||||
ares_ipv6.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_parse_ns_reply.obj: ares_parse_ns_reply.c ares_setup.h \
|
||||
setup_once.h nameser.h ares.h ares_dns.h ares_private.h ares_ipv6.h \
|
||||
ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_getnameinfo.obj: ares_getnameinfo.c ares_setup.h setup_once.h \
|
||||
nameser.h ares.h ares_private.h ares_ipv6.h inet_ntop.h ares_build.h \
|
||||
ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\inet_net_pton.obj: inet_net_pton.c ares_setup.h setup_once.h nameser.h \
|
||||
ares_ipv6.h inet_net_pton.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\bitncmp.obj: bitncmp.c bitncmp.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c ares_setup.h setup_once.h nameser.h \
|
||||
ares_ipv6.h inet_ntop.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_getopt.obj: ares_getopt.c ares_getopt.h ares_build.h \
|
||||
ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_library_init.obj: ares_library_init.c ares_setup.h setup_once.h \
|
||||
ares.h ares_private.h ares_library_init.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_llist.obj: ares_llist.c ares_setup.h setup_once.h ares.h \
|
||||
ares_private.h ares_llist.h ares_build.h ares_rules.h
|
||||
|
||||
$(OBJ_DIR)\ares_writev.obj: ares_writev.c ares_setup.h setup_once.h ares.h \
|
||||
ares_writev.h ares_build.h ares_rules.h
|
@@ -27,7 +27,7 @@ You'll find all c-ares details and news here:
|
||||
|
||||
NOTES FOR C-ARES HACKERS
|
||||
|
||||
The following notes apply to c-ares version 1.6.1 and later.
|
||||
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.
|
||||
|
119
ares/README.msvc
Normal file
119
ares/README.msvc
Normal file
@@ -0,0 +1,119 @@
|
||||
$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!
|
||||
|
@@ -1,31 +1,17 @@
|
||||
This is what's new and changed in the c-ares 1.7.0 release:
|
||||
This is what's new and changed in the c-ares 1.7.1 release:
|
||||
|
||||
Changed:
|
||||
|
||||
o in6_addr is not used in ares.h anymore, but a private ares_in6_addr is
|
||||
instead declared and used
|
||||
o ares_gethostbyname() now supports 'AF_UNSPEC' as a family for resolving
|
||||
either AF_INET6 or AF_INET
|
||||
o a build-time configured ares_socklen_t is now used instead of socklen_t
|
||||
o new ares_library_init() and ares_library_cleanup() functions
|
||||
o new --enable-curldebug configure option
|
||||
o ARES_ECANCELLED is now sent as reason for ares_cancel()
|
||||
o added ares_parse_srv_reply()
|
||||
o added ares_parse_txt_reply()
|
||||
o new --enable-symbol-hiding configure option
|
||||
o
|
||||
|
||||
Fixed:
|
||||
|
||||
o ares_parse_*_reply() functions now return ARES_EBADRESP instead of
|
||||
ARES_EBADNAME if the name in the response failed to decode
|
||||
o only expose/export symbols starting with 'ares_'
|
||||
o fix \Device\TCP handle leaks triggered by buggy iphlpapi.dll
|
||||
o init without internet gone no longer fails
|
||||
o out of bounds memory overwrite triggered with malformed /etc/hosts file
|
||||
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:
|
||||
|
||||
Phil Blundell, Japheth Cleaver, Yang Tse, Gregor Jasny, Joshua Kwan,
|
||||
Timo Teras, Jakub Hrozek, John Engelhart
|
||||
Ingmar Runge, Laszlo Tamas Szabo, Yang Tse, Tommie Gannert
|
||||
|
||||
Have fun!
|
||||
|
@@ -199,7 +199,7 @@ int main(int argc, char **argv)
|
||||
*/
|
||||
static void wait_ares(ares_channel channel)
|
||||
{
|
||||
while (1)
|
||||
for (;;)
|
||||
{
|
||||
struct timeval *tvp, tv;
|
||||
fd_set read_fds, write_fds;
|
||||
|
@@ -157,7 +157,6 @@ static const char *opcodes[] = {
|
||||
"UPDATEA", "UPDATED", "UPDATEDA", "UPDATEM", "UPDATEMA",
|
||||
"ZONEINIT", "ZONEREF"
|
||||
};
|
||||
struct in_addr inaddr;
|
||||
|
||||
static const char *rcodes[] = {
|
||||
"NOERROR", "FORMERR", "SERVFAIL", "NXDOMAIN", "NOTIMP", "REFUSED",
|
||||
@@ -165,6 +164,8 @@ static const char *rcodes[] = {
|
||||
"(unknown)", "(unknown)", "(unknown)", "(unknown)", "NOCHANGE"
|
||||
};
|
||||
|
||||
static struct in_addr inaddr;
|
||||
|
||||
static void callback(void *arg, int status, int timeouts,
|
||||
unsigned char *abuf, int alen);
|
||||
static const unsigned char *display_question(const unsigned char *aptr,
|
||||
@@ -321,7 +322,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* Wait for all queries to complete. */
|
||||
while (1)
|
||||
for (;;)
|
||||
{
|
||||
FD_ZERO(&read_fds);
|
||||
FD_ZERO(&write_fds);
|
||||
|
@@ -140,7 +140,7 @@ int main(int argc, char **argv)
|
||||
}
|
||||
|
||||
/* Wait for all queries to complete. */
|
||||
while (1)
|
||||
for (;;)
|
||||
{
|
||||
FD_ZERO(&read_fds);
|
||||
FD_ZERO(&write_fds);
|
||||
|
53
ares/ares.h
53
ares/ares.h
@@ -119,14 +119,14 @@ extern "C" {
|
||||
#define ARES_EBADHINTS 20
|
||||
|
||||
/* Uninitialized library error code */
|
||||
#define ARES_ENOTINITIALIZED 21 /* introduced in 1.6.1 */
|
||||
#define ARES_ENOTINITIALIZED 21 /* introduced in 1.7.0 */
|
||||
|
||||
/* ares_library_init error codes */
|
||||
#define ARES_ELOADIPHLPAPI 22 /* introduced in 1.6.1 */
|
||||
#define ARES_EADDRGETNETWORKPARAMS 23 /* introduced in 1.6.1 */
|
||||
#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.6.1 */
|
||||
#define ARES_ECANCELLED 24 /* introduced in 1.7.0 */
|
||||
|
||||
/* Flag values */
|
||||
#define ARES_FLAG_USEVC (1 << 0)
|
||||
@@ -314,9 +314,9 @@ CARES_EXTERN void ares_destroy(ares_channel channel);
|
||||
|
||||
CARES_EXTERN void ares_cancel(ares_channel channel);
|
||||
|
||||
void ares_set_socket_callback(ares_channel channel,
|
||||
ares_sock_create_callback callback,
|
||||
void *user_data);
|
||||
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,
|
||||
@@ -404,10 +404,10 @@ CARES_EXTERN int ares_expand_string(const unsigned char *encoded,
|
||||
long *enclen);
|
||||
|
||||
/*
|
||||
* NOTE: before c-ares 1.6.1 we would most often use the system in6_addr
|
||||
* 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.6.1 we always declare and use our own to stop relying on the
|
||||
* with 1.7.0 we always declare and use our own to stop relying on the
|
||||
* system's one.
|
||||
*/
|
||||
struct ares_in6_addr {
|
||||
@@ -416,29 +416,28 @@ struct ares_in6_addr {
|
||||
} _S6_un;
|
||||
};
|
||||
|
||||
/*
|
||||
* TODO: the structs 'addrttl' and 'addr6ttl' really should get their names
|
||||
* prefixed with ares_ to keep them in our own "name space".
|
||||
*/
|
||||
struct addrttl {
|
||||
struct ares_addrttl {
|
||||
struct in_addr ipaddr;
|
||||
int ttl;
|
||||
};
|
||||
struct addr6ttl {
|
||||
|
||||
struct ares_addr6ttl {
|
||||
struct ares_in6_addr ip6addr;
|
||||
int ttl;
|
||||
};
|
||||
|
||||
struct ares_srv_reply {
|
||||
unsigned short weight;
|
||||
unsigned short priority;
|
||||
unsigned short port;
|
||||
char *host;
|
||||
struct ares_srv_reply *next;
|
||||
char *host;
|
||||
unsigned short priority;
|
||||
unsigned short weight;
|
||||
unsigned short port;
|
||||
};
|
||||
|
||||
struct ares_txt_reply {
|
||||
size_t length; /* length excludes null termination */
|
||||
unsigned char *txt;
|
||||
struct ares_txt_reply *next;
|
||||
unsigned char *txt;
|
||||
size_t length; /* length excludes null termination */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -452,13 +451,13 @@ struct ares_txt_reply {
|
||||
CARES_EXTERN int ares_parse_a_reply(const unsigned char *abuf,
|
||||
int alen,
|
||||
struct hostent **host,
|
||||
struct addrttl *addrttls,
|
||||
struct ares_addrttl *addrttls,
|
||||
int *naddrttls);
|
||||
|
||||
CARES_EXTERN int ares_parse_aaaa_reply(const unsigned char *abuf,
|
||||
int alen,
|
||||
struct hostent **host,
|
||||
struct addr6ttl *addrttls,
|
||||
struct ares_addr6ttl *addrttls,
|
||||
int *naddrttls);
|
||||
|
||||
CARES_EXTERN int ares_parse_ptr_reply(const unsigned char *abuf,
|
||||
@@ -474,18 +473,18 @@ CARES_EXTERN int ares_parse_ns_reply(const unsigned char *abuf,
|
||||
|
||||
CARES_EXTERN int ares_parse_srv_reply(const unsigned char* abuf,
|
||||
int alen,
|
||||
struct ares_srv_reply** srv_out,
|
||||
int *nsrvreply);
|
||||
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,
|
||||
int *nsrvreply);
|
||||
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);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -44,7 +44,7 @@ int ares__read_line(FILE *fp, char **buf, size_t *bufsize)
|
||||
*bufsize = 128;
|
||||
}
|
||||
|
||||
while (1)
|
||||
for (;;)
|
||||
{
|
||||
if (!fgets(*buf + offset, (int)(*bufsize - offset), fp))
|
||||
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
|
||||
|
@@ -21,7 +21,7 @@ ares_cancel \- Cancel a resolve
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B int ares_cancel(ares_channel \fIchannel\fP)
|
||||
.B void ares_cancel(ares_channel \fIchannel\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The \fBares_cancel\fP function cancels all lookups/requests made on the the
|
||||
|
143
ares/ares_data.c
Normal file
143
ares/ares_data.c
Normal file
@@ -0,0 +1,143 @@
|
||||
/* $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 "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_parse_srv_reply()
|
||||
** ares_parse_txt_reply()
|
||||
*/
|
||||
|
||||
void ares_free_data(void *dataptr)
|
||||
{
|
||||
struct ares_data *ptr;
|
||||
|
||||
if (!dataptr)
|
||||
return;
|
||||
|
||||
ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
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;
|
||||
|
||||
ptr = (void *)((char *)dataptr - offsetof(struct ares_data, data));
|
||||
|
||||
if (ptr->mark == ARES_DATATYPE_MARK)
|
||||
return ptr->type;
|
||||
|
||||
return ARES_DATATYPE_UNKNOWN;
|
||||
}
|
62
ares/ares_data.h
Normal file
62
ares/ares_data.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/* $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.
|
||||
*/
|
||||
|
||||
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 */
|
||||
#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;
|
||||
} data;
|
||||
};
|
||||
|
||||
void *ares_malloc_data(ares_datatype type);
|
||||
|
||||
ares_datatype ares_get_datatype(void * dataptr);
|
@@ -21,12 +21,12 @@ ares_dup \- Duplicate a resolver channel
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B int ares_dup(ares_channel *\fIchannel\fP, ares_channel \fIsource\fP)
|
||||
.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 \fIchannel\fP to a handle used to identify the
|
||||
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.
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_EXPAND_NAME 3 "23 July 1998"
|
||||
.TH ARES_EXPAND_NAME 3 "20 Nov 2009"
|
||||
.SH NAME
|
||||
ares_expand_name \- Expand a DNS-encoded domain name
|
||||
.SH SYNOPSIS
|
||||
@@ -23,7 +23,7 @@ ares_expand_name \- Expand a DNS-encoded domain name
|
||||
.PP
|
||||
.B int ares_expand_name(const unsigned char *\fIencoded\fP,
|
||||
.B const unsigned char *\fIabuf\fP, int \fIalen\fP, char **\fIs\fP,
|
||||
.B int *\fIenclen\fP)
|
||||
.B long *\fIenclen\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
|
@@ -14,7 +14,7 @@
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_EXPAND_NAME 3 "23 July 1998"
|
||||
.TH ARES_EXPAND_NAME 3 "20 Nov 2009"
|
||||
.SH NAME
|
||||
ares_expand_string \- Expand a length encoded string
|
||||
.SH SYNOPSIS
|
||||
@@ -23,7 +23,7 @@ ares_expand_string \- Expand a length encoded string
|
||||
.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 int *\fIenclen\fP)
|
||||
.B long *\fIenclen\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
|
60
ares/ares_free_data.3
Normal file
60
ares/ares_free_data.3
Normal file
@@ -0,0 +1,60 @@
|
||||
.\" $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_FREE_DATA 3 "23 Nov 2009"
|
||||
.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_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_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-2009 by Daniel Stenberg.
|
@@ -18,7 +18,7 @@
|
||||
#include "ares_setup.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
#if !defined(WIN32) || defined(WATT32)
|
||||
#ifdef HAVE_NETDB_H
|
||||
#include <netdb.h>
|
||||
#endif
|
||||
|
||||
|
@@ -21,7 +21,7 @@ ares_gethostbyname_file \- Lookup a name in the system's hosts file
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B void ares_gethostbyname_file(ares_channel \fIchannel\fP, const char *\fIname\fP,
|
||||
.B int ares_gethostbyname_file(ares_channel \fIchannel\fP, const char *\fIname\fP,
|
||||
.B int \fIfamily\fP, struct hostent **host)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
|
@@ -61,10 +61,6 @@
|
||||
#include "inet_ntop.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
#ifdef WATT32
|
||||
#undef WIN32
|
||||
#endif
|
||||
|
||||
struct nameinfo_query {
|
||||
ares_nameinfo_callback callback;
|
||||
void *arg;
|
||||
|
@@ -50,9 +50,9 @@
|
||||
#include "ares_getopt.h"
|
||||
|
||||
int opterr = 1, /* if error message should be printed */
|
||||
optind = 1, /* index into parent argv vector */
|
||||
optopt, /* character checked for validity */
|
||||
optreset; /* reset getopt */
|
||||
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)'?'
|
||||
|
@@ -33,15 +33,21 @@
|
||||
|
||||
int ares_getopt(int nargc, char * const nargv[], const char *ostr);
|
||||
|
||||
#if defined(WATT32)
|
||||
#undef optarg
|
||||
#undef optind
|
||||
#undef opterr
|
||||
#endif
|
||||
#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 */
|
||||
|
@@ -22,8 +22,8 @@ ares_init, ares_init_options \- Initialize a resolver channel
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B int ares_init(ares_channel *\fIchannel\fP)
|
||||
.B int ares_init_options(ares_channel *\fIchannel\fP,
|
||||
.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
|
||||
@@ -31,7 +31,7 @@ ares_init, ares_init_options \- Initialize a resolver channel
|
||||
.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 \fIchannel\fP to a handle used to identify the name
|
||||
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.
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#if defined(WIN32) && !defined(WATT32)
|
||||
#ifdef USE_WINSOCK
|
||||
#include <iphlpapi.h>
|
||||
#endif
|
||||
|
||||
@@ -581,7 +581,7 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
|
||||
if (!fi)
|
||||
return 0;
|
||||
|
||||
res = (*fpGetNetworkParams) (fi, &size);
|
||||
res = (*ares_fpGetNetworkParams) (fi, &size);
|
||||
if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
|
||||
goto quit;
|
||||
|
||||
@@ -590,7 +590,7 @@ static int get_iphlpapi_dns_info (char *ret_buf, size_t ret_size)
|
||||
goto quit;
|
||||
|
||||
fi = newfi;
|
||||
res = (*fpGetNetworkParams) (fi, &size);
|
||||
res = (*ares_fpGetNetworkParams) (fi, &size);
|
||||
if (res != ERROR_SUCCESS)
|
||||
goto quit;
|
||||
|
||||
@@ -797,7 +797,7 @@ DhcpNameServer
|
||||
return ARES_SUCCESS; /* use localhost DNS server */
|
||||
|
||||
nservers = i;
|
||||
servers = calloc(sizeof(*servers), i);
|
||||
servers = calloc(i, sizeof(struct server_state));
|
||||
if (!servers)
|
||||
return ARES_ENOMEM;
|
||||
|
||||
@@ -1108,11 +1108,19 @@ static int config_domain(ares_channel channel, char *str)
|
||||
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 *p;
|
||||
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
|
||||
@@ -1503,9 +1511,9 @@ static void randomize_key(unsigned char* key,int key_data_len)
|
||||
int counter=0;
|
||||
#ifdef WIN32
|
||||
BOOLEAN res;
|
||||
if (fpSystemFunction036)
|
||||
if (ares_fpSystemFunction036)
|
||||
{
|
||||
res = (*fpSystemFunction036) (key, key_data_len);
|
||||
res = (*ares_fpSystemFunction036) (key, key_data_len);
|
||||
if (res)
|
||||
randomized = 1;
|
||||
}
|
||||
|
@@ -53,16 +53,16 @@ conflict with any other thread that is already using these other libraries.
|
||||
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.6.1 along with the
|
||||
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.6.1 without calling
|
||||
\fIares_library_cleanup(3)\fP due to the fact that it is nearly a do-nothing
|
||||
function on non-Win32/64 platforms.
|
||||
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)
|
||||
|
@@ -76,16 +76,16 @@ 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.6.1 along with the
|
||||
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.6.1 without calling
|
||||
\fIares_library_init(3)\fP due to the fact that it is nearly a do-nothing
|
||||
function on non-Win32/64 platforms at this point.
|
||||
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)
|
||||
|
@@ -24,9 +24,9 @@
|
||||
|
||||
/* library-private global and unique instance vars */
|
||||
|
||||
#ifdef WIN32
|
||||
fpGetNetworkParams_t fpGetNetworkParams = ZERO_NULL;
|
||||
fpSystemFunction036_t fpSystemFunction036 = ZERO_NULL;
|
||||
#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 */
|
||||
@@ -34,7 +34,7 @@ fpSystemFunction036_t fpSystemFunction036 = ZERO_NULL;
|
||||
static unsigned int ares_initialized;
|
||||
static int ares_init_flags;
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef USE_WINSOCK
|
||||
static HMODULE hnd_iphlpapi;
|
||||
static HMODULE hnd_advapi32;
|
||||
#endif
|
||||
@@ -42,16 +42,16 @@ static HMODULE hnd_advapi32;
|
||||
|
||||
static int ares_win32_init(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
#ifdef USE_WINSOCK
|
||||
|
||||
hnd_iphlpapi = 0;
|
||||
hnd_iphlpapi = LoadLibrary("iphlpapi.dll");
|
||||
if (!hnd_iphlpapi)
|
||||
return ARES_ELOADIPHLPAPI;
|
||||
|
||||
fpGetNetworkParams = (fpGetNetworkParams_t)
|
||||
ares_fpGetNetworkParams = (fpGetNetworkParams_t)
|
||||
GetProcAddress(hnd_iphlpapi, "GetNetworkParams");
|
||||
if (!fpGetNetworkParams)
|
||||
if (!ares_fpGetNetworkParams)
|
||||
{
|
||||
FreeLibrary(hnd_iphlpapi);
|
||||
return ARES_EADDRGETNETWORKPARAMS;
|
||||
@@ -67,7 +67,7 @@ static int ares_win32_init(void)
|
||||
hnd_advapi32 = LoadLibrary("advapi32.dll");
|
||||
if (hnd_advapi32)
|
||||
{
|
||||
fpSystemFunction036 = (fpSystemFunction036_t)
|
||||
ares_fpSystemFunction036 = (fpSystemFunction036_t)
|
||||
GetProcAddress(hnd_advapi32, "SystemFunction036");
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ static int ares_win32_init(void)
|
||||
|
||||
static void ares_win32_cleanup(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
#ifdef USE_WINSOCK
|
||||
if (hnd_advapi32)
|
||||
FreeLibrary(hnd_advapi32);
|
||||
if (hnd_iphlpapi)
|
||||
@@ -123,7 +123,7 @@ void ares_library_cleanup(void)
|
||||
|
||||
int ares_library_initialized(void)
|
||||
{
|
||||
#ifdef WIN32
|
||||
#ifdef USE_WINSOCK
|
||||
if (!ares_initialized)
|
||||
return ARES_ENOTINITIALIZED;
|
||||
#endif
|
||||
|
@@ -21,7 +21,7 @@
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef USE_WINSOCK
|
||||
|
||||
#include <iphlpapi.h>
|
||||
|
||||
@@ -31,10 +31,10 @@ 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 fpGetNetworkParams;
|
||||
extern fpSystemFunction036_t fpSystemFunction036;
|
||||
extern fpGetNetworkParams_t ares_fpGetNetworkParams;
|
||||
extern fpSystemFunction036_t ares_fpSystemFunction036;
|
||||
|
||||
#endif /* WIN32 */
|
||||
#endif /* USE_WINSOCK */
|
||||
|
||||
#endif /* HEADER_CARES_LIBRARY_INIT_H */
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_MKQUERY 3 "4 January 2000"
|
||||
.TH ARES_MKQUERY 3 "20 Nov 2009"
|
||||
.SH NAME
|
||||
ares_mkquery \- Compose a single-question DNS query buffer
|
||||
.SH SYNOPSIS
|
||||
@@ -22,7 +22,7 @@ ares_mkquery \- Compose a single-question DNS query buffer
|
||||
.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, char **\fIbuf\fP,
|
||||
.B unsigned short \fIid\fP, int \fIrd\fP, unsigned char **\fIbuf\fP,
|
||||
.B int *\fIbuflen\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
|
@@ -23,7 +23,7 @@ ares_parse_a_reply \- Parse a reply to a DNS query of type A
|
||||
.PP
|
||||
.B int ares_parse_a_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
|
||||
.B struct hostent **\fIhost\fP,
|
||||
.B struct addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
|
||||
.B struct ares_addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
@@ -31,7 +31,7 @@ The
|
||||
function parses the response to a query of type A into a
|
||||
.BR "struct hostent"
|
||||
and/or an array of
|
||||
.BR "struct addrttls" .
|
||||
.BR "struct ares_addrttls" .
|
||||
The parameters
|
||||
.I abuf
|
||||
and
|
||||
@@ -51,7 +51,7 @@ and
|
||||
.IR naddrttls
|
||||
are both nonnull,
|
||||
then up to *naddrttls
|
||||
.BR "struct addrttl"
|
||||
.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.
|
||||
|
@@ -54,7 +54,7 @@
|
||||
|
||||
int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
struct hostent **host,
|
||||
struct addrttl *addrttls, int *naddrttls)
|
||||
struct ares_addrttl *addrttls, int *naddrttls)
|
||||
{
|
||||
unsigned int qdcount, ancount;
|
||||
int status, i, rr_type, rr_class, rr_len, rr_ttl, naddrs;
|
||||
@@ -157,7 +157,7 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
}
|
||||
if (naddrs < max_addr_ttls)
|
||||
{
|
||||
struct addrttl * const at = &addrttls[naddrs];
|
||||
struct ares_addrttl * const at = &addrttls[naddrs];
|
||||
if (aptr + sizeof(struct in_addr) > abuf + alen)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
|
@@ -14,7 +14,7 @@
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_PARSE_AAAA_REPLY 3 "10 March 2005"
|
||||
.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
|
||||
@@ -23,7 +23,7 @@ ares_parse_aaaa_reply \- Parse a reply to a DNS query of type AAAA
|
||||
.PP
|
||||
.B int ares_parse_aaaa_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
|
||||
.B struct hostent **\fIhost\fP,
|
||||
.B struct addrttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
|
||||
.B struct ares_addr6ttl *\fIaddrttls\fB, int *\fInaddrttls\fB);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
@@ -31,7 +31,7 @@ The
|
||||
function parses the response to a query of type AAAA into a
|
||||
.BR "struct hostent"
|
||||
and/or an array of
|
||||
.BR "struct addrttls" .
|
||||
.BR "struct ares_addr6ttl" .
|
||||
The parameters
|
||||
.I abuf
|
||||
and
|
||||
@@ -51,7 +51,7 @@ and
|
||||
.IR naddrttls
|
||||
are both nonnull,
|
||||
then up to *naddrttls
|
||||
.BR "struct addr6ttl"
|
||||
.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.
|
||||
|
@@ -55,7 +55,7 @@
|
||||
#include "ares_private.h"
|
||||
|
||||
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
|
||||
struct hostent **host, struct addr6ttl *addrttls,
|
||||
struct hostent **host, struct ares_addr6ttl *addrttls,
|
||||
int *naddrttls)
|
||||
{
|
||||
unsigned int qdcount, ancount;
|
||||
@@ -157,7 +157,7 @@ int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
|
||||
}
|
||||
if (naddrs < max_addr_ttls)
|
||||
{
|
||||
struct addr6ttl * const at = &addrttls[naddrs];
|
||||
struct ares_addr6ttl * const at = &addrttls[naddrs];
|
||||
if (aptr + sizeof(struct in6_addr) > abuf + alen)
|
||||
{
|
||||
status = ARES_EBADRESP;
|
||||
|
@@ -21,12 +21,13 @@ ares_parse_srv_reply \- Parse a reply to a DNS query of type SRV
|
||||
.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, int *\fInsrvreply\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
|
||||
@@ -35,11 +36,10 @@ and
|
||||
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 .
|
||||
The number of responses is stored into the variable pointed to by
|
||||
.IR nsrvreply .
|
||||
It is the caller's responsibility to free the resulting
|
||||
.IR srv_out
|
||||
structure when it is no longer needed.
|
||||
structure when it is no longer needed using the function
|
||||
.B ares_free_data
|
||||
.PP
|
||||
The structure
|
||||
.I ares_srv_reply
|
||||
@@ -48,6 +48,7 @@ contains the following fields:
|
||||
.in +4n
|
||||
.nf
|
||||
struct ares_srv_reply {
|
||||
struct ares_srv_reply *next;
|
||||
unsigned short weight;
|
||||
unsigned short priority;
|
||||
unsigned short port;
|
||||
@@ -71,7 +72,10 @@ 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
|
||||
|
@@ -1,6 +1,7 @@
|
||||
/* Id$ */
|
||||
/* $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
|
||||
@@ -15,11 +16,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
/*
|
||||
* ares_parse_srv_reply created by Jakub Hrozek <jhrozek@redhat.com>
|
||||
* on behalf of Red Hat - http://www.redhat.com
|
||||
*/
|
||||
|
||||
#include "ares_setup.h"
|
||||
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
@@ -47,6 +43,7 @@
|
||||
#include <string.h>
|
||||
#include "ares.h"
|
||||
#include "ares_dns.h"
|
||||
#include "ares_data.h"
|
||||
#include "ares_private.h"
|
||||
|
||||
/* AIX portability check */
|
||||
@@ -56,21 +53,20 @@
|
||||
|
||||
int
|
||||
ares_parse_srv_reply (const unsigned char *abuf, int alen,
|
||||
struct ares_srv_reply **srv_out, int *nsrvreply)
|
||||
struct ares_srv_reply **srv_out)
|
||||
{
|
||||
unsigned int qdcount, ancount;
|
||||
const unsigned char *aptr;
|
||||
int status, i, rr_type, rr_class, rr_len;
|
||||
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 = 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;
|
||||
|
||||
/* Same with *nsrvreply. */
|
||||
*nsrvreply = 0;
|
||||
|
||||
/* Give up if abuf doesn't have room for a header. */
|
||||
if (alen < HFIXEDSZ)
|
||||
return ARES_EBADRESP;
|
||||
@@ -96,16 +92,8 @@ ares_parse_srv_reply (const unsigned char *abuf, int alen,
|
||||
}
|
||||
aptr += len + QFIXEDSZ;
|
||||
|
||||
/* Allocate ares_srv_reply array; ancount gives an upper bound */
|
||||
srv = malloc ((ancount) * sizeof (struct ares_srv_reply));
|
||||
if (!srv)
|
||||
{
|
||||
free (hostname);
|
||||
return ARES_ENOMEM;
|
||||
}
|
||||
|
||||
/* Examine each answer resource record (RR) in turn. */
|
||||
for (i = 0; i < (int) ancount; i++)
|
||||
for (i = 0; i < ancount; i++)
|
||||
{
|
||||
/* Decode the RR up to the data field. */
|
||||
status = ares_expand_name (aptr, abuf, alen, &rr_name, &len);
|
||||
@@ -134,40 +122,59 @@ ares_parse_srv_reply (const unsigned char *abuf, int alen,
|
||||
break;
|
||||
}
|
||||
|
||||
srv[i].priority = ntohs (*((unsigned short *)aptr));
|
||||
aptr += sizeof(unsigned short);
|
||||
srv[i].weight = ntohs (*((unsigned short *)aptr));
|
||||
aptr += sizeof(unsigned short);
|
||||
srv[i].port = ntohs (*((unsigned short *)aptr));
|
||||
aptr += sizeof(unsigned short);
|
||||
/* 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;
|
||||
|
||||
status = ares_expand_name (aptr, abuf, alen, &srv[i].host, &len);
|
||||
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;
|
||||
|
||||
/* Move on to the next record */
|
||||
aptr += len;
|
||||
|
||||
/* Don't lose memory in the next iteration */
|
||||
free (rr_name);
|
||||
rr_name = NULL;
|
||||
}
|
||||
|
||||
/* 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)
|
||||
{
|
||||
free (srv);
|
||||
free (hostname);
|
||||
free (rr_name);
|
||||
if (srv_head)
|
||||
ares_free_data (srv_head);
|
||||
return status;
|
||||
}
|
||||
|
||||
/* everything looks fine, return the data */
|
||||
*srv_out = srv;
|
||||
*nsrvreply = ancount;
|
||||
*srv_out = srv_head;
|
||||
|
||||
free (hostname);
|
||||
free (rr_name);
|
||||
return status;
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
@@ -21,12 +21,13 @@ ares_parse_txt_reply \- Parse a reply to a DNS query of type TXT
|
||||
.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, int *\fIntxtreply\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
|
||||
@@ -35,11 +36,10 @@ and
|
||||
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 .
|
||||
The number of responses is stored into the variable pointed to by
|
||||
.IR ntxtreply .
|
||||
It is the caller's responsibility to free the resulting
|
||||
.IR txt_out
|
||||
structure when it is no longer needed.
|
||||
structure when it is no longer needed using the function
|
||||
.B ares_free_data
|
||||
.PP
|
||||
The structure
|
||||
.I ares_txt_reply
|
||||
@@ -48,6 +48,7 @@ contains the following fields:
|
||||
.in +4n
|
||||
.nf
|
||||
struct ares_txt_reply {
|
||||
struct ares_txt_reply *next;
|
||||
unsigned int length;
|
||||
unsigned char *txt;
|
||||
};
|
||||
@@ -69,8 +70,11 @@ 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
|
||||
|
||||
|
@@ -1,8 +1,7 @@
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2009 Jakub Hrozek <jhrozek@redhat.com>
|
||||
* Copyright (C) 2009 Yang Tse <yangsita@gmail.com>
|
||||
* 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
|
||||
@@ -49,11 +48,12 @@
|
||||
|
||||
#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, int *ntxtreply)
|
||||
struct ares_txt_reply **txt_out)
|
||||
{
|
||||
size_t substr_len, str_len;
|
||||
unsigned int qdcount, ancount, i;
|
||||
@@ -62,14 +62,13 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
int status, rr_type, rr_class, rr_len;
|
||||
long len;
|
||||
char *hostname = NULL, *rr_name = NULL;
|
||||
struct ares_txt_reply *txt = 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;
|
||||
|
||||
/* Same with *ntxtreply. */
|
||||
*ntxtreply = 0;
|
||||
|
||||
/* Give up if abuf doesn't have room for a header. */
|
||||
if (alen < HFIXEDSZ)
|
||||
return ARES_EBADRESP;
|
||||
@@ -95,21 +94,6 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
}
|
||||
aptr += len + QFIXEDSZ;
|
||||
|
||||
/* Allocate ares_txt_reply array; ancount gives an upper bound */
|
||||
txt = malloc ((ancount) * sizeof (struct ares_txt_reply));
|
||||
if (!txt)
|
||||
{
|
||||
free (hostname);
|
||||
return ARES_ENOMEM;
|
||||
}
|
||||
|
||||
/* Initialize ares_txt_reply array */
|
||||
for (i = 0; i < ancount; i++)
|
||||
{
|
||||
txt[i].txt = NULL;
|
||||
txt[i].length = 0;
|
||||
}
|
||||
|
||||
/* Examine each answer resource record (RR) in turn. */
|
||||
for (i = 0; i < ancount; i++)
|
||||
{
|
||||
@@ -133,6 +117,23 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
/* 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
|
||||
@@ -146,13 +147,13 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
while (strptr < (aptr + rr_len))
|
||||
{
|
||||
substr_len = (unsigned char)*strptr;
|
||||
txt[i].length += substr_len;
|
||||
txt_curr->length += substr_len;
|
||||
strptr += substr_len + 1;
|
||||
}
|
||||
|
||||
/* Including null byte */
|
||||
txt[i].txt = malloc (txt[i].length + 1);
|
||||
if (txt[i].txt == NULL)
|
||||
txt_curr->txt = malloc (txt_curr->length + 1);
|
||||
if (txt_curr->txt == NULL)
|
||||
{
|
||||
status = ARES_ENOMEM;
|
||||
break;
|
||||
@@ -165,20 +166,20 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
{
|
||||
substr_len = (unsigned char)*strptr;
|
||||
strptr++;
|
||||
memcpy ((char *) txt[i].txt + str_len, strptr, substr_len);
|
||||
memcpy ((char *) txt_curr->txt + str_len, strptr, substr_len);
|
||||
str_len += substr_len;
|
||||
strptr += substr_len;
|
||||
}
|
||||
/* Make sure we NULL-terminate */
|
||||
txt[i].txt[txt[i].length] = '\0';
|
||||
|
||||
/* Move on to the next record */
|
||||
aptr += rr_len;
|
||||
*((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)
|
||||
@@ -189,17 +190,13 @@ ares_parse_txt_reply (const unsigned char *abuf, int alen,
|
||||
/* clean up on error */
|
||||
if (status != ARES_SUCCESS)
|
||||
{
|
||||
for (i = 0; i < ancount; i++)
|
||||
{
|
||||
if (txt[i].txt)
|
||||
free (txt[i].txt);
|
||||
}
|
||||
if (txt_head)
|
||||
ares_free_data (txt_head);
|
||||
return status;
|
||||
}
|
||||
|
||||
/* everything looks fine, return the data */
|
||||
*txt_out = txt;
|
||||
*ntxtreply = ancount;
|
||||
*txt_out = txt_head;
|
||||
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
@@ -30,7 +30,7 @@
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#if !defined(WIN32) || defined(WATT32)
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/* $Id$ */
|
||||
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
* Copyright (C) 2004-2009 by Daniel Stenberg
|
||||
* Copyright (C) 2004-2010 by Daniel Stenberg
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
@@ -92,7 +92,7 @@ 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(int s, ares_channel channel);
|
||||
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,
|
||||
@@ -139,18 +139,28 @@ long ares__timeoffset(struct timeval *now,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 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)
|
||||
{
|
||||
struct timeval now = ares__tvnow();
|
||||
|
||||
write_tcp_data(channel, write_fds, ARES_SOCKET_BAD, &now);
|
||||
read_tcp_data(channel, read_fds, ARES_SOCKET_BAD, &now);
|
||||
read_udp_packets(channel, read_fds, ARES_SOCKET_BAD, &now);
|
||||
process_timeouts(channel, &now);
|
||||
process_broken_connections(channel, &now);
|
||||
processfds(channel, read_fds, ARES_SOCKET_BAD, write_fds, ARES_SOCKET_BAD);
|
||||
}
|
||||
|
||||
/* Something interesting happened on the wire, or there was a timeout.
|
||||
@@ -161,12 +171,7 @@ void ares_process_fd(ares_channel channel,
|
||||
file descriptors */
|
||||
ares_socket_t write_fd)
|
||||
{
|
||||
struct timeval now = ares__tvnow();
|
||||
|
||||
write_tcp_data(channel, NULL, write_fd, &now);
|
||||
read_tcp_data(channel, NULL, read_fd, &now);
|
||||
read_udp_packets(channel, NULL, read_fd, &now);
|
||||
process_timeouts(channel, &now);
|
||||
processfds(channel, NULL, read_fd, NULL, write_fd);
|
||||
}
|
||||
|
||||
|
||||
@@ -174,7 +179,8 @@ void ares_process_fd(ares_channel channel,
|
||||
* 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
|
||||
* http://devrsrc1.external.hp.com/STKS/cgi-bin/man2html?
|
||||
* manpage=/usr/share/man/man2.Z/send.2
|
||||
*/
|
||||
static int try_again(int errnum)
|
||||
{
|
||||
@@ -732,7 +738,7 @@ void ares__send_query(ares_channel channel, struct query *query,
|
||||
return;
|
||||
}
|
||||
}
|
||||
sendreq = calloc(sizeof(struct send_request), 1);
|
||||
sendreq = calloc(1, sizeof(struct send_request));
|
||||
if (!sendreq)
|
||||
{
|
||||
end_query(channel, query, ARES_ENOMEM, NULL, 0);
|
||||
@@ -802,8 +808,9 @@ void ares__send_query(ares_channel channel, struct query *query,
|
||||
}
|
||||
|
||||
/*
|
||||
* setsocknonblock sets the given socket to either blocking or non-blocking mode
|
||||
* based on the 'nonblock' boolean argument. This function is highly portable.
|
||||
* 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 */)
|
||||
@@ -856,7 +863,7 @@ static int setsocknonblock(ares_socket_t sockfd, /* operate on this */
|
||||
#endif
|
||||
}
|
||||
|
||||
static int configure_socket(int s, ares_channel channel)
|
||||
static int configure_socket(ares_socket_t s, ares_channel channel)
|
||||
{
|
||||
setsocknonblock(s, TRUE);
|
||||
|
||||
@@ -902,10 +909,10 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
|
||||
#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.
|
||||
* 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,
|
||||
|
@@ -21,7 +21,7 @@ ares_save_options \- Save configuration values obtained from initialized ares_ch
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B void ares_save_options(ares_channel \fIchannel\fP, struct ares_options *\fIoptions\fP, int *\fIoptmask\fP)
|
||||
.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
|
||||
@@ -36,6 +36,20 @@ 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 funtions. This function will remain
|
||||
|
@@ -1,15 +1,20 @@
|
||||
.\" $Id$
|
||||
.\"
|
||||
.TH ARES_SET_SOCKET_CALLBACK 3 "2 Dec 2008"
|
||||
.TH ARES_SET_SOCKET_CALLBACK 3 "20 Nov 2009"
|
||||
.SH NAME
|
||||
ares_set_socket_callback \- Set a socket creation callback
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
int ares_set_socket_callback(ares_channel \fIchannel\fP,
|
||||
.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
|
||||
|
@@ -48,6 +48,17 @@
|
||||
/* 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
|
||||
|
@@ -22,7 +22,7 @@ ares_fds \- Get file descriptors to select on for name service
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B struct timeval *ares_timeout(ares_channel \fIchannel\fP,
|
||||
.B struct timeval *\fImaxtv\fP, struct timeval *\fItvbuf\fP)
|
||||
.B struct timeval *\fImaxtv\fP, struct timeval *\fItv\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
@@ -33,13 +33,13 @@ invoking \fIares_process(3)\fP to process timeouts. The parameter
|
||||
specifies a existing maximum timeout, or
|
||||
.B NULL
|
||||
if the caller does not wish to apply a maximum timeout. The parameter
|
||||
.I tvbuf
|
||||
.I tv
|
||||
must point to a writable buffer of type
|
||||
.BR "struct timeval" .
|
||||
It is valid for
|
||||
.I maxtv
|
||||
and
|
||||
.I tvbuf
|
||||
.I tv
|
||||
to have the same value.
|
||||
.PP
|
||||
If no queries have timeouts pending sooner than the given maximum
|
||||
@@ -50,9 +50,9 @@ returns the value of
|
||||
otherwise
|
||||
.B ares_timeout
|
||||
stores the appropriate timeout value into the buffer pointed to by
|
||||
.I tvbuf
|
||||
.I tv
|
||||
and returns the value of
|
||||
.IR tvbuf .
|
||||
.IR tv .
|
||||
.SH SEE ALSO
|
||||
.BR ares_fds (3),
|
||||
.BR ares_process (3)
|
||||
|
@@ -4,14 +4,14 @@
|
||||
#define ARES__VERSION_H
|
||||
|
||||
#define ARES_VERSION_MAJOR 1
|
||||
#define ARES_VERSION_MINOR 6
|
||||
#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.6.1-CVS"
|
||||
#define ARES_VERSION_STR "1.7.1-CVS"
|
||||
|
||||
#if (ARES_VERSION >= 0x010601)
|
||||
#if (ARES_VERSION >= 0x010700)
|
||||
# define CARES_HAVE_ARES_LIBRARY_INIT 1
|
||||
# define CARES_HAVE_ARES_LIBRARY_CLEANUP 1
|
||||
#else
|
||||
|
@@ -1,7 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
# The logic for finding the right libtoolize is taken from libcurl's buildconf
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# findtool works as 'which' but we use a different name to make it more
|
||||
# obvious we aren't using 'which'! ;-)
|
||||
@@ -22,6 +20,37 @@ findtool(){
|
||||
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.
|
||||
@@ -38,6 +67,49 @@ 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}
|
||||
|
@@ -41,10 +41,17 @@ 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", "<22> 2004 - 2009 Daniel Stenberg, <daniel@haxx.se>.\0"
|
||||
|
@@ -85,6 +85,9 @@
|
||||
/* FUNCTIONS */
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
/* Define if you have the closesocket function. */
|
||||
#define HAVE_CLOSESOCKET 1
|
||||
|
||||
/* Define if you have the gethostname function. */
|
||||
#define HAVE_GETHOSTNAME 1
|
||||
|
||||
|
@@ -60,6 +60,11 @@ if test -z "$AR" || test "$AR" = "not_found"; then
|
||||
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])
|
||||
@@ -82,6 +87,7 @@ 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
|
||||
@@ -108,6 +114,17 @@ case $host in
|
||||
;;
|
||||
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
|
||||
|
||||
@@ -140,27 +157,17 @@ CARES_SET_COMPILER_DEBUG_OPTS
|
||||
CARES_SET_COMPILER_OPTIMIZE_OPTS
|
||||
CARES_SET_COMPILER_WARNING_OPTS
|
||||
|
||||
case $host in
|
||||
if test "$compiler_id" = "INTEL_UNIX_C"; then
|
||||
#
|
||||
x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
|
||||
#
|
||||
if test "$compiler_id" = "INTEL_UNIX_C"; then
|
||||
#
|
||||
if test "$compiler_num" -ge "900" &&
|
||||
test "$compiler_num" -lt "1000"; then
|
||||
dnl icc 9.X specific
|
||||
CFLAGS="$CFLAGS -i-dynamic"
|
||||
fi
|
||||
#
|
||||
if test "$compiler_num" -ge "1000"; then
|
||||
dnl icc 10.X or later
|
||||
CFLAGS="$CFLAGS -shared-intel"
|
||||
fi
|
||||
#
|
||||
fi
|
||||
;;
|
||||
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
|
||||
#
|
||||
esac
|
||||
fi
|
||||
|
||||
CARES_CHECK_COMPILER_HALT_ON_ERROR
|
||||
CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
|
||||
@@ -381,58 +388,10 @@ AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
|
||||
)
|
||||
|
||||
|
||||
dnl Default is to try the thread-safe versions of a few functions
|
||||
OPT_THREAD=on
|
||||
|
||||
dnl detect AIX 4.3 or later
|
||||
AC_MSG_CHECKING([AIX 4.3 or later])
|
||||
AC_PREPROC_IFELSE([
|
||||
#if defined(_AIX) && defined(_AIX43)
|
||||
printf("just fine");
|
||||
#else
|
||||
#error "this is not AIX 4.3 or later"
|
||||
#endif
|
||||
],
|
||||
[ AC_MSG_RESULT([yes])
|
||||
RECENTAIX=yes
|
||||
OPT_THREAD=off ],
|
||||
[ AC_MSG_RESULT([no]) ]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(thread,dnl
|
||||
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
|
||||
AC_HELP_STRING([--enable-thread],[look for thread-safe functions]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
OPT_THREAD=off
|
||||
AC_MSG_WARN(c-ares will not get built using thread-safe functions)
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
]
|
||||
)
|
||||
|
||||
if test X"$OPT_THREAD" = Xoff
|
||||
then
|
||||
AC_DEFINE(DISABLED_THREADSAFE, 1,
|
||||
[Set to explicitly specify we don't want to use thread-safe functions])
|
||||
fi
|
||||
|
||||
dnl for recent AIX versions, we skip all the thread-safe checks above since
|
||||
dnl they claim a thread-safe libc using the standard API. But there are
|
||||
dnl some functions still not thread-safe. Check for these!
|
||||
|
||||
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
|
||||
|
||||
if test "x$RECENTAIX" = "xyes"; then
|
||||
|
||||
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
|
||||
|
||||
fi
|
||||
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Back to "normal" configuring
|
||||
@@ -453,6 +412,7 @@ AC_CHECK_HEADERS(
|
||||
sys/ioctl.h \
|
||||
sys/param.h \
|
||||
sys/uio.h \
|
||||
assert.h \
|
||||
netdb.h \
|
||||
netinet/in.h \
|
||||
netinet/tcp.h \
|
||||
|
@@ -16,7 +16,7 @@
|
||||
#***************************************************************************
|
||||
|
||||
# File version for 'aclocal' use. Keep it a single number.
|
||||
# serial 61
|
||||
# serial 63
|
||||
|
||||
|
||||
dnl CARES_CHECK_COMPILER
|
||||
@@ -1340,9 +1340,20 @@ AC_DEFUN([CARES_CHECK_COMPILER_SYMBOL_HIDING], [
|
||||
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_EXTERN="__attribute__ ((visibility (\"default\")))"
|
||||
tmp_CFLAGS="-fvisibility=hidden"
|
||||
supports_symbol_hiding="yes"
|
||||
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
|
||||
;;
|
||||
|
@@ -16,7 +16,7 @@
|
||||
#***************************************************************************
|
||||
|
||||
# File version for 'aclocal' use. Keep it a single number.
|
||||
# serial 32
|
||||
# serial 39
|
||||
|
||||
|
||||
dnl CARES_INCLUDES_ARPA_INET
|
||||
@@ -873,7 +873,10 @@ 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.
|
||||
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
|
||||
@@ -887,6 +890,7 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
|
||||
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([
|
||||
@@ -1001,6 +1005,82 @@ AC_DEFUN([CARES_CHECK_FUNC_GETADDRINFO], [
|
||||
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
|
||||
])
|
||||
|
||||
|
@@ -422,8 +422,8 @@ dnl must be unconditionally done for this platform.
|
||||
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
|
||||
|
||||
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
|
||||
case $host in
|
||||
*-*-solaris*)
|
||||
case $host_os in
|
||||
solaris*)
|
||||
tmp_need_reentrant="yes"
|
||||
;;
|
||||
*)
|
||||
@@ -433,6 +433,29 @@ AC_DEFUN([CARES_CHECK_NEED_REENTRANT_SYSTEM], [
|
||||
])
|
||||
|
||||
|
||||
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
|
||||
@@ -453,6 +476,26 @@ _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
|
||||
@@ -513,3 +556,56 @@ AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
|
||||
#
|
||||
])
|
||||
|
||||
|
||||
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
|
||||
#
|
||||
])
|
||||
|
@@ -415,7 +415,7 @@ typedef int sig_atomic_t;
|
||||
* Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid()
|
||||
*/
|
||||
|
||||
#if defined(VMS) && \
|
||||
#if defined(__VMS) && \
|
||||
defined(__INITIAL_POINTER_SIZE) && (__INITIAL_POINTER_SIZE == 64)
|
||||
#define getpwuid __32_getpwuid
|
||||
#endif
|
||||
@@ -425,7 +425,7 @@ typedef int sig_atomic_t;
|
||||
* Macro argv_item_t hides platform details to code using it.
|
||||
*/
|
||||
|
||||
#ifdef VMS
|
||||
#ifdef __VMS
|
||||
#define argv_item_t __char_ptr32
|
||||
#else
|
||||
#define argv_item_t char *
|
||||
|
@@ -5,6 +5,8 @@ Release
|
||||
acountry.dep
|
||||
acountry.mak
|
||||
acountry.plg
|
||||
dll-*
|
||||
lib-*
|
||||
vc6acountry.dep
|
||||
vc6acountry.mak
|
||||
vc6acountry.plg
|
||||
|
@@ -34,97 +34,97 @@ RSC=rc.exe
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "DLL-Debug"
|
||||
# PROP BASE Intermediate_Dir "DLL-Debug"
|
||||
# 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"
|
||||
# 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 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
|
||||
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/acountry.exe" /libpath:"..\cares\DLL-Release"
|
||||
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/acountry.exe" /libpath:"..\cares\DLL-Release"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
|
||||
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/acountry.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/acountry.exe" /libpath:"..\cares\LIB-Release"
|
||||
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/acountry.exe" /libpath:"..\cares\LIB-Release"
|
||||
# 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
|
||||
|
||||
|
@@ -3,6 +3,8 @@ LIB-*
|
||||
adig.dep
|
||||
adig.mak
|
||||
adig.plg
|
||||
dll-*
|
||||
lib-*
|
||||
vc6adig.dep
|
||||
vc6adig.mak
|
||||
vc6adig.plg
|
||||
|
@@ -34,97 +34,97 @@ RSC=rc.exe
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "DLL-Debug"
|
||||
# PROP BASE Intermediate_Dir "DLL-Debug"
|
||||
# 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"
|
||||
# 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 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
|
||||
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/adig.exe" /libpath:"..\cares\DLL-Release"
|
||||
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/adig.exe" /libpath:"..\cares\DLL-Release"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
|
||||
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/adig.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/adig.exe" /libpath:"..\cares\LIB-Release"
|
||||
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/adig.exe" /libpath:"..\cares\LIB-Release"
|
||||
# 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
|
||||
|
||||
|
@@ -3,6 +3,8 @@ LIB-*
|
||||
ahost.dep
|
||||
ahost.mak
|
||||
ahost.plg
|
||||
dll-*
|
||||
lib-*
|
||||
vc6ahost.dep
|
||||
vc6ahost.mak
|
||||
vc6ahost.plg
|
||||
|
@@ -34,97 +34,97 @@ RSC=rc.exe
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "DLL-Debug"
|
||||
# PROP BASE Intermediate_Dir "DLL-Debug"
|
||||
# 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"
|
||||
# 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 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
|
||||
# ADD LINK32 caresd_imp.lib ws2_32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"DLL-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\DLL-Debug"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /FD /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/ahost.exe" /libpath:"..\cares\DLL-Release"
|
||||
# ADD LINK32 cares_imp.lib ws2_32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"DLL-Release/ahost.exe" /libpath:"..\cares\DLL-Release"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
|
||||
# ADD LINK32 caresd.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /incremental:no /debug /machine:I386 /out:"LIB-Debug/ahost.exe" /pdbtype:sept /libpath:"..\cares\LIB-Debug"
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "_CONSOLE" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/ahost.exe" /libpath:"..\cares\LIB-Release"
|
||||
# ADD LINK32 cares.lib ws2_32.lib advapi32.lib /nologo /subsystem:console /pdb:none /machine:I386 /out:"LIB-Release/ahost.exe" /libpath:"..\cares\LIB-Release"
|
||||
# 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
|
||||
|
||||
|
@@ -1,5 +1,7 @@
|
||||
DLL-*
|
||||
LIB-*
|
||||
dll-*
|
||||
lib-*
|
||||
vc6cares.dep
|
||||
vc6cares.mak
|
||||
vc6cares.ncb
|
||||
|
@@ -33,109 +33,109 @@ CFG=cares - Win32 LIB Debug
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "DLL-Debug"
|
||||
# PROP BASE Intermediate_Dir "DLL-Debug"
|
||||
# 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"
|
||||
# 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 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /FD /GZ /c
|
||||
# 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 "DEBUGBUILD" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "DEBUGBUILD" /mktyplib203 /win32
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /win32
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409 /d "DEBUGBUILD"
|
||||
# ADD RSC /l 0x409 /d "DEBUGBUILD"
|
||||
# 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 /nologo /dll /incremental:no /map /debug /machine:I386 /out:"DLL-Debug/caresd.dll" /implib:"DLL-Debug/caresd_imp.lib" /pdbtype:sept
|
||||
# ADD LINK32 ws2_32.lib advapi32.lib /nologo /dll /incremental:no /map /debug /machine:I386 /out:"DLL-Debug/caresd.dll" /implib:"DLL-Debug/caresd_imp.lib" /pdbtype:sept
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /FD /c
|
||||
# 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 /mktyplib203 /win32
|
||||
# ADD MTL /nologo /mktyplib203 /win32
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /win32
|
||||
RSC=rc.exe
|
||||
# ADD BASE RSC /l 0x409
|
||||
# ADD RSC /l 0x409
|
||||
# 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 /nologo /dll /pdb:none /machine:I386 /out:"DLL-Release/cares.dll" /implib:"DLL-Release/cares_imp.lib"
|
||||
# ADD LINK32 ws2_32.lib advapi32.lib /nologo /dll /pdb:none /machine:I386 /out:"DLL-Release/cares.dll" /implib:"DLL-Release/cares_imp.lib"
|
||||
# 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"
|
||||
# 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"
|
||||
# PROP Output_Dir "lib-debug"
|
||||
# PROP Intermediate_Dir "lib-debug/obj"
|
||||
# PROP Target_Dir ""
|
||||
CPP=cl.exe
|
||||
# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\.." /D "WIN32" /D "DEBUGBUILD" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /GZ /c
|
||||
# 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 "DEBUGBUILD"
|
||||
# ADD RSC /l 0x409 /d "DEBUGBUILD"
|
||||
# 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/caresd.lib" /machine:I386
|
||||
# ADD LIB32 /nologo /out:"LIB-Debug/caresd.lib" /machine:I386
|
||||
# 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"
|
||||
# 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"
|
||||
# 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 "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\.." /D "WIN32" /D "CARES_BUILDING_LIBRARY" /D "CARES_STATICLIB" /FD /c
|
||||
# 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
|
||||
# ADD RSC /l 0x409
|
||||
# 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/cares.lib" /machine:I386
|
||||
# ADD LIB32 /nologo /out:"LIB-Release/cares.lib" /machine:I386
|
||||
# ADD BASE LIB32 /nologo /out:"lib-release/libcares.lib" /machine:I386
|
||||
# ADD LIB32 /nologo /out:"lib-release/libcares.lib" /machine:I386
|
||||
|
||||
!ENDIF
|
||||
|
||||
@@ -170,6 +170,10 @@ 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
|
||||
@@ -310,6 +314,10 @@ 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
|
||||
@@ -361,13 +369,13 @@ SOURCE=..\..\inet_ntop.h
|
||||
SOURCE=..\..\nameser.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
|
||||
|
||||
# PROP Default_Filter ""
|
||||
|
||||
# Begin Source File
|
||||
|
||||
|
||||
|
||||
# Begin Group "Resource Files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\cares.rc
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
|
@@ -267,6 +267,8 @@ for fname in .deps \
|
||||
aclocal.m4 \
|
||||
aclocal.m4.bak \
|
||||
ares_build.h \
|
||||
ares_config.h \
|
||||
ares_config.h.in \
|
||||
autom4te.cache \
|
||||
compile \
|
||||
config.guess \
|
||||
|
384
configure.ac
384
configure.ac
@@ -5,7 +5,7 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
@@ -42,9 +42,16 @@ CURL_CHECK_OPTION_DEBUG
|
||||
CURL_CHECK_OPTION_OPTIMIZE
|
||||
CURL_CHECK_OPTION_WARNINGS
|
||||
CURL_CHECK_OPTION_CURLDEBUG
|
||||
CURL_CHECK_OPTION_ARES
|
||||
|
||||
CURL_CHECK_PATH_SEPARATOR_REQUIRED
|
||||
|
||||
#
|
||||
# save the configure arguments
|
||||
#
|
||||
CONFIGURE_OPTIONS="\"$ac_configure_args\""
|
||||
AC_SUBST(CONFIGURE_OPTIONS)
|
||||
|
||||
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],
|
||||
@@ -89,6 +96,11 @@ AC_SUBST([AR])
|
||||
|
||||
AC_SUBST(libext)
|
||||
|
||||
dnl Remove non-configure distributed curlbuild.h
|
||||
if test -f ${srcdir}/include/curl/curlbuild.h; then
|
||||
rm -f ${srcdir}/include/curl/curlbuild.h
|
||||
fi
|
||||
|
||||
dnl figure out the libcurl version
|
||||
VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
|
||||
AM_INIT_AUTOMAKE(curl,$VERSION)
|
||||
@@ -124,6 +136,7 @@ curl_verbose_msg="enabled (--disable-verbose)"
|
||||
curl_sspi_msg="no (--enable-sspi)"
|
||||
curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
|
||||
curl_ldaps_msg="no (--enable-ldaps)"
|
||||
curl_rtsp_msg="no (--enable-rtsp)"
|
||||
|
||||
dnl
|
||||
dnl Save anything in $LIBS for later
|
||||
@@ -148,6 +161,7 @@ dnl This defines _ALL_SOURCE for AIX
|
||||
CURL_CHECK_AIX_ALL_SOURCE
|
||||
|
||||
dnl Our configure and build reentrant settings
|
||||
CURL_CONFIGURE_THREAD_SAFE
|
||||
CURL_CONFIGURE_REENTRANT
|
||||
|
||||
dnl check for how to do large files
|
||||
@@ -168,6 +182,17 @@ case $host in
|
||||
;;
|
||||
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
|
||||
|
||||
@@ -232,27 +257,17 @@ CURL_SET_COMPILER_DEBUG_OPTS
|
||||
CURL_SET_COMPILER_OPTIMIZE_OPTS
|
||||
CURL_SET_COMPILER_WARNING_OPTS
|
||||
|
||||
case $host in
|
||||
if test "$compiler_id" = "INTEL_UNIX_C"; then
|
||||
#
|
||||
x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
|
||||
#
|
||||
if test "$compiler_id" = "INTEL_UNIX_C"; then
|
||||
#
|
||||
if test "$compiler_num" -ge "900" &&
|
||||
test "$compiler_num" -lt "1000"; then
|
||||
dnl icc 9.X specific
|
||||
CFLAGS="$CFLAGS -i-dynamic"
|
||||
fi
|
||||
#
|
||||
if test "$compiler_num" -ge "1000"; then
|
||||
dnl icc 10.X or later
|
||||
CFLAGS="$CFLAGS -shared-intel"
|
||||
fi
|
||||
#
|
||||
fi
|
||||
;;
|
||||
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
|
||||
#
|
||||
esac
|
||||
fi
|
||||
|
||||
CURL_CHECK_COMPILER_HALT_ON_ERROR
|
||||
CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
|
||||
@@ -305,8 +320,10 @@ AC_HELP_STRING([--disable-http],[Disable HTTP support]),
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
|
||||
AC_MSG_WARN([disable HTTP disables FTP over proxy])
|
||||
AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
|
||||
AC_SUBST(CURL_DISABLE_HTTP, [1])
|
||||
AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
|
||||
AC_SUBST(CURL_DISABLE_RTSP, [1])
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
;;
|
||||
@@ -403,6 +420,32 @@ AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
|
||||
AC_SUBST(CURL_DISABLE_LDAPS, [1])
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING([whether to support rtsp])
|
||||
AC_ARG_ENABLE(rtsp,
|
||||
AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
|
||||
AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
|
||||
AC_SUBST(CURL_DISABLE_RTSP, [1])
|
||||
;;
|
||||
*) if test x$CURL_DISABLE_HTTP = x1 ; then
|
||||
AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
curl_rtsp_msg="enabled"
|
||||
fi
|
||||
;;
|
||||
esac ],
|
||||
if test "x$CURL_DISABLE_HTTP" != "x1"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
curl_rtsp_msg="enabled"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING([whether to support proxies])
|
||||
AC_ARG_ENABLE(proxy,
|
||||
AC_HELP_STRING([--enable-proxy],[Enable proxy support])
|
||||
@@ -465,6 +508,57 @@ AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
|
||||
AC_MSG_RESULT(yes)
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING([whether to support pop3])
|
||||
AC_ARG_ENABLE(pop3,
|
||||
AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
|
||||
AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
|
||||
AC_SUBST(CURL_DISABLE_POP3, [1])
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(yes)
|
||||
)
|
||||
|
||||
|
||||
AC_MSG_CHECKING([whether to support imap])
|
||||
AC_ARG_ENABLE(imap,
|
||||
AC_HELP_STRING([--enable-imap],[Enable IMAP support])
|
||||
AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
|
||||
AC_SUBST(CURL_DISABLE_IMAP, [1])
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(yes)
|
||||
)
|
||||
|
||||
|
||||
AC_MSG_CHECKING([whether to support smtp])
|
||||
AC_ARG_ENABLE(smtp,
|
||||
AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
|
||||
AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
|
||||
AC_SUBST(CURL_DISABLE_SMTP, [1])
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(yes)
|
||||
)
|
||||
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Check for built-in manual
|
||||
dnl **********************************************************************
|
||||
@@ -1164,33 +1258,61 @@ if test X"$OPT_SSL" != Xno; then
|
||||
dnl check the given --with-ssl spot
|
||||
PKGTEST="no"
|
||||
PREFIX_OPENSSL=$OPT_SSL
|
||||
|
||||
dnl Try pkg-config even when cross-compiling. Since we
|
||||
dnl specify PKG_CONFIG_LIBDIR we're only looking where
|
||||
dnl the user told us to look
|
||||
OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
|
||||
AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
|
||||
if test -e "$OPENSSL_PCDIR/openssl.pc"; then
|
||||
PKGTEST="yes"
|
||||
fi
|
||||
|
||||
dnl in case pkg-config comes up empty, use what we got
|
||||
dnl via --with-ssl
|
||||
LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
|
||||
if test "$PREFIX_OPENSSL" != "/usr" ; then
|
||||
LDFLAGS="$LDFLAGS -L$LIB_OPENSSL"
|
||||
CPPFLAGS="$CPPFLAGS -I$PREFIX_OPENSSL/include"
|
||||
SSL_LDFLAGS="-L$LIB_OPENSSL"
|
||||
SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
|
||||
fi
|
||||
CPPFLAGS="$CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
|
||||
SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$PKGTEST" = "yes"; then
|
||||
|
||||
CURL_CHECK_PKGCONFIG(openssl)
|
||||
CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
|
||||
|
||||
if test "$PKGCONFIG" != "no" ; then
|
||||
SSL_LIBS=`$PKGCONFIG --libs-only-l openssl 2>/dev/null`
|
||||
SSL_LDFLAGS=`$PKGCONFIG --libs-only-L openssl 2>/dev/null`
|
||||
SSL_CPPFLAGS=`$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
|
||||
SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
|
||||
$PKGCONFIG --libs-only-l openssl 2>/dev/null`
|
||||
|
||||
SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
|
||||
$PKGCONFIG --libs-only-L openssl 2>/dev/null`
|
||||
|
||||
SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
|
||||
$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
|
||||
|
||||
AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
|
||||
AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
|
||||
AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
|
||||
|
||||
LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
|
||||
|
||||
dnl use the values pkg-config reported
|
||||
dnl use the values pkg-config reported. This is here
|
||||
dnl instead of below with CPPFLAGS and LDFLAGS because we only
|
||||
dnl learn about this via pkg-config. If we only have
|
||||
dnl the argument to --with-ssl we don't know what
|
||||
dnl additional libs may be necessary. Hope that we
|
||||
dnl don't need any.
|
||||
LIBS="$LIBS $SSL_LIBS"
|
||||
CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
|
||||
LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl finally, set flags to use SSL
|
||||
CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
|
||||
LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
|
||||
|
||||
dnl This is for Msys/Mingw
|
||||
case $host in
|
||||
*-*-msys* | *-*-mingw*)
|
||||
@@ -1304,6 +1426,7 @@ if test X"$OPT_SSL" != Xno; then
|
||||
AC_CHECK_FUNCS( RAND_status \
|
||||
RAND_screen \
|
||||
RAND_egd \
|
||||
ENGINE_cleanup \
|
||||
CRYPTO_cleanup_all_ex_data \
|
||||
SSL_get_shutdown )
|
||||
|
||||
@@ -1612,6 +1735,12 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then
|
||||
version="unknown"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
# Without pkg-config, we'll kludge in some defaults
|
||||
addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
|
||||
addcflags="-I$OPT_NSS/include"
|
||||
version="unknown"
|
||||
nssprefix=$OPT_NSS
|
||||
fi
|
||||
|
||||
dnl Check for functionPK11_CreateGenericObject
|
||||
@@ -1707,7 +1836,7 @@ if test X"$OPT_LIBSSH2" != Xno; then
|
||||
version=`$PKGCONFIG --modversion libssh2`
|
||||
DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
|
||||
fi
|
||||
|
||||
|
||||
;;
|
||||
off)
|
||||
dnl no --with-libssh2 option given, just check default places
|
||||
@@ -1814,85 +1943,11 @@ case "$LIBIDN" in
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Default is to try the thread-safe versions of a few functions
|
||||
OPT_THREAD=on
|
||||
|
||||
dnl detect AIX 4.3 or later
|
||||
dnl see full docs on this reasoning in the lib/hostip.c source file
|
||||
AC_MSG_CHECKING([AIX 4.3 or later])
|
||||
AC_PREPROC_IFELSE([
|
||||
#if defined(_AIX) && defined(_AIX43)
|
||||
printf("just fine");
|
||||
#else
|
||||
#error "this is not AIX 4.3 or later"
|
||||
#endif
|
||||
],
|
||||
[ AC_MSG_RESULT([yes])
|
||||
RECENTAIX=yes
|
||||
OPT_THREAD=off ],
|
||||
[ AC_MSG_RESULT([no]) ]
|
||||
)
|
||||
|
||||
AC_ARG_ENABLE(thread,dnl
|
||||
AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
|
||||
AC_HELP_STRING([--enable-thread],[look for thread-safe functions]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
OPT_THREAD=off
|
||||
AC_MSG_WARN(libcurl will not get built using thread-safe functions)
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
]
|
||||
)
|
||||
|
||||
if test X"$OPT_THREAD" = Xoff
|
||||
then
|
||||
AC_DEFINE(DISABLED_THREADSAFE, 1,
|
||||
[Set to explicitly specify we don't want to use thread-safe functions])
|
||||
else
|
||||
dnl if test "$ipv6" != "yes"; then
|
||||
dnl dig around for gethostbyname_r()
|
||||
dnl the old gethostbyname_r check was done here
|
||||
|
||||
dnl dig around for gethostbyaddr_r()
|
||||
dnl the old gethostbyaddr_r check was here BUT COMMENTED OUT
|
||||
dnl fi
|
||||
|
||||
dnl poke around for inet_ntoa_r()
|
||||
dnl the old inet_ntoa_r check was done here
|
||||
|
||||
dnl is there a localtime_r()
|
||||
dnl the old localtime_r check was done here
|
||||
|
||||
dnl is there a strerror_r()
|
||||
dnl the old strerror_r check was done here
|
||||
|
||||
checkfor_gmtime_r="yes"
|
||||
fi
|
||||
|
||||
dnl for recent AIX versions, we skip all the thread-safe checks above since
|
||||
dnl they claim a thread-safe libc using the standard API. But there are
|
||||
dnl some functions still not thread-safe. Check for these!
|
||||
|
||||
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
|
||||
|
||||
if test "x$RECENTAIX" = "xyes"; then
|
||||
|
||||
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
|
||||
|
||||
dnl is there a localtime_r()
|
||||
dnl the old localtime_r check was done here
|
||||
|
||||
dnl is there a strerror_r()
|
||||
dnl the old strerror_r check was done here
|
||||
|
||||
checkfor_gmtime_r="yes"
|
||||
fi
|
||||
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Back to "normal" configuring
|
||||
@@ -1983,8 +2038,9 @@ CURL_CHECK_STRUCT_TIMEVAL
|
||||
CURL_VERIFY_RUNTIMELIBS
|
||||
|
||||
AC_CHECK_SIZEOF(size_t)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
AC_CHECK_SIZEOF(int)
|
||||
AC_CHECK_SIZEOF(short)
|
||||
CURL_CONFIGURE_LONG
|
||||
AC_CHECK_SIZEOF(time_t)
|
||||
AC_CHECK_SIZEOF(off_t)
|
||||
@@ -2220,81 +2276,8 @@ fi
|
||||
dnl set variable for use in automakefile(s)
|
||||
AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
|
||||
|
||||
aresembedded="unknown"
|
||||
configure_rundir=`pwd`
|
||||
embedded_ares_builddir="$configure_rundir/ares"
|
||||
AC_MSG_CHECKING([whether to enable c-ares])
|
||||
AC_ARG_ENABLE(ares,
|
||||
AC_HELP_STRING([--enable-ares=PATH],[Enable c-ares for name lookups])
|
||||
AC_HELP_STRING([--disable-ares],[Disable c-ares for name lookups]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
|
||||
if test "x$IPV6_ENABLED" = "x1"; then
|
||||
AC_MSG_NOTICE([c-ares may not work properly with ipv6])
|
||||
fi
|
||||
|
||||
AC_DEFINE(USE_ARES, 1, [Define if you want to enable c-ares support])
|
||||
dnl substitute HAVE_ARES for curl-config and similar
|
||||
HAVE_ARES="1"
|
||||
AC_SUBST(HAVE_ARES)
|
||||
curl_ares_msg="enabled"
|
||||
|
||||
LIBS="-lcares $LIBS"
|
||||
|
||||
dnl For backwards compatibility default to includes/lib in srcdir/ares
|
||||
dnl If a value is specified it is assumed that the libs are in $val/lib
|
||||
dnl and the includes are in $val/include. This is the default setup for
|
||||
dnl ares so it should not be a problem.
|
||||
if test "x$enableval" = "xyes" ; then
|
||||
if test -d "$srcdir/ares"; then
|
||||
aresembedded="yes"
|
||||
AC_CONFIG_SUBDIRS(ares)
|
||||
dnl Since c-ares has installable configured header files, path
|
||||
dnl inclusion is fully done in makefiles for in-tree builds.
|
||||
LDFLAGS="$LDFLAGS -L$embedded_ares_builddir"
|
||||
fi
|
||||
else
|
||||
CPPFLAGS="$CPPFLAGS -I$enableval/include"
|
||||
LDFLAGS="$LDFLAGS -L$enableval/lib"
|
||||
fi
|
||||
|
||||
if test -z "$aresembedded"; then
|
||||
dnl verify that a sufficient c-ares is here if we have pointed one
|
||||
dnl out and don't use the "embedded" ares dir (in which case we don't
|
||||
dnl check it because it might not have been built yet)
|
||||
AC_MSG_CHECKING([that c-ares is good and recent enough])
|
||||
AC_LINK_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
#include <ares.h>
|
||||
/* set of dummy functions in case c-ares was built with debug */
|
||||
void curl_dofree() { }
|
||||
void curl_sclose() { }
|
||||
void curl_domalloc() { }
|
||||
void curl_docalloc() { }
|
||||
void curl_socket() { }
|
||||
]],[[
|
||||
ares_channel channel;
|
||||
ares_cancel(channel); /* added in 1.2.0 */
|
||||
ares_process_fd(channel, 0, 0); /* added in 1.4.0 */
|
||||
]])
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([c-ares library defective or too old])
|
||||
])
|
||||
fi
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
dnl set variable for use in automakefile(s)
|
||||
AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$aresembedded = xyes)
|
||||
CURL_CHECK_LIB_ARES
|
||||
AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
|
||||
|
||||
dnl ************************************************************
|
||||
dnl disable verbose text strings
|
||||
@@ -2328,7 +2311,7 @@ AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
|
||||
AC_SUBST(USE_WINDOWS_SSPI, [1])
|
||||
curl_sspi_msg="yes"
|
||||
curl_sspi_msg="enabled"
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
|
||||
@@ -2486,7 +2469,7 @@ fi
|
||||
if test "x$HAVE_LIBZ" = "x1"; then
|
||||
SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
|
||||
fi
|
||||
if test "x$HAVE_ARES" = "x1"; then
|
||||
if test "x$USE_ARES" = "x1"; then
|
||||
SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
|
||||
fi
|
||||
if test "x$IDN_ENABLED" = "x1"; then
|
||||
@@ -2532,10 +2515,36 @@ fi
|
||||
if test "x$CURL_DISABLE_TFTP" != "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
|
||||
fi
|
||||
if test "x$CURL_DISABLE_POP3" != "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
|
||||
if test "x$SSL_ENABLED" = "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
|
||||
fi
|
||||
fi
|
||||
if test "x$CURL_DISABLE_IMAP" != "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
|
||||
if test "x$SSL_ENABLED" = "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
|
||||
fi
|
||||
fi
|
||||
if test "x$CURL_DISABLE_SMTP" != "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
|
||||
if test "x$SSL_ENABLED" = "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
|
||||
fi
|
||||
fi
|
||||
if test "x$USE_LIBSSH2" = "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
|
||||
fi
|
||||
if test "x$CURL_DISABLE_RTSP" != "x1"; then
|
||||
SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
|
||||
fi
|
||||
|
||||
dnl replace spaces with newlines
|
||||
dnl sort the lines
|
||||
dnl replace the newlines back to spaces
|
||||
SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
|
||||
|
||||
AC_SUBST(SUPPORT_PROTOCOLS)
|
||||
|
||||
@@ -2551,8 +2560,11 @@ squeeze CURL_LIBS
|
||||
squeeze LIBCURL_LIBS
|
||||
squeeze TEST_SERVER_LIBS
|
||||
|
||||
squeeze SUPPORT_FEATURES
|
||||
squeeze SUPPORT_PROTOCOLS
|
||||
|
||||
if test "x$want_curldebug_assumed" = "xyes" &&
|
||||
test "x$want_curldebug" = "xyes" && test "x$HAVE_ARES" = "x1"; then
|
||||
test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
|
||||
ac_configure_args="$ac_configure_args --enable-curldebug"
|
||||
fi
|
||||
|
||||
@@ -2610,6 +2622,8 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
|
||||
ca cert path: ${capath}
|
||||
LDAP support: ${curl_ldap_msg}
|
||||
LDAPS support: ${curl_ldaps_msg}
|
||||
RTSP support: ${curl_rtsp_msg}
|
||||
Protocols: ${SUPPORT_PROTOCOLS}
|
||||
])
|
||||
|
||||
if test "x$soname_bump" = "xyes"; then
|
||||
|
@@ -37,6 +37,7 @@ Available values for OPTION include:
|
||||
--cc compiler
|
||||
--cflags pre-processor and compiler flags
|
||||
--checkfor [version] check for (lib)curl of the specified version
|
||||
--configure the arguments given to configure when building curl
|
||||
--features newline separated list of enabled features
|
||||
--help display this help and exit
|
||||
--libs library linking information
|
||||
@@ -146,6 +147,10 @@ while test $# -gt 0; do
|
||||
echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@ @LIBS@
|
||||
;;
|
||||
|
||||
--configure)
|
||||
echo @CONFIGURE_OPTIONS@
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "unknown option: $1"
|
||||
usage 1
|
||||
|
@@ -63,6 +63,10 @@ Euphoria
|
||||
Written by Ray Smith
|
||||
http://rays-web.com/eulibcurl.htm
|
||||
|
||||
Falcon
|
||||
|
||||
http://www.falconpl.org/index.ftd?page_id=prjs&prj_id=curl
|
||||
|
||||
Ferite
|
||||
|
||||
Written by Paul Querna
|
||||
|
30
docs/FAQ
30
docs/FAQ
@@ -1,4 +1,4 @@
|
||||
Updated: Nov 3, 2009 (http://curl.haxx.se/docs/faq.html)
|
||||
Updated: Nov 7, 2009 (http://curl.haxx.se/docs/faq.html)
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
@@ -73,6 +73,7 @@ FAQ
|
||||
4.15 FTPS doesn't work
|
||||
4.16 My HTTP POST or PUT requests are slow!
|
||||
4.17 Non-functional connect timeouts on Windows
|
||||
4.18 file:// URLs containing drive letters (Windows, NetWare)
|
||||
|
||||
5. libcurl Issues
|
||||
5.1 Is libcurl thread-safe?
|
||||
@@ -915,6 +916,33 @@ FAQ
|
||||
anything else. This will make (lib)curl to consider the connection connected
|
||||
and thus the connect timeout won't trigger.
|
||||
|
||||
4.18 file:// URLs containing drive letters (Windows, NetWare)
|
||||
|
||||
When using cURL to try to download a local file, one might use a URL
|
||||
in this format:
|
||||
|
||||
file://D:/blah.txt
|
||||
|
||||
You'll find that even if D:\blah.txt does exist, cURL returns a 'file
|
||||
not found' error.
|
||||
|
||||
According to RFC 1738 (http://www.faqs.org/rfcs/rfc1738.html),
|
||||
file:// URLs must contain a host component, but it is ignored by
|
||||
most implementations. In the above example, 'D:' is treated as the
|
||||
host component, and is taken away. Thus, cURL tries to open '/blah.txt'.
|
||||
If your system is installed to drive C:, that will resolve to 'C:\blah.txt',
|
||||
and if that doesn't exist you will get the not found error.
|
||||
|
||||
To fix this problem, use file:// URLs with *three* leading slashes:
|
||||
|
||||
file:///D:/blah.txt
|
||||
|
||||
Alternatively, if it makes more sense, specify 'localhost' as the host
|
||||
component:
|
||||
|
||||
file://localhost/D:/blah.txt
|
||||
|
||||
In either case, cURL should now be looking for the correct file.
|
||||
|
||||
5. libcurl Issues
|
||||
|
||||
|
@@ -874,9 +874,9 @@ REDUCING SIZE
|
||||
.comment section).
|
||||
|
||||
Using these techniques it is possible to create a basic HTTP-only shared
|
||||
libcurl library for i386 Linux platforms that is only 94 KiB in size, and
|
||||
an FTP-only library that is 87 KiB in size (as of libcurl version 7.19.1,
|
||||
using gcc 4.2.2).
|
||||
libcurl library for i386 Linux platforms that is only 98 KiB in size, and
|
||||
an FTP-only library that is 94 KiB in size (as of libcurl version 7.20.0,
|
||||
using gcc 4.3.3).
|
||||
|
||||
You may find that statically linking libcurl to your application will
|
||||
result in a lower total size than dynamically linking.
|
||||
|
@@ -3,6 +3,12 @@ join in and help us correct one or more of these! Also be sure to check the
|
||||
changelog of the current development status, as one or more of these problems
|
||||
may have been fixed since this was written!
|
||||
|
||||
74. The HTTP spec allows headers to be merged and become comma-separated
|
||||
instead of being repeated several times. This also include Authenticate: and
|
||||
Proxy-Authenticate: headers and while this hardly every happens in real life
|
||||
it will confuse libcurl which does not properly support it for all headers -
|
||||
like those Authenticate headers.
|
||||
|
||||
73. if a connection is made to a FTP server but the server then just never
|
||||
sends the 220 response or otherwise is dead slow, libcurl will not
|
||||
acknowledge the connection timeout during that phase but only the "real"
|
||||
@@ -13,12 +19,6 @@ may have been fixed since this was written!
|
||||
72. "Pausing pipeline problems."
|
||||
http://curl.haxx.se/mail/lib-2009-07/0214.html
|
||||
|
||||
71. TFTP block size / better integration in transfer
|
||||
http://curl.haxx.se/mail/lib-2009-08/0028.html
|
||||
|
||||
Related problems with TFTP is also that currently (7.19.6) upload file sizes
|
||||
are limited to 32MB (http://curl.haxx.se/bug/view.cgi?id=2848436)
|
||||
|
||||
70. Problem re-using easy handle after call to curl_multi_remove_handle
|
||||
http://curl.haxx.se/mail/lib-2009-07/0249.html
|
||||
|
||||
@@ -40,11 +40,6 @@ may have been fixed since this was written!
|
||||
properly wait for the connect to be confirmed. See test case 564 for a first
|
||||
shot at a test case.
|
||||
|
||||
64. The threaded resolver used in libcurl on Windows has some kind of race
|
||||
problem when multiple simultanoes resolves are done, like with the multi
|
||||
interface transferring many files in parallell:
|
||||
http://curl.haxx.se/mail/lib-2009-04/0028.html
|
||||
|
||||
63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used
|
||||
for any further requests or transfers. The work-around is then to close that
|
||||
handle with curl_easy_cleanup() and create a new. Some more details:
|
||||
|
16
docs/THANKS
16
docs/THANKS
@@ -106,6 +106,7 @@ Chris Deidun
|
||||
Chris Flerackers
|
||||
Chris Gaukroger
|
||||
Chris Maltby
|
||||
Chris Mumford
|
||||
Christian Krause
|
||||
Christian Kurz
|
||||
Christian Robottom Reis
|
||||
@@ -176,6 +177,7 @@ David Wright
|
||||
David Yan
|
||||
Dengminwen
|
||||
Detlef Schmier
|
||||
Didier Brisebourg
|
||||
Diego Casorran
|
||||
Dima Barsky
|
||||
Dimitris Sarris
|
||||
@@ -241,6 +243,7 @@ Fred Machado
|
||||
Fred New
|
||||
Fred Noz
|
||||
Frederic Lepied
|
||||
Gabriel Kuri
|
||||
Gary Maxwell
|
||||
Gautam Kachroo
|
||||
Gautam Mani
|
||||
@@ -270,11 +273,11 @@ Greg Onufer
|
||||
Greg Zavertnik
|
||||
Grigory Entin
|
||||
Guenole Bescon
|
||||
Guenter Knauf
|
||||
Guillaume Arluison
|
||||
Gustaf Hui
|
||||
Gwenole Beauchesne
|
||||
G<EFBFBD>tz Babin-Ebell
|
||||
G<EFBFBD>nter Knauf
|
||||
Hamish Mackenzie
|
||||
Hang Kin Lau
|
||||
Hanno Kranzhoff
|
||||
@@ -350,12 +353,14 @@ Johan Anderson
|
||||
Johan Nilsson
|
||||
Johan van Selst
|
||||
John Crow
|
||||
John Dennis
|
||||
John E. Malmberg
|
||||
John Janssen
|
||||
John Kelly
|
||||
John Lask
|
||||
John Lightsey
|
||||
John McGowan
|
||||
John P. McCaskey
|
||||
John Wilkinson
|
||||
Johnny Luong
|
||||
Jon Grubbs
|
||||
@@ -374,6 +379,7 @@ Judson Bishop
|
||||
Juergen Wilke
|
||||
Jukka Pihl
|
||||
Julian Noble
|
||||
Julien Chaffraix
|
||||
Jun-ichiro itojun Hagino
|
||||
Jurij Smakov
|
||||
Justin Fletcher
|
||||
@@ -395,6 +401,7 @@ Ken Hirsch
|
||||
Ken Rastatter
|
||||
Kent Boortz
|
||||
Keshav Krity
|
||||
Kevin Baughman
|
||||
Kevin Fisk
|
||||
Kevin Lussier
|
||||
Kevin Reed
|
||||
@@ -406,6 +413,7 @@ Kjetil Jacobsen
|
||||
Klevtsov Vadim
|
||||
Kris Kennaway
|
||||
Krishnendu Majumdar
|
||||
Krister Johansen
|
||||
Kristian Gunstone
|
||||
Kristian K<>hntopp
|
||||
Kyle Sallee
|
||||
@@ -428,6 +436,7 @@ Linas Vepstas
|
||||
Ling Thio
|
||||
Linus Nielsen Feltzing
|
||||
Lisa Xu
|
||||
Liza Alenchery
|
||||
Loic Dachary
|
||||
Loren Kirkby
|
||||
Luca Altea
|
||||
@@ -486,6 +495,7 @@ Michael Jahn
|
||||
Michael Jerris
|
||||
Michael Mealling
|
||||
Michael Smith
|
||||
Michael Stillwell
|
||||
Michael Wallner
|
||||
Michal Bonino
|
||||
Michal Marek
|
||||
@@ -587,6 +597,7 @@ Ralph Mitchell
|
||||
Ramana Mokkapati
|
||||
Randy McMurchy
|
||||
Ravi Pratap
|
||||
Ray Dassen
|
||||
Ray Pekowski
|
||||
Reinout van Schouwen
|
||||
Renaud Chaillat
|
||||
@@ -661,6 +672,7 @@ Sonia Subramanian
|
||||
Spacen Jasset
|
||||
Spiridonoff A.V
|
||||
Stadler Stephan
|
||||
Stan van de Burgt
|
||||
Stefan Esser
|
||||
Stefan Krause
|
||||
Stefan Teleman
|
||||
@@ -679,6 +691,7 @@ Steve Roskowski
|
||||
Steven Bazyl
|
||||
Steven G. Johnson
|
||||
Stoned Elipot
|
||||
Sven Anders
|
||||
Sven Neuhaus
|
||||
Sven Wegener
|
||||
S<EFBFBD>bastien Willemijns
|
||||
@@ -704,6 +717,7 @@ Tom Benoist
|
||||
Tom Lee
|
||||
Tom Mattison
|
||||
Tom Moers
|
||||
Tom Mueller
|
||||
Tom Regner
|
||||
Tom Zerucha
|
||||
Tomas Pospisek
|
||||
|
23
docs/TODO
23
docs/TODO
@@ -37,8 +37,7 @@
|
||||
5. HTTP
|
||||
5.1 Better persistency for HTTP 1.0
|
||||
5.2 support FF3 sqlite cookie files
|
||||
5.3 Sort outgoing cookies
|
||||
5.4 Rearrange request header order
|
||||
5.3 Rearrange request header order
|
||||
|
||||
6. TELNET
|
||||
6.1 ditch stdin
|
||||
@@ -105,6 +104,7 @@
|
||||
15.4 remove several functions
|
||||
15.5 remove CURLOPT_FAILONERROR
|
||||
15.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
|
||||
15.7 remove progress meter from libcurl
|
||||
|
||||
==============================================================================
|
||||
|
||||
@@ -237,14 +237,7 @@
|
||||
We should consider how (lib)curl can/should support this.
|
||||
http://curl.haxx.se/bug/feature.cgi?id=1871388
|
||||
|
||||
5.3 Sort outgoing cookies
|
||||
|
||||
All the major browsers sort the cookies sent in the Cookie: header based on
|
||||
the length of the path for which the cookie is set with. This could lead to
|
||||
a small fraction of servers to not play well with curl:
|
||||
http://www.ietf.org/mail-archive/web/http-state/current/msg00150.html
|
||||
|
||||
5.4 Rearrange request header order
|
||||
5.3 Rearrange request header order
|
||||
|
||||
Server implementors often make an effort to detect browser and to reject
|
||||
clients it can detect to not match. One of the last details we cannot yet
|
||||
@@ -585,3 +578,13 @@ to provide the data to send.
|
||||
Remove support for a global DNS cache. Anything global is silly, and we
|
||||
already offer the share interface for the same functionality but done
|
||||
"right".
|
||||
|
||||
15.7 remove progress meter from libcurl
|
||||
|
||||
The internally provided progress meter output doesn't belong in the library.
|
||||
Basically no application wants it (apart from curl) but instead applications
|
||||
can and should do their own progress meters using the progress callback.
|
||||
|
||||
The progress callback should then be bumped as well to get proper 64bit
|
||||
variable types passed to it instead of doubles so that big files work
|
||||
correctly.
|
||||
|
@@ -42,6 +42,8 @@ Specify the oldest possible libcurl version string you want, and this
|
||||
script will return 0 if the current installation is new enough or it
|
||||
returns 1 and outputs a text saying that the current version is not new
|
||||
enough. (Added in 7.15.4)
|
||||
.IP "--configure"
|
||||
Displays the arguments given to configure when building curl.
|
||||
.IP "--feature"
|
||||
Lists what particular main features the installed libcurl was built with. At
|
||||
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
|
||||
|
55
docs/curl.1
55
docs/curl.1
@@ -5,7 +5,7 @@
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
@@ -21,7 +21,7 @@
|
||||
.\" * $Id$
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH curl 1 "10 July 2008" "Curl 7.19.0" "Curl Manual"
|
||||
.TH curl 1 "28 November 2009" "Curl 7.20.0" "Curl Manual"
|
||||
.SH NAME
|
||||
curl \- transfer a URL
|
||||
.SH SYNOPSIS
|
||||
@@ -461,19 +461,29 @@ will re-use the same IP address it already uses for the control
|
||||
connection. (Added in 7.14.2)
|
||||
|
||||
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
|
||||
.IP "--ftp-ssl"
|
||||
(FTP) Try to use SSL/TLS for the FTP connection. Reverts to a non-secure
|
||||
connection if the server doesn't support SSL/TLS. See also
|
||||
\fI--ftp-ssl-control\fP and \fI--ftp-ssl-reqd\fP for different levels of
|
||||
encryption required. (Added in 7.11.0)
|
||||
.IP "--ftp-pret"
|
||||
(FTP) Tell curl to send a PRET command before PASV (and EPSV). Certain
|
||||
FTP servers, mainly drftpd, require this non-standard command for
|
||||
directory listings as well as up and downloads in PASV mode.
|
||||
(Added in 7.20.x)
|
||||
.IP "--ssl"
|
||||
(FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the connection. Reverts to a
|
||||
non-secure connection if the server doesn't support SSL/TLS. See also
|
||||
\fI--ftp-ssl-control\fP and \fI--ssl-reqd\fP for different levels of
|
||||
encryption required. (Added in 7.20.0)
|
||||
|
||||
This option was formerly known as \fI--ftp-ssl\fP (Added in 7.11.0) and that
|
||||
can still be used but will be removed in a future version.
|
||||
.IP "--ftp-ssl-control"
|
||||
(FTP) Require SSL/TLS for the FTP login, clear for transfer. Allows secure
|
||||
authentication, but non-encrypted data transfers for efficiency. Fails the
|
||||
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
|
||||
.IP "--ftp-ssl-reqd"
|
||||
(FTP) Require SSL/TLS for the FTP connection.
|
||||
Terminates the connection if the server doesn't support SSL/TLS.
|
||||
(Added in 7.15.5)
|
||||
.IP "--ssl-reqd"
|
||||
(FTP, POP3, IMAP, SMTP) Require SSL/TLS for the connection. Terminates the
|
||||
connection if the server doesn't support SSL/TLS. (Added in 7.20.0)
|
||||
|
||||
This option was formerly known as \fI--ftp-ssl-reqd\fP (added in 7.15.5) and
|
||||
that can still be used but will be removed in a future version.
|
||||
.IP "--ftp-ssl-ccc"
|
||||
(FTP) Use CCC (Clear Command Channel)
|
||||
Shuts down the SSL/TLS layer after authenticating. The rest of the
|
||||
@@ -598,6 +608,9 @@ time only.
|
||||
make it discard all "session cookies". This will basically have the same effect
|
||||
as if a new session is started. Typical browsers always discard session
|
||||
cookies when they're closed down.
|
||||
.IP "-J/--remote-header-name"
|
||||
(HTTP) This option tells the -O/--remote-name option to use the server-specified
|
||||
Content-Disposition filename instead of extracting a filename from the URL.
|
||||
.IP "-k/--insecure"
|
||||
(SSL) This option explicitly allows curl to perform "insecure" SSL connections
|
||||
and transfers. All SSL connections are attempted to be made secure by using
|
||||
@@ -756,7 +769,15 @@ password to all hosts that the site may redirect to. This may or may not
|
||||
introduce a security breach if the site redirects you to a site to which
|
||||
you'll send your authentication info (which is plaintext in the case of HTTP
|
||||
Basic authentication).
|
||||
.IP "--mail-rcpt <address>"
|
||||
(SMTP) Specify a single address that the given mail should get sent to. This
|
||||
option can be used multiple times to specify many recipients.
|
||||
|
||||
(Added in 7.20.0)
|
||||
.IP "--mail-from <address>"
|
||||
(SMTP) Specify a single address that the given mail should get sent from.
|
||||
|
||||
(Added in 7.20.0)
|
||||
.IP "--max-filesize <bytes>"
|
||||
Specify the maximum size (in bytes) of a file to download. If the file
|
||||
requested is larger than this value, the transfer will not start and curl will
|
||||
@@ -1079,7 +1100,7 @@ timestamp.
|
||||
If a transient error is returned when curl tries to perform a transfer, it
|
||||
will retry this number of times before giving up. Setting the number to 0
|
||||
makes curl do no retries (which is the default). Transient error means either:
|
||||
a timeout, an FTP 5xx response code or an HTTP 5xx response code.
|
||||
a timeout, an FTP 4xx response code or an HTTP 5xx response code.
|
||||
|
||||
When curl is about to retry a transfer, it will first wait one second and then
|
||||
for all forthcoming retries it will double the waiting time until it reaches
|
||||
@@ -1149,6 +1170,8 @@ mutually exclusive.
|
||||
If this option is used several times, the last one will be used. (This option
|
||||
was previously wrongly documented and used as --socks without the number
|
||||
appended.)
|
||||
|
||||
This option (as well as \fI--socks4\fP) does not work with IPV6, FTPS or LDAP.
|
||||
.IP "--socks5-gssapi-service <servicename>"
|
||||
The default service name for a socks server is rcmd/server-fqdn. This option
|
||||
allows you to change it.
|
||||
@@ -1181,6 +1204,14 @@ TTYPE=<term> Sets the terminal type.
|
||||
XDISPLOC=<X display> Sets the X display location.
|
||||
|
||||
NEW_ENV=<var,val> Sets an environment variable.
|
||||
.IP "--tftp-blksize <value>"
|
||||
(TFTP) Set TFTP BLKSIZE option (must be >512). This is the block size that
|
||||
curl will try to use when tranferring data to or from a TFTP server. By
|
||||
default 512 bytes will be used.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
|
||||
(Added in 7.20.0)
|
||||
.IP "-T/--upload-file <file>"
|
||||
This transfers the specified local file to the remote URL. If there is no file
|
||||
part in the specified URL, Curl will append the local file name. NOTE that you
|
||||
|
@@ -12,10 +12,12 @@ EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
|
||||
# being currently built and tested are searched before the library which
|
||||
# might possibly already be installed in the system.
|
||||
#
|
||||
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file
|
||||
# $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
|
||||
# $(top_builddir)/include for generated curlbuild.h included from lib/setup.h
|
||||
# $(top_srcdir)/include is for libcurl's external include files
|
||||
|
||||
INCLUDES = -I$(top_builddir)/include \
|
||||
INCLUDES = -I$(top_builddir)/include/curl \
|
||||
-I$(top_builddir)/include \
|
||||
-I$(top_srcdir)/include
|
||||
|
||||
LIBDIR = $(top_builddir)/lib
|
||||
|
@@ -453,7 +453,7 @@ int main(int argc, char **argv) {
|
||||
{
|
||||
FILE *outfp;
|
||||
BIO_get_fp(out,&outfp);
|
||||
curl_easy_setopt(p.curl, CURLOPT_FILE,outfp);
|
||||
curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
|
||||
}
|
||||
|
||||
res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun) ;
|
||||
|
@@ -105,20 +105,23 @@ int main(int argc, char **argv)
|
||||
/* See how the transfers went */
|
||||
while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) {
|
||||
if (msg->msg == CURLMSG_DONE) {
|
||||
int idx, found = 0;
|
||||
|
||||
int idx, found = 0;
|
||||
/* Find out which handle this message is about */
|
||||
for (idx=0; idx<HANDLECOUNT; idx++) {
|
||||
found = (msg->easy_handle == handles[idx]);
|
||||
if(found)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Find out which handle this message is about */
|
||||
for (idx=0; (!found && (idx<HANDLECOUNT)); idx++) found = (msg->easy_handle == handles[idx]);
|
||||
|
||||
switch (idx) {
|
||||
case HTTP_HANDLE:
|
||||
printf("HTTP transfer completed with status %d\n", msg->data.result);
|
||||
break;
|
||||
case FTP_HANDLE:
|
||||
printf("FTP transfer completed with status %d\n", msg->data.result);
|
||||
break;
|
||||
}
|
||||
switch (idx) {
|
||||
case HTTP_HANDLE:
|
||||
printf("HTTP transfer completed with status %d\n", msg->data.result);
|
||||
break;
|
||||
case FTP_HANDLE:
|
||||
printf("FTP transfer completed with status %d\n", msg->data.result);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -209,6 +209,28 @@ the previous request didn't match (see \fICURLOPT_TIMECONDITION\fP). Alas, if
|
||||
this returns a 1 you know that the reason you didn't get data in return is
|
||||
because it didn't fulfill the condition. The long ths argument points to will
|
||||
get a zero stored if the condition instead was met. (Added in 7.19.4)
|
||||
.IP CURLINFO_RTSP_SESSION_ID
|
||||
Pass a pointer to a char pointer to receive a pointer to a string holding the
|
||||
most recent RTSP Session ID.
|
||||
|
||||
Applications wishing to resume an RTSP session on another connection should
|
||||
retreive this info before closing the active connection.
|
||||
.IP CURLINFO_RTSP_CLIENT_CSEQ
|
||||
Pass a pointer to a long to receive the next CSeq that will be used by the
|
||||
application.
|
||||
.IP CURLINFO_RTSP_SERVER_CSEQ
|
||||
Pass a pointer to a long to receive the next server CSeq that will be expected
|
||||
by the application.
|
||||
|
||||
\fI(NOTE: listening for server initiated requests is currently
|
||||
unimplemented).\fP
|
||||
|
||||
Applications wishing to resume an RTSP session on another connection should
|
||||
retreive this info before closing the active connection.
|
||||
.IP CURLINFO_RTSP_CSEQ_RECV
|
||||
Pass a pointer to a long to receive the most recently received CSeq from the
|
||||
server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you
|
||||
may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value.
|
||||
.SH TIMES
|
||||
.nf
|
||||
An overview of the six time values available from curl_easy_getinfo()
|
||||
|
@@ -5,7 +5,7 @@
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
@@ -21,7 +21,7 @@
|
||||
.\" * $Id$
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH curl_easy_setopt 3 "11 Dec 2008" "libcurl 7.19.3" "libcurl Manual"
|
||||
.TH curl_easy_setopt 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_easy_setopt \- set options for a curl easy handle
|
||||
.SH SYNOPSIS
|
||||
@@ -49,8 +49,8 @@ thus the string storage associated to the pointer argument may be overwritten
|
||||
after curl_easy_setopt() returns. Exceptions to this rule are described in
|
||||
the option details below.
|
||||
|
||||
NOTE: before 7.17.0 strings were not copied. Instead the user was forced keep
|
||||
them available until libcurl no longer needed them.
|
||||
Before version 7.17.0, strings were not copied. Instead the user was forced
|
||||
keep them available until libcurl no longer needed them.
|
||||
|
||||
The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
|
||||
\fIcurl_easy_duphandle(3)\fP call.
|
||||
@@ -347,9 +347,9 @@ This function will get called on all new connections made to a server, during
|
||||
the SSL negotiation. The SSL_CTX pointer will be a new one every time.
|
||||
|
||||
To use this properly, a non-trivial amount of knowledge of the openssl
|
||||
libraries is necessary. For example, using this function allows you to use openssl
|
||||
callbacks to add additional validation code for certificates, and even to
|
||||
change the actual URI of an HTTPS request (example used in the lib509 test
|
||||
libraries is necessary. For example, using this function allows you to use
|
||||
openssl callbacks to add additional validation code for certificates, and even
|
||||
to change the actual URI of an HTTPS request (example used in the lib509 test
|
||||
case). See also the example section for a replacement of the key, certificate
|
||||
and trust file settings.
|
||||
.IP CURLOPT_SSL_CTX_DATA
|
||||
@@ -401,6 +401,30 @@ follows:
|
||||
|
||||
You will need to override these definitions if they are different on your
|
||||
system.
|
||||
.IP CURLOPT_INTERLEAVEFUNCTION
|
||||
Function pointer that should match the following prototype: \fIsize_t
|
||||
function( void *ptr, size_t size, size_t nmemb, void *stream)\fP. This
|
||||
function gets called by libcurl as soon as it has received interleaved RTP
|
||||
data. This function gets called for each $ block and therefore contains
|
||||
exactly one upper-layer protocol unit (e.g. one RTP packet). Curl writes the
|
||||
interleaved header as well as the included data for each call. The first byte
|
||||
is always an ASCII dollar sign. The dollar sign is followed by a one byte
|
||||
channel identifier and then a 2 byte integer length in network byte order. See
|
||||
\fIRFC 2326 Section 10.12\fP for more information on how RTP interleaving
|
||||
behaves. If unset or set to NULL, curl will use the default write function.
|
||||
|
||||
Interleaved RTP poses some challeneges for the client application. Since the
|
||||
stream data is sharing the RTSP control connection, it is critical to service
|
||||
the RTP in a timely fashion. If the RTP data is not handled quickly,
|
||||
subsequent response processing may become unreasonably delayed and the
|
||||
connection may close. The application may use \fICURL_RTSPREQ_RECEIVE\fP to
|
||||
service RTP data when no requests are desired. If the application makes a
|
||||
request, (e.g. \fICURL_RTSPREQ_PAUSE\fP) then the response handler will
|
||||
process any pending RTP data before marking the request as finished. (Added
|
||||
in 7.20.0)
|
||||
.IP CURLOPT_INTERLEAVEDATA
|
||||
This is the stream that will be passed to \fICURLOPT_INTERLEAVEFUNCTION\fP when
|
||||
interleaved RTP data is received. (Added in 7.20.0)
|
||||
.SH ERROR OPTIONS
|
||||
.IP CURLOPT_ERRORBUFFER
|
||||
Pass a char * to a buffer that the libcurl may store human readable error
|
||||
@@ -449,6 +473,9 @@ on which protocols are supported.
|
||||
The string given to CURLOPT_URL must be url-encoded and follow RFC 2396
|
||||
(http://curl.haxx.se/rfc/rfc2396.txt).
|
||||
|
||||
Starting with version 7.20.0, the fragment part of the URI will not be send as
|
||||
part of the path, which was the case previously.
|
||||
|
||||
\fICURLOPT_URL\fP is the only option that \fBmust\fP be set before
|
||||
\fIcurl_easy_perform(3)\fP is called.
|
||||
|
||||
@@ -537,23 +564,23 @@ name.
|
||||
Pass a long. This sets the local port number of the socket used for
|
||||
connection. This can be used in combination with \fICURLOPT_INTERFACE\fP and
|
||||
you are recommended to use \fICURLOPT_LOCALPORTRANGE\fP as well when this is
|
||||
set. Note that the only valid port numbers are 1 - 65535. (Added in 7.15.2)
|
||||
set. Valid port numbers are 1 - 65535. (Added in 7.15.2)
|
||||
.IP CURLOPT_LOCALPORTRANGE
|
||||
Pass a long. This is the number of attempts libcurl should make to find a
|
||||
working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
|
||||
and adds one to the number for each retry. Setting this to 1 or below will
|
||||
make libcurl do only one try for the exact port number. Note that port numbers
|
||||
by nature are scarce resources that will be busy at times so setting this
|
||||
value to something too low might cause unnecessary connection setup
|
||||
failures. (Added in 7.15.2)
|
||||
make libcurl do only one try for the exact port number. Port numbers by nature
|
||||
are scarce resources that will be busy at times so setting this value to
|
||||
something too low might cause unnecessary connection setup failures. (Added in
|
||||
7.15.2)
|
||||
.IP CURLOPT_DNS_CACHE_TIMEOUT
|
||||
Pass a long, this sets the timeout in seconds. Name resolves will be kept in
|
||||
memory for this number of seconds. Set to zero to completely disable
|
||||
caching, or set to -1 to make the cached entries remain forever. By default,
|
||||
libcurl caches this info for 60 seconds.
|
||||
|
||||
NOTE: the name resolve functions of various libc implementations don't re-read
|
||||
name server information unless explicitly told so (for example, by calling
|
||||
The name resolve functions of various libc implementations don't re-read name
|
||||
server information unless explicitly told so (for example, by calling
|
||||
\fIres_init(3)\fP). This may cause libcurl to keep using the older server even
|
||||
if DHCP has updated the server info, and this may look like a DNS cache issue
|
||||
to the casual libcurl-app user.
|
||||
@@ -674,12 +701,12 @@ Pass a char * as parameter, which should be pointing to the zero terminated
|
||||
user name to use for the transfer while connecting to Proxy.
|
||||
|
||||
The CURLOPT_PROXYUSERNAME option should be used in same way as the
|
||||
\fICURLOPT_PROXYUSERPWD\fP is used. In comparison to \fICURLOPT_PROXYUSERPWD\fP
|
||||
the CURLOPT_PROXYUSERNAME allows the username to contain a colon,
|
||||
like in the following example: "sip:user@example.com".
|
||||
Note the CURLOPT_PROXYUSERNAME option is an alternative way to set the user name
|
||||
while connecting to Proxy. There is no meaning to use it together
|
||||
with the \fICURLOPT_PROXYUSERPWD\fP option.
|
||||
\fICURLOPT_PROXYUSERPWD\fP is used. In comparison to
|
||||
\fICURLOPT_PROXYUSERPWD\fP the CURLOPT_PROXYUSERNAME allows the username to
|
||||
contain a colon, like in the following example: "sip:user@example.com". The
|
||||
CURLOPT_PROXYUSERNAME option is an alternative way to set the user name while
|
||||
connecting to Proxy. There is no meaning to use it together with the
|
||||
\fICURLOPT_PROXYUSERPWD\fP option.
|
||||
|
||||
In order to specify the password to be used in conjunction with the user name
|
||||
use the \fICURLOPT_PROXYPASSWORD\fP option. (Added in 7.19.1)
|
||||
@@ -736,8 +763,8 @@ it finds suitable. libcurl will automatically select the one it finds most
|
||||
secure.
|
||||
.IP CURLAUTH_ANYSAFE
|
||||
This is a convenience macro that sets all bits except Basic and thus makes
|
||||
libcurl pick any it finds suitable. libcurl will automatically select the one it
|
||||
finds most secure.
|
||||
libcurl pick any it finds suitable. libcurl will automatically select the one
|
||||
it finds most secure.
|
||||
.RE
|
||||
.IP CURLOPT_PROXYAUTH
|
||||
Pass a long as parameter, which is set to a bitmask, to tell libcurl which
|
||||
@@ -775,7 +802,7 @@ and follow new Location: headers all the way until no more such headers are
|
||||
returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects
|
||||
libcurl will follow.
|
||||
|
||||
NOTE: since 7.19.4, libcurl can limit to what protocols it will automatically
|
||||
Since 7.19.4, libcurl can limit what protocols it will automatically
|
||||
follow. The accepted protocols are set with \fICURLOPT_REDIR_PROTOCOLS\fP and
|
||||
it excludes the FILE protocol by default.
|
||||
.IP CURLOPT_UNRESTRICTED_AUTH
|
||||
@@ -851,7 +878,7 @@ re-used handle, you must explicitly set the new request type using
|
||||
Pass a void * as parameter, which should be the full data to post in an HTTP
|
||||
POST operation. You must make sure that the data is formatted the way you want
|
||||
the server to receive it. libcurl will not convert or encode it for you. Most
|
||||
web servers will assume this data to be url-encoded. Take note.
|
||||
web servers will assume this data to be url-encoded.
|
||||
|
||||
The pointed data are NOT copied by the library: as a consequence, they must
|
||||
be preserved by the calling application until the transfer finishes.
|
||||
@@ -970,9 +997,9 @@ option and thus you need to concatenate them all in one single string. Set
|
||||
multiple cookies in one string like this: "name1=content1; name2=content2;"
|
||||
etc.
|
||||
|
||||
Note that this option sets the cookie header explictly in the outgoing
|
||||
request(s). If multiple requests are done due to authentication, followed
|
||||
redirections or similar, they will all get this cookie passed on.
|
||||
This option sets the cookie header explictly in the outgoing request(s). If
|
||||
multiple requests are done due to authentication, followed redirections or
|
||||
similar, they will all get this cookie passed on.
|
||||
|
||||
Using this option multiple times will only make the latest string override the
|
||||
previous ones.
|
||||
@@ -1045,16 +1072,29 @@ progress, and will simply stop the download when the server ends the
|
||||
connection. (added in 7.14.1)
|
||||
.IP CURLOPT_HTTP_CONTENT_DECODING
|
||||
Pass a long to tell libcurl how to act on content decoding. If set to zero,
|
||||
content decoding will be disabled. If set to 1 it is enabled. Note however
|
||||
that libcurl has no default content decoding but requires you to use
|
||||
\fICURLOPT_ENCODING\fP for that. (added in 7.16.2)
|
||||
content decoding will be disabled. If set to 1 it is enabled. Libcurl has no
|
||||
default content decoding but requires you to use \fICURLOPT_ENCODING\fP for
|
||||
that. (added in 7.16.2)
|
||||
.IP CURLOPT_HTTP_TRANSFER_DECODING
|
||||
Pass a long to tell libcurl how to act on transfer decoding. If set to zero,
|
||||
transfer decoding will be disabled, if set to 1 it is enabled
|
||||
(default). libcurl does chunked transfer decoding by default unless this
|
||||
option is set to zero. (added in 7.16.2)
|
||||
.SH SMTP OPTIONS
|
||||
.IP CURLOPT_MAIL_FROM
|
||||
Pass a pointer to a zero terminated string as parameter. It will be used to
|
||||
specify the sender address in a mail when sending an SMTP mail with libcurl.
|
||||
|
||||
(Added in 7.20.0)
|
||||
.IP CURLOPT_MAIL_RCPT
|
||||
Pass a pointer to a linked list of recipients to pass to the server in your
|
||||
SMTP mail request. The linked list should be a fully valid list of \fBstruct
|
||||
curl_slist\fP structs properly filled in. Use \fIcurl_slist_append(3)\fP to
|
||||
create the list and \fIcurl_slist_free_all(3)\fP to clean up an entire list.
|
||||
|
||||
(Added in 7.20.0)
|
||||
.SH TFTP OPTIONS
|
||||
.IP CURLOPT_TFTPBLKSIZE
|
||||
.IP CURLOPT_TFTP_BLKSIZE
|
||||
Specify block size to use for TFTP data transmission. Valid range as per RFC
|
||||
2348 is 8-65464 bytes. The default of 512 bytes will be used if this option is
|
||||
not specified. The specified block size will only be used pending support by
|
||||
@@ -1147,6 +1187,11 @@ means that it will first attempt to use EPSV before using PASV, but if you
|
||||
pass zero to this option, it will not try using EPSV, only plain PASV.
|
||||
|
||||
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
|
||||
.IP CURLOPT_FTP_USE_PRET
|
||||
Pass a long. If the value is 1, it tells curl to send a PRET command before
|
||||
PASV (and EPSV). Certain FTP servers, mainly drftpd, require this non-standard
|
||||
command for directory listings as well as up and downloads in PASV mode. Has
|
||||
no effect when using the active FTP transfers mode. (Added in 7.20.0)
|
||||
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
|
||||
Pass a long. If the value is 1, curl will attempt to create any remote
|
||||
directory that it fails to CWD into. CWD is the command that changes working
|
||||
@@ -1254,6 +1299,107 @@ file \&"normally" (like in the multicwd case). This is somewhat more standards
|
||||
compliant than 'nocwd' but without the full penalty of 'multicwd'.
|
||||
.RE
|
||||
(Added in 7.15.1)
|
||||
.SH RTSP OPTIONS
|
||||
.IP CURLOPT_RTSP_REQUEST
|
||||
Tell libcurl what kind of RTSP request to make. Pass one of the following RTSP
|
||||
enum values. Unless noted otherwise, commands require the Session ID to be
|
||||
initialized. (Added in 7.20.0)
|
||||
.RS
|
||||
.IP CURL_RTSPREQ_OPTIONS
|
||||
Used to retrieve the available methods of the server. The application is
|
||||
responsbile for parsing and obeying the response. \fB(The session ID is not
|
||||
needed for this method.)\fP (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_DESCRIBE
|
||||
Used to get the low level description of a stream. The application should note
|
||||
what formats it understands in the \fI'Accept:'\fP header. Unless set
|
||||
manually, libcurl will automatically fill in \fI'Accept:
|
||||
application/sdp'\fP. Time-condition headers will be added to Describe requests
|
||||
if the \fICURLOPT_TIMECONDITION\fP option is active. \fB(The session ID is not
|
||||
needed for this method)\fP (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_ANNOUNCE
|
||||
When sent by a client, this method changes the description of the session. For
|
||||
example, if a client is using the server to record a meeting, the client can
|
||||
use Announce to inform the server of all the meta-information about the
|
||||
session. ANNOUNCE acts like an HTTP PUT or POST just like
|
||||
\fICURL_RTSPREQ_SET_PARAMETER\fP (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_SETUP
|
||||
Setup is used to initialize the transport layer for the session. The
|
||||
application must set the desired Transport options for a session by using the
|
||||
\fICURLOPT_RTSP_TRANSPORT\fP option prior to calling setup. If no session ID
|
||||
is currently set with \fICURLOPT_RTSP_SESSION_ID\fP, libcurl will extract and
|
||||
use the session ID in the response to this request. \fB(The session ID is not
|
||||
needed for this method).\fP (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_PLAY
|
||||
Send a Play command to the server. Use the \fICURLOPT_RANGE\fP option to
|
||||
modify the playback time (e.g. 'npt=10-15'). (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_PAUSE
|
||||
Send a Pause command to the server. Use the \fICURLOPT_RANGE\fP option with a
|
||||
single value to indicate when the stream should be halted. (e.g. npt='25')
|
||||
(Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_TEARDOWN
|
||||
This command terminates an RTSP session. Simply closing a connection does not
|
||||
terminate the RTSP session since it is valid to control an RTSP session over
|
||||
different connections. (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_GET_PARAMETER
|
||||
Retrieve a parameter from the server. By default, libcurl will automatically
|
||||
include an \fIAccept: text/parameters\fP header unless a custom one is set.
|
||||
Applications wishing to send a heartbeat message (e.g. in the presence of a
|
||||
server-specified timeout) should send use an empty GET_PARAMETER request.
|
||||
(Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_SET_PARAMETER
|
||||
Set a parameter on the server. By default, libcurl will automatically include
|
||||
a \fIContent-Type: text/parameters\fP header unless a custom one is set. The
|
||||
interaction with SET_PARAMTER is much like an HTTP PUT or POST. An application
|
||||
may either use \fICURLOPT_UPLOAD\fP with \fICURLOPT_READDATA\fP like an HTTP
|
||||
PUT, or it may use \fICURLOPT_POSTFIELDS\fP like an HTTP POST. No chunked
|
||||
transfers are allowed, so the application must set the
|
||||
\fICURLOPT_INFILESIZE\fP in the former and \fICURLOPT_POSTFIELDSIZE\fP in the
|
||||
latter. Also, there is no use of multi-part POSTs within RTSP. (Added in
|
||||
7.20.0)
|
||||
.IP CURL_RTSPREQ_RECORD
|
||||
Used to tell the server to record a session. Use the \fICURLOPT_RANGE\fP
|
||||
option to modify the record time. (Added in 7.20.0)
|
||||
.IP CURL_RTSPREQ_RECEIVE
|
||||
This is a special request because it does not send any data to the server. The
|
||||
application may call this function in order to receive interleaved RTP
|
||||
data. It will return after processing one read buffer of data in order to give
|
||||
the application a chance to run. (Added in 7.20.0)
|
||||
.RE
|
||||
.IP CURLOPT_RTSP_SESSION_ID
|
||||
Pass a char * as a parameter to set the value of the current RTSP Session ID
|
||||
for the handle. Useful for resuming an in-progress session. Once this value is
|
||||
set to any non-NULL value, libcurl will return \fICURLE_RTSP_SESSION_ERROR\fP
|
||||
if ID received from the server does not match. If unset (or set to NULL),
|
||||
libcurl will automatically set the ID the first time the server sets it in a
|
||||
response. (Added in 7.20.0)
|
||||
.IP CURLOPT_RTSP_STREAM_URI
|
||||
Set the stream URI to operate on by passing a char * . For example, a single
|
||||
session may be controlling \fIrtsp://foo/twister/audio\fP and
|
||||
\fIrtsp://foo/twister/video\fP and the application can switch to the
|
||||
appropriate stream using this option. If unset, libcurl will default to
|
||||
operating on generic server options by passing '*' in the place of the RTSP
|
||||
Stream URI. This option is distinct from \fICURLOPT_URL\fP. When working with
|
||||
RTSP, the \fICURLOPT_STREAM_URI\fP indicates what URL to send to the server in
|
||||
the request header while the \fICURLOPT_URL\fP indicates where to make the
|
||||
connection to. (e.g. the \fICURLOPT_URL\fP for the above examples might be
|
||||
set to \fIrtsp://foo/twister\fP (Added in 7.20.0)
|
||||
.IP CURLOPT_RTSP_TRANSPORT
|
||||
Pass a char * to tell libcurl what to pass for the Transport: header for this
|
||||
RTSP session. This is mainly a convenience method to avoid needing to set a
|
||||
custom Transport: header for every SETUP request. The application must set a
|
||||
Transport: header before issuing a SETUP request. (Added in 7.20.0)
|
||||
.IP CURLOPT_RTSP_HEADER
|
||||
This option is simply an alias for \fICURLOPT_HTTP_HEADER\fP. Use this to
|
||||
replace the standard headers that RTSP and HTTP share. It is also valid to use
|
||||
the shortcuts such as \fICURLOPT_USERAGENT\fP. (Added in 7.20.0)
|
||||
.IP CURLOPT_RTSP_CLIENT_CSEQ
|
||||
Manually set the the CSEQ number to issue for the next RTSP request. Useful if
|
||||
the application is resuming a previously broken connection. The CSEQ will
|
||||
increment from this new number henceforth. (Added in 7.20.0)
|
||||
.IP CURLOPT_RTSP_SERVER_CSEQ
|
||||
Manually set the CSEQ number to expect for the next RTSP Server->Client
|
||||
request. At the moment, this feature (listening for Server requests) is
|
||||
unimplemented. (Added in 7.20.0)
|
||||
.SH PROTOCOL OPTIONS
|
||||
.IP CURLOPT_TRANSFERTEXT
|
||||
A parameter set to 1 tells the library to use ASCII mode for FTP transfers,
|
||||
@@ -1280,9 +1426,14 @@ want. It should be in the format "X-Y", where X or Y may be left out. HTTP
|
||||
transfers also support several intervals, separated with commas as in
|
||||
\fI"X-Y,N-M"\fP. Using this kind of multiple intervals will cause the HTTP
|
||||
server to send the response document in pieces (using standard MIME separation
|
||||
techniques). Pass a NULL to this option to disable the use of ranges.
|
||||
techniques). For RTSP, the formatting of a range should follow RFC 2326
|
||||
Section 12.29. For RTSP, byte ranges are \fBnot\fP permitted. Instead, ranges
|
||||
should be given in npt, utc, or smpte formats.
|
||||
|
||||
Ranges work on HTTP, FTP and FILE (since 7.18.0) transfers only.
|
||||
Pass a NULL to this option to disable the use of ranges.
|
||||
|
||||
Ranges work on HTTP, FTP, FILE (since 7.18.0), and RTSP (since 7.20.0)
|
||||
transfers only.
|
||||
.IP CURLOPT_RESUME_FROM
|
||||
Pass a long as parameter. It contains the offset in number of bytes that you
|
||||
want the transfer to start from. Set this option to 0 to make the transfer
|
||||
@@ -1341,8 +1492,8 @@ as a long. See also \fICURLOPT_INFILESIZE_LARGE\fP.
|
||||
For uploading using SCP, this option or \fICURLOPT_INFILESIZE_LARGE\fP is
|
||||
mandatory.
|
||||
|
||||
Note that this option does not limit how much data libcurl will actually send,
|
||||
as that is controlled entirely by what the read callback returns.
|
||||
This option does not limit how much data libcurl will actually send, as that
|
||||
is controlled entirely by what the read callback returns.
|
||||
.IP CURLOPT_INFILESIZE_LARGE
|
||||
When uploading a file to a remote site, this option should be used to tell
|
||||
libcurl what the expected size of the infile is. This value should be passed
|
||||
@@ -1350,8 +1501,8 @@ as a curl_off_t. (Added in 7.11.0)
|
||||
|
||||
For uploading using SCP, this option or \fICURLOPT_INFILESIZE\fP is mandatory.
|
||||
|
||||
Note that this option does not limit how much data libcurl will actually send,
|
||||
as that is controlled entirely by what the read callback returns.
|
||||
This option does not limit how much data libcurl will actually send, as that
|
||||
is controlled entirely by what the read callback returns.
|
||||
.IP CURLOPT_UPLOAD
|
||||
A parameter set to 1 tells the library to prepare for an upload. The
|
||||
\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
|
||||
@@ -1387,7 +1538,8 @@ given limit. This concerns both FTP and HTTP transfers.
|
||||
.IP CURLOPT_TIMECONDITION
|
||||
Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time
|
||||
value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
|
||||
or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP and FTP.
|
||||
or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP, FTP, and
|
||||
RTSP.
|
||||
|
||||
The last modification time of a file is not always known and in such instances
|
||||
this feature will have no effect even if the given time condition would not
|
||||
@@ -1447,9 +1599,9 @@ If you already have performed transfers with this curl handle, setting a
|
||||
smaller MAXCONNECTS than before may cause open connections to get closed
|
||||
unnecessarily.
|
||||
|
||||
Note that if you add this easy handle to a multi handle, this setting is not
|
||||
acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and
|
||||
the \fICURLMOPT_MAXCONNECTS\fP option.
|
||||
If you add this easy handle to a multi handle, this setting is not
|
||||
acknowledged, and you must instead use \fIcurl_multi_setopt(3)\fP and the
|
||||
\fICURLMOPT_MAXCONNECTS\fP option.
|
||||
.IP CURLOPT_CLOSEPOLICY
|
||||
(Obsolete) This option does nothing.
|
||||
.IP CURLOPT_FRESH_CONNECT
|
||||
@@ -1549,10 +1701,9 @@ operations.
|
||||
If the crypto device cannot be set, \fICURLE_SSL_ENGINE_SETFAILED\fP is
|
||||
returned.
|
||||
|
||||
Note that even though this option doesn't need any parameter, in some
|
||||
configurations \fIcurl_easy_setopt\fP might be defined as a macro taking
|
||||
exactly three arguments. Therefore, it's recommended to pass 1 as parameter to
|
||||
this option.
|
||||
Even though this option doesn't need any parameter, in some configurations
|
||||
\fIcurl_easy_setopt\fP might be defined as a macro taking exactly three
|
||||
arguments. Therefore, it's recommended to pass 1 as parameter to this option.
|
||||
.IP CURLOPT_SSLVERSION
|
||||
Pass a long as parameter to control what version of SSL/TLS to attempt to use.
|
||||
The available options are:
|
||||
@@ -1598,8 +1749,8 @@ combination with the \fICURLOPT_SSL_VERIFYPEER\fP option. If
|
||||
\fICURLOPT_SSL_VERIFYPEER\fP is zero, \fICURLOPT_CAINFO\fP need not
|
||||
even indicate an accessible file.
|
||||
|
||||
Note that option is by default set to the system path where libcurl's cacert
|
||||
bundle is assumed to be stored, as established at build time.
|
||||
This option is by default set to the system path where libcurl's cacert bundle
|
||||
is assumed to be stored, as established at build time.
|
||||
|
||||
When built against NSS, this is the directory that the NSS certificate
|
||||
database resides in.
|
||||
@@ -1608,8 +1759,8 @@ Pass a char * to a zero terminated string naming a file holding a CA
|
||||
certificate in PEM format. If the option is set, an additional check against
|
||||
the peer certificate is performed to verify the issuer is indeed the one
|
||||
associated with the certificate provided by the option. This additional check
|
||||
is useful in multi-level PKI where one needs to enforce that the peer certificate is
|
||||
from a specific branch of the tree.
|
||||
is useful in multi-level PKI where one needs to enforce that the peer
|
||||
certificate is from a specific branch of the tree.
|
||||
|
||||
This option makes sense only when used in combination with the
|
||||
\fICURLOPT_SSL_VERIFYPEER\fP option. Otherwise, the result of the check is not
|
||||
@@ -1644,8 +1795,8 @@ This option makes sense only when used in combination with the
|
||||
|
||||
A specific error code (CURLE_SSL_CRL_BADFILE) is defined with the option. It
|
||||
is returned when the SSL exchange fails because the CRL file cannot be loaded.
|
||||
Note that a failure in certificate verification due to a revocation information
|
||||
found in the CRL does not trigger this specific error. (Added in 7.19.0)
|
||||
A failure in certificate verification due to a revocation information found in
|
||||
the CRL does not trigger this specific error. (Added in 7.19.0)
|
||||
.IP CURLOPT_CERTINFO
|
||||
Pass a long set to 1 to enable libcurl's certificate chain info gatherer. With
|
||||
this enabled, libcurl (if built with OpenSSL) will extract lots of information
|
||||
@@ -1712,7 +1863,7 @@ You'll find more details about the NSS cipher lists on this URL:
|
||||
.IP CURLOPT_SSL_SESSIONID_CACHE
|
||||
Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set
|
||||
this to 1 to enable it. By default all transfers are done using the
|
||||
cache. Note that while nothing ever should get hurt by attempting to reuse SSL
|
||||
cache. While nothing ever should get hurt by attempting to reuse SSL
|
||||
session-IDs, there seem to be broken SSL implementations in the wild that may
|
||||
require you to disable this in order for you to succeed. (Added in 7.16.0)
|
||||
.IP CURLOPT_KRBLEVEL
|
||||
@@ -1740,9 +1891,9 @@ libcurl defaults to using \fB~/.ssh/id_dsa.pub\fP.
|
||||
(Added in 7.16.1)
|
||||
.IP CURLOPT_SSH_PRIVATE_KEYFILE
|
||||
Pass a char * pointing to a file name for your private key. If not used,
|
||||
libcurl defaults to using \fB~/.ssh/id_dsa\fP.
|
||||
If the file is password-protected, set the password with \fICURLOPT_KEYPASSWD\fP.
|
||||
(Added in 7.16.1)
|
||||
libcurl defaults to using \fB~/.ssh/id_dsa\fP. If the file is
|
||||
password-protected, set the password with \fICURLOPT_KEYPASSWD\fP. (Added in
|
||||
7.16.1)
|
||||
.IP CURLOPT_SSH_KNOWNHOSTS
|
||||
Pass a pointer to a zero terminated string holding the file name of the
|
||||
known_host file to use. The known_hosts file should use the OpenSSH file
|
||||
@@ -1761,9 +1912,9 @@ MUST return one of the following return codes to tell libcurl how to act:
|
||||
.IP CURLKHSTAT_FINE_ADD_TO_FILE
|
||||
The host+key is accepted and libcurl will append it to the known_hosts file
|
||||
before continuing with the connection. This will also add the host+key combo
|
||||
to the known_host pool kept in memory if it wasn't already present there. Note
|
||||
that the adding of data to the file is done by completely replacing the file
|
||||
with a new copy, so the permissions of the file must allow this.
|
||||
to the known_host pool kept in memory if it wasn't already present there. The
|
||||
adding of data to the file is done by completely replacing the file with a new
|
||||
copy, so the permissions of the file must allow this.
|
||||
.IP CURLKHSTAT_FINE
|
||||
The host+key is accepted libcurl will continue with the connection. This will
|
||||
also add the host+key combo to the known_host pool kept in memory if it wasn't
|
||||
|
@@ -21,21 +21,22 @@ but be sure to FD_ZERO them before calling this function as
|
||||
otherwise remove any others. The \fIcurl_multi_perform(3)\fP function should be
|
||||
called as soon as one of them is ready to be read from or written to.
|
||||
|
||||
To be sure to have up-to-date results, you should call
|
||||
\fIcurl_multi_perform\fP until it does not return CURLM_CALL_MULTI_PERFORM
|
||||
prior to calling \fIcurl_multi_fdset\fP. This will make sure that libcurl has
|
||||
updated the handles' socket states.
|
||||
|
||||
If no file descriptors are set by libcurl, \fImax_fd\fP will contain -1 when
|
||||
this function returns. Otherwise it will contain the higher descriptor number
|
||||
libcurl set.
|
||||
|
||||
You should also be aware that when doing select(), you should consider using a
|
||||
rather small (single-digit number of seconds) timeout and call
|
||||
\fIcurl_multi_perform\fP regularly - even if no activity has been seen on the
|
||||
fd_sets - as otherwise libcurl-internal retries and timeouts may not work as
|
||||
you'd think and want.
|
||||
|
||||
Starting with libcurl 7.16.0, you should use \fBcurl_multi_timeout\fP to
|
||||
figure out how long to wait for action.
|
||||
When doing select(), you should use \fBcurl_multi_timeout\fP to figure out how
|
||||
long to wait for action. Call \fIcurl_multi_perform\fP even if no activity has
|
||||
been seen on the fd_sets after the timeout expires as otherwise internal
|
||||
retries and timeouts may not work as you'd think and want.
|
||||
.SH RETURN VALUE
|
||||
CURLMcode type, general libcurl multi interface error code. See
|
||||
\fIlibcurl-errors(3)\fP
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_multi_cleanup "(3)," curl_multi_init "(3), "
|
||||
.BR curl_multi_timeout "(3) "
|
||||
.BR curl_multi_cleanup "(3), " curl_multi_init "(3), "
|
||||
.BR curl_multi_timeout "(3), " curl_multi_perform "(3) "
|
||||
|
@@ -22,25 +22,26 @@ changed from the previous call (or is less than the amount of easy handles
|
||||
you've added to the multi handle), you know that there is one or more
|
||||
transfers less "running". You can then call \fIcurl_multi_info_read(3)\fP to
|
||||
get information about each individual completed transfer, and that returned
|
||||
info includes CURLcode and more.
|
||||
info includes CURLcode and more. If an added handle fails very quickly, it may
|
||||
never be counted as a running_handle.
|
||||
|
||||
When \fIrunning_handles\fP is set to zero (0) on the return of this function,
|
||||
there is no longer any transfers in progress.
|
||||
.SH "RETURN VALUE"
|
||||
CURLMcode type, general libcurl multi interface error code.
|
||||
|
||||
If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you
|
||||
should call \fIcurl_multi_perform\fP again, before you select() on more
|
||||
actions. You don't have to do it immediately, but the return code means that
|
||||
libcurl may have more data available to return or that there may be more data
|
||||
to send off before it is "satisfied". Do note that \fIcurl_multi_perform(3)\fP
|
||||
will return \fICURLM_CALL_MULTI_PERFORM\fP only when it wants to be called
|
||||
again \fBimmediately\fP. When things are fine and there is nothing immediate
|
||||
it wants done, it'll return \fICURLM_OK\fP and you need to wait for \&"action"
|
||||
and then call this function again.
|
||||
Before version 7.20.0: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this
|
||||
basically means that you should call \fIcurl_multi_perform\fP again, before
|
||||
you select() on more actions. You don't have to do it immediately, but the
|
||||
return code means that libcurl may have more data available to return or that
|
||||
there may be more data to send off before it is "satisfied". Do note that
|
||||
\fIcurl_multi_perform(3)\fP will return \fICURLM_CALL_MULTI_PERFORM\fP only
|
||||
when it wants to be called again \fBimmediately\fP. When things are fine and
|
||||
there is nothing immediate it wants done, it'll return \fICURLM_OK\fP and you
|
||||
need to wait for \&"action" and then call this function again.
|
||||
|
||||
NOTE that this only returns errors etc regarding the whole multi stack. Problems
|
||||
still might have occurred on individual transfers even when this
|
||||
This function only returns errors etc regarding the whole multi stack.
|
||||
Problems still might have occurred on individual transfers even when this
|
||||
function returns \fICURLM_OK\fP.
|
||||
.SH "TYPICAL USAGE"
|
||||
Most applications will use \fIcurl_multi_fdset(3)\fP to get the multi_handle's
|
||||
|
@@ -22,8 +22,8 @@ CURL_CSELECT_ERR. When the events on a socket are unknown, pass 0 instead, and
|
||||
libcurl will test the descriptor internally.
|
||||
|
||||
At return, the integer \fBrunning_handles\fP points to will contain the number
|
||||
of still running easy handles within the multi handle. When this number
|
||||
reaches zero, all transfers are complete/done. Note that when you call
|
||||
of running easy handles within the multi handle. When this number reaches
|
||||
zero, all transfers are complete/done. When you call
|
||||
\fIcurl_multi_socket_action(3)\fP on a specific socket and the counter
|
||||
decreases by one, it DOES NOT necessarily mean that this exact socket/transfer
|
||||
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
|
||||
@@ -89,19 +89,16 @@ The \fIuserp\fP argument is a private pointer you have previously set with
|
||||
.SH "RETURN VALUE"
|
||||
CURLMcode type, general libcurl multi interface error code.
|
||||
|
||||
Legacy: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means
|
||||
that you should call \fIcurl_multi_socket_action(3)\fP again, before you wait
|
||||
for more actions on libcurl's sockets. You don't have to do it immediately,
|
||||
but the return code means that libcurl may have more data available to return
|
||||
or that there may be more data to send off before it is "satisfied".
|
||||
Before version 7.20.0: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this
|
||||
basically means that you should call \fIcurl_multi_socket_action(3)\fP again
|
||||
before you wait for more actions on libcurl's sockets. You don't have to do it
|
||||
immediately, but the return code means that libcurl may have more data
|
||||
available to return or that there may be more data to send off before it is
|
||||
"satisfied".
|
||||
|
||||
In modern libcurls, \fICURLM_CALL_MULTI_PERFORM\fP or
|
||||
\fICURLM_CALL_MULTI_SOKCET\fP should not be returned and no application needs
|
||||
to care about them.
|
||||
|
||||
NOTE that the return code is for the whole multi stack. Problems still might have
|
||||
occurred on individual transfers even when one of these functions
|
||||
return OK.
|
||||
The return code from this function is for the whole multi stack. Problems
|
||||
still might have occurred on individual transfers even when one of these
|
||||
functions return OK.
|
||||
.SH "TYPICAL USAGE"
|
||||
1. Create a multi handle
|
||||
|
||||
|
@@ -5,7 +5,7 @@
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
@@ -21,7 +21,7 @@
|
||||
.\" * $Id$
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH libcurl-errors 3 "8 Jun 2008" "libcurl 7.19.0" "libcurl errors"
|
||||
.TH libcurl-errors 3 "1 Jan 2010" "libcurl 7.20.0" "libcurl errors"
|
||||
.SH NAME
|
||||
libcurl-errors \- error codes in libcurl
|
||||
.SH DESCRIPTION
|
||||
@@ -70,6 +70,11 @@ either a PASV or a EPSV command. The server is flawed.
|
||||
.IP "CURLE_FTP_WEIRD_227_FORMAT (14)"
|
||||
FTP servers return a 227-line as a response to a PASV command. If libcurl
|
||||
fails to parse that line, this return code is passed back.
|
||||
.IP "CURLE_FTP_PRET_FAILED (84)"
|
||||
The FTP server does not understand the PRET command at all or does not support
|
||||
the given argument. Be careful when using \fICURLOPT_CUSTOMREQUEST\fP, a
|
||||
custom LIST command will be sent with PRET CMD before PASV as well. (Added in
|
||||
7.20.0)
|
||||
.IP "CURLE_FTP_CANT_GET_HOST (15)"
|
||||
An internal failure to lookup the host used for the new connection.
|
||||
.IP "CURLE_FTP_COULDNT_SET_TYPE (17)"
|
||||
@@ -87,15 +92,13 @@ returned an error code that was 400 or higher (for FTP) or otherwise
|
||||
indicated unsuccessful completion of the command.
|
||||
.IP "CURLE_HTTP_RETURNED_ERROR (22)"
|
||||
This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server
|
||||
returns an error code that is >= 400. (This error code was formerly known as
|
||||
CURLE_HTTP_NOT_FOUND.)
|
||||
returns an error code that is >= 400.
|
||||
.IP "CURLE_WRITE_ERROR (23)"
|
||||
An error occurred when writing received data to a local file, or an error was
|
||||
returned to libcurl from a write callback.
|
||||
.IP "CURLE_UPLOAD_FAILED (25)"
|
||||
Failed starting the upload. For FTP, the server typically denied the STOR
|
||||
command. The error buffer usually contains the server's explanation for this.
|
||||
(This error code was formerly known as CURLE_FTP_COULDNT_STOR_FILE.)
|
||||
.IP "CURLE_READ_ERROR (26)"
|
||||
There was a problem reading a local file or an error returned by the read
|
||||
callback.
|
||||
@@ -120,8 +123,9 @@ A problem occurred somewhere in the SSL/TLS handshake. You really want the
|
||||
error buffer and read the message there as it pinpoints the problem slightly
|
||||
more. Could be certificates (file formats, paths, permissions), passwords, and
|
||||
others.
|
||||
.IP "CURLE_FTP_BAD_DOWNLOAD_RESUME (36)"
|
||||
Attempting FTP resume beyond file size.
|
||||
.IP "CURLE_BAD_DOWNLOAD_RESUME (36)"
|
||||
The download could not be resumed because the specified offset was out of the
|
||||
file boundary.
|
||||
.IP "CURLE_FILE_COULDNT_READ_FILE (37)"
|
||||
A file given with FILE:// couldn't be opened. Most likely because the file
|
||||
path doesn't identify an existing file. Did you check file permissions?
|
||||
@@ -138,8 +142,7 @@ Internal error. A function was called with a bad parameter.
|
||||
.IP "CURLE_INTERFACE_FAILED (45)"
|
||||
Interface error. A specified outgoing interface could not be used. Set which
|
||||
interface to use for outgoing connections' source IP address with
|
||||
CURLOPT_INTERFACE. (This error code was formerly known as
|
||||
CURLE_HTTP_PORT_FAILED.)
|
||||
CURLOPT_INTERFACE.
|
||||
.IP "CURLE_TOO_MANY_REDIRECTS (47)"
|
||||
Too many redirects. When following redirects, libcurl hit the maximum amount.
|
||||
Set your limit with CURLOPT_MAXREDIRS.
|
||||
|
@@ -134,6 +134,7 @@ the future, you should be aware of the following current restrictions:
|
||||
.nf
|
||||
- Name resolves on non-windows unless c-ares is used
|
||||
- GnuTLS SSL connections
|
||||
- NSS SSL connections
|
||||
- Active FTP connections
|
||||
- HTTP proxy CONNECT operations
|
||||
- SOCKS proxy handshakes
|
||||
|
@@ -55,6 +55,10 @@ AC_DEFUN([LIBCURL_CHECK_CONFIG],
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP])
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT])
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP])
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_RTSP],[Defined if libcurl supports RTSP])
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_POP3],[Defined if libcurl supports POP3])
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_IMAP],[Defined if libcurl supports IMAP])
|
||||
AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP])
|
||||
|
||||
AC_ARG_WITH(libcurl,
|
||||
AC_HELP_STRING([--with-libcurl=DIR],[look for the curl library in DIR]),
|
||||
@@ -194,17 +198,23 @@ x=CURLOPT_VERBOSE;
|
||||
|
||||
# We don't have --protocols, so just assume that all
|
||||
# protocols are available
|
||||
_libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT"
|
||||
_libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP
|
||||
|
||||
if test x$libcurl_feature_SSL = xyes ; then
|
||||
_libcurl_protocols="$_libcurl_protocols HTTPS"
|
||||
|
||||
# FTPS wasn't standards-compliant until version
|
||||
# 7.11.0
|
||||
# 7.11.0 (0x070b00 == 461568)
|
||||
if test $_libcurl_version -ge 461568; then
|
||||
_libcurl_protocols="$_libcurl_protocols FTPS"
|
||||
fi
|
||||
fi
|
||||
|
||||
# RTSP, IMAP, POP3 and SMTP were added in
|
||||
# 7.20.0 (0x071400 == 463872)
|
||||
if test $_libcurl_version -ge 463872; then
|
||||
_libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP"
|
||||
fi
|
||||
fi
|
||||
|
||||
for _libcurl_protocol in $_libcurl_protocols ; do
|
||||
|
@@ -37,7 +37,7 @@ CURLE_FAILED_INIT 7.1
|
||||
CURLE_FILESIZE_EXCEEDED 7.10.8
|
||||
CURLE_FILE_COULDNT_READ_FILE 7.1
|
||||
CURLE_FTP_ACCESS_DENIED 7.1
|
||||
CURLE_FTP_BAD_DOWNLOAD_RESUME 7.1
|
||||
CURLE_FTP_BAD_DOWNLOAD_RESUME 7.1 7.1
|
||||
CURLE_FTP_CANT_GET_HOST 7.1
|
||||
CURLE_FTP_CANT_RECONNECT 7.1 7.17.0
|
||||
CURLE_FTP_COULDNT_GET_SIZE 7.1 7.17.0
|
||||
@@ -47,7 +47,9 @@ CURLE_FTP_COULDNT_SET_BINARY 7.1 7.17.0
|
||||
CURLE_FTP_COULDNT_SET_TYPE 7.17.0
|
||||
CURLE_FTP_COULDNT_STOR_FILE 7.1
|
||||
CURLE_FTP_COULDNT_USE_REST 7.1
|
||||
CURLE_FTP_PARTIAL_FILE 7.1 7.1
|
||||
CURLE_FTP_PORT_FAILED 7.1
|
||||
CURLE_FTP_PRET_FAILED 7.20.0
|
||||
CURLE_FTP_QUOTE_ERROR 7.1 7.17.0
|
||||
CURLE_FTP_SSL_FAILED - 7.17.0
|
||||
CURLE_FTP_USER_PASSWORD_INCORRECT 7.1 7.17.0
|
||||
@@ -74,13 +76,15 @@ CURLE_OPERATION_TIMEDOUT 7.17.0
|
||||
CURLE_OPERATION_TIMEOUTED 7.1 7.17.0
|
||||
CURLE_OUT_OF_MEMORY 7.1
|
||||
CURLE_PARTIAL_FILE 7.1
|
||||
CURLE_PEER_FAILED_VERIFICATION - 7.17.1
|
||||
CURLE_PEER_FAILED_VERIFICATION 7.17.1
|
||||
CURLE_QUOTE_ERROR 7.17.0
|
||||
CURLE_RANGE_ERROR 7.17.0
|
||||
CURLE_READ_ERROR 7.1
|
||||
CURLE_RECV_ERROR 7.13.0
|
||||
CURLE_REMOTE_ACCESS_DENIED 7.17.0
|
||||
CURLE_REMOTE_DISK_FULL 7.17.0
|
||||
CURLE_RTSP_CSEQ_ERROR 7.20.0
|
||||
CURLE_RTSP_SESSION_ERROR 7.20.0
|
||||
CURLE_SEND_ERROR 7.13.0
|
||||
CURLE_SHARE_IN_USE - 7.17.0
|
||||
CURLE_SSH 7.16.1
|
||||
@@ -93,7 +97,7 @@ CURLE_SSL_ENGINE_INITFAILED 7.13.0
|
||||
CURLE_SSL_ENGINE_NOTFOUND 7.9.3
|
||||
CURLE_SSL_ENGINE_SETFAILED 7.9.3
|
||||
CURLE_SSL_ISSUER_ERROR 7.19.0
|
||||
CURLE_SSL_PEER_CERTIFICATE 7.17.1
|
||||
CURLE_SSL_PEER_CERTIFICATE - 7.17.1
|
||||
CURLE_SSL_SHUTDOWN_FAILED 7.16.1
|
||||
CURLE_TELNET_OPTION_SYNTAX 7.7
|
||||
CURLE_TFTP_DISKFULL 7.15.0 7.17.0
|
||||
@@ -231,7 +235,17 @@ CURLOPT_FTP_SSL 7.11.0 7.16.4
|
||||
CURLOPT_FTP_SSL_CCC 7.16.1
|
||||
CURLOPT_FTP_USE_EPRT 7.10.5
|
||||
CURLOPT_FTP_USE_EPSV 7.9.2
|
||||
CURLOPT_FTP_USE_PRET 7.20.0
|
||||
CURLOPT_RTSP_REQUEST 7.20.0
|
||||
CURLOPT_RTSP_SESSION_ID 7.20.0
|
||||
CURLOPT_RTSP_STREAM_URI 7.20.0
|
||||
CURLOPT_RTSP_TRANSPORT 7.20.0
|
||||
CURLOPT_RTSP_CLIENT_CSEQ 7.20.0
|
||||
CURLOPT_RTSP_SERVER_CSEQ 7.20.0
|
||||
CURLOPT_INTERLEAVEDATA 7.20.0
|
||||
CURLOPT_INTERLEAVEFUNCTION 7.20.0
|
||||
CURLOPT_HEADER 7.1
|
||||
CURLOPT_HEADERDATA 7.10
|
||||
CURLOPT_HEADERFUNCTION 7.7.2
|
||||
CURLOPT_HTTP200ALIASES 7.10.3
|
||||
CURLOPT_HTTPAUTH 7.10.6
|
||||
@@ -259,6 +273,8 @@ CURLOPT_LOCALPORT 7.15.2
|
||||
CURLOPT_LOCALPORTRANGE 7.15.2
|
||||
CURLOPT_LOW_SPEED_LIMIT 7.1
|
||||
CURLOPT_LOW_SPEED_TIME 7.1
|
||||
CURLOPT_MAIL_FROM 7.20.0
|
||||
CURLOPT_MAIL_RCPT 7.20.0
|
||||
CURLOPT_MAXCONNECTS 7.7
|
||||
CURLOPT_MAXFILESIZE 7.10.8
|
||||
CURLOPT_MAXFILESIZE_LARGE 7.11.0
|
||||
@@ -374,10 +390,17 @@ CURLPROTO_FTP 7.19.4
|
||||
CURLPROTO_FTPS 7.19.4
|
||||
CURLPROTO_HTTP 7.19.4
|
||||
CURLPROTO_HTTPS 7.19.4
|
||||
CURLPROTO_IMAP 7.20.0
|
||||
CURLPROTO_IMAPS 7.20.0
|
||||
CURLPROTO_LDAP 7.19.4
|
||||
CURLPROTO_LDAPS 7.19.4
|
||||
CURLPROTO_POP3 7.20.0
|
||||
CURLPROTO_POP3S 7.20.0
|
||||
CURLPROTO_RTSP 7.20.0
|
||||
CURLPROTO_SCP 7.19.4
|
||||
CURLPROTO_SFTP 7.19.4
|
||||
CURLPROTO_SMTP 7.20.0
|
||||
CURLPROTO_SMTPS 7.20.0
|
||||
CURLPROTO_TELNET 7.19.4
|
||||
CURLPROTO_TFTP 7.19.4
|
||||
CURLPROXY_HTTP 7.10
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
@@ -31,16 +31,8 @@
|
||||
* http://cool.haxx.se/mailman/listinfo/curl-library/
|
||||
*/
|
||||
|
||||
/*
|
||||
* Leading 'curl' path on the 'curlbuild.h' include statement is
|
||||
* required to properly allow building outside of the source tree,
|
||||
* due to the fact that in this case 'curlbuild.h' is generated in
|
||||
* a subdirectory of the build tree while 'curl.h actually remains
|
||||
* in a subdirectory of the source tree.
|
||||
*/
|
||||
|
||||
#include "curlver.h" /* libcurl version defines */
|
||||
#include "curl/curlbuild.h" /* libcurl build definitions */
|
||||
#include "curlbuild.h" /* libcurl build definitions */
|
||||
#include "curlrules.h" /* libcurl rules enforcement */
|
||||
|
||||
/*
|
||||
@@ -55,6 +47,11 @@
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
|
||||
#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
|
||||
/* Needed for __FreeBSD_version symbol definition */
|
||||
#include <osreldate.h>
|
||||
#endif
|
||||
|
||||
/* The include stuff here below is mainly for time_t! */
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
@@ -74,7 +71,8 @@
|
||||
require it! */
|
||||
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
|
||||
defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY) || \
|
||||
defined(ANDROID)
|
||||
defined(ANDROID) || \
|
||||
(defined(__FreeBSD_version) && (__FreeBSD_version < 800000))
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
@@ -244,14 +242,6 @@ typedef curl_socket_t
|
||||
curlsocktype purpose,
|
||||
struct curl_sockaddr *address);
|
||||
|
||||
#ifndef CURL_NO_OLDIES
|
||||
/* not used since 7.10.8, will be removed in a future release */
|
||||
typedef int (*curl_passwd_callback)(void *clientp,
|
||||
const char *prompt,
|
||||
char *buffer,
|
||||
int buflen);
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
CURLIOE_OK, /* I/O operation successful */
|
||||
CURLIOE_UNKNOWNCMD, /* command was unknown to callback */
|
||||
@@ -415,6 +405,10 @@ typedef enum {
|
||||
wrong format (Added in 7.19.0) */
|
||||
CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in
|
||||
7.19.0) */
|
||||
CURLE_FTP_PRET_FAILED, /* 84 - a PRET command failed */
|
||||
CURLE_RTSP_CSEQ_ERROR, /* 85 - mismatch of RTSP CSeq numbers */
|
||||
CURLE_RTSP_SESSION_ERROR, /* 86 - mismatch of RTSP Session Identifiers */
|
||||
|
||||
CURL_LAST /* never use! */
|
||||
} CURLcode;
|
||||
|
||||
@@ -621,6 +615,13 @@ typedef enum {
|
||||
#define CURLPROTO_DICT (1<<9)
|
||||
#define CURLPROTO_FILE (1<<10)
|
||||
#define CURLPROTO_TFTP (1<<11)
|
||||
#define CURLPROTO_IMAP (1<<12)
|
||||
#define CURLPROTO_IMAPS (1<<13)
|
||||
#define CURLPROTO_POP3 (1<<14)
|
||||
#define CURLPROTO_POP3S (1<<15)
|
||||
#define CURLPROTO_SMTP (1<<16)
|
||||
#define CURLPROTO_SMTPS (1<<17)
|
||||
#define CURLPROTO_RTSP (1<<18)
|
||||
#define CURLPROTO_ALL (~0) /* enable everything */
|
||||
|
||||
/* long may be 32 or 64 bits, but we should never depend on anything else
|
||||
@@ -1036,6 +1037,7 @@ typedef enum {
|
||||
essentially places a demand on the FTP server to acknowledge commands
|
||||
in a timely manner. */
|
||||
CINIT(FTP_RESPONSE_TIMEOUT, LONG, 112),
|
||||
#define CURLOPT_SERVER_RESPONSE_TIMEOUT CURLOPT_FTP_RESPONSE_TIMEOUT
|
||||
|
||||
/* Set this option to one of the CURL_IPRESOLVE_* defines (see below) to
|
||||
tell libcurl to resolve names to those IP versions only. This only has
|
||||
@@ -1280,6 +1282,39 @@ typedef enum {
|
||||
/* set the SSH host key callback custom pointer */
|
||||
CINIT(SSH_KEYDATA, OBJECTPOINT, 185),
|
||||
|
||||
/* set the SMTP mail originator */
|
||||
CINIT(MAIL_FROM, OBJECTPOINT, 186),
|
||||
|
||||
/* set the SMTP mail receiver(s) */
|
||||
CINIT(MAIL_RCPT, OBJECTPOINT, 187),
|
||||
|
||||
/* FTP: send PRET before PASV */
|
||||
CINIT(FTP_USE_PRET, LONG, 188),
|
||||
|
||||
/* RTSP request method (OPTIONS, SETUP, PLAY, etc...) */
|
||||
CINIT(RTSP_REQUEST, LONG, 189),
|
||||
|
||||
/* The RTSP session identifier */
|
||||
CINIT(RTSP_SESSION_ID, OBJECTPOINT, 190),
|
||||
|
||||
/* The RTSP stream URI */
|
||||
CINIT(RTSP_STREAM_URI, OBJECTPOINT, 191),
|
||||
|
||||
/* The Transport: header to use in RTSP requests */
|
||||
CINIT(RTSP_TRANSPORT, OBJECTPOINT, 192),
|
||||
|
||||
/* Manually initialize the client RTSP CSeq for this handle */
|
||||
CINIT(RTSP_CLIENT_CSEQ, LONG, 193),
|
||||
|
||||
/* Manually initialize the server RTSP CSeq for this handle */
|
||||
CINIT(RTSP_SERVER_CSEQ, LONG, 194),
|
||||
|
||||
/* The stream to pass to INTERLEAVEFUNCTION. */
|
||||
CINIT(INTERLEAVEDATA, OBJECTPOINT, 195),
|
||||
|
||||
/* Let the application define a custom write method for RTP data */
|
||||
CINIT(INTERLEAVEFUNCTION, FUNCTIONPOINT, 196),
|
||||
|
||||
CURLOPT_LASTENTRY /* the last unused */
|
||||
} CURLoption;
|
||||
|
||||
@@ -1323,6 +1358,7 @@ typedef enum {
|
||||
#define CURLOPT_WRITEDATA CURLOPT_FILE
|
||||
#define CURLOPT_READDATA CURLOPT_INFILE
|
||||
#define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER
|
||||
#define CURLOPT_RTSPHEADER CURLOPT_HTTPHEADER
|
||||
|
||||
/* These enums are for use with the CURLOPT_HTTP_VERSION option. */
|
||||
enum {
|
||||
@@ -1335,6 +1371,25 @@ enum {
|
||||
CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */
|
||||
};
|
||||
|
||||
/*
|
||||
* Public API enums for RTSP requests
|
||||
*/
|
||||
enum {
|
||||
CURL_RTSPREQ_NONE, /* first in list */
|
||||
CURL_RTSPREQ_OPTIONS,
|
||||
CURL_RTSPREQ_DESCRIBE,
|
||||
CURL_RTSPREQ_ANNOUNCE,
|
||||
CURL_RTSPREQ_SETUP,
|
||||
CURL_RTSPREQ_PLAY,
|
||||
CURL_RTSPREQ_PAUSE,
|
||||
CURL_RTSPREQ_TEARDOWN,
|
||||
CURL_RTSPREQ_GET_PARAMETER,
|
||||
CURL_RTSPREQ_SET_PARAMETER,
|
||||
CURL_RTSPREQ_RECORD,
|
||||
CURL_RTSPREQ_RECEIVE,
|
||||
CURL_RTSPREQ_LAST /* last in list */
|
||||
};
|
||||
|
||||
/* These enums are for use with the CURLOPT_NETRC option. */
|
||||
enum CURL_NETRC_OPTION {
|
||||
CURL_NETRC_IGNORED, /* The .netrc will never be read.
|
||||
@@ -1704,9 +1759,13 @@ typedef enum {
|
||||
CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
|
||||
CURLINFO_CERTINFO = CURLINFO_SLIST + 34,
|
||||
CURLINFO_CONDITION_UNMET = CURLINFO_LONG + 35,
|
||||
CURLINFO_RTSP_SESSION_ID = CURLINFO_STRING + 36,
|
||||
CURLINFO_RTSP_CLIENT_CSEQ = CURLINFO_LONG + 37,
|
||||
CURLINFO_RTSP_SERVER_CSEQ = CURLINFO_LONG + 38,
|
||||
CURLINFO_RTSP_CSEQ_RECV = CURLINFO_LONG + 39,
|
||||
/* Fill in new entries below here! */
|
||||
|
||||
CURLINFO_LASTONE = 35
|
||||
CURLINFO_LASTONE = 39
|
||||
} CURLINFO;
|
||||
|
||||
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
|
||||
|
@@ -370,16 +370,7 @@
|
||||
# define CURL_SIZEOF_CURL_SOCKLEN_T 4
|
||||
|
||||
#elif defined(__VMS)
|
||||
# if defined(__alpha) || defined(__ia64)
|
||||
# define CURL_SIZEOF_LONG 4
|
||||
# define CURL_TYPEOF_CURL_OFF_T long long
|
||||
# define CURL_FORMAT_CURL_OFF_T "lld"
|
||||
# define CURL_FORMAT_CURL_OFF_TU "llu"
|
||||
# define CURL_FORMAT_OFF_T "%lld"
|
||||
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||
# define CURL_SUFFIX_CURL_OFF_T LL
|
||||
# define CURL_SUFFIX_CURL_OFF_TU ULL
|
||||
# else
|
||||
# if defined(__VAX)
|
||||
# define CURL_SIZEOF_LONG 4
|
||||
# define CURL_TYPEOF_CURL_OFF_T long
|
||||
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||
@@ -388,6 +379,15 @@
|
||||
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||
# define CURL_SUFFIX_CURL_OFF_T L
|
||||
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||
# else
|
||||
# define CURL_SIZEOF_LONG 4
|
||||
# define CURL_TYPEOF_CURL_OFF_T long long
|
||||
# define CURL_FORMAT_CURL_OFF_T "lld"
|
||||
# define CURL_FORMAT_CURL_OFF_TU "llu"
|
||||
# define CURL_FORMAT_OFF_T "%lld"
|
||||
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||
# define CURL_SUFFIX_CURL_OFF_T LL
|
||||
# define CURL_SUFFIX_CURL_OFF_TU ULL
|
||||
# endif
|
||||
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
|
||||
# define CURL_SIZEOF_CURL_SOCKLEN_T 4
|
||||
|
@@ -7,7 +7,7 @@
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
* Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
*
|
||||
* This software is licensed as described in the file COPYING, which
|
||||
* you should have received as part of this distribution. The terms
|
||||
@@ -246,4 +246,8 @@ typedef char
|
||||
#undef CURL_TYPEOF_CURL_SOCKLEN_T
|
||||
#undef CURL_TYPEOF_CURL_OFF_T
|
||||
|
||||
#ifdef CURL_NO_OLDIES
|
||||
#undef CURL_FORMAT_OFF_T /* not required since 7.19.0 - obsoleted in 7.20.0 */
|
||||
#endif
|
||||
|
||||
#endif /* __CURL_CURLRULES_H */
|
||||
|
@@ -31,13 +31,13 @@
|
||||
|
||||
/* This is the version number of the libcurl package from which this header
|
||||
file origins: */
|
||||
#define LIBCURL_VERSION "7.19.7-CVS"
|
||||
#define LIBCURL_VERSION "7.20.0-CVS"
|
||||
|
||||
/* The numeric version number is also available "in parts" by using these
|
||||
defines: */
|
||||
#define LIBCURL_VERSION_MAJOR 7
|
||||
#define LIBCURL_VERSION_MINOR 19
|
||||
#define LIBCURL_VERSION_PATCH 7
|
||||
#define LIBCURL_VERSION_MINOR 20
|
||||
#define LIBCURL_VERSION_PATCH 0
|
||||
|
||||
/* This is the numeric version of the libcurl version number, meant for easier
|
||||
parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
|
||||
@@ -54,7 +54,7 @@
|
||||
and it is always a greater number in a more recent release. It makes
|
||||
comparisons with greater than and less than work.
|
||||
*/
|
||||
#define LIBCURL_VERSION_NUM 0x071307
|
||||
#define LIBCURL_VERSION_NUM 0x071400
|
||||
|
||||
/*
|
||||
* This is the date and time when the full source package was created. The
|
||||
|
@@ -39,38 +39,23 @@ C_ARG = $(OBJ_BASE)\wcc386.arg
|
||||
LINK_ARG = $(OBJ_BASE)\dyn\wlink.arg
|
||||
LIB_ARG = $(OBJ_BASE)\stat\wlib.arg
|
||||
|
||||
OBJS = $(OBJ_DIR)\base64.obj $(OBJ_DIR)\connect.obj &
|
||||
$(OBJ_DIR)\content_encoding.obj $(OBJ_DIR)\cookie.obj &
|
||||
$(OBJ_DIR)\curl_addrinfo.obj $(OBJ_DIR)\dict.obj &
|
||||
$(OBJ_DIR)\easy.obj $(OBJ_DIR)\escape.obj &
|
||||
$(OBJ_DIR)\file.obj $(OBJ_DIR)\formdata.obj &
|
||||
$(OBJ_DIR)\ftp.obj $(OBJ_DIR)\getenv.obj &
|
||||
$(OBJ_DIR)\getinfo.obj $(OBJ_DIR)\gtls.obj &
|
||||
$(OBJ_DIR)\hash.obj $(OBJ_DIR)\hostares.obj &
|
||||
$(OBJ_DIR)\hostasyn.obj $(OBJ_DIR)\hostip.obj &
|
||||
$(OBJ_DIR)\hostip4.obj $(OBJ_DIR)\hostip6.obj &
|
||||
$(OBJ_DIR)\hostsyn.obj $(OBJ_DIR)\hostthre.obj &
|
||||
$(OBJ_DIR)\http.obj $(OBJ_DIR)\http_chunks.obj &
|
||||
$(OBJ_DIR)\http_digest.obj $(OBJ_DIR)\http_negotiate.obj &
|
||||
$(OBJ_DIR)\http_ntlm.obj $(OBJ_DIR)\if2ip.obj &
|
||||
$(OBJ_DIR)\inet_ntop.obj $(OBJ_DIR)\inet_pton.obj &
|
||||
$(OBJ_DIR)\krb4.obj $(OBJ_DIR)\ldap.obj &
|
||||
$(OBJ_DIR)\llist.obj $(OBJ_DIR)\md5.obj &
|
||||
$(OBJ_DIR)\memdebug.obj $(OBJ_DIR)\mprintf.obj &
|
||||
$(OBJ_DIR)\multi.obj $(OBJ_DIR)\netrc.obj &
|
||||
$(OBJ_DIR)\parsedate.obj $(OBJ_DIR)\progress.obj &
|
||||
$(OBJ_DIR)\security.obj $(OBJ_DIR)\rawstr.obj &
|
||||
$(OBJ_DIR)\select.obj $(OBJ_DIR)\sendf.obj &
|
||||
$(OBJ_DIR)\share.obj $(OBJ_DIR)\socks.obj &
|
||||
$(OBJ_DIR)\speedcheck.obj $(OBJ_DIR)\splay.obj &
|
||||
$(OBJ_DIR)\sslgen.obj $(OBJ_DIR)\ssluse.obj &
|
||||
$(OBJ_DIR)\strequal.obj $(OBJ_DIR)\strerror.obj &
|
||||
$(OBJ_DIR)\strtok.obj $(OBJ_DIR)\strtoofft.obj &
|
||||
$(OBJ_DIR)\telnet.obj $(OBJ_DIR)\tftp.obj &
|
||||
$(OBJ_DIR)\timeval.obj $(OBJ_DIR)\transfer.obj &
|
||||
$(OBJ_DIR)\url.obj $(OBJ_DIR)\version.obj &
|
||||
$(OBJ_DIR)\slist.obj $(OBJ_DIR)\nonblock.obj &
|
||||
$(OBJ_DIR)\curl_rand.obj $(OBJ_DIR)\curl_memrchr.obj
|
||||
# Unfortunately, we can't include Makefile.inc here because wmake doesn't
|
||||
# use backslash as the line continuation character by default
|
||||
CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c &
|
||||
cookie.c http.c sendf.c ftp.c url.c dict.c if2ip.c speedcheck.c &
|
||||
ldap.c ssluse.c version.c getenv.c escape.c mprintf.c telnet.c &
|
||||
netrc.c getinfo.c transfer.c strequal.c easy.c security.c krb4.c &
|
||||
krb5.c memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c &
|
||||
multi.c content_encoding.c share.c http_digest.c md5.c curl_rand.c &
|
||||
http_negotiate.c http_ntlm.c inet_pton.c strtoofft.c strerror.c &
|
||||
hostares.c hostasyn.c hostip4.c hostip6.c hostsyn.c hostthre.c &
|
||||
inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c &
|
||||
strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c &
|
||||
socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c &
|
||||
curl_memrchr.c imap.c pop3.c smtp.c pingpong.c rtsp.c curl_threads.c
|
||||
|
||||
OBJS = $(CSOURCES:.c=.obj)
|
||||
OBJS = $OBJ_DIR\$(OBJS: = $OBJ_DIR\)
|
||||
|
||||
#
|
||||
# Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
|
||||
@@ -554,3 +539,27 @@ $(OBJ_DIR)\curl_memrchr.obj: curl_memrchr.c setup.h config-win32.h &
|
||||
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||
..\include\curl\multi.h ..\include\curl\curl.h curl_memrchr.h &
|
||||
..\include\curl\mprintf.h curl_memory.h memdebug.h
|
||||
$(OBJ_DIR)\imap.obj: imap.c setup.h config-win32.h &
|
||||
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||
..\include\curl\multi.h ..\include\curl\curl.h imap.h &
|
||||
..\include\curl\mprintf.h curl_memory.h memdebug.h
|
||||
$(OBJ_DIR)\pop3.obj: pop3.c setup.h config-win32.h &
|
||||
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||
..\include\curl\multi.h ..\include\curl\curl.h pop3.h &
|
||||
..\include\curl\mprintf.h curl_memory.h memdebug.h
|
||||
$(OBJ_DIR)\smtp.obj: smtp.c setup.h config-win32.h &
|
||||
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||
..\include\curl\multi.h ..\include\curl\curl.h smtp.h &
|
||||
..\include\curl\mprintf.h curl_memory.h memdebug.h
|
||||
$(OBJ_DIR)\pingpong.obj: pingpong.c setup.h config-win32.h &
|
||||
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||
..\include\curl\multi.h ..\include\curl\curl.h pingpong.h &
|
||||
..\include\curl\mprintf.h curl_memory.h memdebug.h
|
||||
|
@@ -5,7 +5,7 @@
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
@@ -27,7 +27,7 @@ VCPROJ = libcurl.vcproj
|
||||
|
||||
DOCS = README.encoding README.memoryleak README.ares README.curlx \
|
||||
README.hostip README.multi_socket README.httpauth README.pipelining \
|
||||
README.curl_off_t README.cmake
|
||||
README.curl_off_t README.cmake README.pingpong
|
||||
|
||||
CMAKE_DIST = CMakeLists.txt curl_config.h.cmake
|
||||
|
||||
@@ -50,7 +50,8 @@ LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
# being currently built and tested are searched before the library which
|
||||
# might possibly already be installed in the system.
|
||||
#
|
||||
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file
|
||||
# $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
|
||||
# $(top_builddir)/include for generated curlbuild.h included from lib/setup.h
|
||||
# $(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
|
||||
@@ -58,16 +59,18 @@ LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||
# $(top_srcdir)/ares is for in-tree c-ares's external include files
|
||||
|
||||
if USE_EMBEDDED_ARES
|
||||
INCLUDES = -I$(top_builddir)/include \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/lib \
|
||||
-I$(top_srcdir)/lib \
|
||||
-I$(top_builddir)/ares \
|
||||
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)/ares \
|
||||
-I$(top_srcdir)/ares
|
||||
else
|
||||
INCLUDES = -I$(top_builddir)/include \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/lib \
|
||||
INCLUDES = -I$(top_builddir)/include/curl \
|
||||
-I$(top_builddir)/include \
|
||||
-I$(top_srcdir)/include \
|
||||
-I$(top_builddir)/lib \
|
||||
-I$(top_srcdir)/lib
|
||||
endif
|
||||
|
||||
@@ -81,9 +84,9 @@ if SONAME_BUMP
|
||||
#
|
||||
# This conditional soname bump SHOULD be removed at next "proper" bump.
|
||||
#
|
||||
VERSIONINFO=-version-info 6:1:1
|
||||
VERSIONINFO=-version-info 7:0:2
|
||||
else
|
||||
VERSIONINFO=-version-info 5:1:1
|
||||
VERSIONINFO=-version-info 6:0:2
|
||||
endif
|
||||
|
||||
# This flag accepts an argument of the form current[:revision[:age]]. So,
|
||||
|
@@ -11,7 +11,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
|
||||
inet_ntop.c parsedate.c select.c gtls.c sslgen.c tftp.c splay.c \
|
||||
strdup.c socks.c ssh.c nss.c qssl.c rawstr.c curl_addrinfo.c \
|
||||
socks_gssapi.c socks_sspi.c curl_sspi.c slist.c nonblock.c \
|
||||
curl_memrchr.c
|
||||
curl_memrchr.c imap.c pop3.c smtp.c pingpong.c rtsp.c curl_threads.c
|
||||
|
||||
HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
|
||||
progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h \
|
||||
@@ -23,5 +23,4 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
|
||||
transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h \
|
||||
tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h \
|
||||
curl_base64.h rawstr.h curl_addrinfo.h curl_sspi.h slist.h nonblock.h \
|
||||
curl_memrchr.h
|
||||
|
||||
curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h
|
||||
|
@@ -14,7 +14,8 @@ objs = o.base64 o.connect o.cookie o.dict \
|
||||
o.strequal o.strtok o.telnet o.timeval \
|
||||
o.transfer o.url o.version o.strtoofft o.sslgen o.gtls \
|
||||
o.rawstr o.curl_addrinfo o.slist o.nonblock o.curl_rand \
|
||||
o.curl_memrchr
|
||||
o.curl_memrchr o.imap o.pop3 o.smtp o.pingpong o.rtsp \
|
||||
o.curl_threads
|
||||
|
||||
|
||||
# Compile options:
|
||||
@@ -44,6 +45,9 @@ o.curl_memrchr: c.curl_memrchr
|
||||
o.curl_rand: c.curl_rand
|
||||
gcc $(compileropts) -c -o curl_rand.o c.curl_rand
|
||||
|
||||
o.curl_threads: c.curl_threads
|
||||
gcc $(compileropts) -c -o curl_threads.o c.curl_threads
|
||||
|
||||
o.dict: c.dict
|
||||
gcc $(compileropts) -c -o dict.o c.dict
|
||||
|
||||
@@ -92,6 +96,9 @@ o.http_chunks: c.http_chunks
|
||||
o.if2ip: c.if2ip
|
||||
gcc $(compileropts) -c -o if2ip.o c.if2ip
|
||||
|
||||
o.imap: c.imap
|
||||
gcc $(compileropts) -c -o imap.o c.imap
|
||||
|
||||
o.inet_ntop: c.inet_ntop
|
||||
gcc $(compileropts) -c -o inet_ntop.o c.inet_ntop
|
||||
|
||||
@@ -116,9 +123,18 @@ o.netrc: c.netrc
|
||||
o.parsedate: c.parsedate
|
||||
gcc $(compileropts) -c -o parsedate.o c.parsedate
|
||||
|
||||
o.pingpong: c.pingpong
|
||||
gcc $(compileropts) -c -o pingpong.o c.pingpong
|
||||
|
||||
o.pop3: c.pop3
|
||||
gcc $(compileropts) -c -o pop3.o c.pop3
|
||||
|
||||
o.progress: c.progress
|
||||
gcc $(compileropts) -c -o progress.o c.progress
|
||||
|
||||
o.rtsp: c.rtsp
|
||||
gcc $(compileropts) -c -o rtsp.o c.rtsp
|
||||
|
||||
o.security: c.security
|
||||
gcc $(compileropts) -c -o security.o c.security
|
||||
|
||||
@@ -131,6 +147,9 @@ o.sendf: c.sendf
|
||||
o.slist: c.slist
|
||||
gcc $(compileropts) -c -o slist.o c.slist
|
||||
|
||||
o.smtp: c.smtp
|
||||
gcc $(compileropts) -c -o smtp.o c.smtp
|
||||
|
||||
o.speedcheck: c.speedcheck
|
||||
gcc $(compileropts) -c -o speedcheck.o c.speedcheck
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user