Compare commits
479 Commits
curl-7_18_
...
curl-7_19_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6ebc2b2561 | ||
![]() |
95b817e8d7 | ||
![]() |
558f034007 | ||
![]() |
72ea805298 | ||
![]() |
79ffbf7fe1 | ||
![]() |
4f0d286d2c | ||
![]() |
6fb5888e55 | ||
![]() |
b5810dfe9d | ||
![]() |
85a79f9d67 | ||
![]() |
d24465b79a | ||
![]() |
c67a99ff27 | ||
![]() |
bae4e12302 | ||
![]() |
09df1cdb5c | ||
![]() |
2946d87e48 | ||
![]() |
6a2d7bff1a | ||
![]() |
9b7b2b347f | ||
![]() |
33638d5347 | ||
![]() |
2ae7d2e6ea | ||
![]() |
ffc490ef89 | ||
![]() |
29b75ca46f | ||
![]() |
004dde18a7 | ||
![]() |
3440e8d208 | ||
![]() |
e138ae5ec9 | ||
![]() |
bf8ba229e0 | ||
![]() |
19d0a7495e | ||
![]() |
099b62f124 | ||
![]() |
8ce78ca488 | ||
![]() |
fc9610919c | ||
![]() |
e082d2403c | ||
![]() |
370c3afc71 | ||
![]() |
93357ef017 | ||
![]() |
753592cc70 | ||
![]() |
b150e6866d | ||
![]() |
2f475fa9ea | ||
![]() |
ecff50c2b4 | ||
![]() |
6f53cf9cc6 | ||
![]() |
1056202b48 | ||
![]() |
709de3d621 | ||
![]() |
f9894f4ebc | ||
![]() |
74d3b80d70 | ||
![]() |
4b01dfe369 | ||
![]() |
fc09d10560 | ||
![]() |
59b2e3ea4a | ||
![]() |
243cf29793 | ||
![]() |
9ded8fbe58 | ||
![]() |
9258928c2d | ||
![]() |
132cd3aa2c | ||
![]() |
fef60d9d41 | ||
![]() |
2fdd24c724 | ||
![]() |
852a02daff | ||
![]() |
2a6148716c | ||
![]() |
5ca692fc89 | ||
![]() |
3e2487493e | ||
![]() |
fdcb0cd2bc | ||
![]() |
4962e1772d | ||
![]() |
d7d5618498 | ||
![]() |
3f3d6ebe66 | ||
![]() |
ec28988bfa | ||
![]() |
db23538898 | ||
![]() |
423a18cecc | ||
![]() |
f164260eee | ||
![]() |
a091121293 | ||
![]() |
d744c85310 | ||
![]() |
c9f2c54c49 | ||
![]() |
f29d223ed5 | ||
![]() |
8dabd34432 | ||
![]() |
a104a365e3 | ||
![]() |
62d94ff342 | ||
![]() |
cbc04a7d40 | ||
![]() |
71d3c5bf41 | ||
![]() |
bc69e46ad1 | ||
![]() |
13f035b905 | ||
![]() |
79cbe50894 | ||
![]() |
1c04aa54a7 | ||
![]() |
b718283327 | ||
![]() |
b34390017b | ||
![]() |
8980f89370 | ||
![]() |
f46d47239f | ||
![]() |
13dc82b9d4 | ||
![]() |
a243dd4587 | ||
![]() |
9d5d6c557b | ||
![]() |
a604682805 | ||
![]() |
70b1cd798f | ||
![]() |
578f42d588 | ||
![]() |
e3ad6d2bd1 | ||
![]() |
4b64a8d20d | ||
![]() |
fcc8700218 | ||
![]() |
e5b713ee63 | ||
![]() |
9849c6b847 | ||
![]() |
9bb5da968c | ||
![]() |
d5a71fd567 | ||
![]() |
0f98ba4729 | ||
![]() |
a6a2174bf7 | ||
![]() |
f07c3171e3 | ||
![]() |
6cb1e3f3fa | ||
![]() |
81b64f69a5 | ||
![]() |
17e1f58fd6 | ||
![]() |
582833b338 | ||
![]() |
48be4fa069 | ||
![]() |
2af05bdd3c | ||
![]() |
4dbfc91e2b | ||
![]() |
95cef39def | ||
![]() |
00fb5bcf35 | ||
![]() |
42eeb93d99 | ||
![]() |
afe7bb4b33 | ||
![]() |
0f5f91df0b | ||
![]() |
f209a4804b | ||
![]() |
5794ffe4bd | ||
![]() |
ceb49d3742 | ||
![]() |
44142f8234 | ||
![]() |
347213d124 | ||
![]() |
8ca51bc68a | ||
![]() |
56f852a64f | ||
![]() |
1c68e79091 | ||
![]() |
473a050f0b | ||
![]() |
6768e81d5d | ||
![]() |
3743f515cf | ||
![]() |
3e0b6a7d1f | ||
![]() |
ef72f7d513 | ||
![]() |
2f71461b29 | ||
![]() |
d8cab4c133 | ||
![]() |
95a093e97b | ||
![]() |
68bb51c55b | ||
![]() |
fb8fe6f2b3 | ||
![]() |
3e61c90dbe | ||
![]() |
ac18b471d2 | ||
![]() |
bbe2386bff | ||
![]() |
2f47248e3c | ||
![]() |
315bb970a5 | ||
![]() |
65b0f6049d | ||
![]() |
0033535e21 | ||
![]() |
3e4a8cb800 | ||
![]() |
ad638da2c2 | ||
![]() |
a923d8541c | ||
![]() |
66fb9ca5f6 | ||
![]() |
11cb78c5f8 | ||
![]() |
527a5f0980 | ||
![]() |
6e878d2ca4 | ||
![]() |
cf30b24706 | ||
![]() |
709a2ed474 | ||
![]() |
ecd30cc8bb | ||
![]() |
0105ad5e39 | ||
![]() |
cebaab8ee5 | ||
![]() |
34281925d6 | ||
![]() |
e90c4fa770 | ||
![]() |
a06e077938 | ||
![]() |
7bdae7be4f | ||
![]() |
c125d83e9e | ||
![]() |
2abf9221e3 | ||
![]() |
6f1e89085c | ||
![]() |
5303cdc4af | ||
![]() |
feb03e4717 | ||
![]() |
64e3a091c3 | ||
![]() |
a2c50a980c | ||
![]() |
23478b891f | ||
![]() |
aab2d52b25 | ||
![]() |
9a9041f1ce | ||
![]() |
0aa704935b | ||
![]() |
ede7f8f5de | ||
![]() |
3c317d2fac | ||
![]() |
b55b0258e0 | ||
![]() |
55a8098d48 | ||
![]() |
389e50ff1e | ||
![]() |
1df4043ad7 | ||
![]() |
b000b8a736 | ||
![]() |
7eab7fa353 | ||
![]() |
58f7c82d52 | ||
![]() |
4d1cd0da93 | ||
![]() |
9ee7a014c9 | ||
![]() |
e1ab7db87d | ||
![]() |
14a5596346 | ||
![]() |
2eba5f33b9 | ||
![]() |
60a3773c50 | ||
![]() |
e8e8177e9d | ||
![]() |
f1fe04245a | ||
![]() |
8bb208e8f8 | ||
![]() |
f8a3aa91cd | ||
![]() |
019bde82ce | ||
![]() |
ca5e38751c | ||
![]() |
b5b25b39e9 | ||
![]() |
1784523cc6 | ||
![]() |
d71d10adbc | ||
![]() |
40fb750589 | ||
![]() |
62a6b8d4a6 | ||
![]() |
24b1890710 | ||
![]() |
3a1d28379a | ||
![]() |
c57285d199 | ||
![]() |
68cfe929c4 | ||
![]() |
6237fd2c16 | ||
![]() |
b023f9bd2a | ||
![]() |
b7ac885d38 | ||
![]() |
cbd9dcbe41 | ||
![]() |
4594187732 | ||
![]() |
63818f8488 | ||
![]() |
8af61cdb66 | ||
![]() |
ab83c0fd5b | ||
![]() |
3cc40a2584 | ||
![]() |
c11933b3fd | ||
![]() |
4687699726 | ||
![]() |
012dcb4893 | ||
![]() |
f01d18e4b9 | ||
![]() |
dabd3cd355 | ||
![]() |
fa001f27a5 | ||
![]() |
40b2e06a7f | ||
![]() |
8008499028 | ||
![]() |
3ac6929919 | ||
![]() |
8d36acd29b | ||
![]() |
e54209d643 | ||
![]() |
f6a958dc3a | ||
![]() |
2548e7b23f | ||
![]() |
97046a3548 | ||
![]() |
a7d52c414f | ||
![]() |
479466a495 | ||
![]() |
fa2a8f6fb8 | ||
![]() |
ddfa33be79 | ||
![]() |
25c76a760e | ||
![]() |
14240e9e10 | ||
![]() |
a3045b4e49 | ||
![]() |
b0685b3576 | ||
![]() |
138c57c76a | ||
![]() |
182a415555 | ||
![]() |
6e789fc516 | ||
![]() |
09f278121e | ||
![]() |
ed50e3f1b4 | ||
![]() |
3a499099af | ||
![]() |
931fc45f05 | ||
![]() |
6076c74041 | ||
![]() |
b4fdccf87a | ||
![]() |
8d012181b0 | ||
![]() |
d6344d9b5f | ||
![]() |
cb9410ded2 | ||
![]() |
6838fb32af | ||
![]() |
74d77cb140 | ||
![]() |
7ad3abfd05 | ||
![]() |
7c6df7132e | ||
![]() |
f27299dc3b | ||
![]() |
47724ef238 | ||
![]() |
357389a905 | ||
![]() |
42cabc14d4 | ||
![]() |
a948ca1669 | ||
![]() |
9cef14dfb2 | ||
![]() |
2d15d84a01 | ||
![]() |
1035469662 | ||
![]() |
296a6f7749 | ||
![]() |
5cff8124b0 | ||
![]() |
90e2510e2f | ||
![]() |
9251dd7b24 | ||
![]() |
3615063fbc | ||
![]() |
09664f1ab8 | ||
![]() |
bdf1157d55 | ||
![]() |
b4a5ce89c2 | ||
![]() |
660516914e | ||
![]() |
4c1c479fcf | ||
![]() |
309651dc82 | ||
![]() |
b13b9f3331 | ||
![]() |
108e584983 | ||
![]() |
f3b4071209 | ||
![]() |
fe1d024351 | ||
![]() |
0de08d418f | ||
![]() |
109edaae6d | ||
![]() |
d69a630989 | ||
![]() |
987b67bd2e | ||
![]() |
f4d56802f9 | ||
![]() |
9dfd6eacf4 | ||
![]() |
5aed78e183 | ||
![]() |
011e5dd864 | ||
![]() |
ae654266df | ||
![]() |
03986f1b8b | ||
![]() |
bc649593e4 | ||
![]() |
cc0285da7f | ||
![]() |
f3bc16f4f5 | ||
![]() |
15f94858f2 | ||
![]() |
5febd06c25 | ||
![]() |
9eb7fe8ac0 | ||
![]() |
1f26ea4a85 | ||
![]() |
912c29fd8c | ||
![]() |
eea468918e | ||
![]() |
537490e391 | ||
![]() |
de8e362d4a | ||
![]() |
7a588144b7 | ||
![]() |
7f2999aa43 | ||
![]() |
a3498f96ef | ||
![]() |
637bfa0252 | ||
![]() |
1c8f689ecb | ||
![]() |
7a8b11d716 | ||
![]() |
a67e207866 | ||
![]() |
5817209158 | ||
![]() |
b39d409aa2 | ||
![]() |
a18fb9448b | ||
![]() |
1f3007dbb4 | ||
![]() |
5dafa4a270 | ||
![]() |
e93bcbeee1 | ||
![]() |
adc032e7d8 | ||
![]() |
248c2b9bf5 | ||
![]() |
a8baa05023 | ||
![]() |
7066a79466 | ||
![]() |
4a623f7ed2 | ||
![]() |
f18700ef64 | ||
![]() |
52d9a3c34f | ||
![]() |
d785ed2588 | ||
![]() |
4ff37a4ed1 | ||
![]() |
fe167b6ba2 | ||
![]() |
f042a7419d | ||
![]() |
bc0ebfcdeb | ||
![]() |
57d13c770a | ||
![]() |
1692384636 | ||
![]() |
7634091325 | ||
![]() |
bdc8f59c17 | ||
![]() |
817efbc29c | ||
![]() |
d2661cb4b2 | ||
![]() |
9b0110f50c | ||
![]() |
5876381f86 | ||
![]() |
c4edc25d01 | ||
![]() |
36361d14cf | ||
![]() |
c8fe5f485c | ||
![]() |
1ac1212925 | ||
![]() |
3d4fb5136d | ||
![]() |
b6b03c8ab9 | ||
![]() |
432945e422 | ||
![]() |
052f9ddedb | ||
![]() |
a96784b98e | ||
![]() |
e06944438a | ||
![]() |
fa1009b6fc | ||
![]() |
b377e857bd | ||
![]() |
9a806f667b | ||
![]() |
979c9ce8e3 | ||
![]() |
b217e6eed7 | ||
![]() |
6b7e74a030 | ||
![]() |
7fdeb14e6d | ||
![]() |
8a323f8354 | ||
![]() |
a7abd5bf70 | ||
![]() |
932b589780 | ||
![]() |
27c282a6ee | ||
![]() |
5373289574 | ||
![]() |
7d0eabaa80 | ||
![]() |
e7f5d12cb6 | ||
![]() |
f14e020370 | ||
![]() |
e933b28aaf | ||
![]() |
1bc490077a | ||
![]() |
7d773abe50 | ||
![]() |
f22114aeed | ||
![]() |
0919de4511 | ||
![]() |
3e5292a052 | ||
![]() |
2066d60b16 | ||
![]() |
51e84c77e7 | ||
![]() |
775d9e0615 | ||
![]() |
a20d55fb64 | ||
![]() |
1b37baf656 | ||
![]() |
bffe69a151 | ||
![]() |
71525352f0 | ||
![]() |
facc5f7ec5 | ||
![]() |
184229b1e5 | ||
![]() |
3e488c4f19 | ||
![]() |
3f84e373ac | ||
![]() |
ac6d6ec2f1 | ||
![]() |
f11d5d9de8 | ||
![]() |
ed2dbefa73 | ||
![]() |
39f23aec6b | ||
![]() |
362422641e | ||
![]() |
a9dc900515 | ||
![]() |
3a705696af | ||
![]() |
2cfb8a2bf0 | ||
![]() |
21ee1c2d01 | ||
![]() |
a00febe1a0 | ||
![]() |
1e7125ae7b | ||
![]() |
aa4a7471dd | ||
![]() |
69a03ce23c | ||
![]() |
0f50cd7623 | ||
![]() |
669c555874 | ||
![]() |
1cfb73a129 | ||
![]() |
2a585c2fba | ||
![]() |
32a83128e6 | ||
![]() |
fe7bb33af8 | ||
![]() |
da6fa34f02 | ||
![]() |
37a358ab93 | ||
![]() |
3452c8d693 | ||
![]() |
336992cc54 | ||
![]() |
13afcbd1eb | ||
![]() |
e58a3fd0aa | ||
![]() |
57625b6c4c | ||
![]() |
0d058d2174 | ||
![]() |
8d49a8f278 | ||
![]() |
b4b6cfdb1c | ||
![]() |
6b7ccde156 | ||
![]() |
9b0fd007fd | ||
![]() |
6f3ef94836 | ||
![]() |
08ac9866e0 | ||
![]() |
a17fadea3a | ||
![]() |
e30bbfd85d | ||
![]() |
120f9d81b2 | ||
![]() |
fa38839a80 | ||
![]() |
d8f109176c | ||
![]() |
bbb1b99ce1 | ||
![]() |
0cd8840dba | ||
![]() |
d4b253ba3e | ||
![]() |
aee7fc118b | ||
![]() |
60f0b4fffe | ||
![]() |
a95e600eb0 | ||
![]() |
a25959184e | ||
![]() |
0e5da5b8bc | ||
![]() |
ddfa4b8896 | ||
![]() |
d816a11bca | ||
![]() |
7820391cb9 | ||
![]() |
148866bc73 | ||
![]() |
0b57c47547 | ||
![]() |
02db4450df | ||
![]() |
ed7af82bdf | ||
![]() |
e3b5673e98 | ||
![]() |
82412f218f | ||
![]() |
7c648782bc | ||
![]() |
ee64d14733 | ||
![]() |
bfaab6ed6b | ||
![]() |
97333deb3f | ||
![]() |
400d9d4205 | ||
![]() |
ad1145a201 | ||
![]() |
513c22df3b | ||
![]() |
b5afd53138 | ||
![]() |
72b4b3c7f8 | ||
![]() |
eb60ba23f5 | ||
![]() |
69aac49f79 | ||
![]() |
67f139e016 | ||
![]() |
654f047302 | ||
![]() |
e6c23672b2 | ||
![]() |
1058e5fdde | ||
![]() |
6929d9355f | ||
![]() |
8c377ad965 | ||
![]() |
a81a16beac | ||
![]() |
d92945bb8a | ||
![]() |
90a6a59a2f | ||
![]() |
8bae3d9007 | ||
![]() |
98042b858d | ||
![]() |
a837bd08b0 | ||
![]() |
2c61e9c76a | ||
![]() |
da97f78ae0 | ||
![]() |
2e1a9da5e2 | ||
![]() |
422fd933f5 | ||
![]() |
2594124825 | ||
![]() |
d09b6ecaa5 | ||
![]() |
fb2e71b9bd | ||
![]() |
68b67e24f2 | ||
![]() |
c1e2341f0a | ||
![]() |
70d834c512 | ||
![]() |
65ee4e4555 | ||
![]() |
5304b13365 | ||
![]() |
e547bfa933 | ||
![]() |
36ddb13d1f | ||
![]() |
74e3def5b3 | ||
![]() |
24d41452b0 | ||
![]() |
2597020d22 | ||
![]() |
2d0fea2650 | ||
![]() |
c1a71ad14f | ||
![]() |
024c7641a9 | ||
![]() |
5c56bdf229 | ||
![]() |
af779fa57c | ||
![]() |
9918541795 | ||
![]() |
04d5c8fb77 | ||
![]() |
5980b3cbb0 | ||
![]() |
10074bfcc6 | ||
![]() |
3940e69c91 | ||
![]() |
0ace5f6553 | ||
![]() |
b8a9f19515 | ||
![]() |
6cd007838d | ||
![]() |
72870e2c57 | ||
![]() |
9c8997cbe4 | ||
![]() |
c6efb82526 | ||
![]() |
5abfdc0140 | ||
![]() |
d8bc4a0e9a | ||
![]() |
8ad2fdd71e | ||
![]() |
a2e45a2211 | ||
![]() |
621c2b9015 | ||
![]() |
b39d1e9b9d | ||
![]() |
e1c456407e | ||
![]() |
3fe8251dfb | ||
![]() |
930a45e7a9 | ||
![]() |
afc66554d7 | ||
![]() |
998ab15570 | ||
![]() |
c0d258ca17 | ||
![]() |
230e4547e8 | ||
![]() |
4cf33909ee |
@@ -4,6 +4,7 @@ Makefile
|
|||||||
libtool
|
libtool
|
||||||
Makefile.in
|
Makefile.in
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
|
aclocal.m4.bak
|
||||||
configure
|
configure
|
||||||
config.h
|
config.h
|
||||||
config.status
|
config.status
|
||||||
|
@@ -23,8 +23,11 @@
|
|||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign
|
AUTOMAKE_OPTIONS = foreign
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist curl-config.in \
|
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist curl-config.in \
|
||||||
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat libcurl.pc.in
|
curl-style.el sample.emacs RELEASE-NOTES buildconf buildconf.bat \
|
||||||
|
libcurl.pc.in vc6curl.dsw
|
||||||
|
|
||||||
bin_SCRIPTS = curl-config
|
bin_SCRIPTS = curl-config
|
||||||
|
|
||||||
@@ -135,3 +138,7 @@ uninstall-hook:
|
|||||||
ca-bundle: lib/mk-ca-bundle.pl
|
ca-bundle: lib/mk-ca-bundle.pl
|
||||||
@echo "generate a fresh ca-bundle.crt"
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
@perl $< -b -l -u lib/ca-bundle.crt
|
@perl $< -b -l -u lib/ca-bundle.crt
|
||||||
|
|
||||||
|
ca-firefox: lib/firefox-db2pem.sh
|
||||||
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
|
./lib/firefox-db2pem.sh lib/ca-bundle.crt
|
||||||
|
@@ -265,4 +265,6 @@ ca-bundle: lib/mk-ca-bundle.pl
|
|||||||
@echo "generate a fresh ca-bundle.crt"
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
@perl $< -b -l -u lib/ca-bundle.crt
|
@perl $< -b -l -u lib/ca-bundle.crt
|
||||||
|
|
||||||
|
ca-firefox: lib/firefox-db2pem.sh
|
||||||
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
|
./lib/firefox-db2pem.sh lib/ca-bundle.crt
|
||||||
|
5
README
5
README
@@ -30,10 +30,9 @@ CONTACT
|
|||||||
|
|
||||||
WEB SITE
|
WEB SITE
|
||||||
|
|
||||||
Visit the curl web site or mirrors for the latest news and downloads:
|
Visit the curl web site for the latest news and downloads:
|
||||||
|
|
||||||
Sweden http://curl.haxx.se/
|
http://curl.haxx.se/
|
||||||
Mirrors http://curlm.haxx.se/
|
|
||||||
|
|
||||||
CVS
|
CVS
|
||||||
|
|
||||||
|
110
RELEASE-NOTES
110
RELEASE-NOTES
@@ -1,46 +1,69 @@
|
|||||||
Curl and libcurl 7.18.2
|
Curl and libcurl 7.19.0
|
||||||
|
|
||||||
Public curl releases: 105
|
Public curl releases: 106
|
||||||
Command line options: 126
|
Command line options: 127
|
||||||
curl_easy_setopt() options: 150
|
curl_easy_setopt() options: 153
|
||||||
Public functions in libcurl: 58
|
Public functions in libcurl: 58
|
||||||
Public web site mirrors: 37
|
|
||||||
Known libcurl bindings: 36
|
Known libcurl bindings: 36
|
||||||
Contributors: 636
|
Contributors: 654
|
||||||
|
|
||||||
This release includes the following changes:
|
This release includes the following changes:
|
||||||
|
|
||||||
o CURLFORM_STREAM was added
|
o curl_off_t gets its size/typedef somewhat differently than before. This _may_
|
||||||
o CURLOPT_NOBODY is now supported over SFTP
|
cause an ABI change for you. See lib/README.curl_off_t for a full explanation.
|
||||||
o curl can now run on Symbian OS
|
|
||||||
o curl -w redirect_url and CURLINFO_REDIRECT_URL
|
o Added CURLINFO_PRIMARY_IP
|
||||||
o added curl_easy_send() and curl_easy_recv()
|
o Added CURLOPT_CRLFILE and CURLE_SSL_CRL_BADFILE
|
||||||
|
o Added CURLOPT_ISSUERCERT and CURLE_SSL_ISSUER_ERROR
|
||||||
|
o curl's option parser for boolean options reworked
|
||||||
|
o Added --remote-name-all
|
||||||
|
o Now builds for the INTEGRITY operating system
|
||||||
|
o Added CURLINFO_APPCONNECT_TIME
|
||||||
|
o Added test selection by key word in runtests.pl
|
||||||
|
o the curl tool's -w option support the %{ssl_verify_result} variable
|
||||||
|
o Added CURLOPT_ADDRESS_SCOPE and scope parsing of the URL according to RFC4007
|
||||||
|
o Support --append on SFTP uploads (not with OpenSSH, though)
|
||||||
|
o Added curlbuild.h and curlrules.h to the external library interface
|
||||||
|
|
||||||
This release includes the following bugfixes:
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
o CURLOPT_NOBODY first set to TRUE and then FALSE for HTTP no longer causes
|
o Fixed curl-config --ca
|
||||||
the confusion that could lead to a hung transfer
|
o Fixed the multi interface connection re-use with NSS-built libcurl
|
||||||
o curl_easy_reset() resets the max redirect limit properly
|
o connection re-use when using the multi interface with pipelining enabled
|
||||||
o configure now correctly recognizes Heimdal and MIT gssapi libraries
|
o curl_multi_socket() socket callback fix for close/re-create sockets case
|
||||||
o malloc() failure check in Negotiate
|
o SCP or SFTP over socks proxy crashed
|
||||||
o -i and -I together now work the same no matter what order they're used
|
o RC4-MD5 cipher now works with NSS-built libcurl
|
||||||
o the typechecker can be bypassed by defining CURL_DISABLE_TYPECHECK
|
o range requests with --head are now done correctly
|
||||||
o a pointer mixup could make the FTP code send bad user+password under rare
|
o fallback to gettimeofday when monotonic clock is unavailable at run-time
|
||||||
circumstances (found when using curlftpfs)
|
o range numbers could be made to wrongly get output as signed
|
||||||
o CURLOPT_OPENSOCKETFUNCTION can now be used to create a unix domain socket
|
o unexpected 1xx responses hung transfers
|
||||||
o CURLOPT_TCP_NODELAY crash due to getprotobyname() use
|
o FTP transfers segfault when using different CURLOPT_FTP_FILEMETHOD
|
||||||
o libcurl sometimes sent body twice when using CURLAUTH_ANY
|
o c-ares powered libcurls can resolve/use IPv6 addresses
|
||||||
o configure detecting debug-enabled c-ares
|
o poll not working on Windows Vista due to POLLPRI being incorrectly used
|
||||||
o microsecond resolution keys for internal splay trees
|
o user-agent in CONNECT with non-HTTP protocols
|
||||||
o krb4 and krb5 ftp segfault
|
o CURL_READFUNC_PAUSE problems fixed
|
||||||
o multi interface busy loop for CONNECT requests
|
o --use-ascii now works on Symbian OS, MS-DOS and OS/2
|
||||||
o internal time differences now use monotonic time source if available
|
o CURLINFO_SSL_VERIFYRESULT is fixed
|
||||||
o several curl_multi_socket() fixes
|
o FTP URLs and IPv6 URLs mangled when sent to proxy with CURLOPT_PORT set
|
||||||
o builds fine for Haiku OS
|
o a user name in a proxy URL without a password was parsed incorrectly
|
||||||
o follow redirect with only a new query string
|
o library will now be built with _REENTRANT symbol defined only if needed
|
||||||
o SCP and SFTP memory leaks on aborted transfers
|
o no longer link with gdi32 on Windows cross-compiled targets
|
||||||
o curl_multi_socket() and HTTP pipelining transfer stalls
|
o HTTP PUT with -C - sent bad Content-Range: header
|
||||||
o lost telnet data on an EWOULDBLOCK condition
|
o HTTP PUT or POST with redirect could lead to hang
|
||||||
|
o re-use of connections with failed SSL connects in the multi interface
|
||||||
|
o NTLM over proxy state was wrongly cleared when host connection was closed
|
||||||
|
o Windows SSPI DLL loading is now done in curl_global_init()
|
||||||
|
o runtests.pl has an improved find-stunnel-and-invoke
|
||||||
|
o FTP sessions could go out of sync on a long header boundary condition
|
||||||
|
o potential buffer overflows in the MS-DOS command-line port fixed
|
||||||
|
o --stderr is now honoured with the -v option
|
||||||
|
o memory leak in libcurl on Windows built with OpenSSL
|
||||||
|
o improved curl_m*printf() integral data type size and signedness handling
|
||||||
|
o error when --dump-header - used with more than one URL
|
||||||
|
o proxy closing connect during CONNECT with auth with the multi interface
|
||||||
|
o CURLOPT_UPLOAD sets HTTP method back to GET or HEAD when passed in a 0
|
||||||
|
o shared cookies could get locked twice
|
||||||
|
o deal with closed connection while doing POST/PUT
|
||||||
|
|
||||||
This release includes the following known bugs:
|
This release includes the following known bugs:
|
||||||
|
|
||||||
@@ -48,21 +71,18 @@ This release includes the following known bugs:
|
|||||||
|
|
||||||
Other curl-related news:
|
Other curl-related news:
|
||||||
|
|
||||||
o pycurl 7.18.1 was released: http://pycurl.sf.net/
|
|
||||||
o brand new curl Haskell binding:
|
|
||||||
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl
|
|
||||||
|
|
||||||
New curl mirrors:
|
|
||||||
|
|
||||||
o
|
o
|
||||||
|
|
||||||
This release would not have looked like this without help, code, reports and
|
This release would not have looked like this without help, code, reports and
|
||||||
advice from friends like these:
|
advice from friends like these:
|
||||||
|
|
||||||
Michal Marek, Daniel Fandrich, Scott Barrett, Alexey Simak, Daniel Black,
|
Lenny Rachitsky, Axel Tillequin, Arnaud Ebalard, Yang Tse, Dan Fandrich,
|
||||||
Rafa Muyo, Andre Guibert de Bruet, Brock Noland, Sandor Feldi, Stefan Krause,
|
Rob Crittenden, Dengminwen, Christopher Palow, Hans-Jurgen May,
|
||||||
David Shaw, Norbert Frese, Bart Whiteley, Jean-Francois Bertrand, Ben Van Hof,
|
Phil Pellouchoud, Eduard Bloch, John Lightsey, Stephen Collyer, Tor Arntsen,
|
||||||
Yuriy Sosov, Christopher Palow, Yang Tse, Liam Healy, Nikolai Kondrashov,
|
Rolland Dudemaine, Phil Blundell, Scott Barrett, Andreas Schuldei,
|
||||||
David Rosenstrauch, Andreas Faerber, Scott McCreary, Jeff Weber, Emil Romanus
|
Peter Lamberg, David Bau, Pramod Sharma, Yehoshua Hershberg,
|
||||||
|
Constantine Sapuntzakis, Lars Nilsson, Andy Tsouladze, Jamie Lokier,
|
||||||
|
Vincent Le Normand
|
||||||
|
|
||||||
|
|
||||||
Thanks! (and sorry if I forgot to mention someone)
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
|
25
TODO-RELEASE
25
TODO-RELEASE
@@ -1,17 +1,26 @@
|
|||||||
To be addressed before 7.18.2 (planned release: June 2008)
|
To be addressed before 7.19.0 (planned release: August 2008)
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
To be addressed before 7.18.3 (planned release: August 2008)
|
|
||||||
|
To be addressed before 7.19.1 (planned release: October 2008)
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
139 - Christopher Palow's CURLM_EASY_HANDLE_EXISTS patch
|
157 - the CERTINFO patch as posted to:
|
||||||
|
http://curl.haxx.se/mail/lib-2008-08/0105.html
|
||||||
|
|
||||||
140 - Arnaud Ebalard and Axel Tillequin's CRL support and issuer check patches
|
158 - Martin Drasar's CURLOPT_POSTREDIR work:
|
||||||
|
http://curl.haxx.se/mail/lib-2008-08/0170.html
|
||||||
|
|
||||||
141 - The sponsored feature CURLINFO_PRIMARY_IP that returns the IP address
|
162 - Craig Perras' note "http upload: how to stop on error"
|
||||||
as a string for the most recently used connection.
|
http://curl.haxx.se/mail/archive-2008-08/0138.html
|
||||||
|
|
||||||
144 - Help apps use 64bit/LFS libcurl!
|
163 - Detecting illegal attempts at chunked transfers on HTTP 1.0
|
||||||
|
(tests 1069, 1072, 1073)
|
||||||
|
http://curl.haxx.se/mail/archive-2008-08/0435.html
|
||||||
|
|
||||||
145 -
|
164 - Automatic downgrading to HTTP 1.0 (tests 1071 through 1074)
|
||||||
|
|
||||||
|
165 - "Problem with CURLOPT_RESUME_FROM and CURLOPT_APPEND" by Daniele Pinau,
|
||||||
|
recipe: http://curl.haxx.se/mail/lib-2008-08/0439.html
|
||||||
|
|
||||||
|
166 -
|
||||||
|
1044
acinclude.m4
1044
acinclude.m4
File diff suppressed because it is too large
Load Diff
51
ares/AUTHORS
51
ares/AUTHORS
@@ -1,34 +1,37 @@
|
|||||||
c-ares is based on ares, and these are the people that have worked on it since
|
c-ares is based on ares, and these are the people that have worked on it since
|
||||||
the fork was made:
|
the fork was made:
|
||||||
|
|
||||||
Daniel Stenberg
|
Alexander Lazic
|
||||||
Dominick Meglio
|
Alexey Simak
|
||||||
liren at vivisimo.com
|
Andreas Rieke
|
||||||
James Bursa
|
Ashish Sharma
|
||||||
Duncan Wilcox
|
Brad House
|
||||||
Dirk Manske
|
Brad Spencer
|
||||||
|
Bram Matthys
|
||||||
Dan Fandrich
|
Dan Fandrich
|
||||||
|
Daniel Stenberg
|
||||||
|
Dirk Manske
|
||||||
|
Dominick Meglio
|
||||||
|
Doug Goldstein
|
||||||
|
Duncan Wilcox
|
||||||
|
Eino Tuominen
|
||||||
|
Erik Kline
|
||||||
|
George Neill
|
||||||
Gisle Vanem
|
Gisle Vanem
|
||||||
|
Guilherme Balena Versiani
|
||||||
Gunter Knauf
|
Gunter Knauf
|
||||||
Henrik Stoerner
|
Henrik Stoerner
|
||||||
Yang Tse
|
James Bursa
|
||||||
Nick Mathewson
|
|
||||||
Alexander Lazic
|
|
||||||
Andreas Rieke
|
|
||||||
Guilherme Balena Versiani
|
|
||||||
Brad Spencer
|
|
||||||
Ravi Pratap
|
|
||||||
William Ahern
|
|
||||||
Bram Matthys
|
|
||||||
Michael Wallner
|
Michael Wallner
|
||||||
Vlad Dinulescu
|
Nick Mathewson
|
||||||
Brad House
|
Phil Blundell
|
||||||
Shmulik Regev
|
Ravi Pratap
|
||||||
Ashish Sharma
|
|
||||||
Steinar H. Gunderson
|
|
||||||
Robin Cornelius
|
Robin Cornelius
|
||||||
Erik Kline
|
|
||||||
Alexey Simak
|
|
||||||
Eino Tuominen
|
|
||||||
Doug Goldstein
|
|
||||||
Sebastian at basti79.de
|
Sebastian at basti79.de
|
||||||
|
Shmulik Regev
|
||||||
|
Steinar H. Gunderson
|
||||||
|
Tofu Linden
|
||||||
|
Vlad Dinulescu
|
||||||
|
William Ahern
|
||||||
|
Yang Tse
|
||||||
|
liren at vivisimo.com
|
||||||
|
117
ares/CHANGES
117
ares/CHANGES
@@ -1,5 +1,122 @@
|
|||||||
Changelog for the c-ares project
|
Changelog for the c-ares project
|
||||||
|
|
||||||
|
Version 1.5.3 (Aug 29, 2008)
|
||||||
|
|
||||||
|
* Aug 25 2008 (Yang Tse)
|
||||||
|
- Improvement by Brad House:
|
||||||
|
|
||||||
|
This patch addresses an issue in which a response could be sent back to the
|
||||||
|
source port of a client from a different address than the request was made to.
|
||||||
|
This is one form of a DNS cache poisoning attack.
|
||||||
|
|
||||||
|
The patch simply uses recvfrom() rather than recv() and validates that the
|
||||||
|
address returned from recvfrom() matches the address of the server we have
|
||||||
|
connected to. Only necessary on UDP sockets as they are connection-less, TCP
|
||||||
|
is unaffected.
|
||||||
|
|
||||||
|
- Fix by George Neill:
|
||||||
|
Fixed compilation of acountry sample application failure on some systems.
|
||||||
|
|
||||||
|
* Aug 4 2008 (Daniel Stenberg)
|
||||||
|
- Fix by Tofu Linden:
|
||||||
|
|
||||||
|
The symptom:
|
||||||
|
* Users (usually, but not always) on 2-Wire routers and the Comcast service
|
||||||
|
and a wired connection to their router would find that the second and
|
||||||
|
subsequent DNS lookups from fresh processes using c-ares to resolve the same
|
||||||
|
address would cause the process to never see a reply (it keeps polling for
|
||||||
|
around 1m15s before giving up).
|
||||||
|
|
||||||
|
The repro:
|
||||||
|
* On such a machine (and yeah, it took us a lot of QA to find the systems
|
||||||
|
that reproduce such a specific problem!), do 'ahost www.secondlife.com',
|
||||||
|
then do it again. The first process's lookup will work, subsequent lookups
|
||||||
|
will time-out and fail.
|
||||||
|
|
||||||
|
The cause:
|
||||||
|
* init_id_key() was calling randomize_key() *before* it initialized
|
||||||
|
key->state, meaning that the randomness generated by randomize_key() is
|
||||||
|
immediately overwritten with deterministic values. (/dev/urandom was also
|
||||||
|
being read incorrectly in the c-ares version we were using, but this was
|
||||||
|
fixed in a later version.)
|
||||||
|
* This makes the stream of generated query-IDs from any new c-ares process
|
||||||
|
be an identical and predictable sequence of IDs.
|
||||||
|
* This makes the 2-Wire's default built-in DNS server detect these queries
|
||||||
|
as probable-duplicates and (erroneously) not respond at all.
|
||||||
|
|
||||||
|
|
||||||
|
* Aug 4 2008 (Yang Tse)
|
||||||
|
- Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use.
|
||||||
|
Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. 2.62
|
||||||
|
version of AC_AIX defines _ALL_SOURCE and other four preprocessor symbols
|
||||||
|
no matter if the system is AIX or not. To keep the traditional behaviour,
|
||||||
|
and an uniform one across autoconf versions AC_AIX is replaced with our
|
||||||
|
own internal macro CARES_CHECK_AIX_ALL_SOURCE.
|
||||||
|
|
||||||
|
* Aug 1 2008 (Yang Tse)
|
||||||
|
- Configure process now checks if the preprocessor _REENTRANT symbol is already
|
||||||
|
defined. If it isn't currently defined a set of checks are performed to test
|
||||||
|
if its definition is required to make visible to the compiler a set of *_r
|
||||||
|
functions. Finally, if _REENTRANT is already defined or needed it takes care
|
||||||
|
of making adjustments necessary to ensure that it is defined equally for the
|
||||||
|
configure process tests and generated config file.
|
||||||
|
|
||||||
|
* Jul 20 2008 (Yang Tse)
|
||||||
|
- When recvfrom prototype uses a void pointer for arguments 2, 5 or 6 this will
|
||||||
|
now cause the definition, as appropriate, of RECVFROM_TYPE_ARG2_IS_VOID,
|
||||||
|
RECVFROM_TYPE_ARG5_IS_VOID or RECVFROM_TYPE_ARG6_IS_VOID.
|
||||||
|
|
||||||
|
* Jul 17 2008 (Yang Tse)
|
||||||
|
- RECVFROM_TYPE_ARG2, RECVFROM_TYPE_ARG5 and RECVFROM_TYPE_ARG6 are now defined
|
||||||
|
to the data type pointed by its respective argument and not the pointer type.
|
||||||
|
|
||||||
|
* Jul 16 2008 (Yang Tse)
|
||||||
|
- Improved configure detection of number of arguments for getservbyport_r.
|
||||||
|
Detection is now based on compilation checks instead of linker ones.
|
||||||
|
|
||||||
|
- Configure process now checks availability of recvfrom() socket function and
|
||||||
|
finds out its return type and the types of its arguments. Added definitions
|
||||||
|
for non-configure systems config files, and introduced macro sreadfrom which
|
||||||
|
will be used on udp sockets as a recvfrom() wrapper in the future.
|
||||||
|
|
||||||
|
* Jul 15 2008 (Yang Tse)
|
||||||
|
- Introduce definition of _REENTRANT symbol in setup.h to improve library
|
||||||
|
usability. Previously the configure process only used the AC_SYS_LARGEFILE
|
||||||
|
macro for debug builds, now it is also used for non-debug ones enabling the
|
||||||
|
use of configure options --enable-largefile and --disable-largefile which
|
||||||
|
might be needed for library compatibility. Remove checking the size of
|
||||||
|
curl_off_t, it is no longer needed.
|
||||||
|
|
||||||
|
* Jul 3 2008 (Daniel Stenberg)
|
||||||
|
- Phil Blundell: If you ask ares_gethostbyname() to do an AF_INET6 lookup and
|
||||||
|
the target host has only A records, it automatically falls back to an
|
||||||
|
AF_INET lookup and gives you the A results. However, if the target host has
|
||||||
|
a CNAME record, this behaviour is defeated since the original query does
|
||||||
|
return some data even though ares_parse_aaa_reply() doesn't consider it
|
||||||
|
relevant. Here's a small patch to make it behave the same with and without
|
||||||
|
the CNAME.
|
||||||
|
|
||||||
|
* Jul 2 2008 (Yang Tse)
|
||||||
|
- Fallback to gettimeofday when monotonic clock is unavailable at run-time.
|
||||||
|
|
||||||
|
* Jun 30 2008 (Daniel Stenberg)
|
||||||
|
|
||||||
|
- As was pointed out to me by Andreas Schuldei, the MAXHOSTNAMELEN define is
|
||||||
|
not posix or anything and thus c-ares failed to build on hurd (and possibly
|
||||||
|
elsewhere). The define was also somewhat artificially used in the windows
|
||||||
|
port. Now, I instead rewrote the use of gethostbyname to enlarge the host
|
||||||
|
name buffer in case of need and totally avoid the use of the MAXHOSTNAMELEN
|
||||||
|
define. I thus also removed the defien from the namser.h file where it was
|
||||||
|
once added for the windows build.
|
||||||
|
|
||||||
|
I also fixed init_by_defaults() function to not leak memory in case if
|
||||||
|
error.
|
||||||
|
|
||||||
|
* Jun 9 2008 (Yang Tse)
|
||||||
|
|
||||||
|
- Make libcares.pc generated file for pkg-config include information relative
|
||||||
|
to the libraries needed for the static linking of c-ares.
|
||||||
|
|
||||||
* May 30 2008 (Yang Tse)
|
* May 30 2008 (Yang Tse)
|
||||||
|
|
||||||
- Brad House fixed a missing header file inclusion in adig sample program.
|
- Brad House fixed a missing header file inclusion in adig sample program.
|
||||||
|
@@ -1,4 +1,30 @@
|
|||||||
AUTOMAKE_OPTIONS = foreign
|
AUTOMAKE_OPTIONS = foreign nostdinc
|
||||||
|
|
||||||
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
|
# Specify our include paths here, and do it relative to $(top_srcdir) and
|
||||||
|
# $(top_builddir), to ensure that these paths which belong to the library
|
||||||
|
# being currently built and tested are searched before the library which
|
||||||
|
# might possibly already be installed in the system.
|
||||||
|
#
|
||||||
|
# When using the low-level hard-hacking memory leak tracking code from
|
||||||
|
# libcurl the generated curl/curlbuild.h file must also be reachable.
|
||||||
|
# Using the libcurl lowlevel code from within c-ares library is ugly and
|
||||||
|
# only works when c-ares is built and linked with a similarly debug-build
|
||||||
|
# libcurl, but we do this anyway for convenience.
|
||||||
|
#
|
||||||
|
# $(top_builddir)/../include is for libcurl's generated curl/curlbuild.h file
|
||||||
|
# $(top_builddir) is for c-ares's generated config.h file
|
||||||
|
# $(top_srcdir) is for c-ares's lib/setup.h and other "c-ares-private" files
|
||||||
|
|
||||||
|
if CURLDEBUG
|
||||||
|
INCLUDES = -I$(top_builddir)/../include \
|
||||||
|
-I$(top_builddir) \
|
||||||
|
-I$(top_srcdir)
|
||||||
|
else
|
||||||
|
INCLUDES = -I$(top_builddir) \
|
||||||
|
-I$(top_srcdir)
|
||||||
|
endif
|
||||||
|
|
||||||
lib_LTLIBRARIES = libcares.la
|
lib_LTLIBRARIES = libcares.la
|
||||||
|
|
||||||
|
@@ -23,7 +23,12 @@ CFLAGS += -DWATT32 -DHAVE_AF_INET6 -DHAVE_PF_INET6 -DHAVE_IOCTLSOCKET \
|
|||||||
-DRECV_TYPE_ARG1='int' -DRECV_TYPE_ARG2='void*' \
|
-DRECV_TYPE_ARG1='int' -DRECV_TYPE_ARG2='void*' \
|
||||||
-DRECV_TYPE_ARG3='int' -DRECV_TYPE_ARG4='int' \
|
-DRECV_TYPE_ARG3='int' -DRECV_TYPE_ARG4='int' \
|
||||||
-DRECV_TYPE_RETV='int' -DHAVE_STRUCT_TIMEVAL \
|
-DRECV_TYPE_RETV='int' -DHAVE_STRUCT_TIMEVAL \
|
||||||
-Dselect=select_s -Dsocklen_t=int -UHAVE_CONFIG_H
|
-Dselect=select_s -Dsocklen_t=int -UHAVE_CONFIG_H \
|
||||||
|
-DRECVFROM_TYPE_ARG1='int' -DRECVFROM_TYPE_ARG2='void' \
|
||||||
|
-DRECVFROM_TYPE_ARG3='int' -DRECVFROM_TYPE_ARG4='int' \
|
||||||
|
-DRECVFROM_TYPE_ARG6='int' -DRECVFROM_TYPE_RETV='int' \
|
||||||
|
-DRECVFROM_TYPE_ARG5='struct sockaddr' -DHAVE_RECVFROM \
|
||||||
|
-DRECVFROM_TYPE_ARG2_IS_VOID
|
||||||
|
|
||||||
LDFLAGS = -s
|
LDFLAGS = -s
|
||||||
|
|
||||||
|
@@ -75,7 +75,7 @@ MKDIR = mkdir
|
|||||||
MPKXDC = mkxdc
|
MPKXDC = mkxdc
|
||||||
|
|
||||||
# Global flags for all compilers
|
# Global flags for all compilers
|
||||||
CFLAGS = $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
|
CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
|
||||||
|
|
||||||
ifeq ($(CC),mwccnlm)
|
ifeq ($(CC),mwccnlm)
|
||||||
LD = mwldnlm
|
LD = mwldnlm
|
||||||
@@ -282,13 +282,19 @@ config.h: Makefile.netware
|
|||||||
@echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"$(DL) >> $@
|
@echo $(DL)#define PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/"$(DL) >> $@
|
||||||
ifeq ($(LIBARCH),CLIB)
|
ifeq ($(LIBARCH),CLIB)
|
||||||
@echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
|
@echo $(DL)#define OS "i586-pc-clib-NetWare"$(DL) >> $@
|
||||||
@echo $(DL)#define MAXHOSTNAMELEN 256$(DL) >> $@
|
|
||||||
@echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
|
@echo $(DL)#define NETDB_USE_INTERNET 1$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG1 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG2 char *$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
|
||||||
@@ -325,6 +331,14 @@ else
|
|||||||
@echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
|
||||||
@@ -350,6 +364,7 @@ endif
|
|||||||
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
|
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
|
||||||
@@ -373,7 +388,6 @@ endif
|
|||||||
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
|
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
|
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
|
||||||
@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
|
|
||||||
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
|
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
|
||||||
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
|
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
|
||||||
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
|
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
|
||||||
|
@@ -111,6 +111,7 @@ $(DEF_FILE): $(OBJECTS) Makefile.VC6
|
|||||||
@echo ares_parse_ptr_reply >> $@
|
@echo ares_parse_ptr_reply >> $@
|
||||||
@echo ares_parse_ns_reply >> $@
|
@echo ares_parse_ns_reply >> $@
|
||||||
@echo ares_process >> $@
|
@echo ares_process >> $@
|
||||||
|
@echo ares_process_fd >> $@
|
||||||
@echo ares_query >> $@
|
@echo ares_query >> $@
|
||||||
@echo ares_search >> $@
|
@echo ares_search >> $@
|
||||||
@echo ares_strerror >> $@
|
@echo ares_strerror >> $@
|
||||||
|
@@ -27,7 +27,7 @@ call ares_process() when select() returns.
|
|||||||
Some features are missing from the current version of ares, relative
|
Some features are missing from the current version of ares, relative
|
||||||
to the BIND resolver:
|
to the BIND resolver:
|
||||||
|
|
||||||
* There is no IPV6 support.
|
* There is no IPV6 support. [not true for c-ares]
|
||||||
* There is no hostname verification.
|
* There is no hostname verification.
|
||||||
* There is no logging of unexpected events.
|
* There is no logging of unexpected events.
|
||||||
* There is no debugging-oriented logging.
|
* There is no debugging-oriented logging.
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
This is what's new and changed in the c-ares 1.5.3 release:
|
This is what's new and changed in the c-ares 1.5.4 release:
|
||||||
|
|
||||||
o adig sample application compilation failure on some systems
|
o
|
||||||
|
|
||||||
Thanks go to these friendly people for their efforts and contributions:
|
Thanks go to these friendly people for their efforts and contributions:
|
||||||
|
|
||||||
Brad House
|
|
||||||
and obviously Daniel Stenberg
|
and obviously Daniel Stenberg
|
||||||
|
|
||||||
Have fun!
|
Have fun!
|
||||||
|
@@ -1,5 +1,129 @@
|
|||||||
|
|
||||||
|
|
||||||
|
dnl CURL_CHECK_COMPILER_HALT_ON_ERROR
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Verifies if the compiler actually halts after the
|
||||||
|
dnl compilation phase without generating any object
|
||||||
|
dnl code file, when the source compiles with errors.
|
||||||
|
|
||||||
|
AC_DEFUN([CURL_CHECK_COMPILER_HALT_ON_ERROR], [
|
||||||
|
AC_MSG_CHECKING([if compiler halts on compilation errors])
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
]],[[
|
||||||
|
force compilation error
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_ERROR([compiler does not halt on compilation errors.])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Verifies if the compiler actually halts after the
|
||||||
|
dnl compilation phase without generating any object
|
||||||
|
dnl code file, when the source code tries to define a
|
||||||
|
dnl type for a constant array with negative dimension.
|
||||||
|
|
||||||
|
AC_DEFUN([CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE], [
|
||||||
|
AC_REQUIRE([CURL_CHECK_COMPILER_HALT_ON_ERROR])dnl
|
||||||
|
AC_MSG_CHECKING([if compiler halts on negative sized arrays])
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
typedef char bad_t[sizeof(char) == sizeof(int) ? -1 : -1 ];
|
||||||
|
]],[[
|
||||||
|
bad_t dummy;
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_ERROR([compiler does not halt on negative sized arrays.])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Use the C preprocessor to find out if the given object-style symbol
|
||||||
|
dnl is defined and get its expansion. This macro will not use default
|
||||||
|
dnl includes even if no INCLUDES argument is given. This macro will run
|
||||||
|
dnl silently when invoked with three arguments. If the expansion would
|
||||||
|
dnl result in a set of double-quoted strings the returned expansion will
|
||||||
|
dnl actually be a single double-quoted string concatenating all them.
|
||||||
|
|
||||||
|
AC_DEFUN([CURL_CHECK_DEF], [
|
||||||
|
AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
|
||||||
|
AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
|
||||||
|
if test -z "$SED"; then
|
||||||
|
AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
|
||||||
|
fi
|
||||||
|
if test -z "$GREP"; then
|
||||||
|
AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
|
||||||
|
fi
|
||||||
|
ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
|
||||||
|
tmp_exp=""
|
||||||
|
AC_PREPROC_IFELSE([
|
||||||
|
AC_LANG_SOURCE(
|
||||||
|
ifelse($2,,,[$2])[[
|
||||||
|
#ifdef $1
|
||||||
|
CURL_DEF_TOKEN $1
|
||||||
|
#endif
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
|
||||||
|
"$GREP" CURL_DEF_TOKEN 2>/dev/null | \
|
||||||
|
"$SED" 's/.*CURL_DEF_TOKEN[[ ]]//' 2>/dev/null | \
|
||||||
|
"$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
|
||||||
|
if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
|
||||||
|
tmp_exp=""
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
if test -z "$tmp_exp"; then
|
||||||
|
AS_VAR_SET(ac_HaveDef, no)
|
||||||
|
ifelse($3,,[AC_MSG_RESULT([no])])
|
||||||
|
else
|
||||||
|
AS_VAR_SET(ac_HaveDef, yes)
|
||||||
|
AS_VAR_SET(ac_Def, $tmp_exp)
|
||||||
|
ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
|
||||||
|
fi
|
||||||
|
AS_VAR_POPDEF([ac_Def])dnl
|
||||||
|
AS_VAR_POPDEF([ac_HaveDef])dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_AIX_ALL_SOURCE
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Provides a replacement of traditional AC_AIX with
|
||||||
|
dnl an uniform behaviour across all autoconf versions,
|
||||||
|
dnl and with our own placement rules.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_AIX_ALL_SOURCE], [
|
||||||
|
AH_VERBATIM([_ALL_SOURCE],
|
||||||
|
[/* Define to 1 if OS is AIX. */
|
||||||
|
#ifndef _ALL_SOURCE
|
||||||
|
# undef _ALL_SOURCE
|
||||||
|
#endif])
|
||||||
|
AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
|
||||||
|
AC_BEFORE([$0], [CARES_CONFIGURE_REENTRANT])dnl
|
||||||
|
AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
|
||||||
|
AC_EGREP_CPP([yes_this_is_aix],[
|
||||||
|
#ifdef _AIX
|
||||||
|
yes_this_is_aix
|
||||||
|
#endif
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
AC_DEFINE(_ALL_SOURCE)
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_HEADER_WINDOWS
|
dnl CURL_CHECK_HEADER_WINDOWS
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl Check for compilable and valid windows.h header
|
dnl Check for compilable and valid windows.h header
|
||||||
@@ -50,7 +174,8 @@ AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
|
|||||||
AC_COMPILE_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
]],[[
|
]],[[
|
||||||
#if defined(__MINGW32__) || defined(__MINGW32CE__)
|
#if defined(__MINGW32__) || defined(__MINGW32CE__) || \
|
||||||
|
(defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))
|
||||||
int dummy=1;
|
int dummy=1;
|
||||||
#else
|
#else
|
||||||
Not a native Windows build target.
|
Not a native Windows build target.
|
||||||
@@ -250,6 +375,7 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
|
|||||||
for arg1 in 'int' 'SOCKET'; do
|
for arg1 in 'int' 'SOCKET'; do
|
||||||
for arg2 in "struct sockaddr" void; do
|
for arg2 in "struct sockaddr" void; do
|
||||||
for t in int size_t unsigned long "unsigned long"; do
|
for t in int size_t unsigned long "unsigned long"; do
|
||||||
|
if test "$curl_cv_socklen_t_equiv" = "unknown"; then
|
||||||
AC_COMPILE_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
#undef inline
|
#undef inline
|
||||||
@@ -275,15 +401,15 @@ AC_DEFUN([CURL_CHECK_TYPE_SOCKLEN_T], [
|
|||||||
#endif
|
#endif
|
||||||
#define GETPEERNCALLCONV
|
#define GETPEERNCALLCONV
|
||||||
#endif
|
#endif
|
||||||
extern int GETPEERNCALLCONV getpeername ($arg1, $arg2 *, $t *);
|
extern int GETPEERNCALLCONV getpeername($arg1, $arg2 *, $t *);
|
||||||
]],[[
|
]],[[
|
||||||
$t len=0;
|
$t len=0;
|
||||||
getpeername(0,0,&len);
|
getpeername(0,0,&len);
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_socklen_t_equiv="$t"
|
curl_cv_socklen_t_equiv="$t"
|
||||||
break 3
|
|
||||||
])
|
])
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
@@ -412,6 +538,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
|
|||||||
for gni_arg2 in 'socklen_t' 'size_t' 'int'; do
|
for gni_arg2 in 'socklen_t' 'size_t' 'int'; do
|
||||||
for gni_arg46 in 'size_t' 'int' 'socklen_t' 'unsigned int' 'DWORD'; do
|
for gni_arg46 in 'size_t' 'int' 'socklen_t' 'unsigned int' 'DWORD'; do
|
||||||
for gni_arg7 in 'int' 'unsigned int'; do
|
for gni_arg7 in 'int' 'unsigned int'; do
|
||||||
|
if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
|
||||||
AC_COMPILE_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
#undef inline
|
#undef inline
|
||||||
@@ -456,13 +583,13 @@ AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
|
|||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7"
|
curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7"
|
||||||
break 4
|
|
||||||
])
|
])
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
]) # AC_CACHE_CHECK
|
]) # AC-CACHE-CHECK
|
||||||
if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
|
if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
|
||||||
AC_MSG_WARN([Cannot find proper types to use for getnameinfo args])
|
AC_MSG_WARN([Cannot find proper types to use for getnameinfo args])
|
||||||
AC_MSG_WARN([HAVE_GETNAMEINFO will not be defined])
|
AC_MSG_WARN([HAVE_GETNAMEINFO will not be defined])
|
||||||
@@ -520,7 +647,7 @@ AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
|
|||||||
ac_cv_func_getnameinfo="yes"
|
ac_cv_func_getnameinfo="yes"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl TYPE_SOCKADDR_STORAGE
|
dnl TYPE_SOCKADDR_STORAGE
|
||||||
@@ -624,7 +751,7 @@ AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID], [
|
|||||||
#else
|
#else
|
||||||
return 4; /* Error, NI_WITHSCOPEID not defined or no getnameinfo() */
|
return 4; /* Error, NI_WITHSCOPEID not defined or no getnameinfo() */
|
||||||
#endif
|
#endif
|
||||||
]]) # AC_LANG_PROGRAM
|
]]) # AC-LANG-PROGRAM
|
||||||
],[
|
],[
|
||||||
# Exit code == 0. Program worked.
|
# Exit code == 0. Program worked.
|
||||||
ac_cv_working_ni_withscopeid="yes"
|
ac_cv_working_ni_withscopeid="yes"
|
||||||
@@ -646,16 +773,16 @@ AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID], [
|
|||||||
ac_cv_working_ni_withscopeid="yes"
|
ac_cv_working_ni_withscopeid="yes"
|
||||||
],[
|
],[
|
||||||
ac_cv_working_ni_withscopeid="no"
|
ac_cv_working_ni_withscopeid="no"
|
||||||
]) # AC_COMPILE_IFELSE
|
]) # AC-COMPILE-IFELSE
|
||||||
]) # AC_RUN_IFELSE
|
]) # AC-RUN-IFELSE
|
||||||
]) # AC_CACHE_CHECK
|
]) # AC-CACHE-CHECK
|
||||||
case "$ac_cv_working_ni_withscopeid" in
|
case "$ac_cv_working_ni_withscopeid" in
|
||||||
yes)
|
yes)
|
||||||
AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
|
AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
|
||||||
[Define to 1 if NI_WITHSCOPEID exists and works.])
|
[Define to 1 if NI_WITHSCOPEID exists and works.])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_FUNC_RECV
|
dnl CURL_CHECK_FUNC_RECV
|
||||||
@@ -717,6 +844,7 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
|
|||||||
for recv_arg2 in 'char *' 'void *'; do
|
for recv_arg2 in 'char *' 'void *'; do
|
||||||
for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
|
for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
|
||||||
for recv_arg4 in 'int' 'unsigned int'; do
|
for recv_arg4 in 'int' 'unsigned int'; do
|
||||||
|
if test "$curl_cv_func_recv_args" = "unknown"; then
|
||||||
AC_COMPILE_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
#undef inline
|
#undef inline
|
||||||
@@ -742,7 +870,8 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
|
|||||||
#endif
|
#endif
|
||||||
#define RECVCALLCONV
|
#define RECVCALLCONV
|
||||||
#endif
|
#endif
|
||||||
extern $recv_retv RECVCALLCONV recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
|
extern $recv_retv RECVCALLCONV
|
||||||
|
recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
|
||||||
]],[[
|
]],[[
|
||||||
$recv_arg1 s=0;
|
$recv_arg1 s=0;
|
||||||
$recv_arg2 buf=0;
|
$recv_arg2 buf=0;
|
||||||
@@ -752,14 +881,14 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
|
|||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
|
curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
|
||||||
break 5
|
|
||||||
])
|
])
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
]) # AC_CACHE_CHECK
|
]) # AC-CACHE-CHECK
|
||||||
if test "$curl_cv_func_recv_args" = "unknown"; then
|
if test "$curl_cv_func_recv_args" = "unknown"; then
|
||||||
AC_MSG_ERROR([Cannot find proper types to use for recv args])
|
AC_MSG_ERROR([Cannot find proper types to use for recv args])
|
||||||
else
|
else
|
||||||
@@ -786,7 +915,7 @@ AC_DEFUN([CURL_CHECK_FUNC_RECV], [
|
|||||||
else
|
else
|
||||||
AC_MSG_ERROR([Unable to link function recv])
|
AC_MSG_ERROR([Unable to link function recv])
|
||||||
fi
|
fi
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_FUNC_SEND
|
dnl CURL_CHECK_FUNC_SEND
|
||||||
@@ -849,6 +978,7 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
|||||||
for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
|
for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
|
||||||
for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
|
for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
|
||||||
for send_arg4 in 'int' 'unsigned int'; do
|
for send_arg4 in 'int' 'unsigned int'; do
|
||||||
|
if test "$curl_cv_func_send_args" = "unknown"; then
|
||||||
AC_COMPILE_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
#undef inline
|
#undef inline
|
||||||
@@ -874,7 +1004,8 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
|||||||
#endif
|
#endif
|
||||||
#define SENDCALLCONV
|
#define SENDCALLCONV
|
||||||
#endif
|
#endif
|
||||||
extern $send_retv SENDCALLCONV send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
|
extern $send_retv SENDCALLCONV
|
||||||
|
send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
|
||||||
]],[[
|
]],[[
|
||||||
$send_arg1 s=0;
|
$send_arg1 s=0;
|
||||||
$send_arg3 len=0;
|
$send_arg3 len=0;
|
||||||
@@ -883,14 +1014,14 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
|||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
|
curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
|
||||||
break 5
|
|
||||||
])
|
])
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
]) # AC_CACHE_CHECK
|
]) # AC-CACHE-CHECK
|
||||||
if test "$curl_cv_func_send_args" = "unknown"; then
|
if test "$curl_cv_func_send_args" = "unknown"; then
|
||||||
AC_MSG_ERROR([Cannot find proper types to use for send args])
|
AC_MSG_ERROR([Cannot find proper types to use for send args])
|
||||||
else
|
else
|
||||||
@@ -951,7 +1082,201 @@ AC_DEFUN([CURL_CHECK_FUNC_SEND], [
|
|||||||
else
|
else
|
||||||
AC_MSG_ERROR([Unable to link function send])
|
AC_MSG_ERROR([Unable to link function send])
|
||||||
fi
|
fi
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CURL_CHECK_FUNC_RECVFROM
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Test if the socket recvfrom() function is available,
|
||||||
|
dnl and check its return type and the types of its
|
||||||
|
dnl arguments. If the function succeeds HAVE_RECVFROM
|
||||||
|
dnl will be defined, defining the types of the arguments
|
||||||
|
dnl in RECVFROM_TYPE_ARG1, RECVFROM_TYPE_ARG2, and so on
|
||||||
|
dnl to RECVFROM_TYPE_ARG6, defining also the type of the
|
||||||
|
dnl function return value in RECVFROM_TYPE_RETV.
|
||||||
|
dnl Notice that the types returned for pointer arguments
|
||||||
|
dnl will actually be the type pointed by the pointer.
|
||||||
|
|
||||||
|
AC_DEFUN([CURL_CHECK_FUNC_RECVFROM], [
|
||||||
|
AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
|
||||||
|
AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
|
||||||
|
AC_CHECK_HEADERS(sys/types.h sys/socket.h)
|
||||||
|
#
|
||||||
|
AC_MSG_CHECKING([for recvfrom])
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
#undef inline
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
#include <windows.h>
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_WINSOCK_H
|
||||||
|
#include <winsock.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
]],[[
|
||||||
|
recvfrom(0, 0, 0, 0, 0, 0);
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
curl_cv_recvfrom="yes"
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
curl_cv_recvfrom="no"
|
||||||
|
])
|
||||||
|
#
|
||||||
|
if test "$curl_cv_recvfrom" = "yes"; then
|
||||||
|
AC_CACHE_CHECK([types of args and return type for recvfrom],
|
||||||
|
[curl_cv_func_recvfrom_args], [
|
||||||
|
curl_cv_func_recvfrom_args="unknown"
|
||||||
|
for recvfrom_retv in 'int' 'ssize_t'; do
|
||||||
|
for recvfrom_arg1 in 'int' 'ssize_t' 'SOCKET'; do
|
||||||
|
for recvfrom_arg2 in 'char *' 'void *'; do
|
||||||
|
for recvfrom_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
|
||||||
|
for recvfrom_arg4 in 'int' 'unsigned int'; do
|
||||||
|
for recvfrom_arg5 in 'struct sockaddr *' 'void *'; do
|
||||||
|
for recvfrom_arg6 in 'socklen_t *' 'int *' 'unsigned int *' 'size_t *' 'void *'; do
|
||||||
|
if test "$curl_cv_func_recvfrom_args" = "unknown"; then
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
#undef inline
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
#include <windows.h>
|
||||||
|
#ifdef HAVE_WINSOCK2_H
|
||||||
|
#include <winsock2.h>
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_WINSOCK_H
|
||||||
|
#include <winsock.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#define RECVFROMCALLCONV PASCAL
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#define RECVFROMCALLCONV
|
||||||
|
#endif
|
||||||
|
extern $recvfrom_retv RECVFROMCALLCONV
|
||||||
|
recvfrom($recvfrom_arg1, $recvfrom_arg2,
|
||||||
|
$recvfrom_arg3, $recvfrom_arg4,
|
||||||
|
$recvfrom_arg5, $recvfrom_arg6);
|
||||||
|
]],[[
|
||||||
|
$recvfrom_arg1 s=0;
|
||||||
|
$recvfrom_arg2 buf=0;
|
||||||
|
$recvfrom_arg3 len=0;
|
||||||
|
$recvfrom_arg4 flags=0;
|
||||||
|
$recvfrom_arg5 addr=0;
|
||||||
|
$recvfrom_arg6 addrlen=0;
|
||||||
|
$recvfrom_retv res=0;
|
||||||
|
res = recvfrom(s, buf, len, flags, addr, addrlen);
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
curl_cv_func_recvfrom_args="$recvfrom_arg1,$recvfrom_arg2,$recvfrom_arg3,$recvfrom_arg4,$recvfrom_arg5,$recvfrom_arg6,$recvfrom_retv"
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
done
|
||||||
|
]) # AC-CACHE-CHECK
|
||||||
|
# Nearly last minute change for this release starts here
|
||||||
|
AC_DEFINE_UNQUOTED(HAVE_RECVFROM, 1,
|
||||||
|
[Define to 1 if you have the recvfrom function.])
|
||||||
|
ac_cv_func_recvfrom="yes"
|
||||||
|
# Nearly last minute change for this release ends here
|
||||||
|
if test "$curl_cv_func_recvfrom_args" = "unknown"; then
|
||||||
|
AC_MSG_WARN([Cannot find proper types to use for recvfrom args])
|
||||||
|
else
|
||||||
|
recvfrom_prev_IFS=$IFS; IFS=','
|
||||||
|
set dummy `echo "$curl_cv_func_recvfrom_args" | sed 's/\*/\*/g'`
|
||||||
|
IFS=$recvfrom_prev_IFS
|
||||||
|
shift
|
||||||
|
#
|
||||||
|
recvfrom_ptrt_arg2=$[2]
|
||||||
|
recvfrom_ptrt_arg5=$[5]
|
||||||
|
recvfrom_ptrt_arg6=$[6]
|
||||||
|
#
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG1, $[1],
|
||||||
|
[Define to the type of arg 1 for recvfrom.])
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG3, $[3],
|
||||||
|
[Define to the type of arg 3 for recvfrom.])
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG4, $[4],
|
||||||
|
[Define to the type of arg 4 for recvfrom.])
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_RETV, $[7],
|
||||||
|
[Define to the function return type for recvfrom.])
|
||||||
|
#
|
||||||
|
prev_sh_opts=$-
|
||||||
|
#
|
||||||
|
case $prev_sh_opts in
|
||||||
|
*f*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set -f
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#
|
||||||
|
recvfrom_type_arg2=`echo $recvfrom_ptrt_arg2 | sed 's/ \*//'`
|
||||||
|
recvfrom_type_arg5=`echo $recvfrom_ptrt_arg5 | sed 's/ \*//'`
|
||||||
|
recvfrom_type_arg6=`echo $recvfrom_ptrt_arg6 | sed 's/ \*//'`
|
||||||
|
#
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2, $recvfrom_type_arg2,
|
||||||
|
[Define to the type pointed by arg 2 for recvfrom.])
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5, $recvfrom_type_arg5,
|
||||||
|
[Define to the type pointed by arg 5 for recvfrom.])
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6, $recvfrom_type_arg6,
|
||||||
|
[Define to the type pointed by arg 6 for recvfrom.])
|
||||||
|
#
|
||||||
|
if test "$recvfrom_type_arg2" = "void"; then
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2_IS_VOID, 1,
|
||||||
|
[Define to 1 if the type pointed by arg 2 for recvfrom is void.])
|
||||||
|
fi
|
||||||
|
if test "$recvfrom_type_arg5" = "void"; then
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5_IS_VOID, 1,
|
||||||
|
[Define to 1 if the type pointed by arg 5 for recvfrom is void.])
|
||||||
|
fi
|
||||||
|
if test "$recvfrom_type_arg6" = "void"; then
|
||||||
|
AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6_IS_VOID, 1,
|
||||||
|
[Define to 1 if the type pointed by arg 6 for recvfrom is void.])
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
case $prev_sh_opts in
|
||||||
|
*f*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
set +f
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#
|
||||||
|
AC_DEFINE_UNQUOTED(HAVE_RECVFROM, 1,
|
||||||
|
[Define to 1 if you have the recvfrom function.])
|
||||||
|
ac_cv_func_recvfrom="yes"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
AC_MSG_WARN([Unable to link function recvfrom])
|
||||||
|
AC_MSG_WARN([Your system will be vulnerable to some forms of DNS cache poisoning])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_MSG_NOSIGNAL
|
dnl CURL_CHECK_MSG_NOSIGNAL
|
||||||
@@ -999,7 +1324,7 @@ AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
|
|||||||
[Define to 1 if you have the MSG_NOSIGNAL flag.])
|
[Define to 1 if you have the MSG_NOSIGNAL flag.])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_STRUCT_TIMEVAL
|
dnl CURL_CHECK_STRUCT_TIMEVAL
|
||||||
@@ -1058,7 +1383,7 @@ AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
|
|||||||
[Define to 1 if you have the timeval struct.])
|
[Define to 1 if you have the timeval struct.])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl TYPE_SIG_ATOMIC_T
|
dnl TYPE_SIG_ATOMIC_T
|
||||||
@@ -1102,7 +1427,7 @@ AC_DEFUN([TYPE_SIG_ATOMIC_T], [
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
]) # AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_NONBLOCKING_SOCKET
|
dnl CURL_CHECK_NONBLOCKING_SOCKET
|
||||||
@@ -1257,14 +1582,15 @@ dnl TYPE_IN_ADDR_T
|
|||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
|
dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
|
||||||
dnl and a few other things.
|
dnl and a few other things.
|
||||||
AC_DEFUN([TYPE_IN_ADDR_T],
|
|
||||||
[
|
AC_DEFUN([TYPE_IN_ADDR_T], [
|
||||||
AC_CHECK_TYPE([in_addr_t], ,[
|
AC_CHECK_TYPE([in_addr_t], ,[
|
||||||
AC_MSG_CHECKING([for in_addr_t equivalent])
|
dnl in_addr_t not available
|
||||||
AC_CACHE_VAL([curl_cv_in_addr_t_equiv],
|
AC_CACHE_CHECK([for in_addr_t equivalent],
|
||||||
[
|
[curl_cv_in_addr_t_equiv], [
|
||||||
curl_cv_in_addr_t_equiv=
|
curl_cv_in_addr_t_equiv="unknown"
|
||||||
for t in "unsigned long" int size_t unsigned long; do
|
for t in "unsigned long" int size_t unsigned long; do
|
||||||
|
if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
|
||||||
AC_LINK_IFELSE([
|
AC_LINK_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
#undef inline
|
#undef inline
|
||||||
@@ -1299,18 +1625,20 @@ AC_DEFUN([TYPE_IN_ADDR_T],
|
|||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_in_addr_t_equiv="$t"
|
curl_cv_in_addr_t_equiv="$t"
|
||||||
break
|
|
||||||
])
|
])
|
||||||
done
|
|
||||||
|
|
||||||
if test "x$curl_cv_in_addr_t_equiv" = x; then
|
|
||||||
AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
|
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
])
|
])
|
||||||
AC_MSG_RESULT($curl_cv_in_addr_t_equiv)
|
case "$curl_cv_in_addr_t_equiv" in
|
||||||
|
unknown)
|
||||||
|
AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
|
||||||
|
;;
|
||||||
|
*)
|
||||||
AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
|
AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
|
||||||
[type to use in place of in_addr_t if not defined])],
|
[Type to use in place of in_addr_t when system does not provide it.])
|
||||||
[
|
;;
|
||||||
|
esac
|
||||||
|
],[
|
||||||
#undef inline
|
#undef inline
|
||||||
#ifdef HAVE_WINDOWS_H
|
#ifdef HAVE_WINDOWS_H
|
||||||
#ifndef WIN32_LEAN_AND_MEAN
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
@@ -1338,8 +1666,9 @@ AC_DEFUN([TYPE_IN_ADDR_T],
|
|||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
]) dnl AC_CHECK_TYPE
|
])
|
||||||
]) dnl AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
|
dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
@@ -1375,9 +1704,10 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
ac_cv_func_clock_gettime="no"
|
ac_cv_func_clock_gettime="no"
|
||||||
])
|
])
|
||||||
dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally
|
dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
|
||||||
dnl postponed until library linking checks for clock_gettime pass.
|
dnl until library linking and run-time checks for clock_gettime succeed.
|
||||||
]) dnl AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
|
dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
|
||||||
dnl -------------------------------------------------
|
dnl -------------------------------------------------
|
||||||
@@ -1395,6 +1725,7 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
curl_cv_gclk_LIBS="unknown"
|
curl_cv_gclk_LIBS="unknown"
|
||||||
#
|
#
|
||||||
for x_xlibs in '' '-lrt' '-lposix4' ; do
|
for x_xlibs in '' '-lrt' '-lposix4' ; do
|
||||||
|
if test "$curl_cv_gclk_LIBS" = "unknown"; then
|
||||||
if test -z "$x_xlibs"; then
|
if test -z "$x_xlibs"; then
|
||||||
LIBS="$curl_cv_save_LIBS"
|
LIBS="$curl_cv_save_LIBS"
|
||||||
else
|
else
|
||||||
@@ -1421,8 +1752,8 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
curl_cv_gclk_LIBS="$x_xlibs"
|
curl_cv_gclk_LIBS="$x_xlibs"
|
||||||
break
|
|
||||||
])
|
])
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
#
|
#
|
||||||
LIBS="$curl_cv_save_LIBS"
|
LIBS="$curl_cv_save_LIBS"
|
||||||
@@ -1448,6 +1779,42 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
#
|
#
|
||||||
|
dnl only do runtime verification when not cross-compiling
|
||||||
|
if test "x$cross_compiling" != "xyes" &&
|
||||||
|
test "$ac_cv_func_clock_gettime" = "yes"; then
|
||||||
|
AC_MSG_CHECKING([if monotonic clock_gettime works])
|
||||||
|
AC_RUN_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_TIME_H
|
||||||
|
#include <sys/time.h>
|
||||||
|
#ifdef TIME_WITH_SYS_TIME
|
||||||
|
#include <time.h>
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef HAVE_TIME_H
|
||||||
|
#include <time.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
]],[[
|
||||||
|
struct timespec ts;
|
||||||
|
if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
|
||||||
|
exit(0);
|
||||||
|
else
|
||||||
|
exit(1);
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
|
||||||
|
ac_cv_func_clock_gettime="no"
|
||||||
|
LIBS="$curl_cv_save_LIBS"
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
#
|
||||||
case "$ac_cv_func_clock_gettime" in
|
case "$ac_cv_func_clock_gettime" in
|
||||||
yes)
|
yes)
|
||||||
AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
|
AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
|
||||||
@@ -1457,7 +1824,8 @@ AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
|
|||||||
#
|
#
|
||||||
fi
|
fi
|
||||||
#
|
#
|
||||||
]) dnl AC_DEFUN
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl CURL_DETECT_ICC ([ACTION-IF-YES])
|
dnl CURL_DETECT_ICC ([ACTION-IF-YES])
|
||||||
@@ -1610,7 +1978,7 @@ AC_DEFUN([CURL_CC_DEBUG_OPTS],
|
|||||||
done
|
done
|
||||||
CFLAGS=$NEWFLAGS
|
CFLAGS=$NEWFLAGS
|
||||||
|
|
||||||
]) dnl end of AC_DEFUN()
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl This macro determines if the specified struct exists in the specified file
|
dnl This macro determines if the specified struct exists in the specified file
|
||||||
@@ -1665,62 +2033,118 @@ dnl Test if the getservbyport_r function is available,
|
|||||||
dnl and find out how many parameters it takes.
|
dnl and find out how many parameters it takes.
|
||||||
|
|
||||||
AC_DEFUN([CARES_CHECK_GETSERVBYPORT_R], [
|
AC_DEFUN([CARES_CHECK_GETSERVBYPORT_R], [
|
||||||
AC_MSG_CHECKING([how many arguments getservbyport_r takes])
|
AC_CHECK_HEADERS(sys/types.h netdb.h)
|
||||||
ac_func_getservbyport_r="unknown"
|
#
|
||||||
|
AC_MSG_CHECKING([for getservbyport_r])
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([getservbyport_r])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
cares_cv_getservbyport_r="yes"
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
cares_cv_getservbyport_r="no"
|
||||||
|
])
|
||||||
|
#
|
||||||
|
if test "$cares_cv_getservbyport_r" != "yes"; then
|
||||||
|
AC_MSG_CHECKING([deeper for getservbyport_r])
|
||||||
AC_LINK_IFELSE([
|
AC_LINK_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
#include <netdb.h>
|
|
||||||
]],[[
|
]],[[
|
||||||
int p1, p5;
|
getservbyport_r();
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
cares_cv_getservbyport_r="yes"
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([but still no])
|
||||||
|
cares_cv_getservbyport_r="no"
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
if test "$cares_cv_getservbyport_r" = "yes"; then
|
||||||
|
AC_MSG_CHECKING([how many arguments getservbyport_r takes])
|
||||||
|
cares_cv_getservbyport_r_nargs="unknown"
|
||||||
|
#
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_NETDB_H
|
||||||
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
|
extern int
|
||||||
|
getservbyport_r(int, const char*, struct servent*,
|
||||||
|
char*, size_t, struct servent**);
|
||||||
|
]],[[
|
||||||
|
int p1, res;
|
||||||
|
size_t p5;
|
||||||
char *p2, p4[4096];
|
char *p2, p4[4096];
|
||||||
struct servent *p3, *p6;
|
struct servent *p3, *p6;
|
||||||
getservbyport_r(p1, p2, p3, p4, p5, &p6);
|
res = getservbyport_r(p1, p2, p3, p4, p5, &p6);
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
ac_func_getservbyport_r="6"
|
cares_cv_getservbyport_r_nargs="6"
|
||||||
])
|
])
|
||||||
|
#
|
||||||
if test "$ac_func_getservbyport_r" = "unknown"; then
|
if test "$cares_cv_getservbyport_r_nargs" = "unknown"; then
|
||||||
AC_LINK_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_NETDB_H
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
|
extern struct servent*
|
||||||
|
getservbyport_r(int, const char*, struct servent*,
|
||||||
|
char*, int);
|
||||||
]],[[
|
]],[[
|
||||||
int p1, p5;
|
int p1, p5;
|
||||||
char *p2, p4[4096];
|
char *p2, p4[4096];
|
||||||
struct servent *p3;
|
struct servent *p3, res;
|
||||||
getservbyport_r(p1, p2, p3, p4, p5);
|
res = getservbyport_r(p1, p2, p3, p4, p5);
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
ac_func_getservbyport_r="5"
|
cares_cv_getservbyport_r_nargs="5"
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
#
|
||||||
if test "$ac_func_getservbyport_r" = "unknown"; then
|
if test "$cares_cv_getservbyport_r_nargs" = "unknown"; then
|
||||||
AC_LINK_IFELSE([
|
AC_COMPILE_IFELSE([
|
||||||
AC_LANG_PROGRAM([[
|
AC_LANG_PROGRAM([[
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_NETDB_H
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#endif
|
||||||
|
extern int
|
||||||
|
getservbyport_r(int, const char*, struct servent*,
|
||||||
|
struct servent_data*);
|
||||||
]],[[
|
]],[[
|
||||||
int p1;
|
int p1, res;
|
||||||
char *p2;
|
char *p2;
|
||||||
struct servent *p3;
|
struct servent *p3;
|
||||||
struct servent_data p4;
|
struct servent_data *p4;
|
||||||
getservbyport_r(p1, p2, p3, &p4);
|
res = getservbyport_r(p1, p2, p3, p4);
|
||||||
]])
|
]])
|
||||||
],[
|
],[
|
||||||
ac_func_getservbyport_r="4"
|
cares_cv_getservbyport_r_nargs="4"
|
||||||
])
|
])
|
||||||
fi
|
fi
|
||||||
|
#
|
||||||
if test "$ac_func_getservbyport_r" = "unknown"; then
|
AC_MSG_RESULT([$cares_cv_getservbyport_r_nargs])
|
||||||
AC_MSG_RESULT([not found])
|
#
|
||||||
|
if test "$cares_cv_getservbyport_r_nargs" = "unknown"; then
|
||||||
|
AC_MSG_WARN([HAVE_GETSERVBYPORT_R will not be defined])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT($ac_func_getservbyport_r)
|
|
||||||
AC_DEFINE(HAVE_GETSERVBYPORT_R, 1,
|
AC_DEFINE(HAVE_GETSERVBYPORT_R, 1,
|
||||||
[Specifies whether getservbyport_r is present])
|
[Specifies whether getservbyport_r is present])
|
||||||
AC_DEFINE_UNQUOTED(GETSERVBYPORT_R_ARGS, $ac_func_getservbyport_r,
|
AC_DEFINE_UNQUOTED(GETSERVBYPORT_R_ARGS, $cares_cv_getservbyport_r_nargs,
|
||||||
[Specifies the number of arguments to getservbyport_r])
|
[Specifies the number of arguments to getservbyport_r])
|
||||||
if test "$ac_func_getservbyport_r" = "4" ; then
|
if test "$cares_cv_getservbyport_r_nargs" = "4" ; then
|
||||||
AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, sizeof(struct servent_data),
|
AC_DEFINE(GETSERVBYPORT_R_BUFSIZE, sizeof(struct servent_data),
|
||||||
[Specifies the size of the buffer to pass to getservbyport_r])
|
[Specifies the size of the buffer to pass to getservbyport_r])
|
||||||
else
|
else
|
||||||
@@ -1728,5 +2152,6 @@ AC_DEFUN([CARES_CHECK_GETSERVBYPORT_R], [
|
|||||||
[Specifies the size of the buffer to pass to getservbyport_r])
|
[Specifies the size of the buffer to pass to getservbyport_r])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
#
|
||||||
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
@@ -47,7 +47,7 @@
|
|||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(WIN32)
|
#if defined(WIN32) && !defined(WATT32)
|
||||||
#include <winsock.h>
|
#include <winsock.h>
|
||||||
#else
|
#else
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
@@ -60,6 +60,10 @@
|
|||||||
#include "inet_net_pton.h"
|
#include "inet_net_pton.h"
|
||||||
#include "inet_ntop.h"
|
#include "inet_ntop.h"
|
||||||
|
|
||||||
|
#ifndef INADDR_NONE
|
||||||
|
#define INADDR_NONE 0xffffffff
|
||||||
|
#endif
|
||||||
|
|
||||||
static const char *usage = "acountry [-vh?] {host|addr} ...\n";
|
static const char *usage = "acountry [-vh?] {host|addr} ...\n";
|
||||||
static const char nerd_fmt[] = "%u.%u.%u.%u.zz.countries.nerd.dk";
|
static const char nerd_fmt[] = "%u.%u.%u.%u.zz.countries.nerd.dk";
|
||||||
static const char *nerd_ver1 = nerd_fmt + 14;
|
static const char *nerd_ver1 = nerd_fmt + 14;
|
||||||
@@ -90,7 +94,7 @@ int main(int argc, char **argv)
|
|||||||
ares_channel channel;
|
ares_channel channel;
|
||||||
int ch, status;
|
int ch, status;
|
||||||
|
|
||||||
#ifdef WIN32
|
#if defined(WIN32) && !defined(WATT32)
|
||||||
WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
|
WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
WSAStartup(wVersionRequested, &wsaData);
|
WSAStartup(wVersionRequested, &wsaData);
|
||||||
@@ -158,7 +162,7 @@ int main(int argc, char **argv)
|
|||||||
wait_ares(channel);
|
wait_ares(channel);
|
||||||
ares_destroy(channel);
|
ares_destroy(channel);
|
||||||
|
|
||||||
#ifdef WIN32
|
#if defined(WIN32) && !defined(WATT32)
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -46,9 +46,24 @@ struct timeval ares__tvnow(void)
|
|||||||
*/
|
*/
|
||||||
struct timeval now;
|
struct timeval now;
|
||||||
struct timespec tsnow;
|
struct timespec tsnow;
|
||||||
(void)clock_gettime(CLOCK_MONOTONIC, &tsnow);
|
if(0 == clock_gettime(CLOCK_MONOTONIC, &tsnow)) {
|
||||||
now.tv_sec = tsnow.tv_sec;
|
now.tv_sec = tsnow.tv_sec;
|
||||||
now.tv_usec = tsnow.tv_nsec / 1000;
|
now.tv_usec = tsnow.tv_nsec / 1000;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
** Even when the configure process has truly detected monotonic clock
|
||||||
|
** availability, it might happen that it is not actually available at
|
||||||
|
** run-time. When this occurs simply fallback to other time source.
|
||||||
|
*/
|
||||||
|
#ifdef HAVE_GETTIMEOFDAY
|
||||||
|
else
|
||||||
|
(void)gettimeofday(&now, NULL);
|
||||||
|
#else
|
||||||
|
else {
|
||||||
|
now.tv_sec = (long)time(NULL);
|
||||||
|
now.tv_usec = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return now;
|
return now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -176,6 +176,15 @@ static void host_callback(void *arg, int status, int timeouts,
|
|||||||
else if (hquery->family == AF_INET6)
|
else if (hquery->family == AF_INET6)
|
||||||
{
|
{
|
||||||
status = ares_parse_aaaa_reply(abuf, alen, &host, NULL, NULL);
|
status = ares_parse_aaaa_reply(abuf, alen, &host, NULL, NULL);
|
||||||
|
if (status == ARES_ENODATA)
|
||||||
|
{
|
||||||
|
/* The query returned something (e.g. CNAME) but there were no
|
||||||
|
AAAA records. Try looking up A instead. */
|
||||||
|
hquery->family = AF_INET;
|
||||||
|
ares_search(hquery->channel, hquery->name, C_IN, T_A, host_callback,
|
||||||
|
hquery);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (host && channel->nsort)
|
if (host && channel->nsort)
|
||||||
sort6_addresses(host, channel->sortlist, channel->nsort);
|
sort6_addresses(host, channel->sortlist, channel->nsort);
|
||||||
}
|
}
|
||||||
|
101
ares/ares_init.c
101
ares/ares_init.c
@@ -912,7 +912,8 @@ okay:
|
|||||||
|
|
||||||
static int init_by_defaults(ares_channel channel)
|
static int init_by_defaults(ares_channel channel)
|
||||||
{
|
{
|
||||||
char hostname[MAXHOSTNAMELEN + 1];
|
char *hostname = NULL;
|
||||||
|
int rc = ARES_SUCCESS;
|
||||||
|
|
||||||
if (channel->flags == -1)
|
if (channel->flags == -1)
|
||||||
channel->flags = 0;
|
channel->flags = 0;
|
||||||
@@ -927,53 +928,103 @@ static int init_by_defaults(ares_channel channel)
|
|||||||
if (channel->tcp_port == -1)
|
if (channel->tcp_port == -1)
|
||||||
channel->tcp_port = htons(NAMESERVER_PORT);
|
channel->tcp_port = htons(NAMESERVER_PORT);
|
||||||
|
|
||||||
if (channel->nservers == -1)
|
if (channel->nservers == -1) {
|
||||||
{
|
|
||||||
/* If nobody specified servers, try a local named. */
|
/* If nobody specified servers, try a local named. */
|
||||||
channel->servers = malloc(sizeof(struct server_state));
|
channel->servers = malloc(sizeof(struct server_state));
|
||||||
if (!channel->servers)
|
if (!channel->servers) {
|
||||||
return ARES_ENOMEM;
|
rc = ARES_ENOMEM;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
channel->servers[0].addr.s_addr = htonl(INADDR_LOOPBACK);
|
channel->servers[0].addr.s_addr = htonl(INADDR_LOOPBACK);
|
||||||
channel->nservers = 1;
|
channel->nservers = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel->ndomains == -1)
|
#ifdef ENAMETOOLONG
|
||||||
{
|
#define toolong(x) (x == -1) && ((ENAMETOOLONG == errno) || (EINVAL == errno))
|
||||||
|
#else
|
||||||
|
#define toolong(x) (x == -1) && (EINVAL == errno)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (channel->ndomains == -1) {
|
||||||
/* Derive a default domain search list from the kernel hostname,
|
/* Derive a default domain search list from the kernel hostname,
|
||||||
* or set it to empty if the hostname isn't helpful.
|
* or set it to empty if the hostname isn't helpful.
|
||||||
*/
|
*/
|
||||||
if (gethostname(hostname, sizeof(hostname)) == -1
|
size_t len = 64;
|
||||||
|| !strchr(hostname, '.'))
|
int res;
|
||||||
{
|
|
||||||
channel->ndomains = 0;
|
hostname = (char *)malloc(len);
|
||||||
|
if(!hostname) {
|
||||||
|
rc = ARES_ENOMEM;
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
do {
|
||||||
|
res = gethostname(hostname, len);
|
||||||
|
|
||||||
|
if(toolong(res)) {
|
||||||
|
char *p;
|
||||||
|
len *= 2;
|
||||||
|
p = realloc(hostname, len);
|
||||||
|
if(!p) {
|
||||||
|
rc = ARES_ENOMEM;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
hostname = p;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if(res) {
|
||||||
|
rc = ARES_EBADNAME;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
} while(0);
|
||||||
|
|
||||||
|
channel->ndomains = 0; /* default to none */
|
||||||
|
if (strchr(hostname, '.')) {
|
||||||
|
/* a dot was found */
|
||||||
|
|
||||||
channel->domains = malloc(sizeof(char *));
|
channel->domains = malloc(sizeof(char *));
|
||||||
if (!channel->domains)
|
if (!channel->domains) {
|
||||||
return ARES_ENOMEM;
|
rc = ARES_ENOMEM;
|
||||||
channel->ndomains = 0;
|
goto error;
|
||||||
|
}
|
||||||
channel->domains[0] = strdup(strchr(hostname, '.') + 1);
|
channel->domains[0] = strdup(strchr(hostname, '.') + 1);
|
||||||
if (!channel->domains[0])
|
if (!channel->domains[0]) {
|
||||||
return ARES_ENOMEM;
|
rc = ARES_ENOMEM;
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
channel->ndomains = 1;
|
channel->ndomains = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (channel->nsort == -1)
|
if (channel->nsort == -1) {
|
||||||
{
|
|
||||||
channel->sortlist = NULL;
|
channel->sortlist = NULL;
|
||||||
channel->nsort = 0;
|
channel->nsort = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!channel->lookups)
|
if (!channel->lookups) {
|
||||||
{
|
|
||||||
channel->lookups = strdup("fb");
|
channel->lookups = strdup("fb");
|
||||||
if (!channel->lookups)
|
if (!channel->lookups)
|
||||||
return ARES_ENOMEM;
|
rc = ARES_ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ARES_SUCCESS;
|
error:
|
||||||
|
if(rc) {
|
||||||
|
if(channel->servers)
|
||||||
|
free(channel->servers);
|
||||||
|
|
||||||
|
if(channel->domains && channel->domains[0])
|
||||||
|
free(channel->domains[0]);
|
||||||
|
if(channel->domains)
|
||||||
|
free(channel->domains);
|
||||||
|
if(channel->lookups)
|
||||||
|
free(channel->lookups);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hostname)
|
||||||
|
free(hostname);
|
||||||
|
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef WIN32
|
#ifndef WIN32
|
||||||
@@ -1413,11 +1464,11 @@ static int init_id_key(rc4_key* key,int key_data_len)
|
|||||||
if (!key_data_ptr)
|
if (!key_data_ptr)
|
||||||
return ARES_ENOMEM;
|
return ARES_ENOMEM;
|
||||||
|
|
||||||
randomize_key(key->state,key_data_len);
|
|
||||||
state = &key->state[0];
|
state = &key->state[0];
|
||||||
for(counter = 0; counter < 256; counter++)
|
for(counter = 0; counter < 256; counter++)
|
||||||
/* unnecessary AND but it keeps some compilers happier */
|
/* unnecessary AND but it keeps some compilers happier */
|
||||||
state[counter] = (unsigned char)(counter & 0xff);
|
state[counter] = (unsigned char)(counter & 0xff);
|
||||||
|
randomize_key(key->state,key_data_len);
|
||||||
key->x = 0;
|
key->x = 0;
|
||||||
key->y = 0;
|
key->y = 0;
|
||||||
index1 = 0;
|
index1 = 0;
|
||||||
|
@@ -268,7 +268,7 @@ int ares__timedout(struct timeval *now,
|
|||||||
int ares__timeadd(struct timeval *now,
|
int ares__timeadd(struct timeval *now,
|
||||||
int millisecs);
|
int millisecs);
|
||||||
/* return time offset between now and (future) check, in milliseconds */
|
/* return time offset between now and (future) check, in milliseconds */
|
||||||
int ares__timeoffset(struct timeval *now,
|
long ares__timeoffset(struct timeval *now,
|
||||||
struct timeval *check);
|
struct timeval *check);
|
||||||
void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
|
void ares__rc4(rc4_key* key,unsigned char *buffer_ptr, int buffer_len);
|
||||||
void ares__send_query(ares_channel channel, struct query *query,
|
void ares__send_query(ares_channel channel, struct query *query,
|
||||||
|
@@ -133,13 +133,11 @@ int ares__timeadd(struct timeval *now,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* return time offset between now and (future) check, in milliseconds */
|
/* return time offset between now and (future) check, in milliseconds */
|
||||||
int ares__timeoffset(struct timeval *now,
|
long ares__timeoffset(struct timeval *now,
|
||||||
struct timeval *check)
|
struct timeval *check)
|
||||||
{
|
{
|
||||||
int secs = (check->tv_sec - now->tv_sec); /* this many seconds */
|
return (check->tv_sec - now->tv_sec)*1000 +
|
||||||
int us = (check->tv_usec - now->tv_usec); /* this many microseconds */
|
(check->tv_usec - now->tv_usec)/1000;
|
||||||
|
|
||||||
return secs*1000 + us/1000; /* return them combined as milliseconds */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -431,6 +429,10 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
|
|||||||
int i;
|
int i;
|
||||||
ssize_t count;
|
ssize_t count;
|
||||||
unsigned char buf[PACKETSZ + 1];
|
unsigned char buf[PACKETSZ + 1];
|
||||||
|
#ifdef HAVE_RECVFROM
|
||||||
|
struct sockaddr_in from;
|
||||||
|
socklen_t fromlen;
|
||||||
|
#endif
|
||||||
|
|
||||||
if(!read_fds && (read_fd == ARES_SOCKET_BAD))
|
if(!read_fds && (read_fd == ARES_SOCKET_BAD))
|
||||||
/* no possible action */
|
/* no possible action */
|
||||||
@@ -464,11 +466,24 @@ static void read_udp_packets(ares_channel channel, fd_set *read_fds,
|
|||||||
/* To reduce event loop overhead, read and process as many
|
/* To reduce event loop overhead, read and process as many
|
||||||
* packets as we can. */
|
* packets as we can. */
|
||||||
do {
|
do {
|
||||||
|
#ifdef HAVE_RECVFROM
|
||||||
|
fromlen = sizeof(from);
|
||||||
|
count = (ssize_t)recvfrom(server->udp_socket, (void *)buf, sizeof(buf),
|
||||||
|
0, (struct sockaddr *)&from, &fromlen);
|
||||||
|
#else
|
||||||
count = sread(server->udp_socket, buf, sizeof(buf));
|
count = sread(server->udp_socket, buf, sizeof(buf));
|
||||||
|
#endif
|
||||||
if (count == -1 && try_again(SOCKERRNO))
|
if (count == -1 && try_again(SOCKERRNO))
|
||||||
continue;
|
continue;
|
||||||
else if (count <= 0)
|
else if (count <= 0)
|
||||||
handle_error(channel, i, now);
|
handle_error(channel, i, now);
|
||||||
|
#ifdef HAVE_RECVFROM
|
||||||
|
else if (from.sin_addr.s_addr != server->addr.s_addr)
|
||||||
|
/* Address response came from did not match the address
|
||||||
|
* we sent the request to. Someone may be attempting
|
||||||
|
* to perform a cache poisoning attack */
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
process_answer(channel, buf, (int)count, i, 0, now);
|
process_answer(channel, buf, (int)count, i, 0, now);
|
||||||
} while (count > 0);
|
} while (count > 0);
|
||||||
|
@@ -74,7 +74,8 @@ void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
|
|||||||
|
|
||||||
/* Compute the query ID. Start with no timeout. */
|
/* Compute the query ID. Start with no timeout. */
|
||||||
query->qid = (unsigned short)DNS_HEADER_QID(qbuf);
|
query->qid = (unsigned short)DNS_HEADER_QID(qbuf);
|
||||||
query->timeout.tv_sec = query->timeout.tv_usec = 0;
|
query->timeout.tv_sec = 0;
|
||||||
|
query->timeout.tv_usec = 0;
|
||||||
|
|
||||||
/* Form the TCP query buffer by prepending qlen (as two
|
/* Form the TCP query buffer by prepending qlen (as two
|
||||||
* network-order bytes) to qbuf.
|
* network-order bytes) to qbuf.
|
||||||
|
@@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
#define ARES_VERSION_MAJOR 1
|
#define ARES_VERSION_MAJOR 1
|
||||||
#define ARES_VERSION_MINOR 5
|
#define ARES_VERSION_MINOR 5
|
||||||
#define ARES_VERSION_PATCH 3
|
#define ARES_VERSION_PATCH 4
|
||||||
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
|
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
|
||||||
(ARES_VERSION_MINOR<<8)|\
|
(ARES_VERSION_MINOR<<8)|\
|
||||||
(ARES_VERSION_PATCH))
|
(ARES_VERSION_PATCH))
|
||||||
#define ARES_VERSION_STR "1.5.3-CVS"
|
#define ARES_VERSION_STR "1.5.4-CVS"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
${LIBTOOLIZE:-libtoolize} --copy --automake --force
|
${LIBTOOLIZE:-libtoolize} --copy --automake --force
|
||||||
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS
|
${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS
|
||||||
${AUTOHEADER:-autoheader}
|
${AUTOHEADER:-autoheader}
|
||||||
${AUTOCONF:-autoconf}
|
${AUTOCONF:-autoconf}
|
||||||
${AUTOMAKE:-automake} --add-missing
|
${AUTOMAKE:-automake} --add-missing
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 2004 - 2006 by Daniel Stenberg et al
|
/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software and its
|
* Permission to use, copy, modify, and distribute this software and its
|
||||||
* documentation for any purpose and without fee is hereby granted, provided
|
* documentation for any purpose and without fee is hereby granted, provided
|
||||||
@@ -97,6 +97,30 @@
|
|||||||
/* Define to the function return type for recv. */
|
/* Define to the function return type for recv. */
|
||||||
#define RECV_TYPE_RETV int
|
#define RECV_TYPE_RETV int
|
||||||
|
|
||||||
|
/* Define if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG1 SOCKET
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 2 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG2 char
|
||||||
|
|
||||||
|
/* Define to the type of arg 3 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG3 int
|
||||||
|
|
||||||
|
/* Define to the type of arg 4 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 5 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 6 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
|
||||||
|
/* Define to the function return type for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_RETV int
|
||||||
|
|
||||||
/* Define if you have the send function. */
|
/* Define if you have the send function. */
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
|
|
||||||
|
@@ -1,9 +1,60 @@
|
|||||||
AC_INIT([c-ares],[1.5.1],[daniel@haxx.se])
|
|
||||||
AC_PREREQ(2.57)
|
AC_PREREQ(2.57)
|
||||||
|
|
||||||
|
dnl Version not hardcoded here. Fetched later from ares_version.h
|
||||||
|
AC_INIT([c-ares], [-],
|
||||||
|
[c-ares mailing list => http://cool.haxx.se/mailman/listinfo/c-ares])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([ares_ipv6.h])
|
AC_CONFIG_SRCDIR([ares_ipv6.h])
|
||||||
AM_CONFIG_HEADER([config.h])
|
AM_CONFIG_HEADER([config.h])
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
AM_INIT_AUTOMAKE
|
|
||||||
|
dnl SED is mandatory for configure process and libtool.
|
||||||
|
dnl Set it now, allowing it to be changed later.
|
||||||
|
AC_PATH_PROG([SED], [sed], [not_found],
|
||||||
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
if test -z "$SED" || test "$SED" = "not_found"; then
|
||||||
|
AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
|
||||||
|
fi
|
||||||
|
AC_SUBST([SED])
|
||||||
|
|
||||||
|
dnl GREP is mandatory for configure process and libtool.
|
||||||
|
dnl Set it now, allowing it to be changed later.
|
||||||
|
AC_PATH_PROG([GREP], [grep], [not_found],
|
||||||
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
if test -z "$GREP" || test "$GREP" = "not_found"; then
|
||||||
|
AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
|
||||||
|
fi
|
||||||
|
AC_SUBST([GREP])
|
||||||
|
|
||||||
|
dnl EGREP is mandatory for configure process and libtool.
|
||||||
|
dnl Set it now, allowing it to be changed later.
|
||||||
|
if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
|
||||||
|
AC_MSG_CHECKING([for egrep])
|
||||||
|
EGREP="$GREP -E"
|
||||||
|
AC_MSG_RESULT([$EGREP])
|
||||||
|
else
|
||||||
|
AC_PATH_PROG([EGREP], [egrep], [not_found],
|
||||||
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
fi
|
||||||
|
if test -z "$EGREP" || test "$EGREP" = "not_found"; then
|
||||||
|
AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
|
||||||
|
fi
|
||||||
|
AC_SUBST([EGREP])
|
||||||
|
|
||||||
|
dnl AR is mandatory for configure process and libtool.
|
||||||
|
dnl This is target dependant, so check it as a tool.
|
||||||
|
AC_PATH_TOOL([AR], [ar], [not_found],
|
||||||
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
if test -z "$AR" || test "$AR" = "not_found"; then
|
||||||
|
AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
|
||||||
|
fi
|
||||||
|
AC_SUBST([AR])
|
||||||
|
|
||||||
|
dnl Fetch c-ares version from ares_version.h
|
||||||
|
VERSION=`$SED -ne 's/^#define ARES_VERSION_STR "\(.*\)"/\1/p' ${srcdir}/ares_version.h`
|
||||||
|
AM_INIT_AUTOMAKE([c-ares], [$VERSION])
|
||||||
|
AC_MSG_CHECKING([c-ares version])
|
||||||
|
AC_MSG_RESULT([$VERSION])
|
||||||
|
|
||||||
dnl
|
dnl
|
||||||
dnl Detect the canonical host and target build environment
|
dnl Detect the canonical host and target build environment
|
||||||
@@ -13,11 +64,19 @@ AC_CANONICAL_HOST
|
|||||||
dnl Get system canonical name
|
dnl Get system canonical name
|
||||||
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
|
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
|
||||||
|
|
||||||
AC_AIX
|
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AM_PROG_CC_C_O
|
AM_PROG_CC_C_O
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
dnl This defines _ALL_SOURCE for AIX
|
||||||
|
CARES_CHECK_AIX_ALL_SOURCE
|
||||||
|
|
||||||
|
dnl Our configure and build reentrant settings
|
||||||
|
CARES_CONFIGURE_REENTRANT
|
||||||
|
|
||||||
|
dnl check for how to do large files
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
case $host_os in
|
case $host_os in
|
||||||
solaris*)
|
solaris*)
|
||||||
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
|
AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
|
||||||
@@ -54,15 +113,6 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
|
|||||||
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include"
|
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I$srcdir/../include"
|
||||||
CFLAGS="$CFLAGS -g"
|
CFLAGS="$CFLAGS -g"
|
||||||
|
|
||||||
dnl check for how to do large files, needed to get the curl_off_t check
|
|
||||||
dnl done right
|
|
||||||
AC_SYS_LARGEFILE
|
|
||||||
|
|
||||||
AC_CHECK_SIZEOF(curl_off_t, ,[
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "$srcdir/../include/curl/curl.h"
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl set compiler "debug" options to become more picky, and remove
|
dnl set compiler "debug" options to become more picky, and remove
|
||||||
dnl optimize options from CFLAGS
|
dnl optimize options from CFLAGS
|
||||||
CURL_CC_DEBUG_OPTS
|
CURL_CC_DEBUG_OPTS
|
||||||
@@ -72,6 +122,7 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
)
|
)
|
||||||
AM_CONDITIONAL(DEBUGBUILD, test x$debugbuild = xyes)
|
AM_CONDITIONAL(DEBUGBUILD, test x$debugbuild = xyes)
|
||||||
|
AM_CONDITIONAL(CURLDEBUG, test x$debugbuild = xyes)
|
||||||
|
|
||||||
dnl skip libtool C++ and Fortran compiler checks
|
dnl skip libtool C++ and Fortran compiler checks
|
||||||
m4_ifdef([AC_PROG_CXX], [m4_undefine([AC_PROG_CXX])])
|
m4_ifdef([AC_PROG_CXX], [m4_undefine([AC_PROG_CXX])])
|
||||||
@@ -123,28 +174,6 @@ dnl gethostbyname_r() version
|
|||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
CURL_DETECT_ICC([CFLAGS="$CFLAGS -we 147"])
|
CURL_DETECT_ICC([CFLAGS="$CFLAGS -we 147"])
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
|
|
||||||
dnl and ws2tcpip.h take precedence over any other further checks which
|
|
||||||
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
|
|
||||||
dnl this specific header files. And do them before its results are used.
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
CURL_CHECK_HEADER_WINDOWS
|
|
||||||
CURL_CHECK_NATIVE_WINDOWS
|
|
||||||
case X-"$ac_cv_native_windows" in
|
|
||||||
X-yes)
|
|
||||||
CURL_CHECK_HEADER_WINSOCK
|
|
||||||
CURL_CHECK_HEADER_WINSOCK2
|
|
||||||
CURL_CHECK_HEADER_WS2TCPIP
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ac_cv_header_winsock_h="no"
|
|
||||||
ac_cv_header_winsock2_h="no"
|
|
||||||
ac_cv_header_ws2tcpip_h="no"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl platform/compiler/architecture specific checks/flags
|
dnl platform/compiler/architecture specific checks/flags
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
@@ -182,6 +211,73 @@ case $host in
|
|||||||
#
|
#
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether we are using the IBM C compiler])
|
||||||
|
CURL_CHECK_DEF([__IBMC__], [], [silent])
|
||||||
|
if test "$curl_cv_have_def___IBMC__" = "yes"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
dnl Ensure that compiler optimizations are always thread-safe.
|
||||||
|
CFLAGS="$CFLAGS -qthreaded"
|
||||||
|
dnl Disable type based strict aliasing optimizations, using worst
|
||||||
|
dnl case aliasing assumptions when compiling. Type based aliasing
|
||||||
|
dnl would restrict the lvalues that could be safely used to access
|
||||||
|
dnl a data object.
|
||||||
|
CFLAGS="$CFLAGS -qnoansialias"
|
||||||
|
dnl Force compiler to stop after the compilation phase, without
|
||||||
|
dnl generating an object code file when compilation has errors.
|
||||||
|
CFLAGS="$CFLAGS -qhalt=e"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler])
|
||||||
|
CURL_CHECK_DEF([__DECC], [], [silent])
|
||||||
|
CURL_CHECK_DEF([__DECC_VER], [], [silent])
|
||||||
|
if test "$curl_cv_have_def___DECC" = "yes" &&
|
||||||
|
test "$curl_cv_have_def___DECC_VER" = "yes"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
dnl Select strict ANSI C compiler mode
|
||||||
|
CFLAGS="$CFLAGS -std1"
|
||||||
|
dnl Turn off optimizer ANSI C aliasing rules
|
||||||
|
CFLAGS="$CFLAGS -noansi_alias"
|
||||||
|
dnl Select a higher warning level than default level2
|
||||||
|
CFLAGS="$CFLAGS -msg_enable level3"
|
||||||
|
dnl Generate warnings for missing function prototypes
|
||||||
|
CFLAGS="$CFLAGS -warnprotos"
|
||||||
|
dnl Change some warnings into fatal errors
|
||||||
|
CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURL_CHECK_COMPILER_HALT_ON_ERROR
|
||||||
|
CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Compilation based checks should not be done before this point.
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
|
||||||
|
dnl and ws2tcpip.h take precedence over any other further checks which
|
||||||
|
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
|
||||||
|
dnl this specific header files. And do them before its results are used.
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
CURL_CHECK_HEADER_WINDOWS
|
||||||
|
CURL_CHECK_NATIVE_WINDOWS
|
||||||
|
case X-"$ac_cv_native_windows" in
|
||||||
|
X-yes)
|
||||||
|
CURL_CHECK_HEADER_WINSOCK
|
||||||
|
CURL_CHECK_HEADER_WINSOCK2
|
||||||
|
CURL_CHECK_HEADER_WS2TCPIP
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ac_cv_header_winsock_h="no"
|
||||||
|
ac_cv_header_winsock2_h="no"
|
||||||
|
ac_cv_header_ws2tcpip_h="no"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl Checks for libraries.
|
dnl Checks for libraries.
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
@@ -415,26 +511,6 @@ if test "x$RECENTAIX" = "xyes"; then
|
|||||||
|
|
||||||
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
|
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
|
||||||
|
|
||||||
dnl check if this is the IBM xlc compiler
|
|
||||||
dnl Details thanks to => http://predef.sourceforge.net/
|
|
||||||
AC_MSG_CHECKING([if this is the xlc compiler])
|
|
||||||
AC_EGREP_CPP([^__xlC__], [__xlC__],
|
|
||||||
dnl action if the text is found, this it has not been replaced by the
|
|
||||||
dnl cpp
|
|
||||||
XLC="no"
|
|
||||||
AC_MSG_RESULT([no]),
|
|
||||||
dnl the text was not found, it was replaced by the cpp
|
|
||||||
XLC="yes"
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
CFLAGS="$CFLAGS -qthreaded"
|
|
||||||
dnl AIX xlc has to have strict aliasing turned off. If not,
|
|
||||||
dnl the optimizer assumes that pointers can only point to
|
|
||||||
dnl an object of the same type.
|
|
||||||
CFLAGS="$CFLAGS -qnoansialias"
|
|
||||||
dnl Force AIX xlc to stop after the compilation phase, and not
|
|
||||||
dnl generate object code, when the source compiles with errors.
|
|
||||||
CFLAGS="$CFLAGS -qhalt=e"
|
|
||||||
)
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
@@ -506,7 +582,8 @@ AC_CHECK_SIZEOF(long)
|
|||||||
AC_CHECK_SIZEOF(time_t)
|
AC_CHECK_SIZEOF(time_t)
|
||||||
|
|
||||||
AC_CHECK_TYPE(long long,
|
AC_CHECK_TYPE(long long,
|
||||||
[AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports long long])]
|
[AC_DEFINE(HAVE_LONGLONG, 1,
|
||||||
|
[Define to 1 if the compiler supports the 'long long' data type.])]
|
||||||
longlong="yes"
|
longlong="yes"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -549,9 +626,8 @@ TYPE_SIG_ATOMIC_T
|
|||||||
AC_TYPE_SIGNAL
|
AC_TYPE_SIGNAL
|
||||||
|
|
||||||
CURL_CHECK_FUNC_RECV
|
CURL_CHECK_FUNC_RECV
|
||||||
|
CURL_CHECK_FUNC_RECVFROM
|
||||||
CURL_CHECK_FUNC_SEND
|
CURL_CHECK_FUNC_SEND
|
||||||
|
|
||||||
CURL_CHECK_MSG_NOSIGNAL
|
CURL_CHECK_MSG_NOSIGNAL
|
||||||
|
|
||||||
dnl check for AF_INET6
|
dnl check for AF_INET6
|
||||||
@@ -720,23 +796,27 @@ AC_CHECK_MEMBER(struct addrinfo.ai_flags,
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS( bitncmp \
|
AC_CHECK_FUNCS([bitncmp \
|
||||||
gettimeofday \
|
gettimeofday \
|
||||||
if_indextoname,
|
if_indextoname
|
||||||
dnl if found
|
],[
|
||||||
[],
|
],[
|
||||||
dnl if not found, $ac_func is the name we check for
|
func="$ac_func"
|
||||||
func="$ac_func"
|
AC_MSG_CHECKING([deeper for $func])
|
||||||
AC_MSG_CHECKING([deeper for $func])
|
AC_LINK_IFELSE([
|
||||||
AC_TRY_LINK( [],
|
AC_LANG_PROGRAM([[
|
||||||
[ $func ();],
|
]],[[
|
||||||
AC_MSG_RESULT(yes!)
|
$func ();
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
eval "ac_cv_func_$func=yes"
|
eval "ac_cv_func_$func=yes"
|
||||||
def=`echo "HAVE_$func" | tr 'a-z' 'A-Z'`
|
AC_DEFINE_UNQUOTED([AS_TR_CPP([HAVE_$func])], [1],
|
||||||
AC_DEFINE_UNQUOTED($def, 1, [If you have $func]),
|
[Define to 1 if you have the $func function.])
|
||||||
AC_MSG_RESULT(but still no)
|
],[
|
||||||
)
|
AC_MSG_RESULT([but still no])
|
||||||
)
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl check for inet_pton
|
dnl check for inet_pton
|
||||||
@@ -930,5 +1010,8 @@ if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
|
|||||||
[a suitable file/device to read random data from])
|
[a suitable file/device to read random data from])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
CARES_PRIVATE_LIBS="$LIBS"
|
||||||
|
AC_SUBST(CARES_PRIVATE_LIBS)
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile libcares.pc])
|
AC_CONFIG_FILES([Makefile libcares.pc])
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
# / __|____ / _` | '__/ _ \/ __|
|
# / __|____ / _` | '__/ _ \/ __|
|
||||||
# | (_|_____| (_| | | | __/\__ \
|
# | (_|_____| (_| | | | __/\__ \
|
||||||
# \___| \__,_|_| \___||___/
|
# \___| \__,_|_| \___||___/
|
||||||
# $id: $
|
# $Id$
|
||||||
#
|
#
|
||||||
prefix=@prefix@
|
prefix=@prefix@
|
||||||
exec_prefix=@exec_prefix@
|
exec_prefix=@exec_prefix@
|
||||||
@@ -18,3 +18,4 @@ Requires:
|
|||||||
Requires.private:
|
Requires.private:
|
||||||
Cflags: -I${includedir}
|
Cflags: -I${includedir}
|
||||||
Libs: -L${libdir} -lcares
|
Libs: -L${libdir} -lcares
|
||||||
|
Libs.private: @CARES_PRIVATE_LIBS@
|
||||||
|
442
ares/m4/cares-reentrant.m4
Normal file
442
ares/m4/cares-reentrant.m4
Normal file
@@ -0,0 +1,442 @@
|
|||||||
|
#***************************************************************************
|
||||||
|
# $Id$
|
||||||
|
#
|
||||||
|
# Copyright (C) 2008 by Daniel Stenberg et al
|
||||||
|
#
|
||||||
|
# Permission to use, copy, modify, and distribute this software and its
|
||||||
|
# documentation for any purpose and without fee is hereby granted, provided
|
||||||
|
# that the above copyright notice appear in all copies and that both that
|
||||||
|
# copyright notice and this permission notice appear in supporting
|
||||||
|
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||||
|
# publicity pertaining to distribution of the software without specific,
|
||||||
|
# written prior permission. M.I.T. makes no representations about the
|
||||||
|
# suitability of this software for any purpose. It is provided "as is"
|
||||||
|
# without express or implied warranty.
|
||||||
|
#
|
||||||
|
#***************************************************************************
|
||||||
|
|
||||||
|
# File version for 'aclocal' use. Keep it a single number.
|
||||||
|
# serial 2
|
||||||
|
|
||||||
|
dnl Note 1
|
||||||
|
dnl ------
|
||||||
|
dnl None of the CARES_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
|
||||||
|
dnl conditionally include header files. These macros are used early in the
|
||||||
|
dnl configure process much before header file availability is known.
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_GMTIME_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function gmtime_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GMTIME_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([gmtime_r])
|
||||||
|
],[
|
||||||
|
tmp_gmtime_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_gmtime_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_gmtime_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([gmtime_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <time.h>
|
||||||
|
],[
|
||||||
|
tmp_gmtime_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([gmtime_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <time.h>
|
||||||
|
],[
|
||||||
|
tmp_gmtime_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_LOCALTIME_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function localtime_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_LOCALTIME_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([localtime_r])
|
||||||
|
],[
|
||||||
|
tmp_localtime_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_localtime_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_localtime_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([localtime_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <time.h>
|
||||||
|
],[
|
||||||
|
tmp_localtime_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([localtime_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <time.h>
|
||||||
|
],[
|
||||||
|
tmp_localtime_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_STRERROR_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function strerror_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_STRERROR_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([strerror_r])
|
||||||
|
],[
|
||||||
|
tmp_strerror_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_strerror_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_strerror_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([strerror_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <string.h>
|
||||||
|
],[
|
||||||
|
tmp_strerror_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([strerror_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <string.h>
|
||||||
|
],[
|
||||||
|
tmp_strerror_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_STRTOK_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function strtok_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_STRTOK_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([strtok_r])
|
||||||
|
],[
|
||||||
|
tmp_strtok_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_strtok_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_strtok_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([strtok_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <string.h>
|
||||||
|
],[
|
||||||
|
tmp_strtok_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([strtok_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <string.h>
|
||||||
|
],[
|
||||||
|
tmp_strtok_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_INET_NTOA_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function inet_ntoa_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_INET_NTOA_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
|
||||||
|
],[
|
||||||
|
tmp_inet_ntoa_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_inet_ntoa_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_inet_ntoa_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([inet_ntoa_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
],[
|
||||||
|
tmp_inet_ntoa_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([inet_ntoa_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
],[
|
||||||
|
tmp_inet_ntoa_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function gethostbyaddr_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
|
||||||
|
],[
|
||||||
|
tmp_gethostbyaddr_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_gethostbyaddr_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_gethostbyaddr_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([gethostbyaddr_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_gethostbyaddr_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([gethostbyaddr_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_gethostbyaddr_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function gethostbyname_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
|
||||||
|
],[
|
||||||
|
tmp_gethostbyname_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_gethostbyname_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_gethostbyname_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([gethostbyname_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_gethostbyname_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([gethostbyname_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_gethostbyname_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function getprotobyname_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
|
||||||
|
],[
|
||||||
|
tmp_getprotobyname_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_getprotobyname_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_getprotobyname_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([getprotobyname_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_getprotobyname_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([getprotobyname_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_getprotobyname_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes function getservbyport_r compiler visible.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
|
||||||
|
AC_LINK_IFELSE([
|
||||||
|
AC_LANG_FUNC_LINK_TRY([getservbyport_r])
|
||||||
|
],[
|
||||||
|
tmp_getservbyport_r="yes"
|
||||||
|
],[
|
||||||
|
tmp_getservbyport_r="no"
|
||||||
|
])
|
||||||
|
if test "$tmp_getservbyport_r" = "yes"; then
|
||||||
|
AC_EGREP_CPP([getservbyport_r],[
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_getservbyport_r="proto_declared"
|
||||||
|
],[
|
||||||
|
AC_EGREP_CPP([getservbyport_r],[
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
],[
|
||||||
|
tmp_getservbyport_r="proto_needs_reentrant"
|
||||||
|
tmp_need_reentrant="yes"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl Checks if the preprocessor _REENTRANT definition
|
||||||
|
dnl makes several _r functions compiler visible.
|
||||||
|
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
|
||||||
|
#
|
||||||
|
tmp_need_reentrant="no"
|
||||||
|
#
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_GMTIME_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_LOCALTIME_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_STRERROR_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_STRTOK_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_INET_NTOA_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
|
||||||
|
fi
|
||||||
|
if test "$tmp_need_reentrant" = "no"; then
|
||||||
|
CARES_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl This macro ensures that configuration tests done
|
||||||
|
dnl after this will execute with preprocessor symbol
|
||||||
|
dnl _REENTRANT defined. This macro also ensures that
|
||||||
|
dnl the generated config file defines NEED_REENTRANT
|
||||||
|
dnl and that in turn setup.h will define _REENTRANT.
|
||||||
|
dnl Internal macro for CARES_CONFIGURE_REENTRANT.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
|
||||||
|
AC_DEFINE(NEED_REENTRANT, 1,
|
||||||
|
[Define to 1 if _REENTRANT preprocessor symbol must be defined.])
|
||||||
|
cat >>confdefs.h <<_EOF
|
||||||
|
#ifndef _REENTRANT
|
||||||
|
# define _REENTRANT
|
||||||
|
#endif
|
||||||
|
_EOF
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
dnl CARES_CONFIGURE_REENTRANT
|
||||||
|
dnl -------------------------------------------------
|
||||||
|
dnl This first checks if the preprocessor _REENTRANT
|
||||||
|
dnl symbol is already defined. If it isn't currently
|
||||||
|
dnl defined a set of checks are performed to verify
|
||||||
|
dnl if its definition is required to make visible to
|
||||||
|
dnl the compiler a set of *_r functions. Finally, if
|
||||||
|
dnl _REENTRANT is already defined or needed it takes
|
||||||
|
dnl care of making adjustments necessary to ensure
|
||||||
|
dnl that it is defined equally for further configure
|
||||||
|
dnl tests and generated config file.
|
||||||
|
|
||||||
|
AC_DEFUN([CARES_CONFIGURE_REENTRANT], [
|
||||||
|
AC_PREREQ([2.50])dnl
|
||||||
|
#
|
||||||
|
AC_MSG_CHECKING([if _REENTRANT is already defined])
|
||||||
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
|
]],[[
|
||||||
|
#ifdef _REENTRANT
|
||||||
|
int dummy=1;
|
||||||
|
#else
|
||||||
|
force compilation error
|
||||||
|
#endif
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
tmp_reentrant_initially_defined="yes"
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
tmp_reentrant_initially_defined="no"
|
||||||
|
])
|
||||||
|
#
|
||||||
|
if test "$tmp_reentrant_initially_defined" = "no"; then
|
||||||
|
AC_MSG_CHECKING([if _REENTRANT is actually needed])
|
||||||
|
CARES_CHECK_NEED_REENTRANT_FUNCTIONS_R
|
||||||
|
if test "$tmp_need_reentrant" = "yes"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
AC_MSG_CHECKING([if _REENTRANT is onwards defined])
|
||||||
|
if test "$tmp_reentrant_initially_defined" = "yes" ||
|
||||||
|
test "$tmp_need_reentrant" = "yes"; then
|
||||||
|
CARES_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
#
|
||||||
|
])
|
||||||
|
|
@@ -38,7 +38,7 @@ if(!-f "configure") {
|
|||||||
`./buildconf`;
|
`./buildconf`;
|
||||||
}
|
}
|
||||||
print "adding $version in the configure.ac file\n";
|
print "adding $version in the configure.ac file\n";
|
||||||
`sed -e 's/AC_INIT.*/AC_INIT([c-ares], [$version])/' < configure.ac > configure.ac.dist`;
|
`sed -e 's/AC_INIT.*/AC_INIT([c-ares], [$version],/' < configure.ac > configure.ac.dist`;
|
||||||
|
|
||||||
# now make a new configure script with this
|
# now make a new configure script with this
|
||||||
print "makes a new configure script\n";
|
print "makes a new configure script\n";
|
||||||
@@ -50,9 +50,11 @@ print "running configure\n";
|
|||||||
|
|
||||||
# now make the actual tarball
|
# now make the actual tarball
|
||||||
print "running make dist\n";
|
print "running make dist\n";
|
||||||
`make dist`;
|
`make dist VERSION=$version`;
|
||||||
|
|
||||||
print "removing temporary configure.ac file\n";
|
print "removing temporary configure.ac file\n";
|
||||||
`rm configure.ac.dist`;
|
`rm configure.ac.dist`;
|
||||||
|
print "removing temporary ares_version.h file\n";
|
||||||
|
`rm ares_version.h.dist`;
|
||||||
|
|
||||||
print "NOTE: now cvs tag this release!\n";
|
print "NOTE: now cvs tag this release!\n";
|
||||||
|
@@ -13,8 +13,6 @@
|
|||||||
|
|
||||||
#ifndef NETWARE
|
#ifndef NETWARE
|
||||||
|
|
||||||
#define MAXHOSTNAMELEN 256
|
|
||||||
|
|
||||||
/* Structure for scatter/gather I/O. */
|
/* Structure for scatter/gather I/O. */
|
||||||
struct iovec
|
struct iovec
|
||||||
{
|
{
|
||||||
|
14
ares/setup.h
14
ares/setup.h
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al
|
/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software and its
|
* Permission to use, copy, modify, and distribute this software and its
|
||||||
* documentation for any purpose and without fee is hereby granted, provided
|
* documentation for any purpose and without fee is hereby granted, provided
|
||||||
@@ -39,6 +39,18 @@
|
|||||||
|
|
||||||
#endif /* HAVE_CONFIG_H */
|
#endif /* HAVE_CONFIG_H */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tru64 needs _REENTRANT set for a few function prototypes and
|
||||||
|
* things to appear in the system header files. Unixware needs it
|
||||||
|
* to build proper reentrant code. Others may also need it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef NEED_REENTRANT
|
||||||
|
# ifndef _REENTRANT
|
||||||
|
# define _REENTRANT
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Include header files for windows builds before redefining anything.
|
* Include header files for windows builds before redefining anything.
|
||||||
* Use this preproessor block only to include or exclude windows.h,
|
* Use this preproessor block only to include or exclude windows.h,
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
/* Copyright (C) 2004 - 2007 by Daniel Stenberg et al
|
/* Copyright (C) 2004 - 2008 by Daniel Stenberg et al
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and distribute this software and its
|
* Permission to use, copy, modify, and distribute this software and its
|
||||||
* documentation for any purpose and without fee is hereby granted, provided
|
* documentation for any purpose and without fee is hereby granted, provided
|
||||||
@@ -191,6 +191,46 @@ struct timeval {
|
|||||||
#endif /* HAVE_SEND */
|
#endif /* HAVE_SEND */
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#if defined(HAVE_RECVFROM)
|
||||||
|
/*
|
||||||
|
* Currently recvfrom is only used on udp sockets.
|
||||||
|
*/
|
||||||
|
#if !defined(RECVFROM_TYPE_ARG1) || \
|
||||||
|
!defined(RECVFROM_TYPE_ARG2) || \
|
||||||
|
!defined(RECVFROM_TYPE_ARG3) || \
|
||||||
|
!defined(RECVFROM_TYPE_ARG4) || \
|
||||||
|
!defined(RECVFROM_TYPE_ARG5) || \
|
||||||
|
!defined(RECVFROM_TYPE_ARG6) || \
|
||||||
|
!defined(RECVFROM_TYPE_RETV)
|
||||||
|
/* */
|
||||||
|
Error Missing_definition_of_return_and_arguments_types_of_recvfrom
|
||||||
|
/* */
|
||||||
|
#else
|
||||||
|
#define sreadfrom(s,b,bl,f,fl) (ssize_t)recvfrom((RECVFROM_TYPE_ARG1) (s), \
|
||||||
|
(RECVFROM_TYPE_ARG2 *)(b), \
|
||||||
|
(RECVFROM_TYPE_ARG3) (bl), \
|
||||||
|
(RECVFROM_TYPE_ARG4) (0), \
|
||||||
|
(RECVFROM_TYPE_ARG5 *)(f), \
|
||||||
|
(RECVFROM_TYPE_ARG6 *)(fl))
|
||||||
|
#endif
|
||||||
|
#else /* HAVE_RECVFROM */
|
||||||
|
#ifndef sreadfrom
|
||||||
|
/* */
|
||||||
|
Error Missing_definition_of_macro_sreadfrom
|
||||||
|
/* */
|
||||||
|
#endif
|
||||||
|
#endif /* HAVE_RECVFROM */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef RECVFROM_TYPE_ARG6_IS_VOID
|
||||||
|
# define RECVFROM_ARG6_T int
|
||||||
|
#else
|
||||||
|
# define RECVFROM_ARG6_T RECVFROM_TYPE_ARG6
|
||||||
|
#endif
|
||||||
|
#endif /* if 0 */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Uppercase macro versions of ANSI/ISO is*() functions/macros which
|
* Uppercase macro versions of ANSI/ISO is*() functions/macros which
|
||||||
* avoid negative number inputs with argument byte codes > 127.
|
* avoid negative number inputs with argument byte codes > 127.
|
||||||
|
104
buildconf
104
buildconf
@@ -6,7 +6,7 @@
|
|||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# This software is licensed as described in the file COPYING, which
|
# This software is licensed as described in the file COPYING, which
|
||||||
# you should have received as part of this distribution. The terms
|
# you should have received as part of this distribution. The terms
|
||||||
@@ -27,22 +27,57 @@ die(){
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
# this works as 'which' but we use a different name to make it more obvious we
|
#--------------------------------------------------------------------------
|
||||||
# aren't using 'which'! ;-)
|
# findtool works as 'which' but we use a different name to make it more
|
||||||
|
# obvious we aren't using 'which'! ;-)
|
||||||
|
#
|
||||||
findtool(){
|
findtool(){
|
||||||
file="$1"
|
file="$1"
|
||||||
|
|
||||||
IFS=":"
|
old_IFS=$IFS; IFS=':'
|
||||||
for path in $PATH
|
for path in $PATH
|
||||||
do
|
do
|
||||||
|
IFS=$old_IFS
|
||||||
# echo "checks for $file in $path" >&2
|
# echo "checks for $file in $path" >&2
|
||||||
if test -f "$path/$file"; then
|
if test -f "$path/$file"; then
|
||||||
echo "$path/$file"
|
echo "$path/$file"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
IFS=$old_IFS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# removethis() removes all files and subdirectories with the given name,
|
||||||
|
# inside and below the current subdirectory at invocation time.
|
||||||
|
#
|
||||||
|
removethis(){
|
||||||
|
if test "$#" = "1"; then
|
||||||
|
find . -depth -name $1 -print > buildconf.tmp.$$
|
||||||
|
while read fdname
|
||||||
|
do
|
||||||
|
if test -f "$fdname"; then
|
||||||
|
rm -f "$fdname"
|
||||||
|
elif test -d "$fdname"; then
|
||||||
|
rm -f -r "$fdname"
|
||||||
|
fi
|
||||||
|
done < buildconf.tmp.$$
|
||||||
|
rm -f buildconf.tmp.$$
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Ensure that buildconf runs from the subdirectory where configure.ac lives
|
||||||
|
#
|
||||||
|
if test ! -f configure.ac ||
|
||||||
|
test ! -f src/main.c ||
|
||||||
|
test ! -f lib/urldata.h ||
|
||||||
|
test ! -f include/curl/curl.h; then
|
||||||
|
echo "Can not run buildconf from outside of curl's source subdirectory!"
|
||||||
|
echo "Change to the subdirectory where buildconf is found, and try again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# autoconf 2.57 or newer
|
# autoconf 2.57 or newer
|
||||||
#
|
#
|
||||||
@@ -65,6 +100,18 @@ fi
|
|||||||
|
|
||||||
echo "buildconf: autoconf version $ac_version (ok)"
|
echo "buildconf: autoconf version $ac_version (ok)"
|
||||||
|
|
||||||
|
am4te_version=`${AUTOM4TE:-autom4te} --version 2>/dev/null|head -n 1| sed -e 's/autom4te\(.*\)/\1/' -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
|
||||||
|
if test -z "$am4te_version"; then
|
||||||
|
echo "buildconf: autom4te not found. Weird autoconf installation!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if test "$am4te_version" = "$ac_version"; then
|
||||||
|
echo "buildconf: autom4te version $am4te_version (ok)"
|
||||||
|
else
|
||||||
|
echo "buildconf: autom4te version $am4te_version (ERROR: does not match autoconf version)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# autoheader 2.50 or newer
|
# autoheader 2.50 or newer
|
||||||
#
|
#
|
||||||
@@ -108,12 +155,16 @@ fi
|
|||||||
|
|
||||||
echo "buildconf: automake version $am_version (ok)"
|
echo "buildconf: automake version $am_version (ok)"
|
||||||
|
|
||||||
ac=`findtool ${ACLOCAL:-aclocal}`
|
acloc_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|head -n 1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
|
||||||
if test -z "$ac"; then
|
if test -z "$acloc_version"; then
|
||||||
echo "buildconf: aclocal not found. Weird automake installation!"
|
echo "buildconf: aclocal not found. Weird automake installation!"
|
||||||
exit 1
|
exit 1
|
||||||
|
fi
|
||||||
|
if test "$acloc_version" = "$am_version"; then
|
||||||
|
echo "buildconf: aclocal version $acloc_version (ok)"
|
||||||
else
|
else
|
||||||
echo "buildconf: aclocal found"
|
echo "buildconf: aclocal version $acloc_version (ERROR: does not match automake version)"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
@@ -202,14 +253,46 @@ fi
|
|||||||
#
|
#
|
||||||
PERL=`findtool ${PERL:-perl}`
|
PERL=`findtool ${PERL:-perl}`
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
|
# Remove files generated on previous buildconf/configure run.
|
||||||
|
#
|
||||||
|
for fname in .deps \
|
||||||
|
Makefile.in \
|
||||||
|
aclocal.m4 \
|
||||||
|
aclocal.m4.bak \
|
||||||
|
autom4te.cache \
|
||||||
|
compile \
|
||||||
|
config.guess \
|
||||||
|
config.h \
|
||||||
|
config.h.in \
|
||||||
|
config.log \
|
||||||
|
config.status \
|
||||||
|
config.sub \
|
||||||
|
configure \
|
||||||
|
curl-config \
|
||||||
|
curlbuild.h \
|
||||||
|
depcomp \
|
||||||
|
libcares.pc \
|
||||||
|
libcurl.pc \
|
||||||
|
libtool \
|
||||||
|
libtool.m4 \
|
||||||
|
ltmain.sh \
|
||||||
|
stamp-h1 \
|
||||||
|
stamp-h2 \
|
||||||
|
stamp-h3 ; do
|
||||||
|
removethis "$fname"
|
||||||
|
done
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
# run the correct scripts now
|
# run the correct scripts now
|
||||||
|
#
|
||||||
|
|
||||||
echo "buildconf: running libtoolize"
|
echo "buildconf: running libtoolize"
|
||||||
$libtoolize --copy --automake --force || die "The libtoolize command failed"
|
$libtoolize --copy --automake --force || die "The libtoolize command failed"
|
||||||
|
|
||||||
echo "buildconf: running aclocal"
|
echo "buildconf: running aclocal"
|
||||||
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The aclocal command line failed"
|
${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "The aclocal command line failed"
|
||||||
|
|
||||||
if test -n "$PERL"; then
|
if test -n "$PERL"; then
|
||||||
echo "buildconf: running aclocal hack to convert all mv to mv -f"
|
echo "buildconf: running aclocal hack to convert all mv to mv -f"
|
||||||
$PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
|
$PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4
|
||||||
@@ -217,10 +300,13 @@ else
|
|||||||
echo "buildconf: perl not found"
|
echo "buildconf: perl not found"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "buildconf: running autoheader"
|
echo "buildconf: running autoheader"
|
||||||
${AUTOHEADER:-autoheader} || die "The autoheader command failed"
|
${AUTOHEADER:-autoheader} || die "The autoheader command failed"
|
||||||
|
|
||||||
echo "buildconf: cp lib/config.h.in src/config.h.in"
|
echo "buildconf: cp lib/config.h.in src/config.h.in"
|
||||||
cp lib/config.h.in src/config.h.in
|
cp lib/config.h.in src/config.h.in
|
||||||
|
|
||||||
echo "buildconf: running autoconf"
|
echo "buildconf: running autoconf"
|
||||||
${AUTOCONF:-autoconf} || die "The autoconf command failed"
|
${AUTOCONF:-autoconf} || die "The autoconf command failed"
|
||||||
|
|
||||||
|
@@ -8,3 +8,6 @@ copy src\hugehelp.c.cvs src\hugehelp.c
|
|||||||
|
|
||||||
REM create Makefile
|
REM create Makefile
|
||||||
copy Makefile.dist Makefile
|
copy Makefile.dist Makefile
|
||||||
|
|
||||||
|
REM create curlbuild.h
|
||||||
|
copy include\curl\curlbuild.h.dist include\curl\curlbuild.h
|
||||||
|
371
configure.ac
371
configure.ac
@@ -19,7 +19,7 @@
|
|||||||
# KIND, either express or implied.
|
# KIND, either express or implied.
|
||||||
#
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
###########################################################################
|
#***************************************************************************
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
AC_PREREQ(2.57)
|
AC_PREREQ(2.57)
|
||||||
@@ -33,28 +33,51 @@ This configure script may be copied, distributed and modified under the
|
|||||||
terms of the curl license; see COPYING for more details])
|
terms of the curl license; see COPYING for more details])
|
||||||
|
|
||||||
AC_CONFIG_SRCDIR([lib/urldata.h])
|
AC_CONFIG_SRCDIR([lib/urldata.h])
|
||||||
AM_CONFIG_HEADER(lib/config.h src/config.h)
|
AM_CONFIG_HEADER(lib/config.h src/config.h include/curl/curlbuild.h)
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
|
||||||
dnl SED is needed by some of the tools
|
dnl SED is mandatory for configure process and libtool.
|
||||||
AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
|
dnl Set it now, allowing it to be changed later.
|
||||||
$PATH:/usr/bin:/usr/local/bin)
|
AC_PATH_PROG([SED], [sed], [not_found],
|
||||||
AC_SUBST(SED)
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
if test -z "$SED" || test "$SED" = "not_found"; then
|
||||||
if test "x$SED" = "xsed-was-not-found-by-configure"; then
|
AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
|
||||||
AC_MSG_WARN([sed was not found, this may ruin your chances to build fine])
|
|
||||||
fi
|
fi
|
||||||
|
AC_SUBST([SED])
|
||||||
|
|
||||||
dnl AR is used by libtool, and try the odd Solaris path too
|
dnl GREP is mandatory for configure process and libtool.
|
||||||
dnl we use AC_CHECK_TOOL since this should make a library for the target
|
dnl Set it now, allowing it to be changed later.
|
||||||
dnl platform
|
AC_PATH_PROG([GREP], [grep], [not_found],
|
||||||
AC_CHECK_TOOL(AR, ar,
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
ar-was-not-found-by-configure,
|
if test -z "$GREP" || test "$GREP" = "not_found"; then
|
||||||
$PATH:/usr/bin:/usr/local/bin:/usr/ccs/bin)
|
AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
|
||||||
AC_SUBST(AR)
|
|
||||||
if test "x$AR" = "xar-was-not-found-by-configure"; then
|
|
||||||
AC_MSG_WARN([ar was not found, this may ruin your chances to build fine])
|
|
||||||
fi
|
fi
|
||||||
|
AC_SUBST([GREP])
|
||||||
|
|
||||||
|
dnl EGREP is mandatory for configure process and libtool.
|
||||||
|
dnl Set it now, allowing it to be changed later.
|
||||||
|
if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
|
||||||
|
AC_MSG_CHECKING([for egrep])
|
||||||
|
EGREP="$GREP -E"
|
||||||
|
AC_MSG_RESULT([$EGREP])
|
||||||
|
else
|
||||||
|
AC_PATH_PROG([EGREP], [egrep], [not_found],
|
||||||
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
fi
|
||||||
|
if test -z "$EGREP" || test "$EGREP" = "not_found"; then
|
||||||
|
AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
|
||||||
|
fi
|
||||||
|
AC_SUBST([EGREP])
|
||||||
|
|
||||||
|
dnl AR is mandatory for configure process and libtool.
|
||||||
|
dnl This is target dependant, so check it as a tool.
|
||||||
|
AC_PATH_TOOL([AR], [ar], [not_found],
|
||||||
|
[$PATH:/usr/bin:/usr/local/bin])
|
||||||
|
if test -z "$AR" || test "$AR" = "not_found"; then
|
||||||
|
AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
|
||||||
|
fi
|
||||||
|
AC_SUBST([AR])
|
||||||
|
|
||||||
AC_SUBST(libext)
|
AC_SUBST(libext)
|
||||||
|
|
||||||
dnl figure out the libcurl version
|
dnl figure out the libcurl version
|
||||||
@@ -106,12 +129,18 @@ AC_CANONICAL_HOST
|
|||||||
dnl Get system canonical name
|
dnl Get system canonical name
|
||||||
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
|
AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
|
||||||
|
|
||||||
dnl Check for AIX weirdos
|
|
||||||
AC_AIX
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
dnl Checks for programs.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
|
|
||||||
|
dnl Our curl_off_t internal and external configure settings
|
||||||
|
CURL_CONFIGURE_CURL_OFF_T
|
||||||
|
|
||||||
|
dnl This defines _ALL_SOURCE for AIX
|
||||||
|
CURL_CHECK_AIX_ALL_SOURCE
|
||||||
|
|
||||||
|
dnl Our configure and build reentrant settings
|
||||||
|
CURL_CONFIGURE_REENTRANT
|
||||||
|
|
||||||
dnl check for how to do large files
|
dnl check for how to do large files
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
@@ -212,32 +241,6 @@ AC_PROG_MAKE_SET
|
|||||||
dnl check if there's a way to force code inline
|
dnl check if there's a way to force code inline
|
||||||
AC_C_INLINE
|
AC_C_INLINE
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
|
|
||||||
dnl and ws2tcpip.h take precedence over any other further checks which
|
|
||||||
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
|
|
||||||
dnl this specific header files. And do them before its results are used.
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
CURL_CHECK_HEADER_WINDOWS
|
|
||||||
CURL_CHECK_NATIVE_WINDOWS
|
|
||||||
case X-"$ac_cv_native_windows" in
|
|
||||||
X-yes)
|
|
||||||
CURL_CHECK_HEADER_WINSOCK
|
|
||||||
CURL_CHECK_HEADER_WINSOCK2
|
|
||||||
CURL_CHECK_HEADER_WS2TCPIP
|
|
||||||
CURL_CHECK_HEADER_WINLDAP
|
|
||||||
CURL_CHECK_HEADER_WINBER
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
ac_cv_header_winsock_h="no"
|
|
||||||
ac_cv_header_winsock2_h="no"
|
|
||||||
ac_cv_header_ws2tcpip_h="no"
|
|
||||||
ac_cv_header_winldap_h="no"
|
|
||||||
ac_cv_header_winber_h="no"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
dnl platform/compiler/architecture specific checks/flags
|
dnl platform/compiler/architecture specific checks/flags
|
||||||
dnl **********************************************************************
|
dnl **********************************************************************
|
||||||
@@ -275,6 +278,78 @@ case $host in
|
|||||||
#
|
#
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether we are using the IBM C compiler])
|
||||||
|
CURL_CHECK_DEF([__IBMC__], [], [silent])
|
||||||
|
if test "$curl_cv_have_def___IBMC__" = "yes"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
dnl Ensure that compiler optimizations are always thread-safe.
|
||||||
|
CFLAGS="$CFLAGS -qthreaded"
|
||||||
|
dnl Disable type based strict aliasing optimizations, using worst
|
||||||
|
dnl case aliasing assumptions when compiling. Type based aliasing
|
||||||
|
dnl would restrict the lvalues that could be safely used to access
|
||||||
|
dnl a data object.
|
||||||
|
CFLAGS="$CFLAGS -qnoansialias"
|
||||||
|
dnl Force compiler to stop after the compilation phase, without
|
||||||
|
dnl generating an object code file when compilation has errors.
|
||||||
|
CFLAGS="$CFLAGS -qhalt=e"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether we are using the DEC/Compaq C compiler])
|
||||||
|
CURL_CHECK_DEF([__DECC], [], [silent])
|
||||||
|
CURL_CHECK_DEF([__DECC_VER], [], [silent])
|
||||||
|
if test "$curl_cv_have_def___DECC" = "yes" &&
|
||||||
|
test "$curl_cv_have_def___DECC_VER" = "yes"; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
dnl Select strict ANSI C compiler mode
|
||||||
|
CFLAGS="$CFLAGS -std1"
|
||||||
|
dnl Turn off optimizer ANSI C aliasing rules
|
||||||
|
CFLAGS="$CFLAGS -noansi_alias"
|
||||||
|
dnl Select a higher warning level than default level2
|
||||||
|
CFLAGS="$CFLAGS -msg_enable level3"
|
||||||
|
dnl Generate warnings for missing function prototypes
|
||||||
|
CFLAGS="$CFLAGS -warnprotos"
|
||||||
|
dnl Change some warnings into fatal errors
|
||||||
|
CFLAGS="$CFLAGS -msg_fatal toofewargs,toomanyargs"
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURL_CHECK_COMPILER_HALT_ON_ERROR
|
||||||
|
CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Compilation based checks should not be done before this point.
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
dnl **********************************************************************
|
||||||
|
dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
|
||||||
|
dnl and ws2tcpip.h take precedence over any other further checks which
|
||||||
|
dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
|
||||||
|
dnl this specific header files. And do them before its results are used.
|
||||||
|
dnl **********************************************************************
|
||||||
|
|
||||||
|
CURL_CHECK_HEADER_WINDOWS
|
||||||
|
CURL_CHECK_NATIVE_WINDOWS
|
||||||
|
case X-"$ac_cv_native_windows" in
|
||||||
|
X-yes)
|
||||||
|
CURL_CHECK_HEADER_WINSOCK
|
||||||
|
CURL_CHECK_HEADER_WINSOCK2
|
||||||
|
CURL_CHECK_HEADER_WS2TCPIP
|
||||||
|
CURL_CHECK_HEADER_WINLDAP
|
||||||
|
CURL_CHECK_HEADER_WINBER
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
ac_cv_header_winsock_h="no"
|
||||||
|
ac_cv_header_winsock2_h="no"
|
||||||
|
ac_cv_header_ws2tcpip_h="no"
|
||||||
|
ac_cv_header_winldap_h="no"
|
||||||
|
ac_cv_header_winber_h="no"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
CURL_CHECK_WIN32_LARGEFILE
|
||||||
|
|
||||||
dnl ************************************************************
|
dnl ************************************************************
|
||||||
dnl switch off particular protocols
|
dnl switch off particular protocols
|
||||||
dnl
|
dnl
|
||||||
@@ -1045,24 +1120,25 @@ if test x"$want_gss" = xyes; then
|
|||||||
AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
|
AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
|
||||||
dnl check if we have a really old MIT kerberos (<= 1.2)
|
dnl check if we have a really old MIT kerberos (<= 1.2)
|
||||||
AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
|
AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
|
||||||
AC_TRY_COMPILE([
|
AC_COMPILE_IFELSE([
|
||||||
|
AC_LANG_PROGRAM([[
|
||||||
#include <gssapi/gssapi.h>
|
#include <gssapi/gssapi.h>
|
||||||
#include <gssapi/gssapi_generic.h>
|
#include <gssapi/gssapi_generic.h>
|
||||||
#include <gssapi/gssapi_krb5.h>
|
#include <gssapi/gssapi_krb5.h>
|
||||||
],[
|
]],[[
|
||||||
gss_import_name(
|
gss_import_name(
|
||||||
(OM_uint32 *)0,
|
(OM_uint32 *)0,
|
||||||
(gss_buffer_t)0,
|
(gss_buffer_t)0,
|
||||||
GSS_C_NT_HOSTBASED_SERVICE,
|
GSS_C_NT_HOSTBASED_SERVICE,
|
||||||
(gss_name_t *)0);
|
(gss_name_t *)0);
|
||||||
|
]])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
AC_DEFINE(HAVE_OLD_GSSMIT, 1, [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
|
AC_DEFINE(HAVE_OLD_GSSMIT, 1,
|
||||||
]
|
[if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
|
||||||
)
|
])
|
||||||
|
|
||||||
fi
|
fi
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
@@ -1176,28 +1252,6 @@ if test X"$OPT_SSL" != Xno; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl This is for Msys/Mingw
|
|
||||||
case $host in
|
|
||||||
*-*-cygwin*)
|
|
||||||
dnl Under Cygwin this is extraneous and causes an unnecessary -lgdi32
|
|
||||||
dnl to be added to LIBS and recorded in the .la file.
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
AC_MSG_CHECKING([for gdi32])
|
|
||||||
my_ac_save_LIBS=$LIBS
|
|
||||||
LIBS="-lgdi32 $LIBS"
|
|
||||||
AC_TRY_LINK([#include <windef.h>
|
|
||||||
#include <wingdi.h>],
|
|
||||||
[GdiFlush();],
|
|
||||||
[ dnl worked!
|
|
||||||
AC_MSG_RESULT([yes])],
|
|
||||||
[ dnl failed, restore LIBS
|
|
||||||
LIBS=$my_ac_save_LIBS
|
|
||||||
AC_MSG_RESULT(no)]
|
|
||||||
)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_CHECK_LIB(crypto, CRYPTO_lock,[
|
AC_CHECK_LIB(crypto, CRYPTO_lock,[
|
||||||
HAVECRYPTO="yes"
|
HAVECRYPTO="yes"
|
||||||
LIBS="-lcrypto $LIBS"
|
LIBS="-lcrypto $LIBS"
|
||||||
@@ -1805,28 +1859,6 @@ if test "x$RECENTAIX" = "xyes"; then
|
|||||||
|
|
||||||
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
|
AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
|
||||||
|
|
||||||
dnl check if this is the IMB xlc compiler
|
|
||||||
dnl Details thanks to => http://predef.sourceforge.net/
|
|
||||||
AC_MSG_CHECKING([if this is the xlc compiler])
|
|
||||||
AC_EGREP_CPP([^__xlC__], [__xlC__],
|
|
||||||
dnl action if the text is found, this it has not been replaced by the
|
|
||||||
dnl cpp
|
|
||||||
XLC="no"
|
|
||||||
AC_MSG_RESULT([no]),
|
|
||||||
dnl the text was not found, it was replaced by the cpp
|
|
||||||
XLC="yes"
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
CFLAGS="$CFLAGS -qthreaded"
|
|
||||||
dnl AIX xlc has to have strict aliasing turned off. If not,
|
|
||||||
dnl the optimizer assumes that pointers can only point to
|
|
||||||
dnl an object of the same type.
|
|
||||||
CFLAGS="$CFLAGS -qnoansialias"
|
|
||||||
dnl Force AIX xlc to stop after the compilation phase, and not
|
|
||||||
dnl generate object code, when the source compiles with errors.
|
|
||||||
CFLAGS="$CFLAGS -qhalt=e"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
dnl is there a localtime_r()
|
dnl is there a localtime_r()
|
||||||
CURL_CHECK_LOCALTIME_R()
|
CURL_CHECK_LOCALTIME_R()
|
||||||
|
|
||||||
@@ -1963,17 +1995,25 @@ AC_HEADER_TIME
|
|||||||
CURL_CHECK_STRUCT_TIMEVAL
|
CURL_CHECK_STRUCT_TIMEVAL
|
||||||
CURL_VERIFY_RUNTIMELIBS
|
CURL_VERIFY_RUNTIMELIBS
|
||||||
|
|
||||||
AC_CHECK_SIZEOF(curl_off_t, ,[
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "$srcdir/include/curl/curl.h"
|
|
||||||
])
|
|
||||||
AC_CHECK_SIZEOF(size_t)
|
AC_CHECK_SIZEOF(size_t)
|
||||||
|
AC_CHECK_SIZEOF(int)
|
||||||
AC_CHECK_SIZEOF(long)
|
AC_CHECK_SIZEOF(long)
|
||||||
|
CURL_CONFIGURE_LONG
|
||||||
AC_CHECK_SIZEOF(time_t)
|
AC_CHECK_SIZEOF(time_t)
|
||||||
AC_CHECK_SIZEOF(off_t)
|
AC_CHECK_SIZEOF(off_t)
|
||||||
|
|
||||||
|
soname_bump=no
|
||||||
|
if test x"$ac_cv_native_windows" != "xyes" &&
|
||||||
|
test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
|
||||||
|
AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
|
||||||
|
AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
|
||||||
|
soname_bump=yes
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_TYPE(long long,
|
AC_CHECK_TYPE(long long,
|
||||||
[AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports long long])]
|
[AC_DEFINE(HAVE_LONGLONG, 1,
|
||||||
|
[Define to 1 if the compiler supports the 'long long' data type.])]
|
||||||
longlong="yes"
|
longlong="yes"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -2018,9 +2058,8 @@ AC_TYPE_SIGNAL
|
|||||||
CURL_CHECK_FUNC_SELECT
|
CURL_CHECK_FUNC_SELECT
|
||||||
|
|
||||||
CURL_CHECK_FUNC_RECV
|
CURL_CHECK_FUNC_RECV
|
||||||
|
CURL_CHECK_FUNC_RECVFROM
|
||||||
CURL_CHECK_FUNC_SEND
|
CURL_CHECK_FUNC_SEND
|
||||||
|
|
||||||
CURL_CHECK_MSG_NOSIGNAL
|
CURL_CHECK_MSG_NOSIGNAL
|
||||||
|
|
||||||
dnl Checks for library functions.
|
dnl Checks for library functions.
|
||||||
@@ -2034,60 +2073,66 @@ case $host in
|
|||||||
AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
|
AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
AC_CHECK_FUNCS( strtoll \
|
|
||||||
socket \
|
AC_CHECK_FUNCS([basename \
|
||||||
strdup \
|
closesocket \
|
||||||
strstr \
|
fork \
|
||||||
strcasestr \
|
ftruncate \
|
||||||
strtok_r \
|
geteuid \
|
||||||
uname \
|
|
||||||
strcasecmp \
|
|
||||||
stricmp \
|
|
||||||
strcmpi \
|
|
||||||
gethostbyaddr \
|
gethostbyaddr \
|
||||||
|
getpass_r \
|
||||||
|
getppid \
|
||||||
|
getprotobyname \
|
||||||
|
getpwuid \
|
||||||
|
getrlimit \
|
||||||
gettimeofday \
|
gettimeofday \
|
||||||
inet_addr \
|
inet_addr \
|
||||||
inet_ntoa \
|
inet_ntoa \
|
||||||
inet_pton \
|
inet_pton \
|
||||||
perror \
|
perror \
|
||||||
closesocket \
|
|
||||||
siginterrupt \
|
|
||||||
sigaction \
|
|
||||||
signal \
|
|
||||||
getpass_r \
|
|
||||||
strlcat \
|
|
||||||
getpwuid \
|
|
||||||
geteuid \
|
|
||||||
getppid \
|
|
||||||
utime \
|
|
||||||
sigsetjmp \
|
|
||||||
basename \
|
|
||||||
setlocale \
|
|
||||||
ftruncate \
|
|
||||||
pipe \
|
pipe \
|
||||||
poll \
|
poll \
|
||||||
getprotobyname \
|
setlocale \
|
||||||
getrlimit \
|
setmode \
|
||||||
setrlimit \
|
setrlimit \
|
||||||
fork \
|
sigaction \
|
||||||
setmode,
|
siginterrupt \
|
||||||
dnl if found
|
signal \
|
||||||
[],
|
sigsetjmp \
|
||||||
dnl if not found, $ac_func is the name we check for
|
socket \
|
||||||
func="$ac_func"
|
strcasecmp \
|
||||||
eval skipcheck=\$skipcheck_$func
|
strcasestr \
|
||||||
if test "x$skipcheck" != "xyes"; then
|
strcmpi \
|
||||||
|
strdup \
|
||||||
|
stricmp \
|
||||||
|
strlcat \
|
||||||
|
strstr \
|
||||||
|
strtok_r \
|
||||||
|
strtoll \
|
||||||
|
uname \
|
||||||
|
utime
|
||||||
|
],[
|
||||||
|
],[
|
||||||
|
func="$ac_func"
|
||||||
|
eval skipcheck=\$skipcheck_$func
|
||||||
|
if test "x$skipcheck" != "xyes"; then
|
||||||
AC_MSG_CHECKING([deeper for $func])
|
AC_MSG_CHECKING([deeper for $func])
|
||||||
AC_TRY_LINK( [],
|
AC_LINK_IFELSE([
|
||||||
[ $func ();],
|
AC_LANG_PROGRAM([[
|
||||||
AC_MSG_RESULT(yes!)
|
]],[[
|
||||||
|
$func ();
|
||||||
|
]])
|
||||||
|
],[
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
eval "ac_cv_func_$func=yes"
|
eval "ac_cv_func_$func=yes"
|
||||||
def=`echo "HAVE_$func" | tr 'a-z' 'A-Z'`
|
AC_DEFINE_UNQUOTED([AS_TR_CPP([HAVE_$func])], [1],
|
||||||
AC_DEFINE_UNQUOTED($def, 1, [If you have $func]),
|
[Define to 1 if you have the $func function.])
|
||||||
AC_MSG_RESULT(but still no)
|
],[
|
||||||
)
|
AC_MSG_RESULT([but still no])
|
||||||
fi
|
])
|
||||||
)
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
dnl sigsetjmp() might be a macro and no function so if it isn't found already
|
dnl sigsetjmp() might be a macro and no function so if it isn't found already
|
||||||
dnl we make an extra check here!
|
dnl we make an extra check here!
|
||||||
@@ -2452,6 +2497,27 @@ AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibi
|
|||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
dnl ************************************************************
|
||||||
|
dnl enforce SONAME bump
|
||||||
|
dnl
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether to enforce SONAME bump])
|
||||||
|
AC_ARG_ENABLE(soname-bump,
|
||||||
|
AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
|
||||||
|
AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
|
||||||
|
[ case "$enableval" in
|
||||||
|
yes) AC_MSG_RESULT(yes)
|
||||||
|
soname_bump=yes
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
;;
|
||||||
|
esac ],
|
||||||
|
AC_MSG_RESULT($soname_bump)
|
||||||
|
)
|
||||||
|
AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
|
||||||
|
|
||||||
|
|
||||||
dnl ************************************************************
|
dnl ************************************************************
|
||||||
if test ! -z "$winsock_LIB"; then
|
if test ! -z "$winsock_LIB"; then
|
||||||
|
|
||||||
@@ -2536,3 +2602,14 @@ AC_MSG_NOTICE([Configured to build curl/libcurl:
|
|||||||
LDAP support: ${curl_ldap_msg}
|
LDAP support: ${curl_ldap_msg}
|
||||||
LDAPS support: ${curl_ldaps_msg}
|
LDAPS support: ${curl_ldaps_msg}
|
||||||
])
|
])
|
||||||
|
|
||||||
|
if test "x$soname_bump" = "xyes"; then
|
||||||
|
|
||||||
|
cat <<EOM
|
||||||
|
SONAME bump: yes - WARNING: this library will be built with the SONAME
|
||||||
|
number bumped due to (a detected) ABI breakage.
|
||||||
|
See lib/README.curl_off_t for details on this.
|
||||||
|
EOM
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
97
docs/INSTALL
97
docs/INSTALL
@@ -53,8 +53,12 @@ UNIX
|
|||||||
|
|
||||||
./configure --with-ssl
|
./configure --with-ssl
|
||||||
|
|
||||||
If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL,)
|
If you have OpenSSL installed somewhere else (for example, /opt/OpenSSL)
|
||||||
you can run configure like this:
|
and you have pkg-config installed, set the pkg-config path first, like this:
|
||||||
|
|
||||||
|
env PKG_CONFIG_PATH=/opt/OpenSSL/lib/pkgconfig ./configure --with-ssl
|
||||||
|
|
||||||
|
Without pkg-config installed, use this:
|
||||||
|
|
||||||
./configure --with-ssl=/opt/OpenSSL
|
./configure --with-ssl=/opt/OpenSSL
|
||||||
|
|
||||||
@@ -83,9 +87,10 @@ UNIX
|
|||||||
provide the -R option to ld on some operating systems to set a hard-coded
|
provide the -R option to ld on some operating systems to set a hard-coded
|
||||||
path to the run-time linker:
|
path to the run-time linker:
|
||||||
|
|
||||||
LDFLAGS=-R/usr/local/ssl/lib ./configure --with-ssl
|
env LDFLAGS=-R/usr/local/ssl/lib ./configure --with-ssl
|
||||||
|
|
||||||
MORE OPTIONS
|
MORE OPTIONS
|
||||||
|
------------
|
||||||
|
|
||||||
To force configure to use the standard cc compiler if both cc and gcc are
|
To force configure to use the standard cc compiler if both cc and gcc are
|
||||||
present, run configure like
|
present, run configure like
|
||||||
@@ -127,7 +132,7 @@ UNIX
|
|||||||
To build with GnuTLS support instead of OpenSSL for SSL/TLS, note that
|
To build with GnuTLS support instead of OpenSSL for SSL/TLS, note that
|
||||||
you need to use both --without-ssl and --with-gnutls.
|
you need to use both --without-ssl and --with-gnutls.
|
||||||
|
|
||||||
To build with yassl support instead of OpenSSL or GunTLS, you must build
|
To build with yassl support instead of OpenSSL or GnuTLS, you must build
|
||||||
yassl with its OpenSSL emulation enabled and point to that directory root
|
yassl with its OpenSSL emulation enabled and point to that directory root
|
||||||
with configure --with-ssl.
|
with configure --with-ssl.
|
||||||
|
|
||||||
@@ -140,6 +145,16 @@ UNIX
|
|||||||
To get support for SCP and SFTP, build with --with-libssh2 and have
|
To get support for SCP and SFTP, build with --with-libssh2 and have
|
||||||
libssh2 0.16 or later installed.
|
libssh2 0.16 or later installed.
|
||||||
|
|
||||||
|
SPECIAL CASES
|
||||||
|
-------------
|
||||||
|
Some versions of uClibc require configuring with CPPFLAGS=-D_GNU_SOURCE=1
|
||||||
|
to get correct large file support.
|
||||||
|
|
||||||
|
The Open Watcom C compiler on Linux requires configuring with the variables:
|
||||||
|
|
||||||
|
./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \
|
||||||
|
RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra
|
||||||
|
|
||||||
|
|
||||||
Win32
|
Win32
|
||||||
=====
|
=====
|
||||||
@@ -272,6 +287,37 @@ Win32
|
|||||||
at runtime.
|
at runtime.
|
||||||
Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
|
Run 'nmake vc-ssl-zlib' to build with both ssl and zlib support.
|
||||||
|
|
||||||
|
MSVC 6 IDE
|
||||||
|
----------
|
||||||
|
|
||||||
|
A minimal VC++ 6.0 reference workspace (vc6curl.dsw) is available with the
|
||||||
|
source distribution archive to allow proper building of the two included
|
||||||
|
projects, the libcurl library and the curl tool.
|
||||||
|
|
||||||
|
1) Open the vc6curl.dsw workspace with MSVC6's IDE.
|
||||||
|
2) Select 'Build' from top menu.
|
||||||
|
3) Select 'Batch Build' from dropdown menu.
|
||||||
|
4) Make sure that the eight project configurations are 'checked'.
|
||||||
|
5) Click on the 'Build' button.
|
||||||
|
6) Once the eight project configurations are built you are done.
|
||||||
|
|
||||||
|
Dynamic and static libcurl 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 'lib' subdirectory.
|
||||||
|
|
||||||
|
In the same way four curl executables are created, each using its respective
|
||||||
|
library. The resulting curl executables are located in its own subdirectory,
|
||||||
|
DLL-Debug, DLL-Release, LIB-Debug and LIB-Release, below the 'src' subdir.
|
||||||
|
|
||||||
|
These reference VC++ 6.0 configurations are generated using the dynamic CRT.
|
||||||
|
|
||||||
|
Intentionally, these reference VC++ 6.0 projects and configurations don't use
|
||||||
|
third party libraries, such as OpenSSL or Zlib, to allow proper compilation
|
||||||
|
and configuration for all new users without further requirements.
|
||||||
|
|
||||||
|
If you need something more 'involved' you might adjust them for your own use,
|
||||||
|
or explore the world of makefiles described above 'MSVC from command line'.
|
||||||
|
|
||||||
Borland C++ compiler
|
Borland C++ compiler
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
@@ -300,9 +346,8 @@ Win32
|
|||||||
-L c:\openssl\out32\ssleay32.lib
|
-L c:\openssl\out32\ssleay32.lib
|
||||||
simplessl.c
|
simplessl.c
|
||||||
|
|
||||||
|
OTHER MSVC IDEs
|
||||||
MSVC IDE
|
---------------
|
||||||
--------
|
|
||||||
|
|
||||||
If you use VC++, Borland or similar compilers. Include all lib source
|
If you use VC++, Borland or similar compilers. Include all lib source
|
||||||
files in a static lib "project" (all .c and .h files that is).
|
files in a static lib "project" (all .c and .h files that is).
|
||||||
@@ -311,9 +356,6 @@ Win32
|
|||||||
Make the sources in the src/ drawer be a "win32 console application"
|
Make the sources in the src/ drawer be a "win32 console application"
|
||||||
project. Name it curl.
|
project. Name it curl.
|
||||||
|
|
||||||
For VC++ 6, there's an included Makefile.vc6 that should be possible
|
|
||||||
to use out-of-the-box.
|
|
||||||
|
|
||||||
|
|
||||||
Disabling Specific Protocols in Win32 builds
|
Disabling Specific Protocols in Win32 builds
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
@@ -332,10 +374,12 @@ Win32
|
|||||||
CURL_DISABLE_DICT disables DICT
|
CURL_DISABLE_DICT disables DICT
|
||||||
CURL_DISABLE_FILE disables FILE
|
CURL_DISABLE_FILE disables FILE
|
||||||
CURL_DISABLE_TFTP disables TFTP
|
CURL_DISABLE_TFTP disables TFTP
|
||||||
|
CURL_DISABLE_HTTP disables HTTP
|
||||||
|
|
||||||
If you want to set any of these defines you have the following
|
If you want to set any of these defines you have the following
|
||||||
possibilities:
|
possibilities:
|
||||||
|
|
||||||
|
- Modify lib/config-win32.h
|
||||||
- Modify lib/setup.h
|
- Modify lib/setup.h
|
||||||
- Modify lib/Makefile.vc6
|
- Modify lib/Makefile.vc6
|
||||||
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
|
- Add defines to Project/Settings/C/C++/General/Preprocessor Definitions
|
||||||
@@ -618,40 +662,29 @@ eCos
|
|||||||
Minix
|
Minix
|
||||||
=====
|
=====
|
||||||
curl can be compiled on Minix 3 using gcc or ACK (starting with
|
curl can be compiled on Minix 3 using gcc or ACK (starting with
|
||||||
ver. 3.1.3). The default heap size allocated to several required
|
ver. 3.1.3).
|
||||||
programs is inadequate for configuring and compiling curl and will
|
|
||||||
result in strange errors unless fixed (which only needs to be done
|
|
||||||
once).
|
|
||||||
|
|
||||||
ACK
|
ACK
|
||||||
---
|
---
|
||||||
Increase heap sizes with the commands:
|
Increase the heap sizes of the compiler with the command:
|
||||||
|
|
||||||
chmem =1024000 /usr/lib/em_cemcom.ansi
|
binsizes xxl
|
||||||
chmem =512000 /usr/lib/i386/as
|
|
||||||
|
|
||||||
If you have bash installed:
|
|
||||||
|
|
||||||
chmem =2048000 /usr/local/bin/bash
|
|
||||||
|
|
||||||
Configure and compile with:
|
Configure and compile with:
|
||||||
|
|
||||||
./configure CC=cc LD=cc GREP=grep CPPFLAGS=-D_POSIX_SOURCE=1
|
./configure CONFIG_SHELL=/bin/bigsh CC=cc LD=cc AR=/usr/bin/aal \
|
||||||
|
GREP=grep CPPFLAGS=-D_POSIX_SOURCE=1
|
||||||
make
|
make
|
||||||
|
|
||||||
GCC
|
GCC
|
||||||
---
|
---
|
||||||
If you have bash installed:
|
|
||||||
|
|
||||||
chmem =2048000 /usr/local/bin/bash
|
|
||||||
|
|
||||||
Make sure gcc is in your PATH with the command:
|
Make sure gcc is in your PATH with the command:
|
||||||
|
|
||||||
export PATH=/usr/gnu/bin:$PATH
|
export PATH=/usr/gnu/bin:$PATH
|
||||||
|
|
||||||
then configure and compile curl with:
|
then configure and compile curl with:
|
||||||
|
|
||||||
./configure CC=gcc GREP=grep AR=/usr/gnu/bin/gar
|
./configure CONFIG_SHELL=/bin/bigsh CC=gcc AR=/usr/gnu/bin/gar GREP=grep
|
||||||
make
|
make
|
||||||
|
|
||||||
|
|
||||||
@@ -673,7 +706,7 @@ CROSS COMPILE
|
|||||||
(This section was graciously brought to us by Jim Duey, with additions by
|
(This section was graciously brought to us by Jim Duey, with additions by
|
||||||
Dan Fandrich)
|
Dan Fandrich)
|
||||||
|
|
||||||
Download and unpack the cURL package. Version should be 7.9.1 or later.
|
Download and unpack the cURL package.
|
||||||
|
|
||||||
'cd' to the new directory. (e.g. cd curl-7.12.3)
|
'cd' to the new directory. (e.g. cd curl-7.12.3)
|
||||||
|
|
||||||
@@ -723,12 +756,12 @@ REDUCING SIZE
|
|||||||
important factor. First, be sure to set the CFLAGS variable when
|
important factor. First, be sure to set the CFLAGS variable when
|
||||||
configuring with any relevant compiler optimization flags to reduce the
|
configuring with any relevant compiler optimization flags to reduce the
|
||||||
size of the binary. For gcc, this would mean at minimum the -Os option,
|
size of the binary. For gcc, this would mean at minimum the -Os option,
|
||||||
potentially the -march=X and -mdynamic-no-pic options as well, e.g.:
|
and potentially the -march=X and -mdynamic-no-pic options as well, e.g.
|
||||||
|
|
||||||
./configure CFLAGS='-Os' ...
|
./configure CFLAGS='-Os' ...
|
||||||
|
|
||||||
Note that newer compilers often produce smaller code than older versions
|
Note that newer compilers often produce smaller code than older versions
|
||||||
due to better optimization.
|
due to improved optimization.
|
||||||
|
|
||||||
Be sure to specify as many --disable- and --without- flags on the configure
|
Be sure to specify as many --disable- and --without- flags on the configure
|
||||||
command-line as you can to disable all the libcurl features that you
|
command-line as you can to disable all the libcurl features that you
|
||||||
@@ -787,6 +820,7 @@ PORTS
|
|||||||
- Pocket PC/Win CE 3.0
|
- Pocket PC/Win CE 3.0
|
||||||
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2
|
- Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2
|
||||||
- PowerPC Darwin 1.0
|
- PowerPC Darwin 1.0
|
||||||
|
- PowerPC INTEGRITY
|
||||||
- PowerPC Linux
|
- PowerPC Linux
|
||||||
- PowerPC Mac OS 9
|
- PowerPC Mac OS 9
|
||||||
- PowerPC Mac OS X
|
- PowerPC Mac OS X
|
||||||
@@ -799,7 +833,8 @@ PORTS
|
|||||||
- StrongARM (and other ARM) RISC OS 3.1, 4.02
|
- StrongARM (and other ARM) RISC OS 3.1, 4.02
|
||||||
- StrongARM/ARM7/ARM9 Linux 2.4, 2.6
|
- StrongARM/ARM7/ARM9 Linux 2.4, 2.6
|
||||||
- StrongARM NetBSD 1.4.1
|
- StrongARM NetBSD 1.4.1
|
||||||
- Symbian OS (P.I.P.S.)
|
- ARM INTEGRITY
|
||||||
|
- Symbian OS (P.I.P.S.) 9.x
|
||||||
- TPF
|
- TPF
|
||||||
- Ultrix 4.3a
|
- Ultrix 4.3a
|
||||||
- UNICOS 9.0
|
- UNICOS 9.0
|
||||||
|
@@ -22,6 +22,56 @@ CVS
|
|||||||
Tagging shall be used extensively, and by the time we release new archives we
|
Tagging shall be used extensively, and by the time we release new archives we
|
||||||
should tag the sources with a name similar to the released version number.
|
should tag the sources with a name similar to the released version number.
|
||||||
|
|
||||||
|
Portability
|
||||||
|
===========
|
||||||
|
|
||||||
|
We write curl and libcurl to compile with C89 compilers. On 32bit and up
|
||||||
|
machines. Most of libcurl assumes more or less POSIX compliance but that's
|
||||||
|
not a requirement.
|
||||||
|
|
||||||
|
We write libcurl to build and work with lots of third party tools, and we
|
||||||
|
want it to remain functional and buildable with these and later versions
|
||||||
|
(older versions may still work but is not what we work hard to maintain):
|
||||||
|
|
||||||
|
OpenSSL 0.9.6
|
||||||
|
GnuTLS 1.2
|
||||||
|
zlib 1.1.4
|
||||||
|
libssh2 0.16
|
||||||
|
c-ares 1.5.0
|
||||||
|
libidn 0.4.1
|
||||||
|
*yassl 1.4.0 (http://curl.haxx.se/mail/lib-2008-02/0093.html)
|
||||||
|
openldap 2.0
|
||||||
|
MIT krb5 lib 1.2.4
|
||||||
|
qsossl V5R2M0
|
||||||
|
NSS 3.11.x
|
||||||
|
Heimdal ?
|
||||||
|
|
||||||
|
* = only partly functional, but that's due to bugs in the third party lib, not
|
||||||
|
because of libcurl code
|
||||||
|
|
||||||
|
On systems where configure runs, we aim at working on them all - if they have
|
||||||
|
a suitable C compiler. On systems that don't run configure, we strive to keep
|
||||||
|
curl running fine on:
|
||||||
|
|
||||||
|
Windows 98
|
||||||
|
AS/400 V5R2M0
|
||||||
|
Symbian 9.1
|
||||||
|
Windows CE ?
|
||||||
|
TPF ?
|
||||||
|
|
||||||
|
When writing code (mostly for generating stuff included in release tarballs)
|
||||||
|
we use a few "build tools" and we make sure that we remain functional with
|
||||||
|
these versions:
|
||||||
|
|
||||||
|
GNU Libtool 1.4.2
|
||||||
|
GNU Autoconf 2.57
|
||||||
|
GNU Automake 1.7 (we currently avoid 1.10 due to Solaris-related bugs)
|
||||||
|
GNU M4 1.4
|
||||||
|
perl 4
|
||||||
|
roffit 0.5
|
||||||
|
groff ? (any version that supports "groff -Tps -man [in] [out]")
|
||||||
|
ps2pdf (gs) ?
|
||||||
|
|
||||||
Windows vs Unix
|
Windows vs Unix
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
@@ -3,14 +3,28 @@ 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
|
changelog of the current development status, as one or more of these problems
|
||||||
may have been fixed since this was written!
|
may have been fixed since this was written!
|
||||||
|
|
||||||
|
58. It seems sensible to be able to use CURLOPT_NOBODY and
|
||||||
|
CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
|
||||||
|
not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
|
||||||
|
|
||||||
|
57. On VMS-Alpha: When using an http-file-upload the file is not sent to the
|
||||||
|
Server with the correct content-length. Sending a file with 511 or less
|
||||||
|
bytes, content-length 512 is used. Sending a file with 513 - 1023 bytes,
|
||||||
|
content-length 1024 is used. Files with a length of a multiple of 512 Bytes
|
||||||
|
show the correct content-length. Only these files work for upload.
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2057858
|
||||||
|
|
||||||
|
56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
|
||||||
|
server using the multi interface, the commands are not being sent correctly
|
||||||
|
and instead the connection is "cancelled" (the operation is considered done)
|
||||||
|
prematurely. There is a half-baked (busy-looping) patch provided in the bug
|
||||||
|
report but it cannot be accepted as-is. See
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2006544
|
||||||
|
|
||||||
55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
||||||
library header files exporting symbols/macros that should be kept private
|
library header files exporting symbols/macros that should be kept private
|
||||||
to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
|
to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
|
||||||
|
|
||||||
54. User names embedded in URLs without a password are parsed incorrectly--the
|
|
||||||
host name is treated as part of the user name and the port number becomes the
|
|
||||||
password. This can be observed test 279.
|
|
||||||
|
|
||||||
53. SFTP busy-loop problem. When doing SFTP uploads, we can see that libcurl
|
53. SFTP busy-loop problem. When doing SFTP uploads, we can see that libcurl
|
||||||
occasionally will busy-loop while waiting for certain network conditions.
|
occasionally will busy-loop while waiting for certain network conditions.
|
||||||
Reported by Pavel Shalagin, explained somewhat by Daniel Stenberg here:
|
Reported by Pavel Shalagin, explained somewhat by Daniel Stenberg here:
|
||||||
|
55
docs/MANUAL
55
docs/MANUAL
@@ -48,6 +48,9 @@ SIMPLE USAGE
|
|||||||
curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \
|
curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \
|
||||||
scp://shell.example.com/~/personal.txt
|
scp://shell.example.com/~/personal.txt
|
||||||
|
|
||||||
|
Get the main page from an IPv6 web server:
|
||||||
|
|
||||||
|
curl -g "http://[2001:1890:1112:1::20]/"
|
||||||
|
|
||||||
DOWNLOAD TO A FILE
|
DOWNLOAD TO A FILE
|
||||||
|
|
||||||
@@ -86,6 +89,13 @@ USING PASSWORDS
|
|||||||
standards while the recommended "explicit" way is done by using FTP:// and
|
standards while the recommended "explicit" way is done by using FTP:// and
|
||||||
the --ftp-ssl option.
|
the --ftp-ssl option.
|
||||||
|
|
||||||
|
SFTP / SCP
|
||||||
|
|
||||||
|
This is similar to FTP, but you can specify a private key to use instead of
|
||||||
|
a password. Note that the private key may itself be protected by a password
|
||||||
|
that is unrelated to the login password of the remote system. If you
|
||||||
|
provide a private key file you must also provide a public key file.
|
||||||
|
|
||||||
HTTP
|
HTTP
|
||||||
|
|
||||||
Curl also supports user and password in HTTP URLs, thus you can pick a file
|
Curl also supports user and password in HTTP URLs, thus you can pick a file
|
||||||
@@ -154,9 +164,9 @@ RANGES
|
|||||||
|
|
||||||
UPLOADING
|
UPLOADING
|
||||||
|
|
||||||
FTP
|
FTP / FTPS / SFTP / SCP
|
||||||
|
|
||||||
Upload all data on stdin to a specified ftp site:
|
Upload all data on stdin to a specified server:
|
||||||
|
|
||||||
curl -T - ftp://ftp.upload.com/myfile
|
curl -T - ftp://ftp.upload.com/myfile
|
||||||
|
|
||||||
@@ -169,7 +179,7 @@ UPLOADING
|
|||||||
|
|
||||||
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
|
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
|
||||||
|
|
||||||
Upload a local file to get appended to the remote file using ftp:
|
Upload a local file to get appended to the remote file:
|
||||||
|
|
||||||
curl -T localfile -a ftp://ftp.upload.com/remotefile
|
curl -T localfile -a ftp://ftp.upload.com/remotefile
|
||||||
|
|
||||||
@@ -331,7 +341,7 @@ REFERRER
|
|||||||
|
|
||||||
curl -e www.coolsite.com http://www.showme.com/
|
curl -e www.coolsite.com http://www.showme.com/
|
||||||
|
|
||||||
NOTE: The referer field is defined in the HTTP spec to be a full URL.
|
NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.
|
||||||
|
|
||||||
USER AGENT
|
USER AGENT
|
||||||
|
|
||||||
@@ -496,7 +506,7 @@ CONFIG FILE
|
|||||||
with = or :. Comments can be used within the file. If the first letter on a
|
with = or :. Comments can be used within the file. If the first letter on a
|
||||||
line is a '#'-letter the rest of the line is treated as a comment.
|
line is a '#'-letter the rest of the line is treated as a comment.
|
||||||
|
|
||||||
If you want the parameter to contain spaces, you must inclose the entire
|
If you want the parameter to contain spaces, you must enclose the entire
|
||||||
parameter within double quotes ("). Within those quotes, you specify a
|
parameter within double quotes ("). Within those quotes, you specify a
|
||||||
quote as \".
|
quote as \".
|
||||||
|
|
||||||
@@ -564,10 +574,18 @@ FTP and PATH NAMES
|
|||||||
|
|
||||||
(I.e with an extra slash in front of the file name.)
|
(I.e with an extra slash in front of the file name.)
|
||||||
|
|
||||||
|
SFTP and SCP and PATH NAMES
|
||||||
|
|
||||||
|
With sftp: and scp: URLs, the path name given is the absolute name on the
|
||||||
|
server. To access a file relative to the remote user's home directory,
|
||||||
|
prefix the file with /~/ , such as:
|
||||||
|
|
||||||
|
curl -u $USER sftp://home.example.com/~/.bashrc
|
||||||
|
|
||||||
FTP and firewalls
|
FTP and firewalls
|
||||||
|
|
||||||
The FTP protocol requires one of the involved parties to open a second
|
The FTP protocol requires one of the involved parties to open a second
|
||||||
connction as soon as data is about to get transfered. There are two ways to
|
connection as soon as data is about to get transfered. There are two ways to
|
||||||
do this.
|
do this.
|
||||||
|
|
||||||
The default way for curl is to issue the PASV command which causes the
|
The default way for curl is to issue the PASV command which causes the
|
||||||
@@ -875,7 +893,8 @@ MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE
|
|||||||
As is mentioned above, you can download multiple files with one command line
|
As is mentioned above, you can download multiple files with one command line
|
||||||
by simply adding more URLs. If you want those to get saved to a local file
|
by simply adding more URLs. If you want those to get saved to a local file
|
||||||
instead of just printed to stdout, you need to add one save option for each
|
instead of just printed to stdout, you need to add one save option for each
|
||||||
URL you specify. Note that this also goes for the -O option.
|
URL you specify. Note that this also goes for the -O option (but not
|
||||||
|
--remote-name-all).
|
||||||
|
|
||||||
For example: get two files and use -O for the first and a custom file
|
For example: get two files and use -O for the first and a custom file
|
||||||
name for the second:
|
name for the second:
|
||||||
@@ -886,6 +905,28 @@ MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE
|
|||||||
|
|
||||||
curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt
|
curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt
|
||||||
|
|
||||||
|
IPv6
|
||||||
|
|
||||||
|
curl will connect to a server with IPv6 when a host lookup returns an IPv6
|
||||||
|
address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6
|
||||||
|
options can specify which address to use when both are available. IPv6
|
||||||
|
addresses can also be specified directly in URLs using the syntax:
|
||||||
|
|
||||||
|
http://[2001:1890:1112:1::20]/overview.html
|
||||||
|
|
||||||
|
When this style is used, the -g option must be given to stop curl from
|
||||||
|
interpreting the square brackets as special globbing characters. Link local
|
||||||
|
and site local addresses including a scope identifier, such as fe80::1234%1,
|
||||||
|
may also be used, but the scope portion must be numeric and the percent
|
||||||
|
character must be URL escaped. The previous example in an SFTP URL might
|
||||||
|
look like:
|
||||||
|
|
||||||
|
sftp://[fe80::1234%251]/
|
||||||
|
|
||||||
|
IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface
|
||||||
|
or --ftp-port options) should not be URL encoded.
|
||||||
|
|
||||||
|
|
||||||
MAILING LISTS
|
MAILING LISTS
|
||||||
|
|
||||||
For your convenience, we have several open mailing lists to discuss curl,
|
For your convenience, we have several open mailing lists to discuss curl,
|
||||||
|
17
docs/THANKS
17
docs/THANKS
@@ -31,6 +31,7 @@ Anders Gustafsson
|
|||||||
Andi Jahja
|
Andi Jahja
|
||||||
Andre Guibert de Bruet
|
Andre Guibert de Bruet
|
||||||
Andreas Damm
|
Andreas Damm
|
||||||
|
Andreas Faerber
|
||||||
Andreas Ntaflos
|
Andreas Ntaflos
|
||||||
Andreas Olsson
|
Andreas Olsson
|
||||||
Andreas Rieke
|
Andreas Rieke
|
||||||
@@ -54,8 +55,10 @@ Arve Knudsen
|
|||||||
Ates Goral
|
Ates Goral
|
||||||
Augustus Saunders
|
Augustus Saunders
|
||||||
Avery Fay
|
Avery Fay
|
||||||
|
Bart Whiteley
|
||||||
Ben Greear
|
Ben Greear
|
||||||
Ben Madsen
|
Ben Madsen
|
||||||
|
Ben Van Hof
|
||||||
Benjamin Gerard
|
Benjamin Gerard
|
||||||
Bernard Leak
|
Bernard Leak
|
||||||
Bertrand Demiddelaer
|
Bertrand Demiddelaer
|
||||||
@@ -71,6 +74,7 @@ Brian Akins
|
|||||||
Brian Dessent
|
Brian Dessent
|
||||||
Brian R Duffy
|
Brian R Duffy
|
||||||
Brian Ulm
|
Brian Ulm
|
||||||
|
Brock Noland
|
||||||
Bruce Mitchener
|
Bruce Mitchener
|
||||||
Bryan Henderson
|
Bryan Henderson
|
||||||
Bryan Kemp
|
Bryan Kemp
|
||||||
@@ -87,6 +91,7 @@ Christian Robottom Reis
|
|||||||
Christian Vogt
|
Christian Vogt
|
||||||
Christophe Demory
|
Christophe Demory
|
||||||
Christophe Legry
|
Christophe Legry
|
||||||
|
Christopher Palow
|
||||||
Christopher R. Palmer
|
Christopher R. Palmer
|
||||||
Ciprian Badescu
|
Ciprian Badescu
|
||||||
Clarence Gardner
|
Clarence Gardner
|
||||||
@@ -111,6 +116,7 @@ Dan Zitter
|
|||||||
Daniel Black
|
Daniel Black
|
||||||
Daniel Cater
|
Daniel Cater
|
||||||
Daniel Egger
|
Daniel Egger
|
||||||
|
Daniel Fandrich
|
||||||
Daniel Johnson
|
Daniel Johnson
|
||||||
Daniel Stenberg
|
Daniel Stenberg
|
||||||
Daniel at touchtunes
|
Daniel at touchtunes
|
||||||
@@ -133,6 +139,7 @@ David LeBlanc
|
|||||||
David McCreedy
|
David McCreedy
|
||||||
David Odin
|
David Odin
|
||||||
David Phillips
|
David Phillips
|
||||||
|
David Rosenstrauch
|
||||||
David Shaw
|
David Shaw
|
||||||
David Tarendash
|
David Tarendash
|
||||||
David Thiel
|
David Thiel
|
||||||
@@ -273,6 +280,7 @@ Jayesh A Shah
|
|||||||
Jaz Fresh
|
Jaz Fresh
|
||||||
Jean Jacques Drouin
|
Jean Jacques Drouin
|
||||||
Jean-Claude Chauve
|
Jean-Claude Chauve
|
||||||
|
Jean-Francois Bertrand
|
||||||
Jean-Louis Lemaire
|
Jean-Louis Lemaire
|
||||||
Jean-Marc Ranger
|
Jean-Marc Ranger
|
||||||
Jean-Philippe Barrette-LaPierre
|
Jean-Philippe Barrette-LaPierre
|
||||||
@@ -280,6 +288,7 @@ Jeff Johnson
|
|||||||
Jeff Lawson
|
Jeff Lawson
|
||||||
Jeff Phillips
|
Jeff Phillips
|
||||||
Jeff Pohlmeyer
|
Jeff Pohlmeyer
|
||||||
|
Jeff Weber
|
||||||
Jeffrey Pohlmeyer
|
Jeffrey Pohlmeyer
|
||||||
Jeremy Friesner
|
Jeremy Friesner
|
||||||
Jerome Muffat-Meridol
|
Jerome Muffat-Meridol
|
||||||
@@ -357,6 +366,7 @@ Lau Hang Kin
|
|||||||
Legoff Vincent
|
Legoff Vincent
|
||||||
Lehel Bernadt
|
Lehel Bernadt
|
||||||
Len Krause
|
Len Krause
|
||||||
|
Liam Healy
|
||||||
Linas Vepstas
|
Linas Vepstas
|
||||||
Ling Thio
|
Ling Thio
|
||||||
Linus Nielsen Feltzing
|
Linus Nielsen Feltzing
|
||||||
@@ -443,9 +453,11 @@ Niels van Tongeren
|
|||||||
Nikita Schmidt
|
Nikita Schmidt
|
||||||
Nikitinskit Dmitriy
|
Nikitinskit Dmitriy
|
||||||
Niklas Angebrand
|
Niklas Angebrand
|
||||||
|
Nikolai Kondrashov
|
||||||
Nir Soffer
|
Nir Soffer
|
||||||
Nis Jorgensen
|
Nis Jorgensen
|
||||||
Nodak Sodak
|
Nodak Sodak
|
||||||
|
Norbert Frese
|
||||||
Norbert Novotny
|
Norbert Novotny
|
||||||
Ofer
|
Ofer
|
||||||
Olaf Stueben
|
Olaf Stueben
|
||||||
@@ -487,6 +499,7 @@ Pierre
|
|||||||
Pooyan McSporran
|
Pooyan McSporran
|
||||||
Puneet Pawaia
|
Puneet Pawaia
|
||||||
Quagmire
|
Quagmire
|
||||||
|
Rafa Muyo
|
||||||
Rafael Sagula
|
Rafael Sagula
|
||||||
Ralf S. Engelschall
|
Ralf S. Engelschall
|
||||||
Ralph Beckmann
|
Ralph Beckmann
|
||||||
@@ -542,9 +555,12 @@ Sampo Kellomaki
|
|||||||
Samuel D<>az Garc<72>a
|
Samuel D<>az Garc<72>a
|
||||||
Samuel Listopad
|
Samuel Listopad
|
||||||
Sander Gates
|
Sander Gates
|
||||||
|
Sandor Feldi
|
||||||
Saul good
|
Saul good
|
||||||
|
Scott Barrett
|
||||||
Scott Cantor
|
Scott Cantor
|
||||||
Scott Davis
|
Scott Davis
|
||||||
|
Scott McCreary
|
||||||
Sebastien Willemijns
|
Sebastien Willemijns
|
||||||
Sergio Ballestrero
|
Sergio Ballestrero
|
||||||
Seshubabu Pasam
|
Seshubabu Pasam
|
||||||
@@ -635,6 +651,7 @@ Wojciech Zwiefka
|
|||||||
Xavier Bouchoux
|
Xavier Bouchoux
|
||||||
Yang Tse
|
Yang Tse
|
||||||
Yarram Sunil
|
Yarram Sunil
|
||||||
|
Yuriy Sosov
|
||||||
Yves Lejeune
|
Yves Lejeune
|
||||||
Zmey Petroff
|
Zmey Petroff
|
||||||
Zvi Har'El
|
Zvi Har'El
|
||||||
|
@@ -375,12 +375,11 @@ Date: May 28, 2008
|
|||||||
11.1 Certificates
|
11.1 Certificates
|
||||||
|
|
||||||
In the HTTPS world, you use certificates to validate that you are the one
|
In the HTTPS world, you use certificates to validate that you are the one
|
||||||
you you claim to be, as an addition to normal passwords. Curl supports
|
you claim to be, as an addition to normal passwords. Curl supports client-
|
||||||
client-side certificates. All certificates are locked with a pass phrase,
|
side certificates. All certificates are locked with a pass phrase, which you
|
||||||
which you need to enter before the certificate can be used by curl. The pass
|
need to enter before the certificate can be used by curl. The pass phrase
|
||||||
phrase can be specified on the command line or if not, entered interactively
|
can be specified on the command line or if not, entered interactively when
|
||||||
when curl queries for it. Use a certificate with curl on a HTTPS server
|
curl queries for it. Use a certificate with curl on a HTTPS server like:
|
||||||
like:
|
|
||||||
|
|
||||||
curl -E mycert.pem https://that.secure.server.com
|
curl -E mycert.pem https://that.secure.server.com
|
||||||
|
|
||||||
|
185
docs/curl.1
185
docs/curl.1
@@ -21,7 +21,7 @@
|
|||||||
.\" * $Id$
|
.\" * $Id$
|
||||||
.\" **************************************************************************
|
.\" **************************************************************************
|
||||||
.\"
|
.\"
|
||||||
.TH curl 1 "5 Jan 2008" "Curl 7.18.0" "Curl Manual"
|
.TH curl 1 "10 July 2008" "Curl 7.19.0" "Curl Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
curl \- transfer a URL
|
curl \- transfer a URL
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@@ -99,11 +99,16 @@ any response data to the terminal.
|
|||||||
If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
|
If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your
|
||||||
friend.
|
friend.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
|
In general, all boolean options are enabled with --option and yet again
|
||||||
|
disabled with --\fBno-\fPoption. That is, you use the exact same option name
|
||||||
|
but prefix it with "no-". However, in this list we mostly only list and show
|
||||||
|
the --option version of them. (This concept with --no options was added in
|
||||||
|
7.19.0. Previously most options were toggled on/off on repeated use of the
|
||||||
|
same command line option.)
|
||||||
.IP "-a/--append"
|
.IP "-a/--append"
|
||||||
(FTP) When used in an FTP upload, this will tell curl to append to the target
|
(FTP/SFTP) When used in an upload, this will tell curl to append to the target
|
||||||
file instead of overwriting it. If the file doesn't exist, it will be created.
|
file instead of overwriting it. If the file doesn't exist, it will be created.
|
||||||
|
Note that this flag is ignored by some SSH servers (including OpenSSH).
|
||||||
If this option is used twice, the second one will disable append mode again.
|
|
||||||
.IP "-A/--user-agent <agent string>"
|
.IP "-A/--user-agent <agent string>"
|
||||||
(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
|
(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
|
||||||
done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in
|
done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in
|
||||||
@@ -124,9 +129,6 @@ Note that using --anyauth is not recommended if you do uploads from stdin,
|
|||||||
since it may require data to be sent twice and then the client must be able to
|
since it may require data to be sent twice and then the client must be able to
|
||||||
rewind. If the need should arise when uploading from stdin, the upload
|
rewind. If the need should arise when uploading from stdin, the upload
|
||||||
operation will fail.
|
operation will fail.
|
||||||
|
|
||||||
If this option is used several times, the following occurrences make no
|
|
||||||
difference.
|
|
||||||
.IP "-b/--cookie <name=data>"
|
.IP "-b/--cookie <name=data>"
|
||||||
(HTTP)
|
(HTTP)
|
||||||
Pass the data to the HTTP server as a cookie. It is supposedly the
|
Pass the data to the HTTP server as a cookie. It is supposedly the
|
||||||
@@ -152,16 +154,11 @@ used.
|
|||||||
Enable ASCII transfer when using FTP or LDAP. For FTP, this can also be
|
Enable ASCII transfer when using FTP or LDAP. For FTP, this can also be
|
||||||
enforced by using an URL that ends with ";type=A". This option causes data
|
enforced by using an URL that ends with ";type=A". This option causes data
|
||||||
sent to stdout to be in text mode for win32 systems.
|
sent to stdout to be in text mode for win32 systems.
|
||||||
|
|
||||||
If this option is used twice, the second one will disable ASCII usage.
|
|
||||||
.IP "--basic"
|
.IP "--basic"
|
||||||
(HTTP) Tells curl to use HTTP Basic authentication. This is the default and
|
(HTTP) Tells curl to use HTTP Basic authentication. This is the default and
|
||||||
this option is usually pointless, unless you use it to override a previously
|
this option is usually pointless, unless you use it to override a previously
|
||||||
set option that sets a different authentication method (such as \fI--ntlm\fP,
|
set option that sets a different authentication method (such as \fI--ntlm\fP,
|
||||||
\fI--digest\fP and \fI--negotiate\fP).
|
\fI--digest\fP and \fI--negotiate\fP).
|
||||||
|
|
||||||
If this option is used several times, the following occurrences make no
|
|
||||||
difference.
|
|
||||||
.IP "--ciphers <list of ciphers>"
|
.IP "--ciphers <list of ciphers>"
|
||||||
(SSL) Specifies which ciphers to use in the connection. The list of ciphers
|
(SSL) Specifies which ciphers to use in the connection. The list of ciphers
|
||||||
must be using valid ciphers. Read up on SSL cipher list details on this URL:
|
must be using valid ciphers. Read up on SSL cipher list details on this URL:
|
||||||
@@ -175,9 +172,7 @@ If this option is used several times, the last one will override the others.
|
|||||||
.IP "--compressed"
|
.IP "--compressed"
|
||||||
(HTTP) Request a compressed response using one of the algorithms libcurl
|
(HTTP) Request a compressed response using one of the algorithms libcurl
|
||||||
supports, and return the uncompressed document. If this option is used and
|
supports, and return the uncompressed document. If this option is used and
|
||||||
the server sends an unsupported encoding, Curl will report an error.
|
the server sends an unsupported encoding, curl will report an error.
|
||||||
|
|
||||||
If this option is used several times, each occurrence will toggle it on/off.
|
|
||||||
.IP "--connect-timeout <seconds>"
|
.IP "--connect-timeout <seconds>"
|
||||||
Maximum time in seconds that you allow the connection to the server to take.
|
Maximum time in seconds that you allow the connection to the server to take.
|
||||||
This only limits the connection phase, once curl has connected this option is
|
This only limits the connection phase, once curl has connected this option is
|
||||||
@@ -220,9 +215,6 @@ To create remote directories when using FTP or SFTP, try
|
|||||||
\fI--ftp-create-dirs\fP.
|
\fI--ftp-create-dirs\fP.
|
||||||
.IP "--crlf"
|
.IP "--crlf"
|
||||||
(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
|
(FTP) Convert LF to CRLF in upload. Useful for MVS (OS/390).
|
||||||
|
|
||||||
If this option is used several times, the following occurrences make no
|
|
||||||
difference.
|
|
||||||
.IP "-d/--data <data>"
|
.IP "-d/--data <data>"
|
||||||
(HTTP) Sends the specified data in a POST request to the HTTP server, in the
|
(HTTP) Sends the specified data in a POST request to the HTTP server, in the
|
||||||
same way that a browser does when a user has filled in an HTML form and
|
same way that a browser does when a user has filled in an HTML form and
|
||||||
@@ -298,13 +290,15 @@ away. EPRT and LPRT are extensions to the original FTP protocol, may not work
|
|||||||
on all servers but enable more functionality in a better way than the
|
on all servers but enable more functionality in a better way than the
|
||||||
traditional PORT command.
|
traditional PORT command.
|
||||||
|
|
||||||
If this option is used several times, each occurrence will toggle this on/off.
|
Since curl 7.19.0, \fB--eprt\fP can be used to explicitly enable EPRT again
|
||||||
|
and \fB--no-eprt\fP is an alias for \fB--disable-eprt\fP.
|
||||||
.IP "--disable-epsv"
|
.IP "--disable-epsv"
|
||||||
(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
|
(FTP) Tell curl to disable the use of the EPSV command when doing passive FTP
|
||||||
transfers. Curl will normally always first attempt to use EPSV before PASV,
|
transfers. Curl will normally always first attempt to use EPSV before PASV,
|
||||||
but with this option, it will not try using EPSV.
|
but with this option, it will not try using EPSV.
|
||||||
|
|
||||||
If this option is used several times, each occurrence will toggle this on/off.
|
Since curl 7.19.0, \fB--epsv\fP can be used to explicitly enable EPRT again
|
||||||
|
and \fB--no-epsv\fP is an alias for \fB--disable-epsv\fP.
|
||||||
.IP "-D/--dump-header <file>"
|
.IP "-D/--dump-header <file>"
|
||||||
Write the protocol headers to the specified file.
|
Write the protocol headers to the specified file.
|
||||||
|
|
||||||
@@ -334,8 +328,6 @@ run-time.
|
|||||||
(RISC OS ONLY) Sets a range of environment variables, using the names the -w
|
(RISC OS ONLY) Sets a range of environment variables, using the names the -w
|
||||||
option supports, to easier allow extraction of useful information after having
|
option supports, to easier allow extraction of useful information after having
|
||||||
run curl.
|
run curl.
|
||||||
|
|
||||||
If this option is used several times, each occurrence will toggle this on/off.
|
|
||||||
.IP "--egd-file <file>"
|
.IP "--egd-file <file>"
|
||||||
(SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket
|
(SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket
|
||||||
is used to seed the random engine for SSL connections. See also the
|
is used to seed the random engine for SSL connections. See also the
|
||||||
@@ -400,8 +392,6 @@ will prevent curl from outputting that and return error 22.
|
|||||||
This method is not fail-safe and there are occasions where non-successful
|
This method is not fail-safe and there are occasions where non-successful
|
||||||
response codes will slip through, especially when authentication is involved
|
response codes will slip through, especially when authentication is involved
|
||||||
(response codes 401 and 407).
|
(response codes 401 and 407).
|
||||||
|
|
||||||
If this option is used twice, the second will again disable silent failure.
|
|
||||||
.IP "--ftp-account [data]"
|
.IP "--ftp-account [data]"
|
||||||
(FTP) When an FTP server asks for "account data" after user name and password
|
(FTP) When an FTP server asks for "account data" after user name and password
|
||||||
has been provided, this data is sent off using the ACCT command. (Added in
|
has been provided, this data is sent off using the ACCT command. (Added in
|
||||||
@@ -413,8 +403,6 @@ If this option is used twice, the second will override the previous use.
|
|||||||
currently exist on the server, the standard behavior of curl is to
|
currently exist on the server, the standard behavior of curl is to
|
||||||
fail. Using this option, curl will instead attempt to create missing
|
fail. Using this option, curl will instead attempt to create missing
|
||||||
directories.
|
directories.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable directory creation.
|
|
||||||
.IP "--ftp-method [method]"
|
.IP "--ftp-method [method]"
|
||||||
(FTP) Control what method curl should use to reach a file on a FTP(S)
|
(FTP) Control what method curl should use to reach a file on a FTP(S)
|
||||||
server. The method argument should be one of the following alternatives:
|
server. The method argument should be one of the following alternatives:
|
||||||
@@ -437,7 +425,8 @@ using this option can be used to override a previous --ftp-port option. (Added
|
|||||||
in 7.11.0)
|
in 7.11.0)
|
||||||
|
|
||||||
If this option is used several times, the following occurrences make no
|
If this option is used several times, the following occurrences make no
|
||||||
difference.
|
difference. Undoing an enforced PASV really isn't doable but you must then
|
||||||
|
instead enforce the correct EPRT again.
|
||||||
.IP "--ftp-alternative-to-user <command>"
|
.IP "--ftp-alternative-to-user <command>"
|
||||||
(FTP) If authenticating with the USER and PASS commands fails, send this
|
(FTP) If authenticating with the USER and PASS commands fails, send this
|
||||||
command. When connecting to Tumbleweed's Secure Transport server over FTPS
|
command. When connecting to Tumbleweed's Secure Transport server over FTPS
|
||||||
@@ -450,28 +439,19 @@ will re-use the same IP address it already uses for the control
|
|||||||
connection. (Added in 7.14.2)
|
connection. (Added in 7.14.2)
|
||||||
|
|
||||||
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
|
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
|
||||||
|
|
||||||
If this option is used twice, the second will again use the server's suggested
|
|
||||||
address.
|
|
||||||
.IP "--ftp-ssl"
|
.IP "--ftp-ssl"
|
||||||
(FTP) Try to use SSL/TLS for the FTP connection. Reverts to a non-secure
|
(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
|
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
|
\fI--ftp-ssl-control\fP and \fI--ftp-ssl-reqd\fP for different levels of
|
||||||
encryption required. (Added in 7.11.0)
|
encryption required. (Added in 7.11.0)
|
||||||
|
|
||||||
If this option is used twice, the second will again disable this.
|
|
||||||
.IP "--ftp-ssl-control"
|
.IP "--ftp-ssl-control"
|
||||||
(FTP) Require SSL/TLS for the ftp login, clear for transfer. Allows secure
|
(FTP) Require SSL/TLS for the ftp login, clear for transfer. Allows secure
|
||||||
authentication, but non-encrypted data transfers for efficiency. Fails the
|
authentication, but non-encrypted data transfers for efficiency. Fails the
|
||||||
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
|
transfer if the server doesn't support SSL/TLS. (Added in 7.16.0)
|
||||||
|
|
||||||
If this option is used twice, the second will again disable this.
|
|
||||||
.IP "--ftp-ssl-reqd"
|
.IP "--ftp-ssl-reqd"
|
||||||
(FTP) Require SSL/TLS for the FTP connection.
|
(FTP) Require SSL/TLS for the FTP connection.
|
||||||
Terminates the connection if the server doesn't support SSL/TLS.
|
Terminates the connection if the server doesn't support SSL/TLS.
|
||||||
(Added in 7.15.5)
|
(Added in 7.15.5)
|
||||||
|
|
||||||
If this option is used twice, the second will again disable this.
|
|
||||||
.IP "--ftp-ssl-ccc"
|
.IP "--ftp-ssl-ccc"
|
||||||
(FTP) Use CCC (Clear Command Channel)
|
(FTP) Use CCC (Clear Command Channel)
|
||||||
Shuts down the SSL/TLS layer after authenticating. The rest of the
|
Shuts down the SSL/TLS layer after authenticating. The rest of the
|
||||||
@@ -479,8 +459,6 @@ control channel communication will be unencrypted. This allows
|
|||||||
NAT routers to follow the FTP transaction. The default mode is
|
NAT routers to follow the FTP transaction. The default mode is
|
||||||
passive. See --ftp-ssl-ccc-mode for other modes.
|
passive. See --ftp-ssl-ccc-mode for other modes.
|
||||||
(Added in 7.16.1)
|
(Added in 7.16.1)
|
||||||
|
|
||||||
If this option is used twice, the second will again disable this.
|
|
||||||
.IP "--ftp-ssl-ccc-mode [active/passive]"
|
.IP "--ftp-ssl-ccc-mode [active/passive]"
|
||||||
(FTP) Use CCC (Clear Command Channel)
|
(FTP) Use CCC (Clear Command Channel)
|
||||||
Sets the CCC mode. The passive mode will not initiate the shutdown, but
|
Sets the CCC mode. The passive mode will not initiate the shutdown, but
|
||||||
@@ -545,7 +523,8 @@ If used in combination with -I, the POST data will instead be appended to the
|
|||||||
URL with a HEAD request.
|
URL with a HEAD request.
|
||||||
|
|
||||||
If this option is used several times, the following occurrences make no
|
If this option is used several times, the following occurrences make no
|
||||||
difference.
|
difference. This is because undoing a GET doesn't make sense, but you should
|
||||||
|
then instead enforce the alternative method you prefer.
|
||||||
.IP "-h/--help"
|
.IP "-h/--help"
|
||||||
Usage help.
|
Usage help.
|
||||||
.IP "-H/--header <header>"
|
.IP "-H/--header <header>"
|
||||||
@@ -566,7 +545,7 @@ for you.
|
|||||||
See also the \fI-A/--user-agent\fP and \fI-e/--referer\fP options.
|
See also the \fI-A/--user-agent\fP and \fI-e/--referer\fP options.
|
||||||
|
|
||||||
This option can be used multiple times to add/replace/remove multiple headers.
|
This option can be used multiple times to add/replace/remove multiple headers.
|
||||||
.IP "--hostpubmd5"
|
.IP "--hostpubmd5 <md5>"
|
||||||
Pass a string containing 32 hexadecimal digits. The string should be the 128
|
Pass a string containing 32 hexadecimal digits. The string should be the 128
|
||||||
bit MD5 checksum of the remote host's public key, curl will refuse the
|
bit MD5 checksum of the remote host's public key, curl will refuse the
|
||||||
connection with the host unless the md5sums match. This option is only for SCP
|
connection with the host unless the md5sums match. This option is only for SCP
|
||||||
@@ -577,11 +556,8 @@ Ignore the Content-Length header. This is particularly useful for servers
|
|||||||
running Apache 1.x, which will report incorrect Content-Length for files
|
running Apache 1.x, which will report incorrect Content-Length for files
|
||||||
larger than 2 gigabytes.
|
larger than 2 gigabytes.
|
||||||
.IP "-i/--include"
|
.IP "-i/--include"
|
||||||
(HTTP)
|
(HTTP) Include the HTTP-header in the output. The HTTP-header includes things
|
||||||
Include the HTTP-header in the output. The HTTP-header includes things
|
|
||||||
like server-name, date of the document, HTTP-version and more...
|
like server-name, date of the document, HTTP-version and more...
|
||||||
|
|
||||||
If this option is used twice, the second will again disable header include.
|
|
||||||
.IP "--interface <name>"
|
.IP "--interface <name>"
|
||||||
Perform an operation using a specified interface. You can enter interface
|
Perform an operation using a specified interface. You can enter interface
|
||||||
name, IP address or host name. An example could look like:
|
name, IP address or host name. An example could look like:
|
||||||
@@ -595,15 +571,11 @@ Fetch the HTTP-header only! HTTP-servers feature the command HEAD
|
|||||||
which this uses to get nothing but the header of a document. When used
|
which this uses to get nothing but the header of a document. When used
|
||||||
on a FTP or FILE file, curl displays the file size and last modification
|
on a FTP or FILE file, curl displays the file size and last modification
|
||||||
time only.
|
time only.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable header only.
|
|
||||||
.IP "-j/--junk-session-cookies"
|
.IP "-j/--junk-session-cookies"
|
||||||
(HTTP) When curl is told to read cookies from a given file, this option will
|
(HTTP) When curl is told to read cookies from a given file, this option will
|
||||||
make it discard all "session cookies". This will basically have the same effect
|
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
|
as if a new session is started. Typical browsers always discard session
|
||||||
cookies when they're closed down.
|
cookies when they're closed down.
|
||||||
|
|
||||||
If this option is used several times, each occurrence will toggle this on/off.
|
|
||||||
.IP "-k/--insecure"
|
.IP "-k/--insecure"
|
||||||
(SSL) This option explicitly allows curl to perform "insecure" SSL connections
|
(SSL) This option explicitly allows curl to perform "insecure" SSL connections
|
||||||
and transfers. All SSL connections are attempted to be made secure by using
|
and transfers. All SSL connections are attempted to be made secure by using
|
||||||
@@ -612,8 +584,6 @@ considered "insecure" to fail unless \fI-k/--insecure\fP is used.
|
|||||||
|
|
||||||
See this online resource for further details:
|
See this online resource for further details:
|
||||||
\fBhttp://curl.haxx.se/docs/sslcerts.html\fP
|
\fBhttp://curl.haxx.se/docs/sslcerts.html\fP
|
||||||
|
|
||||||
If this option is used twice, the second time will again disable it.
|
|
||||||
.IP "--keepalive-time <seconds>"
|
.IP "--keepalive-time <seconds>"
|
||||||
This option sets the time a connection needs to remain idle before sending
|
This option sets the time a connection needs to remain idle before sending
|
||||||
keepalive probes and the time between individual keepalive probes. It is
|
keepalive probes and the time between individual keepalive probes. It is
|
||||||
@@ -738,7 +708,6 @@ This option causes an FTP NLST command to be sent. Some FTP servers
|
|||||||
list only files in their response to NLST; they do not include
|
list only files in their response to NLST; they do not include
|
||||||
subdirectories and symbolic links.
|
subdirectories and symbolic links.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable list only.
|
|
||||||
.IP "--local-port <num>[-num]"
|
.IP "--local-port <num>[-num]"
|
||||||
Set a preferred number or range of local port numbers to use for the
|
Set a preferred number or range of local port numbers to use for the
|
||||||
connection(s). Note that port numbers by nature is a scarce resource that
|
connection(s). Note that port numbers by nature is a scarce resource that
|
||||||
@@ -759,8 +728,6 @@ When curl follows a redirect and the request is not a plain GET (for example
|
|||||||
POST or PUT), it will do the following request with a GET if the HTTP response
|
POST or PUT), it will do the following request with a GET if the HTTP response
|
||||||
was 301, 302, or 303. If the response code was any other 3xx code, curl will
|
was 301, 302, or 303. If the response code was any other 3xx code, curl will
|
||||||
re-send the following request using the same unmodified method.
|
re-send the following request using the same unmodified method.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable location following.
|
|
||||||
.IP "--location-trusted"
|
.IP "--location-trusted"
|
||||||
(HTTP/HTTPS) Like \fI-L/--location\fP, but will allow sending the name +
|
(HTTP/HTTPS) Like \fI-L/--location\fP, but will allow sending the name +
|
||||||
password to all hosts that the site may redirect to. This may or may not
|
password to all hosts that the site may redirect to. This may or may not
|
||||||
@@ -768,7 +735,6 @@ introduce a security breach if the site redirects you do a site to which
|
|||||||
you'll send your authentication info (which is plaintext in the case of HTTP
|
you'll send your authentication info (which is plaintext in the case of HTTP
|
||||||
Basic authentication).
|
Basic authentication).
|
||||||
|
|
||||||
If this option is used twice, the second will again disable location following.
|
|
||||||
.IP "--max-filesize <bytes>"
|
.IP "--max-filesize <bytes>"
|
||||||
Specify the maximum size (in bytes) of a file to download. If the file
|
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
|
requested is larger than this value, the transfer will not start and curl will
|
||||||
@@ -786,9 +752,9 @@ If this option is used several times, the last one will be used.
|
|||||||
.IP "-M/--manual"
|
.IP "-M/--manual"
|
||||||
Manual. Display the huge help text.
|
Manual. Display the huge help text.
|
||||||
.IP "-n/--netrc"
|
.IP "-n/--netrc"
|
||||||
Makes curl scan the \fI.netrc\fP file in the user's home directory for login
|
Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's
|
||||||
name and password. This is typically used for ftp on unix. If used with http,
|
home directory for login name and password. This is typically used for ftp on
|
||||||
curl will enable user authentication. See
|
unix. If used with http, curl will enable user authentication. See
|
||||||
.BR netrc(4)
|
.BR netrc(4)
|
||||||
or
|
or
|
||||||
.BR ftp(1)
|
.BR ftp(1)
|
||||||
@@ -802,8 +768,6 @@ to ftp to the machine host.domain.com with user name \&'myself' and password
|
|||||||
\&'secret' should look similar to:
|
\&'secret' should look similar to:
|
||||||
|
|
||||||
.B "machine host.domain.com login myself password secret"
|
.B "machine host.domain.com login myself password secret"
|
||||||
|
|
||||||
If this option is used twice, the second will again disable netrc usage.
|
|
||||||
.IP "--netrc-optional"
|
.IP "--netrc-optional"
|
||||||
Very similar to \fI--netrc\fP, but this option makes the .netrc usage
|
Very similar to \fI--netrc\fP, but this option makes the .netrc usage
|
||||||
\fBoptional\fP and not mandatory as the \fI--netrc\fP does.
|
\fBoptional\fP and not mandatory as the \fI--netrc\fP does.
|
||||||
@@ -833,12 +797,14 @@ will use a standard buffered output stream that will have the effect that it
|
|||||||
will output the data in chunks, not necessarily exactly when the data arrives.
|
will output the data in chunks, not necessarily exactly when the data arrives.
|
||||||
Using this option will disable that buffering.
|
Using this option will disable that buffering.
|
||||||
|
|
||||||
If this option is used twice, the second will again switch on buffering.
|
Note that this is the negated option name documented. You can thus use
|
||||||
|
\fI--buffer\fP to enforce the buffering.
|
||||||
.IP "--no-keepalive"
|
.IP "--no-keepalive"
|
||||||
Disables the use of keepalive messages on the TCP connection, as by default
|
Disables the use of keepalive messages on the TCP connection, as by default
|
||||||
curl enables them.
|
curl enables them.
|
||||||
|
|
||||||
If this option is used twice, the second will again enable keepalive.
|
Note that this is the negated option name documented. You can thus use
|
||||||
|
\fI--keepalive\fP to enforce keepalive.
|
||||||
.IP "--no-sessionid"
|
.IP "--no-sessionid"
|
||||||
(SSL) Disable curl's use of SSL session-ID caching. By default all transfers
|
(SSL) Disable curl's use of SSL session-ID caching. By default all transfers
|
||||||
are done using the cache. Note that while nothing ever should get hurt by
|
are done using the cache. Note that while nothing ever should get hurt by
|
||||||
@@ -846,8 +812,8 @@ 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
|
implementations in the wild that may require you to disable this in order for
|
||||||
you to succeed. (Added in 7.16.0)
|
you to succeed. (Added in 7.16.0)
|
||||||
|
|
||||||
If this option is used twice, the second will again switch on use of the
|
Note that this is the negated option name documented. You can thus use
|
||||||
session cache.
|
\fI--sessionid\fP to enforce session-ID caching.
|
||||||
.IP "--ntlm"
|
.IP "--ntlm"
|
||||||
(HTTP) Enables NTLM authentication. The NTLM authentication method was
|
(HTTP) Enables NTLM authentication. The NTLM authentication method was
|
||||||
designed by Microsoft and is used by IIS web servers. It is a proprietary
|
designed by Microsoft and is used by IIS web servers. It is a proprietary
|
||||||
@@ -888,6 +854,11 @@ The remote file name to use for saving is extracted from the given URL,
|
|||||||
nothing else.
|
nothing else.
|
||||||
|
|
||||||
You may use this option as many times as you have number of URLs.
|
You may use this option as many times as you have number of URLs.
|
||||||
|
.IP "--remote-name-all"
|
||||||
|
This option changes the default action for all given URLs to be dealt with as
|
||||||
|
if \fI-O/--remote-name\fP were used for each one. So if you want to disable
|
||||||
|
that for a specific URL after \fI--remote-name-all\fP has been used, you must
|
||||||
|
use "-o -" or \fI--no-remote-name\fP. (Added in 7.19.0)
|
||||||
.IP "--pass <phrase>"
|
.IP "--pass <phrase>"
|
||||||
(SSL/SSH) Pass phrase for the private key
|
(SSL/SSH) Pass phrase for the private key
|
||||||
|
|
||||||
@@ -903,41 +874,26 @@ a redirection. This option is meaningful only when using \fI-L/--location\fP
|
|||||||
Tells curl to pick a suitable authentication method when communicating with
|
Tells curl to pick a suitable authentication method when communicating with
|
||||||
the given proxy. This might cause an extra request/response round-trip. (Added
|
the given proxy. This might cause an extra request/response round-trip. (Added
|
||||||
in 7.13.2)
|
in 7.13.2)
|
||||||
|
|
||||||
If this option is used twice, the second will again disable the proxy use-any
|
|
||||||
authentication.
|
|
||||||
.IP "--proxy-basic"
|
.IP "--proxy-basic"
|
||||||
Tells curl to use HTTP Basic authentication when communicating with the given
|
Tells curl to use HTTP Basic authentication when communicating with the given
|
||||||
proxy. Use \fI--basic\fP for enabling HTTP Basic with a remote host. Basic is
|
proxy. Use \fI--basic\fP for enabling HTTP Basic with a remote host. Basic is
|
||||||
the default authentication method curl uses with proxies.
|
the default authentication method curl uses with proxies.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable proxy HTTP Basic
|
|
||||||
authentication.
|
|
||||||
.IP "--proxy-digest"
|
.IP "--proxy-digest"
|
||||||
Tells curl to use HTTP Digest authentication when communicating with the given
|
Tells curl to use HTTP Digest authentication when communicating with the given
|
||||||
proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
|
proxy. Use \fI--digest\fP for enabling HTTP Digest with a remote host.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable proxy HTTP Digest.
|
|
||||||
.IP "--proxy-negotiate"
|
.IP "--proxy-negotiate"
|
||||||
Tells curl to use HTTP Negotiate authentication when communicating
|
Tells curl to use HTTP Negotiate authentication when communicating
|
||||||
with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate
|
with the given proxy. Use \fI--negotiate\fP for enabling HTTP Negotiate
|
||||||
with a remote host.
|
with a remote host. (Added in 7.17.1)
|
||||||
|
|
||||||
If this option is used twice, the second will again disable proxy HTTP
|
|
||||||
Negotiate. (Added in 7.17.1)
|
|
||||||
.IP "--proxy-ntlm"
|
.IP "--proxy-ntlm"
|
||||||
Tells curl to use HTTP NTLM authentication when communicating with the given
|
Tells curl to use HTTP NTLM authentication when communicating with the given
|
||||||
proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
|
proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable proxy HTTP NTLM.
|
|
||||||
.IP "-p/--proxytunnel"
|
.IP "-p/--proxytunnel"
|
||||||
When an HTTP proxy is used (\fI-x/--proxy\fP), this option will cause non-HTTP
|
When an HTTP proxy is used (\fI-x/--proxy\fP), this option will cause non-HTTP
|
||||||
protocols to attempt to tunnel through the proxy instead of merely using it to
|
protocols to attempt to tunnel through the proxy instead of merely using it to
|
||||||
do HTTP-like operations. The tunnel approach is made with the HTTP proxy
|
do HTTP-like operations. The tunnel approach is made with the HTTP proxy
|
||||||
CONNECT request and requires that the proxy allows direct connect to the
|
CONNECT request and requires that the proxy allows direct connect to the
|
||||||
remote port number curl wants to tunnel through to.
|
remote port number curl wants to tunnel through to.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable proxy tunnel.
|
|
||||||
.IP "--pubkey <key>"
|
.IP "--pubkey <key>"
|
||||||
(SSH) Public key file name. Allows you to provide your public key in this
|
(SSH) Public key file name. Allows you to provide your public key in this
|
||||||
separate file.
|
separate file.
|
||||||
@@ -978,11 +934,42 @@ just before the transfer command(s), prefix the command with '+' (this
|
|||||||
is only supported for FTP). You may specify any number of commands. If
|
is only supported for FTP). You may specify any number of commands. If
|
||||||
the server returns failure for one of the commands, the entire operation
|
the server returns failure for one of the commands, the entire operation
|
||||||
will be aborted. You must send syntactically correct FTP commands as
|
will be aborted. You must send syntactically correct FTP commands as
|
||||||
RFC959 defines to FTP servers, or one of the following commands (with
|
RFC959 defines to FTP servers, or one of the commands listed below to
|
||||||
appropriate arguments) to SFTP servers: chgrp, chmod, chown, ln, mkdir,
|
SFTP servers. This option can be used multiple times.
|
||||||
pwd, rename, rm, rmdir, symlink.
|
|
||||||
|
|
||||||
This option can be used multiple times.
|
SFTP is a binary protocol. Unlike for FTP, libcurl interprets SFTP quote
|
||||||
|
commands before sending them to the server. Following is the list of
|
||||||
|
all supported SFTP quote commands:
|
||||||
|
.RS
|
||||||
|
.IP "chgrp group file"
|
||||||
|
The chgrp command sets the group ID of the file named by the file operand to the
|
||||||
|
group ID specified by the group operand. The group operand is a decimal
|
||||||
|
integer group ID.
|
||||||
|
.IP "chmod mode file"
|
||||||
|
The chmod command modifies the file mode bits of the specified file. The
|
||||||
|
mode operand is an octal integer mode number.
|
||||||
|
.IP "chown user file"
|
||||||
|
The chown command sets the owner of the file named by the file operand to the
|
||||||
|
user ID specified by the user operand. The user operand is a decimal
|
||||||
|
integer user ID.
|
||||||
|
.IP "ln source_file target_file"
|
||||||
|
The ln and symlink commands create a symbolic link at the target_file location
|
||||||
|
pointing to the source_file location.
|
||||||
|
.IP "mkdir directory_name"
|
||||||
|
The mkdir command creates the directory named by the directory_name operand.
|
||||||
|
.IP "pwd"
|
||||||
|
The pwd command returns the absolute pathname of the current working directory.
|
||||||
|
.IP "rename source target"
|
||||||
|
The rename command renames the file or directory named by the source
|
||||||
|
operand to the destination path named by the target operand.
|
||||||
|
.IP "rm file"
|
||||||
|
The rm command removes the file specified by the file operand.
|
||||||
|
.IP "rmdir directory"
|
||||||
|
The rmdir command removes the directory entry specified by the directory
|
||||||
|
operand, provided it is empty.
|
||||||
|
.IP "symlink source_file target_file"
|
||||||
|
See ln.
|
||||||
|
.RE
|
||||||
.IP "--random-file <file>"
|
.IP "--random-file <file>"
|
||||||
(SSL) Specify the path name to file containing what will be considered as
|
(SSL) Specify the path name to file containing what will be considered as
|
||||||
random data. The data is used to seed the random engine for SSL connections.
|
random data. The data is used to seed the random engine for SSL connections.
|
||||||
@@ -1033,14 +1020,10 @@ If this option is used several times, the last one will be used.
|
|||||||
.IP "--raw"
|
.IP "--raw"
|
||||||
When used, it disables all internal HTTP decoding of content or transfer
|
When used, it disables all internal HTTP decoding of content or transfer
|
||||||
encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2)
|
encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2)
|
||||||
|
|
||||||
If this option is used several times, each occurrence toggles this on/off.
|
|
||||||
.IP "-R/--remote-time"
|
.IP "-R/--remote-time"
|
||||||
When used, this will make libcurl attempt to figure out the timestamp of the
|
When used, this will make libcurl attempt to figure out the timestamp of the
|
||||||
remote file, and if that is available make the local file get that same
|
remote file, and if that is available make the local file get that same
|
||||||
timestamp.
|
timestamp.
|
||||||
|
|
||||||
If this option is used twice, the second time disables this again.
|
|
||||||
.IP "--retry <num>"
|
.IP "--retry <num>"
|
||||||
If a transient error is returned when curl tries to perform a transfer, it
|
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
|
will retry this number of times before giving up. Setting the number to 0
|
||||||
@@ -1075,12 +1058,8 @@ If this option is used multiple times, the last occurrence decide the amount.
|
|||||||
.IP "-s/--silent"
|
.IP "-s/--silent"
|
||||||
Silent mode. Don't show progress meter or error messages. Makes
|
Silent mode. Don't show progress meter or error messages. Makes
|
||||||
Curl mute.
|
Curl mute.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable silent mode.
|
|
||||||
.IP "-S/--show-error"
|
.IP "-S/--show-error"
|
||||||
When used with -s it makes curl show error message if it fails.
|
When used with -s it makes curl show error message if it fails.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable show error.
|
|
||||||
.IP "--socks4 <host[:port]>"
|
.IP "--socks4 <host[:port]>"
|
||||||
Use the specified SOCKS4 proxy. If the port number is not specified, it is
|
Use the specified SOCKS4 proxy. If the port number is not specified, it is
|
||||||
assumed at port 1080. (Added in 7.15.2)
|
assumed at port 1080. (Added in 7.15.2)
|
||||||
@@ -1127,8 +1106,6 @@ If this option is used several times, the last one will be used.
|
|||||||
.IP "--tcp-nodelay"
|
.IP "--tcp-nodelay"
|
||||||
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
|
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
|
||||||
details about this option. (Added in 7.11.2)
|
details about this option. (Added in 7.11.2)
|
||||||
|
|
||||||
If this option is used several times, each occurrence toggles this on/off.
|
|
||||||
.IP "-t/--telnet-option <OPT=val>"
|
.IP "-t/--telnet-option <OPT=val>"
|
||||||
Pass options to the telnet protocol. Supported options are:
|
Pass options to the telnet protocol. Supported options are:
|
||||||
|
|
||||||
@@ -1181,8 +1158,6 @@ If this option is used several times, the last one will be used.
|
|||||||
.IP "--trace-time"
|
.IP "--trace-time"
|
||||||
Prepends a time stamp to each trace or verbose line that curl displays.
|
Prepends a time stamp to each trace or verbose line that curl displays.
|
||||||
(Added in 7.14.0)
|
(Added in 7.14.0)
|
||||||
|
|
||||||
If this option is used several times, each occurrence will toggle it on/off.
|
|
||||||
.IP "-u/--user <user:password>"
|
.IP "-u/--user <user:password>"
|
||||||
Specify user and password to use for server authentication. Overrides
|
Specify user and password to use for server authentication. Overrides
|
||||||
\fI-n/--netrc\fP and \fI--netrc-optional\fP.
|
\fI-n/--netrc\fP and \fI--netrc-optional\fP.
|
||||||
@@ -1222,8 +1197,6 @@ If you think this option still doesn't give you enough details, consider using
|
|||||||
\fI--trace\fP or \fI--trace-ascii\fP instead.
|
\fI--trace\fP or \fI--trace-ascii\fP instead.
|
||||||
|
|
||||||
This option overrides previous uses of \fI--trace-ascii\fP or \fI--trace\fP.
|
This option overrides previous uses of \fI--trace-ascii\fP or \fI--trace\fP.
|
||||||
|
|
||||||
If this option is used twice, the second will do nothing extra.
|
|
||||||
.IP "-V/--version"
|
.IP "-V/--version"
|
||||||
Displays information about curl and the libcurl version it uses.
|
Displays information about curl and the libcurl version it uses.
|
||||||
|
|
||||||
@@ -1305,8 +1278,12 @@ The time, in seconds, it took from the start until the name resolving was
|
|||||||
completed.
|
completed.
|
||||||
.TP
|
.TP
|
||||||
.B time_connect
|
.B time_connect
|
||||||
The time, in seconds, it took from the start until the connect to the remote
|
The time, in seconds, it took from the start until the TCP connect to the
|
||||||
host (or proxy) was completed.
|
remote host (or proxy) was completed.
|
||||||
|
.TP
|
||||||
|
.B time_appconnect
|
||||||
|
The time, in seconds, it took from the start until the SSL/SSH/etc
|
||||||
|
connect/handshake to the remote host was completed. (Added in 7.19.0)
|
||||||
.TP
|
.TP
|
||||||
.B time_pretransfer
|
.B time_pretransfer
|
||||||
The time, in seconds, it took from the start until the file transfer is just
|
The time, in seconds, it took from the start until the file transfer is just
|
||||||
@@ -1358,6 +1335,10 @@ will show the actual URL a redirect \fIwould\fP take you to. (Added in 7.18.2)
|
|||||||
.B ftp_entry_path
|
.B ftp_entry_path
|
||||||
The initial path libcurl ended up in when logging on to the remote FTP
|
The initial path libcurl ended up in when logging on to the remote FTP
|
||||||
server. (Added in 7.15.4)
|
server. (Added in 7.15.4)
|
||||||
|
.TP
|
||||||
|
.B ssl_verify_result
|
||||||
|
The result of the SSL peer certificate verification that was requested. 0
|
||||||
|
means the verification was successful. (Added in 7.19.0)
|
||||||
.RE
|
.RE
|
||||||
|
|
||||||
If this option is used several times, the last one will be used.
|
If this option is used several times, the last one will be used.
|
||||||
@@ -1447,8 +1428,6 @@ IPv6 addresses only.
|
|||||||
.IP "-#/--progress-bar"
|
.IP "-#/--progress-bar"
|
||||||
Make curl display progress information as a progress bar instead of the
|
Make curl display progress information as a progress bar instead of the
|
||||||
default statistics.
|
default statistics.
|
||||||
|
|
||||||
If this option is used twice, the second will again disable the progress bar.
|
|
||||||
.SH FILES
|
.SH FILES
|
||||||
.I ~/.curlrc
|
.I ~/.curlrc
|
||||||
.RS
|
.RS
|
||||||
@@ -1613,6 +1592,10 @@ The resource referenced in the URL does not exist
|
|||||||
An unspecified error occurred during the SSH session
|
An unspecified error occurred during the SSH session
|
||||||
.IP 80
|
.IP 80
|
||||||
Failed to shut down the SSL connection
|
Failed to shut down the SSL connection
|
||||||
|
.IP 82
|
||||||
|
Could not load CRL file, missing or wrong format (added in 7.19.0)
|
||||||
|
.IP 83
|
||||||
|
Issuer check failed (added in 7.19.0)
|
||||||
.IP XX
|
.IP XX
|
||||||
There will appear more error codes here in future releases. The existing ones
|
There will appear more error codes here in future releases. The existing ones
|
||||||
are meant to never change.
|
are meant to never change.
|
||||||
|
@@ -16,11 +16,10 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#ifndef WIN32
|
||||||
#include <curl/multi.h>
|
# include <unistd.h>
|
||||||
#ifdef WIN32
|
|
||||||
#include <windows.h>
|
|
||||||
#endif
|
#endif
|
||||||
|
#include <curl/multi.h>
|
||||||
|
|
||||||
static const char *urls[] = {
|
static const char *urls[] = {
|
||||||
"http://www.microsoft.com",
|
"http://www.microsoft.com",
|
||||||
|
@@ -7,7 +7,16 @@ AUTOMAKE_OPTIONS = foreign nostdinc
|
|||||||
EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
|
EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
|
||||||
makefile.dj $(COMPLICATED_EXAMPLES)
|
makefile.dj $(COMPLICATED_EXAMPLES)
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/include
|
# Specify our include paths here, and do it relative to $(top_srcdir) and
|
||||||
|
# $(top_builddir), to ensure that these paths which belong to the library
|
||||||
|
# being currently built and tested are searched before the library which
|
||||||
|
# might possibly already be installed in the system.
|
||||||
|
#
|
||||||
|
# $(top_builddir)/include is for libcurl's generated curl/curlbuild.h file
|
||||||
|
# $(top_srcdir)/include is for libcurl's external include files
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include \
|
||||||
|
-I$(top_srcdir)/include
|
||||||
|
|
||||||
LIBDIR = $(top_builddir)/lib
|
LIBDIR = $(top_builddir)/lib
|
||||||
|
|
||||||
|
@@ -5,7 +5,7 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface \
|
|||||||
https multi-app multi-debugcallback multi-double \
|
https multi-app multi-debugcallback multi-double \
|
||||||
multi-post multi-single persistant post-callback \
|
multi-post multi-single persistant post-callback \
|
||||||
postit2 sepheaders simple simplepost simplessl \
|
postit2 sepheaders simple simplepost simplessl \
|
||||||
sendrecv
|
sendrecv httpcustomheader
|
||||||
|
|
||||||
# These examples require external dependencies that may not be commonly
|
# These examples require external dependencies that may not be commonly
|
||||||
# available on POSIX systems, so don't bother attempting to compile them here.
|
# available on POSIX systems, so don't bother attempting to compile them here.
|
||||||
|
@@ -9,10 +9,23 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#ifdef WIN32
|
||||||
|
# include <io.h>
|
||||||
|
#else
|
||||||
|
# include <stdint.h>
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <unistd.h>
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
# ifdef _WIN64
|
||||||
|
typedef __int64 intptr_t;
|
||||||
|
# else
|
||||||
|
typedef int intptr_t;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
@@ -45,7 +45,9 @@
|
|||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/time.h>
|
#ifndef WIN32
|
||||||
|
# include <sys/time.h>
|
||||||
|
#endif
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
@@ -21,6 +21,9 @@
|
|||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER < 1300)
|
||||||
|
# error _snscanf requires MSVC 7.0 or later.
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The MinGW headers are missing a few Win32 function definitions,
|
/* The MinGW headers are missing a few Win32 function definitions,
|
||||||
you shouldn't need this if you use VC++ */
|
you shouldn't need this if you use VC++ */
|
||||||
|
38
docs/examples/httpcustomheader.c
Normal file
38
docs/examples/httpcustomheader.c
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
struct curl_slist *chunk = NULL;
|
||||||
|
|
||||||
|
chunk = curl_slist_append(chunk, "Accept: moo");
|
||||||
|
|
||||||
|
/* request with the built-in Accept: */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "localhost");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* redo request with our own custom Accept: */
|
||||||
|
res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
@@ -16,16 +16,15 @@ ifeq ($(USE_SSL),1)
|
|||||||
LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
|
LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(USE_IDNA),1)
|
||||||
|
LIBS += $(LIBIDN_ROOT)/lib/dj_obj/libidn.a -liconv
|
||||||
|
endif
|
||||||
|
|
||||||
LIBS += $(WATT32_ROOT)/lib/libwatt.a $(ZLIB_ROOT)/libz.a
|
LIBS += $(WATT32_ROOT)/lib/libwatt.a $(ZLIB_ROOT)/libz.a
|
||||||
|
|
||||||
CSOURCES = fopen.c ftpget.c ftpgetresp.c ftpupload.c getinmemory.c \
|
include Makefile.inc
|
||||||
http-post.c httpput.c https.c multi-app.c multi-double.c \
|
|
||||||
multi-post.c multi-single.c persistant.c post-callback.c \
|
|
||||||
postit2.c sepheaders.c simple.c simplepost.c simplessl.c \
|
|
||||||
multi-debugcallback.c fileupload.c getinfo.c anyauthput.c \
|
|
||||||
10-at-a-time.c # ftpuploadresume.c cookie_interface.c
|
|
||||||
|
|
||||||
PROGRAMS = $(CSOURCES:.c=.exe)
|
PROGRAMS = $(patsubst %,%.exe,$(check_PROGRAMS))
|
||||||
|
|
||||||
all: $(PROGRAMS)
|
all: $(PROGRAMS)
|
||||||
@echo Welcome to libcurl example program
|
@echo Welcome to libcurl example program
|
||||||
|
@@ -18,7 +18,6 @@
|
|||||||
static int wait_on_socket(int sockfd, int for_recv, long timeout_ms)
|
static int wait_on_socket(int sockfd, int for_recv, long timeout_ms)
|
||||||
{
|
{
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
long seconds, usecs;
|
|
||||||
fd_set infd, outfd, errfd;
|
fd_set infd, outfd, errfd;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
ABI - Application Binary Interface
|
ABI - Application Binary Interface
|
||||||
|
|
||||||
First, allow me to define the word for this context: ABI describes the
|
First, allow me to define the word for this context: ABI describes the
|
||||||
low-level interface between an application program a library. Calling
|
low-level interface between an application program and a library. Calling
|
||||||
conventions, function arguments, return values, struct sizes/defines and
|
conventions, function arguments, return values, struct sizes/defines and
|
||||||
more.
|
more.
|
||||||
|
|
||||||
|
@@ -71,6 +71,12 @@ start until the name resolving was completed.
|
|||||||
.IP CURLINFO_CONNECT_TIME
|
.IP CURLINFO_CONNECT_TIME
|
||||||
Pass a pointer to a double to receive the time, in seconds, it took from the
|
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||||
start until the connect to the remote host (or proxy) was completed.
|
start until the connect to the remote host (or proxy) was completed.
|
||||||
|
.IP CURLINFO_APPCONNECT_TIME
|
||||||
|
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||||
|
start until the SSL/SSH connect/handshake to the remote host was completed.
|
||||||
|
This time is most often very near to the PRETRANSFER time, except for cases
|
||||||
|
such as HTTP pippelining where the pretransfer time can be delayed due to
|
||||||
|
waits in line for the pipeline and more. (Added in 7.19.0)
|
||||||
.IP CURLINFO_PRETRANSFER_TIME
|
.IP CURLINFO_PRETRANSFER_TIME
|
||||||
Pass a pointer to a double to receive the time, in seconds, it took from the
|
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||||
start until the file transfer is just about to begin. This includes all
|
start until the file transfer is just about to begin. This includes all
|
||||||
@@ -159,6 +165,12 @@ counted). Combined with \fICURLINFO_REDIRECT_COUNT\fP you are able to know
|
|||||||
how many times libcurl successfully reused existing connection(s) or not. See
|
how many times libcurl successfully reused existing connection(s) or not. See
|
||||||
the Connection Options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries
|
the Connection Options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries
|
||||||
to make persistent connections to save time. (Added in 7.12.3)
|
to make persistent connections to save time. (Added in 7.12.3)
|
||||||
|
.IP CURLINFO_PRIMARY_IP
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to a zero-terminated
|
||||||
|
string holding the IP address of the most recent connection done with this
|
||||||
|
\fBcurl\fP handle. This string may be IPv6 if that's enabled. Note that you
|
||||||
|
get a pointer to a memory area that will be re-used at next request so you
|
||||||
|
need to copy the string if you want to keep the information. (Added in 7.19.0)
|
||||||
.IP CURLINFO_COOKIELIST
|
.IP CURLINFO_COOKIELIST
|
||||||
Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
|
Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all
|
||||||
cookies cURL knows (expired ones, too). Don't forget to
|
cookies cURL knows (expired ones, too). Don't forget to
|
||||||
@@ -184,29 +196,33 @@ An overview of the six time values available from curl_easy_getinfo()
|
|||||||
|
|
||||||
curl_easy_perform()
|
curl_easy_perform()
|
||||||
|
|
|
|
||||||
|--NT
|
|--NAMELOOKUP
|
||||||
|--|--CT
|
|--|--CONNECT
|
||||||
|--|--|--PT
|
|--|--|--APPCONNECT
|
||||||
|--|--|--|--ST
|
|--|--|--|--PRETRANSFER
|
||||||
|--|--|--|--|--TT
|
|--|--|--|--|--STARTTRANSFER
|
||||||
|--|--|--|--|--RT
|
|--|--|--|--|--|--TOTAL
|
||||||
|
|--|--|--|--|--|--REDIRECT
|
||||||
.FI
|
.FI
|
||||||
.IP NT
|
.IP NAMELOOKUP
|
||||||
\fICURLINFO_NAMELOOKUP_TIME\fP. The time it took from the start until the name
|
\fICURLINFO_NAMELOOKUP_TIME\fP. The time it took from the start until the name
|
||||||
resolving was completed.
|
resolving was completed.
|
||||||
.IP CT
|
.IP CONNECT
|
||||||
\fICURLINFO_CONNECT_TIME\fP. The time it took from the start until the connect
|
\fICURLINFO_CONNECT_TIME\fP. The time it took from the start until the connect
|
||||||
to the remote host (or proxy) was completed.
|
to the remote host (or proxy) was completed.
|
||||||
.IP PT
|
.IP APPCONNECT
|
||||||
|
\fICURLINFO_APPCONNECT_TIME\fP. The time it took from the start until the SSL
|
||||||
|
connect/handshake with the remote host was completed. (Added in in 7.19.0)
|
||||||
|
.IP PRETRANSFER
|
||||||
\fICURLINFO_PRETRANSFER_TIME\fP. The time it took from the start until the
|
\fICURLINFO_PRETRANSFER_TIME\fP. The time it took from the start until the
|
||||||
file transfer is just about to begin. This includes all pre-transfer commands
|
file transfer is just about to begin. This includes all pre-transfer commands
|
||||||
and negotiations that are specific to the particular protocol(s) involved.
|
and negotiations that are specific to the particular protocol(s) involved.
|
||||||
.IP ST
|
.IP STARTTRANSFER
|
||||||
\fICURLINFO_STARTTRANSFER_TIME\fP. The time it took from the start until the
|
\fICURLINFO_STARTTRANSFER_TIME\fP. The time it took from the start until the
|
||||||
first byte is just about to be transferred.
|
first byte is just about to be transferred.
|
||||||
.IP TT
|
.IP TOTAL
|
||||||
\fICURLINFO_TOTAL_TIME\fP. Total time of the previous request.
|
\fICURLINFO_TOTAL_TIME\fP. Total time of the previous request.
|
||||||
.IP RT
|
.IP REDIRECT
|
||||||
\fICURLINFO_REDIRECT_TIME\fP. The time it took for all redirection steps
|
\fICURLINFO_REDIRECT_TIME\fP. The time it took for all redirection steps
|
||||||
include name lookup, connect, pretransfer and transfer before final
|
include name lookup, connect, pretransfer and transfer before final
|
||||||
transaction was started. So, this is zero if no redirection took place.
|
transaction was started. So, this is zero if no redirection took place.
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
.\" * $Id$
|
.\" * $Id$
|
||||||
.\" **************************************************************************
|
.\" **************************************************************************
|
||||||
.\"
|
.\"
|
||||||
.TH curl_easy_setopt 3 "5 Jan 2008" "libcurl 7.18.0" "libcurl Manual"
|
.TH curl_easy_setopt 3 "30 Jul 2008" "libcurl 7.19.0" "libcurl Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
curl_easy_setopt \- set options for a curl easy handle
|
curl_easy_setopt \- set options for a curl easy handle
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
@@ -56,7 +56,7 @@ The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
|
|||||||
\fIcurl_easy_duphandle(3)\fP call.
|
\fIcurl_easy_duphandle(3)\fP call.
|
||||||
.SH BEHAVIOR OPTIONS
|
.SH BEHAVIOR OPTIONS
|
||||||
.IP CURLOPT_VERBOSE
|
.IP CURLOPT_VERBOSE
|
||||||
Set the parameter to non-zero to get the library to display a lot of verbose
|
Set the parameter to 1 to get the library to display a lot of verbose
|
||||||
information about its operations. Very useful for libcurl and/or protocol
|
information about its operations. Very useful for libcurl and/or protocol
|
||||||
debugging and understanding. The verbose information will be sent to stderr,
|
debugging and understanding. The verbose information will be sent to stderr,
|
||||||
or the stream set with \fICURLOPT_STDERR\fP.
|
or the stream set with \fICURLOPT_STDERR\fP.
|
||||||
@@ -65,17 +65,17 @@ You hardly ever want this set in production use, you will almost always want
|
|||||||
this when you debug/report problems. Another neat option for debugging is the
|
this when you debug/report problems. Another neat option for debugging is the
|
||||||
\fICURLOPT_DEBUGFUNCTION\fP.
|
\fICURLOPT_DEBUGFUNCTION\fP.
|
||||||
.IP CURLOPT_HEADER
|
.IP CURLOPT_HEADER
|
||||||
A non-zero parameter tells the library to include the header in the body
|
A parameter set to 1 tells the library to include the header in the body
|
||||||
output. This is only relevant for protocols that actually have headers
|
output. This is only relevant for protocols that actually have headers
|
||||||
preceding the data (like HTTP).
|
preceding the data (like HTTP).
|
||||||
.IP CURLOPT_NOPROGRESS
|
.IP CURLOPT_NOPROGRESS
|
||||||
A non-zero parameter tells the library to shut off the built-in progress meter
|
A parameter set to 1 tells the library to shut off the built-in progress meter
|
||||||
completely.
|
completely.
|
||||||
|
|
||||||
Future versions of libcurl is likely to not have any built-in progress meter
|
Future versions of libcurl is likely to not have any built-in progress meter
|
||||||
at all.
|
at all.
|
||||||
.IP CURLOPT_NOSIGNAL
|
.IP CURLOPT_NOSIGNAL
|
||||||
Pass a long. If it is non-zero, libcurl will not use any functions that
|
Pass a long. If it is 1, libcurl will not use any functions that
|
||||||
install signal handlers or any functions that cause signals to be sent to the
|
install signal handlers or any functions that cause signals to be sent to the
|
||||||
process. This option is mainly here to allow multi-threaded unix applications
|
process. This option is mainly here to allow multi-threaded unix applications
|
||||||
to still set/use all timeout options etc, without risking getting signals.
|
to still set/use all timeout options etc, without risking getting signals.
|
||||||
@@ -188,7 +188,7 @@ rewind a stream when doing a HTTP PUT or POST with a multi-pass authentication
|
|||||||
method. The function shall work like "fseek" or "lseek" and accepted SEEK_SET,
|
method. The function shall work like "fseek" or "lseek" and accepted SEEK_SET,
|
||||||
SEEK_CUR and SEEK_END as argument for origin, although (in 7.18.0) libcurl
|
SEEK_CUR and SEEK_END as argument for origin, although (in 7.18.0) libcurl
|
||||||
only passes SEEK_SET. The callback must return 0 on success as returning
|
only passes SEEK_SET. The callback must return 0 on success as returning
|
||||||
non-zero will cause the upload operation to fail.
|
something else will cause the upload operation to fail.
|
||||||
|
|
||||||
If you forward the input arguments directly to "fseek" or "lseek", note that
|
If you forward the input arguments directly to "fseek" or "lseek", note that
|
||||||
the data type for \fIoffset\fP is not the same as defined for curl_off_t on
|
the data type for \fIoffset\fP is not the same as defined for curl_off_t on
|
||||||
@@ -251,7 +251,7 @@ If you transfer data with the multi interface, this function will not be
|
|||||||
called during periods of idleness unless you call the appropriate libcurl
|
called during periods of idleness unless you call the appropriate libcurl
|
||||||
function that performs transfers.
|
function that performs transfers.
|
||||||
|
|
||||||
\fICURLOPT_NOPROGRESS\fP must be set to FALSE to make this function actually
|
\fICURLOPT_NOPROGRESS\fP must be set to 0 to make this function actually
|
||||||
get called.
|
get called.
|
||||||
.IP CURLOPT_PROGRESSDATA
|
.IP CURLOPT_PROGRESSDATA
|
||||||
Pass a pointer that will be untouched by libcurl and passed as the first
|
Pass a pointer that will be untouched by libcurl and passed as the first
|
||||||
@@ -410,7 +410,7 @@ touched. Do not rely on the contents in those cases.
|
|||||||
Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
|
Pass a FILE * as parameter. Tell libcurl to use this stream instead of stderr
|
||||||
when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
|
when showing the progress meter and displaying \fICURLOPT_VERBOSE\fP data.
|
||||||
.IP CURLOPT_FAILONERROR
|
.IP CURLOPT_FAILONERROR
|
||||||
A non-zero parameter tells the library to fail silently if the HTTP code
|
A parameter set to 1 tells the library to fail silently if the HTTP code
|
||||||
returned is equal to or larger than 400. The default action would be to return
|
returned is equal to or larger than 400. The default action would be to return
|
||||||
the page normally, ignoring that code.
|
the page normally, ignoring that code.
|
||||||
|
|
||||||
@@ -473,12 +473,12 @@ this are \fICURLPROXY_HTTP\fP, \fICURLPROXY_SOCKS4\fP (added in 7.15.2),
|
|||||||
\fICURLPROXY_SOCKS5_HOSTNAME\fP (added in 7.18.0). The HTTP type is
|
\fICURLPROXY_SOCKS5_HOSTNAME\fP (added in 7.18.0). The HTTP type is
|
||||||
default. (Added in 7.10)
|
default. (Added in 7.10)
|
||||||
.IP CURLOPT_HTTPPROXYTUNNEL
|
.IP CURLOPT_HTTPPROXYTUNNEL
|
||||||
Set the parameter to non-zero to get the library to tunnel all operations
|
Set the parameter to 1 to make the library tunnel all operations through a
|
||||||
through a given HTTP proxy. There is a big difference between using a proxy
|
given HTTP proxy. There is a big difference between using a proxy and to
|
||||||
and to tunnel through it. If you don't know what this means, you probably
|
tunnel through it. If you don't know what this means, you probably don't want
|
||||||
don't want this tunneling option.
|
this tunneling option.
|
||||||
.IP CURLOPT_SOCKS5_RESOLVE_LOCAL
|
.IP CURLOPT_SOCKS5_RESOLVE_LOCAL
|
||||||
Set the parameter to 1 to get the library to resolve the host name locally
|
Set the parameter to 1 to make the library to resolve the host name locally
|
||||||
instead of passing it to the proxy to resolve, when using a SOCKS5 proxy.
|
instead of passing it to the proxy to resolve, when using a SOCKS5 proxy.
|
||||||
|
|
||||||
Note that libcurl before 7.18.0 always resolved the host name locally even
|
Note that libcurl before 7.18.0 always resolved the host name locally even
|
||||||
@@ -495,18 +495,24 @@ set. Note that port numbers are only valid 1 - 65535. (Added in 7.15.2)
|
|||||||
.IP CURLOPT_LOCALPORTRANGE
|
.IP CURLOPT_LOCALPORTRANGE
|
||||||
Pass a long. This is the number of attempts libcurl should do to find a
|
Pass a long. This is the number of attempts libcurl should do to find a
|
||||||
working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
|
working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP
|
||||||
and adds one to the number for each retry. Setting this value to 1 or below
|
and adds one to the number for each retry. Setting this to 1 or below will
|
||||||
will make libcurl do only one try for exact port number. Note that port
|
make libcurl do only one try for the exact port number. Note that port numbers
|
||||||
numbers by nature is a scarce resource that will be busy at times so setting
|
by nature are scarce resources that will be busy at times so setting this
|
||||||
this value to something too low might cause unnecessary connection setup
|
value to something too low might cause unnecessary connection setup
|
||||||
failures. (Added in 7.15.2)
|
failures. (Added in 7.15.2)
|
||||||
.IP CURLOPT_DNS_CACHE_TIMEOUT
|
.IP CURLOPT_DNS_CACHE_TIMEOUT
|
||||||
Pass a long, this sets the timeout in seconds. Name resolves will be kept in
|
Pass a long, this sets the timeout in seconds. Name resolves will be kept in
|
||||||
memory for this number of seconds. Set to zero (0) to completely disable
|
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,
|
caching, or set to -1 to make the cached entries remain forever. By default,
|
||||||
libcurl caches this info for 60 seconds.
|
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 (by for example 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.
|
||||||
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
|
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
|
||||||
Pass a long. If the value is non-zero, it tells curl to use a global DNS cache
|
Pass a long. If the value is 1, it tells curl to use a global DNS cache
|
||||||
that will survive between easy handle creations and deletions. This is not
|
that will survive between easy handle creations and deletions. This is not
|
||||||
thread-safe and this will use a global variable.
|
thread-safe and this will use a global variable.
|
||||||
|
|
||||||
@@ -541,6 +547,9 @@ notably telnet or rlogin) small segments may need to be sent
|
|||||||
without delay. This is less efficient than sending larger amounts of
|
without delay. This is less efficient than sending larger amounts of
|
||||||
data at a time, and can contribute to congestion on the network if
|
data at a time, and can contribute to congestion on the network if
|
||||||
overdone.
|
overdone.
|
||||||
|
.IP CURLOPT_ADDRESS_SCOPE
|
||||||
|
Pass a long specifying the scope_id value to use when connecting to IPv6
|
||||||
|
link-local or site-local addresses.
|
||||||
.SH NAMES and PASSWORDS OPTIONS (Authentication)
|
.SH NAMES and PASSWORDS OPTIONS (Authentication)
|
||||||
.IP CURLOPT_NETRC
|
.IP CURLOPT_NETRC
|
||||||
This parameter controls the preference of libcurl between using user names and
|
This parameter controls the preference of libcurl between using user names and
|
||||||
@@ -554,11 +563,11 @@ parameter.
|
|||||||
Pass a long, set to one of the values described below.
|
Pass a long, set to one of the values described below.
|
||||||
.RS
|
.RS
|
||||||
.IP CURL_NETRC_OPTIONAL
|
.IP CURL_NETRC_OPTIONAL
|
||||||
The use of your \fI~/.netrc\fP file is optional,
|
The use of your \fI~/.netrc\fP file is optional, and information in the URL is
|
||||||
and information in the URL is to be preferred. The file will be scanned
|
to be preferred. The file will be scanned with the host and user name (to
|
||||||
with the host and user name (to find the password only) or with the host only,
|
find the password only) or with the host only, to find the first user name and
|
||||||
to find the first user name and password after that \fImachine\fP,
|
password after that \fImachine\fP, which ever information is not specified in
|
||||||
which ever information is not specified in the URL.
|
the URL.
|
||||||
|
|
||||||
Undefined values of the option will have this effect.
|
Undefined values of the option will have this effect.
|
||||||
.IP CURL_NETRC_IGNORED
|
.IP CURL_NETRC_IGNORED
|
||||||
@@ -566,9 +575,8 @@ The library will ignore the file and use only the information in the URL.
|
|||||||
|
|
||||||
This is the default.
|
This is the default.
|
||||||
.IP CURL_NETRC_REQUIRED
|
.IP CURL_NETRC_REQUIRED
|
||||||
This value tells the library that use of the file is required,
|
This value tells the library that use of the file is required, to ignore the
|
||||||
to ignore the information in the URL,
|
information in the URL, and to search the file with the host only.
|
||||||
and to search the file with the host only.
|
|
||||||
.RE
|
.RE
|
||||||
Only machine name, user name and password are taken into account
|
Only machine name, user name and password are taken into account
|
||||||
(init macros and similar things aren't supported).
|
(init macros and similar things aren't supported).
|
||||||
@@ -579,7 +587,7 @@ standard Unix ftp client does). It should only be readable by user.
|
|||||||
Pass a char * as parameter, pointing to a zero terminated string containing
|
Pass a char * as parameter, pointing to a zero terminated string containing
|
||||||
the full path name to the file you want libcurl to use as .netrc file. If this
|
the full path name to the file you want libcurl to use as .netrc file. If this
|
||||||
option is omitted, and \fICURLOPT_NETRC\fP is set, libcurl will attempt to
|
option is omitted, and \fICURLOPT_NETRC\fP is set, libcurl will attempt to
|
||||||
find the a .netrc file in the current user's home directory. (Added in 7.10.9)
|
find a .netrc file in the current user's home directory. (Added in 7.10.9)
|
||||||
.IP CURLOPT_USERPWD
|
.IP CURLOPT_USERPWD
|
||||||
Pass a char * as parameter, which should be [user name]:[password] to use for
|
Pass a char * as parameter, which should be [user name]:[password] to use for
|
||||||
the connection. Use \fICURLOPT_HTTPAUTH\fP to decide authentication method.
|
the connection. Use \fICURLOPT_HTTPAUTH\fP to decide authentication method.
|
||||||
@@ -653,24 +661,23 @@ bitmask can be constructed by or'ing together the bits listed above for the
|
|||||||
work. (Added in 7.10.7)
|
work. (Added in 7.10.7)
|
||||||
.SH HTTP OPTIONS
|
.SH HTTP OPTIONS
|
||||||
.IP CURLOPT_AUTOREFERER
|
.IP CURLOPT_AUTOREFERER
|
||||||
Pass a non-zero parameter to enable this. When enabled, libcurl will
|
Pass a parameter set to 1 to enable this. When enabled, libcurl will
|
||||||
automatically set the Referer: field in requests where it follows a Location:
|
automatically set the Referer: field in requests where it follows a Location:
|
||||||
redirect.
|
redirect.
|
||||||
.IP CURLOPT_ENCODING
|
.IP CURLOPT_ENCODING
|
||||||
Sets the contents of the Accept-Encoding: header sent in an HTTP
|
Sets the contents of the Accept-Encoding: header sent in an HTTP request, and
|
||||||
request, and enables decoding of a response when a Content-Encoding:
|
enables decoding of a response when a Content-Encoding: header is received.
|
||||||
header is received. Three encodings are supported: \fIidentity\fP,
|
Three encodings are supported: \fIidentity\fP, which does nothing,
|
||||||
which does nothing, \fIdeflate\fP which requests the server to
|
\fIdeflate\fP which requests the server to compress its response using the
|
||||||
compress its response using the zlib algorithm, and \fIgzip\fP which
|
zlib algorithm, and \fIgzip\fP which requests the gzip algorithm. If a
|
||||||
requests the gzip algorithm. If a zero-length string is set, then an
|
zero-length string is set, then an Accept-Encoding: header containing all
|
||||||
Accept-Encoding: header containing all supported encodings is sent.
|
supported encodings is sent.
|
||||||
|
|
||||||
This is a request, not an order; the server may or may not do it. This
|
This is a request, not an order; the server may or may not do it. This option
|
||||||
option must be set (to any non-NULL value) or else any unsolicited
|
must be set (to any non-NULL value) or else any unsolicited encoding done by
|
||||||
encoding done by the server is ignored. See the special file
|
the server is ignored. See the special file lib/README.encoding for details.
|
||||||
lib/README.encoding for details.
|
|
||||||
.IP CURLOPT_FOLLOWLOCATION
|
.IP CURLOPT_FOLLOWLOCATION
|
||||||
A non-zero parameter tells the library to follow any Location: header that the
|
A parameter set to 1 tells the library to follow any Location: header that the
|
||||||
server sends as part of an HTTP header.
|
server sends as part of an HTTP header.
|
||||||
|
|
||||||
This means that the library will re-send the same request on the new location
|
This means that the library will re-send the same request on the new location
|
||||||
@@ -678,7 +685,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
|
returned. \fICURLOPT_MAXREDIRS\fP can be used to limit the number of redirects
|
||||||
libcurl will follow.
|
libcurl will follow.
|
||||||
.IP CURLOPT_UNRESTRICTED_AUTH
|
.IP CURLOPT_UNRESTRICTED_AUTH
|
||||||
A non-zero parameter tells the library it can continue to send authentication
|
A parameter set to 1 tells the library it can continue to send authentication
|
||||||
(user+password) when following locations, even when hostname changed. This
|
(user+password) when following locations, even when hostname changed. This
|
||||||
option is meaningful only when setting \fICURLOPT_FOLLOWLOCATION\fP.
|
option is meaningful only when setting \fICURLOPT_FOLLOWLOCATION\fP.
|
||||||
.IP CURLOPT_MAXREDIRS
|
.IP CURLOPT_MAXREDIRS
|
||||||
@@ -689,21 +696,21 @@ redirections have been followed, the next redirect will cause an error
|
|||||||
Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for
|
Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for
|
||||||
an infinite number of redirects (which is the default)
|
an infinite number of redirects (which is the default)
|
||||||
.IP CURLOPT_POST301
|
.IP CURLOPT_POST301
|
||||||
A non-zero parameter tells the library to respect RFC 2616/10.3.2 and not
|
A parameter set to 1 tells the library to respect RFC 2616/10.3.2 and not
|
||||||
convert POST requests into GET requests when following a 301 redirection. The
|
convert POST requests into GET requests when following a 301 redirection. The
|
||||||
non-RFC behaviour is ubiquitous in web browsers, so the library does the
|
non-RFC behaviour is ubiquitous in web browsers, so the library does the
|
||||||
conversion by default to maintain consistency. However, a server may requires
|
conversion by default to maintain consistency. However, a server may requires
|
||||||
a POST to remain a POST after such a redirection. This option is meaningful
|
a POST to remain a POST after such a redirection. This option is meaningful
|
||||||
only when setting \fICURLOPT_FOLLOWLOCATION\fP. (Added in 7.17.1)
|
only when setting \fICURLOPT_FOLLOWLOCATION\fP. (Added in 7.17.1)
|
||||||
.IP CURLOPT_PUT
|
.IP CURLOPT_PUT
|
||||||
A non-zero parameter tells the library to use HTTP PUT to transfer data. The
|
A parameter set to 1 tells the library to use HTTP PUT to transfer data. The
|
||||||
data should be set with \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP.
|
data should be set with \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP.
|
||||||
|
|
||||||
This option is deprecated and starting with version 7.12.1 you should instead
|
This option is deprecated and starting with version 7.12.1 you should instead
|
||||||
use \fICURLOPT_UPLOAD\fP.
|
use \fICURLOPT_UPLOAD\fP.
|
||||||
.IP CURLOPT_POST
|
.IP CURLOPT_POST
|
||||||
A non-zero parameter tells the library to do a regular HTTP post. This will
|
A parameter set to 1 tells the library to do a regular HTTP post. This will
|
||||||
also make the library use the a "Content-Type:
|
also make the library use a "Content-Type:
|
||||||
application/x-www-form-urlencoded" header. (This is by far the most commonly
|
application/x-www-form-urlencoded" header. (This is by far the most commonly
|
||||||
used POST method).
|
used POST method).
|
||||||
|
|
||||||
@@ -732,7 +739,7 @@ adding a header like "Transfer-Encoding: chunked" with
|
|||||||
\fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
|
\fICURLOPT_HTTPHEADER\fP. With HTTP 1.0 or without chunked transfer, you must
|
||||||
specify the size in the request.
|
specify the size in the request.
|
||||||
|
|
||||||
When setting \fICURLOPT_POST\fP to a non-zero value, it will automatically set
|
When setting \fICURLOPT_POST\fP to 1, it will automatically set
|
||||||
\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
|
\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
|
||||||
|
|
||||||
If you issue a POST request and then want to make a HEAD or GET using the same
|
If you issue a POST request and then want to make a HEAD or GET using the same
|
||||||
@@ -894,12 +901,12 @@ error for this. Using \fICURLOPT_VERBOSE\fP or \fICURLOPT_DEBUGFUNCTION\fP
|
|||||||
will get a warning to display, but that is the only visible feedback you get
|
will get a warning to display, but that is the only visible feedback you get
|
||||||
about this possibly lethal situation.
|
about this possibly lethal situation.
|
||||||
.IP CURLOPT_COOKIESESSION
|
.IP CURLOPT_COOKIESESSION
|
||||||
Pass a long set to non-zero to mark this as a new cookie "session". It will
|
Pass a long set to 1 to mark this as a new cookie "session". It will force
|
||||||
force libcurl to ignore all cookies it is about to load that are "session
|
libcurl to ignore all cookies it is about to load that are "session cookies"
|
||||||
cookies" from the previous session. By default, libcurl always stores and
|
from the previous session. By default, libcurl always stores and loads all
|
||||||
loads all cookies, independent if they are session cookies are not. Session
|
cookies, independent if they are session cookies are not. Session cookies are
|
||||||
cookies are cookies without expiry date and they are meant to be alive and
|
cookies without expiry date and they are meant to be alive and existing for
|
||||||
existing for this "session" only.
|
this "session" only.
|
||||||
.IP CURLOPT_COOKIELIST
|
.IP CURLOPT_COOKIELIST
|
||||||
Pass a char * to a cookie string. Cookie can be either in Netscape / Mozilla
|
Pass a char * to a cookie string. Cookie can be either in Netscape / Mozilla
|
||||||
format or just regular HTTP-style header (Set-Cookie: ...) format. If cURL
|
format or just regular HTTP-style header (Set-Cookie: ...) format. If cURL
|
||||||
@@ -910,12 +917,12 @@ by cURL. (Added in 7.15.4) Passing the special string \&"FLUSH" will write
|
|||||||
all cookies known by cURL to the file specified by \fICURLOPT_COOKIEJAR\fP.
|
all cookies known by cURL to the file specified by \fICURLOPT_COOKIEJAR\fP.
|
||||||
(Added in 7.17.1)
|
(Added in 7.17.1)
|
||||||
.IP CURLOPT_HTTPGET
|
.IP CURLOPT_HTTPGET
|
||||||
Pass a long. If the long is non-zero, this forces the HTTP request to get back
|
Pass a long. If the long is 1, this forces the HTTP request to get back
|
||||||
to GET. usable if a POST, HEAD, PUT or a custom request have been used
|
to GET. usable if a POST, HEAD, PUT or a custom request have been used
|
||||||
previously using the same curl handle.
|
previously using the same curl handle.
|
||||||
|
|
||||||
When setting \fICURLOPT_HTTPGET\fP to a non-zero value, it will automatically
|
When setting \fICURLOPT_HTTPGET\fP to 1, it will automatically set
|
||||||
set \fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
|
\fICURLOPT_NOBODY\fP to 0 (since 7.14.1).
|
||||||
.IP CURLOPT_HTTP_VERSION
|
.IP CURLOPT_HTTP_VERSION
|
||||||
Pass a long, set to one of the values described below. They force libcurl to
|
Pass a long, set to one of the values described below. They force libcurl to
|
||||||
use the specific HTTP versions. This is not sensible to do unless you have a
|
use the specific HTTP versions. This is not sensible to do unless you have a
|
||||||
@@ -965,8 +972,12 @@ properly filled in with text strings. Use \fIcurl_slist_append(3)\fP
|
|||||||
to append strings (commands) to the list, and clear the entire list
|
to append strings (commands) to the list, and clear the entire list
|
||||||
afterwards with \fIcurl_slist_free_all(3)\fP. Disable this operation
|
afterwards with \fIcurl_slist_free_all(3)\fP. Disable this operation
|
||||||
again by setting a NULL to this option.
|
again by setting a NULL to this option.
|
||||||
|
The set of valid FTP commands depends on the server (see RFC959 for a
|
||||||
|
list of mandatory commands).
|
||||||
The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd,
|
The valid SFTP commands are: chgrp, chmod, chown, ln, mkdir, pwd,
|
||||||
rename, rm, rmdir, symlink. (SFTP support added in 7.16.3)
|
rename, rm, rmdir, symlink (see
|
||||||
|
.BR curl (1))
|
||||||
|
(SFTP support added in 7.16.3)
|
||||||
.IP CURLOPT_POSTQUOTE
|
.IP CURLOPT_POSTQUOTE
|
||||||
Pass a pointer to a linked list of FTP or SFTP commands to pass to the
|
Pass a pointer to a linked list of FTP or SFTP commands to pass to the
|
||||||
server after your ftp transfer request. The linked list should be a
|
server after your ftp transfer request. The linked list should be a
|
||||||
@@ -978,10 +989,10 @@ Pass a pointer to a linked list of FTP commands to pass to the server after
|
|||||||
the transfer type is set. The linked list should be a fully valid list of
|
the transfer type is set. The linked list should be a fully valid list of
|
||||||
struct curl_slist structs properly filled in as described for
|
struct curl_slist structs properly filled in as described for
|
||||||
\fICURLOPT_QUOTE\fP. Disable this operation again by setting a NULL to this
|
\fICURLOPT_QUOTE\fP. Disable this operation again by setting a NULL to this
|
||||||
option. Before version 7.15.6, if you also set \fICURLOPT_NOBODY\fP non-zero,
|
option. Before version 7.15.6, if you also set \fICURLOPT_NOBODY\fP to 1, this
|
||||||
this option didn't work.
|
option didn't work.
|
||||||
.IP CURLOPT_DIRLISTONLY
|
.IP CURLOPT_DIRLISTONLY
|
||||||
A non-zero parameter tells the library to just list the names of files in a
|
A parameter set to 1 tells the library to just list the names of files in a
|
||||||
directory, instead of doing a full directory listing that would include file
|
directory, instead of doing a full directory listing that would include file
|
||||||
sizes, dates etc. This works for FTP and SFTP URLs.
|
sizes, dates etc. This works for FTP and SFTP URLs.
|
||||||
|
|
||||||
@@ -991,27 +1002,27 @@ might not include subdirectories and symbolic links.
|
|||||||
|
|
||||||
(This option was known as CURLOPT_FTPLISTONLY up to 7.16.4)
|
(This option was known as CURLOPT_FTPLISTONLY up to 7.16.4)
|
||||||
.IP CURLOPT_APPEND
|
.IP CURLOPT_APPEND
|
||||||
A non-zero parameter tells the library to append to the remote file instead of
|
A parameter set to 1 tells the library to append to the remote file instead of
|
||||||
overwrite it. This is only useful when uploading to an ftp site.
|
overwrite it. This is only useful when uploading to an ftp site.
|
||||||
|
|
||||||
(This option was known as CURLOPT_FTPAPPEND up to 7.16.4)
|
(This option was known as CURLOPT_FTPAPPEND up to 7.16.4)
|
||||||
.IP CURLOPT_FTP_USE_EPRT
|
.IP CURLOPT_FTP_USE_EPRT
|
||||||
Pass a long. If the value is non-zero, it tells curl to use the EPRT (and
|
Pass a long. If the value is 1, it tells curl to use the EPRT (and
|
||||||
LPRT) command when doing active FTP downloads (which is enabled by
|
LPRT) command when doing active FTP downloads (which is enabled by
|
||||||
\fICURLOPT_FTPPORT\fP). Using EPRT means that it will first attempt to use
|
\fICURLOPT_FTPPORT\fP). Using EPRT means that it will first attempt to use
|
||||||
EPRT and then LPRT before using PORT, but if you pass FALSE (zero) to this
|
EPRT and then LPRT before using PORT, but if you pass zero to this
|
||||||
option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
|
option, it will not try using EPRT or LPRT, only plain PORT. (Added in 7.10.5)
|
||||||
|
|
||||||
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
|
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
|
||||||
.IP CURLOPT_FTP_USE_EPSV
|
.IP CURLOPT_FTP_USE_EPSV
|
||||||
Pass a long. If the value is non-zero, it tells curl to use the EPSV command
|
Pass a long. If the value is 1, it tells curl to use the EPSV command
|
||||||
when doing passive FTP downloads (which it always does by default). Using EPSV
|
when doing passive FTP downloads (which it always does by default). Using EPSV
|
||||||
means that it will first attempt to use EPSV before using PASV, but if you
|
means that it will first attempt to use EPSV before using PASV, but if you
|
||||||
pass FALSE (zero) to this option, it will not try using EPSV, only plain PASV.
|
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.
|
If the server is an IPv6 host, this option will have no effect as of 7.12.3.
|
||||||
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
|
.IP CURLOPT_FTP_CREATE_MISSING_DIRS
|
||||||
Pass a long. If the value is non-zero, curl will attempt to create any remote
|
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
|
directory that it fails to CWD into. CWD is the command that changes working
|
||||||
directory. (Added in 7.10.7)
|
directory. (Added in 7.10.7)
|
||||||
|
|
||||||
@@ -1034,11 +1045,11 @@ fails. This is currently only known to be required when connecting to
|
|||||||
Tumbleweed's Secure Transport FTPS server using client certificates for
|
Tumbleweed's Secure Transport FTPS server using client certificates for
|
||||||
authentication. (Added in 7.15.5)
|
authentication. (Added in 7.15.5)
|
||||||
.IP CURLOPT_FTP_SKIP_PASV_IP
|
.IP CURLOPT_FTP_SKIP_PASV_IP
|
||||||
Pass a long. If set to a non-zero value, it instructs libcurl to not use the
|
Pass a long. If set to 1, it instructs libcurl to not use the IP address the
|
||||||
IP address the server suggests in its 227-response to libcurl's PASV command
|
server suggests in its 227-response to libcurl's PASV command when libcurl
|
||||||
when libcurl connects the data connection. Instead libcurl will re-use the
|
connects the data connection. Instead libcurl will re-use the same IP address
|
||||||
same IP address it already uses for the control connection. But it will use
|
it already uses for the control connection. But it will use the port number
|
||||||
the port number from the 227-response. (Added in 7.14.2)
|
from the 227-response. (Added in 7.14.2)
|
||||||
|
|
||||||
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
|
This option has no effect if PORT, EPRT or EPSV is used instead of PASV.
|
||||||
.IP CURLOPT_USE_SSL
|
.IP CURLOPT_USE_SSL
|
||||||
@@ -1107,7 +1118,7 @@ compliant than 'nocwd' but without the full penalty of 'multicwd'.
|
|||||||
.RE
|
.RE
|
||||||
.SH PROTOCOL OPTIONS
|
.SH PROTOCOL OPTIONS
|
||||||
.IP CURLOPT_TRANSFERTEXT
|
.IP CURLOPT_TRANSFERTEXT
|
||||||
A non-zero parameter tells the library to use ASCII mode for ftp transfers,
|
A parameter set to 1 tells the library to use ASCII mode for ftp transfers,
|
||||||
instead of the default binary transfer. For win32 systems it does not set the
|
instead of the default binary transfer. For win32 systems it does not set the
|
||||||
stdout to binary mode. This option can be usable when transferring text data
|
stdout to binary mode. This option can be usable when transferring text data
|
||||||
between systems with different views on certain characters, such as newlines
|
between systems with different views on certain characters, such as newlines
|
||||||
@@ -1119,10 +1130,10 @@ simply sets the mode to ascii and performs a standard transfer.
|
|||||||
.IP CURLOPT_PROXY_TRANSFER_MODE
|
.IP CURLOPT_PROXY_TRANSFER_MODE
|
||||||
Pass a long. If the value is set to 1 (one), it tells libcurl to set the
|
Pass a long. If the value is set to 1 (one), it tells libcurl to set the
|
||||||
transfer mode (binary or ASCII) for FTP transfers done via an HTTP proxy, by
|
transfer mode (binary or ASCII) for FTP transfers done via an HTTP proxy, by
|
||||||
appending ;type=a or ;type=i to the URL. Without this setting, or it being
|
appending ;type=a or ;type=i to the URL. Without this setting, or it being set
|
||||||
set to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT\fP has no effect when
|
to 0 (zero, the default), \fICURLOPT_TRANSFERTEXT\fP has no effect when doing
|
||||||
doing FTP via a proxy. Beware that not all proxies support this feature.
|
FTP via a proxy. Beware that not all proxies support this feature. (Added in
|
||||||
(Added in 7.18.0)
|
7.18.0)
|
||||||
.IP CURLOPT_CRLF
|
.IP CURLOPT_CRLF
|
||||||
Convert Unix newlines to CRLF newlines on transfers.
|
Convert Unix newlines to CRLF newlines on transfers.
|
||||||
.IP CURLOPT_RANGE
|
.IP CURLOPT_RANGE
|
||||||
@@ -1167,13 +1178,13 @@ possibly confuse the remote server badly. Use \fICURLOPT_POST\fP and
|
|||||||
replace or extend the set of headers sent by libcurl. Use
|
replace or extend the set of headers sent by libcurl. Use
|
||||||
\fICURLOPT_HTTP_VERSION\fP to change HTTP version.
|
\fICURLOPT_HTTP_VERSION\fP to change HTTP version.
|
||||||
.IP CURLOPT_FILETIME
|
.IP CURLOPT_FILETIME
|
||||||
Pass a long. If it is a non-zero value, libcurl will attempt to get the
|
Pass a long. If it is 1, libcurl will attempt to get the modification date of
|
||||||
modification date of the remote document in this operation. This requires that
|
the remote document in this operation. This requires that the remote server
|
||||||
the remote server sends the time or replies to a time querying command. The
|
sends the time or replies to a time querying command. The
|
||||||
\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
|
\fIcurl_easy_getinfo(3)\fP function with the \fICURLINFO_FILETIME\fP argument
|
||||||
can be used after a transfer to extract the received time (if any).
|
can be used after a transfer to extract the received time (if any).
|
||||||
.IP CURLOPT_NOBODY
|
.IP CURLOPT_NOBODY
|
||||||
A non-zero parameter tells the library to not include the body-part in the
|
A parameter set to 1 tells the library to not include the body-part in the
|
||||||
output. This is only relevant for protocols that have separate header and body
|
output. This is only relevant for protocols that have separate header and body
|
||||||
parts. On HTTP(S) servers, this will make libcurl do a HEAD request.
|
parts. On HTTP(S) servers, this will make libcurl do a HEAD request.
|
||||||
|
|
||||||
@@ -1199,7 +1210,7 @@ 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,
|
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.
|
as that is controlled entirely by what the read callback returns.
|
||||||
.IP CURLOPT_UPLOAD
|
.IP CURLOPT_UPLOAD
|
||||||
A non-zero parameter tells the library to prepare for an upload. The
|
A parameter set to 1 tells the library to prepare for an upload. The
|
||||||
\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
|
\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP or
|
||||||
\fICURLOPT_INFILESIZE_LARGE\fP options are also interesting for uploads. If
|
\fICURLOPT_INFILESIZE_LARGE\fP options are also interesting for uploads. If
|
||||||
the protocol is HTTP, uploading means using the PUT request unless you tell
|
the protocol is HTTP, uploading means using the PUT request unless you tell
|
||||||
@@ -1295,14 +1306,14 @@ the \fICURLMOPT_MAXCONNECTS\fP option.
|
|||||||
.IP CURLOPT_CLOSEPOLICY
|
.IP CURLOPT_CLOSEPOLICY
|
||||||
(Obsolete) This option does nothing.
|
(Obsolete) This option does nothing.
|
||||||
.IP CURLOPT_FRESH_CONNECT
|
.IP CURLOPT_FRESH_CONNECT
|
||||||
Pass a long. Set to non-zero to make the next transfer use a new (fresh)
|
Pass a long. Set to 1 to make the next transfer use a new (fresh) connection
|
||||||
connection by force. If the connection cache is full before this connection,
|
by force. If the connection cache is full before this connection, one of the
|
||||||
one of the existing connections will be closed as according to the selected or
|
existing connections will be closed as according to the selected or default
|
||||||
default policy. This option should be used with caution and only if you
|
policy. This option should be used with caution and only if you understand
|
||||||
understand what it does. Set this to 0 to have libcurl attempt re-using an
|
what it does. Set this to 0 to have libcurl attempt re-using an existing
|
||||||
existing connection (default behavior).
|
connection (default behavior).
|
||||||
.IP CURLOPT_FORBID_REUSE
|
.IP CURLOPT_FORBID_REUSE
|
||||||
Pass a long. Set to non-zero to make the next transfer explicitly close the
|
Pass a long. Set to 1 to make the next transfer explicitly close the
|
||||||
connection when done. Normally, libcurl keep all connections alive when done
|
connection when done. Normally, libcurl keep all connections alive when done
|
||||||
with one transfer in case there comes a succeeding one that can re-use them.
|
with one transfer in case there comes a succeeding one that can re-use them.
|
||||||
This option should be used with caution and only if you understand what it
|
This option should be used with caution and only if you understand what it
|
||||||
@@ -1334,8 +1345,8 @@ Resolve to ipv4 addresses.
|
|||||||
Resolve to ipv6 addresses.
|
Resolve to ipv6 addresses.
|
||||||
.RE
|
.RE
|
||||||
.IP CURLOPT_CONNECT_ONLY
|
.IP CURLOPT_CONNECT_ONLY
|
||||||
Pass a long. A non-zero parameter tells the library to perform any required
|
Pass a long. If the parameter equals 1, it tells the library to perform all
|
||||||
proxy authentication and connection setup, but no data transfer.
|
the required proxy authentication and connection setup, but no data transfer.
|
||||||
|
|
||||||
This option is useful with the \fICURLINFO_LASTSOCKET\fP option to
|
This option is useful with the \fICURLINFO_LASTSOCKET\fP option to
|
||||||
\fIcurl_easy_getinfo(3)\fP. The library can set up the connection and then the
|
\fIcurl_easy_getinfo(3)\fP. The library can set up the connection and then the
|
||||||
@@ -1410,26 +1421,25 @@ Force SSLv3
|
|||||||
.IP CURLOPT_SSL_VERIFYPEER
|
.IP CURLOPT_SSL_VERIFYPEER
|
||||||
Pass a long as parameter.
|
Pass a long as parameter.
|
||||||
|
|
||||||
This option determines whether curl verifies the authenticity of the
|
This option determines whether curl verifies the authenticity of the peer's
|
||||||
peer's certificate. A nonzero value means curl verifies; zero means it
|
certificate. A value of 1 means curl verifies; zero means it doesn't. The
|
||||||
doesn't. The default is nonzero, but before 7.10, it was zero.
|
default is nonzero, but before 7.10, it was zero.
|
||||||
|
|
||||||
When negotiating an SSL connection, the server sends a certificate
|
When negotiating an SSL connection, the server sends a certificate indicating
|
||||||
indicating its identity. Curl verifies whether the certificate is
|
its identity. Curl verifies whether the certificate is authentic, i.e. that
|
||||||
authentic, i.e. that you can trust that the server is who the
|
you can trust that the server is who the certificate says it is. This trust
|
||||||
certificate says it is. This trust is based on a chain of digital
|
is based on a chain of digital signatures, rooted in certification authority
|
||||||
signatures, rooted in certification authority (CA) certificates you
|
(CA) certificates you supply. As of 7.10, curl installs a default bundle of
|
||||||
supply. As of 7.10, curl installs a default bundle of CA certificates
|
CA certificates and you can specify alternate certificates with the
|
||||||
and you can specify alternate certificates with the
|
|
||||||
\fICURLOPT_CAINFO\fP option or the \fICURLOPT_CAPATH\fP option.
|
\fICURLOPT_CAINFO\fP option or the \fICURLOPT_CAPATH\fP option.
|
||||||
|
|
||||||
When \fICURLOPT_SSL_VERIFYPEER\fP is nonzero, and the verification
|
When \fICURLOPT_SSL_VERIFYPEER\fP is nonzero, and the verification fails to
|
||||||
fails to prove that the certificate is authentic, the connection
|
prove that the certificate is authentic, the connection fails. When the
|
||||||
fails. When the option is zero, the connection succeeds regardless.
|
option is zero, the connection succeeds regardless.
|
||||||
|
|
||||||
Authenticating the certificate is not by itself very useful. You
|
Authenticating the certificate is not by itself very useful. You typically
|
||||||
typically want to ensure that the server, as authentically identified
|
want to ensure that the server, as authentically identified by its
|
||||||
by its certificate, is the server you mean to be talking to. Use
|
certificate, is the server you mean to be talking to. Use
|
||||||
\fICURLOPT_SSL_VERIFYHOST\fP to control that.
|
\fICURLOPT_SSL_VERIFYHOST\fP to control that.
|
||||||
.IP CURLOPT_CAINFO
|
.IP CURLOPT_CAINFO
|
||||||
Pass a char * to a zero terminated string naming a file holding one or more
|
Pass a char * to a zero terminated string naming a file holding one or more
|
||||||
@@ -1443,6 +1453,22 @@ bundle is assumed to be stored, as established at build time.
|
|||||||
|
|
||||||
When built against NSS this is the directory that the NSS certificate
|
When built against NSS this is the directory that the NSS certificate
|
||||||
database resides in.
|
database resides in.
|
||||||
|
.IP CURLOPT_ISSUERCERT
|
||||||
|
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 need to enforce 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
|
||||||
|
considered as failure.
|
||||||
|
|
||||||
|
A specific error code (CURLE_SSL_ISSUER_ERROR) is defined with the option,
|
||||||
|
which is returned if the setup of the SSL/TLS session has failed due to a
|
||||||
|
mismatch with the issuer of peer certificate (\fICURLOPT_SSL_VERIFYPEER\fP has
|
||||||
|
to be set too for the check to fail). (Added in 7.19.0)
|
||||||
.IP CURLOPT_CAPATH
|
.IP CURLOPT_CAPATH
|
||||||
Pass a char * to a zero terminated string naming a directory holding multiple
|
Pass a char * to a zero terminated string naming a directory holding multiple
|
||||||
CA certificates to verify the peer with. The certificate directory must be
|
CA certificates to verify the peer with. The certificate directory must be
|
||||||
@@ -1452,6 +1478,24 @@ in combination with the \fICURLOPT_SSL_VERIFYPEER\fP option. If
|
|||||||
indicate an accessible path. The \fICURLOPT_CAPATH\fP function apparently
|
indicate an accessible path. The \fICURLOPT_CAPATH\fP function apparently
|
||||||
does not work in Windows due to some limitation in openssl. This option is
|
does not work in Windows due to some limitation in openssl. This option is
|
||||||
OpenSSL-specific and does nothing if libcurl is built to use GnuTLS.
|
OpenSSL-specific and does nothing if libcurl is built to use GnuTLS.
|
||||||
|
.IP CURLOPT_CRLFILE
|
||||||
|
Pass a char * to a zero terminated string naming a file with the concatenation
|
||||||
|
of CRL (in PEM format) to use in the certificate validation that occurs during
|
||||||
|
the SSL exchange.
|
||||||
|
|
||||||
|
When curl is built to use NSS or GnuTLS, there is no way to influence the use
|
||||||
|
of CRL passed to help in the verification process. When libcurl is built with
|
||||||
|
OpenSSL support, X509_V_FLAG_CRL_CHECK and X509_V_FLAG_CRL_CHECK_ALL are both
|
||||||
|
set, requiring CRL check against all the elements of the certificate chain if
|
||||||
|
a CRL file is passed.
|
||||||
|
|
||||||
|
This option makes sense only when used in combination with the
|
||||||
|
\fICURLOPT_SSL_VERIFYPEER\fP option.
|
||||||
|
|
||||||
|
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)
|
||||||
.IP CURLOPT_RANDOM_FILE
|
.IP CURLOPT_RANDOM_FILE
|
||||||
Pass a char * to a zero terminated file name. The file will be used to read
|
Pass a char * to a zero terminated file name. The file will be used to read
|
||||||
from to seed the random engine for SSL. The more random the specified file is,
|
from to seed the random engine for SSL. The more random the specified file is,
|
||||||
@@ -1531,7 +1575,7 @@ CURLSSH_AUTH_KEYBOARD. Set CURLSSH_AUTH_ANY to let libcurl pick one.
|
|||||||
(Added in 7.16.1)
|
(Added in 7.16.1)
|
||||||
.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
|
.IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5
|
||||||
Pass a char * pointing to a string containing 32 hexadecimal digits. The
|
Pass a char * pointing to a string containing 32 hexadecimal digits. The
|
||||||
string should be the 128 bit MD5 cheksum of the remote host's public key, and
|
string should be the 128 bit MD5 checksum of the remote host's public key, and
|
||||||
libcurl will reject the connection to the host unless the md5sums match. This
|
libcurl will reject the connection to the host unless the md5sums match. This
|
||||||
option is only for SCP and SFTP transfers. (Added in 7.17.1)
|
option is only for SCP and SFTP transfers. (Added in 7.17.1)
|
||||||
.IP CURLOPT_SSH_PUBLIC_KEYFILE
|
.IP CURLOPT_SSH_PUBLIC_KEYFILE
|
||||||
@@ -1590,4 +1634,4 @@ If you try to set an option that libcurl doesn't know about, perhaps because
|
|||||||
the library is too old to support it or the option was removed in a recent
|
the library is too old to support it or the option was removed in a recent
|
||||||
version, this function will return \fICURLE_FAILED_INIT\fP.
|
version, this function will return \fICURLE_FAILED_INIT\fP.
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), "
|
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3)"
|
||||||
|
@@ -128,9 +128,9 @@ you've called \fIcurl_easy_cleanup(3)\fP for the curl handle.
|
|||||||
|
|
||||||
See example below.
|
See example below.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
0 means everything was ok, non-zero means an error occurred as
|
0 means everything was ok, non-zero means an error occurred corresponding
|
||||||
|
to a CURL_FORMADD_* constant defined in
|
||||||
.I <curl/curl.h>
|
.I <curl/curl.h>
|
||||||
defines.
|
|
||||||
.SH EXAMPLE
|
.SH EXAMPLE
|
||||||
.nf
|
.nf
|
||||||
|
|
||||||
|
@@ -10,7 +10,10 @@ curl_multi_socket \- reads/writes available data
|
|||||||
CURLMcode curl_multi_socket_action(CURLM * multi_handle,
|
CURLMcode curl_multi_socket_action(CURLM * multi_handle,
|
||||||
curl_socket_t sockfd, int ev_bitmask,
|
curl_socket_t sockfd, int ev_bitmask,
|
||||||
int *running_handles);
|
int *running_handles);
|
||||||
|
.fi
|
||||||
|
|
||||||
|
.B "Now deprecated versions:"
|
||||||
|
.nf
|
||||||
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
|
CURLMcode curl_multi_socket(CURLM * multi_handle, curl_socket_t sockfd,
|
||||||
int *running_handles);
|
int *running_handles);
|
||||||
|
|
||||||
@@ -20,47 +23,48 @@ CURLMcode curl_multi_socket_all(CURLM *multi_handle,
|
|||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Alternative versions of \fIcurl_multi_perform(3)\fP that allows the
|
Alternative versions of \fIcurl_multi_perform(3)\fP that allows the
|
||||||
application to pass in the file descriptor/socket that has been detected to
|
application to pass in the file descriptor/socket that has been detected to
|
||||||
have \&"action" on it and let libcurl perform. This allows libcurl to not have
|
have \&"action" on it and let libcurl perform. This lets libcurl avoid having
|
||||||
to scan through all possible file descriptors to check for action. When the
|
to scan through all possible file descriptors to check for action.
|
||||||
application has detected action on a socket handled by libcurl, it should call
|
|
||||||
\fIcurl_multi_socket_action(3)\fP with the \fBsockfd\fP argument set to the
|
|
||||||
socket with the action. When the events on a socket are known, they can be
|
|
||||||
passed as an events bitmask \fBev_bitmask\fP by first setting \fBev_bitmask\fP
|
|
||||||
to 0, and then adding using bitwise OR (|) any combination of events to be
|
|
||||||
chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or CURL_CSELECT_ERR. When the
|
|
||||||
events on a socket are unknown, pass 0 instead, and libcurl will test the
|
|
||||||
descriptor internally.
|
|
||||||
|
|
||||||
At return, the int \fBrunning_handles\fP points to will contain the number of
|
When the application has detected action on a socket handled by libcurl, it
|
||||||
still running easy handles within the multi handle. When this number reaches
|
should call \fIcurl_multi_socket_action(3)\fP with the \fBsockfd\fP argument
|
||||||
zero, all transfers are complete/done. Note that when you call
|
set to the socket with the action. When the events on a socket are known, they
|
||||||
|
can be passed as an events bitmask \fBev_bitmask\fP by first setting
|
||||||
|
\fBev_bitmask\fP to 0, and then adding using bitwise OR (|) any combination of
|
||||||
|
events to be chosen from CURL_CSELECT_IN, CURL_CSELECT_OUT or
|
||||||
|
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
|
||||||
\fIcurl_multi_socket_action(3)\fP on a specific socket and the counter
|
\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
|
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
|
is the one that completed. Use \fIcurl_multi_info_read(3)\fP to figure out
|
||||||
which easy handle that completed.
|
which easy handle that completed.
|
||||||
|
|
||||||
The curl_multi_socket functions inform the application about updates in the
|
The \fBcurl_multi_socket_action(3)\fP functions inform the application about
|
||||||
socket (file descriptor) status by doing none, one or multiple calls to the
|
updates in the socket (file descriptor) status by doing none, one or multiple
|
||||||
socket callback function set with the CURLMOPT_SOCKETFUNCTION option to
|
calls to the socket callback function set with the CURLMOPT_SOCKETFUNCTION
|
||||||
\fIcurl_multi_setopt(3)\fP. They update the status with changes since the
|
option to \fIcurl_multi_setopt(3)\fP. They update the status with changes
|
||||||
previous time this function was called.
|
since the previous time the callback was called.
|
||||||
|
|
||||||
|
Get the timeout time by setting the \fICURLMOPT_TIMERFUNCTION\fP option with
|
||||||
|
\fIcurl_multi_setopt(3)\fP. Your application will then get called with
|
||||||
|
information on how long to wait for socket actions at most before doing the
|
||||||
|
timeout action: call the \fBcurl_multi_socket_action(3)\fP function with the
|
||||||
|
\fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT. You can also use the
|
||||||
|
\fIcurl_multi_timeout(3)\fP function to poll the value at any given time, but
|
||||||
|
for an event-based system using the callback is far better than relying on
|
||||||
|
polling the timeout value.
|
||||||
|
|
||||||
|
Usage of \fIcurl_multi_socket(3)\fP is deprecated, whereas the function is
|
||||||
|
equivalent to \fIcurl_multi_socket_action(3)\fP with \fBev_bitmask\fP set to
|
||||||
|
0.
|
||||||
|
|
||||||
Force libcurl to (re-)check all its internal sockets and transfers instead of
|
Force libcurl to (re-)check all its internal sockets and transfers instead of
|
||||||
just a single one by calling \fBcurl_multi_socket_all(3)\fP. Note that there
|
just a single one by calling \fBcurl_multi_socket_all(3)\fP. Note that there
|
||||||
should rarely be reasons to use this function!
|
should not exist any reasons to use this function!
|
||||||
|
|
||||||
Get the timeout time - how long to wait for socket actions at most before
|
|
||||||
doing the timeout action: call the \fBcurl_multi_socket(3)\fP function with
|
|
||||||
the \fBsockfd\fP argument set to CURL_SOCKET_TIMEOUT, by setting the
|
|
||||||
\fICURLMOPT_TIMERFUNCTION\fP option with \fIcurl_multi_setopt(3)\fP. You can
|
|
||||||
also use the \fIcurl_multi_timeout(3)\fP function to poll the value at any
|
|
||||||
given time, but for an event-based system using the callback is far better
|
|
||||||
than relying on polling the timeout value.
|
|
||||||
|
|
||||||
Usage of \fIcurl_multi_socket(3)\fP is deprecated, whereas the function is
|
|
||||||
equivalent to \fIcurl_multi_socket_action(3)\fP, when \fBev_bitmask\fP is set
|
|
||||||
to 0.
|
|
||||||
|
|
||||||
.SH "CALLBACK DETAILS"
|
.SH "CALLBACK DETAILS"
|
||||||
|
|
||||||
The socket \fBcallback\fP function uses a prototype like this
|
The socket \fBcallback\fP function uses a prototype like this
|
||||||
@@ -107,15 +111,19 @@ The \fIuserp\fP argument is a private pointer you have previously set with
|
|||||||
.SH "RETURN VALUE"
|
.SH "RETURN VALUE"
|
||||||
CURLMcode type, general libcurl multi interface error code.
|
CURLMcode type, general libcurl multi interface error code.
|
||||||
|
|
||||||
If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means that you
|
Legacy: If you receive \fICURLM_CALL_MULTI_PERFORM\fP, this basically means
|
||||||
should call \fIcurl_multi_socket(3)\fP again, before you wait for more actions
|
that you should call \fIcurl_multi_socket(3)\fP again, before you wait for
|
||||||
on libcurl's sockets. You don't have to do it immediately, but the return code
|
more actions on libcurl's sockets. You don't have to do it immediately, but
|
||||||
means that libcurl may have more data available to return or that there may be
|
the return code means that libcurl may have more data available to return or
|
||||||
more data to send off before it is "satisfied".
|
that there may be more data to send off before it is "satisfied".
|
||||||
|
|
||||||
NOTE that this only returns errors etc regarding the whole multi stack. There
|
In modern libcurls, \fICURLM_CALL_MULTI_PERFORM\fP or
|
||||||
might still have occurred problems on individual transfers even when this
|
\fICURLM_CALL_MULTI_SOKCET\fP should not be returned and no application needs
|
||||||
function returns OK.
|
to care about them.
|
||||||
|
|
||||||
|
NOTE that the return code is for the whole multi stack. There might still have
|
||||||
|
occurred problems on individual transfers even when one of these functions
|
||||||
|
return OK.
|
||||||
.SH "TYPICAL USAGE"
|
.SH "TYPICAL USAGE"
|
||||||
1. Create a multi handle
|
1. Create a multi handle
|
||||||
|
|
||||||
|
@@ -14,10 +14,9 @@ An application using the libcurl multi interface should call
|
|||||||
actions \- at most \- before proceeding.
|
actions \- at most \- before proceeding.
|
||||||
|
|
||||||
Proceeding means either doing the socket-style timeout action: call the
|
Proceeding means either doing the socket-style timeout action: call the
|
||||||
\fBcurl_multi_socket(3)\fP function with the \fBsockfd\fP argument set to
|
\fBcurl_multi_socket_action(3)\fP function with the \fBsockfd\fP argument set
|
||||||
CURL_SOCKET_TIMEOUT and the \fBeasy\fP argument set to CURL_EASY_TIMEOUT, or
|
to CURL_SOCKET_TIMEOUT, or call \fBcurl_multi_perform(3)\fP if you're using
|
||||||
simply calling \fBcurl_multi_perform(3)\fP if you're using the simpler and
|
the simpler and older multi interface approach.
|
||||||
older multi interface approach.
|
|
||||||
|
|
||||||
The timeout value returned in the long \fBtimeout\fP points to, is in number
|
The timeout value returned in the long \fBtimeout\fP points to, is in number
|
||||||
of milliseconds at this very moment. If 0, it means you should proceed
|
of milliseconds at this very moment. If 0, it means you should proceed
|
||||||
|
@@ -21,7 +21,7 @@
|
|||||||
.\" * $Id$
|
.\" * $Id$
|
||||||
.\" **************************************************************************
|
.\" **************************************************************************
|
||||||
.\"
|
.\"
|
||||||
.TH libcurl-errors 3 "30 Aug 2007" "libcurl 7.17.0" "libcurl errors"
|
.TH libcurl-errors 3 "8 Jun 2008" "libcurl 7.19.0" "libcurl errors"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
libcurl-errors \- error codes in libcurl
|
libcurl-errors \- error codes in libcurl
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
@@ -212,6 +212,10 @@ Failed to shut down the SSL connection
|
|||||||
Socket is not ready for send/recv wait till it's ready and try again. This
|
Socket is not ready for send/recv wait till it's ready and try again. This
|
||||||
return code is only returned from \fIcurl_easy_recv(3)\fP and
|
return code is only returned from \fIcurl_easy_recv(3)\fP and
|
||||||
\fIcurl_easy_send(3)\fP (Added in 7.18.2)
|
\fIcurl_easy_send(3)\fP (Added in 7.18.2)
|
||||||
|
.IP "CURLE_SSL_CRL_BADFILE (82)"
|
||||||
|
Failed to load CRL file (Added in 7.19.0)
|
||||||
|
.IP "CURLE_SSL_ISSUER_ERROR (83)"
|
||||||
|
Issuer check failed (Added in 7.19.0)
|
||||||
.IP "CURLE_OBSOLETE*"
|
.IP "CURLE_OBSOLETE*"
|
||||||
These error codes will never be returned. They used to be used in an old libcurl
|
These error codes will never be returned. They used to be used in an old libcurl
|
||||||
version and are currently unused.
|
version and are currently unused.
|
||||||
|
@@ -276,7 +276,7 @@ yassl
|
|||||||
|
|
||||||
Required actions unknown
|
Required actions unknown
|
||||||
|
|
||||||
When using multiple threads you should set the CURLOPT_NOSIGNAL option to TRUE
|
When using multiple threads you should set the CURLOPT_NOSIGNAL option to 1
|
||||||
for all handles. Everything will or might work fine except that timeouts are
|
for all handles. Everything will or might work fine except that timeouts are
|
||||||
not honored during the DNS lookup - which you can work around by building
|
not honored during the DNS lookup - which you can work around by building
|
||||||
libcurl with c-ares support. c-ares is a library that provides asynchronous
|
libcurl with c-ares support. c-ares is a library that provides asynchronous
|
||||||
@@ -293,12 +293,12 @@ actually does, or the remote server might return non-standard replies that
|
|||||||
confuse the library which then confuses your program.
|
confuse the library which then confuses your program.
|
||||||
|
|
||||||
There's one golden rule when these things occur: set the CURLOPT_VERBOSE
|
There's one golden rule when these things occur: set the CURLOPT_VERBOSE
|
||||||
option to TRUE. It'll cause the library to spew out the entire protocol
|
option to 1. It'll cause the library to spew out the entire protocol
|
||||||
details it sends, some internal info and some received protocol data as well
|
details it sends, some internal info and some received protocol data as well
|
||||||
(especially when using FTP). If you're using HTTP, adding the headers in the
|
(especially when using FTP). If you're using HTTP, adding the headers in the
|
||||||
received output to study is also a clever way to get a better understanding
|
received output to study is also a clever way to get a better understanding
|
||||||
why the server behaves the way it does. Include headers in the normal body
|
why the server behaves the way it does. Include headers in the normal body
|
||||||
output with CURLOPT_HEADER set TRUE.
|
output with CURLOPT_HEADER set 1.
|
||||||
|
|
||||||
Of course there are bugs left. We need to get to know about them to be able
|
Of course there are bugs left. We need to get to know about them to be able
|
||||||
to fix them, so we're quite dependent on your bug reports! When you do report
|
to fix them, so we're quite dependent on your bug reports! When you do report
|
||||||
@@ -343,7 +343,7 @@ between the application and the callback.
|
|||||||
|
|
||||||
Tell libcurl that we want to upload:
|
Tell libcurl that we want to upload:
|
||||||
|
|
||||||
curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, TRUE);
|
curl_easy_setopt(easyhandle, CURLOPT_UPLOAD, 1L);
|
||||||
|
|
||||||
A few protocols won't behave properly when uploads are done without any prior
|
A few protocols won't behave properly when uploads are done without any prior
|
||||||
knowledge of the expected file size. So, set the upload file size using the
|
knowledge of the expected file size. So, set the upload file size using the
|
||||||
@@ -398,7 +398,7 @@ use for a particular host. As an extension to the normal functionality,
|
|||||||
libcurl also supports this file for non-FTP protocols such as HTTP. To make
|
libcurl also supports this file for non-FTP protocols such as HTTP. To make
|
||||||
curl use this file, use the CURLOPT_NETRC option:
|
curl use this file, use the CURLOPT_NETRC option:
|
||||||
|
|
||||||
curl_easy_setopt(easyhandle, CURLOPT_NETRC, TRUE);
|
curl_easy_setopt(easyhandle, CURLOPT_NETRC, 1L);
|
||||||
|
|
||||||
And a very basic example of how such a .netrc file may look like:
|
And a very basic example of how such a .netrc file may look like:
|
||||||
|
|
||||||
@@ -486,7 +486,7 @@ then passing that list to libcurl.
|
|||||||
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
|
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDS, binaryptr);
|
||||||
|
|
||||||
/* set the size of the postfields data */
|
/* set the size of the postfields data */
|
||||||
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23);
|
curl_easy_setopt(easyhandle, CURLOPT_POSTFIELDSIZE, 23L);
|
||||||
|
|
||||||
/* pass our list of custom made headers */
|
/* pass our list of custom made headers */
|
||||||
curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
|
curl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);
|
||||||
@@ -563,7 +563,7 @@ curl to go back to a plain GET request if you intend to do such a one as your
|
|||||||
next request. You force an easyhandle to back to GET by using the
|
next request. You force an easyhandle to back to GET by using the
|
||||||
CURLOPT_HTTPGET option:
|
CURLOPT_HTTPGET option:
|
||||||
|
|
||||||
curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, TRUE);
|
curl_easy_setopt(easyhandle, CURLOPT_HTTPGET, 1L);
|
||||||
|
|
||||||
Just setting CURLOPT_POSTFIELDS to "" or NULL will *not* stop libcurl from
|
Just setting CURLOPT_POSTFIELDS to "" or NULL will *not* stop libcurl from
|
||||||
doing a POST. It will just make it POST without any data to send!
|
doing a POST. It will just make it POST without any data to send!
|
||||||
@@ -575,7 +575,7 @@ that can be switched on and then makes it presents a progress meter in your
|
|||||||
terminal.
|
terminal.
|
||||||
|
|
||||||
Switch on the progress meter by, oddly enough, set CURLOPT_NOPROGRESS to
|
Switch on the progress meter by, oddly enough, set CURLOPT_NOPROGRESS to
|
||||||
FALSE. This option is set to TRUE by default.
|
zero. This option is set to 1 by default.
|
||||||
|
|
||||||
For most applications however, the built-in progress meter is useless and
|
For most applications however, the built-in progress meter is useless and
|
||||||
what instead is interesting is the ability to specify a progress
|
what instead is interesting is the ability to specify a progress
|
||||||
@@ -725,7 +725,7 @@ rarely allowed.
|
|||||||
|
|
||||||
Tell libcurl to use proxy tunneling like this:
|
Tell libcurl to use proxy tunneling like this:
|
||||||
|
|
||||||
curl_easy_setopt(easyhandle, CURLOPT_HTTPPROXYTUNNEL, TRUE);
|
curl_easy_setopt(easyhandle, CURLOPT_HTTPPROXYTUNNEL, 1L);
|
||||||
|
|
||||||
In fact, there might even be times when you want to do plain HTTP
|
In fact, there might even be times when you want to do plain HTTP
|
||||||
operations using a tunnel like this, as it then enables you to operate on
|
operations using a tunnel like this, as it then enables you to operate on
|
||||||
@@ -790,9 +790,9 @@ just a matter of thinking again.
|
|||||||
To force your upcoming request to not use an already existing connection (it
|
To force your upcoming request to not use an already existing connection (it
|
||||||
will even close one first if there happens to be one alive to the same host
|
will even close one first if there happens to be one alive to the same host
|
||||||
you're about to operate on), you can do that by setting CURLOPT_FRESH_CONNECT
|
you're about to operate on), you can do that by setting CURLOPT_FRESH_CONNECT
|
||||||
to TRUE. In a similar spirit, you can also forbid the upcoming request to be
|
to 1. In a similar spirit, you can also forbid the upcoming request to be
|
||||||
"lying" around and possibly get re-used after the request by setting
|
"lying" around and possibly get re-used after the request by setting
|
||||||
CURLOPT_FORBID_REUSE to TRUE.
|
CURLOPT_FORBID_REUSE to 1.
|
||||||
|
|
||||||
.SH "HTTP Headers Used by libcurl"
|
.SH "HTTP Headers Used by libcurl"
|
||||||
When you use libcurl to do HTTP requests, it'll pass along a series of headers
|
When you use libcurl to do HTTP requests, it'll pass along a series of headers
|
||||||
@@ -935,7 +935,7 @@ error code (CURLE_QUOTE_ERROR). Note that if you use CURLOPT_QUOTE to send
|
|||||||
commands before a transfer, no transfer will actually take place when a quote
|
commands before a transfer, no transfer will actually take place when a quote
|
||||||
command has failed.
|
command has failed.
|
||||||
|
|
||||||
If you set the CURLOPT_HEADER to true, you will tell libcurl to get
|
If you set the CURLOPT_HEADER to 1, you will tell libcurl to get
|
||||||
information about the target file and output "headers" about it. The headers
|
information about the target file and output "headers" about it. The headers
|
||||||
will be in "HTTP-style", looking like they do in HTTP.
|
will be in "HTTP-style", looking like they do in HTTP.
|
||||||
|
|
||||||
@@ -1015,7 +1015,7 @@ work it tries PASV instead. (EPSV is an extension to the original FTP spec
|
|||||||
and does not exist nor work on all FTP servers.)
|
and does not exist nor work on all FTP servers.)
|
||||||
|
|
||||||
You can prevent libcurl from first trying the EPSV command by setting
|
You can prevent libcurl from first trying the EPSV command by setting
|
||||||
CURLOPT_FTP_USE_EPSV to FALSE.
|
CURLOPT_FTP_USE_EPSV to zero.
|
||||||
|
|
||||||
In some cases, you will prefer to have the server connect back to you for the
|
In some cases, you will prefer to have the server connect back to you for the
|
||||||
second connection. This might be when the server is perhaps behind a firewall
|
second connection. This might be when the server is perhaps behind a firewall
|
||||||
@@ -1029,14 +1029,14 @@ from.
|
|||||||
|
|
||||||
When doing the "PORT" approach, libcurl will attempt to use the EPRT and the
|
When doing the "PORT" approach, libcurl will attempt to use the EPRT and the
|
||||||
LPRT before trying PORT, as they work with more protocols. You can disable
|
LPRT before trying PORT, as they work with more protocols. You can disable
|
||||||
this behavior by setting CURLOPT_FTP_USE_EPRT to FALSE.
|
this behavior by setting CURLOPT_FTP_USE_EPRT to zero.
|
||||||
|
|
||||||
.SH "Headers Equal Fun"
|
.SH "Headers Equal Fun"
|
||||||
|
|
||||||
Some protocols provide "headers", meta-data separated from the normal
|
Some protocols provide "headers", meta-data separated from the normal
|
||||||
data. These headers are by default not included in the normal data stream,
|
data. These headers are by default not included in the normal data stream,
|
||||||
but you can make them appear in the data stream by setting CURLOPT_HEADER to
|
but you can make them appear in the data stream by setting CURLOPT_HEADER to
|
||||||
TRUE.
|
1.
|
||||||
|
|
||||||
What might be even more useful, is libcurl's ability to separate the headers
|
What might be even more useful, is libcurl's ability to separate the headers
|
||||||
from the data and thus make the callbacks differ. You can for example set a
|
from the data and thus make the callbacks differ. You can for example set a
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
Include files for libcurl, external users.
|
Include files for libcurl, external users.
|
||||||
|
|
||||||
They're all placed in the curl subdirectory here for better fit in any kind
|
They're all placed in the curl subdirectory here for better fit in any kind
|
||||||
of environment. You should include files from here using...
|
of environment. You must include files from here using...
|
||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
|
||||||
@@ -16,14 +16,31 @@ curl subdirectory. It makes it more likely to survive future modifications.
|
|||||||
|
|
||||||
NOTE FOR LIBCURL HACKERS
|
NOTE FOR LIBCURL HACKERS
|
||||||
|
|
||||||
All the include files in this tree are written and intended to be installed on
|
The following notes apply to libcurl version 7.19.0 and later.
|
||||||
a system that may serve multiple platforms and multiple applications, all
|
|
||||||
using libcurl (possibly even different libcurl installations using different
|
|
||||||
versions). Therefore, all header files in here must obey these rules:
|
|
||||||
|
|
||||||
* They cannot depend on or use configure-generated results from libcurl's or
|
* The distributed curl/curlbuild.h file is only intended to be used on systems
|
||||||
curl's directories. Other applications may not run configure as (lib)curl
|
which can not run the also distributed configure script.
|
||||||
does, and using platform dependent info here may break other platforms.
|
|
||||||
|
* The distributed curlbuild.h file is generated as a copy of curlbuild.h.dist
|
||||||
|
when the libcurl source code distribution archive file is originally created.
|
||||||
|
|
||||||
|
* If you check out from CVS on a non-configure platform, you must run the
|
||||||
|
appropriate buildconf* script to set up curlbuild.h and other local files
|
||||||
|
before being able of compiling the library.
|
||||||
|
|
||||||
|
* On systems capable of running the configure script, the configure process
|
||||||
|
will overwrite the distributed include/curl/curlbuild.h file with one that
|
||||||
|
is suitable and specific to the library being configured and built, which
|
||||||
|
is generated from the include/curl/curlbuild.h.in template file.
|
||||||
|
|
||||||
|
* If you intend to distribute an already compiled libcurl library you _MUST_
|
||||||
|
also distribute along with it the generated curl/curlbuild.h which has been
|
||||||
|
used to compile it. Otherwise the library will be of no use for the users of
|
||||||
|
the library that you have built. It is _your_ responsability to provide this
|
||||||
|
file. No one at the cURL project can know how you have built the library.
|
||||||
|
|
||||||
|
* File curl/curlbuild.h includes platform and configuration dependant info,
|
||||||
|
and must not be modified by anyone. Configure script generates it for you.
|
||||||
|
|
||||||
* We cannot assume anything else but very basic compiler features being
|
* We cannot assume anything else but very basic compiler features being
|
||||||
present. While libcurl requires an ANSI C compiler to build, some of the
|
present. While libcurl requires an ANSI C compiler to build, some of the
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
Makefile
|
Makefile
|
||||||
Makefile.in
|
Makefile.in
|
||||||
*.dist
|
curlbuild.h
|
||||||
|
curlver.h.dist
|
||||||
|
stamp-*
|
||||||
|
@@ -1,6 +1,25 @@
|
|||||||
pkginclude_HEADERS = \
|
pkginclude_HEADERS = \
|
||||||
curl.h curlver.h easy.h mprintf.h stdcheaders.h types.h multi.h \
|
curl.h curlver.h easy.h mprintf.h stdcheaders.h types.h multi.h \
|
||||||
typecheck-gcc.h
|
typecheck-gcc.h curlbuild.h curlrules.h
|
||||||
|
|
||||||
pkgincludedir= $(includedir)/curl
|
pkgincludedir= $(includedir)/curl
|
||||||
|
|
||||||
CLEANFILES = *dist
|
# curlbuild.h does not exist in the CVS tree. When the original libcurl
|
||||||
|
# source code distribution archive file is created, curlbuild.h.dist is
|
||||||
|
# renamed to curlbuild.h and included in the tarball so that it can be
|
||||||
|
# used directly on non-configure systems.
|
||||||
|
#
|
||||||
|
# The distributed curlbuild.h will be overwritten on configure systems
|
||||||
|
# when the configure script runs, with one that is suitable and specific
|
||||||
|
# to the library being configured and built.
|
||||||
|
#
|
||||||
|
# curlbuild.h.in is the distributed template file from which the configure
|
||||||
|
# script creates curlbuild.h at library configuration time, overwiting the
|
||||||
|
# one included in the distribution archive.
|
||||||
|
#
|
||||||
|
# curlbuild.h.dist is not included in the source code distribution archive.
|
||||||
|
|
||||||
|
EXTRA_DIST = curlbuild.h.in
|
||||||
|
|
||||||
|
DISTCLEANFILES = curlbuild.h
|
||||||
|
|
||||||
|
@@ -23,11 +23,17 @@
|
|||||||
* $Id$
|
* $Id$
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
/* If you have problems, all libcurl docs and details are found here:
|
/*
|
||||||
http://curl.haxx.se/libcurl/
|
* If you have libcurl problems, all docs and details are found here:
|
||||||
*/
|
* http://curl.haxx.se/libcurl/
|
||||||
|
*
|
||||||
|
* curl-library mailing list subscription and unsubscription web interface:
|
||||||
|
* http://cool.haxx.se/mailman/listinfo/curl-library/
|
||||||
|
*/
|
||||||
|
|
||||||
#include "curlver.h" /* the libcurl version defines */
|
#include "curlver.h" /* libcurl version defines */
|
||||||
|
#include "curl/curlbuild.h" /* libcurl build definitions */
|
||||||
|
#include "curlrules.h" /* libcurl rules enforcement */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Define WIN32 when build target is Win32 API
|
* Define WIN32 when build target is Win32 API
|
||||||
@@ -64,14 +70,14 @@
|
|||||||
libc5-based Linux systems. Only include it on system that are known to
|
libc5-based Linux systems. Only include it on system that are known to
|
||||||
require it! */
|
require it! */
|
||||||
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
|
#if defined(_AIX) || defined(__NOVELL_LIBC__) || defined(__NetBSD__) || \
|
||||||
defined(__minix) || defined(__SYMBIAN32__)
|
defined(__minix) || defined(__SYMBIAN32__) || defined(__INTEGRITY)
|
||||||
#include <sys/select.h>
|
#include <sys/select.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _WIN32_WCE
|
#ifndef _WIN32_WCE
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#endif
|
#endif
|
||||||
#ifndef __WATCOMC__
|
#if !defined(WIN32) && !defined(__WATCOMC__)
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#endif
|
#endif
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@@ -113,74 +119,6 @@ typedef void CURL;
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* We want the typedef curl_off_t setup for large file support on all
|
|
||||||
* platforms. We also provide a CURL_FORMAT_OFF_T define to use in *printf
|
|
||||||
* format strings when outputting a variable of type curl_off_t.
|
|
||||||
*
|
|
||||||
* Note: "pocc -Ze" is MSVC compatibility mode and this sets _MSC_VER!
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if (defined(_MSC_VER) && !defined(__POCC__)) || (defined(__LCC__) && \
|
|
||||||
defined(WIN32))
|
|
||||||
/* MSVC */
|
|
||||||
#ifdef _WIN32_WCE
|
|
||||||
typedef long curl_off_t;
|
|
||||||
#define CURL_FORMAT_OFF_T "%ld"
|
|
||||||
#else
|
|
||||||
typedef signed __int64 curl_off_t;
|
|
||||||
#define CURL_FORMAT_OFF_T "%I64d"
|
|
||||||
#endif
|
|
||||||
#else /* (_MSC_VER && !__POCC__) || (__LCC__ && WIN32) */
|
|
||||||
#if (defined(__GNUC__) && defined(WIN32)) || defined(__WATCOMC__)
|
|
||||||
/* gcc on windows or Watcom */
|
|
||||||
typedef long long curl_off_t;
|
|
||||||
#define CURL_FORMAT_OFF_T "%I64d"
|
|
||||||
#else /* GCC or Watcom on Windows */
|
|
||||||
#if defined(__ILEC400__)
|
|
||||||
/* OS400 C compiler. */
|
|
||||||
typedef long long curl_off_t;
|
|
||||||
#define CURL_FORMAT_OFF_T "%lld"
|
|
||||||
#else /* OS400 C compiler. */
|
|
||||||
|
|
||||||
/* "normal" POSIX approach, do note that this does not necessarily mean that
|
|
||||||
the type is >32 bits, see the SIZEOF_CURL_OFF_T define for that! */
|
|
||||||
typedef off_t curl_off_t;
|
|
||||||
|
|
||||||
/* Check a range of defines to detect large file support. On Linux it seems
|
|
||||||
none of these are set by default, so if you don't explicitly switches on
|
|
||||||
large file support, this define will be made for "small file" support. */
|
|
||||||
#ifndef _FILE_OFFSET_BITS
|
|
||||||
#define _FILE_OFFSET_BITS 0 /* to prevent warnings in the check below */
|
|
||||||
#define UNDEF_FILE_OFFSET_BITS
|
|
||||||
#endif
|
|
||||||
#ifndef FILESIZEBITS
|
|
||||||
#define FILESIZEBITS 0 /* to prevent warnings in the check below */
|
|
||||||
#define UNDEF_FILESIZEBITS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(_LARGE_FILES) || (_FILE_OFFSET_BITS > 32) || (FILESIZEBITS > 32) \
|
|
||||||
|| defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE)
|
|
||||||
/* For now, we assume at least one of these to be set for large files to
|
|
||||||
work! */
|
|
||||||
#define CURL_FORMAT_OFF_T "%lld"
|
|
||||||
#else /* LARGE_FILE support */
|
|
||||||
#define CURL_FORMAT_OFF_T "%ld"
|
|
||||||
#endif
|
|
||||||
#endif /* OS400 C compiler. */
|
|
||||||
#endif /* GCC or Watcom on Windows */
|
|
||||||
#endif /* (_MSC_VER && !__POCC__) || (__LCC__ && WIN32) */
|
|
||||||
|
|
||||||
#ifdef UNDEF_FILE_OFFSET_BITS
|
|
||||||
/* this was defined above for our checks, undefine it again */
|
|
||||||
#undef _FILE_OFFSET_BITS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef UNDEF_FILESIZEBITS
|
|
||||||
/* this was defined above for our checks, undefine it again */
|
|
||||||
#undef FILESIZEBITS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef curl_socket_typedef
|
#ifndef curl_socket_typedef
|
||||||
/* socket typedef */
|
/* socket typedef */
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
@@ -452,7 +390,12 @@ typedef enum {
|
|||||||
CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL
|
CURLE_SSL_SHUTDOWN_FAILED, /* 80 - Failed to shut down the SSL
|
||||||
connection */
|
connection */
|
||||||
CURLE_AGAIN, /* 81 - socket is not ready for send/recv,
|
CURLE_AGAIN, /* 81 - socket is not ready for send/recv,
|
||||||
wait till it's ready and try again */
|
wait till it's ready and try again (Added
|
||||||
|
in 7.18.2) */
|
||||||
|
CURLE_SSL_CRL_BADFILE, /* 82 - could not load CRL file, missing or
|
||||||
|
wrong format (Added in 7.19.0) */
|
||||||
|
CURLE_SSL_ISSUER_ERROR, /* 83 - Issuer check failed. (Added in
|
||||||
|
7.19.0) */
|
||||||
CURL_LAST /* never use! */
|
CURL_LAST /* never use! */
|
||||||
} CURLcode;
|
} CURLcode;
|
||||||
|
|
||||||
@@ -605,23 +548,6 @@ typedef enum {
|
|||||||
#ifdef CINIT
|
#ifdef CINIT
|
||||||
#undef CINIT
|
#undef CINIT
|
||||||
#endif
|
#endif
|
||||||
/*
|
|
||||||
* Figure out if we can use the ## operator, which is supported by ISO/ANSI C
|
|
||||||
* and C++. Some compilers support it without setting __STDC__ or __cplusplus
|
|
||||||
* so we need to carefully check for them too. We don't use configure-checks
|
|
||||||
* for these since we want these headers to remain generic and working for all
|
|
||||||
* platforms.
|
|
||||||
*/
|
|
||||||
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
|
|
||||||
defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
|
|
||||||
defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
|
|
||||||
defined(__ILEC400__)
|
|
||||||
/* This compiler is believed to have an ISO compatible preprocessor */
|
|
||||||
#define CURL_ISOCPP
|
|
||||||
#else
|
|
||||||
/* This compiler is believed NOT to have an ISO compatible preprocessor */
|
|
||||||
#undef CURL_ISOCPP
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CURL_ISOCPP
|
#ifdef CURL_ISOCPP
|
||||||
#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
|
#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number
|
||||||
@@ -732,7 +658,7 @@ typedef enum {
|
|||||||
/* This points to a linked list of headers, struct curl_slist kind */
|
/* This points to a linked list of headers, struct curl_slist kind */
|
||||||
CINIT(HTTPHEADER, OBJECTPOINT, 23),
|
CINIT(HTTPHEADER, OBJECTPOINT, 23),
|
||||||
|
|
||||||
/* This points to a linked list of post entries, struct HttpPost */
|
/* This points to a linked list of post entries, struct curl_httppost */
|
||||||
CINIT(HTTPPOST, OBJECTPOINT, 24),
|
CINIT(HTTPPOST, OBJECTPOINT, 24),
|
||||||
|
|
||||||
/* name of the file keeping your private SSL-certificate */
|
/* name of the file keeping your private SSL-certificate */
|
||||||
@@ -1200,6 +1126,15 @@ typedef enum {
|
|||||||
CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
|
CINIT(SEEKFUNCTION, FUNCTIONPOINT, 167),
|
||||||
CINIT(SEEKDATA, OBJECTPOINT, 168),
|
CINIT(SEEKDATA, OBJECTPOINT, 168),
|
||||||
|
|
||||||
|
/* CRL file */
|
||||||
|
CINIT(CRLFILE, OBJECTPOINT, 169),
|
||||||
|
|
||||||
|
/* Issuer certificate */
|
||||||
|
CINIT(ISSUERCERT, OBJECTPOINT, 170),
|
||||||
|
|
||||||
|
/* (IPv6) Address scope */
|
||||||
|
CINIT(ADDRESS_SCOPE, LONG, 171),
|
||||||
|
|
||||||
CURLOPT_LASTENTRY /* the last unused */
|
CURLOPT_LASTENTRY /* the last unused */
|
||||||
} CURLoption;
|
} CURLoption;
|
||||||
|
|
||||||
@@ -1349,7 +1284,7 @@ struct curl_forms {
|
|||||||
* CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed
|
* CURL_FORMADD_MEMORY if the allocation of a FormInfo struct failed
|
||||||
* CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
|
* CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used
|
||||||
* CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)
|
* CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or error)
|
||||||
* CURL_FORMADD_MEMORY if a HttpPost struct cannot be allocated
|
* CURL_FORMADD_MEMORY if a curl_httppost struct cannot be allocated
|
||||||
* CURL_FORMADD_MEMORY if some allocation for string copying failed.
|
* CURL_FORMADD_MEMORY if some allocation for string copying failed.
|
||||||
* CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array
|
* CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array
|
||||||
*
|
*
|
||||||
@@ -1596,9 +1531,11 @@ typedef enum {
|
|||||||
CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,
|
CURLINFO_LASTSOCKET = CURLINFO_LONG + 29,
|
||||||
CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
|
CURLINFO_FTP_ENTRY_PATH = CURLINFO_STRING + 30,
|
||||||
CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,
|
CURLINFO_REDIRECT_URL = CURLINFO_STRING + 31,
|
||||||
|
CURLINFO_PRIMARY_IP = CURLINFO_STRING + 32,
|
||||||
|
CURLINFO_APPCONNECT_TIME = CURLINFO_DOUBLE + 33,
|
||||||
/* Fill in new entries below here! */
|
/* Fill in new entries below here! */
|
||||||
|
|
||||||
CURLINFO_LASTONE = 31
|
CURLINFO_LASTONE = 33
|
||||||
} CURLINFO;
|
} CURLINFO;
|
||||||
|
|
||||||
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
|
/* CURLINFO_RESPONSE_CODE is the new name for the option previously known as
|
||||||
|
502
include/curl/curlbuild.h.dist
Normal file
502
include/curl/curlbuild.h.dist
Normal file
@@ -0,0 +1,502 @@
|
|||||||
|
#ifndef __CURL_CURLBUILD_H
|
||||||
|
#define __CURL_CURLBUILD_H
|
||||||
|
/***************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 - 2008, 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
|
||||||
|
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||||
|
*
|
||||||
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
|
* furnished to do so, under the terms of the COPYING file.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE 1:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* See file include/curl/curlbuild.h.in, run configure, and forget
|
||||||
|
* that this file exists it is only used for non-configure systems.
|
||||||
|
* But you can keep reading if you want ;-)
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* NOTES FOR NON-CONFIGURE SYSTEMS */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE 1:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* Nothing in this file is intended to be modified or adjusted by the
|
||||||
|
* curl library user nor by the curl library builder.
|
||||||
|
*
|
||||||
|
* If you think that something actually needs to be changed, adjusted
|
||||||
|
* or fixed in this file, then, report it on the libcurl development
|
||||||
|
* mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
|
||||||
|
*
|
||||||
|
* Try to keep one section per platform, compiler and architecture,
|
||||||
|
* otherwise, if an existing section is reused for a different one and
|
||||||
|
* later on the original is adjusted, probably the piggybacking one can
|
||||||
|
* be adversely changed.
|
||||||
|
*
|
||||||
|
* In order to differentiate between platforms/compilers/architectures
|
||||||
|
* use only compiler built in predefined preprocessor symbols.
|
||||||
|
*
|
||||||
|
* This header file shall only export symbols which are 'curl' or 'CURL'
|
||||||
|
* prefixed, otherwise public name space would be polluted.
|
||||||
|
*
|
||||||
|
* NOTE 2:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* For any given platform/compiler curl_off_t must be typedef'ed to a
|
||||||
|
* 64-bit wide signed integral data type. The width of this data type
|
||||||
|
* must remain constant and independant of any possible large file
|
||||||
|
* support settings.
|
||||||
|
*
|
||||||
|
* As an exception to the above, curl_off_t shall be typedef'ed to a
|
||||||
|
* 32-bit wide signed integral data type if there is no 64-bit type.
|
||||||
|
*
|
||||||
|
* As a general rule, curl_off_t shall not be mapped to off_t. This
|
||||||
|
* rule shall only be violated if off_t is the only 64-bit data type
|
||||||
|
* available and the size of off_t is independant of large file support
|
||||||
|
* settings. Keep your build on the safe side avoiding an off_t gating.
|
||||||
|
* If you have a 64-bit off_t then take for sure that another 64-bit
|
||||||
|
* data type exists, dig deeper and you will find it.
|
||||||
|
*
|
||||||
|
* NOTE 3:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* Right now you might be staring at file include/curl/curlbuild.h.dist or
|
||||||
|
* at file include/curl/curlbuild.h, this is due to the following reason:
|
||||||
|
* file include/curl/curlbuild.h.dist is renamed to include/curl/curlbuild.h
|
||||||
|
* when the libcurl source code distribution archive file is created.
|
||||||
|
*
|
||||||
|
* File include/curl/curlbuild.h.dist is not included in the distribution
|
||||||
|
* archive. File include/curl/curlbuild.h is not present in the CVS tree.
|
||||||
|
*
|
||||||
|
* The distributed include/curl/curlbuild.h file is only intended to be used
|
||||||
|
* on systems which can not run the also distributed configure script.
|
||||||
|
*
|
||||||
|
* On systems capable of running the configure script, the configure process
|
||||||
|
* will overwrite the distributed include/curl/curlbuild.h file with one that
|
||||||
|
* is suitable and specific to the library being configured and built, which
|
||||||
|
* is generated from the include/curl/curlbuild.h.in template file.
|
||||||
|
*
|
||||||
|
* If you check out from CVS on a non-configure platform, you must run the
|
||||||
|
* appropriate buildconf* script to set up curlbuild.h and other local files.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
#ifdef CURL_SIZEOF_LONG
|
||||||
|
# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_TYPEOF_CURL_OFF_T
|
||||||
|
# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_FORMAT_CURL_OFF_T
|
||||||
|
# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_FORMAT_CURL_OFF_TU
|
||||||
|
# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_FORMAT_OFF_T
|
||||||
|
# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_SIZEOF_CURL_OFF_T
|
||||||
|
# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_SUFFIX_CURL_OFF_T
|
||||||
|
# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_SUFFIX_CURL_OFF_TU
|
||||||
|
# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* EXTERNAL INTERFACE SETTINGS FOR NON-CONFIGURE SYSTEMS ONLY */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
#if defined(__DJGPP__) || defined(__GO32__)
|
||||||
|
# if defined(__DJGPP__) && (__DJGPP__ > 1)
|
||||||
|
# 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
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__SALFORDC__)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
|
||||||
|
#elif defined(__BORLANDC__)
|
||||||
|
# if (__BORLANDC__ < 0x520)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# 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 __int64
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "I64d"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "I64u"
|
||||||
|
# define CURL_FORMAT_OFF_T "%I64d"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T i64
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ui64
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__TURBOC__)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# if defined(__386__)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T __int64
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "I64d"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "I64u"
|
||||||
|
# define CURL_FORMAT_OFF_T "%I64d"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T i64
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ui64
|
||||||
|
# else
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__POCC__)
|
||||||
|
# if (__POCC__ < 280)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# elif defined(_MSC_VER)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T __int64
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "I64d"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "I64u"
|
||||||
|
# define CURL_FORMAT_OFF_T "%I64d"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T i64
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ui64
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#elif defined(__LCC__)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
|
||||||
|
#elif defined(__SYMBIAN32__)
|
||||||
|
# if defined(__EABI__) /* Treat all ARM compilers equally */
|
||||||
|
# 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
|
||||||
|
# elif defined(__CW32__)
|
||||||
|
# pragma longlong on
|
||||||
|
# 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
|
||||||
|
# elif defined(__VC32__)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T __int64
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#elif defined(__MWERKS__)
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#elif defined(_WIN32_WCE)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T __int64
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "I64d"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "I64u"
|
||||||
|
# define CURL_FORMAT_OFF_T "%I64d"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T i64
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ui64
|
||||||
|
|
||||||
|
#elif defined(__MINGW32__)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "I64d"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "I64u"
|
||||||
|
# define CURL_FORMAT_OFF_T "%I64d"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T LL
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ULL
|
||||||
|
|
||||||
|
#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
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__OS400__)
|
||||||
|
# if defined(__ILEC400__)
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#elif defined(__MVS__)
|
||||||
|
# if defined(__IBMC__) || defined(__IBMCPP__)
|
||||||
|
# if defined(_ILP32)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# elif defined(_LP64)
|
||||||
|
# define CURL_SIZEOF_LONG 8
|
||||||
|
# endif
|
||||||
|
# if defined(_LONG_LONG)
|
||||||
|
# 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
|
||||||
|
# elif defined(_LP64)
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# else
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#elif defined(__370__)
|
||||||
|
# if defined(__IBMC__) || defined(__IBMCPP__)
|
||||||
|
# if defined(_ILP32)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# elif defined(_LP64)
|
||||||
|
# define CURL_SIZEOF_LONG 8
|
||||||
|
# endif
|
||||||
|
# if defined(_LONG_LONG)
|
||||||
|
# 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
|
||||||
|
# elif defined(_LP64)
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# else
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ===================================== */
|
||||||
|
/* KEEP MSVC THE PENULTIMATE ENTRY */
|
||||||
|
/* ===================================== */
|
||||||
|
|
||||||
|
#elif defined(_MSC_VER)
|
||||||
|
# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T __int64
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "I64d"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "I64u"
|
||||||
|
# define CURL_FORMAT_OFF_T "%I64d"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T i64
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ui64
|
||||||
|
# else
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 4
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* ===================================== */
|
||||||
|
/* KEEP GENERIC GCC THE LAST ENTRY */
|
||||||
|
/* ===================================== */
|
||||||
|
|
||||||
|
#elif defined(__GNUC__)
|
||||||
|
# if defined(__i386__)
|
||||||
|
# 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
|
||||||
|
# elif defined(__x86_64__)
|
||||||
|
# define CURL_SIZEOF_LONG 8
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "ld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "lu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%ld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T L
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU UL
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
# error "Unknown non-configure build target!"
|
||||||
|
Error Compilation_aborted_Unknown_non_configure_build_target
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Data type definition of curl_off_t. */
|
||||||
|
|
||||||
|
#ifdef CURL_TYPEOF_CURL_OFF_T
|
||||||
|
typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __CURL_CURLBUILD_H */
|
153
include/curl/curlbuild.h.in
Normal file
153
include/curl/curlbuild.h.in
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
#ifndef __CURL_CURLBUILD_H
|
||||||
|
#define __CURL_CURLBUILD_H
|
||||||
|
/***************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 - 2008, 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
|
||||||
|
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||||
|
*
|
||||||
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
|
* furnished to do so, under the terms of the COPYING file.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* NOTES FOR CONFIGURE CAPABLE SYSTEMS */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE 1:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* Nothing in this file is intended to be modified or adjusted by the
|
||||||
|
* curl library user nor by the curl library builder.
|
||||||
|
*
|
||||||
|
* If you think that something actually needs to be changed, adjusted
|
||||||
|
* or fixed in this file, then, report it on the libcurl development
|
||||||
|
* mailing list: http://cool.haxx.se/mailman/listinfo/curl-library/
|
||||||
|
*
|
||||||
|
* This header file shall only export symbols which are 'curl' or 'CURL'
|
||||||
|
* prefixed, otherwise public name space would be polluted.
|
||||||
|
*
|
||||||
|
* NOTE 2:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* Right now you might be staring at file include/curl/curlbuild.h.in or
|
||||||
|
* at file include/curl/curlbuild.h, this is due to the following reason:
|
||||||
|
*
|
||||||
|
* On systems capable of running the configure script, the configure process
|
||||||
|
* will overwrite the distributed include/curl/curlbuild.h file with one that
|
||||||
|
* is suitable and specific to the library being configured and built, which
|
||||||
|
* is generated from the include/curl/curlbuild.h.in template file.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* DEFINITION OF THESE SYMBOLS SHALL NOT TAKE PLACE ANYWHERE ELSE */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
#ifdef CURL_SIZEOF_LONG
|
||||||
|
# error "CURL_SIZEOF_LONG shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SIZEOF_LONG_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_TYPEOF_CURL_OFF_T
|
||||||
|
# error "CURL_TYPEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_FORMAT_CURL_OFF_T
|
||||||
|
# error "CURL_FORMAT_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_FORMAT_CURL_OFF_TU
|
||||||
|
# error "CURL_FORMAT_CURL_OFF_TU shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_FORMAT_OFF_T
|
||||||
|
# error "CURL_FORMAT_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_SIZEOF_CURL_OFF_T
|
||||||
|
# error "CURL_SIZEOF_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_SUFFIX_CURL_OFF_T
|
||||||
|
# error "CURL_SUFFIX_CURL_OFF_T shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CURL_SUFFIX_CURL_OFF_TU
|
||||||
|
# error "CURL_SUFFIX_CURL_OFF_TU shall not be defined except in curlbuild.h"
|
||||||
|
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_already_defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* EXTERNAL INTERFACE SETTINGS FOR CONFIGURE CAPABLE SYSTEMS ONLY */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/* Configure process defines this to 1 when it finds out that system */
|
||||||
|
/* header file sys/types.h must be included by the external interface. */
|
||||||
|
#undef CURL_PULL_SYS_TYPES_H
|
||||||
|
#ifdef CURL_PULL_SYS_TYPES_H
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Configure process defines this to 1 when it finds out that system */
|
||||||
|
/* header file stdint.h must be included by the external interface. */
|
||||||
|
#undef CURL_PULL_STDINT_H
|
||||||
|
#ifdef CURL_PULL_STDINT_H
|
||||||
|
# include <stdint.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Configure process defines this to 1 when it finds out that system */
|
||||||
|
/* header file inttypes.h must be included by the external interface. */
|
||||||
|
#undef CURL_PULL_INTTYPES_H
|
||||||
|
#ifdef CURL_PULL_INTTYPES_H
|
||||||
|
# include <inttypes.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The size of `long', as computed by sizeof. */
|
||||||
|
#undef CURL_SIZEOF_LONG
|
||||||
|
|
||||||
|
/* Signed integral data type used for curl_off_t. */
|
||||||
|
#undef CURL_TYPEOF_CURL_OFF_T
|
||||||
|
|
||||||
|
/* Data type definition of curl_off_t. */
|
||||||
|
typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
|
||||||
|
|
||||||
|
/* curl_off_t formatting string directive without "%" conversion specifier. */
|
||||||
|
#undef CURL_FORMAT_CURL_OFF_T
|
||||||
|
|
||||||
|
/* unsigned curl_off_t formatting string without "%" conversion specifier. */
|
||||||
|
#undef CURL_FORMAT_CURL_OFF_TU
|
||||||
|
|
||||||
|
/* curl_off_t formatting string directive with "%" conversion specifier. */
|
||||||
|
#undef CURL_FORMAT_OFF_T
|
||||||
|
|
||||||
|
/* The size of `curl_off_t', as computed by sizeof. */
|
||||||
|
#undef CURL_SIZEOF_CURL_OFF_T
|
||||||
|
|
||||||
|
/* curl_off_t constant suffix. */
|
||||||
|
#undef CURL_SUFFIX_CURL_OFF_T
|
||||||
|
|
||||||
|
/* unsigned curl_off_t constant suffix. */
|
||||||
|
#undef CURL_SUFFIX_CURL_OFF_TU
|
||||||
|
|
||||||
|
#endif /* __CURL_CURLBUILD_H */
|
216
include/curl/curlrules.h
Normal file
216
include/curl/curlrules.h
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
#ifndef __CURL_CURLRULES_H
|
||||||
|
#define __CURL_CURLRULES_H
|
||||||
|
/***************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* Copyright (C) 1998 - 2008, 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
|
||||||
|
* are also available at http://curl.haxx.se/docs/copyright.html.
|
||||||
|
*
|
||||||
|
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
* copies of the Software, and permit persons to whom the Software is
|
||||||
|
* furnished to do so, under the terms of the COPYING file.
|
||||||
|
*
|
||||||
|
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
* KIND, either express or implied.
|
||||||
|
*
|
||||||
|
* $Id$
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* COMPILE TIME SANITY CHECKS */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NOTE 1:
|
||||||
|
* -------
|
||||||
|
*
|
||||||
|
* All checks done in this file are intentionally placed in a public
|
||||||
|
* header file which is pulled by curl/curl.h when an application is
|
||||||
|
* being built using an already built libcurl library. Additionally
|
||||||
|
* this file is also included and used when building the library.
|
||||||
|
*
|
||||||
|
* If compilation fails on this file it is certainly sure that the
|
||||||
|
* problem is elsewhere. It could be a problem in the curlbuild.h
|
||||||
|
* header file, or simply that you are using different compilation
|
||||||
|
* settings than those used to build the library.
|
||||||
|
*
|
||||||
|
* Nothing in this file is intended to be modified or adjusted by the
|
||||||
|
* curl library user nor by the curl library builder.
|
||||||
|
*
|
||||||
|
* Do not deactivate any check, these are done to make sure that the
|
||||||
|
* library is properly built and used.
|
||||||
|
*
|
||||||
|
* You can find further help on the libcurl development mailing list:
|
||||||
|
* http://cool.haxx.se/mailman/listinfo/curl-library/
|
||||||
|
*
|
||||||
|
* NOTE 2
|
||||||
|
* ------
|
||||||
|
*
|
||||||
|
* Some of the following compile time checks are based on the fact
|
||||||
|
* that the dimension of a constant array can not be a negative one.
|
||||||
|
* In this way if the compile time verification fails, the compilation
|
||||||
|
* will fail issuing an error. The error description wording is compiler
|
||||||
|
* dependant but it will be quite similar to one of the following:
|
||||||
|
*
|
||||||
|
* "negative subscript or subscript is too large"
|
||||||
|
* "array must have at least one element"
|
||||||
|
* "-1 is an illegal array size"
|
||||||
|
* "size of array is negative"
|
||||||
|
*
|
||||||
|
* If you are building an application which tries to use an already
|
||||||
|
* built libcurl library and you are getting this kind of errors on
|
||||||
|
* this file, it is a clear indication that there is a mismatch between
|
||||||
|
* how the library was built and how you are trying to use it for your
|
||||||
|
* application. Your already compiled or binary library provider is the
|
||||||
|
* only one who can give you the details you need to properly use it.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify that some macros are actually defined.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef CURL_SIZEOF_LONG
|
||||||
|
# error "CURL_SIZEOF_LONG definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_SIZEOF_LONG_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_TYPEOF_CURL_OFF_T
|
||||||
|
# error "CURL_TYPEOF_CURL_OFF_T definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_TYPEOF_CURL_OFF_T_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_FORMAT_CURL_OFF_T
|
||||||
|
# error "CURL_FORMAT_CURL_OFF_T definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_T_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_FORMAT_CURL_OFF_TU
|
||||||
|
# error "CURL_FORMAT_CURL_OFF_TU definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_CURL_OFF_TU_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_FORMAT_OFF_T
|
||||||
|
# error "CURL_FORMAT_OFF_T definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_FORMAT_OFF_T_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_SIZEOF_CURL_OFF_T
|
||||||
|
# error "CURL_SIZEOF_CURL_OFF_T definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_SIZEOF_CURL_OFF_T_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_SUFFIX_CURL_OFF_T
|
||||||
|
# error "CURL_SUFFIX_CURL_OFF_T definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_T_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef CURL_SUFFIX_CURL_OFF_TU
|
||||||
|
# error "CURL_SUFFIX_CURL_OFF_TU definition is missing!"
|
||||||
|
Error Compilation_aborted_CURL_SUFFIX_CURL_OFF_TU_is_missing
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macros private to this header file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define CurlchkszEQ(t, s) sizeof(t) == s ? 1 : -1
|
||||||
|
|
||||||
|
#define CurlchkszGE(t1, t2) sizeof(t1) >= sizeof(t2) ? 1 : -1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify that the size previously defined and expected for long
|
||||||
|
* is the same as the one reported by sizeof() at compile time.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef char
|
||||||
|
__curl_rule_01__
|
||||||
|
[CurlchkszEQ(long, CURL_SIZEOF_LONG)];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify that the size previously defined and expected for
|
||||||
|
* curl_off_t is actually the the same as the one reported
|
||||||
|
* by sizeof() at compile time.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef char
|
||||||
|
__curl_rule_02__
|
||||||
|
[CurlchkszEQ(curl_off_t, CURL_SIZEOF_CURL_OFF_T)];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Verify at compile time that the size of curl_off_t as reported
|
||||||
|
* by sizeof() is greater or equal than the one reported for long
|
||||||
|
* for the current compilation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef char
|
||||||
|
__curl_rule_03__
|
||||||
|
[CurlchkszGE(curl_off_t, long)];
|
||||||
|
|
||||||
|
/* ================================================================ */
|
||||||
|
/* EXTERNALLY AND INTERNALLY VISIBLE DEFINITIONS */
|
||||||
|
/* ================================================================ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
|
||||||
|
* these to be visible and exported by the external libcurl interface API,
|
||||||
|
* while also making them visible to the library internals, simply including
|
||||||
|
* setup.h, without actually needing to include curl.h internally.
|
||||||
|
* If some day this section would grow big enough, all this should be moved
|
||||||
|
* to its own header file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Figure out if we can use the ## preprocessor operator, which is supported
|
||||||
|
* by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
|
||||||
|
* or __cplusplus so we need to carefully check for them too.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
|
||||||
|
defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
|
||||||
|
defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
|
||||||
|
defined(__ILEC400__)
|
||||||
|
/* This compiler is believed to have an ISO compatible preprocessor */
|
||||||
|
#define CURL_ISOCPP
|
||||||
|
#else
|
||||||
|
/* This compiler is believed NOT to have an ISO compatible preprocessor */
|
||||||
|
#undef CURL_ISOCPP
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macros for minimum-width signed and unsigned curl_off_t integer constants.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef CURL_ISOCPP
|
||||||
|
# define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val ## Suffix
|
||||||
|
#else
|
||||||
|
# define __CURL_OFF_T_C_HELPER2(Val,Suffix) Val/**/Suffix
|
||||||
|
#endif
|
||||||
|
#define __CURL_OFF_T_C_HELPER1(Val,Suffix) __CURL_OFF_T_C_HELPER2(Val,Suffix)
|
||||||
|
#define CURL_OFF_T_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_T)
|
||||||
|
#define CURL_OFF_TU_C(Val) __CURL_OFF_T_C_HELPER1(Val,CURL_SUFFIX_CURL_OFF_TU)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get rid of macros private to this header file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#undef CurlchkszEQ
|
||||||
|
#undef CurlchkszGE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get rid of macros not intended to exist beyond this point.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#undef CURL_PULL_SYS_TYPES_H
|
||||||
|
#undef CURL_PULL_STDINT_H
|
||||||
|
#undef CURL_PULL_INTTYPES_H
|
||||||
|
|
||||||
|
#undef CURL_TYPEOF_CURL_OFF_T
|
||||||
|
|
||||||
|
#endif /* __CURL_CURLRULES_H */
|
@@ -31,13 +31,13 @@
|
|||||||
|
|
||||||
/* This is the version number of the libcurl package from which this header
|
/* This is the version number of the libcurl package from which this header
|
||||||
file origins: */
|
file origins: */
|
||||||
#define LIBCURL_VERSION "7.18.2-CVS"
|
#define LIBCURL_VERSION "7.19.0-CVS"
|
||||||
|
|
||||||
/* The numeric version number is also available "in parts" by using these
|
/* The numeric version number is also available "in parts" by using these
|
||||||
defines: */
|
defines: */
|
||||||
#define LIBCURL_VERSION_MAJOR 7
|
#define LIBCURL_VERSION_MAJOR 7
|
||||||
#define LIBCURL_VERSION_MINOR 18
|
#define LIBCURL_VERSION_MINOR 19
|
||||||
#define LIBCURL_VERSION_PATCH 2
|
#define LIBCURL_VERSION_PATCH 0
|
||||||
|
|
||||||
/* This is the numeric version of the libcurl version number, meant for easier
|
/* This is the numeric version of the libcurl version number, meant for easier
|
||||||
parsing and comparions by programs. The LIBCURL_VERSION_NUM define will
|
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
|
and it is always a greater number in a more recent release. It makes
|
||||||
comparisons with greater than and less than work.
|
comparisons with greater than and less than work.
|
||||||
*/
|
*/
|
||||||
#define LIBCURL_VERSION_NUM 0x071202
|
#define LIBCURL_VERSION_NUM 0x071300
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the date and time when the full source package was created. The
|
* This is the date and time when the full source package was created. The
|
||||||
|
@@ -224,6 +224,8 @@ _CURL_WARNING(_curl_easy_getinfo_err_curl_slist,
|
|||||||
(option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
|
(option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
|
||||||
(option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
|
(option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
|
||||||
(option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
|
(option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
|
||||||
|
(option) == CURLOPT_CRLFILE || \
|
||||||
|
(option) == CURLOPT_ISSUERCERT || \
|
||||||
0)
|
0)
|
||||||
|
|
||||||
/* evaluates to true if option takes a curl_write_callback argument */
|
/* evaluates to true if option takes a curl_write_callback argument */
|
||||||
|
@@ -8,3 +8,5 @@ config.h
|
|||||||
stamp-*
|
stamp-*
|
||||||
getdate.c
|
getdate.c
|
||||||
curllib.dsp
|
curllib.dsp
|
||||||
|
curllib.vcproj
|
||||||
|
*.dist
|
||||||
|
@@ -4,30 +4,35 @@
|
|||||||
#
|
#
|
||||||
# $Id$
|
# $Id$
|
||||||
|
|
||||||
TARGETS = libcurl_wc.dll libcurl_wc_imp.lib
|
TARGETS = libcurl_wc.dll libcurl_wc_imp.lib libcurl_wc.lib
|
||||||
|
|
||||||
CC = wcc386
|
CC = wcc386
|
||||||
|
|
||||||
CFLAGS = -3r -mf -d3 -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm -bt=nt &
|
CFLAGS = -3r -mf -d3 -hc -zff -zgf -zq -zm -zc -s -fr=con -w2 -fpi -oilrtfm -bt=nt &
|
||||||
-bd -d+ -dWIN32 -dCURL_CA_BUNDLE=getenv("CURL_CA_BUNDLE") &
|
-bd -d+ -dWIN32 -dCURL_CA_BUNDLE=getenv("CURL_CA_BUNDLE") &
|
||||||
-dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -dENABLE_IPV6 &
|
-dBUILDING_LIBCURL -dHAVE_SPNEGO=1 -dENABLE_IPV6 &
|
||||||
-dDEBUG_THREADING_GETADDRINFO -dDEBUG=1 -dCURLDEBUG -d_WIN32_WINNT=0x0501 &
|
-dDEBUG=1 -dCURLDEBUG -d_WIN32_WINNT=0x0501 -dWINBERAPI=__declspec(cdecl) &
|
||||||
-dWINBERAPI=__declspec(cdecl) -dWINLDAPAPI=__declspec(cdecl) &
|
-dWINLDAPAPI=__declspec(cdecl) -I. -I..\include
|
||||||
-I. -I..\include
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Change to suite.
|
# Change to suite.
|
||||||
#
|
#
|
||||||
ZLIB_ROOT = ..\..\..\zlib-1.2.3
|
ZLIB_ROOT = ..\..\..\zlib-1.2.3
|
||||||
USE_ZLIB = 0
|
USE_ZLIB = 0
|
||||||
|
USE_ARES = 0
|
||||||
|
|
||||||
!ifeq USE_ZLIB 1
|
!ifeq USE_ZLIB 1
|
||||||
CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I$(ZLIB_ROOT)
|
CFLAGS += -dHAVE_ZLIB_H -dHAVE_LIBZ -I$(ZLIB_ROOT)
|
||||||
!endif
|
!endif
|
||||||
|
|
||||||
OBJ_DIR = WC_Win32.obj
|
!ifeq USE_ARES 1
|
||||||
C_ARG = $(OBJ_DIR)\wcc386.arg
|
CFLAGS += -dUSE_ARES -I..\ares
|
||||||
LINK_ARG = $(OBJ_DIR)\wlink.arg
|
!endif
|
||||||
|
|
||||||
|
OBJ_BASE = WC_Win32.obj
|
||||||
|
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 &
|
OBJS = $(OBJ_DIR)\base64.obj $(OBJ_DIR)\connect.obj &
|
||||||
$(OBJ_DIR)\content_encoding.obj $(OBJ_DIR)\cookie.obj &
|
$(OBJ_DIR)\content_encoding.obj $(OBJ_DIR)\cookie.obj &
|
||||||
@@ -59,32 +64,52 @@ OBJS = $(OBJ_DIR)\base64.obj $(OBJ_DIR)\connect.obj &
|
|||||||
$(OBJ_DIR)\timeval.obj $(OBJ_DIR)\transfer.obj &
|
$(OBJ_DIR)\timeval.obj $(OBJ_DIR)\transfer.obj &
|
||||||
$(OBJ_DIR)\url.obj $(OBJ_DIR)\version.obj
|
$(OBJ_DIR)\url.obj $(OBJ_DIR)\version.obj
|
||||||
|
|
||||||
RESOURCE = $(OBJ_DIR)\libcurl.res
|
#
|
||||||
|
# Use $(OBJS) as a template to generate $(OBJS_STAT) and $(OBJS_DYN).
|
||||||
|
#
|
||||||
|
OBJ_DIR = $(OBJ_BASE)\stat
|
||||||
|
OBJS_STAT = $+ $(OBJS) $-
|
||||||
|
|
||||||
all: $(OBJ_DIR) $(C_ARG) $(TARGETS) .SYMBOLIC
|
OBJ_DIR = $(OBJ_BASE)\dyn
|
||||||
|
OBJS_DYN = $+ $(OBJS) $-
|
||||||
|
|
||||||
|
RESOURCE = $(OBJ_BASE)\dyn\libcurl.res
|
||||||
|
|
||||||
|
all: $(OBJ_BASE) $(C_ARG) $(TARGETS) .SYMBOLIC
|
||||||
@echo Welcome to libcurl
|
@echo Welcome to libcurl
|
||||||
|
|
||||||
$(OBJ_DIR):
|
$(OBJ_BASE):
|
||||||
mkdir $(OBJ_DIR)
|
- mkdir $(OBJ_BASE)
|
||||||
|
- mkdir $(OBJ_BASE)\stat
|
||||||
|
- mkdir $(OBJ_BASE)\dyn
|
||||||
|
|
||||||
libcurl_wc.dll libcurl_wc_imp.lib: $(OBJS) $(RESOURCE) $(LINK_ARG)
|
libcurl_wc.dll libcurl_wc_imp.lib: $(OBJS_DYN) $(RESOURCE) $(LINK_ARG)
|
||||||
wlink name libcurl_wc.dll @$(LINK_ARG)
|
wlink name libcurl_wc.dll @$(LINK_ARG)
|
||||||
|
|
||||||
|
libcurl_wc.lib: $(OBJS_STAT) $(LIB_ARG)
|
||||||
|
wlib -q -b- c $@ @$(LIB_ARG)
|
||||||
|
|
||||||
clean: .SYMBOLIC
|
clean: .SYMBOLIC
|
||||||
- rm -f $(OBJS) $(RESOURCE)
|
- rm -f $(OBJS_STAT) $(OBJS_DYN) $(RESOURCE) $(C_ARG) $(LINK_ARG) $(LIB_ARG)
|
||||||
|
|
||||||
vclean realclean: clean .SYMBOLIC
|
vclean realclean: clean .SYMBOLIC
|
||||||
- rm -f $(TARGETS) $(C_ARG) $(LINK_ARG) libcurl_wc.map
|
- rm -f $(TARGETS) libcurl_wc.map
|
||||||
- rmdir $(OBJ_DIR)
|
- rmdir $(OBJ_BASE)\stat
|
||||||
|
- rmdir $(OBJ_BASE)\dyn
|
||||||
|
- rmdir $(OBJ_BASE)
|
||||||
|
|
||||||
.ERASE
|
.ERASE
|
||||||
$(RESOURCE): libcurl.rc
|
$(RESOURCE): libcurl.rc
|
||||||
wrc -dCURLDEBUG=1 -q -r -zm -I..\include -fo=$@ libcurl.rc
|
wrc -dCURLDEBUG=1 -q -r -zm -I..\include -fo=$@ libcurl.rc
|
||||||
|
|
||||||
.ERASE
|
.ERASE
|
||||||
.c{$(OBJ_DIR)}.obj:
|
.c{$(OBJ_BASE)\dyn}.obj:
|
||||||
$(CC) $[@ @$(C_ARG) -fo=$@
|
$(CC) $[@ @$(C_ARG) -fo=$@
|
||||||
|
|
||||||
|
.ERASE
|
||||||
|
.c{$(OBJ_BASE)\stat}.obj:
|
||||||
|
$(CC) $[@ @$(C_ARG) -DCURL_STATICLIB -fo=$@
|
||||||
|
|
||||||
$(C_ARG): $(__MAKEFILES__)
|
$(C_ARG): $(__MAKEFILES__)
|
||||||
%create $^@
|
%create $^@
|
||||||
%append $^@ $(CFLAGS)
|
%append $^@ $(CFLAGS)
|
||||||
@@ -92,268 +117,389 @@ $(C_ARG): $(__MAKEFILES__)
|
|||||||
$(LINK_ARG): $(__MAKEFILES__)
|
$(LINK_ARG): $(__MAKEFILES__)
|
||||||
%create $^@
|
%create $^@
|
||||||
@%append $^@ system nt dll
|
@%append $^@ system nt dll
|
||||||
@%append $^@ file { $(OBJS) }
|
@%append $^@ file { $(OBJS_DYN) }
|
||||||
@%append $^@ option quiet, map, caseexact, eliminate, implib=libcurl_wc_imp.lib,
|
@%append $^@ option quiet, map, caseexact, eliminate, implib=libcurl_wc_imp.lib,
|
||||||
@%append $^@ res=$(RESOURCE) libpath $(%watcom)\lib386;$(%watcom)\lib386\nt
|
@%append $^@ res=$(RESOURCE) libpath $(%watcom)\lib386;$(%watcom)\lib386\nt
|
||||||
@%append $^@ library clib3r.lib, wldap32.lib, ws2_32.lib
|
@%append $^@ library clib3r.lib, wldap32.lib, ws2_32.lib
|
||||||
!ifeq USE_ZLIB 1
|
!ifeq USE_ZLIB 1
|
||||||
@%append $^@ library $(ZLIB_ROOT)\zlib.lib
|
@%append $^@ library $(ZLIB_ROOT)\zlib.lib
|
||||||
!endif
|
!endif
|
||||||
|
!ifeq USE_ARES 1
|
||||||
|
@%append $^@ library ..\ares\cares.lib
|
||||||
|
!endif
|
||||||
|
|
||||||
|
$(LIB_ARG): $(__MAKEFILES__)
|
||||||
|
%create $^@
|
||||||
|
for %f in ($(OBJS_STAT)) do @%append $^@ +- %f
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dependencies based on "gcc -MM .."
|
# Dependencies based on "gcc -MM .."
|
||||||
#
|
#
|
||||||
$(OBJ_DIR)\file.obj: file.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\file.obj: file.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h strtoofft.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h progress.h sendf.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h progress.h sendf.h &
|
||||||
escape.h file.h speedcheck.h getinfo.h transfer.h url.h memory.h &
|
escape.h file.h speedcheck.h getinfo.h transfer.h url.h memory.h &
|
||||||
parsedate.h ..\include\curl\mprintf.h memdebug.h .\memory.h
|
parsedate.h ..\include\curl\mprintf.h memdebug.h
|
||||||
$(OBJ_DIR)\timeval.obj: timeval.c timeval.h setup.h config-win32.h setup_once.h
|
$(OBJ_DIR)\timeval.obj: timeval.c timeval.h setup.h config-win32.h &
|
||||||
$(OBJ_DIR)\base64.obj: base64.c setup.h config-win32.h setup_once.h &
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h
|
||||||
..\include\curl\mprintf.h ..\include\curl\curl.h &
|
$(OBJ_DIR)\base64.obj: base64.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
|
||||||
..\include\curl\multi.h base64.h memory.h ..\include\curl\curl.h &
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
memdebug.h .\memory.h
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
$(OBJ_DIR)\hostip.obj: hostip.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
||||||
|
easyif.h curl_base64.h memory.h memdebug.h
|
||||||
|
$(OBJ_DIR)\hostip.obj: hostip.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h inet_ntop.h ..\include\curl\mprintf.h memory.h &
|
strerror.h url.h inet_ntop.h ..\include\curl\mprintf.h memory.h &
|
||||||
memdebug.h .\memory.h
|
memdebug.h
|
||||||
$(OBJ_DIR)\progress.obj: progress.c setup.h config-win32.h setup_once.h &
|
$(OBJ_DIR)\progress.obj: progress.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
sendf.h progress.h ..\include\curl\mprintf.h
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
$(OBJ_DIR)\formdata.obj: formdata.c setup.h config-win32.h setup_once.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h progress.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\mprintf.h
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h formdata.h strequal.h &
|
$(OBJ_DIR)\formdata.obj: formdata.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
memory.h ..\include\curl\mprintf.h memdebug.h .\memory.h
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
$(OBJ_DIR)\cookie.obj: cookie.c setup.h config-win32.h setup_once.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
..\include\curl\mprintf.h ..\include\curl\curl.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
|
llist.h splay.h easyif.h strequal.h memory.h ..\include\curl\mprintf.h &
|
||||||
|
memdebug.h
|
||||||
|
$(OBJ_DIR)\cookie.obj: cookie.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
|
||||||
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
|
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
||||||
strequal.h strtok.h sendf.h memory.h share.h strtoofft.h memdebug.h &
|
strequal.h strtok.h sendf.h memory.h share.h strtoofft.h memdebug.h
|
||||||
.\memory.h
|
$(OBJ_DIR)\http.obj: http.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\http.obj: http.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
|
||||||
progress.h base64.h strequal.h sslgen.h http_digest.h http_ntlm.h &
|
easyif.h progress.h curl_base64.h strequal.h sslgen.h http_digest.h &
|
||||||
http_negotiate.h url.h share.h http.h memory.h select.h parsedate.h &
|
http_ntlm.h http_negotiate.h url.h share.h http.h memory.h select.h &
|
||||||
strtoofft.h multiif.h ..\include\curl\mprintf.h memdebug.h .\memory.h
|
parsedate.h strtoofft.h multiif.h ..\include\curl\mprintf.h memdebug.h
|
||||||
$(OBJ_DIR)\sendf.obj: sendf.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
$(OBJ_DIR)\sendf.obj: sendf.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
sendf.h connect.h sslgen.h ..\include\curl\mprintf.h memory.h &
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
strerror.h easyif.h memdebug.h .\memory.h
|
llist.h splay.h sendf.h connect.h sslgen.h ssh.h multiif.h &
|
||||||
$(OBJ_DIR)\ftp.obj: ftp.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
..\include\curl\mprintf.h memory.h strerror.h easyif.h memdebug.h
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
$(OBJ_DIR)\ftp.obj: ftp.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
sendf.h easyif.h if2ip.h progress.h transfer.h escape.h http.h ftp.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
strtoofft.h strequal.h sslgen.h connect.h strerror.h memory.h &
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
inet_ntop.h select.h parsedate.h sockaddr.h multiif.h &
|
llist.h splay.h sendf.h easyif.h if2ip.h progress.h transfer.h escape.h &
|
||||||
..\include\curl\mprintf.h memdebug.h .\memory.h
|
http.h socks.h ftp.h strtoofft.h strequal.h sslgen.h connect.h &
|
||||||
$(OBJ_DIR)\url.obj: url.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
strerror.h memory.h inet_ntop.h select.h parsedate.h sockaddr.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
multiif.h url.h ..\include\curl\mprintf.h memdebug.h
|
||||||
|
$(OBJ_DIR)\url.obj: url.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h netrc.h base64.h sslgen.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h netrc.h sslgen.h &
|
||||||
transfer.h sendf.h progress.h strequal.h strerror.h escape.h strtok.h &
|
transfer.h sendf.h progress.h strequal.h strerror.h escape.h strtok.h &
|
||||||
share.h content_encoding.h http_digest.h http_negotiate.h select.h &
|
share.h content_encoding.h http_digest.h http_negotiate.h select.h &
|
||||||
multiif.h ftp.h dict.h telnet.h tftp.h http.h file.h curl_ldap.h url.h &
|
multiif.h easyif.h speedcheck.h ftp.h dict.h telnet.h tftp.h http.h &
|
||||||
connect.h inet_ntop.h http_ntlm.h &
|
file.h curl_ldap.h ssh.h url.h connect.h inet_ntop.h http_ntlm.h &
|
||||||
..\include\curl\mprintf.h memory.h memdebug.h .\memory.h
|
socks.h ..\include\curl\mprintf.h memory.h memdebug.h
|
||||||
$(OBJ_DIR)\dict.obj: dict.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\dict.obj: dict.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
|
||||||
progress.h strequal.h dict.h ..\include\curl\mprintf.h memdebug.h &
|
progress.h strequal.h dict.h ..\include\curl\mprintf.h memdebug.h
|
||||||
.\memory.h
|
$(OBJ_DIR)\if2ip.obj: if2ip.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\if2ip.obj: if2ip.c setup.h config-win32.h setup_once.h if2ip.h inet_ntop.h &
|
..\include\curl\curlrules.h setup_once.h if2ip.h
|
||||||
memory.h ..\include\curl\curl.h ..\include\curl\curlver.h &
|
$(OBJ_DIR)\speedcheck.obj: speedcheck.c setup.h config-win32.h &
|
||||||
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
memdebug.h .\memory.h
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
$(OBJ_DIR)\speedcheck.obj: speedcheck.c setup.h config-win32.h setup_once.h &
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
||||||
sendf.h multiif.h speedcheck.h
|
sendf.h multiif.h speedcheck.h
|
||||||
$(OBJ_DIR)\ldap.obj: ldap.c setup.h config-win32.h setup_once.h
|
$(OBJ_DIR)\ldap.obj: ldap.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\ssluse.obj: ssluse.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.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 formdata.h timeval.h &
|
||||||
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h escape.h &
|
||||||
|
transfer.h strequal.h strtok.h curl_ldap.h memory.h curl_base64.h &
|
||||||
|
..\include\curl\mprintf.h memdebug.h
|
||||||
|
$(OBJ_DIR)\ssluse.obj: ssluse.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h url.h inet_pton.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h url.h inet_pton.h &
|
||||||
ssluse.h connect.h strequal.h select.h sslgen.h &
|
ssluse.h connect.h strequal.h select.h sslgen.h &
|
||||||
..\include\curl\mprintf.h
|
..\include\curl\mprintf.h
|
||||||
$(OBJ_DIR)\version.obj: version.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
$(OBJ_DIR)\version.obj: version.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
sslgen.h ..\include\curl\mprintf.h
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
$(OBJ_DIR)\getenv.obj: getenv.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
llist.h splay.h sslgen.h ..\include\curl\mprintf.h
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
$(OBJ_DIR)\getenv.obj: getenv.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h memory.h memdebug.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
.\memory.h
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
$(OBJ_DIR)\escape.obj: escape.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
memory.h memdebug.h
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h memory.h urldata.h &
|
$(OBJ_DIR)\escape.obj: escape.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
splay.h easyif.h ..\include\curl\mprintf.h memdebug.h .\memory.h
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
$(OBJ_DIR)\mprintf.obj: mprintf.c setup.h config-win32.h setup_once.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
..\include\curl\mprintf.h ..\include\curl\curl.h &
|
memory.h urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
hash.h llist.h splay.h easyif.h ..\include\curl\mprintf.h memdebug.h
|
||||||
..\include\curl\multi.h memory.h ..\include\curl\curl.h memdebug.h &
|
$(OBJ_DIR)\mprintf.obj: mprintf.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
.\memory.h
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
|
||||||
$(OBJ_DIR)\telnet.obj: telnet.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
|
..\include\curl\multi.h memory.h ..\include\curl\curl.h memdebug.h
|
||||||
|
$(OBJ_DIR)\telnet.obj: telnet.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h &
|
||||||
telnet.h connect.h ..\include\curl\mprintf.h arpa_telnet.h memory.h &
|
telnet.h connect.h ..\include\curl\mprintf.h arpa_telnet.h memory.h &
|
||||||
select.h memdebug.h .\memory.h
|
select.h memdebug.h
|
||||||
$(OBJ_DIR)\netrc.obj: netrc.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
$(OBJ_DIR)\netrc.obj: netrc.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h netrc.h strequal.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
strtok.h memory.h ..\include\curl\mprintf.h memdebug.h .\memory.h
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
$(OBJ_DIR)\getinfo.obj: getinfo.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
netrc.h strequal.h strtok.h memory.h ..\include\curl\mprintf.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
memdebug.h
|
||||||
|
$(OBJ_DIR)\getinfo.obj: getinfo.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 &
|
||||||
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
|
llist.h splay.h getinfo.h memory.h sslgen.h connect.h memdebug.h
|
||||||
|
$(OBJ_DIR)\transfer.obj: transfer.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h strtoofft.h strequal.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 urldata.h cookie.h &
|
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
||||||
getinfo.h memory.h sslgen.h memdebug.h .\memory.h
|
netrc.h content_encoding.h transfer.h sendf.h speedcheck.h progress.h &
|
||||||
$(OBJ_DIR)\transfer.obj: transfer.c setup.h config-win32.h setup_once.h strtoofft.h &
|
http.h url.h getinfo.h sslgen.h http_digest.h http_ntlm.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h strequal.h urldata.h &
|
|
||||||
cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
|
|
||||||
splay.h netrc.h content_encoding.h transfer.h sendf.h speedcheck.h &
|
|
||||||
progress.h http.h url.h getinfo.h sslgen.h http_digest.h http_ntlm.h &
|
|
||||||
http_negotiate.h share.h memory.h select.h multiif.h easyif.h &
|
http_negotiate.h share.h memory.h select.h multiif.h easyif.h &
|
||||||
..\include\curl\mprintf.h memdebug.h .\memory.h
|
..\include\curl\mprintf.h memdebug.h
|
||||||
$(OBJ_DIR)\strequal.obj: strequal.c setup.h config-win32.h setup_once.h strequal.h &
|
$(OBJ_DIR)\strequal.obj: strequal.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h strequal.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
|
..\include\curl\multi.h ..\include\curl\curl.h
|
||||||
$(OBJ_DIR)\easy.obj: easy.c setup.h config-win32.h setup_once.h strequal.h &
|
$(OBJ_DIR)\easy.obj: easy.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h strequal.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 urldata.h cookie.h &
|
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
||||||
transfer.h sslgen.h url.h getinfo.h share.h strdup.h memory.h &
|
transfer.h sslgen.h url.h getinfo.h share.h strdup.h memory.h &
|
||||||
progress.h easyif.h sendf.h ..\include\curl\mprintf.h memdebug.h &
|
progress.h easyif.h select.h sendf.h http_ntlm.h connect.h &
|
||||||
.\memory.h
|
..\include\curl\mprintf.h memdebug.h
|
||||||
$(OBJ_DIR)\security.obj: security.c setup.h config-win32.h setup_once.h
|
$(OBJ_DIR)\security.obj: security.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\krb4.obj: krb4.c setup.h config-win32.h setup_once.h
|
..\include\curl\curlrules.h setup_once.h
|
||||||
$(OBJ_DIR)\memdebug.obj: memdebug.c setup.h config-win32.h setup_once.h &
|
$(OBJ_DIR)\krb4.obj: krb4.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h &
|
$(OBJ_DIR)\krb5.obj: krb5.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h
|
||||||
|
$(OBJ_DIR)\memdebug.obj: memdebug.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 &
|
||||||
..\include\curl\mprintf.h urldata.h cookie.h formdata.h timeval.h &
|
..\include\curl\mprintf.h urldata.h cookie.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h memory.h memdebug.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h memory.h memdebug.h
|
||||||
.\memory.h
|
$(OBJ_DIR)\http_chunks.obj: http_chunks.c setup.h config-win32.h &
|
||||||
$(OBJ_DIR)\http_chunks.obj: http_chunks.c setup.h config-win32.h setup_once.h urldata.h &
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
|
urldata.h cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
|
||||||
sendf.h content_encoding.h http.h memory.h ..\include\curl\mprintf.h &
|
|
||||||
memdebug.h .\memory.h
|
|
||||||
$(OBJ_DIR)\strtok.obj: strtok.c setup.h config-win32.h setup_once.h strtok.h
|
|
||||||
$(OBJ_DIR)\connect.obj: connect.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h if2ip.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h &
|
||||||
strerror.h connect.h memory.h select.h url.h multiif.h sockaddr.h &
|
content_encoding.h http.h memory.h easyif.h ..\include\curl\mprintf.h &
|
||||||
inet_ntop.h memdebug.h .\memory.h
|
memdebug.h
|
||||||
$(OBJ_DIR)\llist.obj: llist.c setup.h config-win32.h setup_once.h llist.h memory.h &
|
$(OBJ_DIR)\strtok.obj: strtok.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h strtok.h
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h .\memory.h
|
$(OBJ_DIR)\connect.obj: connect.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\hash.obj: hash.c setup.h config-win32.h setup_once.h hash.h llist.h memory.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\mprintf.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h .\memory.h
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
$(OBJ_DIR)\multi.obj: multi.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
..\include\curl\multi.h urldata.h cookie.h ..\include\curl\curl.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
||||||
transfer.h url.h connect.h progress.h memory.h easyif.h multiif.h &
|
sendf.h if2ip.h strerror.h connect.h memory.h select.h url.h multiif.h &
|
||||||
sendf.h memdebug.h .\memory.h
|
sockaddr.h inet_ntop.h inet_pton.h sslgen.h memdebug.h
|
||||||
$(OBJ_DIR)\content_encoding.obj: content_encoding.c setup.h config-win32.h setup_once.h
|
$(OBJ_DIR)\llist.obj: llist.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\share.obj: share.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
..\include\curl\curlrules.h setup_once.h llist.h memory.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
..\include\curl\multi.h ..\include\curl\curl.h memdebug.h
|
||||||
share.h memory.h memdebug.h .\memory.h
|
$(OBJ_DIR)\hash.obj: hash.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\http_digest.obj: http_digest.c setup.h config-win32.h setup_once.h urldata.h &
|
..\include\curl\curlrules.h setup_once.h hash.h llist.h memory.h &
|
||||||
cookie.h ..\include\curl\curl.h ..\include\curl\curlver.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 memdebug.h
|
||||||
|
$(OBJ_DIR)\multi.obj: multi.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 &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
sendf.h strequal.h base64.h md5.h http_digest.h strtok.h url.h memory.h &
|
llist.h splay.h transfer.h url.h connect.h progress.h memory.h easyif.h &
|
||||||
..\include\curl\mprintf.h memdebug.h .\memory.h
|
multiif.h sendf.h http.h memdebug.h
|
||||||
$(OBJ_DIR)\md5.obj: md5.c setup.h config-win32.h setup_once.h md5.h
|
$(OBJ_DIR)\content_encoding.obj: content_encoding.c setup.h config-win32.h &
|
||||||
$(OBJ_DIR)\http_negotiate.obj: http_negotiate.c setup.h config-win32.h setup_once.h
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h
|
||||||
$(OBJ_DIR)\http_ntlm.obj: http_ntlm.c setup.h config-win32.h setup_once.h
|
$(OBJ_DIR)\share.obj: share.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\inet_pton.obj: inet_pton.c setup.h config-win32.h setup_once.h
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
$(OBJ_DIR)\strtoofft.obj: strtoofft.c setup.h config-win32.h setup_once.h strtoofft.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
$(OBJ_DIR)\strerror.obj: strerror.c setup.h config-win32.h setup_once.h &
|
llist.h splay.h share.h memory.h memdebug.h
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
$(OBJ_DIR)\http_digest.obj: http_digest.c setup.h config-win32.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h strerror.h urldata.h &
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h &
|
urldata.h cookie.h ..\include\curl\curl.h ..\include\curl\curlver.h &
|
||||||
splay.h ..\include\curl\mprintf.h
|
..\include\curl\curlrules.h ..\include\curl\easy.h &
|
||||||
$(OBJ_DIR)\hostares.obj: hostares.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h strequal.h &
|
||||||
|
curl_base64.h curl_md5.h http_digest.h strtok.h url.h memory.h easyif.h &
|
||||||
|
..\include\curl\mprintf.h memdebug.h
|
||||||
|
$(OBJ_DIR)\md5.obj: md5.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h curl_md5.h
|
||||||
|
$(OBJ_DIR)\http_negotiate.obj: http_negotiate.c setup.h config-win32.h &
|
||||||
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h
|
||||||
|
$(OBJ_DIR)\http_ntlm.obj: http_ntlm.c setup.h config-win32.h &
|
||||||
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
|
urldata.h cookie.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 formdata.h timeval.h &
|
||||||
|
http_chunks.h hostip.h hash.h llist.h splay.h easyif.h sendf.h &
|
||||||
|
strequal.h curl_base64.h http_ntlm.h url.h memory.h ssluse.h &
|
||||||
|
..\include\curl\mprintf.h memdebug.h
|
||||||
|
$(OBJ_DIR)\inet_pton.obj: inet_pton.c setup.h config-win32.h &
|
||||||
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
|
inet_pton.h
|
||||||
|
$(OBJ_DIR)\strtoofft.obj: strtoofft.c setup.h config-win32.h &
|
||||||
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
|
strtoofft.h
|
||||||
|
$(OBJ_DIR)\strerror.obj: strerror.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 &
|
||||||
|
strerror.h urldata.h cookie.h formdata.h timeval.h http_chunks.h &
|
||||||
|
hostip.h hash.h llist.h splay.h ..\include\curl\mprintf.h
|
||||||
|
$(OBJ_DIR)\hostares.obj: hostares.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h connect.h ..\include\curl\mprintf.h memory.h &
|
strerror.h url.h multiif.h connect.h select.h ..\include\curl\mprintf.h &
|
||||||
memdebug.h .\memory.h
|
memory.h memdebug.h
|
||||||
$(OBJ_DIR)\hostasyn.obj: hostasyn.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\hostasyn.obj: hostasyn.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h &
|
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h
|
||||||
.\memory.h
|
$(OBJ_DIR)\hostip4.obj: hostip4.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\hostip4.obj: hostip4.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h inet_pton.h ..\include\curl\mprintf.h memory.h &
|
strerror.h url.h inet_pton.h ..\include\curl\mprintf.h memory.h &
|
||||||
memdebug.h .\memory.h
|
memdebug.h
|
||||||
$(OBJ_DIR)\hostip6.obj: hostip6.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\hostip6.obj: hostip6.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h inet_pton.h connect.h ..\include\curl\mprintf.h &
|
strerror.h url.h inet_pton.h connect.h ..\include\curl\mprintf.h &
|
||||||
memory.h memdebug.h .\memory.h
|
memory.h memdebug.h
|
||||||
$(OBJ_DIR)\hostsyn.obj: hostsyn.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\hostsyn.obj: hostsyn.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h &
|
strerror.h url.h ..\include\curl\mprintf.h memory.h memdebug.h
|
||||||
.\memory.h
|
$(OBJ_DIR)\hostthre.obj: hostthre.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\hostthre.obj: hostthre.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h share.h &
|
||||||
strerror.h url.h multiif.h ..\include\curl\mprintf.h inet_ntop.h &
|
strerror.h url.h multiif.h ..\include\curl\mprintf.h inet_ntop.h &
|
||||||
memory.h memdebug.h .\memory.h
|
memory.h memdebug.h
|
||||||
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c setup.h config-win32.h setup_once.h
|
$(OBJ_DIR)\inet_ntop.obj: inet_ntop.c setup.h config-win32.h &
|
||||||
$(OBJ_DIR)\parsedate.obj: parsedate.c setup.h config-win32.h setup_once.h &
|
..\include\curl\curlbuild.h ..\include\curl\curlrules.h setup_once.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\mprintf.h ..\include\curl\curl.h &
|
||||||
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
|
..\include\curl\easy.h ..\include\curl\multi.h inet_ntop.h
|
||||||
|
$(OBJ_DIR)\parsedate.obj: parsedate.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
|
..\include\curl\multi.h ..\include\curl\curl.h
|
||||||
$(OBJ_DIR)\select.obj: select.c setup.h config-win32.h setup_once.h ..\include\curl\curl.h &
|
$(OBJ_DIR)\select.obj: select.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h ..\include\curl\curl.h &
|
||||||
..\include\curl\multi.h ..\include\curl\curl.h urldata.h cookie.h &
|
..\include\curl\curlver.h ..\include\curl\curlrules.h &
|
||||||
formdata.h timeval.h http_chunks.h hostip.h hash.h llist.h splay.h &
|
..\include\curl\easy.h ..\include\curl\multi.h ..\include\curl\curl.h &
|
||||||
connect.h select.h
|
urldata.h cookie.h formdata.h timeval.h http_chunks.h hostip.h hash.h &
|
||||||
$(OBJ_DIR)\gtls.obj: gtls.c setup.h config-win32.h setup_once.h
|
llist.h splay.h connect.h select.h
|
||||||
$(OBJ_DIR)\sslgen.obj: sslgen.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\gtls.obj: gtls.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h
|
||||||
|
$(OBJ_DIR)\sslgen.obj: sslgen.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h sslgen.h ssluse.h gtls.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h sslgen.h ssluse.h gtls.h &
|
||||||
sendf.h strequal.h url.h memory.h memdebug.h .\memory.h
|
nssg.h qssl.h sendf.h strequal.h url.h memory.h progress.h memdebug.h
|
||||||
$(OBJ_DIR)\tftp.obj: tftp.c setup.h config-win32.h setup_once.h urldata.h cookie.h &
|
$(OBJ_DIR)\tftp.obj: tftp.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
..\include\curl\curl.h ..\include\curl\curlver.h ..\include\curl\easy.h &
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
..\include\curl\multi.h ..\include\curl\curl.h formdata.h timeval.h &
|
||||||
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h tftp.h &
|
http_chunks.h hostip.h hash.h llist.h splay.h transfer.h sendf.h tftp.h &
|
||||||
progress.h connect.h strerror.h sockaddr.h ..\include\curl\mprintf.h &
|
progress.h connect.h strerror.h sockaddr.h url.h &
|
||||||
memory.h select.h memdebug.h .\memory.h
|
..\include\curl\mprintf.h memory.h select.h memdebug.h
|
||||||
$(OBJ_DIR)\splay.obj: splay.c splay.h
|
$(OBJ_DIR)\splay.obj: splay.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
$(OBJ_DIR)\strdup.obj: strdup.c setup.h config-win32.h setup_once.h strdup.h
|
..\include\curl\curlrules.h setup_once.h splay.h
|
||||||
|
$(OBJ_DIR)\strdup.obj: strdup.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h strdup.h
|
||||||
|
$(OBJ_DIR)\socks.obj: socks.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
||||||
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h strequal.h &
|
||||||
|
select.h connect.h socks.h memdebug.h
|
||||||
|
$(OBJ_DIR)\ssh.obj: ssh.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h
|
||||||
|
$(OBJ_DIR)\nss.obj: nss.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h urldata.h cookie.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 formdata.h timeval.h &
|
||||||
|
http_chunks.h hostip.h hash.h llist.h splay.h sendf.h url.h connect.h &
|
||||||
|
strequal.h select.h sslgen.h ..\include\curl\mprintf.h
|
||||||
|
$(OBJ_DIR)\qssl.obj: qssl.c setup.h config-win32.h ..\include\curl\curlbuild.h &
|
||||||
|
..\include\curl\curlrules.h setup_once.h
|
||||||
|
@@ -26,31 +26,52 @@ DSP = curllib.dsp
|
|||||||
VCPROJ = curllib.vcproj
|
VCPROJ = curllib.vcproj
|
||||||
|
|
||||||
DOCS = README.encoding README.memoryleak README.ares README.curlx \
|
DOCS = README.encoding README.memoryleak README.ares README.curlx \
|
||||||
README.hostip README.multi_socket README.httpauth README.pipelining
|
README.hostip README.multi_socket README.httpauth README.pipelining \
|
||||||
|
README.NSS README.curl_off_t
|
||||||
|
|
||||||
EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 Makefile.riscos \
|
EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 Makefile.riscos $(DSP) \
|
||||||
$(DSP) curllib.dsw config-win32.h config-win32ce.h config-riscos.h \
|
curllib.dsw config-win32.h config-win32ce.h config-riscos.h config-mac.h \
|
||||||
config-mac.h config.h.in makefile.dj config.dos \
|
config.h.in makefile.dj config.dos libcurl.framework.make libcurl.plist \
|
||||||
libcurl.framework.make libcurl.plist libcurl.rc config-amigaos.h \
|
libcurl.rc config-amigaos.h amigaos.c amigaos.h makefile.amiga \
|
||||||
amigaos.c amigaos.h makefile.amiga Makefile.netware nwlib.c nwos.c \
|
Makefile.netware nwlib.c nwos.c libcurl.imp msvcproj.head msvcproj.foot \
|
||||||
libcurl.imp msvcproj.head msvcproj.foot config-win32ce.h \
|
config-win32ce.h config-os400.h setup-os400.h config-symbian.h \
|
||||||
config-os400.h setup-os400.h config-symbian.h \
|
Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl \
|
||||||
Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl
|
firefox-db2pem.sh
|
||||||
|
|
||||||
CLEANFILES = $(DSP) $(VCPROJ)
|
CLEANFILES = $(DSP) $(VCPROJ)
|
||||||
|
|
||||||
lib_LTLIBRARIES = libcurl.la
|
lib_LTLIBRARIES = libcurl.la
|
||||||
LIBCURL_LIBS = @LIBCURL_LIBS@
|
LIBCURL_LIBS = @LIBCURL_LIBS@
|
||||||
|
|
||||||
# we use srcdir/include for the static global include files
|
# Specify our include paths here, and do it relative to $(top_srcdir) and
|
||||||
# we use builddir/lib for the generated lib/config.h file to get found
|
# $(top_builddir), to ensure that these paths which belong to the library
|
||||||
# we use srcdir/lib for the lib-private header files
|
# 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_srcdir)/include is for libcurl's external include files
|
||||||
|
# $(top_builddir)/lib is for libcurl's generated lib/config.h file
|
||||||
|
# $(top_srcdir)/lib is for libcurl's lib/setup.h and other "private" files
|
||||||
|
|
||||||
INCLUDES = -I$(top_srcdir)/include \
|
INCLUDES = -I$(top_builddir)/include \
|
||||||
|
-I$(top_srcdir)/include \
|
||||||
-I$(top_builddir)/lib \
|
-I$(top_builddir)/lib \
|
||||||
-I$(top_srcdir)/lib
|
-I$(top_srcdir)/lib
|
||||||
|
|
||||||
VERSION=-version-info 5:0:1
|
if SONAME_BUMP
|
||||||
|
#
|
||||||
|
# Bumping of SONAME conditionally may seem like a weird thing to do, and yeah
|
||||||
|
# it is. The problem is that we try to avoid the bump as hard as possible, but
|
||||||
|
# yet it is still necessary for a few rare situations. The configure script will
|
||||||
|
# attempt to figure out these situations, and it can be forced to consider this
|
||||||
|
# to be such a case! See README.curl_off_t for further details.
|
||||||
|
#
|
||||||
|
# This conditional soname bump SHOULD be removed at next "proper" bump.
|
||||||
|
#
|
||||||
|
VERSIONINFO=-version-info 6:0:1
|
||||||
|
else
|
||||||
|
VERSIONINFO=-version-info 5:0:1
|
||||||
|
endif
|
||||||
|
|
||||||
# This flag accepts an argument of the form current[:revision[:age]]. So,
|
# This flag accepts an argument of the form current[:revision[:age]]. So,
|
||||||
# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
|
# passing -version-info 3:12:1 sets current to 3, revision to 12, and age to
|
||||||
@@ -91,7 +112,7 @@ if MIMPURE
|
|||||||
MIMPURE = -mimpure-text
|
MIMPURE = -mimpure-text
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libcurl_la_LDFLAGS = $(UNDEF) $(VERSION) $(MIMPURE) $(LIBCURL_LIBS)
|
libcurl_la_LDFLAGS = $(UNDEF) $(VERSIONINFO) $(MIMPURE) $(LIBCURL_LIBS)
|
||||||
|
|
||||||
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
||||||
include Makefile.inc
|
include Makefile.inc
|
||||||
@@ -108,7 +129,11 @@ $(DSP): msvcproj.head msvcproj.foot Makefile.am
|
|||||||
echo "creating $(DSP)"
|
echo "creating $(DSP)"
|
||||||
@(cp $(srcdir)/msvcproj.head $(DSP); \
|
@(cp $(srcdir)/msvcproj.head $(DSP); \
|
||||||
echo "# Begin Group \"Source Files\"" $(DSPOUT); \
|
echo "# Begin Group \"Source Files\"" $(DSPOUT); \
|
||||||
for file in $(WIN32SOURCES); do \
|
echo "" $(DSPOUT); \
|
||||||
|
echo "# PROP Default_Filter \"\"" $(DSPOUT); \
|
||||||
|
win32_srcs='$(WIN32SOURCES)'; \
|
||||||
|
sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
|
||||||
|
for file in $$sorted_srcs; do \
|
||||||
echo "# Begin Source File" $(DSPOUT); \
|
echo "# Begin Source File" $(DSPOUT); \
|
||||||
echo "" $(DSPOUT); \
|
echo "" $(DSPOUT); \
|
||||||
echo "SOURCE=.\\"$$file $(DSPOUT); \
|
echo "SOURCE=.\\"$$file $(DSPOUT); \
|
||||||
@@ -116,7 +141,11 @@ $(DSP): msvcproj.head msvcproj.foot Makefile.am
|
|||||||
done; \
|
done; \
|
||||||
echo "# End Group" $(DSPOUT); \
|
echo "# End Group" $(DSPOUT); \
|
||||||
echo "# Begin Group \"Header Files\"" $(DSPOUT); \
|
echo "# Begin Group \"Header Files\"" $(DSPOUT); \
|
||||||
for file in $(WIN32HEADERS); do \
|
echo "" $(DSPOUT); \
|
||||||
|
echo "# PROP Default_Filter \"\"" $(DSPOUT); \
|
||||||
|
win32_hdrs='$(WIN32HEADERS)'; \
|
||||||
|
sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
|
||||||
|
for file in $$sorted_hdrs; do \
|
||||||
echo "# Begin Source File" $(DSPOUT); \
|
echo "# Begin Source File" $(DSPOUT); \
|
||||||
echo "" $(DSPOUT); \
|
echo "" $(DSPOUT); \
|
||||||
echo "SOURCE=.\\"$$file $(DSPOUT); \
|
echo "SOURCE=.\\"$$file $(DSPOUT); \
|
||||||
@@ -128,11 +157,15 @@ $(DSP): msvcproj.head msvcproj.foot Makefile.am
|
|||||||
$(VCPROJ): vc8proj.head vc8proj.foot Makefile.am
|
$(VCPROJ): vc8proj.head vc8proj.foot Makefile.am
|
||||||
echo "creating $(VCPROJ)"
|
echo "creating $(VCPROJ)"
|
||||||
@(cp $(srcdir)/vc8proj.head $(VCPROJ); \
|
@(cp $(srcdir)/vc8proj.head $(VCPROJ); \
|
||||||
for file in $(WIN32SOURCES); do \
|
win32_srcs='$(WIN32SOURCES)'; \
|
||||||
|
sorted_srcs=`for file in $$win32_srcs; do echo $$file; done | sort`; \
|
||||||
|
for file in $$sorted_srcs; do \
|
||||||
echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
|
echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
|
||||||
done; \
|
done; \
|
||||||
echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT); \
|
echo "</Filter><Filter Name=\"Header Files\">" $(VCPROJOUT); \
|
||||||
for file in $(WIN32HEADERS); do \
|
win32_hdrs='$(WIN32HEADERS)'; \
|
||||||
|
sorted_hdrs=`for file in $$win32_hdrs; do echo $$file; done | sort`; \
|
||||||
|
for file in $$sorted_hdrs; do \
|
||||||
echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
|
echo "<File RelativePath=\""$$file"\"></File>" $(VCPROJOUT); \
|
||||||
done; \
|
done; \
|
||||||
cat $(srcdir)/vc8proj.foot $(VCPROJOUT) )
|
cat $(srcdir)/vc8proj.foot $(VCPROJOUT) )
|
||||||
|
@@ -11,13 +11,13 @@ 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 \
|
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
|
strdup.c socks.c ssh.c nss.c qssl.c
|
||||||
|
|
||||||
HHEADERS = arpa_telnet.h netrc.h file.h timeval.h base64.h hostip.h \
|
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 \
|
progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h \
|
||||||
if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h \
|
if2ip.h speedcheck.h urldata.h curl_ldap.h ssluse.h escape.h telnet.h \
|
||||||
getinfo.h strequal.h krb4.h memdebug.h inet_ntoa_r.h http_chunks.h \
|
getinfo.h strequal.h krb4.h memdebug.h inet_ntoa_r.h http_chunks.h \
|
||||||
strtok.h connect.h llist.h hash.h content_encoding.h share.h md5.h \
|
strtok.h connect.h llist.h hash.h content_encoding.h share.h \
|
||||||
http_digest.h http_negotiate.h http_ntlm.h inet_pton.h \
|
curl_md5.h http_digest.h http_negotiate.h http_ntlm.h inet_pton.h \
|
||||||
strtoofft.h strerror.h inet_ntop.h curlx.h memory.h setup.h \
|
strtoofft.h strerror.h inet_ntop.h curlx.h memory.h setup.h \
|
||||||
transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.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 \
|
tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h \
|
||||||
qssl.h
|
curl_base64.h
|
||||||
|
@@ -20,7 +20,7 @@ endif
|
|||||||
|
|
||||||
# Edit the path below to point to the base of your OpenSSL package.
|
# Edit the path below to point to the base of your OpenSSL package.
|
||||||
ifndef OPENSSL_PATH
|
ifndef OPENSSL_PATH
|
||||||
OPENSSL_PATH = ../../openssl-0.9.8g
|
OPENSSL_PATH = ../../openssl-0.9.8h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Edit the path below to point to the base of your LibSSH2 package.
|
# Edit the path below to point to the base of your LibSSH2 package.
|
||||||
@@ -94,7 +94,7 @@ LIBARCH_L = $(shell $(AWK) 'BEGIN {print tolower(ARGV[1])}' $(LIBARCH))
|
|||||||
-include $(OBJDIR)/version.inc
|
-include $(OBJDIR)/version.inc
|
||||||
|
|
||||||
# Global flags for all compilers
|
# Global flags for all compilers
|
||||||
CFLAGS = $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
|
CFLAGS += $(OPT) -D$(DB) -DNETWARE -DHAVE_CONFIG_H -nostdinc
|
||||||
|
|
||||||
ifeq ($(CC),mwccnlm)
|
ifeq ($(CC),mwccnlm)
|
||||||
LD = mwldnlm
|
LD = mwldnlm
|
||||||
@@ -168,7 +168,7 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ifdef WITH_SSL
|
ifdef WITH_SSL
|
||||||
INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L) -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)/openssl
|
INCLUDES += -I$(OPENSSL_PATH)/outinc_nw_$(LIBARCH_L)
|
||||||
LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
|
LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/ssl.$(LIBEXT)
|
||||||
LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
|
LDLIBS += $(OPENSSL_PATH)/out_nw_$(LIBARCH_L)/crypto.$(LIBEXT)
|
||||||
IMPORTS += GetProcessSwitchCount RunningProcess
|
IMPORTS += GetProcessSwitchCount RunningProcess
|
||||||
@@ -212,9 +212,11 @@ endif
|
|||||||
ifeq ($(findstring linux,$(OSTYPE)),linux)
|
ifeq ($(findstring linux,$(OSTYPE)),linux)
|
||||||
DL = '
|
DL = '
|
||||||
DS = /
|
DS = /
|
||||||
|
PCT = %
|
||||||
#-include $(NDKBASE)/nlmconv/ncpfs.inc
|
#-include $(NDKBASE)/nlmconv/ncpfs.inc
|
||||||
else
|
else
|
||||||
DS = \\
|
DS = \\
|
||||||
|
PCT = %%
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
# Makefile.inc provides the CSOURCES and HHEADERS defines
|
||||||
@@ -230,7 +232,7 @@ nlm: prebuild $(TARGET).nlm
|
|||||||
|
|
||||||
lib: prebuild $(TARGET).$(LIBEXT)
|
lib: prebuild $(TARGET).$(LIBEXT)
|
||||||
|
|
||||||
prebuild: $(OBJDIR) $(OBJDIR)/version.inc config.h
|
prebuild: $(OBJDIR) $(CURL_INC)/curl/curlbuild.h $(OBJDIR)/version.inc config.h
|
||||||
|
|
||||||
$(OBJDIR)/%.o: %.c
|
$(OBJDIR)/%.o: %.c
|
||||||
# @echo Compiling $<
|
# @echo Compiling $<
|
||||||
@@ -382,6 +384,13 @@ ifeq ($(LIBARCH),CLIB)
|
|||||||
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG3 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_RETV int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG2 char$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG3 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG6 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_RETV int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG2 char *$(DL) >> $@
|
||||||
@@ -389,6 +398,7 @@ ifeq ($(LIBARCH),CLIB)
|
|||||||
@echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG4 int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_RETV int$(DL) >> $@
|
||||||
@echo $(DL)#define socklen_t int$(DL) >> $@
|
@echo $(DL)#define socklen_t int$(DL) >> $@
|
||||||
|
@echo $(DL)#define pressanykey PressAnyKeyToContinue$(DL) >> $@
|
||||||
else
|
else
|
||||||
@echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
|
@echo $(DL)#define OS "i586-pc-libc-NetWare"$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
|
@echo $(DL)#define HAVE_FTRUNCATE 1$(DL) >> $@
|
||||||
@@ -414,6 +424,14 @@ else
|
|||||||
@echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG3 size_t$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_ARG4 int$(DL) >> $@
|
||||||
@echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
|
@echo $(DL)#define RECV_TYPE_RETV ssize_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG1 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG2 void$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG3 size_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG4 int$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG5 struct sockaddr$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG6 size_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_RETV ssize_t$(DL) >> $@
|
||||||
|
@echo $(DL)#define RECVFROM_TYPE_ARG2_IS_VOID 1$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
@echo $(DL)#define SEND_QUAL_ARG2$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG1 int$(DL) >> $@
|
||||||
@echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
|
@echo $(DL)#define SEND_TYPE_ARG2 void *$(DL) >> $@
|
||||||
@@ -425,6 +443,7 @@ ifdef ENABLE_IPV6
|
|||||||
@echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
|
@echo $(DL)#define ENABLE_IPV6 1$(DL) >> $@
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
@echo $(DL)#define USE_MANUAL 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_ARPA_INET_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_ASSERT_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_ERR_H 1$(DL) >> $@
|
||||||
@@ -437,13 +456,16 @@ endif
|
|||||||
@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
|
@echo $(DL)#define HAVE_INET_ADDR 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
|
@echo $(DL)#define HAVE_INET_NTOA 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_LL 1$(DL) >> $@
|
@echo $(DL)#define HAVE_LL 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_LOCALE_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
|
@echo $(DL)#define HAVE_LOCALTIME_R 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_MALLOC_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_NETINET_IN_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
|
@echo $(DL)#define HAVE_RECV 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_RECVFROM 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SELECT 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SEND 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SETJMP_H 1$(DL) >> $@
|
||||||
|
@echo $(DL)#define HAVE_SETLOCALE 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SIGNAL 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SIGNAL_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
|
@echo $(DL)#define HAVE_SIG_ATOMIC_T 1$(DL) >> $@
|
||||||
@@ -464,7 +486,6 @@ endif
|
|||||||
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
|
@echo $(DL)#define HAVE_UTIME 1$(DL) >> $@
|
||||||
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
|
@echo $(DL)#define HAVE_UTIME_H 1$(DL) >> $@
|
||||||
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
|
@echo $(DL)#define RETSIGTYPE void$(DL) >> $@
|
||||||
@echo $(DL)#define SIZEOF_CURL_OFF_T 4$(DL) >> $@
|
|
||||||
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
|
@echo $(DL)#define SIZEOF_STRUCT_IN_ADDR 4$(DL) >> $@
|
||||||
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
|
@echo $(DL)#define STDC_HEADERS 1$(DL) >> $@
|
||||||
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
|
@echo $(DL)#define TIME_WITH_SYS_TIME 1$(DL) >> $@
|
||||||
@@ -569,4 +590,33 @@ ca-bundle.crt: mk-ca-bundle.pl
|
|||||||
@echo Creating $@
|
@echo Creating $@
|
||||||
@-$(PERL) $< -b -n $@
|
@-$(PERL) $< -b -n $@
|
||||||
|
|
||||||
|
$(CURL_INC)/curl/curlbuild.h: Makefile.netware FORCE
|
||||||
|
@echo Creating $@
|
||||||
|
@echo $(DL)/* $@ intended for NetWare target.$(DL) > $@
|
||||||
|
@echo $(DL)** Do not edit this file - it is created by make!$(DL) >> $@
|
||||||
|
@echo $(DL)** All your changes will be lost!!$(DL) >> $@
|
||||||
|
@echo $(DL)*/$(DL) >> $@
|
||||||
|
@echo $(DL)#ifndef __CURL_CURLBUILD_H$(DL) >> $@
|
||||||
|
@echo $(DL)#define __CURL_CURLBUILD_H$(DL) >> $@
|
||||||
|
ifeq ($(LIBARCH),LIBC)
|
||||||
|
@echo $(DL)#define CURL_SIZEOF_LONG 4$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_TYPEOF_CURL_OFF_T long long$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_FORMAT_CURL_OFF_T "lld"$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_FORMAT_CURL_OFF_TU "llu"$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_FORMAT_OFF_T "$(PCT)lld"$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_SIZEOF_CURL_OFF_T 8$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_T LL$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_TU ULL$(DL) >> $@
|
||||||
|
else
|
||||||
|
@echo $(DL)#define CURL_SIZEOF_LONG 4$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_TYPEOF_CURL_OFF_T long$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_FORMAT_CURL_OFF_T "ld"$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_FORMAT_CURL_OFF_TU "lu"$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_FORMAT_OFF_T "$(PCT)ld"$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_SIZEOF_CURL_OFF_T 4$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_T L$(DL) >> $@
|
||||||
|
@echo $(DL)#define CURL_SUFFIX_CURL_OFF_TU UL$(DL) >> $@
|
||||||
|
endif
|
||||||
|
@echo $(DL)typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;$(DL) >> $@
|
||||||
|
@echo $(DL)#endif /* __CURL_CURLBUILD_H */$(DL) >> $@
|
||||||
|
|
||||||
|
33
lib/README.NSS
Normal file
33
lib/README.NSS
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
libcurl with NSS
|
||||||
|
================
|
||||||
|
|
||||||
|
Author: Daniel Stenberg
|
||||||
|
Date: June 24, 2008
|
||||||
|
|
||||||
|
NSS home => http://www.mozilla.org/projects/security/pki/nss/
|
||||||
|
|
||||||
|
libcurl can be built to use the NSS libraries for SSL/TLS. Invoke configure
|
||||||
|
--without-ssl --with-nss.
|
||||||
|
|
||||||
|
The source code in lib/nss.c currently cause a compiler warning due to the
|
||||||
|
lack of a prototype. The prototype is provided by the public header provided
|
||||||
|
by NSS called "base64.h". But since we use a private header in libcurl named
|
||||||
|
identically, we cannot include the NSS one.
|
||||||
|
|
||||||
|
This problem persists because:
|
||||||
|
|
||||||
|
* NSS doesn't use a properly established separate subdir for their include
|
||||||
|
files. Instead different distros have put them in /usr/include/nss and
|
||||||
|
/usr/include/nss3 etc.
|
||||||
|
|
||||||
|
* The pkg-config output for NSS provides a full -I path to the nss include dir,
|
||||||
|
so we cannot #include <nss/base64.h> or <nss3/base64.h>. This too may be due
|
||||||
|
to how distros do it.
|
||||||
|
|
||||||
|
* I tried getting the (all new in June 2008) NSS 3.12 tarball to check how it
|
||||||
|
behaves out-of-box but this wouldn't even build - complaining on missing
|
||||||
|
files that aren't included in the tarball. The tarball doesn't even include
|
||||||
|
build instuctions but you must hunt them down on their web site.
|
||||||
|
|
||||||
|
Due to these design problems we may of course get further similar problems in
|
||||||
|
the future, but I hope we can work them out somehow along the way.
|
68
lib/README.curl_off_t
Normal file
68
lib/README.curl_off_t
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
|
||||||
|
curl_off_t explained
|
||||||
|
====================
|
||||||
|
|
||||||
|
curl_off_t is a data type provided by the external libcurl include headers. It
|
||||||
|
is the type meant to be used for the curl_easy_setopt() options that end with
|
||||||
|
LARGE. The type is 64bit large on most modern platforms.
|
||||||
|
|
||||||
|
Transition from < 7.19.0 to >= 7.19.0
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
Applications that used libcurl before 7.19.0 that are rebuilt with a libcurl
|
||||||
|
that is 7.19.0 or later may or may not have to worry about anything of
|
||||||
|
this. We have made a significant effort to make the transition really seamless
|
||||||
|
and transparent.
|
||||||
|
|
||||||
|
You have have to take notice if you are in one of the following situations:
|
||||||
|
|
||||||
|
o Your app is using or will after the transition use a libcurl that is built
|
||||||
|
with LFS (large file support) disabled even though your system otherwise
|
||||||
|
supports it.
|
||||||
|
|
||||||
|
o Your app is using or will after the transition use a libcurl that doesn't
|
||||||
|
support LFS at all, but your system and compiler support 64bit data types.
|
||||||
|
|
||||||
|
In both these cases, the curl_off_t type will now (after the transition) be
|
||||||
|
64bit where it previously was 32bit. This will cause a binary incompatibility
|
||||||
|
that you MAY need to deal with.
|
||||||
|
|
||||||
|
Benefits
|
||||||
|
--------
|
||||||
|
|
||||||
|
This new way has several benefits:
|
||||||
|
|
||||||
|
o Platforms without LFS support can still use libcurl to do >32 bit file
|
||||||
|
transfers and range operations etc as long as they have >32 bit data-types
|
||||||
|
supported.
|
||||||
|
|
||||||
|
o Applications will no longer easily build with the curl_off_t size
|
||||||
|
mismatched, which has been a very frequent (and annoying) problem with
|
||||||
|
libcurl <= 7.18.2
|
||||||
|
|
||||||
|
Historically
|
||||||
|
------------
|
||||||
|
|
||||||
|
Previously, before 7.19.0, the curl_off_t type would be rather strongly
|
||||||
|
connected to the size of the system off_t type, where currently curl_off_t is
|
||||||
|
independent of that.
|
||||||
|
|
||||||
|
The strong connection to off_t made it troublesome for application authors
|
||||||
|
since when they did mistakes, they could get curl_off_t type of different
|
||||||
|
sizes in the app vs libcurl, and that caused strange effects that were hard to
|
||||||
|
track and detect by users of libcurl.
|
||||||
|
|
||||||
|
SONAME
|
||||||
|
------
|
||||||
|
|
||||||
|
We opted to not bump the soname for the library unconditionally, simply
|
||||||
|
because soname bumping is causing a lot of grief and moaning all over the
|
||||||
|
community so we try to keep that at minimum. Also, our selected design path
|
||||||
|
should be 100% backwards compatible for the vast majority of all libcurl
|
||||||
|
users.
|
||||||
|
|
||||||
|
Enforce SONAME bump
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
If configure doesn't detect your case where a bump is necessary, re-run it
|
||||||
|
with the --enable-soname-bump command line option!
|
@@ -5,7 +5,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
#include "urldata.h" /* for the SessionHandle definition */
|
#include "urldata.h" /* for the SessionHandle definition */
|
||||||
#include "easyif.h" /* for Curl_convert_... prototypes */
|
#include "easyif.h" /* for Curl_convert_... prototypes */
|
||||||
#include "base64.h"
|
#include "curl_base64.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
|
|
||||||
/* include memdebug.h last */
|
/* include memdebug.h last */
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@@ -103,7 +103,6 @@
|
|||||||
#define SELECT_TYPE_ARG1 int
|
#define SELECT_TYPE_ARG1 int
|
||||||
#define SELECT_TYPE_ARG234 (fd_set *)
|
#define SELECT_TYPE_ARG234 (fd_set *)
|
||||||
#define SELECT_TYPE_ARG5 (struct timeval *)
|
#define SELECT_TYPE_ARG5 (struct timeval *)
|
||||||
#define SIZEOF_CURL_OFF_T 4
|
|
||||||
|
|
||||||
#define STDC_HEADERS 1
|
#define STDC_HEADERS 1
|
||||||
#define TIME_WITH_SYS_TIME 1
|
#define TIME_WITH_SYS_TIME 1
|
||||||
@@ -131,6 +130,15 @@
|
|||||||
#define RECV_TYPE_ARG4 long
|
#define RECV_TYPE_ARG4 long
|
||||||
#define RECV_TYPE_RETV long
|
#define RECV_TYPE_RETV long
|
||||||
|
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
#define RECVFROM_TYPE_ARG1 long
|
||||||
|
#define RECVFROM_TYPE_ARG2 char
|
||||||
|
#define RECVFROM_TYPE_ARG3 long
|
||||||
|
#define RECVFROM_TYPE_ARG4 long
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
#define RECVFROM_TYPE_ARG6 long
|
||||||
|
#define RECVFROM_TYPE_RETV long
|
||||||
|
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
#define SEND_TYPE_ARG1 int
|
#define SEND_TYPE_ARG1 int
|
||||||
#define SEND_QUAL_ARG2 const
|
#define SEND_QUAL_ARG2 const
|
||||||
|
@@ -63,6 +63,16 @@
|
|||||||
#define RECV_TYPE_ARG4 int
|
#define RECV_TYPE_ARG4 int
|
||||||
#define RECV_TYPE_RETV ssize_t
|
#define RECV_TYPE_RETV ssize_t
|
||||||
|
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
#define RECVFROM_TYPE_ARG1 int
|
||||||
|
#define RECVFROM_TYPE_ARG2 void
|
||||||
|
#define RECVFROM_TYPE_ARG3 size_t
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
#define RECVFROM_TYPE_RETV ssize_t
|
||||||
|
#define RECVFROM_TYPE_ARG2_IS_VOID 1
|
||||||
|
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
#define SEND_TYPE_ARG1 int
|
#define SEND_TYPE_ARG1 int
|
||||||
#define SEND_QUAL_ARG2 const
|
#define SEND_QUAL_ARG2 const
|
||||||
@@ -71,5 +81,5 @@
|
|||||||
#define SEND_TYPE_ARG4 int
|
#define SEND_TYPE_ARG4 int
|
||||||
#define SEND_TYPE_RETV ssize_t
|
#define SEND_TYPE_RETV ssize_t
|
||||||
|
|
||||||
#include <extra/stricmp.h>
|
#define HAVE_EXTRA_STRICMP_H 1
|
||||||
#include <extra/strdup.h>
|
#define HAVE_EXTRA_STRDUP_H 1
|
||||||
|
@@ -364,7 +364,7 @@
|
|||||||
/* The size of a `long double', as computed by sizeof. */
|
/* The size of a `long double', as computed by sizeof. */
|
||||||
#define SIZEOF_LONG_DOUBLE 8
|
#define SIZEOF_LONG_DOUBLE 8
|
||||||
|
|
||||||
/* Define if 64 bit integers are supported. */
|
/* Define if the compiler supports the 'long long' data type. */
|
||||||
#define HAVE_LONGLONG
|
#define HAVE_LONGLONG
|
||||||
|
|
||||||
/* The size of a `long long', as computed by sizeof. */
|
/* The size of a `long long', as computed by sizeof. */
|
||||||
@@ -374,14 +374,6 @@
|
|||||||
|
|
||||||
#define HAVE_LL
|
#define HAVE_LL
|
||||||
|
|
||||||
/* The size of `curl_off_t', as computed by sizeof. */
|
|
||||||
|
|
||||||
#ifndef _LARGE_FILES
|
|
||||||
#define _LARGE_FILES
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define SIZEOF_CURL_OFF_T 8
|
|
||||||
|
|
||||||
/* Define this if you have struct sockaddr_storage */
|
/* Define this if you have struct sockaddr_storage */
|
||||||
#define HAVE_STRUCT_SOCKADDR_STORAGE
|
#define HAVE_STRUCT_SOCKADDR_STORAGE
|
||||||
|
|
||||||
@@ -398,7 +390,7 @@
|
|||||||
#undef _FILE_OFFSET_BITS
|
#undef _FILE_OFFSET_BITS
|
||||||
|
|
||||||
/* Define for large files, on AIX-style hosts. */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
#undef _LARGE_FILES
|
#define _LARGE_FILES
|
||||||
|
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
#undef const
|
#undef const
|
||||||
@@ -456,6 +448,30 @@
|
|||||||
/* Define to the function return type for recv. */
|
/* Define to the function return type for recv. */
|
||||||
#define RECV_TYPE_RETV int
|
#define RECV_TYPE_RETV int
|
||||||
|
|
||||||
|
/* Define if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG1 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 2 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG2 char
|
||||||
|
|
||||||
|
/* Define to the type of arg 3 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG3 int
|
||||||
|
|
||||||
|
/* Define to the type of arg 4 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 5 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 6 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
|
||||||
|
/* Define to the function return type for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_RETV int
|
||||||
|
|
||||||
/* Define if you have the send function. */
|
/* Define if you have the send function. */
|
||||||
#define HAVE_SEND
|
#define HAVE_SEND
|
||||||
|
|
||||||
@@ -482,3 +498,15 @@
|
|||||||
|
|
||||||
/* Use the system keyring as the default CA bundle. */
|
/* Use the system keyring as the default CA bundle. */
|
||||||
#define CURL_CA_BUNDLE "/QIBM/UserData/ICSS/Cert/Server/DEFAULT.KDB"
|
#define CURL_CA_BUNDLE "/QIBM/UserData/ICSS/Cert/Server/DEFAULT.KDB"
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
/* ADDITIONAL DEFINITIONS */
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
/* The following must be defined BEFORE system header files inclusion. */
|
||||||
|
|
||||||
|
#define __ptr128 /* No teraspace. */
|
||||||
|
#define qadrt_use_fputc_inline /* Generate fputc() wrapper inline. */
|
||||||
|
#define qadrt_use_fread_inline /* Generate fread() wrapper inline. */
|
||||||
|
#define qadrt_use_fwrite_inline /* Generate fwrite() wrapper inline. */
|
||||||
|
|
||||||
|
@@ -430,6 +430,33 @@
|
|||||||
/* Define to the function return type for recv. */
|
/* Define to the function return type for recv. */
|
||||||
#define RECV_TYPE_RETV ssize_t
|
#define RECV_TYPE_RETV ssize_t
|
||||||
|
|
||||||
|
/* Define 1 if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG1 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 2 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG2 void
|
||||||
|
|
||||||
|
/* Define to 1 if the type pointed by arg 2 for recvfrom is void. */
|
||||||
|
#define RECVFROM_TYPE_ARG2_IS_VOID 1
|
||||||
|
|
||||||
|
/* Define to the type of arg 3 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG3 size_t
|
||||||
|
|
||||||
|
/* Define to the type of arg 4 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 5 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 6 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
|
||||||
|
/* Define to the function return type for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_RETV ssize_t
|
||||||
|
|
||||||
/* Define if you have the send function. */
|
/* Define if you have the send function. */
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
|
|
||||||
|
@@ -312,7 +312,7 @@
|
|||||||
/* Define to 1 if you have the `localtime_r' function. */
|
/* Define to 1 if you have the `localtime_r' function. */
|
||||||
#define HAVE_LOCALTIME_R 1
|
#define HAVE_LOCALTIME_R 1
|
||||||
|
|
||||||
/* if your compiler supports long long */
|
/* Define to 1 if the compiler supports the 'long long' data type. */
|
||||||
#define HAVE_LONGLONG 1
|
#define HAVE_LONGLONG 1
|
||||||
|
|
||||||
/* Define to 1 if you have the malloc.h header file. */
|
/* Define to 1 if you have the malloc.h header file. */
|
||||||
@@ -415,6 +415,9 @@
|
|||||||
/* Define to 1 if you have the recv function. */
|
/* Define to 1 if you have the recv function. */
|
||||||
#define HAVE_RECV 1
|
#define HAVE_RECV 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <rsa.h> header file. */
|
/* Define to 1 if you have the <rsa.h> header file. */
|
||||||
/* #undef HAVE_RSA_H */
|
/* #undef HAVE_RSA_H */
|
||||||
|
|
||||||
@@ -599,7 +602,7 @@
|
|||||||
#define HAVE_VARIADIC_MACROS_C99 1
|
#define HAVE_VARIADIC_MACROS_C99 1
|
||||||
|
|
||||||
/* Define to 1 if compiler supports old gcc variadic macro style. */
|
/* Define to 1 if compiler supports old gcc variadic macro style. */
|
||||||
#define HAVE_VARIADIC_MACROS_GCC 1
|
/*#define HAVE_VARIADIC_MACROS_GCC 1*/
|
||||||
|
|
||||||
/* Define to 1 if you have the winber.h header file. */
|
/* Define to 1 if you have the winber.h header file. */
|
||||||
/* #undef HAVE_WINBER_H */
|
/* #undef HAVE_WINBER_H */
|
||||||
@@ -680,6 +683,15 @@
|
|||||||
#define RECV_TYPE_ARG4 int
|
#define RECV_TYPE_ARG4 int
|
||||||
#define RECV_TYPE_RETV ssize_t
|
#define RECV_TYPE_RETV ssize_t
|
||||||
|
|
||||||
|
#define RECVFROM_TYPE_ARG1 int
|
||||||
|
#define RECVFROM_TYPE_ARG2 void
|
||||||
|
#define RECVFROM_TYPE_ARG3 size_t
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
#define RECVFROM_TYPE_ARG6 size_t
|
||||||
|
#define RECVFROM_TYPE_RETV ssize_t
|
||||||
|
#define RECVFROM_TYPE_ARG2_IS_VOID 1
|
||||||
|
|
||||||
#define SEND_TYPE_ARG1 int
|
#define SEND_TYPE_ARG1 int
|
||||||
#define SEND_QUAL_ARG2 const
|
#define SEND_QUAL_ARG2 const
|
||||||
#define SEND_TYPE_ARG2 void*
|
#define SEND_TYPE_ARG2 void*
|
||||||
@@ -700,12 +712,6 @@
|
|||||||
/* Define to the type of arg 5 for `select'. */
|
/* Define to the type of arg 5 for `select'. */
|
||||||
#define SELECT_TYPE_ARG5 (struct timeval *)
|
#define SELECT_TYPE_ARG5 (struct timeval *)
|
||||||
|
|
||||||
/* The size of `curl_off_t', as computed by sizeof. */
|
|
||||||
#define SIZEOF_CURL_OFF_T 8
|
|
||||||
|
|
||||||
/* The size of `long', as computed by sizeof. */
|
|
||||||
#define SIZEOF_LONG 4
|
|
||||||
|
|
||||||
/* The size of `off_t', as computed by sizeof. */
|
/* The size of `off_t', as computed by sizeof. */
|
||||||
#define SIZEOF_OFF_T 8
|
#define SIZEOF_OFF_T 8
|
||||||
|
|
||||||
@@ -796,3 +802,8 @@
|
|||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
/* #define CURLDEBUG */
|
/* #define CURLDEBUG */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* sys/cdefs.h fails to define this for WINSCW */
|
||||||
|
#ifndef __LONG_LONG_SUPPORTED
|
||||||
|
#define __LONG_LONG_SUPPORTED
|
||||||
|
#endif
|
||||||
|
@@ -272,7 +272,7 @@
|
|||||||
/* Define to 1 if you have the `localtime_r' function. */
|
/* Define to 1 if you have the `localtime_r' function. */
|
||||||
#define HAVE_LOCALTIME_R 1
|
#define HAVE_LOCALTIME_R 1
|
||||||
|
|
||||||
/* if your compiler supports long long */
|
/* Define to 1 if the compiler supports the 'long long' data type. */
|
||||||
#define HAVE_LONGLONG 1
|
#define HAVE_LONGLONG 1
|
||||||
|
|
||||||
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
|
/* Define to 1 if you need the malloc.h header file even with stdlib.h */
|
||||||
@@ -593,12 +593,6 @@
|
|||||||
/* Define to the type of arg 5 for `select'. */
|
/* Define to the type of arg 5 for `select'. */
|
||||||
#define SELECT_TYPE_ARG5 (struct timeval *)
|
#define SELECT_TYPE_ARG5 (struct timeval *)
|
||||||
|
|
||||||
/* The size of a `curl_off_t', as computed by sizeof. */
|
|
||||||
#define SIZEOF_CURL_OFF_T 8
|
|
||||||
|
|
||||||
/* The size of a `long', as computed by sizeof. */
|
|
||||||
#define SIZEOF_LONG 8
|
|
||||||
|
|
||||||
/* The size of a `size_t', as computed by sizeof. */
|
/* The size of a `size_t', as computed by sizeof. */
|
||||||
#define SIZEOF_SIZE_T 8
|
#define SIZEOF_SIZE_T 8
|
||||||
|
|
||||||
@@ -702,6 +696,30 @@
|
|||||||
/* Define to the function return type for recv. */
|
/* Define to the function return type for recv. */
|
||||||
#define RECV_TYPE_RETV int
|
#define RECV_TYPE_RETV int
|
||||||
|
|
||||||
|
/* Define to 1 if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG1 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 2 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG2 char
|
||||||
|
|
||||||
|
/* Define to the type of arg 3 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG3 int
|
||||||
|
|
||||||
|
/* Define to the type of arg 4 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 5 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 6 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
|
||||||
|
/* Define to the function return type for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_RETV int
|
||||||
|
|
||||||
/* Define to 1 if you have the send function. */
|
/* Define to 1 if you have the send function. */
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
|
|
||||||
@@ -728,15 +746,5 @@
|
|||||||
#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
|
#define CURL_ICONV_CODESET_OF_HOST "IBM-1047"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
|
||||||
/* HEADER FILES */
|
|
||||||
/* ---------------------------------------------------------------- */
|
|
||||||
|
|
||||||
#include <strings.h> /* for bzero, strcasecmp, and strncasecmp */
|
|
||||||
#include <string.h> /* for strcpy and strlen */
|
|
||||||
#include <stdlib.h> /* for rand and srand */
|
|
||||||
#include <sys/socket.h> /* for select and ioctl*/
|
|
||||||
#include <netdb.h> /* for in_addr_t definition */
|
|
||||||
#include <tpf/sysapi.h> /* for tpf_process_signals */
|
|
||||||
|
|
||||||
#endif /* __LIBCONFIGTPF_H */
|
#endif /* __LIBCONFIGTPF_H */
|
||||||
|
@@ -172,6 +172,10 @@
|
|||||||
/* Define if you have the `RAND_status' function when using SSL. */
|
/* Define if you have the `RAND_status' function when using SSL. */
|
||||||
#define HAVE_RAND_STATUS 1
|
#define HAVE_RAND_STATUS 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `CRYPTO_cleanup_all_ex_data' function.
|
||||||
|
This is present in OpenSSL versions after 0.9.6b */
|
||||||
|
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
|
||||||
|
|
||||||
/* Define if you have the select function. */
|
/* Define if you have the select function. */
|
||||||
#define HAVE_SELECT 1
|
#define HAVE_SELECT 1
|
||||||
|
|
||||||
@@ -248,6 +252,30 @@
|
|||||||
/* Define to the function return type for recv. */
|
/* Define to the function return type for recv. */
|
||||||
#define RECV_TYPE_RETV int
|
#define RECV_TYPE_RETV int
|
||||||
|
|
||||||
|
/* Define if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG1 SOCKET
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 2 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG2 char
|
||||||
|
|
||||||
|
/* Define to the type of arg 3 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG3 int
|
||||||
|
|
||||||
|
/* Define to the type of arg 4 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 5 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 6 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
|
||||||
|
/* Define to the function return type for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_RETV int
|
||||||
|
|
||||||
/* Define if you have the send function. */
|
/* Define if you have the send function. */
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
|
|
||||||
@@ -300,21 +328,6 @@
|
|||||||
/* The number of bytes in a long long. */
|
/* The number of bytes in a long long. */
|
||||||
/* #define SIZEOF_LONG_LONG 8 */
|
/* #define SIZEOF_LONG_LONG 8 */
|
||||||
|
|
||||||
/* Undef SIZEOF_CURL_OFF_T if already defined. */
|
|
||||||
#ifdef SIZEOF_CURL_OFF_T
|
|
||||||
#undef SIZEOF_CURL_OFF_T
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define SIZEOF_CURL_OFF_T as computed by sizeof(curl_off_t) */
|
|
||||||
/* Borland/PellesC/SalfordC lacks _lseeki64(), so we don't support
|
|
||||||
* >2GB files.
|
|
||||||
*/
|
|
||||||
#if defined(__BORLANDC__) || defined(__POCC__) || defined(__SALFORDC__)
|
|
||||||
#define SIZEOF_CURL_OFF_T 4
|
|
||||||
#else
|
|
||||||
#define SIZEOF_CURL_OFF_T 8
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
/* STRUCT RELATED */
|
/* STRUCT RELATED */
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
@@ -342,7 +355,7 @@
|
|||||||
#define HAVE_VARIADIC_MACROS_C99 1
|
#define HAVE_VARIADIC_MACROS_C99 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Define if the compiler supports LONGLONG. */
|
/* Define if the compiler supports the 'long long' data type. */
|
||||||
#if defined(__MINGW32__) || defined(__WATCOMC__)
|
#if defined(__MINGW32__) || defined(__WATCOMC__)
|
||||||
#define HAVE_LONGLONG 1
|
#define HAVE_LONGLONG 1
|
||||||
#endif
|
#endif
|
||||||
@@ -377,6 +390,22 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
/* LARGE FILE SUPPORT */
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && !defined(_WIN32_WCE)
|
||||||
|
# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
|
||||||
|
# define USE_WIN32_LARGE_FILES
|
||||||
|
# else
|
||||||
|
# define USE_WIN32_SMALL_FILES
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
|
||||||
|
# define USE_WIN32_SMALL_FILES
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
/* LDAP SUPPORT */
|
/* LDAP SUPPORT */
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
|
@@ -234,6 +234,30 @@
|
|||||||
/* Define to the function return type for recv. */
|
/* Define to the function return type for recv. */
|
||||||
#define RECV_TYPE_RETV int
|
#define RECV_TYPE_RETV int
|
||||||
|
|
||||||
|
/* Define if you have the recvfrom function. */
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
|
|
||||||
|
/* Define to the type of arg 1 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG1 SOCKET
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 2 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG2 char
|
||||||
|
|
||||||
|
/* Define to the type of arg 3 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG3 int
|
||||||
|
|
||||||
|
/* Define to the type of arg 4 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 5 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
|
||||||
|
/* Define to the type pointed by arg 6 for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
|
||||||
|
/* Define to the function return type for recvfrom. */
|
||||||
|
#define RECVFROM_TYPE_RETV int
|
||||||
|
|
||||||
/* Define if you have the send function. */
|
/* Define if you have the send function. */
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
|
|
||||||
@@ -283,14 +307,6 @@
|
|||||||
/* The number of bytes in a long long. */
|
/* The number of bytes in a long long. */
|
||||||
/* #define SIZEOF_LONG_LONG 8 */
|
/* #define SIZEOF_LONG_LONG 8 */
|
||||||
|
|
||||||
/* Undef SIZEOF_CURL_OFF_T if already defined. */
|
|
||||||
#ifdef SIZEOF_CURL_OFF_T
|
|
||||||
#undef SIZEOF_CURL_OFF_T
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define SIZEOF_CURL_OFF_T as computed by sizeof(curl_off_t) */
|
|
||||||
#define SIZEOF_CURL_OFF_T 4
|
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
/* STRUCT RELATED */
|
/* STRUCT RELATED */
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
@@ -324,6 +340,22 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
/* LARGE FILE SUPPORT */
|
||||||
|
/* ---------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && !defined(_WIN32_WCE)
|
||||||
|
# if (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
|
||||||
|
# define USE_WIN32_LARGE_FILES
|
||||||
|
# else
|
||||||
|
# define USE_WIN32_SMALL_FILES
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_WIN32_LARGE_FILES) && !defined(USE_WIN32_SMALL_FILES)
|
||||||
|
# define USE_WIN32_SMALL_FILES
|
||||||
|
#endif
|
||||||
|
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
/* LDAP SUPPORT */
|
/* LDAP SUPPORT */
|
||||||
/* ---------------------------------------------------------------- */
|
/* ---------------------------------------------------------------- */
|
||||||
@@ -351,24 +383,6 @@
|
|||||||
#define CURL_DISABLE_TELNET 1
|
#define CURL_DISABLE_TELNET 1
|
||||||
#define CURL_DISABLE_LDAP 1
|
#define CURL_DISABLE_LDAP 1
|
||||||
|
|
||||||
#ifdef HAVE_WINDOWS_H
|
|
||||||
# ifndef WIN32_LEAN_AND_MEAN
|
|
||||||
# define WIN32_LEAN_AND_MEAN
|
|
||||||
# endif
|
|
||||||
# include <windows.h>
|
|
||||||
# ifdef HAVE_WINSOCK2_H
|
|
||||||
# include <winsock2.h>
|
|
||||||
# ifdef HAVE_WS2TCPIP_H
|
|
||||||
# include <ws2tcpip.h>
|
|
||||||
# endif
|
|
||||||
# else
|
|
||||||
# ifdef HAVE_WINSOCK_H
|
|
||||||
# include <winsock.h>
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
# include <process.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ENOSPC 1
|
#define ENOSPC 1
|
||||||
#define ENOMEM 2
|
#define ENOMEM 2
|
||||||
#define EAGAIN 3
|
#define EAGAIN 3
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#define HAVE_NET_IF_H 1
|
#define HAVE_NET_IF_H 1
|
||||||
#define HAVE_PROCESS_H 1
|
#define HAVE_PROCESS_H 1
|
||||||
#define HAVE_RECV 1
|
#define HAVE_RECV 1
|
||||||
|
#define HAVE_RECVFROM 1
|
||||||
#define HAVE_SELECT 1
|
#define HAVE_SELECT 1
|
||||||
#define HAVE_SEND 1
|
#define HAVE_SEND 1
|
||||||
#define HAVE_SETJMP_H 1
|
#define HAVE_SETJMP_H 1
|
||||||
@@ -47,6 +48,7 @@
|
|||||||
#define HAVE_STRICMP 1
|
#define HAVE_STRICMP 1
|
||||||
#define HAVE_STRTOLL 1
|
#define HAVE_STRTOLL 1
|
||||||
#define HAVE_STRUCT_TIMEVAL 1
|
#define HAVE_STRUCT_TIMEVAL 1
|
||||||
|
#define HAVE_STRUCT_IN6_ADDR 1
|
||||||
#define HAVE_SYS_IOCTL_H 1
|
#define HAVE_SYS_IOCTL_H 1
|
||||||
#define HAVE_SYS_SOCKET_H 1
|
#define HAVE_SYS_SOCKET_H 1
|
||||||
#define HAVE_SYS_STAT_H 1
|
#define HAVE_SYS_STAT_H 1
|
||||||
@@ -59,12 +61,11 @@
|
|||||||
|
|
||||||
#define RETSIGTYPE void
|
#define RETSIGTYPE void
|
||||||
#define SIZEOF_LONG_DOUBLE 16
|
#define SIZEOF_LONG_DOUBLE 16
|
||||||
#define SIZEOF_CURL_OFF_T 4 /* no huge file support */
|
|
||||||
#define STDC_HEADERS 1
|
#define STDC_HEADERS 1
|
||||||
#define TIME_WITH_SYS_TIME 1
|
#define TIME_WITH_SYS_TIME 1
|
||||||
|
|
||||||
/* Qualifiers for send() and recv().
|
/* Qualifiers for send(), recv() and recvfrom(). */
|
||||||
*/
|
|
||||||
#define SEND_TYPE_ARG1 int
|
#define SEND_TYPE_ARG1 int
|
||||||
#define SEND_QUAL_ARG2 const
|
#define SEND_QUAL_ARG2 const
|
||||||
#define SEND_TYPE_ARG2 void *
|
#define SEND_TYPE_ARG2 void *
|
||||||
@@ -78,6 +79,14 @@
|
|||||||
#define RECV_TYPE_ARG4 int
|
#define RECV_TYPE_ARG4 int
|
||||||
#define RECV_TYPE_RETV int
|
#define RECV_TYPE_RETV int
|
||||||
|
|
||||||
|
#define RECVFROM_TYPE_ARG1 int
|
||||||
|
#define RECVFROM_TYPE_ARG2 void
|
||||||
|
#define RECVFROM_TYPE_ARG3 int
|
||||||
|
#define RECVFROM_TYPE_ARG4 int
|
||||||
|
#define RECVFROM_TYPE_ARG5 struct sockaddr
|
||||||
|
#define RECVFROM_TYPE_ARG6 int
|
||||||
|
#define RECVFROM_TYPE_RETV int
|
||||||
|
#define RECVFROM_TYPE_ARG2_IS_VOID 1
|
||||||
|
|
||||||
#define BSD
|
#define BSD
|
||||||
|
|
||||||
@@ -89,6 +98,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SSLEAY /* on cmd-line */
|
#ifdef USE_SSLEAY /* on cmd-line */
|
||||||
|
#define HAVE_CRYPTO_CLEANUP_ALL_EX_DATA 1
|
||||||
#define HAVE_OPENSSL_ENGINE_H 1
|
#define HAVE_OPENSSL_ENGINE_H 1
|
||||||
#define OPENSSL_NO_KRB5 1
|
#define OPENSSL_NO_KRB5 1
|
||||||
#define USE_OPENSSL 1
|
#define USE_OPENSSL 1
|
||||||
@@ -133,10 +143,6 @@
|
|||||||
#define HAVE_SYS_TIME_H 1
|
#define HAVE_SYS_TIME_H 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <tcp.h> /* Watt-32 API */
|
|
||||||
|
|
||||||
#undef word
|
#undef word
|
||||||
#undef byte
|
#undef byte
|
||||||
|
|
||||||
|
@@ -77,6 +77,9 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#define _MPRINTF_REPLACE /* use our functions only */
|
||||||
|
#include <curl/mprintf.h>
|
||||||
|
|
||||||
#include "urldata.h"
|
#include "urldata.h"
|
||||||
#include "sendf.h"
|
#include "sendf.h"
|
||||||
#include "if2ip.h"
|
#include "if2ip.h"
|
||||||
@@ -337,9 +340,7 @@ static CURLcode bindlocal(struct connectdata *conn,
|
|||||||
if(h) {
|
if(h) {
|
||||||
if(in == CURL_INADDR_NONE)
|
if(in == CURL_INADDR_NONE)
|
||||||
/* convert the resolved address, sizeof myhost >= INET_ADDRSTRLEN */
|
/* convert the resolved address, sizeof myhost >= INET_ADDRSTRLEN */
|
||||||
Curl_inet_ntop(h->addr->ai_addr->sa_family,
|
Curl_printable_address(h->addr, myhost, sizeof myhost);
|
||||||
&((struct sockaddr_in*)h->addr->ai_addr)->sin_addr,
|
|
||||||
myhost, sizeof myhost);
|
|
||||||
else
|
else
|
||||||
/* we know data->set.device is shorter than the myhost array */
|
/* we know data->set.device is shorter than the myhost array */
|
||||||
strcpy(myhost, dev);
|
strcpy(myhost, dev);
|
||||||
@@ -551,7 +552,7 @@ CURLcode Curl_store_ip_addr(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Used within the multi interface. Try next IP address, return TRUE if no
|
/* Used within the multi interface. Try next IP address, return TRUE if no
|
||||||
more address exists */
|
more address exists or error */
|
||||||
static bool trynextip(struct connectdata *conn,
|
static bool trynextip(struct connectdata *conn,
|
||||||
int sockindex,
|
int sockindex,
|
||||||
bool *connected)
|
bool *connected)
|
||||||
@@ -577,8 +578,7 @@ static bool trynextip(struct connectdata *conn,
|
|||||||
conn->sock[sockindex] = sockfd;
|
conn->sock[sockindex] = sockfd;
|
||||||
conn->ip_addr = ai;
|
conn->ip_addr = ai;
|
||||||
|
|
||||||
Curl_store_ip_addr(conn);
|
return Curl_store_ip_addr(conn) != CURLE_OK;
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
ai = ai->ai_next;
|
ai = ai->ai_next;
|
||||||
}
|
}
|
||||||
@@ -772,12 +772,22 @@ singleipconnect(struct connectdata *conn,
|
|||||||
|
|
||||||
*connected = FALSE; /* default is not connected */
|
*connected = FALSE; /* default is not connected */
|
||||||
|
|
||||||
|
#ifdef CURLRES_IPV6
|
||||||
|
if (conn->scope && (addr->family == AF_INET6)) {
|
||||||
|
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)&addr->addr;
|
||||||
|
in6->sin6_scope_id = conn->scope;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* FIXME: do we have Curl_printable_address-like with struct sockaddr* as
|
/* FIXME: do we have Curl_printable_address-like with struct sockaddr* as
|
||||||
argument? */
|
argument? */
|
||||||
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
|
#if defined(HAVE_SYS_UN_H) && defined(AF_UNIX)
|
||||||
if(addr->family==AF_UNIX)
|
if(addr->family==AF_UNIX) {
|
||||||
infof(data, " Trying %s... ",
|
infof(data, " Trying %s... ",
|
||||||
((const struct sockaddr_un*)(&addr->addr))->sun_path);
|
((const struct sockaddr_un*)(&addr->addr))->sun_path);
|
||||||
|
snprintf(data->info.ip, MAX_IPADR_LEN, "%s",
|
||||||
|
((const struct sockaddr_un*)(&addr->addr))->sun_path);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
@@ -789,8 +799,10 @@ singleipconnect(struct connectdata *conn,
|
|||||||
iptoprint = &((const struct sockaddr_in*)(&addr->addr))->sin_addr;
|
iptoprint = &((const struct sockaddr_in*)(&addr->addr))->sin_addr;
|
||||||
|
|
||||||
if(Curl_inet_ntop(addr->family, iptoprint, addr_buf,
|
if(Curl_inet_ntop(addr->family, iptoprint, addr_buf,
|
||||||
sizeof(addr_buf)) != NULL)
|
sizeof(addr_buf)) != NULL) {
|
||||||
infof(data, " Trying %s... ", addr_buf);
|
infof(data, " Trying %s... ", addr_buf);
|
||||||
|
snprintf(data->info.ip, MAX_IPADR_LEN, "%s", addr_buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(data->set.tcp_nodelay)
|
if(data->set.tcp_nodelay)
|
||||||
@@ -906,6 +918,7 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
long timeout_ms;
|
long timeout_ms;
|
||||||
long timeout_per_addr;
|
long timeout_per_addr;
|
||||||
|
|
||||||
|
DEBUGASSERT(sockconn);
|
||||||
*connected = FALSE; /* default to not connected */
|
*connected = FALSE; /* default to not connected */
|
||||||
|
|
||||||
/* get the timeout left */
|
/* get the timeout left */
|
||||||
@@ -954,9 +967,10 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
before = after;
|
before = after;
|
||||||
} /* end of connect-to-each-address loop */
|
} /* end of connect-to-each-address loop */
|
||||||
|
|
||||||
|
*sockconn = sockfd; /* the socket descriptor we've connected */
|
||||||
|
|
||||||
if(sockfd == CURL_SOCKET_BAD) {
|
if(sockfd == CURL_SOCKET_BAD) {
|
||||||
/* no good connect was made */
|
/* no good connect was made */
|
||||||
*sockconn = CURL_SOCKET_BAD;
|
|
||||||
failf(data, "couldn't connect to host");
|
failf(data, "couldn't connect to host");
|
||||||
return CURLE_COULDNT_CONNECT;
|
return CURLE_COULDNT_CONNECT;
|
||||||
}
|
}
|
||||||
@@ -967,10 +981,6 @@ CURLcode Curl_connecthost(struct connectdata *conn, /* context */
|
|||||||
if(addr)
|
if(addr)
|
||||||
*addr = curr_addr;
|
*addr = curr_addr;
|
||||||
|
|
||||||
/* allow NULL-pointers to get passed in */
|
|
||||||
if(sockconn)
|
|
||||||
*sockconn = sockfd; /* the socket descriptor we've connected */
|
|
||||||
|
|
||||||
data->info.numconnects++; /* to track the number of connections made */
|
data->info.numconnects++; /* to track the number of connections made */
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
|
@@ -1,3 +1,5 @@
|
|||||||
|
#ifndef __CURL_CONTENT_ENCODING_H
|
||||||
|
#define __CURL_CONTENT_ENCODING_H
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
@@ -5,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@@ -39,3 +41,5 @@ CURLcode
|
|||||||
Curl_unencode_gzip_write(struct connectdata *conn,
|
Curl_unencode_gzip_write(struct connectdata *conn,
|
||||||
struct SingleRequest *k,
|
struct SingleRequest *k,
|
||||||
ssize_t nread);
|
ssize_t nread);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@@ -990,7 +990,7 @@ int Curl_cookie_output(struct CookieInfo *c, const char *dumphere)
|
|||||||
char *format_ptr;
|
char *format_ptr;
|
||||||
|
|
||||||
fputs("# Netscape HTTP Cookie File\n"
|
fputs("# Netscape HTTP Cookie File\n"
|
||||||
"# http://curlm.haxx.se/rfc/cookie_spec.html\n"
|
"# http://curl.haxx.se/rfc/cookie_spec.html\n"
|
||||||
"# This file was generated by libcurl! Edit at your own risk.\n\n",
|
"# This file was generated by libcurl! Edit at your own risk.\n\n",
|
||||||
out);
|
out);
|
||||||
co = c->cookies;
|
co = c->cookies;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#ifndef __BASE64_H
|
#ifndef __CURL_BASE64_H
|
||||||
#define __BASE64_H
|
#define __CURL_BASE64_H
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
@@ -1,5 +1,5 @@
|
|||||||
#ifndef __MD5_H
|
#ifndef __CURL_MD5_H
|
||||||
#define __MD5_H
|
#define __CURL_MD5_H
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
35
lib/easy.c
35
lib/easy.c
@@ -83,6 +83,7 @@
|
|||||||
#include "easyif.h"
|
#include "easyif.h"
|
||||||
#include "select.h"
|
#include "select.h"
|
||||||
#include "sendf.h" /* for failf function prototype */
|
#include "sendf.h" /* for failf function prototype */
|
||||||
|
#include "http_ntlm.h"
|
||||||
#include "connect.h" /* for Curl_getconnectinfo */
|
#include "connect.h" /* for Curl_getconnectinfo */
|
||||||
|
|
||||||
#define _MPRINTF_REPLACE /* use our functions only */
|
#define _MPRINTF_REPLACE /* use our functions only */
|
||||||
@@ -103,18 +104,23 @@
|
|||||||
/* The last #include file should be: */
|
/* The last #include file should be: */
|
||||||
#include "memdebug.h"
|
#include "memdebug.h"
|
||||||
|
|
||||||
#ifdef USE_WINSOCK
|
|
||||||
/* win32_cleanup() is for win32 socket cleanup functionality, the opposite
|
/* win32_cleanup() is for win32 socket cleanup functionality, the opposite
|
||||||
of win32_init() */
|
of win32_init() */
|
||||||
static void win32_cleanup(void)
|
static void win32_cleanup(void)
|
||||||
{
|
{
|
||||||
|
#ifdef USE_WINSOCK
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
|
#endif
|
||||||
|
#ifdef USE_WINDOWS_SSPI
|
||||||
|
Curl_ntlm_global_cleanup();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* win32_init() performs win32 socket initialization to properly setup the
|
/* win32_init() performs win32 socket initialization to properly setup the
|
||||||
stack to allow networking */
|
stack to allow networking */
|
||||||
static CURLcode win32_init(void)
|
static CURLcode win32_init(void)
|
||||||
{
|
{
|
||||||
|
#ifdef USE_WINSOCK
|
||||||
WORD wVersionRequested;
|
WORD wVersionRequested;
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
int err;
|
int err;
|
||||||
@@ -147,15 +153,19 @@ static CURLcode win32_init(void)
|
|||||||
return CURLE_FAILED_INIT;
|
return CURLE_FAILED_INIT;
|
||||||
}
|
}
|
||||||
/* The Windows Sockets DLL is acceptable. Proceed. */
|
/* The Windows Sockets DLL is acceptable. Proceed. */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_WINDOWS_SSPI
|
||||||
|
{
|
||||||
|
CURLcode err = Curl_ntlm_global_init();
|
||||||
|
if (err != CURLE_OK)
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
/* These functions exist merely to prevent compiler warnings */
|
|
||||||
static CURLcode win32_init(void) { return CURLE_OK; }
|
|
||||||
static void win32_cleanup(void) { }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_LIBIDN
|
#ifdef USE_LIBIDN
|
||||||
/*
|
/*
|
||||||
* Initialise use of IDNA library.
|
* Initialise use of IDNA library.
|
||||||
@@ -195,6 +205,10 @@ static long init_flags;
|
|||||||
#define system_strdup strdup
|
#define system_strdup strdup
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && defined(_DLL)
|
||||||
|
# pragma warning(disable:4232) /* MSVC extension, dllimport identity */
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __SYMBIAN32__
|
#ifndef __SYMBIAN32__
|
||||||
/*
|
/*
|
||||||
* If a memory-using function (like curl_getenv) is used before
|
* If a memory-using function (like curl_getenv) is used before
|
||||||
@@ -217,6 +231,10 @@ curl_strdup_callback Curl_cstrdup;
|
|||||||
curl_calloc_callback Curl_ccalloc;
|
curl_calloc_callback Curl_ccalloc;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && defined(_DLL)
|
||||||
|
# pragma warning(default:4232) /* MSVC extension, dllimport identity */
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* curl_global_init() globally initializes cURL given a bitwise set of the
|
* curl_global_init() globally initializes cURL given a bitwise set of the
|
||||||
* different features of what to initialize.
|
* different features of what to initialize.
|
||||||
@@ -949,7 +967,8 @@ CURLcode Curl_convert_from_network(struct SessionHandle *data,
|
|||||||
rc, curl_easy_strerror(rc));
|
rc, curl_easy_strerror(rc));
|
||||||
}
|
}
|
||||||
return(rc);
|
return(rc);
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
#ifdef HAVE_ICONV
|
#ifdef HAVE_ICONV
|
||||||
/* do the translation ourselves */
|
/* do the translation ourselves */
|
||||||
char *input_ptr, *output_ptr;
|
char *input_ptr, *output_ptr;
|
||||||
|
55
lib/firefox-db2pem.sh
Executable file
55
lib/firefox-db2pem.sh
Executable file
@@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# ***************************************************************************
|
||||||
|
# * _ _ ____ _
|
||||||
|
# * Project ___| | | | _ \| |
|
||||||
|
# * / __| | | | |_) | |
|
||||||
|
# * | (__| |_| | _ <| |___
|
||||||
|
# * \___|\___/|_| \_\_____|
|
||||||
|
# *
|
||||||
|
# * Copyright (C) 1998 - 2008, 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
|
||||||
|
# * are also available at http://curl.haxx.se/docs/copyright.html.
|
||||||
|
# *
|
||||||
|
# * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||||
|
# * copies of the Software, and permit persons to whom the Software is
|
||||||
|
# * furnished to do so, under the terms of the COPYING file.
|
||||||
|
# *
|
||||||
|
# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
|
# * KIND, either express or implied.
|
||||||
|
# *
|
||||||
|
# * $Id$
|
||||||
|
# ***************************************************************************
|
||||||
|
# This shell script creates a fresh ca-bundle.crt file for use with libcurl.
|
||||||
|
# It extracts all ca certs it finds in the local Firefox database and converts
|
||||||
|
# them all into PEM format.
|
||||||
|
#
|
||||||
|
db=`ls -1d $HOME/.mozilla/firefox/*default`
|
||||||
|
out=$1
|
||||||
|
|
||||||
|
if test -z "$out"; then
|
||||||
|
out="ca-bundle.crt" # use a sensible default
|
||||||
|
fi
|
||||||
|
|
||||||
|
currentdate=`date`
|
||||||
|
|
||||||
|
cat >$out <<EOF
|
||||||
|
##
|
||||||
|
## Bundle of CA Root Certificates
|
||||||
|
##
|
||||||
|
## Converted at: ${currentdate}
|
||||||
|
## These were converted from the local Firefox directory by the db2pem script.
|
||||||
|
##
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
certutil -L -h 'Builtin Object Token' -d $db | \
|
||||||
|
grep ' *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$' | \
|
||||||
|
sed -e 's/ *[CcGTPpu]*,[CcGTPpu]*,[CcGTPpu]* *$//' -e 's/\(.*\)/"\1"/' | \
|
||||||
|
sort | \
|
||||||
|
while read nickname; \
|
||||||
|
do echo $nickname | sed -e "s/Builtin Object Token://g"; \
|
||||||
|
eval certutil -d $db -L -n "$nickname" -a ; \
|
||||||
|
done >> $out
|
||||||
|
|
@@ -705,7 +705,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(CURL_FORMADD_OK == return_value) {
|
if(CURL_FORMADD_OK == return_value) {
|
||||||
/* go through the list, check for copleteness and if everything is
|
/* go through the list, check for completeness and if everything is
|
||||||
* alright add the HttpPost item otherwise set return_value accordingly */
|
* alright add the HttpPost item otherwise set return_value accordingly */
|
||||||
|
|
||||||
post = NULL;
|
post = NULL;
|
||||||
@@ -1674,7 +1674,7 @@ int main(int argc, argv_item_t argv[])
|
|||||||
} while(1);
|
} while(1);
|
||||||
|
|
||||||
fprintf(stdout, "size: ");
|
fprintf(stdout, "size: ");
|
||||||
fprintf(stdout, CURL_FORMAT_OFF_T, size);
|
fprintf(stdout, "%" FORMAT_OFF_T, size);
|
||||||
fprintf(stdout, "\n");
|
fprintf(stdout, "\n");
|
||||||
if(errors)
|
if(errors)
|
||||||
fprintf(stdout, "\n==> %d Test(s) failed!\n", errors);
|
fprintf(stdout, "\n==> %d Test(s) failed!\n", errors);
|
||||||
|
14
lib/ftp.c
14
lib/ftp.c
@@ -279,6 +279,7 @@ static void freedirs(struct ftp_conn *ftpc)
|
|||||||
}
|
}
|
||||||
free(ftpc->dirs);
|
free(ftpc->dirs);
|
||||||
ftpc->dirs = NULL;
|
ftpc->dirs = NULL;
|
||||||
|
ftpc->dirdepth = 0;
|
||||||
}
|
}
|
||||||
if(ftpc->file) {
|
if(ftpc->file) {
|
||||||
free(ftpc->file);
|
free(ftpc->file);
|
||||||
@@ -387,7 +388,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
|
|||||||
ssize_t gotbytes;
|
ssize_t gotbytes;
|
||||||
char *ptr;
|
char *ptr;
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
char *buf = data->state.buffer;
|
char * const buf = data->state.buffer;
|
||||||
CURLcode result = CURLE_OK;
|
CURLcode result = CURLE_OK;
|
||||||
struct ftp_conn *ftpc = &conn->proto.ftpc;
|
struct ftp_conn *ftpc = &conn->proto.ftpc;
|
||||||
int code = 0;
|
int code = 0;
|
||||||
@@ -413,6 +414,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
|
|||||||
* int to begin with, even though its datatype may be larger
|
* int to begin with, even though its datatype may be larger
|
||||||
* than an int.
|
* than an int.
|
||||||
*/
|
*/
|
||||||
|
DEBUGASSERT((ptr+ftpc->cache_size) <= (buf+BUFSIZE+1));
|
||||||
memcpy(ptr, ftpc->cache, (int)ftpc->cache_size);
|
memcpy(ptr, ftpc->cache, (int)ftpc->cache_size);
|
||||||
gotbytes = (int)ftpc->cache_size;
|
gotbytes = (int)ftpc->cache_size;
|
||||||
free(ftpc->cache); /* free the cache */
|
free(ftpc->cache); /* free the cache */
|
||||||
@@ -426,6 +428,7 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
|
|||||||
|
|
||||||
conn->data_prot = 0;
|
conn->data_prot = 0;
|
||||||
#endif
|
#endif
|
||||||
|
DEBUGASSERT((ptr+BUFSIZE-ftpc->nread_resp) <= (buf+BUFSIZE+1));
|
||||||
res = Curl_read(conn, sockfd, ptr, BUFSIZE-ftpc->nread_resp,
|
res = Curl_read(conn, sockfd, ptr, BUFSIZE-ftpc->nread_resp,
|
||||||
&gotbytes);
|
&gotbytes);
|
||||||
#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
|
#if defined(HAVE_KRB4) || defined(HAVE_GSSAPI)
|
||||||
@@ -534,9 +537,10 @@ static CURLcode ftp_readresp(curl_socket_t sockfd,
|
|||||||
dash or a space and it is significant */
|
dash or a space and it is significant */
|
||||||
clipamount = 4;
|
clipamount = 4;
|
||||||
}
|
}
|
||||||
else if(perline && (ftpc->nread_resp > BUFSIZE/2)) {
|
else if(ftpc->nread_resp > BUFSIZE/2) {
|
||||||
/* We got a large chunk of data and there's still trailing data to
|
/* We got a large chunk of data and there's potentially still trailing
|
||||||
take care of, so we put that part in the "cache" and restart */
|
data to take care of, so we put any such part in the "cache", clear
|
||||||
|
the buffer to make space and restart. */
|
||||||
clipamount = perline;
|
clipamount = perline;
|
||||||
restart = TRUE;
|
restart = TRUE;
|
||||||
}
|
}
|
||||||
@@ -3223,6 +3227,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
|
|||||||
shutdown(conn->sock[SECONDARYSOCKET],2); /* SD_BOTH */
|
shutdown(conn->sock[SECONDARYSOCKET],2); /* SD_BOTH */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if(conn->sock[SECONDARYSOCKET] != CURL_SOCKET_BAD) {
|
||||||
if(conn->ssl[SECONDARYSOCKET].use) {
|
if(conn->ssl[SECONDARYSOCKET].use) {
|
||||||
/* The secondary socket is using SSL so we must close down that part first
|
/* The secondary socket is using SSL so we must close down that part first
|
||||||
before we close the socket for real */
|
before we close the socket for real */
|
||||||
@@ -3234,6 +3239,7 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status,
|
|||||||
sclose(conn->sock[SECONDARYSOCKET]);
|
sclose(conn->sock[SECONDARYSOCKET]);
|
||||||
|
|
||||||
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
|
conn->sock[SECONDARYSOCKET] = CURL_SOCKET_BAD;
|
||||||
|
}
|
||||||
|
|
||||||
if((ftp->transfer == FTPTRANSFER_BODY) && !status && !premature) {
|
if((ftp->transfer == FTPTRANSFER_BODY) && !status && !premature) {
|
||||||
/*
|
/*
|
||||||
|
@@ -137,6 +137,9 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
|
|||||||
case CURLINFO_CONNECT_TIME:
|
case CURLINFO_CONNECT_TIME:
|
||||||
*param_doublep = data->progress.t_connect;
|
*param_doublep = data->progress.t_connect;
|
||||||
break;
|
break;
|
||||||
|
case CURLINFO_APPCONNECT_TIME:
|
||||||
|
*param_doublep = data->progress.t_appconnect;
|
||||||
|
break;
|
||||||
case CURLINFO_PRETRANSFER_TIME:
|
case CURLINFO_PRETRANSFER_TIME:
|
||||||
*param_doublep = data->progress.t_pretransfer;
|
*param_doublep = data->progress.t_pretransfer;
|
||||||
break;
|
break;
|
||||||
@@ -210,6 +213,10 @@ CURLcode Curl_getinfo(struct SessionHandle *data, CURLINFO info, ...)
|
|||||||
option had been enabled! */
|
option had been enabled! */
|
||||||
*param_charp = data->info.wouldredirect;
|
*param_charp = data->info.wouldredirect;
|
||||||
break;
|
break;
|
||||||
|
case CURLINFO_PRIMARY_IP:
|
||||||
|
/* Return the ip address of the most recent (primary) connection */
|
||||||
|
*param_charp = data->info.ip;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return CURLE_BAD_FUNCTION_ARGUMENT;
|
return CURLE_BAD_FUNCTION_ARGUMENT;
|
||||||
}
|
}
|
||||||
|
70
lib/gtls.c
70
lib/gtls.c
@@ -143,6 +143,32 @@ static void showtime(struct SessionHandle *data,
|
|||||||
infof(data, "%s", data->state.buffer);
|
infof(data, "%s", data->state.buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gnutls_datum load_file (const char *file)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
gnutls_datum loaded_file = { NULL, 0 };
|
||||||
|
long filelen;
|
||||||
|
void *ptr;
|
||||||
|
|
||||||
|
if (!(f = fopen(file, "r"))
|
||||||
|
|| fseek(f, 0, SEEK_END) != 0
|
||||||
|
|| (filelen = ftell(f)) < 0
|
||||||
|
|| fseek(f, 0, SEEK_SET) != 0
|
||||||
|
|| !(ptr = malloc((size_t)filelen))
|
||||||
|
|| fread(ptr, 1, (size_t)filelen, f) < (size_t)filelen) {
|
||||||
|
return loaded_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
loaded_file.data = ptr;
|
||||||
|
loaded_file.size = (unsigned int)filelen;
|
||||||
|
return loaded_file;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void unload_file(gnutls_datum data) {
|
||||||
|
free(data.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* this function does a BLOCKING SSL/TLS (re-)handshake */
|
/* this function does a BLOCKING SSL/TLS (re-)handshake */
|
||||||
static CURLcode handshake(struct connectdata *conn,
|
static CURLcode handshake(struct connectdata *conn,
|
||||||
gnutls_session session,
|
gnutls_session session,
|
||||||
@@ -221,7 +247,8 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
unsigned int cert_list_size;
|
unsigned int cert_list_size;
|
||||||
const gnutls_datum *chainp;
|
const gnutls_datum *chainp;
|
||||||
unsigned int verify_status;
|
unsigned int verify_status;
|
||||||
gnutls_x509_crt x509_cert;
|
gnutls_x509_crt x509_cert,x509_issuer;
|
||||||
|
gnutls_datum issuerp;
|
||||||
char certbuf[256]; /* big enough? */
|
char certbuf[256]; /* big enough? */
|
||||||
size_t size;
|
size_t size;
|
||||||
unsigned int algo;
|
unsigned int algo;
|
||||||
@@ -271,6 +298,21 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
rc, data->set.ssl.CAfile);
|
rc, data->set.ssl.CAfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(data->set.ssl.CRLfile) {
|
||||||
|
/* set the CRL list file */
|
||||||
|
rc = gnutls_certificate_set_x509_crl_file(conn->ssl[sockindex].cred,
|
||||||
|
data->set.ssl.CRLfile,
|
||||||
|
GNUTLS_X509_FMT_PEM);
|
||||||
|
if(rc < 0) {
|
||||||
|
failf(data, "error reading crl file %s (%s)\n",
|
||||||
|
data->set.ssl.CRLfile, gnutls_strerror(rc));
|
||||||
|
return CURLE_SSL_CRL_BADFILE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
infof(data, "found %d CRL in %s\n",
|
||||||
|
rc, data->set.ssl.CRLfile);
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize TLS session as a client */
|
/* Initialize TLS session as a client */
|
||||||
rc = gnutls_init(&conn->ssl[sockindex].session, GNUTLS_CLIENT);
|
rc = gnutls_init(&conn->ssl[sockindex].session, GNUTLS_CLIENT);
|
||||||
if(rc) {
|
if(rc) {
|
||||||
@@ -360,7 +402,9 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
|
|
||||||
chainp = gnutls_certificate_get_peers(session, &cert_list_size);
|
chainp = gnutls_certificate_get_peers(session, &cert_list_size);
|
||||||
if(!chainp) {
|
if(!chainp) {
|
||||||
if(data->set.ssl.verifypeer) {
|
if(data->set.ssl.verifypeer ||
|
||||||
|
data->set.ssl.verifyhost ||
|
||||||
|
data->set.ssl.issuercert) {
|
||||||
failf(data, "failed to get server cert");
|
failf(data, "failed to get server cert");
|
||||||
return CURLE_PEER_FAILED_VERIFICATION;
|
return CURLE_PEER_FAILED_VERIFICATION;
|
||||||
}
|
}
|
||||||
@@ -384,8 +428,9 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
/* verify_status is a bitmask of gnutls_certificate_status bits */
|
/* verify_status is a bitmask of gnutls_certificate_status bits */
|
||||||
if(verify_status & GNUTLS_CERT_INVALID) {
|
if(verify_status & GNUTLS_CERT_INVALID) {
|
||||||
if(data->set.ssl.verifypeer) {
|
if(data->set.ssl.verifypeer) {
|
||||||
failf(data, "server certificate verification failed. CAfile: %s",
|
failf(data, "server certificate verification failed. CAfile: %s "
|
||||||
data->set.ssl.CAfile?data->set.ssl.CAfile:"none");
|
"CRLfile: %s", data->set.ssl.CAfile?data->set.ssl.CAfile:"none",
|
||||||
|
data->set.ssl.CRLfile?data->set.ssl.CRLfile:"none");
|
||||||
return CURLE_SSL_CACERT;
|
return CURLE_SSL_CACERT;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -404,6 +449,21 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
gnutls_x509_crt_t format */
|
gnutls_x509_crt_t format */
|
||||||
gnutls_x509_crt_import(x509_cert, chainp, GNUTLS_X509_FMT_DER);
|
gnutls_x509_crt_import(x509_cert, chainp, GNUTLS_X509_FMT_DER);
|
||||||
|
|
||||||
|
if (data->set.ssl.issuercert) {
|
||||||
|
gnutls_x509_crt_init(&x509_issuer);
|
||||||
|
issuerp = load_file(data->set.ssl.issuercert);
|
||||||
|
gnutls_x509_crt_import(x509_issuer, &issuerp, GNUTLS_X509_FMT_PEM);
|
||||||
|
rc = gnutls_x509_crt_check_issuer(x509_cert,x509_issuer);
|
||||||
|
unload_file(issuerp);
|
||||||
|
if (rc <= 0) {
|
||||||
|
failf(data, "server certificate issuer check failed (IssuerCert: %s)",
|
||||||
|
data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
|
||||||
|
return CURLE_SSL_ISSUER_ERROR;
|
||||||
|
}
|
||||||
|
infof(data,"\t server certificate issuer check OK (Issuer Cert: %s)\n",
|
||||||
|
data->set.ssl.issuercert?data->set.ssl.issuercert:"none");
|
||||||
|
}
|
||||||
|
|
||||||
size=sizeof(certbuf);
|
size=sizeof(certbuf);
|
||||||
rc = gnutls_x509_crt_get_dn_by_oid(x509_cert, GNUTLS_OID_X520_COMMON_NAME,
|
rc = gnutls_x509_crt_get_dn_by_oid(x509_cert, GNUTLS_OID_X520_COMMON_NAME,
|
||||||
0, /* the first and only one */
|
0, /* the first and only one */
|
||||||
@@ -548,7 +608,7 @@ Curl_gtls_connect(struct connectdata *conn,
|
|||||||
/* return number of sent (non-SSL) bytes */
|
/* return number of sent (non-SSL) bytes */
|
||||||
ssize_t Curl_gtls_send(struct connectdata *conn,
|
ssize_t Curl_gtls_send(struct connectdata *conn,
|
||||||
int sockindex,
|
int sockindex,
|
||||||
void *mem,
|
const void *mem,
|
||||||
size_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
ssize_t rc = gnutls_record_send(conn->ssl[sockindex].session, mem, len);
|
ssize_t rc = gnutls_record_send(conn->ssl[sockindex].session, mem, len);
|
||||||
|
25
lib/gtls.h
25
lib/gtls.h
@@ -7,7 +7,7 @@
|
|||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
|
* Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
*
|
*
|
||||||
* This software is licensed as described in the file COPYING, which
|
* This software is licensed as described in the file COPYING, which
|
||||||
* you should have received as part of this distribution. The terms
|
* you should have received as part of this distribution. The terms
|
||||||
@@ -22,6 +22,9 @@
|
|||||||
*
|
*
|
||||||
* $Id$
|
* $Id$
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifdef USE_GNUTLS
|
||||||
|
|
||||||
int Curl_gtls_init(void);
|
int Curl_gtls_init(void);
|
||||||
int Curl_gtls_cleanup(void);
|
int Curl_gtls_cleanup(void);
|
||||||
CURLcode Curl_gtls_connect(struct connectdata *conn, int sockindex);
|
CURLcode Curl_gtls_connect(struct connectdata *conn, int sockindex);
|
||||||
@@ -35,7 +38,7 @@ void Curl_gtls_close(struct connectdata *conn, int sockindex);
|
|||||||
|
|
||||||
/* return number of sent (non-SSL) bytes */
|
/* return number of sent (non-SSL) bytes */
|
||||||
ssize_t Curl_gtls_send(struct connectdata *conn, int sockindex,
|
ssize_t Curl_gtls_send(struct connectdata *conn, int sockindex,
|
||||||
void *mem, size_t len);
|
const void *mem, size_t len);
|
||||||
ssize_t Curl_gtls_recv(struct connectdata *conn, /* connection data */
|
ssize_t Curl_gtls_recv(struct connectdata *conn, /* connection data */
|
||||||
int num, /* socketindex */
|
int num, /* socketindex */
|
||||||
char *buf, /* store read data here */
|
char *buf, /* store read data here */
|
||||||
@@ -45,4 +48,22 @@ void Curl_gtls_session_free(void *ptr);
|
|||||||
size_t Curl_gtls_version(char *buffer, size_t size);
|
size_t Curl_gtls_version(char *buffer, size_t size);
|
||||||
int Curl_gtls_shutdown(struct connectdata *conn, int sockindex);
|
int Curl_gtls_shutdown(struct connectdata *conn, int sockindex);
|
||||||
|
|
||||||
|
/* API setup for GnuTLS */
|
||||||
|
#define curlssl_init Curl_gtls_init
|
||||||
|
#define curlssl_cleanup Curl_gtls_cleanup
|
||||||
|
#define curlssl_connect Curl_gtls_connect
|
||||||
|
#define curlssl_session_free(x) Curl_gtls_session_free(x)
|
||||||
|
#define curlssl_close_all Curl_gtls_close_all
|
||||||
|
#define curlssl_close Curl_gtls_close
|
||||||
|
#define curlssl_shutdown(x,y) Curl_gtls_shutdown(x,y)
|
||||||
|
#define curlssl_set_engine(x,y) (x=x, y=y, CURLE_FAILED_INIT)
|
||||||
|
#define curlssl_set_engine_default(x) (x=x, CURLE_FAILED_INIT)
|
||||||
|
#define curlssl_engines_list(x) (x=x, NULL)
|
||||||
|
#define curlssl_send Curl_gtls_send
|
||||||
|
#define curlssl_recv Curl_gtls_recv
|
||||||
|
#define curlssl_version Curl_gtls_version
|
||||||
|
#define curlssl_check_cxn(x) (x=x, -1)
|
||||||
|
#define curlssl_data_pending(x,y) (x=x, y=y, 0)
|
||||||
|
|
||||||
|
#endif /* USE_GNUTLS */
|
||||||
#endif
|
#endif
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user