Compare commits
538 Commits
curl-7_11_
...
curl-7_11_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a5b206f398 | ||
![]() |
306a05f9ff | ||
![]() |
81f8350616 | ||
![]() |
760ca6adc4 | ||
![]() |
ffb35ff5c3 | ||
![]() |
8eda06131b | ||
![]() |
5b55f9ecb3 | ||
![]() |
3417e0b0fc | ||
![]() |
79ed144b0f | ||
![]() |
8e5cf6589c | ||
![]() |
fc67cca882 | ||
![]() |
eea2287068 | ||
![]() |
5fe5de7511 | ||
![]() |
4a6b9972dd | ||
![]() |
256a16a8a3 | ||
![]() |
30e0891d3d | ||
![]() |
8147ccdf76 | ||
![]() |
26ab286630 | ||
![]() |
738807883e | ||
![]() |
03a0988ce8 | ||
![]() |
7de892eeb4 | ||
![]() |
8c4e91a653 | ||
![]() |
8f77030473 | ||
![]() |
546d0bd3d1 | ||
![]() |
5d53b544d3 | ||
![]() |
6dc8fac122 | ||
![]() |
8114f8562b | ||
![]() |
c79fa187b9 | ||
![]() |
237ec68b0e | ||
![]() |
4ebf4f6e55 | ||
![]() |
4d86593f3c | ||
![]() |
ec050ccbc4 | ||
![]() |
f19cade50f | ||
![]() |
a2f35aaf67 | ||
![]() |
e5c4b6b345 | ||
![]() |
bad978feb2 | ||
![]() |
bea9152aa8 | ||
![]() |
f788f988ea | ||
![]() |
d04ffd258b | ||
![]() |
24cfa7f1bb | ||
![]() |
94a1d09ac7 | ||
![]() |
230a75091b | ||
![]() |
4ad68ec305 | ||
![]() |
ef776ab893 | ||
![]() |
f8ff0f6bef | ||
![]() |
bc7122f6e2 | ||
![]() |
e5963dae48 | ||
![]() |
1ebda8fa0e | ||
![]() |
9af532e662 | ||
![]() |
9d064a3927 | ||
![]() |
d6edcfb486 | ||
![]() |
1d5a914c1c | ||
![]() |
666bc9ee4e | ||
![]() |
e545e33d5f | ||
![]() |
326e8b9fc1 | ||
![]() |
0d1fc73f21 | ||
![]() |
50a1853560 | ||
![]() |
35e158d80b | ||
![]() |
7225b14002 | ||
![]() |
85838a8966 | ||
![]() |
d29590f583 | ||
![]() |
467c3e3a1f | ||
![]() |
b484b3b696 | ||
![]() |
b45d50ccc2 | ||
![]() |
78e0ba82b0 | ||
![]() |
c39c55cb2d | ||
![]() |
cf004cbc7e | ||
![]() |
9948250723 | ||
![]() |
47afa058a8 | ||
![]() |
40e892bb36 | ||
![]() |
bc6f3beb9c | ||
![]() |
f9e1f32adb | ||
![]() |
93f96835f8 | ||
![]() |
22f4d81f3e | ||
![]() |
0d1f80ccb5 | ||
![]() |
4e87dd89bf | ||
![]() |
60e4b57ad8 | ||
![]() |
ce5805a955 | ||
![]() |
dad0715d79 | ||
![]() |
52d85341ae | ||
![]() |
7b2869338d | ||
![]() |
ab35b2837f | ||
![]() |
863473a856 | ||
![]() |
be6af69dc7 | ||
![]() |
3a80dc7f3e | ||
![]() |
bd42a2acb1 | ||
![]() |
7f0e708322 | ||
![]() |
8cbfe5d24a | ||
![]() |
bab9f532f2 | ||
![]() |
09cce943cb | ||
![]() |
702021e099 | ||
![]() |
e94c46c00c | ||
![]() |
9d311ff2c0 | ||
![]() |
108434b95c | ||
![]() |
c30cb73a5b | ||
![]() |
b7c56594b3 | ||
![]() |
2b700fae9d | ||
![]() |
ef783d8da7 | ||
![]() |
a4f1833629 | ||
![]() |
2c756fa1d7 | ||
![]() |
385086b460 | ||
![]() |
72a4715dff | ||
![]() |
7e6043f04f | ||
![]() |
576be36249 | ||
![]() |
c52c592f4c | ||
![]() |
d9ffd2f544 | ||
![]() |
a684c51c9b | ||
![]() |
3fa4ac080e | ||
![]() |
9c8b2a9958 | ||
![]() |
498666bdc3 | ||
![]() |
3d3612e252 | ||
![]() |
e9920d8a04 | ||
![]() |
acc5096eef | ||
![]() |
6717240650 | ||
![]() |
ef0a2c714b | ||
![]() |
2cd6403011 | ||
![]() |
75e1483e0d | ||
![]() |
8a4532ca2d | ||
![]() |
13f98c5c18 | ||
![]() |
30e71d54e0 | ||
![]() |
465753c2de | ||
![]() |
e40392ac03 | ||
![]() |
1eb9fd6c4d | ||
![]() |
78e47fbb5c | ||
![]() |
2b59e90c54 | ||
![]() |
59a30e6d9b | ||
![]() |
e0287fea20 | ||
![]() |
4fbf3f16e2 | ||
![]() |
de6433d5c2 | ||
![]() |
23ef66f33a | ||
![]() |
2479e06848 | ||
![]() |
f2abe03fcf | ||
![]() |
5e7f1a0eaf | ||
![]() |
eb9383d49b | ||
![]() |
817d17354e | ||
![]() |
88e226c686 | ||
![]() |
9116dd41bd | ||
![]() |
213d64fbd7 | ||
![]() |
a8419d68b6 | ||
![]() |
87a1c7033e | ||
![]() |
6e3fa90c9e | ||
![]() |
b2ef40731a | ||
![]() |
e2f7030202 | ||
![]() |
533519cc9c | ||
![]() |
7c85be9435 | ||
![]() |
89829093ca | ||
![]() |
7cb10a1853 | ||
![]() |
33d67c68de | ||
![]() |
e46b5719f2 | ||
![]() |
353f764119 | ||
![]() |
9f437269fb | ||
![]() |
45391178c9 | ||
![]() |
eddeb49fb6 | ||
![]() |
7ab3b5b3bb | ||
![]() |
00d5f886e3 | ||
![]() |
49daeaf805 | ||
![]() |
d03fbf5dfb | ||
![]() |
cb72a80fe0 | ||
![]() |
71d81f1f75 | ||
![]() |
b0c51d198c | ||
![]() |
71335e5b99 | ||
![]() |
c9b23ca055 | ||
![]() |
7983ec84a7 | ||
![]() |
8cb2a68694 | ||
![]() |
485122035c | ||
![]() |
5c4dba1418 | ||
![]() |
d6eb28400b | ||
![]() |
526c61c657 | ||
![]() |
fd6ec05916 | ||
![]() |
6789dfc5f5 | ||
![]() |
193a652e6a | ||
![]() |
4d12be9867 | ||
![]() |
87e7f4f688 | ||
![]() |
5eeaff8235 | ||
![]() |
7d2e872828 | ||
![]() |
097938e6c8 | ||
![]() |
d57b84e290 | ||
![]() |
fcc07bed90 | ||
![]() |
43bda5cd17 | ||
![]() |
45c7f064d4 | ||
![]() |
4dfc0a78e7 | ||
![]() |
82bd583251 | ||
![]() |
78f52c05a9 | ||
![]() |
d818cbe58c | ||
![]() |
4ae4336643 | ||
![]() |
25bcd45034 | ||
![]() |
f53d6e1c39 | ||
![]() |
17a3aa1ddc | ||
![]() |
6c78b4b7c0 | ||
![]() |
2b634be467 | ||
![]() |
c5b8e446f6 | ||
![]() |
7bd55dc17c | ||
![]() |
009cd96490 | ||
![]() |
d0242da304 | ||
![]() |
ab44763cb7 | ||
![]() |
3a80bb0a09 | ||
![]() |
77268e0649 | ||
![]() |
1ceb77b4dc | ||
![]() |
3430ce7907 | ||
![]() |
4ba7ef34d1 | ||
![]() |
4515d06465 | ||
![]() |
b6a4ca9bc8 | ||
![]() |
9b6350d0b0 | ||
![]() |
07de0ff0ff | ||
![]() |
7d8cd5906c | ||
![]() |
1056d2d22d | ||
![]() |
d571064b65 | ||
![]() |
33eaf2e18b | ||
![]() |
a054e5baf3 | ||
![]() |
85af357d81 | ||
![]() |
d687eed33e | ||
![]() |
38b6016dfa | ||
![]() |
be2cdf14f3 | ||
![]() |
0943f33438 | ||
![]() |
4427d91479 | ||
![]() |
0c03ed6013 | ||
![]() |
0c3c1b390a | ||
![]() |
9b09193cfd | ||
![]() |
b2cff76722 | ||
![]() |
37817667e2 | ||
![]() |
f9b2b7940e | ||
![]() |
5168b32f86 | ||
![]() |
0373758359 | ||
![]() |
df94c7aedc | ||
![]() |
6bd2de0c42 | ||
![]() |
82c31256e1 | ||
![]() |
403cbbe0c4 | ||
![]() |
9a7e3437ae | ||
![]() |
4fa58560bf | ||
![]() |
be62b27ce2 | ||
![]() |
3be66f3a03 | ||
![]() |
089bdaed00 | ||
![]() |
0d3674129f | ||
![]() |
fce6783be4 | ||
![]() |
48bc26e7e3 | ||
![]() |
f128fae705 | ||
![]() |
800fa31b65 | ||
![]() |
2ae4420869 | ||
![]() |
8ba042cf88 | ||
![]() |
7adf43c1c5 | ||
![]() |
d007e5615c | ||
![]() |
888eec833c | ||
![]() |
2911e63bc2 | ||
![]() |
34d247bc4e | ||
![]() |
99bc7e5fd3 | ||
![]() |
0b1f7995c5 | ||
![]() |
f35c28214e | ||
![]() |
35fd1365ae | ||
![]() |
f493081004 | ||
![]() |
e1b5e15431 | ||
![]() |
1aba4c519b | ||
![]() |
ae76a67566 | ||
![]() |
76241d0a02 | ||
![]() |
89227a9d75 | ||
![]() |
dfb5090e0f | ||
![]() |
c7fe8a7a11 | ||
![]() |
7174ca7a20 | ||
![]() |
2e61fde07f | ||
![]() |
41263f7d88 | ||
![]() |
02095ba0e1 | ||
![]() |
32a678eab3 | ||
![]() |
bd7ba3bde6 | ||
![]() |
0ffec4272a | ||
![]() |
ea4cd4d8aa | ||
![]() |
c7775c59bf | ||
![]() |
243bd5bbb4 | ||
![]() |
4bde770169 | ||
![]() |
9af7e46f72 | ||
![]() |
7d844c430c | ||
![]() |
4f953b6459 | ||
![]() |
44995d6877 | ||
![]() |
2ebc821558 | ||
![]() |
907bb78f3e | ||
![]() |
b2e1bf7e7d | ||
![]() |
7173a0f7b6 | ||
![]() |
a49bebc74e | ||
![]() |
8777ba7e42 | ||
![]() |
a39669198f | ||
![]() |
2c0c75e345 | ||
![]() |
236337ce86 | ||
![]() |
224ccc780a | ||
![]() |
ccde85d198 | ||
![]() |
9e7657d6ed | ||
![]() |
7ac455fca3 | ||
![]() |
e295cd759c | ||
![]() |
a472cd9310 | ||
![]() |
8794cb286b | ||
![]() |
455b1af214 | ||
![]() |
d765a00adb | ||
![]() |
de37308722 | ||
![]() |
7729c63be0 | ||
![]() |
eebcf90942 | ||
![]() |
fa8ecd3d53 | ||
![]() |
134cb66129 | ||
![]() |
349a15b089 | ||
![]() |
c14fa2c935 | ||
![]() |
6ca7af3419 | ||
![]() |
afa5924487 | ||
![]() |
bd63a557f3 | ||
![]() |
49aa798082 | ||
![]() |
c6e5b67197 | ||
![]() |
e7050f97c4 | ||
![]() |
b28f3d43bf | ||
![]() |
edd467a12c | ||
![]() |
0bf1bd51c4 | ||
![]() |
4cf70e3069 | ||
![]() |
9efddfedab | ||
![]() |
4b11e19f26 | ||
![]() |
de681d3b8f | ||
![]() |
f33be3c313 | ||
![]() |
62a12b7faf | ||
![]() |
e75ab79bdb | ||
![]() |
abd7e32c66 | ||
![]() |
e2b6a45cfa | ||
![]() |
e0c0b2ba7d | ||
![]() |
debbcf81bb | ||
![]() |
8300a880cc | ||
![]() |
420bbd2e08 | ||
![]() |
d87981e4c1 | ||
![]() |
59091fa860 | ||
![]() |
dc659ec736 | ||
![]() |
09aa165942 | ||
![]() |
f2fbb5f3d5 | ||
![]() |
29bedfcf7f | ||
![]() |
ccdaa0b51f | ||
![]() |
f516734941 | ||
![]() |
d53d33698c | ||
![]() |
39926181ea | ||
![]() |
8415b4a271 | ||
![]() |
e4916145ef | ||
![]() |
3ec605de67 | ||
![]() |
a7e04cac78 | ||
![]() |
8ddc18a4f9 | ||
![]() |
0d3aa8b7be | ||
![]() |
496bbceef1 | ||
![]() |
901edd32b5 | ||
![]() |
0612c275a7 | ||
![]() |
f3d91528a1 | ||
![]() |
f7fae23546 | ||
![]() |
2d41efb71e | ||
![]() |
7abf2f44ec | ||
![]() |
3a36d4fdea | ||
![]() |
12b71e422f | ||
![]() |
d25a0a1bc8 | ||
![]() |
4d17e77532 | ||
![]() |
6a921197e2 | ||
![]() |
fa57a8a78e | ||
![]() |
eb4d65d0ba | ||
![]() |
e7d9ea8919 | ||
![]() |
372b141d5b | ||
![]() |
115e74a8ad | ||
![]() |
1b26fe39f9 | ||
![]() |
4674f3f115 | ||
![]() |
d8a1415646 | ||
![]() |
773e7e871e | ||
![]() |
1d937d62c0 | ||
![]() |
f3663a9d0f | ||
![]() |
199b2f4602 | ||
![]() |
49ab1d914c | ||
![]() |
f9a6e7b68d | ||
![]() |
5d64d657de | ||
![]() |
52caba0417 | ||
![]() |
ad1a70205f | ||
![]() |
d57eed6f22 | ||
![]() |
a3d39efa3b | ||
![]() |
50efb8f33e | ||
![]() |
ad75360ec7 | ||
![]() |
7f29bf61e2 | ||
![]() |
9ca395fded | ||
![]() |
68e140b2eb | ||
![]() |
283f68f660 | ||
![]() |
e6947f99ed | ||
![]() |
93e32e6f62 | ||
![]() |
f8a5ec1380 | ||
![]() |
2d0b2f294f | ||
![]() |
08e286ed68 | ||
![]() |
220caed248 | ||
![]() |
6eb0b5b917 | ||
![]() |
3bdc883c93 | ||
![]() |
cc85f813d1 | ||
![]() |
e723d2eb7c | ||
![]() |
b440c6638f | ||
![]() |
648c5b05c0 | ||
![]() |
011929cf4d | ||
![]() |
7f679c3da3 | ||
![]() |
3e4cd0b422 | ||
![]() |
fc4f777b42 | ||
![]() |
208a31f549 | ||
![]() |
e565631afe | ||
![]() |
9f2780a2ee | ||
![]() |
1a6969a887 | ||
![]() |
f56d753507 | ||
![]() |
e5165af5a6 | ||
![]() |
83e878420a | ||
![]() |
58a5f485db | ||
![]() |
e8fb77fac3 | ||
![]() |
d292088a83 | ||
![]() |
de100f8b51 | ||
![]() |
1cb2306ae0 | ||
![]() |
cc90a235f4 | ||
![]() |
e97ce57d0b | ||
![]() |
dc753b8315 | ||
![]() |
a5c4442ebf | ||
![]() |
a271cfb697 | ||
![]() |
6dffe9702d | ||
![]() |
f71139750d | ||
![]() |
690b3e58b2 | ||
![]() |
0c7cb0c10f | ||
![]() |
4816294f52 | ||
![]() |
6587ff440a | ||
![]() |
791e49134b | ||
![]() |
9254c3a103 | ||
![]() |
9c95ebcbe7 | ||
![]() |
3a4ed71b88 | ||
![]() |
d6d312d550 | ||
![]() |
1fa163fdf7 | ||
![]() |
82b27d1b97 | ||
![]() |
f7dee3b846 | ||
![]() |
a7b5045598 | ||
![]() |
b7fda8ec73 | ||
![]() |
3d7f4c0d77 | ||
![]() |
01771e50a1 | ||
![]() |
c23cf6a058 | ||
![]() |
79f9914af8 | ||
![]() |
803fb123cb | ||
![]() |
97728f5b1c | ||
![]() |
36d5f30b8c | ||
![]() |
e82a575894 | ||
![]() |
773a8fe598 | ||
![]() |
fa1c0d4a56 | ||
![]() |
7e01548d46 | ||
![]() |
14b36a8cba | ||
![]() |
1089d91e77 | ||
![]() |
556b68f44e | ||
![]() |
3f37ae471d | ||
![]() |
9f4e682ca9 | ||
![]() |
5fc8d4da45 | ||
![]() |
4af66b70fc | ||
![]() |
95dd343244 | ||
![]() |
e449aab0af | ||
![]() |
3a0192bea6 | ||
![]() |
37685848d1 | ||
![]() |
0412a201a3 | ||
![]() |
ca522d4787 | ||
![]() |
c2967c3c39 | ||
![]() |
70d7a9e6a5 | ||
![]() |
462d1c5231 | ||
![]() |
886391d145 | ||
![]() |
1442fab4b6 | ||
![]() |
aa93e2e638 | ||
![]() |
e1d541086c | ||
![]() |
3b0f52205d | ||
![]() |
b84eaff1d5 | ||
![]() |
9eb6fc1fb6 | ||
![]() |
253f5f1a9a | ||
![]() |
dd1f495c2f | ||
![]() |
12fa877f00 | ||
![]() |
580a2fe72b | ||
![]() |
7f0ec86769 | ||
![]() |
5e69ca0ebd | ||
![]() |
b6592e29a4 | ||
![]() |
4cba2ea1ad | ||
![]() |
14cb9d296c | ||
![]() |
df750c236c | ||
![]() |
154c9bc3b8 | ||
![]() |
508ad2c92f | ||
![]() |
36a90aeaec | ||
![]() |
f385b1976e | ||
![]() |
3d99b566a6 | ||
![]() |
99a3e2d769 | ||
![]() |
aaa42735e6 | ||
![]() |
50c80a49cc | ||
![]() |
6b7f169b10 | ||
![]() |
01e3bb98b5 | ||
![]() |
7052598e59 | ||
![]() |
ab52e20832 | ||
![]() |
f50678eda7 | ||
![]() |
3ded81188b | ||
![]() |
a435151735 | ||
![]() |
bfe5568c85 | ||
![]() |
7e45a1ac53 | ||
![]() |
76a51ef4b3 | ||
![]() |
fc7c4d6157 | ||
![]() |
4d17d6876e | ||
![]() |
0d6236f7e1 | ||
![]() |
0e4e72f193 | ||
![]() |
107413c021 | ||
![]() |
d7579087f2 | ||
![]() |
3415ac3866 | ||
![]() |
d50b209a7a | ||
![]() |
62e0f10eba | ||
![]() |
0b2b7439fe | ||
![]() |
edcd1981ea | ||
![]() |
ada9a9f4a1 | ||
![]() |
1c0e4f1178 | ||
![]() |
663d2080d1 | ||
![]() |
e5641a33bb | ||
![]() |
9b24c9a754 | ||
![]() |
99b96d5446 | ||
![]() |
cf7817eb38 | ||
![]() |
9bca9681ba | ||
![]() |
958987c214 | ||
![]() |
ed75842df0 | ||
![]() |
f35398e414 | ||
![]() |
3b39cee785 | ||
![]() |
dc932f739a | ||
![]() |
7d15651115 | ||
![]() |
e096072745 | ||
![]() |
5d947e973e | ||
![]() |
2465ff991f | ||
![]() |
d10a941d29 | ||
![]() |
5a58d51993 | ||
![]() |
142f40582f | ||
![]() |
4227407438 | ||
![]() |
6e29f5d1df | ||
![]() |
334c3df09d | ||
![]() |
4120b7b0c0 | ||
![]() |
fac1c13895 | ||
![]() |
649caa1953 | ||
![]() |
d8ee927be2 | ||
![]() |
3efb90dd75 | ||
![]() |
e4c5653035 | ||
![]() |
ad7e26b140 | ||
![]() |
f39749cee4 | ||
![]() |
87eb26a33d | ||
![]() |
9a48ca69fc | ||
![]() |
a259f66fa4 | ||
![]() |
83d77dc013 | ||
![]() |
e36914a425 | ||
![]() |
5bd0471315 | ||
![]() |
b791e158f0 | ||
![]() |
6cd0a90b52 | ||
![]() |
d5bb877fba | ||
![]() |
0c4907afcc | ||
![]() |
e5cd0cc402 | ||
![]() |
252423a725 | ||
![]() |
eaddf3d198 | ||
![]() |
a37a79c2a9 |
450
CHANGES
450
CHANGES
@@ -6,7 +6,421 @@
|
||||
|
||||
Changelog
|
||||
|
||||
Version 7.11.0 (22 Januari 2004)
|
||||
Daniel (18 March 2004)
|
||||
- Tor Arntsen brought some info about SGI IRIX:
|
||||
|
||||
IRIX supports 3 different executable/object formats, -32, -n32 and -64.
|
||||
-n32 is default 32-bit format, -32 is the "old" 32-bit format, and -64 is
|
||||
the 64-bit format. Libraries for the different formats are in lib, lib32
|
||||
and lib64 respectively.
|
||||
|
||||
We've now adjusted the configure script to adapt to this when scanning for
|
||||
3rd party libs, such as OpenSSL.
|
||||
|
||||
Daniel (17 March 2004)
|
||||
- Watz pointed out a few missing files in the MSVC project description file.
|
||||
|
||||
- G<>nter Knauf brought patches, code and makefiles to build curl on Novell
|
||||
NetWare.
|
||||
|
||||
Daniel (15 March 2004)
|
||||
- Lots of libcurl man pages were updated to contain references to other man
|
||||
pages the recognized way so that they appear as nice hyperlinks in the HTML
|
||||
versions.
|
||||
|
||||
- buildconf now checks the m4 version too, since autoconf requires a GNU m4
|
||||
version to build proper configure scripts.
|
||||
|
||||
Daniel (12 March 2004)
|
||||
- Added CURLOPT_POSTFIELDSIZE_LARGE, the large file version of
|
||||
CURLOPT_POSTFIELDSIZE to allow POSTs larger than 2GB.
|
||||
|
||||
- David Byron fixed an uninitialized variable case/crash.
|
||||
|
||||
Daniel (10 March 2004)
|
||||
- Jeff Lawson fixed the SSL connection to deal with received signals during the
|
||||
connect.
|
||||
|
||||
- Changed the OS string for win32 to become "i386-pc-win32".
|
||||
|
||||
Daniel (9 March 2004)
|
||||
- Changed the internals to use curl_socket_t for socket variable type. This
|
||||
should enable us to build with less warnings on Windows, where SOCKET is
|
||||
used which is an unsigned int, while most other platforms use a mere int.
|
||||
|
||||
- Modified lib/config-win32.h to build fine on MSVC again.
|
||||
|
||||
Version 7.11.1-pre1 (8 March 2004)
|
||||
|
||||
Daniel (8 March 2004)
|
||||
- Minor fix to make curl CURL_VERSION_LARGEFILE is only set if curl_off_t is
|
||||
larger than 4 bytes.
|
||||
|
||||
Daniel (4 March 2004)
|
||||
- Improved PUT/POST with NTLM/Digest authentication, the so called issue 12.
|
||||
|
||||
- Modified the test HTTP server a lot to work with the upcoming changes for
|
||||
PUT/POST with NTLM/Digest authentication (like test case 88). Added Andr<64>s
|
||||
Garc<72>a's win32-changes. Improved the logging.
|
||||
|
||||
- Fixed the file:-related progress/getinfo stuff a bit more.
|
||||
|
||||
Daniel (4 March 2004)
|
||||
- I corrected a problem with the multi interface when following a Location:
|
||||
header or when doing multiple-request authentications. A subsequent request
|
||||
could erroneously re-use a previous connection that was sent with
|
||||
Connection: close. Christopher R. Palmer reported.
|
||||
|
||||
- Andr<64>s Garc<72>a patched curl to prevent warnings while compiling with mingw,
|
||||
mainly because it is now possible to have both WIN32 and HAVE_CONFIG_H
|
||||
defined.
|
||||
|
||||
- When transferring files from a file: URL, the progress meter and other
|
||||
transfer metrics were not updated properly.
|
||||
|
||||
- David Byron provided a "version resource" file to the curl executable for
|
||||
the windows builds.
|
||||
|
||||
Daniel (3 March 2004)
|
||||
- David Byron's work on making libcurl only require winsock 1.1 on Windows
|
||||
machines.
|
||||
|
||||
- More variable cleanups based on compiler warnings generated by Tor Arntsen's
|
||||
autobuilds with MIPSPro.
|
||||
|
||||
- Joe Halpin helped us fix some pedantic compiler warnings on FreeBSD.
|
||||
|
||||
- Applied Tom Bates' patch to build on nsr-tandem-nsk.
|
||||
|
||||
- Dan Fandrich corrected some flaws in the configure GSS detection.
|
||||
|
||||
Daniel (2 March 2004)
|
||||
- Fixed the libcurl code to use FORMAT_OFF_T for printf() formatting
|
||||
curl_off_t types internally.
|
||||
|
||||
Daniel (1 March 2004)
|
||||
- Added CURL_VERSION_LARGEFILE as a feature-bit in the curl_version_info()
|
||||
response, that signals if this libcurl supports >2GB files. curl -V now
|
||||
outputs 'Largefile' in the Features: field if this is the case. Most systems
|
||||
are likely to support this.
|
||||
|
||||
- We offer a CURL_FORMAT_OFF_T define in the public header, which can be used
|
||||
to printf() curl_off_t variables. We also modified the libcurl sources to
|
||||
use this define instead of the previous %Od approach (although I've left the
|
||||
O-flag functional in the code). This should also prevent compilers to warn
|
||||
on the home-grown option.
|
||||
|
||||
- Fixed the resume-check code to test for a working resume at the end of the
|
||||
headers and not at the first body-byte.
|
||||
|
||||
- CURLOPT_DNS_USE_GLOBAL_CACHE is now considered obsolete. Stop using it. If
|
||||
you need a global DNS cache for whatever reason, use the share interface and
|
||||
you'll get a global cache that works the way it should work. You can even
|
||||
have any number of global caches, all at your command. This is now also
|
||||
mentioned in the docs.
|
||||
|
||||
- Made the *printf code support the z-flag to enable size_t printf() in a
|
||||
manner similar to how glibc allows it. To make printfing of this work on
|
||||
platforms with 64bit size_t and 32bit ints. If there even are any! ;-)
|
||||
|
||||
- Christopher R. Palmer discovered that if you CURLOPT_FRESH_CONNECT and
|
||||
CURLAUTH_NTLM (or CURLAUTH_ANY and libcurl then picked NTLM), libcurl would
|
||||
loop without succeeding to authenticate due to the new connection that was
|
||||
made for all round-trips in the authentication. Now, the FRESH_CONNECT is
|
||||
remade to only matter for the first connection made with curl_easy_perform()
|
||||
and all the rest that might follow due to FOLLOWLOCATION or HTTP
|
||||
authentication are now ignoring that option.
|
||||
|
||||
- Adjusted the QUIT code slightly since it could core-dump.
|
||||
|
||||
- Corrected the test suite's FTP server to provide a correct size to the
|
||||
'verifiedserver' request.
|
||||
|
||||
Daniel (27 February 2004)
|
||||
- Joe Halpin made the FTP code send QUIT on the control connection before
|
||||
disconnecting the TCP connection. This is what good-behaving ftp clients
|
||||
should do.
|
||||
|
||||
Daniel (26 February 2004)
|
||||
- David Byron updated several files to make curl build fine on MSVC 6. He
|
||||
also added the 'buildconf.bat' that works like the 'buildconf + configure'
|
||||
combo does on unixes.
|
||||
|
||||
- Gisle Vanem made the memdebug stuff support calloc() as well.
|
||||
|
||||
- Tor Arntsen pointed out that testcurl.sh needed to remove the generated
|
||||
files in order to have them re-generated in each build.
|
||||
|
||||
- Andy Serpa found out that the share interface did not enjoy life when not
|
||||
having the lock and unlock callbacks set, even though documented to be
|
||||
OK. It still is OK, and now the code won't segfault anymore!
|
||||
|
||||
Daniel (25 February 2004)
|
||||
- Based on a patch by Greg Hewgill I modified how long long is used in the
|
||||
mprintf code, as we can use a 64bit type with MSVC that is a long long
|
||||
equivalent. This corrects some weird large file behaviors on windows.
|
||||
|
||||
- Tor Arntsen helped me work out --enable-debug to work better with different
|
||||
versions of the gcc and icc compilers.
|
||||
|
||||
- Added CURLOPT_SHARE to the curl_easy_setopt.3 man page.
|
||||
|
||||
Daniel (22 February 2004)
|
||||
- Applied the final pieces of Gisle Vanem's patch that brings a working name
|
||||
resolve timeout to the windows versions of curl!
|
||||
|
||||
Daniel (21 February 2004)
|
||||
- David Byron's fix to allow the speed-limit logic work even if you set
|
||||
limit-rate. It does work on the expense of the rate limiter.
|
||||
|
||||
Daniel (20 February 2004)
|
||||
- configure --enable-debug with gcc now also tries to detect the icc compiler
|
||||
(which somehow gets treated as if it is a gcc) to stop using all the gcc
|
||||
options with it, and we also provide -isystem options for each extra -I
|
||||
option the configure script has figured out (for OpenSSL, kerberos, zlib,
|
||||
Heimdal etc). This of course to prevent warnings on headers we don't have
|
||||
control of.
|
||||
|
||||
Daniel (19 February 2004)
|
||||
- Doug Porter made libcurl use the HOME environment variable before the
|
||||
getpwuid results when looking for .netrc files.
|
||||
|
||||
- If 'configure --enable-debug' is used with gcc, it now checks which gcc
|
||||
version it is and uses as picky compiler options as possible for the
|
||||
particular version.
|
||||
|
||||
- Code that can be used in both the lib and in the curl app is now made to use
|
||||
the curlx_ prefix. The first function to be available like this is the
|
||||
curlx_strtoll() function. This is made to allow the app to use existing code,
|
||||
but without polluting the libcurl API. Further explanations posted here:
|
||||
|
||||
http://curl.haxx.se/mail/lib-2004-02/0215.html
|
||||
|
||||
Daniel (18 February 2004)
|
||||
- Fixed buildconf to not use "which" as AIX and Tru64 have what have been
|
||||
referred to as "horribly broken 'which' programs".
|
||||
|
||||
- Made sure dns cache timeout set to -1 really means caching forever.
|
||||
|
||||
Daniel (17 February 2004)
|
||||
- Made it possibly to build c-ares with the libcurl memdebug system to better
|
||||
track memory.
|
||||
|
||||
Daniel (16 February 2004)
|
||||
- When using ares, we now initialize the ares 'channel' in curl_easy_init()
|
||||
and re-use that same handle during the entire curl handle's life-time. It
|
||||
improves performance.
|
||||
|
||||
- Fixed a problem when displaying verbose for ipv6-enabled libcurls and
|
||||
re-used connections. Problem reported and fix verified by Grigory Entin.
|
||||
|
||||
- Jeff Lawson fixed the version-check in the SOCKS5 code.
|
||||
|
||||
Daniel (15 February 2004)
|
||||
- Fixed a case where a host cache entry was not flagged in-use properly when a
|
||||
cached entry was used.
|
||||
|
||||
- Andr<64>s Garc<72>a's patch that checks for winmm in the configure script was
|
||||
applied.
|
||||
|
||||
Daniel (13 February 2004)
|
||||
- Ben Greear's SO_BINDTODEVICE patch for the binding of the local end to a
|
||||
specific network interface.
|
||||
|
||||
- Greg Hewgill found out that the variable holding 'contentlength' wasn't big
|
||||
enough to hold a large file!
|
||||
|
||||
- Tor Arntsen fixed a 64bit-related problem in date-related code in the ftp
|
||||
department, and there was another potential problem in the name resolve code
|
||||
too.
|
||||
|
||||
Daniel (11 February 2004)
|
||||
- Removed a few variables that were only set but never used, as some compilers
|
||||
warn about that and we do not like compiler warnings!
|
||||
|
||||
- Removed the need for symlinks in the tests/data directory if curl is built
|
||||
outside of the source directory and the 'make test' is used. This was done
|
||||
by providing a "source dir path" to the scripts/servers.
|
||||
|
||||
- Now, if the configure script can't find an nroff tool or an option to nroff
|
||||
to use to convert man pages with, it will completely switch off the built-in
|
||||
manual.
|
||||
|
||||
- 'configure --disable-manual' completely disables the built-in manual from
|
||||
the curl command tool.
|
||||
|
||||
- Andr<64>s Garc<72>a fixed the configure script and a minor source edit, and now
|
||||
he has managed to get msys/mingw to run configure and then build!
|
||||
|
||||
Daniel (9 February 2004)
|
||||
- The default HTTP Accept: header was modified to the much simpler
|
||||
"Accept: */*".
|
||||
|
||||
- P R Schaffner updated the curl-ssl spec file for RPMs.
|
||||
|
||||
- Dominick Meglio brought lots of documentation for the share interface's man
|
||||
pages that were previously missing.
|
||||
|
||||
- Tor Arntsen provided a patch that makes libcurl work-around a bug in the
|
||||
AIX5 implementation of getaddrinfo(). This makes the FTP PORT stuff work on
|
||||
ipv6-enabled AIX builds.
|
||||
|
||||
- Ken Rastatter provided portability fixes for the curlgtk.c example, and now
|
||||
it runs on windows with GTK as well!
|
||||
|
||||
Daniel (6 February 2004)
|
||||
- Andr<64>s Garc<72>a made the configure script find gethostbyname() fine when run
|
||||
with mingw on windows.
|
||||
|
||||
- Modified the ldap code to use proper function pointers all over (instead of
|
||||
mixed data and function pointers) to work-around the picky MIPSPro compiler
|
||||
warnings.
|
||||
|
||||
- A custom Host: header is only considered if the request is not made by
|
||||
following a location. After discussions with Tim Baker.
|
||||
|
||||
Daniel (5 February 2004)
|
||||
- The libz part of the configure script now only set the two libz-related
|
||||
define HAVE_ZLIB_H and HAVE_LIBZ if both the lib and the header is found.
|
||||
If one is missing, none of the defines is set.
|
||||
|
||||
- Andr<64>s Garc<72>a fixed the Mingw makefiles.
|
||||
|
||||
- Len Krause reported that curl 7.9.X could do uploading from stdin without
|
||||
doing chunked encoding, which current curl cannot do even if you disable
|
||||
the transfer-encoding chunked header. Now it can again, and test case 98
|
||||
verifies this functionality.
|
||||
|
||||
- Tor Arntsen fixed a weird getaddrinfo() usage in the FTP code, preventing
|
||||
the ipv6-code for PORT work on AIX 5.2. We now also provide (better) error
|
||||
messages when bailing out in the that function.
|
||||
|
||||
- Tor Arntsen now provides AIX and IRIX (using gcc, xlc and the MIPSPro
|
||||
compilers) automated build logs (http://curl.haxx.se/auto/) and we've fixed
|
||||
numerous minor quirks to make less warnings appear.
|
||||
|
||||
Daniel (4 February 2004)
|
||||
- Based on a patch by Gilad, we now use the custom timeouts when waiting for a
|
||||
server to connect when using FTP PORT. Previously we always waited 10
|
||||
seconds, no more no less. We now also changed the default (if no timeout is
|
||||
set) to wait 60 seconds for the connect before we fail.
|
||||
|
||||
Daniel (3 February 2004)
|
||||
- Modified to link with c-ares instead of ares.
|
||||
|
||||
Daniel (2 February 2004)
|
||||
- Added a configure test to check for which option the (g)nroff tool wants
|
||||
to extract plain text from the man pages. Tor Arntsen told us the AIX
|
||||
version of GNU gnroff doesn't support -man!
|
||||
|
||||
- Added an undef of accept in memdebug.h to make curl build with --enable-debug
|
||||
on AIX 5.2 which seems to have accept defined. Reported by Tor Arntsen.
|
||||
|
||||
- curl_version() now includes c-ares version info, and curl_version_info() now
|
||||
returns a struct with version SECOND that also includes that info.
|
||||
|
||||
- We are now officially using c-ares for asynch name resolves. c-ares is the
|
||||
new library, based on the existing ares but with an extended and slightly
|
||||
modified API.
|
||||
|
||||
- Dirk improved the ares timeout code, and now we also include the ares error
|
||||
string when we fail to resolve a name.
|
||||
|
||||
- Another tweak to make test case 91 run fine. Now we have another bit on a
|
||||
connection that is set true if the connection is marked for 'retry'. That
|
||||
makes the connection get closed and re-opened and the HTTP-done code must
|
||||
not complain on the fact that no data was received.
|
||||
|
||||
- Based on Dirk Manske's patch, I modified the name resolving with ares to
|
||||
feature a timeout for really slow lookups. It now defaults to 300 seconds,
|
||||
but is now adjusted to the CONNECTTIMEOUT/TIMOUE timeouts if one of them
|
||||
is set.
|
||||
|
||||
- Fixed the inclusion of ca-bundle.h to really use the one in the build dir
|
||||
before the one in the source dir. Domenico Andreoli found out and reported.
|
||||
|
||||
- Added test case 97, a simple POST with a custom Content-Type header
|
||||
replacing the original application/x-www-form-urlencoded one.
|
||||
|
||||
Daniel (30 January 2004)
|
||||
- Added code that attempts to fix the test 91 failure. As has been figured out
|
||||
by Patrick Smith, the error happens because we re-use a connection that the
|
||||
server is just about to close and we even manage to send away the request
|
||||
without seeing an error. On the first read attempt we get a ECONNRESET.
|
||||
Starting now, we attempt to detect this and if so, we retry the request on a
|
||||
fresh connection.
|
||||
|
||||
- I added test case 510 which is a custom program that does a POST using a
|
||||
read callback, with chunked transfer-encoding.
|
||||
|
||||
- Adjusted one of the MPE/iX changes as it made test case 504 fail all over.
|
||||
|
||||
- Added --socks as a recognized option. It works just like --proxy but sets a
|
||||
SOCKS5 proxy to use. SOCKS5 support has been available in libcurl for a
|
||||
while, just not provided by the curl tool. This does not currently work for
|
||||
IPv6-enabled libcurls.
|
||||
|
||||
Daniel (29 January 2004)
|
||||
- Stadler Stephan pointed out that src/hugehelp.c included config.h without
|
||||
checking the define if its present...
|
||||
|
||||
- Ken Hirsch provided patches to make curl build fine on the MPE/iX operating
|
||||
system.
|
||||
|
||||
- Dan Fandrich compiled curl with lots of aggressively pedantic compiler
|
||||
options and thus found a few minor errors and did some general cleanups to
|
||||
avoid them.
|
||||
|
||||
- Dirk Manske fixed a flaw in ares that prevented it to use non-blocking
|
||||
sockets properly.
|
||||
|
||||
Daniel (28 January 2004)
|
||||
- Richard Bramante fixed chunked transfer-encoded "uploads" to send a final
|
||||
CRLF combo properly.
|
||||
|
||||
Daniel (27 January 2004)
|
||||
- Made the response-headers during a CONNECT request to a proxy get passed on
|
||||
as regular headers, so they appear with -i/-I options and similar.
|
||||
|
||||
- Based on a patch by Gisle Vanem, I've made the progress meter display
|
||||
properly switch to a GB-display when more than 9999MB have been transfered.
|
||||
|
||||
Daniel (23 January 2004)
|
||||
- Gisle Vanem pointed out a curlrc parser problem/crash when an option with a
|
||||
required didn't have one and was on the last line of a file.
|
||||
|
||||
- More Windows fixes for large files. We now build and link with
|
||||
../lib/strtoofft.c in the app code since Curl_strtoll() is not a provided
|
||||
libcurl function... Perhaps we should consider a 'common' dir or similar
|
||||
where we put source code used in both the lib and the client. Or perhaps
|
||||
we'll just make this function available in the library...
|
||||
|
||||
- Vincent Bronner found out the socks5 code crashed when no username was
|
||||
set.
|
||||
|
||||
- Vincent Bronner spotted a problem with proxy username/password when re-using
|
||||
a persistent connection.
|
||||
|
||||
- Fixed the progress meter display for files larger than 2^31 bytes. Gisle
|
||||
Vanem reported.
|
||||
|
||||
Daniel (22 January 2004)
|
||||
- Gisle Vanem made strtoll() get used when curl is built with the mingw
|
||||
compiler.
|
||||
|
||||
- Gisle Vanem fixed the compressed help text code to display properly.
|
||||
|
||||
- Removed the '#define HttpPost' from the public header file, as curl_httppost
|
||||
is the proper name and it has been for quite some time now. Fixes another
|
||||
name space pollution.
|
||||
|
||||
- Added 'curl_off_t' typedef in the public header file, to be used to provide
|
||||
large file sizes to the *_LARGE options. Adjusted the code all over to use
|
||||
this variable type instead of 'off_t'. This is an attempt to make the large
|
||||
file support work on more platforms. The configure script now checks the
|
||||
size of the curl_off_t instead of the plain off_t.
|
||||
|
||||
Version 7.11.0 (22 January 2004)
|
||||
|
||||
Daniel (21 January 2004)
|
||||
- Removed the defines in the public header file with TIMECOND_ prefixes. They
|
||||
@@ -136,7 +550,7 @@ Daniel (10 December)
|
||||
Daniel (8 December)
|
||||
- Fixed the flaw that made -lz appear twice on the link command line.
|
||||
|
||||
- After correspondance with Gisle Vanem, I changed the 'connection aborted'
|
||||
- After correspondence with Gisle Vanem, I changed the 'connection aborted'
|
||||
error text when the FTP response reader failed to more specificly identify
|
||||
what the problem is.
|
||||
|
||||
@@ -152,7 +566,7 @@ Daniel (3 December)
|
||||
code fail.
|
||||
|
||||
- swalkaus at yahoo.com patched libcurl to ignore Content-Length: headers
|
||||
when Tranfer-Encoding: chunked is used, as mandated by RFC2616.
|
||||
when Transfer-Encoding: chunked is used, as mandated by RFC2616.
|
||||
|
||||
Daniel (2 December)
|
||||
- --ftp-pasv was added, which serves the only purpose of overriding a
|
||||
@@ -359,7 +773,7 @@ Daniel (29 October)
|
||||
Daniel (28 October)
|
||||
- Dan C tracked down yet another weird behavior in the glibc gethostbyname_r()
|
||||
function for some specific versions (reported on 2.2.5 and 2.1.1), and
|
||||
provided a fix. On Linux machines with these glibc versioins, non-ipv6
|
||||
provided a fix. On Linux machines with these glibc versions, non-ipv6
|
||||
builds of libcurl would often fail to resolve perfectly resolvable host
|
||||
names.
|
||||
|
||||
@@ -507,7 +921,7 @@ Daniel (4 October)
|
||||
- Siddhartha Prakash Jain provided a patch with a fix for libcurl with ares,
|
||||
when working on IP-only names as we then could return "wait" status when the
|
||||
name in fact already was resolved. I edited the patch slightly to not expose
|
||||
async details to non-ares aware source code.
|
||||
asynch details to non-ares aware source code.
|
||||
|
||||
Daniel (3 October)
|
||||
- Neil Spring posted the debian bug report #213180, and pointed out that using
|
||||
@@ -741,7 +1155,7 @@ Daniel (5 August)
|
||||
|
||||
- Salvatore Sorrentino filed bug report #783116 and Early Ehlinger posted a
|
||||
bug report to the libcurl list, both identifying a problem with FTP
|
||||
persitent connections and how the dir hiearchy was not properly reset
|
||||
persistent connections and how the dir hierarchy was not properly reset
|
||||
between files.
|
||||
|
||||
- David Byron's thoughts on a fixed Makefile in tests/ were applied.
|
||||
@@ -823,8 +1237,8 @@ Daniel (30 July)
|
||||
more portably...
|
||||
|
||||
He also indicated that distributing the src/hugehelp.c in a compressed state
|
||||
like I acccidentally did may not be the smartest move... I've now fixed the
|
||||
distribute procudere to automaticly generate an uncompressed version when I
|
||||
like I accidentally did may not be the smartest move... I've now fixed the
|
||||
distribute procedure to automatically generate an uncompressed version when I
|
||||
make release archives.
|
||||
|
||||
Daniel (29 July)
|
||||
@@ -886,7 +1300,7 @@ Daniel (18 July)
|
||||
|
||||
- Since NTLM authenticates connections instead of single requests, I had to
|
||||
re-arrange how we store the NTLM data and I had to improve the test suite to
|
||||
finally work properly with persistancy to make the NTLM tests run fine
|
||||
finally work properly with persistency to make the NTLM tests run fine
|
||||
again. This also forced me to have to update lots of HTTP test cases.
|
||||
|
||||
Daniel (16 July)
|
||||
@@ -900,7 +1314,7 @@ Daniel (5 July)
|
||||
- Doug Kaufman provided additional fixes for the DOS port.
|
||||
|
||||
Daniel (4 July)
|
||||
- Rick Richardson pointed out that using setvbuf() to achive non-buffering
|
||||
- Rick Richardson pointed out that using setvbuf() to achieve non-buffering
|
||||
on output is no-good for SCO Xenix and other unixes. We switched over to
|
||||
using plain fflush() instead.
|
||||
|
||||
@@ -954,7 +1368,7 @@ Daniel (17 June)
|
||||
type(s) you want to use. If more than one is set, libcurl will use one of
|
||||
the selected one and the one it considers is more secure. Test case 67 and
|
||||
68 (for NTLM) were fixed and we've reduced a round-trip for specific --ntlm
|
||||
featches, and test case 69 and 70 were added for testing authentication
|
||||
fetches, and test case 69 and 70 were added for testing authentication
|
||||
"picking". --anyauth is the new command line tool option, and I also added
|
||||
--basic for completeness (that's the default type).
|
||||
|
||||
@@ -987,7 +1401,7 @@ Version 7.10.6-pre2 (16 June 2003)
|
||||
Daniel (16 June)
|
||||
- curl_version_info() now returns bitmasked information weather NTLM and
|
||||
GSSNEGOTIATE are supported, since it is doomed to vary on different
|
||||
installatiions.
|
||||
installations.
|
||||
|
||||
- I remade the HTTP Digest code to use the MD5-code provided by OpenSSL if
|
||||
that is present, and only use our own MD5-code if it isn't.
|
||||
@@ -1280,7 +1694,7 @@ Daniel (6 Apr)
|
||||
|
||||
Daniel (4 Apr)
|
||||
- Martijn Broenland found another cases where a server application didn't
|
||||
like the boundary string used by curl when foing a multi-part/formpost. We
|
||||
like the boundary string used by curl when doing a multi-part/formpost. We
|
||||
modified the boundary string to look like the one IE uses, as this is
|
||||
probably gonna make curl work with more applications.
|
||||
|
||||
@@ -1318,7 +1732,7 @@ Daniel (31 Mar)
|
||||
"--location-trusted".
|
||||
|
||||
- Frankie Fong reported a problem with libcurl if you re-used an easy handle
|
||||
with a proxy, and you first made a https:// connction to a host and then
|
||||
with a proxy, and you first made a https:// connection to a host and then
|
||||
switched to a http:// one to the same host. libcurl would then wrongly re-use
|
||||
the same connection for it and fail to get the second URL properly
|
||||
|
||||
@@ -1347,19 +1761,19 @@ Daniel (25 Mar)
|
||||
Daniel (24 Mar)
|
||||
- G<>tz Babin-Ebell pointed out that the ca-bundle.crt file contained a
|
||||
certificate from Trustcenter that was a demo certificate only that was never
|
||||
indended to be part of a CA bundle.
|
||||
intended to be part of a CA bundle.
|
||||
|
||||
Daniel (21 Mar)
|
||||
- Life is a mystery. Within a time period of 17 hours, Tim Pope and Michael
|
||||
Churchill filed one bug report each, both identifying problems with a second
|
||||
transfer when doing persistant transfers re-using a connection. Tim's one is
|
||||
transfer when doing persistent transfers re-using a connection. Tim's one is
|
||||
#706624, labeled "Multiple uploads per handle fail" and Michael's #707003
|
||||
"Does not send Authorization: header when reusing connection". I could track
|
||||
both down to the same piece of logic and it turned out libcurl was not using
|
||||
new settings properly when re-using an existing connection. This concerned
|
||||
both uploading and downloading and involved exactly those pieces these two
|
||||
reports identified. This code has been this faulty since the day I
|
||||
introduced persistant connection support in libcurl, more than 2 years ago.
|
||||
introduced persistent connection support in libcurl, more than 2 years ago.
|
||||
|
||||
Daniel (20 Mar 2003)
|
||||
- Five year anniversary. Today five years ago, the first ever curl release saw
|
||||
@@ -1478,7 +1892,7 @@ Daniel (27 Feb)
|
||||
Daniel (26 Feb)
|
||||
- Kyle Sallee reported a case where he would do a transfer that didn't update
|
||||
the progress meter properly. It turned out to be a case where libcurl would
|
||||
loop a little too eagerly in the tranfer loop, which isn't really good for
|
||||
loop a little too eagerly in the transfer loop, which isn't really good for
|
||||
the APIs, especially not the multi API.
|
||||
|
||||
Version 7.10.4-pre2 (24 Feb 2003)
|
||||
|
10
CVS-INFO
10
CVS-INFO
@@ -25,7 +25,8 @@ Compile and build instructions follow below.
|
||||
|
||||
perl/ is a subdirectory with various perl scripts
|
||||
|
||||
To build after having extracted everything from CVS, do this:
|
||||
To build in environments that support configure, after having extracted
|
||||
everything from CVS, do this:
|
||||
|
||||
./buildconf
|
||||
./configure
|
||||
@@ -35,10 +36,15 @@ make
|
||||
|
||||
./configure --disable-shared --enable-debug --enable-maintainer-mode
|
||||
|
||||
In environments that don't support configure (i.e. Microsoft), do this:
|
||||
|
||||
buildconf.bat
|
||||
|
||||
|
||||
REQUIREMENTS
|
||||
|
||||
You need the following software installed:
|
||||
For buildconf (not buildconf.bat) to work, you need the following software
|
||||
installed:
|
||||
|
||||
o autoconf 2.57 (or later)
|
||||
o automake 1.7 (or later)
|
||||
|
@@ -24,8 +24,7 @@
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
EXTRA_DIST = CHANGES COPYING maketgz reconf Makefile.dist \
|
||||
curl-config.in build_vms.com curl-style.el sample.emacs testcurl.sh \
|
||||
RELEASE-NOTES
|
||||
curl-config.in curl-style.el sample.emacs testcurl.sh RELEASE-NOTES
|
||||
|
||||
bin_SCRIPTS = curl-config
|
||||
|
||||
|
@@ -43,27 +43,27 @@ mingw32-ssl:
|
||||
|
||||
vc:
|
||||
cd lib
|
||||
nmake -f Makefile.vc6 cfg=release
|
||||
nmake /f Makefile.vc6 cfg=release
|
||||
cd ..\src
|
||||
nmake -f Makefile.vc6
|
||||
nmake /f Makefile.vc6
|
||||
|
||||
vc-ssl:
|
||||
cd lib
|
||||
nmake -f Makefile.vc6 cfg=release-ssl
|
||||
nmake /f Makefile.vc6 cfg=release-ssl
|
||||
cd ..\src
|
||||
nmake -f Makefile.vc6 cfg=release-ssl
|
||||
nmake /f Makefile.vc6 cfg=release-ssl
|
||||
|
||||
vc-ssl-dll:
|
||||
cd lib
|
||||
nmake -f Makefile.vc6 cfg=release-ssl-dll
|
||||
nmake /f Makefile.vc6 cfg=release-ssl-dll
|
||||
cd ..\src
|
||||
nmake -f Makefile.vc6
|
||||
nmake /f Makefile.vc6
|
||||
|
||||
vc-libcurl-ssl-dll:
|
||||
cd lib
|
||||
nmake -f Makefile.vc6 cfg=release-libcurl-ssl-dll
|
||||
nmake /f Makefile.vc6 cfg=release-libcurl-ssl-dll
|
||||
cd ..\src
|
||||
nmake -f Makefile.vc6
|
||||
nmake /f Makefile.vc6
|
||||
|
||||
djgpp:
|
||||
make -C lib -f Makefile.dj
|
||||
@@ -81,7 +81,9 @@ amiga:
|
||||
cd ./lib && make -f makefile.amiga
|
||||
cd ./src && make -f makefile.amiga
|
||||
|
||||
|
||||
netware:
|
||||
cd lib && make -f Makefile.netware
|
||||
cd src && make -f Makefile.netware
|
||||
|
||||
unix: all
|
||||
|
||||
|
4
README
4
README
@@ -32,17 +32,18 @@ WEB SITE
|
||||
|
||||
Sweden -- http://curl.haxx.se/
|
||||
Australia -- http://curl.planetmirror.com/
|
||||
Estonia -- http://curl.dope-brothers.com/
|
||||
Germany -- http://curl.mirror.at.stealer.net/
|
||||
Russia -- http://curl.tsuren.net/
|
||||
Thailand -- http://curl.siamu.ac.th/
|
||||
US (CA) -- http://curl.mirror.redwire.net/
|
||||
US (TX) -- http://curl.cyberservers.net/
|
||||
|
||||
DOWNLOAD
|
||||
|
||||
The official download mirror sites are:
|
||||
|
||||
Australia -- http://curl.planetmirror.com/download/
|
||||
Estonia -- http://curl.dope-brothers.com/download/
|
||||
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
|
||||
Hongkong -- http://www.execve.net/curl/
|
||||
Russia -- http://curl.tsuren.net/download/
|
||||
@@ -50,7 +51,6 @@ DOWNLOAD
|
||||
Sweden -- http://cool.haxx.se/curl/
|
||||
Thailand -- http://curl.siamu.ac.th/download/
|
||||
US (CA) -- http://curl.mirror.redwire.net/download/
|
||||
US (TX) -- http://curl.cyberservers.net/download/
|
||||
|
||||
CVS
|
||||
|
||||
|
146
RELEASE-NOTES
146
RELEASE-NOTES
@@ -1,89 +1,89 @@
|
||||
Curl and libcurl 7.11.0. A minor-features-added release.
|
||||
Curl and libcurl 7.11.1. A bugfix release.
|
||||
|
||||
The 78th public curl release. Release number 105 counted from the very
|
||||
beginning.
|
||||
Public curl release number: 79
|
||||
Releases counted from the very beginning: 106
|
||||
Available command line options: 94
|
||||
Available curl_easy_setopt() options: 112
|
||||
|
||||
This release includes the following changes:
|
||||
|
||||
o allows the URL to be set by a callback when using the multi interface
|
||||
o large file support was added. Use one of the new options: INFILESIZE_LARGE,
|
||||
RESUME_FROM_LARGE and MAXFILESIZE_LARGE
|
||||
o the new --ftp-pasv overrides a previous --ftpport
|
||||
o CURLOPT_FTPSSL and ftps:// now do ssl over FTP "The Right Way" (the curl
|
||||
tool now features the --ftp-ssl option)
|
||||
o The Windows DLLs are built with an added "resource file"
|
||||
o New LIBCURL_VERSION_* defines for easier checking version number
|
||||
o Included Mac OS X 'framework' makefile in the release archive
|
||||
o Removed the TRUE and FALSE #defines from the public curl header file
|
||||
o Added CURLOPT_NETRC_FILE
|
||||
o CURLOPT_POSTFIELDSIZE_LARGE added to offer POSTs larger than 2GB
|
||||
o CURL_VERSION_LARGEFILE is a feature bit returned by libcurls that feature
|
||||
large file support
|
||||
o libcurl only requires winsock 1.1 on windows now
|
||||
o when doing FTP, curl now sends QUIT before disconnecting
|
||||
o name resolves can now timeout on windows too
|
||||
o $HOME is now recognized better when looking for .netrc files
|
||||
o now re-uses the ares handle when re-using curl handles
|
||||
o SO_BINDTODEVICE is used for network interface binding
|
||||
o configure --disable-manual disables the built-in huge manual from the
|
||||
command line tool
|
||||
o the default Accept: header used in HTTP requests changed
|
||||
o asynch dns lookups now require the c-ares library
|
||||
o curl --socks can be used to set a SOCKS5 proxy to use
|
||||
o response-headers received after a (proxy) CONNECT request are now passed
|
||||
to the header callback just like other headers
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o improved config file parsing for options with required parameters
|
||||
o using --trace with a bad file name could crash
|
||||
o release archive contains compressed help text
|
||||
o the win32 password prompting supports backspace
|
||||
o builds natively on AmigaOS (without unix emulation)
|
||||
o ftps:// now uses port 990 by default
|
||||
o the "configure --with-spnego" action was improved
|
||||
o fixed a rare follow-redirect problem
|
||||
o curl-config --feature now outputs AsynchDNS if enabled
|
||||
o occational re-use of freed-memory problem fixed
|
||||
o curl-config --libs now include the ares link directory
|
||||
o configure --enable-ares now accepts a given path
|
||||
o -lz no longer appear twice on the link line
|
||||
o more descriptive error message if the FTP response reader fails
|
||||
o curl-config --feature now shows 'AsynchDNS' when built with ares
|
||||
o VMS build up-to-date and clarified source code
|
||||
o resolve bug caused socks5 to fail
|
||||
o Content-Length: is ignored when getting chunked Transfer-Encoding
|
||||
o POST over proxy to https server failed
|
||||
o improved how libcurl deals with persistant connections over FTP when a
|
||||
transfer fails
|
||||
o accessing a proxy that requires Basic auth without password caused a hang
|
||||
o a free free-twice problem in the server certificate code
|
||||
o minor memory leak when using ranges on persistant connections
|
||||
o formpost parts sending files with .html extensions now use "Content-Type:
|
||||
text/html"
|
||||
o formpost parts now default to "Content-Type: application/octet-stream"
|
||||
o --progress-bar was slightly improved
|
||||
o Failing to connect to localhost, using the multi interface on Solaris
|
||||
showed a connect problem now fixed.
|
||||
o The generated ca-bundle.h file is now generated in the build dir, not the
|
||||
source dir
|
||||
o The FTP-EPSV response parser for the 229 code was fixed
|
||||
o curl finds the user's home dir slightly different and hopefully better on
|
||||
Windows
|
||||
o testcurl.sh can now be used to autotest daily tarballs
|
||||
o a couple of command line options now check that the underlying library
|
||||
actually supports the features before trying to enable them
|
||||
o uninitialized variable fix
|
||||
o better html versions of the man pages
|
||||
o builds and runs on Novell NetWare
|
||||
o Windows builds now report OS as "i386-pc-win32"
|
||||
o received signals during SSL connect is handled better
|
||||
o improved PUT/POST with NTLM/Digest authentication
|
||||
o following redirects and doing NTLM/Digest (where the first connection gets
|
||||
closed) with the multi interface work better now
|
||||
o file: progress meter and getinfo variables work now
|
||||
o CURLOPT_FRESH_CONNECT and CURLAUTH_NTLM now work when set together
|
||||
o share interface usage without (un)lock functions segfaulted
|
||||
o --limit-rate no longer cripples the --speed-limit feature
|
||||
o fixed verbose output problem with ipv6-enabled re-used connections
|
||||
o fixed the socks5 code to check version in the socks response properly
|
||||
o dns cache bug - fixed the 'inuse' counter
|
||||
o large file fix for Content-Length
|
||||
o better docs for the share interface
|
||||
o several configure fixes for mingw/msys
|
||||
o setting a Host: header is no longer affecting the Host: header used when
|
||||
libcurl follows a Location:
|
||||
o fixed numerous compiler warnings on several operating systems and compilers
|
||||
o PUTing from stdin couldn't disable chunked transfer-encoding
|
||||
o corrected the mingw makefiles
|
||||
o improved the configure libz detection
|
||||
o fixed EPRT/PORT use when doing FTP on ipv6-enabled AIX hosts
|
||||
o *nroff commands that only support -mandoc and not -man are now supported
|
||||
(for the built-in manual text in the command line tool)
|
||||
o fixed the unconditional #include of config.h in hugehelp.c
|
||||
o builds fine on MPE/iX
|
||||
o upload using chunked transfer-encoding now sends the last chunk properly
|
||||
teriminated with an extra CRLF
|
||||
o Fixed the progress meter display for files >2GB
|
||||
o persistant connections over a proxy messed up the proxy name/password
|
||||
o the socks5 code segfaulted if no username/password was set
|
||||
o the *_LARGE options now take curl_off_t types as parameters and this will
|
||||
make it possible to handle large files on windows too
|
||||
o builds with large file support even on systems without strtoll()
|
||||
|
||||
Other curl-related news since the previous public release:
|
||||
|
||||
o pycURL 7.10.8 was released: http://pycurl.sf.net/
|
||||
o TclCurl 0.10.8 was released:
|
||||
o Many platforms are being used to autobuild and autotest curl on a daily
|
||||
basis. Please join in and test curl on your systems:
|
||||
http://curl.haxx.se/auto/
|
||||
o the curl mailing lists moved, (re-)subscribe to the new ones from here:
|
||||
http://curl.haxx.se/mail/
|
||||
o c-ares 1.1.0 was relased: http://daniel.haxx.se/projects/c-ares/
|
||||
o TclCurl 0.11.0 was released:
|
||||
http://personal1.iddeo.es/andresgarci/tclcurl/english/
|
||||
o the Ferite curl binding was released: http://www.ferite.org/
|
||||
o stopped the curl.sourceforge.net mirror, it now redirects to curl.haxx.se
|
||||
o fresh new curl web mirrors:
|
||||
US Texas - http://curl.cyberservers.net
|
||||
US California - http://curl.mirrors.redwire.net
|
||||
Germany - http://curl.mirror.at.stealer.net
|
||||
Thailand - http://curl.siamu.ac.th
|
||||
o Dan Fandrich stepped forward and helps maintaining the download web page
|
||||
o PycURL 7.11.0 was released: http://pycurl.sourceforge.net/
|
||||
o the libcurl D binding was released:
|
||||
http://www.atari-soldiers.com/libcurl.html
|
||||
o new Estonian web site mirror: http://curl.dope-brothers.com/
|
||||
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
Kevin Roth, Troels Walsted Hansen, Matt Veenstra, Marty Kuhrt, Benjamin
|
||||
Gerard, Gisle Vanem, Ralph Mitchell, S<>bastien Willemijns, Kang-Jin Lee,
|
||||
Peter Sylvester, Siddhartha Prakash Jain, Mathias Axelsson, Maciej
|
||||
W. Rozycki, Nicolas Croiset, Josh Kapell, Gaz Iqbal, Dave May, Markus
|
||||
Moeller, James Clancy, Giuseppe Attardi, swalkaus at yahoo.com, Steve Green,
|
||||
Marty Kuhrt, Dominick Meglio, Diego Casorran, David Byron, John McGowan,
|
||||
David J Meyer, Dan Fandrich, Pierre, Brian R Duffy, Luke Call, Vincent
|
||||
Bronner
|
||||
|
||||
Gisle Vanem, Vincent Bronner, Richard Bramante, Dirk Manske, Dan Fandrich,
|
||||
Ken Hirsch, Stadler Stephan, Domenico Andreoli, Patrick Smith, Tor Arntsen,
|
||||
Andr<EFBFBD>s Garc<72>a, Tim Baker, Len Krause, Gilad, Ken Rastatter, P R Schaffner,
|
||||
Greg Hewgill, Ben Greear, Jeff Lawson, Grigory Entin, Doug Porter, David
|
||||
Byron, Andy Serpa, Joe Halpin, Christopher R. Palmer, G<>nter Knauf
|
||||
|
||||
Thanks! (and sorry if I forgot to mention someone)
|
||||
|
81
TODO-RELEASE
81
TODO-RELEASE
@@ -1,54 +1,53 @@
|
||||
Issues not sorted in any particular order. #[num] refers to bug report
|
||||
numbers. UNASSIGNED means that no person has publicly stated to work on the
|
||||
issue.
|
||||
Issues not sorted in any particular order.
|
||||
#[num] refers to bug report numbers.
|
||||
UNASSIGNED means that no person has publicly stated to work on the issue.
|
||||
DELETE means the issue is subject for dismissal
|
||||
|
||||
Fix before releasing 7.11.0
|
||||
===========================
|
||||
|
||||
|
||||
To get fixed in 7.11.1
|
||||
To get fixed in 7.11.1 (planned release in March 2004)
|
||||
======================
|
||||
|
||||
1. Introduce a new error code indicating authentication problems (for proxy
|
||||
CONNECT error 407 for example). #845941 UNASSIGNED
|
||||
To get fixed in 7.11.2 (planned release May/June 2004)
|
||||
======================
|
||||
|
||||
2. Make the proxy CONNECT headers get passed to the callbacks just like other
|
||||
headers are. #845941 UNASSIGNED
|
||||
6. REST fix for servers not behaving well on >2GB requests. This should fail
|
||||
if the server doesn't set the pointer to the requested index. The tricky
|
||||
part is to figure out if the server did the right thing or not.
|
||||
UNASSIGNED
|
||||
|
||||
4. Multi-threaded OpenSSL usage needs to be addressed (Dirk Manske has stepped
|
||||
forward on this)
|
||||
|
||||
6. REST fix for servers not behaving well on >2GB requests (some outstanding
|
||||
issues, Dave Meyer works on this)
|
||||
|
||||
8. Resolve the occational test case 91 failure. This still has no
|
||||
resolution. Test case 96 has been added to CVS to try variations of this
|
||||
test. (David Byron has done lots of research) UNASSIGNED
|
||||
|
||||
9. Modify ares to do 'files bind' order instead of 'bind files' by default
|
||||
(not actually part of libcurl) See details by Frank Ticheler posted here:
|
||||
http://curl.haxx.se/mail/archive-2003-11/0020.html UNASSIGNED
|
||||
|
||||
10. Anton Fedorov's "dumpcert" patch (only mailed to me privately) UNASSIGNED
|
||||
|
||||
12. The "PUT and (NTLM/Digest) auth" bug (confusion, awaits feedback) #862835
|
||||
10. Anton Fedorov's "dumpcert" patch UNASSIGNED
|
||||
http://curl.haxx.se/mail/lib-2004-03/0088.html
|
||||
|
||||
14. Evaluate/apply Gertjan van Wingerde's SSL patches, UNASSIGNED
|
||||
http://curl.haxx.se/mail/lib-2004-03/0087.html
|
||||
|
||||
16. Tony Blakie's bug report about getting a 302 and Location: back from a
|
||||
proxy after a CONNECT request. (correct behavior on this is not certain)
|
||||
UNASSIGNED, lack of feedback on this. Subject for dismissal.
|
||||
|
||||
18. Modified Accept: header in the default HTTP request (being discussed).
|
||||
23. Peter Sylvester's "Most Significant Common Name" change. Feedback welcome.
|
||||
At least the UTF8 conversion and comparison should be done. Patch?
|
||||
UNASSIGNED
|
||||
|
||||
19. Resolve Giuseppe Attardi's "elusive cache bug" (work required)
|
||||
24. Make the progress meter use one digit more for the hour time fields.
|
||||
Accomplish this by removing one of the times displayed.
|
||||
|
||||
20. Directory listing support for file:///dir/ (patch by David Hull)
|
||||
http://sourceforge.net/tracker/index.php?func=detail&aid=844036&group_id=976&atid=300976
|
||||
This patch needs work to become portable. UNASSIGNED
|
||||
27. Put the version defines in their own header file, so that lib/libcurl.rc
|
||||
can include only that to reduce problems with MSVC.
|
||||
|
||||
21. Send QUIT before closing an FTP connection. Joe Halpin has provided an
|
||||
initial patch. Some outstanding issues.
|
||||
28. Optimize the way libcurl uses CWD on each new request over a persistent
|
||||
connection (on FTP) even if it doesn't have to.
|
||||
|
||||
23. Peter Sylvester's "Most Significant Common Name" patch. Feedback welcome.
|
||||
29. Define USE_NTRESPONSES in the NTLM code to work properly with >14 letter
|
||||
passwords against IIS servers. Requires test cases to be updated
|
||||
accordingly. #915609
|
||||
|
||||
30. Digest re-negotiation is not supported, we wrongly assume a new 401
|
||||
response to signify an authenticaion error. We need to detect the
|
||||
difference between a 401 due to a bad Digest authorization header and a
|
||||
401 because the server wants to re-negotiate.
|
||||
|
||||
Mitz Wark provided details and traces here:
|
||||
http://curl.haxx.se/mail/lib-2004-03/0299.html
|
||||
|
||||
To get fixed in 7.12.0
|
||||
======================
|
||||
|
||||
25. curl_easy_strerror() curl_multi_strerror() curl_share_strerror()
|
||||
|
||||
26. i18n of error messages
|
||||
|
115
acinclude.m4
115
acinclude.m4
@@ -475,3 +475,118 @@ if test "$ac_cv_func_gethostbyname_r" = "yes"; then
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
dnl We create a function for detecting which compiler we use and then set as
|
||||
dnl pendantic compiler options as possible for that particular compiler. The
|
||||
dnl options are only used for debug-builds.
|
||||
|
||||
AC_DEFUN([CURL_CC_DEBUG_OPTS],
|
||||
[
|
||||
if test "$GCC" = "yes"; then
|
||||
|
||||
dnl figure out gcc version!
|
||||
AC_MSG_CHECKING([gcc version])
|
||||
gccver=`$CC -dumpversion`
|
||||
num1=`echo $gccver | cut -d . -f1`
|
||||
num2=`echo $gccver | cut -d . -f2`
|
||||
gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
|
||||
AC_MSG_RESULT($gccver)
|
||||
|
||||
AC_MSG_CHECKING([if this is icc in disguise])
|
||||
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
|
||||
dnl action if the text is found, this it has not been replaced by the
|
||||
dnl cpp
|
||||
ICC="no"
|
||||
AC_MSG_RESULT([no]),
|
||||
dnl the text was not found, it was replaced by the cpp
|
||||
ICC="yes"
|
||||
AC_MSG_RESULT([yes])
|
||||
)
|
||||
|
||||
if test "$ICC" = "yes"; then
|
||||
dnl this is icc, not gcc.
|
||||
|
||||
dnl ICC warnings we ignore:
|
||||
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:
|
||||
dnl "invalid format string conversion"
|
||||
dnl * 279 warns on static conditions in while expressions
|
||||
dnl * 981 warns on "operands are evaluated in unspecified order"
|
||||
dnl * 1419 warns on "external declaration in primary source file"
|
||||
dnl which we know and do on purpose.
|
||||
|
||||
WARN="-wd279,269,1419,981"
|
||||
|
||||
if test "$gccnum" -gt "600"; then
|
||||
dnl icc 6.0 and older doesn't have the -Wall flag
|
||||
WARN="-Wall $WARN"
|
||||
fi
|
||||
else dnl $ICC = yes
|
||||
dnl this is a set of options we believe *ALL* gcc versions support:
|
||||
WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"
|
||||
|
||||
dnl -Wcast-align is a bit too annoying on all gcc versions ;-)
|
||||
|
||||
if test "$gccnum" -gt "295"; then
|
||||
dnl only if the compiler is newer than 2.95 since we got lots of
|
||||
dnl "`_POSIX_C_SOURCE' is not defined" in system headers with
|
||||
dnl gcc 2.95.4 on FreeBSD 4.9!
|
||||
WARN="$WARN -Wundef"
|
||||
fi
|
||||
|
||||
if test "$gccnum" -ge "296"; then
|
||||
dnl gcc 2.96 or later
|
||||
WARN="$WARN -Wfloat-equal"
|
||||
fi
|
||||
|
||||
if test "$gccnum" -gt "296"; then
|
||||
dnl this option does not exist in 2.96
|
||||
WARN="$WARN -Wno-format-nonliteral"
|
||||
fi
|
||||
|
||||
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
|
||||
dnl on i686-Linux as it gives us heaps with false positives
|
||||
if test "$gccnum" -ge "303"; then
|
||||
dnl gcc 3.3 and later
|
||||
WARN="$WARN -Wendif-labels -Wstrict-prototypes"
|
||||
fi
|
||||
|
||||
for flag in $CPPFLAGS; do
|
||||
case "$flag" in
|
||||
-I*)
|
||||
dnl Include path, provide a -isystem option for the same dir
|
||||
dnl to prevent warnings in those dirs. The -isystem was not very
|
||||
dnl reliable on earlier gcc versions.
|
||||
add=`echo $flag | sed 's/^-I/-isystem /g'`
|
||||
WARN="$WARN $add"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
fi dnl $ICC = no
|
||||
|
||||
CFLAGS="$CFLAGS $WARN"
|
||||
|
||||
AC_MSG_NOTICE([Added this set of compiler options: $WARN])
|
||||
|
||||
else dnl $GCC = yes
|
||||
|
||||
AC_MSG_NOTICE([Added no extra compiler options])
|
||||
|
||||
fi dnl $GCC = yes
|
||||
|
||||
dnl strip off optimizer flags
|
||||
NEWFLAGS=""
|
||||
for flag in $CFLAGS; do
|
||||
case "$flag" in
|
||||
-O*)
|
||||
dnl echo "cut off $flag"
|
||||
;;
|
||||
*)
|
||||
NEWFLAGS="$NEWFLAGS $flag"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
CFLAGS=$NEWFLAGS
|
||||
|
||||
]) dnl end of AC_DEFUN()
|
||||
|
||||
|
@@ -5,3 +5,4 @@ adig
|
||||
ahost
|
||||
config.log
|
||||
config.status
|
||||
aclocal.m4
|
||||
|
62
ares/CHANGES
62
ares/CHANGES
@@ -1,17 +1,65 @@
|
||||
This package is built on ares 1.1.1 (written by Greg Hudson). I've decided to
|
||||
put together and release my own ares archives since the ares maintainer
|
||||
doesn't want these improvements.
|
||||
* March 9, 2004
|
||||
- Gisle Vanem improved build on Windows.
|
||||
|
||||
The package is called 'c-ares' for now since I (Daniel Stenberg) want this for
|
||||
use within the curl project (hence the letter C) and it makes a nice pun.
|
||||
* February 25, 2004
|
||||
- Dan Fandrich found a flaw in the Feb 22 fix.
|
||||
|
||||
* January 4, 2004:
|
||||
- Added better configure --enable-debug logic (taken from the curl configure
|
||||
script). Added acinclude.m4 to the tarball.
|
||||
|
||||
* February 23, 2004
|
||||
- Removed ares_free_errmem(), the function, the file and the man page. It was
|
||||
not used and it did nothing.
|
||||
|
||||
- Fixed a lot of code that wasn't "64bit clean" and thus caused a lot of
|
||||
compiler warnings on picky compilers.
|
||||
|
||||
* February 22, 2004
|
||||
- Dominick Meglio made ares init support multiple name servers in the
|
||||
NameServer key on Windows.
|
||||
|
||||
* February 16, 2004
|
||||
- Modified ares_private.h to include libcurl's memory debug header if
|
||||
CURLDEBUG is set. This makes all the ares-functions supervised properly by
|
||||
the curl test suite. This also forced me to add inclusion of the
|
||||
ares_private.h header in a few more files that are using some kind of
|
||||
memory-related resources.
|
||||
|
||||
- Made the makefile only build ahost and adig if 'make demos' is used.
|
||||
|
||||
* February 10, 2004
|
||||
- Dirk Manske made ares_version.h installed with 'make install'
|
||||
|
||||
* February 4, 2004
|
||||
- ares_free_errmem() is subject for removal, it is simply present for future
|
||||
purposes, and since we removed the extra parameter in strerror() it won't
|
||||
be used by c-ares!
|
||||
- configure --enable-debug now enables picky compiler options if gcc is used
|
||||
- fixed several compiler warnings --enable-debug showed and Joerg Mueller-Tolk
|
||||
reported
|
||||
|
||||
Version 1.0.0 (February 3, 2004)
|
||||
|
||||
* February 3, 2004
|
||||
- now we produce the libcares.a library instead of the previous libares.a
|
||||
since we are no longer compatible
|
||||
|
||||
* February 2, 2004
|
||||
|
||||
- ares_strerror() has one argument less. This is the first official
|
||||
modification of the existing provided ares API.
|
||||
|
||||
* January 29, 2004
|
||||
|
||||
- Dirk Manske fixed how the socket is set non-blocking.
|
||||
|
||||
* January 4, 2004
|
||||
|
||||
- Dominick Meglio made the private gettimeofday() become ares_gettimeofday()
|
||||
instead in order to not pollute the name space and risk colliding with
|
||||
other libraries' versions of this function.
|
||||
|
||||
* October 24, 2003. Daniel Stenberg:
|
||||
* October 24, 2003. Daniel Stenberg
|
||||
|
||||
Added ares_version().
|
||||
|
||||
|
@@ -3,15 +3,17 @@
|
||||
*.3
|
||||
NEWS
|
||||
README
|
||||
README.cares
|
||||
CHANGES
|
||||
FILES
|
||||
maketgz
|
||||
aclocal.m4
|
||||
acinclude.m4
|
||||
Makefile.in
|
||||
install-sh
|
||||
mkinstalldirs
|
||||
configure
|
||||
configure.in
|
||||
configure.ac
|
||||
config.guess
|
||||
config.sub
|
||||
vc/adig/adig.dep
|
||||
|
@@ -12,6 +12,7 @@ libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
mandir=@mandir@
|
||||
|
||||
LIB=libcares.a
|
||||
CC=@CC@
|
||||
CPPFLAGS=@CPPFLAGS@
|
||||
CFLAGS=@CFLAGS@ ${WARN_CFLAGS} ${ERROR_CFLAGS}
|
||||
@@ -20,23 +21,28 @@ LDFLAGS=@LDFLAGS@
|
||||
LIBS=@LIBS@
|
||||
ALL_CFLAGS=${CPPFLAGS} ${CFLAGS} ${DEFS}
|
||||
OBJS= ares__close_sockets.o ares__get_hostent.o ares__read_line.o \
|
||||
ares_destroy.o ares_expand_name.o ares_fds.o ares_free_errmem.o \
|
||||
ares_destroy.o ares_expand_name.o ares_fds.o \
|
||||
ares_free_hostent.o ares_free_string.o ares_gethostbyaddr.o \
|
||||
ares_gethostbyname.o ares_init.o ares_mkquery.o ares_parse_a_reply.o \
|
||||
ares_parse_ptr_reply.o ares_process.o ares_query.o ares_search.o \
|
||||
ares_send.o ares_strerror.o ares_timeout.o ares_version.o
|
||||
|
||||
all: libares.a adig ahost
|
||||
|
||||
libares.a: ${OBJS}
|
||||
$(LIB): ${OBJS}
|
||||
ar cru $@ ${OBJS}
|
||||
${RANLIB} $@
|
||||
|
||||
adig: adig.o libares.a
|
||||
${CC} ${LDFLAGS} -o $@ adig.o libares.a ${LIBS}
|
||||
all: $(LIB) demos
|
||||
|
||||
ahost: ahost.o libares.a
|
||||
${CC} ${LDFLAGS} -o $@ ahost.o libares.a ${LIBS}
|
||||
demos: adig ahost
|
||||
|
||||
tags:
|
||||
etags *.[ch]
|
||||
|
||||
adig: adig.o $(LIB)
|
||||
${CC} ${LDFLAGS} -o $@ adig.o $(LIB) ${LIBS}
|
||||
|
||||
ahost: ahost.o $(LIB)
|
||||
${CC} ${LDFLAGS} -o $@ ahost.o $(LIB) ${LIBS}
|
||||
|
||||
${OBJS}: ares.h ares_dns.h ares_private.h
|
||||
|
||||
@@ -49,14 +55,14 @@ install:
|
||||
${top_srcdir}/mkinstalldirs ${DESTDIR}${libdir}
|
||||
${top_srcdir}/mkinstalldirs ${DESTDIR}${includedir}
|
||||
${top_srcdir}/mkinstalldirs ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 644 libares.a ${DESTDIR}${libdir}
|
||||
${RANLIB} ${DESTDIR}${libdir}/libares.a
|
||||
chmod u-w ${DESTDIR}${libdir}/libares.a
|
||||
${INSTALL} -m 644 $(LIB) ${DESTDIR}${libdir}
|
||||
${RANLIB} ${DESTDIR}${libdir}/$(LIB)
|
||||
chmod u-w ${DESTDIR}${libdir}/$(LIB)
|
||||
${INSTALL} -m 444 ${srcdir}/ares.h ${DESTDIR}${includedir}
|
||||
${INSTALL} -m 444 ${srcdir}/ares_version.h ${DESTDIR}${includedir}
|
||||
${INSTALL} -m 444 ${srcdir}/ares_destroy.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_expand_name.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_fds.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_free_errmem.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_free_hostent.3 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_free_string.3 \
|
||||
@@ -81,7 +87,7 @@ install:
|
||||
${INSTALL} -m 444 ${srcdir}/ares_timeout.3 ${DESTDIR}${mandir}/man3
|
||||
|
||||
clean:
|
||||
rm -f ${OBJS} libares.a adig.o adig ahost.o ahost
|
||||
rm -f ${OBJS} $(LIB) adig.o adig ahost.o ahost
|
||||
|
||||
distclean: clean
|
||||
rm -f config.cache config.log config.status Makefile
|
||||
|
@@ -1,3 +1,8 @@
|
||||
This is c-ares, a forked version of the original ares. The original ares
|
||||
README follows below, the c-ares specific details are in README.cares
|
||||
|
||||
====================================================================
|
||||
|
||||
This is ares, an asynchronous resolver library. It is intended for
|
||||
applications which need to perform DNS queries without blocking, or
|
||||
need to perform multiple DNS queries in parallel. The primary
|
||||
|
23
ares/README.cares
Normal file
23
ares/README.cares
Normal file
@@ -0,0 +1,23 @@
|
||||
|
||||
This package is based on ares 1.1.1 (written by Greg Hudson). I've decided to
|
||||
put together and release my own ares archives since the ares maintainer
|
||||
doesn't want these improvements.
|
||||
|
||||
The package is thus dubbed 'c-ares' since I (Daniel Stenberg) want this for
|
||||
use within the curl project (hence the letter C) and it makes a nice
|
||||
pun. Also, c-ares will not remain API compatible with the original ares, so
|
||||
picking a new name makes it more obvious to the public.
|
||||
|
||||
The full source code is available in the 'c-ares' release archives, and in the
|
||||
'ares' subdir of the curl CVS source repostitory.
|
||||
|
||||
If you find bugs, correct flaws, have questions or have comments in general in
|
||||
regard to c-ares (or by all means the original ares too), get in touch with us
|
||||
on the curl-library mailing list.
|
||||
|
||||
c-ares is of course distributed under the same MIT-style license as the
|
||||
original ares.
|
||||
|
||||
You'll find all c-ares details and news here:
|
||||
|
||||
http://daniel.haxx.se/projects/c-ares
|
101
ares/acinclude.m4
Normal file
101
ares/acinclude.m4
Normal file
@@ -0,0 +1,101 @@
|
||||
|
||||
dnl We create a function for detecting which compiler we use and then set as
|
||||
dnl pendantic compiler options as possible for that particular compiler. The
|
||||
dnl options are only used for debug-builds.
|
||||
|
||||
dnl This is a copy of the original found in curl's configure script. Don't
|
||||
dnl modify this one, edit the one in curl and copy it back here when that one
|
||||
dnl is changed.
|
||||
|
||||
AC_DEFUN([CURL_CC_DEBUG_OPTS],
|
||||
[
|
||||
if test "$GCC" = "yes"; then
|
||||
|
||||
dnl figure out gcc version!
|
||||
AC_MSG_CHECKING([gcc version])
|
||||
gccver=`$CC -dumpversion`
|
||||
num1=`echo $gccver | cut -d . -f1`
|
||||
num2=`echo $gccver | cut -d . -f2`
|
||||
gccnum=`(expr $num1 "*" 100 + $num2) 2>/dev/null`
|
||||
AC_MSG_RESULT($gccver)
|
||||
|
||||
AC_MSG_CHECKING([if this is icc in disguise])
|
||||
AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER],
|
||||
dnl action if the text is found, this it has not been replaced by the
|
||||
dnl cpp
|
||||
ICC="no"
|
||||
AC_MSG_RESULT([no]),
|
||||
dnl the text was not found, it was replaced by the cpp
|
||||
ICC="yes"
|
||||
AC_MSG_RESULT([yes])
|
||||
)
|
||||
|
||||
if test "$ICC" = "yes"; then
|
||||
dnl this is icc, not gcc.
|
||||
|
||||
dnl ICC warnings we ignore:
|
||||
dnl * 279 warns on static conditions in while expressions
|
||||
dnl * 269 warns on our "%Od" printf formatters for curl_off_t output:
|
||||
dnl "invalid format string conversion"
|
||||
|
||||
WARN="-wd279,269"
|
||||
|
||||
if test "$gccnum" -gt "600"; then
|
||||
dnl icc 6.0 and older doesn't have the -Wall flag
|
||||
WARN="-Wall $WARN"
|
||||
fi
|
||||
else dnl $ICC = yes
|
||||
dnl
|
||||
WARN="-W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs -Winline -Wmissing-declarations -Wmissing-prototypes -Wsign-compare"
|
||||
|
||||
dnl -Wcast-align is a bit too annoying ;-)
|
||||
|
||||
if test "$gccnum" -ge "296"; then
|
||||
dnl gcc 2.96 or later
|
||||
WARN="$WARN -Wfloat-equal"
|
||||
|
||||
if test "$gccnum" -gt "296"; then
|
||||
dnl this option does not exist in 2.96
|
||||
WARN="$WARN -Wno-format-nonliteral"
|
||||
fi
|
||||
|
||||
dnl -Wunreachable-code seems totally unreliable on my gcc 3.3.2 on
|
||||
dnl on i686-Linux as it gives us heaps with false positives
|
||||
if test "$gccnum" -ge "303"; then
|
||||
dnl gcc 3.3 and later
|
||||
WARN="$WARN -Wendif-labels -Wstrict-prototypes"
|
||||
fi
|
||||
fi
|
||||
|
||||
for flag in $CPPFLAGS; do
|
||||
case "$flag" in
|
||||
-I*)
|
||||
dnl include path
|
||||
add=`echo $flag | sed 's/^-I/-isystem /g'`
|
||||
WARN="$WARN $add"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
fi dnl $ICC = no
|
||||
|
||||
CFLAGS="$CFLAGS $WARN"
|
||||
|
||||
fi dnl $GCC = yes
|
||||
|
||||
dnl strip off optimizer flags
|
||||
NEWFLAGS=""
|
||||
for flag in $CFLAGS; do
|
||||
case "$flag" in
|
||||
-O*)
|
||||
dnl echo "cut off $flag"
|
||||
;;
|
||||
*)
|
||||
NEWFLAGS="$NEWFLAGS $flag"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
CFLAGS=$NEWFLAGS
|
||||
|
||||
]) dnl end of AC_DEFUN()
|
||||
|
358
ares/aclocal.m4
vendored
358
ares/aclocal.m4
vendored
@@ -1,358 +0,0 @@
|
||||
dnl $Id$
|
||||
|
||||
dnl Copyright 1996 by the Massachusetts Institute of Technology.
|
||||
dnl
|
||||
dnl Permission to use, copy, modify, and distribute this
|
||||
dnl software and its documentation for any purpose and without
|
||||
dnl fee is hereby granted, provided that the above copyright
|
||||
dnl notice appear in all copies and that both that copyright
|
||||
dnl notice and this permission notice appear in supporting
|
||||
dnl documentation, and that the name of M.I.T. not be used in
|
||||
dnl advertising or publicity pertaining to distribution of the
|
||||
dnl software without specific, written prior permission.
|
||||
dnl M.I.T. makes no representations about the suitability of
|
||||
dnl this software for any purpose. It is provided "as is"
|
||||
dnl without express or implied warranty.
|
||||
|
||||
dnl This file provides local macros for packages which use specific
|
||||
dnl external libraries. The public macros are:
|
||||
dnl
|
||||
dnl ATHENA_UTIL_COM_ERR
|
||||
dnl Generates error if com_err not found.
|
||||
dnl ATHENA_UTIL_SS
|
||||
dnl Generates error if ss not found.
|
||||
dnl ATHENA_REGEXP
|
||||
dnl Sets REGEX_LIBS if rx library used; ensures POSIX
|
||||
dnl regexp support.
|
||||
dnl ATHENA_MOTIF
|
||||
dnl Sets MOTIF_LIBS and defines HAVE_MOTIF if Motif used.
|
||||
dnl ATHENA_MOTIF_REQUIRED
|
||||
dnl Generates error if Motif not found.
|
||||
dnl ATHENA_AFS
|
||||
dnl Sets AFS_LIBS and defines HAVE_AFS if AFS used. Pass
|
||||
dnl in an argument giving the desired AFS libraries;
|
||||
dnl AFS_LIBS will be set to that value if AFS is found.
|
||||
dnl AFS_DIR will be set to the prefix given.
|
||||
dnl ATHENA_AFS_REQUIRED
|
||||
dnl Generates error if AFS libraries not found. AFS_DIR
|
||||
dnl will be set to the prefix given.
|
||||
dnl ATHENA_KRB4
|
||||
dnl Sets KRB4_LIBS and defines HAVE_KRB4 if krb4 used.
|
||||
dnl ATHENA_KRB4_REQUIRED
|
||||
dnl Generates error if krb4 not found. Sets KRB4_LIBS
|
||||
dnl otherwise. (Special behavior because krb4 libraries
|
||||
dnl may be different if using krb4 compatibility libraries
|
||||
dnl from krb5.)
|
||||
dnl ATHENA_KRB5
|
||||
dnl Sets KRB5_LIBS and defines HAVE_KRB5 if krb5 used.
|
||||
dnl ATHENA_KRB5_REQUIRED
|
||||
dnl Generates error if krb5 not found.
|
||||
dnl ATHENA_HESIOD
|
||||
dnl Sets HESIOD_LIBS and defines HAVE_HESIOD if Hesiod
|
||||
dnl used.
|
||||
dnl ATHENA_HESIOD_REQUIRED
|
||||
dnl Generates error if Hesiod not found.
|
||||
dnl ATHENA_ARES
|
||||
dnl Sets ARES_LIBS and defines HAVE_ARES if libares
|
||||
dnl used.
|
||||
dnl ATHENA_ARES_REQUIRED
|
||||
dnl Generates error if libares not found.
|
||||
dnl ATHENA_ZEPHYR
|
||||
dnl Sets ZEPHYR_LIBS and defines HAVE_ZEPHYR if zephyr
|
||||
dnl used.
|
||||
dnl ATHENA_ZEPHYR_REQUIRED
|
||||
dnl Generates error if zephyr not found.
|
||||
dnl
|
||||
dnl All of the macros may extend CPPFLAGS and LDFLAGS to let the
|
||||
dnl compiler find the requested libraries. Put ATHENA_UTIL_COM_ERR
|
||||
dnl and ATHENA_UTIL_SS before ATHENA_AFS or ATHENA_AFS_REQUIRED; there
|
||||
dnl is a com_err library in the AFS libraries which requires -lutil.
|
||||
|
||||
dnl ----- com_err -----
|
||||
|
||||
AC_DEFUN(ATHENA_UTIL_COM_ERR,
|
||||
[AC_ARG_WITH(com_err,
|
||||
[ --with-com_err=PREFIX Specify location of com_err],
|
||||
[com_err="$withval"], [com_err=yes])
|
||||
if test "$com_err" != no; then
|
||||
if test "$com_err" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$com_err/include"
|
||||
LDFLAGS="$LDFLAGS -L$com_err/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(com_err, com_err, :,
|
||||
[AC_MSG_ERROR(com_err library not found)])
|
||||
else
|
||||
AC_MSG_ERROR(This package requires com_err.)
|
||||
fi])
|
||||
|
||||
dnl ----- ss -----
|
||||
|
||||
AC_DEFUN(ATHENA_UTIL_SS,
|
||||
[AC_ARG_WITH(ss,
|
||||
[ --with-ss=PREFIX Specify location of ss (requires com_err)],
|
||||
[ss="$withval"], [ss=yes])
|
||||
if test "$ss" != no; then
|
||||
if test "$ss" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$ss/include"
|
||||
LDFLAGS="$LDFLAGS -L$ss/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(ss, ss_perror, :,
|
||||
[AC_MSG_ERROR(ss library not found)], -lcom_err)
|
||||
else
|
||||
AC_MSG_ERROR(This package requires ss.)
|
||||
fi])
|
||||
|
||||
dnl ----- Regular expressions -----
|
||||
|
||||
AC_DEFUN(ATHENA_REGEXP,
|
||||
[AC_ARG_WITH(regex,
|
||||
[ --with-regex=PREFIX Use installed regex library],
|
||||
[regex="$withval"], [regex=no])
|
||||
if test "$regex" != no; then
|
||||
if test "$regex" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$regex/include"
|
||||
LDFLAGS="$LDFLAGS -L$regex/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(regex, regcomp, REGEX_LIBS=-lregex,
|
||||
[AC_MSG_ERROR(regex library not found)])
|
||||
else
|
||||
AC_CHECK_FUNC(regcomp, :,
|
||||
[AC_MSG_ERROR(can't find POSIX regexp support)])
|
||||
fi
|
||||
AC_SUBST(REGEX_LIBS)])
|
||||
|
||||
dnl ----- Motif -----
|
||||
|
||||
AC_DEFUN(ATHENA_MOTIF_CHECK,
|
||||
[if test "$motif" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$motif/include"
|
||||
LDFLAGS="$LDFLAGS -L$motif/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(Xm, XmStringFree, :, [AC_MSG_ERROR(Motif library not found)])])
|
||||
|
||||
AC_DEFUN(ATHENA_MOTIF,
|
||||
[AC_ARG_WITH(motif,
|
||||
[ --with-motif=PREFIX Use Motif],
|
||||
[motif="$withval"], [motif=no])
|
||||
if test "$motif" != no; then
|
||||
ATHENA_MOTIF_CHECK
|
||||
MOTIF_LIBS=-lXm
|
||||
AC_DEFINE(HAVE_MOTIF)
|
||||
fi
|
||||
AC_SUBST(MOTIF_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_MOTIF_REQUIRED,
|
||||
[AC_ARG_WITH(motif,
|
||||
[ --with-motif=PREFIX Specify location of Motif],
|
||||
[motif="$withval"], [motif=yes])
|
||||
if test "$motif" != no; then
|
||||
ATHENA_MOTIF_CHECK
|
||||
else
|
||||
AC_MSG_ERROR(This package requires Motif.)
|
||||
fi])
|
||||
|
||||
dnl ----- AFS -----
|
||||
|
||||
AC_DEFUN(ATHENA_AFS_CHECK,
|
||||
[AC_CHECK_FUNC(insque, :, AC_CHECK_LIB(compat, insque))
|
||||
AC_CHECK_FUNC(gethostbyname, :, AC_CHECK_LIB(nsl, gethostbyname))
|
||||
AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
|
||||
if test "$afs" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$afs/include"
|
||||
LDFLAGS="$LDFLAGS -L$afs/lib -L$afs/lib/afs"
|
||||
fi
|
||||
AC_CHECK_LIB(sys, pioctl, :, [AC_MSG_ERROR(AFS libraries not found)],
|
||||
-lrx -llwp -lsys)
|
||||
AFS_DIR=$afs
|
||||
AC_SUBST(AFS_DIR)])
|
||||
|
||||
dnl Specify desired AFS libraries as a parameter.
|
||||
AC_DEFUN(ATHENA_AFS,
|
||||
[AC_ARG_WITH(afs,
|
||||
[ --with-afs=PREFIX Use AFS libraries],
|
||||
[afs="$withval"], [afs=no])
|
||||
if test "$afs" != no; then
|
||||
ATHENA_AFS_CHECK
|
||||
AFS_LIBS=$1
|
||||
AC_DEFINE(HAVE_AFS)
|
||||
fi
|
||||
AC_SUBST(AFS_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_AFS_REQUIRED,
|
||||
[AC_ARG_WITH(afs,
|
||||
[ --with-afs=PREFIX Specify location of AFS libraries],
|
||||
[afs="$withval"], [afs=/usr/afsws])
|
||||
if test "$afs" != no; then
|
||||
ATHENA_AFS_CHECK
|
||||
else
|
||||
AC_MSG_ERROR(This package requires AFS libraries.)
|
||||
fi])
|
||||
|
||||
dnl ----- Kerberos 4 -----
|
||||
|
||||
AC_DEFUN(ATHENA_KRB4_CHECK,
|
||||
[AC_CHECK_FUNC(gethostbyname, :, AC_CHECK_LIB(nsl, gethostbyname))
|
||||
AC_CHECK_FUNC(socket, :, AC_CHECK_LIB(socket, socket))
|
||||
AC_CHECK_LIB(gen, compile)
|
||||
if test "$krb4" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$krb4/include"
|
||||
if test -d "$krb4/include/kerberosIV"; then
|
||||
CPPFLAGS="$CPPFLAGS -I$krb4/include/kerberosIV"
|
||||
fi
|
||||
LDFLAGS="$LDFLAGS -L$krb4/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(krb4, krb_rd_req,
|
||||
[KRB4_LIBS="-lkrb4 -ldes425 -lkrb5 -lk5crypto -lcom_err"],
|
||||
[AC_CHECK_LIB(krb, krb_rd_req,
|
||||
[KRB4_LIBS="-lkrb -ldes"],
|
||||
[AC_MSG_ERROR(Kerberos 4 libraries not found)],
|
||||
-ldes)],
|
||||
-ldes425 -lkrb5 -lk5crypto -lcom_err)])
|
||||
|
||||
AC_DEFUN(ATHENA_KRB4,
|
||||
[AC_ARG_WITH(krb4,
|
||||
[ --with-krb4=PREFIX Use Kerberos 4],
|
||||
[krb4="$withval"], [krb4=no])
|
||||
if test "$krb4" != no; then
|
||||
ATHENA_KRB4_CHECK
|
||||
AC_DEFINE(HAVE_KRB4)
|
||||
fi
|
||||
AC_SUBST(KRB4_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_KRB4_REQUIRED,
|
||||
[AC_ARG_WITH(krb4,
|
||||
[ --with-krb4=PREFIX Specify location of Kerberos 4],
|
||||
[krb4="$withval"], [krb4=yes])
|
||||
if test "$krb4" != no; then
|
||||
ATHENA_KRB4_CHECK
|
||||
AC_SUBST(KRB4_LIBS)
|
||||
else
|
||||
AC_MSG_ERROR(This package requires Kerberos 4.)
|
||||
fi])
|
||||
|
||||
dnl ----- Kerberos 5 -----
|
||||
|
||||
AC_DEFUN(ATHENA_KRB5_CHECK,
|
||||
[AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
AC_CHECK_LIB(gen, compile)
|
||||
if test "$krb5" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$krb5/include"
|
||||
LDFLAGS="$LDFLAGS -L$krb5/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(krb5, krb5_init_context, :,
|
||||
[AC_MSG_ERROR(Kerberos 5 libraries not found)],
|
||||
-lk5crypto -lcom_err)])
|
||||
|
||||
AC_DEFUN(ATHENA_KRB5,
|
||||
[AC_ARG_WITH(krb5,
|
||||
[ --with-krb5=PREFIX Use Kerberos 5],
|
||||
[krb5="$withval"], [krb5=no])
|
||||
if test "$krb5" != no; then
|
||||
ATHENA_KRB5_CHECK
|
||||
KRB5_LIBS="-lkrb5 -lk5crypto -lcom_err"
|
||||
AC_DEFINE(HAVE_KRB5)
|
||||
fi
|
||||
AC_SUBST(KRB5_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_KRB5_REQUIRED,
|
||||
[AC_ARG_WITH(krb5,
|
||||
[ --with-krb5=PREFIX Specify location of Kerberos 5],
|
||||
[krb5="$withval"], [krb5=yes])
|
||||
if test "$krb5" != no; then
|
||||
ATHENA_KRB5_CHECK
|
||||
else
|
||||
AC_MSG_ERROR(This package requires Kerberos 5.)
|
||||
fi])
|
||||
|
||||
dnl ----- Hesiod -----
|
||||
|
||||
AC_DEFUN(ATHENA_HESIOD_CHECK,
|
||||
[AC_CHECK_FUNC(res_send, :, AC_CHECK_LIB(resolv, res_send))
|
||||
if test "$hesiod" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$hesiod/include"
|
||||
LDFLAGS="$LDFLAGS -L$hesiod/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(hesiod, hes_resolve, :,
|
||||
[AC_MSG_ERROR(Hesiod library not found)])])
|
||||
|
||||
AC_DEFUN(ATHENA_HESIOD,
|
||||
[AC_ARG_WITH(hesiod,
|
||||
[ --with-hesiod=PREFIX Use Hesiod],
|
||||
[hesiod="$withval"], [hesiod=no])
|
||||
if test "$hesiod" != no; then
|
||||
ATHENA_HESIOD_CHECK
|
||||
HESIOD_LIBS="-lhesiod"
|
||||
AC_DEFINE(HAVE_HESIOD)
|
||||
fi
|
||||
AC_SUBST(HESIOD_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_HESIOD_REQUIRED,
|
||||
[AC_ARG_WITH(hesiod,
|
||||
[ --with-hesiod=PREFIX Specify location of Hesiod],
|
||||
[hesiod="$withval"], [hesiod=yes])
|
||||
if test "$hesiod" != no; then
|
||||
ATHENA_HESIOD_CHECK
|
||||
else
|
||||
AC_MSG_ERROR(This package requires Hesiod.)
|
||||
fi])
|
||||
|
||||
dnl ----- libares -----
|
||||
|
||||
AC_DEFUN(ATHENA_ARES_CHECK,
|
||||
[AC_CHECK_FUNC(res_send, :, AC_CHECK_LIB(resolv, res_send))
|
||||
if test "$ares" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$ares/include"
|
||||
LDFLAGS="$LDFLAGS -L$ares/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(ares, ares_init, :, [AC_MSG_ERROR(libares not found)])])
|
||||
|
||||
AC_DEFUN(ATHENA_ARES,
|
||||
[AC_ARG_WITH(ares,
|
||||
[ --with-ares=PREFIX Use libares],
|
||||
[ares="$withval"], [ares=no])
|
||||
if test "$ares" != no; then
|
||||
ATHENA_ARES_CHECK
|
||||
ARES_LIBS="-lares"
|
||||
AC_DEFINE(HAVE_ARES)
|
||||
fi
|
||||
AC_SUBST(ARES_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_ARES_REQUIRED,
|
||||
[AC_ARG_WITH(ares,
|
||||
[ --with-ares=PREFIX Specify location of libares],
|
||||
[ares="$withval"], [ares=yes])
|
||||
if test "$ares" != no; then
|
||||
ATHENA_ARES_CHECK
|
||||
else
|
||||
AC_MSG_ERROR(This package requires libares.)
|
||||
fi])
|
||||
dnl ----- zephyr -----
|
||||
|
||||
AC_DEFUN(ATHENA_ZEPHYR_CHECK,
|
||||
[if test "$zephyr" != yes; then
|
||||
CPPFLAGS="$CPPFLAGS -I$zephyr/include"
|
||||
LDFLAGS="$LDFLAGS -L$zephyr/lib"
|
||||
fi
|
||||
AC_CHECK_LIB(zephyr, ZFreeNotice, :, [AC_MSG_ERROR(zephyr not found)])])
|
||||
|
||||
AC_DEFUN(ATHENA_ZEPHYR,
|
||||
[AC_ARG_WITH(zephyr,
|
||||
[ --with-zephyr=PREFIX Use zephyr],
|
||||
[zephyr="$withval"], [zephyr=no])
|
||||
if test "$zephyr" != no; then
|
||||
ATHENA_ZEPHYR_CHECK
|
||||
ZEPHYR_LIBS="-lzephyr"
|
||||
AC_DEFINE(HAVE_ZEPHYR)
|
||||
fi
|
||||
AC_SUBST(ZEPHYR_LIBS)])
|
||||
|
||||
AC_DEFUN(ATHENA_ZEPHYR_REQUIRED,
|
||||
[AC_ARG_WITH(zephyr,
|
||||
[ --with-zephyr=PREFIX Specify location of zephyr],
|
||||
[zephyr="$withval"], [zephyr=yes])
|
||||
if test "$zephyr" != no; then
|
||||
ATHENA_ZEPHYR_CHECK
|
||||
else
|
||||
AC_MSG_ERROR(This package requires zephyr.)
|
||||
fi])
|
21
ares/adig.c
21
ares/adig.c
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -142,7 +140,6 @@ int main(int argc, char **argv)
|
||||
struct hostent *hostent;
|
||||
fd_set read_fds, write_fds;
|
||||
struct timeval *tvp, tv;
|
||||
char *errmem;
|
||||
|
||||
#ifdef WIN32
|
||||
WORD wVersionRequested = MAKEWORD(1,1);
|
||||
@@ -241,8 +238,7 @@ int main(int argc, char **argv)
|
||||
if (status != ARES_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "ares_init_options: %s\n",
|
||||
ares_strerror(status, &errmem));
|
||||
ares_free_errmem(errmem);
|
||||
ares_strerror(status));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -283,9 +279,9 @@ int main(int argc, char **argv)
|
||||
|
||||
static void callback(void *arg, int status, unsigned char *abuf, int alen)
|
||||
{
|
||||
char *name = (char *) arg, *errmem;
|
||||
int id, qr, opcode, aa, tc, rd, ra, rcode, i;
|
||||
unsigned int qdcount, ancount, nscount, arcount;
|
||||
char *name = (char *) arg;
|
||||
int id, qr, opcode, aa, tc, rd, ra, rcode;
|
||||
unsigned int qdcount, ancount, nscount, arcount, i;
|
||||
const unsigned char *aptr;
|
||||
|
||||
/* Display the query name if given. */
|
||||
@@ -297,8 +293,7 @@ static void callback(void *arg, int status, unsigned char *abuf, int alen)
|
||||
*/
|
||||
if (status != ARES_SUCCESS)
|
||||
{
|
||||
printf("%s\n", ares_strerror(status, &errmem));
|
||||
ares_free_errmem(errmem);
|
||||
printf("%s\n", ares_strerror(status));
|
||||
if (!abuf)
|
||||
return;
|
||||
}
|
||||
@@ -375,7 +370,8 @@ static const unsigned char *display_question(const unsigned char *aptr,
|
||||
int alen)
|
||||
{
|
||||
char *name;
|
||||
int type, dnsclass, status, len;
|
||||
int type, dnsclass, status;
|
||||
long len;
|
||||
|
||||
/* Parse the question name. */
|
||||
status = ares_expand_name(aptr, abuf, alen, &name, &len);
|
||||
@@ -413,7 +409,8 @@ static const unsigned char *display_rr(const unsigned char *aptr,
|
||||
{
|
||||
const unsigned char *p;
|
||||
char *name;
|
||||
int type, dnsclass, ttl, dlen, status, len;
|
||||
int type, dnsclass, ttl, dlen, status;
|
||||
long len;
|
||||
struct in_addr addr;
|
||||
|
||||
/* Parse the RR name. */
|
||||
|
13
ares/ahost.c
13
ares/ahost.c
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -46,7 +44,6 @@ int main(int argc, char **argv)
|
||||
int status, nfds;
|
||||
fd_set read_fds, write_fds;
|
||||
struct timeval *tvp, tv;
|
||||
char *errmem;
|
||||
struct in_addr addr;
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -55,14 +52,13 @@ int main(int argc, char **argv)
|
||||
WSAStartup(wVersionRequested, &wsaData);
|
||||
#endif
|
||||
|
||||
if (argc == 0)
|
||||
if (argc <= 1)
|
||||
usage();
|
||||
|
||||
status = ares_init(&channel);
|
||||
if (status != ARES_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "ares_init: %s\n", ares_strerror(status, &errmem));
|
||||
ares_free_errmem(errmem);
|
||||
fprintf(stderr, "ares_init: %s\n", ares_strerror(status));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -99,12 +95,11 @@ int main(int argc, char **argv)
|
||||
static void callback(void *arg, int status, struct hostent *host)
|
||||
{
|
||||
struct in_addr addr;
|
||||
char *mem, **p;
|
||||
char **p;
|
||||
|
||||
if (status != ARES_SUCCESS)
|
||||
{
|
||||
fprintf(stderr, "%s: %s\n", (char *) arg, ares_strerror(status, &mem));
|
||||
ares_free_errmem(mem);
|
||||
fprintf(stderr, "%s: %s\n", (char *) arg, ares_strerror(status));
|
||||
return;
|
||||
}
|
||||
|
||||
|
13
ares/ares.h
13
ares/ares.h
@@ -20,6 +20,13 @@
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef _AIX
|
||||
/* HP-UX systems version 9, 10 and 11 lack sys/select.h and so does oldish
|
||||
libc5-based Linux systems. Only include it on system that are known to
|
||||
require it! */
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
#include <winsock.h>
|
||||
#include <windows.h>
|
||||
@@ -117,14 +124,14 @@ void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds);
|
||||
int ares_mkquery(const char *name, int dnsclass, int type, unsigned short id,
|
||||
int rd, unsigned char **buf, int *buflen);
|
||||
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int alen, char **s, int *enclen);
|
||||
int alen, char **s, long *enclen);
|
||||
int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
struct hostent **host);
|
||||
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
|
||||
int addrlen, int family, struct hostent **host);
|
||||
void ares_free_string(char *str);
|
||||
void ares_free_string(void *str);
|
||||
void ares_free_hostent(struct hostent *host);
|
||||
const char *ares_strerror(int code, char **memptr);
|
||||
const char *ares_strerror(int code);
|
||||
void ares_free_errmem(char *mem);
|
||||
|
||||
#endif /* ARES__H */
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdlib.h>
|
||||
#ifdef WIN32
|
||||
#else
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -32,7 +30,8 @@ static const char rcsid[] = "$Id$";
|
||||
int ares__read_line(FILE *fp, char **buf, int *bufsize)
|
||||
{
|
||||
char *newbuf;
|
||||
int offset = 0, len;
|
||||
size_t offset = 0;
|
||||
size_t len;
|
||||
|
||||
if (*buf == NULL)
|
||||
{
|
||||
@@ -44,7 +43,7 @@ int ares__read_line(FILE *fp, char **buf, int *bufsize)
|
||||
|
||||
while (1)
|
||||
{
|
||||
if (!fgets(*buf + offset, *bufsize - offset, fp))
|
||||
if (!fgets(*buf + offset, *bufsize - (int)offset, fp))
|
||||
return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;
|
||||
len = offset + strlen(*buf + offset);
|
||||
if ((*buf)[len - 1] == '\n')
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h"
|
||||
@@ -30,7 +28,8 @@ void ares_destroy(ares_channel channel)
|
||||
for (i = 0; i < channel->ndomains; i++)
|
||||
free(channel->domains[i]);
|
||||
free(channel->domains);
|
||||
free(channel->sortlist);
|
||||
if(channel->sortlist)
|
||||
free(channel->sortlist);
|
||||
free(channel->lookups);
|
||||
while (channel->queries)
|
||||
{
|
||||
|
@@ -22,8 +22,7 @@ ares_expand_name \- Expand a DNS-encoded domain name
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B int ares_expand_name(const unsigned char *\fIencoded\fP,
|
||||
.B
|
||||
const unsigned char *\fIabuf\fP, int \fIalen\fP, char **\fIs\fP,
|
||||
.B const unsigned char *\fIabuf\fP, int \fIalen\fP, char **\fIs\fP,
|
||||
.B int *\fIenclen\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -26,6 +24,7 @@ static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h" /* for the memdebug */
|
||||
|
||||
static int name_length(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int alen);
|
||||
@@ -55,7 +54,7 @@ static int name_length(const unsigned char *encoded, const unsigned char *abuf,
|
||||
*/
|
||||
|
||||
int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int alen, char **s, int *enclen)
|
||||
int alen, char **s, long *enclen)
|
||||
{
|
||||
int len, indir = 0;
|
||||
char *q;
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -1,26 +0,0 @@
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include "ares.h"
|
||||
|
||||
/* Do nothing, for now. A future implementation may want to deal with
|
||||
* internationalization, in which case ares_strerror() might allocate
|
||||
* memory which we would then have to free.
|
||||
*/
|
||||
void ares_free_errmem(char *mem)
|
||||
{
|
||||
}
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -24,6 +22,7 @@ static const char rcsid[] = "$Id$";
|
||||
#endif
|
||||
|
||||
#include "ares.h"
|
||||
#include "ares_private.h" /* for memdebug */
|
||||
|
||||
void ares_free_hostent(struct hostent *host)
|
||||
{
|
||||
|
@@ -14,14 +14,14 @@
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_FREE_STRING 3 "4 January 2000"
|
||||
.TH ARES_FREE_STRING 3 "4 February 2004"
|
||||
.SH NAME
|
||||
ares_free_string \- Free strings allocated by ares functions
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B void ares_free_string(char *\fIstr\fP)
|
||||
.B void ares_free_string(void *\fIstr\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
|
@@ -13,12 +13,10 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
|
||||
void ares_free_string(char *str)
|
||||
void ares_free_string(void *str)
|
||||
{
|
||||
free(str);
|
||||
}
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -89,10 +87,10 @@ static void next_lookup(struct addr_query *aquery)
|
||||
{
|
||||
case 'b':
|
||||
addr = ntohl(aquery->addr.s_addr);
|
||||
a1 = addr >> 24;
|
||||
a2 = (addr >> 16) & 0xff;
|
||||
a3 = (addr >> 8) & 0xff;
|
||||
a4 = addr & 0xff;
|
||||
a1 = (int)(addr >> 24) & 0xff;
|
||||
a2 = (int)(addr >> 16) & 0xff;
|
||||
a3 = (int)(addr >> 8) & 0xff;
|
||||
a4 = (int)addr & 0xff;
|
||||
sprintf(name, "%d.%d.%d.%d.in-addr.arpa", a4, a3, a2, a1);
|
||||
aquery->remaining_lookups = p + 1;
|
||||
ares_query(aquery->channel, name, C_IN, T_PTR, addr_callback,
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
306
ares/ares_init.c
306
ares/ares_init.c
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -46,12 +44,12 @@ static int init_by_defaults(ares_channel channel);
|
||||
static int config_domain(ares_channel channel, char *str);
|
||||
static int config_lookup(ares_channel channel, const char *str);
|
||||
static int config_nameserver(struct server_state **servers, int *nservers,
|
||||
const char *str);
|
||||
char *str);
|
||||
static int config_sortlist(struct apattern **sortlist, int *nsort,
|
||||
const char *str);
|
||||
static int set_search(ares_channel channel, const char *str);
|
||||
static int set_options(ares_channel channel, const char *str);
|
||||
static char *try_config(char *s, char *opt);
|
||||
static char *try_config(char *s, const char *opt);
|
||||
static const char *try_option(const char *p, const char *q, const char *opt);
|
||||
static int ip_addr(const char *s, int len, struct in_addr *addr);
|
||||
static void natural_mask(struct apattern *pat);
|
||||
@@ -138,7 +136,8 @@ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
|
||||
* field, so there's not much to be done about that.
|
||||
*/
|
||||
gettimeofday(&tv, NULL);
|
||||
channel->next_id = (tv.tv_sec ^ tv.tv_usec ^ getpid()) & 0xffff;
|
||||
channel->next_id = (unsigned short)
|
||||
(tv.tv_sec ^ tv.tv_usec ^ getpid()) & 0xffff;
|
||||
|
||||
channel->queries = NULL;
|
||||
|
||||
@@ -232,7 +231,7 @@ static int init_by_environment(ares_channel channel)
|
||||
#ifdef WIN32
|
||||
static int get_res_size_nt(HKEY hKey, char *subkey, int *size)
|
||||
{
|
||||
return RegQueryValueEx(hKey, subkey, 0, NULL, NULL, size);
|
||||
return RegQueryValueEx(hKey, subkey, 0, NULL, NULL, size);
|
||||
}
|
||||
|
||||
/* Warning: returns a dynamically allocated buffer, the user MUST
|
||||
@@ -240,55 +239,56 @@ static int get_res_size_nt(HKEY hKey, char *subkey, int *size)
|
||||
*/
|
||||
static int get_res_nt(HKEY hKey, char *subkey, char **obuf)
|
||||
{
|
||||
/* Test for the size we need */
|
||||
int size = 0;
|
||||
int result;
|
||||
result = RegQueryValueEx(hKey, subkey, 0, NULL, NULL, &size);
|
||||
if ((result != ERROR_SUCCESS && result != ERROR_MORE_DATA) || !size)
|
||||
return 0;
|
||||
*obuf = malloc(size+1);
|
||||
/* Test for the size we need */
|
||||
int size = 0;
|
||||
int result;
|
||||
result = RegQueryValueEx(hKey, subkey, 0, NULL, NULL, &size);
|
||||
if ((result != ERROR_SUCCESS && result != ERROR_MORE_DATA) || !size)
|
||||
return 0;
|
||||
*obuf = malloc(size+1);
|
||||
|
||||
if (RegQueryValueEx(hKey, subkey, 0, NULL, *obuf, &size) != ERROR_SUCCESS)
|
||||
{
|
||||
free(*obuf);
|
||||
return 0;
|
||||
}
|
||||
if (size == 1)
|
||||
{
|
||||
free(*obuf);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
if (RegQueryValueEx(hKey, subkey, 0, NULL, *obuf, &size) != ERROR_SUCCESS)
|
||||
{
|
||||
free(*obuf);
|
||||
return 0;
|
||||
}
|
||||
if (size == 1)
|
||||
{
|
||||
free(*obuf);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int get_res_interfaces_nt(HKEY hKey, char *subkey, char **obuf)
|
||||
{
|
||||
char enumbuf[39]; /* GUIDs are 38 chars + 1 for NULL */
|
||||
int enum_size = 39;
|
||||
int idx = 0;
|
||||
HKEY hVal;
|
||||
while (RegEnumKeyEx(hKey, idx++, enumbuf, &enum_size, 0, NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS)
|
||||
{
|
||||
enum_size = 39;
|
||||
if (RegOpenKeyEx(hKey, enumbuf, 0, KEY_QUERY_VALUE, &hVal) != ERROR_SUCCESS)
|
||||
continue;
|
||||
if (!get_res_nt(hVal, subkey, obuf))
|
||||
RegCloseKey(hVal);
|
||||
else
|
||||
{
|
||||
RegCloseKey(hVal);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
char enumbuf[39]; /* GUIDs are 38 chars + 1 for NULL */
|
||||
int enum_size = 39;
|
||||
int idx = 0;
|
||||
HKEY hVal;
|
||||
while (RegEnumKeyEx(hKey, idx++, enumbuf, &enum_size, 0,
|
||||
NULL, NULL, NULL) != ERROR_NO_MORE_ITEMS)
|
||||
{
|
||||
enum_size = 39;
|
||||
if (RegOpenKeyEx(hKey, enumbuf, 0, KEY_QUERY_VALUE, &hVal) !=
|
||||
ERROR_SUCCESS)
|
||||
continue;
|
||||
if (!get_res_nt(hVal, subkey, obuf))
|
||||
RegCloseKey(hVal);
|
||||
else
|
||||
{
|
||||
RegCloseKey(hVal);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int init_by_resolv_conf(ares_channel channel)
|
||||
{
|
||||
FILE *fp;
|
||||
char *line = NULL, *p;
|
||||
int linesize, status, nservers = 0, nsort = 0;
|
||||
char *line = NULL;
|
||||
int status, nservers = 0, nsort = 0;
|
||||
struct server_state *servers = NULL;
|
||||
struct apattern *sortlist = NULL;
|
||||
|
||||
@@ -317,8 +317,6 @@ DhcpNameServer
|
||||
DWORD data_type;
|
||||
DWORD bytes;
|
||||
DWORD result;
|
||||
DWORD index;
|
||||
char name[MAX_PATH];
|
||||
DWORD keysize = MAX_PATH;
|
||||
|
||||
status = ARES_EFILE;
|
||||
@@ -326,70 +324,75 @@ DhcpNameServer
|
||||
if (IsNT)
|
||||
{
|
||||
if (RegOpenKeyEx(
|
||||
HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
|
||||
KEY_READ, &mykey
|
||||
) == ERROR_SUCCESS)
|
||||
{
|
||||
RegOpenKeyEx(mykey, "Interfaces", 0, KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS, &subkey);
|
||||
if (get_res_nt(mykey, NAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
else if (get_res_nt(mykey, DHCPNAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
/* Try the interfaces */
|
||||
else if (get_res_interfaces_nt(subkey, NAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
else if (get_res_interfaces_nt(subkey, DHCPNAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
RegCloseKey(subkey);
|
||||
RegCloseKey(mykey);
|
||||
}
|
||||
} else {
|
||||
if (RegOpenKeyEx(
|
||||
HKEY_LOCAL_MACHINE, WIN_NS_9X, 0,
|
||||
KEY_READ, &mykey
|
||||
HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
|
||||
KEY_READ, &mykey
|
||||
) == ERROR_SUCCESS)
|
||||
{
|
||||
RegOpenKeyEx(mykey, "Interfaces", 0,
|
||||
KEY_QUERY_VALUE|KEY_ENUMERATE_SUB_KEYS, &subkey);
|
||||
if (get_res_nt(mykey, NAMESERVER, &line))
|
||||
{
|
||||
if ((result = RegQueryValueEx(
|
||||
mykey, NAMESERVER, NULL, &data_type,
|
||||
NULL, &bytes
|
||||
)
|
||||
) == ERROR_SUCCESS ||
|
||||
result == ERROR_MORE_DATA)
|
||||
{
|
||||
if (bytes) {
|
||||
line = (char *)malloc(bytes+1);
|
||||
if (RegQueryValueEx(
|
||||
mykey, NAMESERVER, NULL, &data_type,
|
||||
(unsigned char *)line, &bytes
|
||||
) == ERROR_SUCCESS) {
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
}
|
||||
free(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
else if (get_res_nt(mykey, DHCPNAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
/* Try the interfaces */
|
||||
else if (get_res_interfaces_nt(subkey, NAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
else if (get_res_interfaces_nt(subkey, DHCPNAMESERVER, &line))
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
free(line);
|
||||
}
|
||||
RegCloseKey(subkey);
|
||||
RegCloseKey(mykey);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (RegOpenKeyEx(
|
||||
HKEY_LOCAL_MACHINE, WIN_NS_9X, 0,
|
||||
KEY_READ, &mykey
|
||||
) == ERROR_SUCCESS)
|
||||
{
|
||||
if ((result = RegQueryValueEx(
|
||||
mykey, NAMESERVER, NULL, &data_type,
|
||||
NULL, &bytes
|
||||
)
|
||||
) == ERROR_SUCCESS ||
|
||||
result == ERROR_MORE_DATA)
|
||||
{
|
||||
if (bytes)
|
||||
{
|
||||
line = (char *)malloc(bytes+1);
|
||||
if (RegQueryValueEx(mykey, NAMESERVER, NULL, &data_type,
|
||||
(unsigned char *)line, &bytes) ==
|
||||
ERROR_SUCCESS)
|
||||
{
|
||||
status = config_nameserver(&servers, &nservers, line);
|
||||
}
|
||||
free(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
RegCloseKey(mykey);
|
||||
}
|
||||
|
||||
if (status != ARES_EFILE) {
|
||||
/*
|
||||
if (status != ARES_EFILE)
|
||||
{
|
||||
/*
|
||||
if (!channel->lookups) {
|
||||
status = config_lookup(channel, "file bind");
|
||||
status = config_lookup(channel, "file bind");
|
||||
}
|
||||
*/
|
||||
status = ARES_EOF;
|
||||
*/
|
||||
status = ARES_EOF;
|
||||
}
|
||||
|
||||
#elif defined(riscos)
|
||||
@@ -418,36 +421,41 @@ DhcpNameServer
|
||||
|
||||
if (status == ARES_SUCCESS)
|
||||
status = ARES_EOF;
|
||||
|
||||
|
||||
free(resolvers);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
fp = fopen(PATH_RESOLV_CONF, "r");
|
||||
if (!fp)
|
||||
return (errno == ENOENT) ? ARES_SUCCESS : ARES_EFILE;
|
||||
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
|
||||
{
|
||||
char *p;
|
||||
FILE *fp;
|
||||
int linesize;
|
||||
|
||||
fp = fopen(PATH_RESOLV_CONF, "r");
|
||||
if (!fp)
|
||||
return (errno == ENOENT) ? ARES_SUCCESS : ARES_EFILE;
|
||||
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
|
||||
{
|
||||
if ((p = try_config(line, "domain")) && channel->ndomains == -1)
|
||||
status = config_domain(channel, p);
|
||||
status = config_domain(channel, p);
|
||||
else if ((p = try_config(line, "lookup")) && !channel->lookups)
|
||||
status = config_lookup(channel, p);
|
||||
status = config_lookup(channel, p);
|
||||
else if ((p = try_config(line, "search")) && channel->ndomains == -1)
|
||||
status = set_search(channel, p);
|
||||
status = set_search(channel, p);
|
||||
else if ((p = try_config(line, "nameserver")) && channel->nservers == -1)
|
||||
status = config_nameserver(&servers, &nservers, p);
|
||||
status = config_nameserver(&servers, &nservers, p);
|
||||
else if ((p = try_config(line, "sortlist")) && channel->nsort == -1)
|
||||
status = config_sortlist(&sortlist, &nsort, p);
|
||||
status = config_sortlist(&sortlist, &nsort, p);
|
||||
else if ((p = try_config(line, "options")))
|
||||
status = set_options(channel, p);
|
||||
status = set_options(channel, p);
|
||||
else
|
||||
status = ARES_SUCCESS;
|
||||
status = ARES_SUCCESS;
|
||||
if (status != ARES_SUCCESS)
|
||||
break;
|
||||
break;
|
||||
}
|
||||
free(line);
|
||||
fclose(fp);
|
||||
free(line);
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -581,11 +589,52 @@ static int config_lookup(ares_channel channel, const char *str)
|
||||
}
|
||||
|
||||
static int config_nameserver(struct server_state **servers, int *nservers,
|
||||
const char *str)
|
||||
char *str)
|
||||
{
|
||||
struct in_addr addr;
|
||||
struct server_state *newserv;
|
||||
/* On Windows, there may be more than one nameserver specified in the same
|
||||
* registry key, so we parse it as a space or comma seperated list.
|
||||
*/
|
||||
#ifdef WIN32
|
||||
char *p = str;
|
||||
char *begin = str;
|
||||
int more = 1;
|
||||
while (more)
|
||||
{
|
||||
more = 0;
|
||||
while (*p && !isspace(*p) && *p != ',')
|
||||
p++;
|
||||
|
||||
if (*p)
|
||||
{
|
||||
*p = 0;
|
||||
more = 1;
|
||||
}
|
||||
|
||||
/* Skip multiple spaces or trailing spaces */
|
||||
if (!*begin)
|
||||
{
|
||||
begin = ++p;
|
||||
continue;
|
||||
}
|
||||
|
||||
/* This is the part that actually sets the nameserver */
|
||||
addr.s_addr = inet_addr(begin);
|
||||
if (addr.s_addr == INADDR_NONE)
|
||||
continue;
|
||||
newserv = realloc(*servers, (*nservers + 1) * sizeof(struct server_state));
|
||||
if (!newserv)
|
||||
return ARES_ENOMEM;
|
||||
newserv[*nservers].addr = addr;
|
||||
*servers = newserv;
|
||||
(*nservers)++;
|
||||
|
||||
if (!more)
|
||||
break;
|
||||
begin = ++p;
|
||||
}
|
||||
#else
|
||||
/* Add a nameserver entry, if this is a valid address. */
|
||||
addr.s_addr = inet_addr(str);
|
||||
if (addr.s_addr == INADDR_NONE)
|
||||
@@ -596,6 +645,7 @@ static int config_nameserver(struct server_state **servers, int *nservers,
|
||||
newserv[*nservers].addr = addr;
|
||||
*servers = newserv;
|
||||
(*nservers)++;
|
||||
#endif
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
||||
@@ -611,7 +661,7 @@ static int config_sortlist(struct apattern **sortlist, int *nsort,
|
||||
q = str;
|
||||
while (*q && *q != '/' && *q != ';' && !isspace((unsigned char)*q))
|
||||
q++;
|
||||
if (ip_addr(str, q - str, &pat.addr) == 0)
|
||||
if (ip_addr(str, (int)(q - str), &pat.addr) == 0)
|
||||
{
|
||||
/* We have a pattern address; now determine the mask. */
|
||||
if (*q == '/')
|
||||
@@ -619,7 +669,7 @@ static int config_sortlist(struct apattern **sortlist, int *nsort,
|
||||
str = q + 1;
|
||||
while (*q && *q != ';' && !isspace((unsigned char)*q))
|
||||
q++;
|
||||
if (ip_addr(str, q - str, &pat.mask) != 0)
|
||||
if (ip_addr(str, (int)(q - str), &pat.mask) != 0)
|
||||
natural_mask(&pat);
|
||||
}
|
||||
else
|
||||
@@ -718,9 +768,9 @@ static int set_options(ares_channel channel, const char *str)
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
||||
static char *try_config(char *s, char *opt)
|
||||
static char *try_config(char *s, const char *opt)
|
||||
{
|
||||
int len;
|
||||
size_t len;
|
||||
|
||||
len = strlen(opt);
|
||||
if (strncmp(s, opt, len) != 0 || !isspace((unsigned char)s[len]))
|
||||
@@ -733,10 +783,8 @@ static char *try_config(char *s, char *opt)
|
||||
|
||||
static const char *try_option(const char *p, const char *q, const char *opt)
|
||||
{
|
||||
int len;
|
||||
|
||||
len = strlen(opt);
|
||||
return (q - p > len && strncmp(p, opt, len) == 0) ? p + len : NULL;
|
||||
size_t len = strlen(opt);
|
||||
return ((size_t)(q - p) > len && !strncmp(p, opt, len)) ? &p[len] : NULL;
|
||||
}
|
||||
|
||||
static int ip_addr(const char *s, int len, struct in_addr *addr)
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -37,8 +35,9 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
struct hostent **host)
|
||||
{
|
||||
unsigned int qdcount, ancount;
|
||||
int status, i, len, rr_type, rr_class, rr_len, naddrs;
|
||||
int status, i, rr_type, rr_class, rr_len, naddrs;
|
||||
int naliases;
|
||||
long len;
|
||||
const unsigned char *aptr;
|
||||
char *hostname, *rr_name, *rr_data, **aliases;
|
||||
struct in_addr *addrs;
|
||||
@@ -87,7 +86,7 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
|
||||
naliases = 0;
|
||||
|
||||
/* Examine each answer resource record (RR) in turn. */
|
||||
for (i = 0; i < ancount; i++)
|
||||
for (i = 0; i < (int)ancount; i++)
|
||||
{
|
||||
/* Decode the RR up to the data field. */
|
||||
status = ares_expand_name(aptr, abuf, alen, &rr_name, &len);
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -36,7 +34,8 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
|
||||
int addrlen, int family, struct hostent **host)
|
||||
{
|
||||
unsigned int qdcount, ancount;
|
||||
int status, i, len, rr_type, rr_class, rr_len;
|
||||
int status, i, rr_type, rr_class, rr_len;
|
||||
long len;
|
||||
const unsigned char *aptr;
|
||||
char *ptrname, *hostname, *rr_name, *rr_data;
|
||||
struct hostent *hostent;
|
||||
@@ -68,7 +67,7 @@ int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
|
||||
|
||||
/* Examine each answer resource record (RR) in turn. */
|
||||
hostname = NULL;
|
||||
for (i = 0; i < ancount; i++)
|
||||
for (i = 0; i < (int)ancount; i++)
|
||||
{
|
||||
/* Decode the RR up to the data field. */
|
||||
status = ares_expand_name(aptr, abuf, alen, &rr_name, &len);
|
||||
|
@@ -56,8 +56,8 @@
|
||||
|
||||
struct send_request {
|
||||
/* Remaining data to send */
|
||||
const char *data;
|
||||
int len;
|
||||
const unsigned char *data;
|
||||
size_t len;
|
||||
|
||||
/* Next request in queue */
|
||||
struct send_request *next;
|
||||
@@ -88,11 +88,11 @@ struct query {
|
||||
time_t timeout;
|
||||
|
||||
/* Query buf with length at beginning, for TCP transmission */
|
||||
char *tcpbuf;
|
||||
unsigned char *tcpbuf;
|
||||
int tcplen;
|
||||
|
||||
/* Arguments passed to ares_send() (qbuf points into tcpbuf) */
|
||||
const char *qbuf;
|
||||
const unsigned char *qbuf;
|
||||
int qlen;
|
||||
ares_callback callback;
|
||||
void *arg;
|
||||
@@ -143,3 +143,11 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now);
|
||||
void ares__close_sockets(struct server_state *server);
|
||||
int ares__get_hostent(FILE *fp, struct hostent **host);
|
||||
int ares__read_line(FILE *fp, char **buf, int *bufsize);
|
||||
|
||||
#ifdef CURLDEBUG
|
||||
/* This is low-level hard-hacking memory leak tracking and similar. Using the
|
||||
libcurl lowlevel code from within library is ugly and only works when
|
||||
c-ares is built and linked with a similarly debug-build libcurl, but we do
|
||||
this anyway for convenience. */
|
||||
#include "../lib/memdebug.h"
|
||||
#endif
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -121,7 +119,7 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
|
||||
while (count)
|
||||
{
|
||||
sendreq = server->qhead;
|
||||
if (count >= sendreq->len)
|
||||
if ((size_t)count >= sendreq->len)
|
||||
{
|
||||
count -= sendreq->len;
|
||||
server->qhead = sendreq->next;
|
||||
@@ -152,7 +150,7 @@ static void write_tcp_data(ares_channel channel, fd_set *write_fds, time_t now)
|
||||
}
|
||||
|
||||
/* Advance the send queue by as many bytes as we sent. */
|
||||
if (count == sendreq->len)
|
||||
if ((size_t)count == sendreq->len)
|
||||
{
|
||||
server->qhead = sendreq->next;
|
||||
if (server->qhead == NULL)
|
||||
@@ -451,7 +449,7 @@ void ares__send_query(ares_channel channel, struct query *query, time_t now)
|
||||
static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
{
|
||||
int s, flags;
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in sockin;
|
||||
|
||||
/* Acquire a socket. */
|
||||
s = socket(AF_INET, SOCK_STREAM, 0);
|
||||
@@ -464,12 +462,14 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
flags = 1;
|
||||
ioctlsocket(s, FIONBIO, &flags);
|
||||
#else
|
||||
if (fcntl(s, F_GETFL, &flags) == -1)
|
||||
flags = fcntl(s, F_GETFL, 0);
|
||||
|
||||
if (flags == -1)
|
||||
{
|
||||
close(s);
|
||||
return -1;
|
||||
}
|
||||
flags &= O_NONBLOCK;
|
||||
flags |= O_NONBLOCK;
|
||||
if (fcntl(s, F_SETFL, flags) == -1)
|
||||
{
|
||||
close(s);
|
||||
@@ -478,11 +478,11 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
#endif
|
||||
|
||||
/* Connect to the server. */
|
||||
memset(&sin, 0, sizeof(sin));
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_addr = server->addr;
|
||||
sin.sin_port = channel->tcp_port;
|
||||
if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1
|
||||
memset(&sockin, 0, sizeof(sockin));
|
||||
sockin.sin_family = AF_INET;
|
||||
sockin.sin_addr = server->addr;
|
||||
sockin.sin_port = channel->tcp_port;
|
||||
if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1
|
||||
&& errno != EINPROGRESS)
|
||||
{
|
||||
closesocket(s);
|
||||
@@ -496,7 +496,7 @@ static int open_tcp_socket(ares_channel channel, struct server_state *server)
|
||||
static int open_udp_socket(ares_channel channel, struct server_state *server)
|
||||
{
|
||||
int s;
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in sockin;
|
||||
|
||||
/* Acquire a socket. */
|
||||
s = socket(AF_INET, SOCK_DGRAM, 0);
|
||||
@@ -504,11 +504,11 @@ static int open_udp_socket(ares_channel channel, struct server_state *server)
|
||||
return -1;
|
||||
|
||||
/* Connect to the server. */
|
||||
memset(&sin, 0, sizeof(sin));
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_addr = server->addr;
|
||||
sin.sin_port = channel->udp_port;
|
||||
if (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1)
|
||||
memset(&sockin, 0, sizeof(sockin));
|
||||
sockin.sin_family = AF_INET;
|
||||
sockin.sin_addr = server->addr;
|
||||
sockin.sin_port = channel->udp_port;
|
||||
if (connect(s, (struct sockaddr *) &sockin, sizeof(sockin)) == -1)
|
||||
{
|
||||
closesocket(s);
|
||||
return -1;
|
||||
@@ -525,7 +525,7 @@ static int same_questions(const unsigned char *qbuf, int qlen,
|
||||
const unsigned char *p;
|
||||
int qdcount;
|
||||
char *name;
|
||||
int namelen;
|
||||
long namelen;
|
||||
int type;
|
||||
int dnsclass;
|
||||
} q, a;
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@@ -185,7 +183,8 @@ static void end_squery(struct search_query *squery, int status,
|
||||
/* Concatenate two domains. */
|
||||
static int cat_domain(const char *name, const char *domain, char **s)
|
||||
{
|
||||
int nlen = strlen(name), dlen = strlen(domain);
|
||||
size_t nlen = strlen(name);
|
||||
size_t dlen = strlen(domain);
|
||||
|
||||
*s = malloc(nlen + 1 + dlen + 1);
|
||||
if (!*s)
|
||||
@@ -203,7 +202,7 @@ static int cat_domain(const char *name, const char *domain, char **s)
|
||||
*/
|
||||
static int single_domain(ares_channel channel, const char *name, char **s)
|
||||
{
|
||||
int len = strlen(name);
|
||||
size_t len = strlen(name);
|
||||
const char *hostaliases;
|
||||
FILE *fp;
|
||||
char *line = NULL;
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -21,23 +21,16 @@ ares_strerror \- Get the description of an ares library error code
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B const char *ares_strerror(int \fIcode\fP, char **\fImemptr\fP)
|
||||
.B const char *ares_strerror(int \fIcode\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B ares_strerror
|
||||
function gets the description of the ares library error code
|
||||
.IR code ,
|
||||
returning the result as a NUL-terminated C string. A pointer to
|
||||
allocated data necessary to compose the error description may be
|
||||
stored in the variable pointed to by
|
||||
.IR memptr .
|
||||
It is the caller's responsibility to invoke
|
||||
.BR ares_free_errmem (3)
|
||||
with the value of that variable when the error description is no
|
||||
longer needed.
|
||||
.SH SEE ALSO
|
||||
.BR ares_free_errmem (3)
|
||||
returning the result as a NUL-terminated C string.
|
||||
.SH NOTES
|
||||
This function is not compatible with ares.
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
|
@@ -13,16 +13,12 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <assert.h>
|
||||
#include "ares.h"
|
||||
|
||||
const char *ares_strerror(int code, char **memptr)
|
||||
const char *ares_strerror(int code)
|
||||
{
|
||||
/* A future implementation may want to handle internationalization.
|
||||
* For now, just return a string literal from a table.
|
||||
*/
|
||||
/* Return a string literal from a table. */
|
||||
const char *errtext[] = {
|
||||
"Successful completion",
|
||||
"DNS server returned answer with no data",
|
||||
@@ -42,6 +38,6 @@ const char *ares_strerror(int code, char **memptr)
|
||||
"Out of memory"
|
||||
};
|
||||
|
||||
assert(code >= 0 && code < (sizeof(errtext) / sizeof(*errtext)));
|
||||
assert(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)));
|
||||
return errtext[code];
|
||||
}
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -1,6 +1,6 @@
|
||||
.\" $Id$
|
||||
.\"
|
||||
.\" Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
.\" Copyright 2004 by Daniel Stenberg
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and distribute this
|
||||
.\" software and its documentation for any purpose and without
|
||||
@@ -14,29 +14,28 @@
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_FREE_ERRMEM 3 "23 July 1998"
|
||||
.TH ARES_VERSION 3 "29 January 2004"
|
||||
.SH NAME
|
||||
ares_free_errmem \- Free memory allocated by ares_strerror
|
||||
ares_version \- Get the version number of the library
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B void ares_free_errmem(char *\fIerrmem\fP)
|
||||
.B const char *ares_version(int *\fIversion\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B ares_free_errmem
|
||||
function frees any memory which might have been allocated by the
|
||||
.BR ares_strerror (3)
|
||||
function. The parameter
|
||||
.I errmem
|
||||
should be set to the variable pointed to by the
|
||||
.I memptr
|
||||
argument previously passed to
|
||||
.IR ares_strerror .
|
||||
.SH SEE ALSO
|
||||
.BR ares_strerror (3)
|
||||
.B ares_version
|
||||
function gets the library version as a string and optionally as an integer
|
||||
stored in the
|
||||
.IR version ,
|
||||
argument. If you pass a NULL, no integer is attempted to be returned.
|
||||
|
||||
The integer is built up as 24bit number, with 8 separate bits used for major
|
||||
number, minor number and patch number. This makes a version string such as
|
||||
1.2.3 will be returned as the hexadecimal number 0x010203 (decimal 66051).
|
||||
.SH NOTES
|
||||
This function is not compatible with ares.
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
Daniel Stenberg
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "ares_version.h"
|
||||
|
||||
char *ares_version(int *version)
|
||||
const char *ares_version(int *version)
|
||||
{
|
||||
if(version)
|
||||
*version = ARES_VERSION;
|
||||
|
@@ -11,7 +11,7 @@
|
||||
(ARES_VERSION_PATCH))
|
||||
#define ARES_VERSION_STR "1.0.0"
|
||||
|
||||
char *ares_version(int *version);
|
||||
const char *ares_version(int *version);
|
||||
|
||||
#endif
|
||||
|
||||
|
56
ares/configure.ac
Normal file
56
ares/configure.ac
Normal file
@@ -0,0 +1,56 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(ares_init.c)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_RANLIB
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
case $host_os in
|
||||
solaris*)
|
||||
AC_DEFINE(ETC_INET)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
|
||||
dnl ************************************************************
|
||||
dnl Option to switch on debug options. This makes an assumption that
|
||||
dnl this is built as an 'ares' subdir in the curl source tree. Subject for
|
||||
dnl improval in the future!
|
||||
dnl
|
||||
AC_MSG_CHECKING([whether to enable debug options])
|
||||
AC_ARG_ENABLE(debug,
|
||||
AC_HELP_STRING([--enable-debug],[Enable pedantic debug options])
|
||||
AC_HELP_STRING([--disable-debug],[Disable debug options]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
|
||||
dnl Checks for standard header files, to make memdebug.h inclusions bettter
|
||||
AC_HEADER_STDC
|
||||
|
||||
CPPFLAGS="$CPPFLAGS -DCURLDEBUG -I../include"
|
||||
CFLAGS="$CFLAGS -g"
|
||||
|
||||
dnl set compiler "debug" options to become more picky, and remove
|
||||
dnl optimize options from CFLAGS
|
||||
CURL_CC_DEBUG_OPTS
|
||||
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
dnl check for a few basic system headers we need
|
||||
dnl AC_CHECK_HEADERS(
|
||||
dnl sys/types.h \
|
||||
dnl sys/time.h \
|
||||
dnl sys/select.h \
|
||||
dnl sys/socket.h \
|
||||
dnl )
|
||||
|
||||
AC_OUTPUT(Makefile)
|
@@ -1,18 +0,0 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(ares_init.c)
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
AC_PROG_RANLIB
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
case $host_os in
|
||||
solaris*)
|
||||
AC_DEFINE(ETC_INET)
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SEARCH_LIBS(gethostbyname, nsl)
|
||||
AC_SEARCH_LIBS(socket, socket)
|
||||
|
||||
AC_OUTPUT(Makefile)
|
13
ares/maketgz
13
ares/maketgz
@@ -2,6 +2,8 @@
|
||||
|
||||
$version = $ARGV[0];
|
||||
|
||||
$name="c-ares";
|
||||
|
||||
if($version eq "") {
|
||||
print "Enter version number!\n";
|
||||
exit;
|
||||
@@ -81,13 +83,16 @@ sub mkalldir {
|
||||
}
|
||||
|
||||
for(@entries) {
|
||||
my $dir = dirpart("arescurl-$version/$_");
|
||||
my $dir = dirpart("$name-$version/$_");
|
||||
# print "Create $dir\n";
|
||||
mkalldir($dir);
|
||||
# print "Copy $_ to $dir\n";
|
||||
`cp -p $_ $dir`;
|
||||
}
|
||||
|
||||
`tar -cf arescurl-$version.tar arescurl-$version`;
|
||||
`gzip -9 arescurl-$version.tar`;
|
||||
`rm -rf arescurl-$version`;
|
||||
# make a tarball
|
||||
`tar -cf $name-$version.tar $name-$version`;
|
||||
# gzip the tarball
|
||||
`gzip -9 $name-$version.tar`;
|
||||
# remove the dir
|
||||
`rm -rf $name-$version`;
|
||||
|
@@ -1,7 +1,11 @@
|
||||
#ifndef ARES_NAMESER_H
|
||||
#define ARES_NAMESER_H
|
||||
|
||||
/* Windows-only header file provided by liren@vivisimo.com to make his Windows
|
||||
port build */
|
||||
|
||||
#include <windows.h>
|
||||
#include <process.h> /* for the _getpid() proto */
|
||||
#include <sys/types.h>
|
||||
|
||||
#define MAXHOSTNAMELEN 256
|
||||
@@ -17,7 +21,8 @@ struct iovec
|
||||
|
||||
#define getpid() _getpid()
|
||||
|
||||
int strcasecmp(const char *a, const char *b);
|
||||
struct timezone { int dummy; };
|
||||
|
||||
int ares_gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||
#define gettimeofday(tv,tz) ares_gettimeofday(tv,tz)
|
||||
|
||||
@@ -154,6 +159,7 @@ typedef enum __ns_rcode {
|
||||
#define SERVFAIL ns_r_servfail
|
||||
#define NOTIMP ns_r_notimpl
|
||||
#define REFUSED ns_r_refused
|
||||
#undef NOERROR /* it seems this is already defined in winerror.h */
|
||||
#define NOERROR ns_r_noerror
|
||||
#define FORMERR ns_r_formerr
|
||||
#define NXDOMAIN ns_r_nxdomain
|
||||
@@ -204,3 +210,17 @@ typedef enum __ns_rcode {
|
||||
#define T_MAILB ns_t_mailb
|
||||
#define T_MAILA ns_t_maila
|
||||
#define T_ANY ns_t_any
|
||||
|
||||
#ifndef __MINGW32__
|
||||
/* protos for the functions we provide in windows_port.c */
|
||||
int ares_strncasecmp(const char *s1, const char *s2, size_t n);
|
||||
int ares_strcasecmp(const char *s1, const char *s2);
|
||||
|
||||
/* use this define magic to prevent us from adding symbol names to the library
|
||||
that is a high-risk to collide with another libraries' attempts to do the
|
||||
same */
|
||||
#define strncasecmp(a,b,c) ares_strncasecmp(a,b,c)
|
||||
#define strcasecmp(a,b) ares_strcasecmp(a,b)
|
||||
#endif
|
||||
|
||||
#endif /* ARES_NAMESER_H */
|
||||
|
@@ -5,8 +5,9 @@
|
||||
|
||||
#include "nameser.h"
|
||||
|
||||
#ifndef __MINGW32__
|
||||
int
|
||||
strncasecmp(const char *a, const char *b, size_t n)
|
||||
ares_strncasecmp(const char *a, const char *b, size_t n)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
@@ -19,10 +20,11 @@ strncasecmp(const char *a, const char *b, size_t n)
|
||||
}
|
||||
|
||||
int
|
||||
strcasecmp(const char *a, const char *b)
|
||||
ares_strcasecmp(const char *a, const char *b)
|
||||
{
|
||||
return strncasecmp(a, b, strlen(a)+1);
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
ares_gettimeofday(struct timeval *tv, struct timezone *tz)
|
||||
|
@@ -1,69 +0,0 @@
|
||||
$!
|
||||
$
|
||||
$ on control_y then goto Common_Exit!
|
||||
$ orig = f$environment("DEFAULT")
|
||||
$ loc = f$environment("PROCEDURE")
|
||||
$ def = f$parse("X.X;1",loc) - "X.X;1"
|
||||
$
|
||||
$ set def 'def'
|
||||
$ cc_qual = "/define=HAVE_CONFIG_H=1/include=(""../include/"",""../"",""../../openssl-0_9_7/include/"")"
|
||||
$ if p1 .eqs. "LISTING" then cc_qual = cc_qual + "/LIST/MACHINE"
|
||||
$ if p1 .eqs. "DEBUG" then cc_qual = cc_qual + "/LIST/MACHINE/DEBUG"
|
||||
$ msg_qual = ""
|
||||
$ call build "[.lib]" "*.c"
|
||||
$ call build "[.src]" "*.c"
|
||||
$ call build "[.src]" "*.msg"
|
||||
$ link /exe=curl.exe [.src]curl/lib/include=main,[.lib]curl/lib, -
|
||||
[-.openssl-0_9_7.axp.exe.ssl]libssl/lib, -
|
||||
[-.openssl-0_9_7.axp.exe.crypto]libcrypto/lib
|
||||
$
|
||||
$
|
||||
$ goto Common_Exit
|
||||
$build: subroutine
|
||||
$ set noon
|
||||
$ set default 'p1'
|
||||
$ search = p2
|
||||
$ reset = f$search("reset")
|
||||
$ if f$search("CURL.OLB") .eqs. ""
|
||||
$ then
|
||||
$ LIB/CREATE/OBJECT CURL.OLB
|
||||
$ endif
|
||||
$ reset = f$search("reset",1)
|
||||
$Loop:
|
||||
$ file = f$search(search,1)
|
||||
$ if file .eqs. "" then goto EndLoop
|
||||
$ obj = f$search(f$parse(".OBJ;",file),2)
|
||||
$ if (obj .nes. "")
|
||||
$ then
|
||||
$ if (f$cvtime(f$file(file,"rdt")) .gts. f$cvtime(f$file(obj,"rdt")))
|
||||
$ then
|
||||
$ call compile 'file'
|
||||
$ lib/object curl.OLB 'f$parse(".obj;",file)'
|
||||
$ else
|
||||
$! write sys$output "File: ''file' is up to date"
|
||||
$ endif
|
||||
$ else
|
||||
$! write sys$output "Object for file: ''file' does not exist"
|
||||
$ call compile 'file'
|
||||
$ lib/object curl.OLB 'f$parse(".obj;",file)'
|
||||
$ endif
|
||||
$ goto Loop
|
||||
$EndLoop:
|
||||
$ purge
|
||||
$ set def 'def'
|
||||
$ endsubroutine ! Build
|
||||
$
|
||||
$compile: subroutine
|
||||
$ set noon
|
||||
$ file = p1
|
||||
$ qual = p2+p3+p4+p5+p6+p7+p8
|
||||
$ typ = f$parse(file,,,"TYPE") - "."
|
||||
$ cmd_c = "CC "+cc_qual
|
||||
$ cmd_msg = "MESSAGE "+msg_qual
|
||||
$ x = cmd_'typ'
|
||||
$ 'x' 'file'
|
||||
$ ENDSUBROUTINE ! Compile
|
||||
$
|
||||
$Common_Exit:
|
||||
$ set default 'orig'
|
||||
$ exit
|
47
buildconf
47
buildconf
@@ -5,6 +5,21 @@ die(){
|
||||
exit
|
||||
}
|
||||
|
||||
# this works as 'which' but we use a different name to make it more obvious we
|
||||
# aren't using 'which'! ;-)
|
||||
findtool(){
|
||||
file="$1"
|
||||
|
||||
IFS=":"
|
||||
for path in $PATH
|
||||
do
|
||||
if test -r "$path/$file"; then
|
||||
echo "$path/$file"
|
||||
return
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# autoconf 2.57 or newer
|
||||
#
|
||||
@@ -79,11 +94,13 @@ LIBTOOL_WANTED_MINOR=4
|
||||
LIBTOOL_WANTED_PATCH=2
|
||||
LIBTOOL_WANTED_VERSION=1.4.2
|
||||
|
||||
libtool=`which glibtool 2>/dev/null`
|
||||
# this approach that tries 'glibtool' first is some kind of work-around for
|
||||
# some BSD-systems I believe that use to provide the GNU libtool named
|
||||
# glibtool, with 'libtool' being something completely different.
|
||||
libtool=`findtool glibtool 2>/dev/null`
|
||||
if test ! -x "$libtool"; then
|
||||
libtool=`which libtool`
|
||||
libtool=`findtool libtool`
|
||||
fi
|
||||
#lt_pversion=`${LIBTOOL:-$libtool} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
|
||||
lt_pversion=`$libtool --version 2>/dev/null|head -1|sed -e 's/^[^0-9]*//g' -e 's/[- ].*//'`
|
||||
if test -z "$lt_pversion"; then
|
||||
echo "buildconf: libtool not found."
|
||||
@@ -121,26 +138,46 @@ fi
|
||||
|
||||
echo "buildconf: libtool version $lt_version (ok)"
|
||||
|
||||
#--------------------------------------------------------------------------
|
||||
# m4 check
|
||||
#
|
||||
m4=`${M4:-m4} --version 2>/dev/null|head -1`;
|
||||
m4_version=`echo $m4 | sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
|
||||
|
||||
if { echo $m4 | grep "GNU" >/dev/null 2>&1; } then
|
||||
echo "buildconf: GNU m4 version $m4_version (ok)"
|
||||
else
|
||||
echo "buildconf: m4 version $m4 found. You need a GNU m4 installed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
|
||||
# run the correct scripts now
|
||||
|
||||
echo "buildconf: running libtoolize"
|
||||
${LIBTOOLIZE:-libtoolize} --copy --automake || die "The command '${LIBTOOLIZE:-libtoolize} --copy --automake' failed"
|
||||
${LIBTOOLIZE:-libtoolize} --copy --automake --force || die "The command '${LIBTOOLIZE:-libtoolize} --copy --automake --force' failed"
|
||||
echo "buildconf: running aclocal"
|
||||
${ACLOCAL:-aclocal} || die "The command '${AUTOHEADER:-aclocal}' failed"
|
||||
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
|
||||
echo "buildconf: running autoheader"
|
||||
${AUTOHEADER:-autoheader} || die "The command '${AUTOHEADER:-autoheader}' failed"
|
||||
echo "buildconf: running autoconf"
|
||||
${AUTOCONF:-autoconf} || die "The command '${AUTOCONF:-autoconf}' failed"
|
||||
|
||||
if test -d ares; then
|
||||
echo "buildconf: running autoconf in the ares directory"
|
||||
cd ares
|
||||
echo "buildconf: running aclocal in the ares directory"
|
||||
${ACLOCAL:-aclocal} || die "The command '${ACLOCAL:-aclocal}' failed"
|
||||
echo "buildconf: running autoconf in the ares directory"
|
||||
${AUTOCONF:-autoconf} || die "The command '${AUTOCONF:-autoconf}' failed"
|
||||
cd ..
|
||||
fi
|
||||
|
||||
echo "buildconf: running automake"
|
||||
${AUTOMAKE:-automake} -a || die "The command '${AUTOMAKE:-automake} -a' failed"
|
||||
|
||||
echo "buildconf: OK"
|
||||
exit 0
|
||||
|
17
buildconf.bat
Normal file
17
buildconf.bat
Normal file
@@ -0,0 +1,17 @@
|
||||
@echo off
|
||||
REM set up a CVS tree to build when there's no autotools
|
||||
REM $Revision$
|
||||
REM $Date$
|
||||
|
||||
REM create ca-bundle.h
|
||||
echo /* This file is generated automatically */ >lib\ca-bundle.h
|
||||
echo #define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE") >>lib\ca-bundle.h
|
||||
|
||||
REM create getdate.c
|
||||
copy lib\getdate.c.cvs lib\getdate.c
|
||||
|
||||
REM create hugehelp.c
|
||||
copy src\hugehelp.c.cvs src\hugehelp.c
|
||||
|
||||
REM create Makefile
|
||||
copy Makefile.dist Makefile
|
297
configure.ac
297
configure.ac
@@ -208,37 +208,92 @@ AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
|
||||
AC_MSG_RESULT(yes)
|
||||
)
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Check for built-in manual
|
||||
dnl **********************************************************************
|
||||
|
||||
AC_MSG_CHECKING([whether to provide built-in manual])
|
||||
AC_ARG_ENABLE(manual,
|
||||
AC_HELP_STRING([--enable-manual],[Enable built-in manual])
|
||||
AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*) AC_MSG_RESULT(yes)
|
||||
USE_MANUAL="1"
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(yes)
|
||||
USE_MANUAL="1"
|
||||
)
|
||||
dnl The actual use of the USE_MANUAL variable is done much later in this
|
||||
dnl script to allow other actions to disable it as well.
|
||||
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Checks for libraries.
|
||||
dnl **********************************************************************
|
||||
|
||||
dnl gethostbyname in the nsl lib?
|
||||
AC_CHECK_FUNC(gethostbyname, , [ AC_CHECK_LIB(nsl, gethostbyname) ])
|
||||
dnl gethostbyname without lib or in the nsl lib?
|
||||
AC_CHECK_FUNC(gethostbyname,
|
||||
[HAVE_GETHOSTBYNAME="1"
|
||||
],
|
||||
[ AC_CHECK_LIB(nsl, gethostbyname,
|
||||
[HAVE_GETHOSTBYNAME="1"
|
||||
LIBS="$LIBS -lnsl"
|
||||
])
|
||||
])
|
||||
|
||||
if test "$ac_cv_lib_nsl_gethostbyname" != "yes" -a "$ac_cv_func_gethostbyname" != "yes"; then
|
||||
if test "$HAVE_GETHOSTBYNAME" != "1"
|
||||
then
|
||||
dnl gethostbyname in the socket lib?
|
||||
AC_CHECK_FUNC(gethostbyname, , [ AC_CHECK_LIB(socket, gethostbyname) ])
|
||||
AC_CHECK_LIB(socket, gethostbyname,
|
||||
[HAVE_GETHOSTBYNAME="1"
|
||||
LIBS="$LIBS -lsocket"
|
||||
])
|
||||
fi
|
||||
|
||||
dnl At least one system has been identified to require BOTH nsl and
|
||||
dnl socket libs to link properly.
|
||||
if test "$ac_cv_lib_nsl_gethostbyname" != "yes" -a "$ac_cv_lib_socket_gethostbyname" != "yes" -a "$ac_cv_func_gethostbyname" != "yes"; then
|
||||
AC_MSG_CHECKING([trying both nsl and socket libs])
|
||||
dnl At least one system has been identified to require BOTH nsl and socket
|
||||
dnl libs at the same time to link properly.
|
||||
if test "$HAVE_GETHOSTBYNAME" != "1"
|
||||
then
|
||||
AC_MSG_CHECKING([trying gethostbyname with both nsl and socket libs])
|
||||
my_ac_save_LIBS=$LIBS
|
||||
LIBS="-lnsl -lsocket $LIBS"
|
||||
AC_TRY_LINK( ,
|
||||
[gethostbyname();],
|
||||
my_ac_link_result=success,
|
||||
my_ac_link_result=failure )
|
||||
[ dnl found it!
|
||||
HAVE_GETHOSTBYNAME="1",
|
||||
AC_MSG_RESULT([yes])],
|
||||
[ dnl failed!
|
||||
AC_MSG_RESULT([no])
|
||||
dnl restore LIBS
|
||||
LIBS=$my_ac_save_LIBS]
|
||||
)
|
||||
fi
|
||||
|
||||
if test "$my_ac_link_result" = "failure"; then
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
|
||||
dnl restore LIBS
|
||||
LIBS=$my_ac_save_LIBS
|
||||
else
|
||||
AC_MSG_RESULT([yes])
|
||||
fi
|
||||
if test "$HAVE_GETHOSTBYNAME" != "1"
|
||||
then
|
||||
dnl This is for Msys/Mingw
|
||||
AC_MSG_CHECKING([for gethostbyname in ws2_32])
|
||||
my_ac_save_LIBS=$LIBS
|
||||
LIBS="-lws2_32 $LIBS"
|
||||
AC_TRY_LINK([#include <winsock2.h>],
|
||||
[gethostbyname("www.dummysite.com");],
|
||||
[ dnl worked!
|
||||
AC_MSG_RESULT([yes])
|
||||
HAVE_GETHOSTBYNAME="1"],
|
||||
[ dnl failed, restore LIBS
|
||||
LIBS=$my_ac_save_LIBS
|
||||
AC_MSG_RESULT(no)]
|
||||
)
|
||||
fi
|
||||
|
||||
if test "$HAVE_GETHOSTBYNAME" = "1"; then
|
||||
AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [If you have gethostbyname])
|
||||
else
|
||||
AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
|
||||
fi
|
||||
|
||||
dnl resolve lib?
|
||||
@@ -271,6 +326,25 @@ AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Check for the presence of the winmm library.
|
||||
dnl **********************************************************************
|
||||
|
||||
AC_MSG_CHECKING([for timeGetTime in winmm])
|
||||
my_ac_save_LIBS=$LIBS
|
||||
LIBS="-lwinmm $LIBS"
|
||||
AC_TRY_LINK([#include <windef.h>
|
||||
#include <mmsystem.h>
|
||||
],
|
||||
[timeGetTime();],
|
||||
[ dnl worked!
|
||||
AC_MSG_RESULT([yes])
|
||||
],
|
||||
[ dnl failed, restore LIBS
|
||||
LIBS=$my_ac_save_LIBS
|
||||
AC_MSG_RESULT(no)]
|
||||
)
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Checks for IPv6
|
||||
dnl **********************************************************************
|
||||
@@ -416,8 +490,8 @@ AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
|
||||
OPT_KRB4="$withval"
|
||||
if test X"$OPT_KRB4" != Xyes
|
||||
then
|
||||
LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib"
|
||||
KRB4LIB="$OPT_KRB4/lib"
|
||||
LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
|
||||
KRB4LIB="$OPT_KRB4/lib$libsuff"
|
||||
CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
|
||||
KRB4INC="$OPT_KRB4/include"
|
||||
fi
|
||||
@@ -543,7 +617,7 @@ if test x"$want_gss" = xyes; then
|
||||
if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
|
||||
GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
|
||||
else
|
||||
GSSAPI_INCS=="-I$GSSAPI_ROOT/include"
|
||||
GSSAPI_INCS="-I$GSSAPI_ROOT/include"
|
||||
fi
|
||||
fi
|
||||
CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
|
||||
@@ -553,7 +627,7 @@ if test x"$want_gss" = xyes; then
|
||||
gss_ldflags=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
|
||||
LDFLAGS="$LDFLAGS $gss_ldflags"
|
||||
else
|
||||
LDFLAGS="$LDFLAGS $GSSAPI_ROOT/lib -lgssapi"
|
||||
LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff -lgssapi"
|
||||
fi
|
||||
else
|
||||
LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
|
||||
@@ -636,7 +710,7 @@ else
|
||||
*)
|
||||
dnl check the given spot right away!
|
||||
EXTRA_SSL=$OPT_SSL
|
||||
LDFLAGS="$LDFLAGS -L$EXTRA_SSL/lib"
|
||||
LDFLAGS="$LDFLAGS -L$EXTRA_SSL/lib$libsuff"
|
||||
CPPFLAGS="$CPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
|
||||
;;
|
||||
esac
|
||||
@@ -646,7 +720,7 @@ else
|
||||
],[
|
||||
OLDLDFLAGS="$LDFLAGS"
|
||||
OLDCPPFLAGS="$CPPFLAGS"
|
||||
LDFLAGS="$CLEANLDFLAGS -L$EXTRA_SSL/lib"
|
||||
LDFLAGS="$CLEANLDFLAGS -L$EXTRA_SSL/lib$libsuff"
|
||||
CPPFLAGS="$CLEANCPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
|
||||
AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
|
||||
HAVECRYPTO="yes" ], [
|
||||
@@ -660,6 +734,20 @@ else
|
||||
dnl This is only reasonable to do if crypto actually is there: check for
|
||||
dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
|
||||
|
||||
dnl This is for Msys/Mingw
|
||||
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)]
|
||||
)
|
||||
|
||||
AC_CHECK_LIB(crypto, CRYPTO_add_lock)
|
||||
AC_CHECK_LIB(ssl, SSL_connect)
|
||||
|
||||
@@ -758,28 +846,60 @@ case "$OPT_ZLIB" in
|
||||
dnl check for the lib first without setting any new path, since many
|
||||
dnl people have it in the default path
|
||||
|
||||
AC_CHECK_LIB(z, inflateEnd, ,
|
||||
AC_CHECK_LIB(z, inflateEnd,
|
||||
dnl libz found, set the variable
|
||||
[HAVE_LIBZ="1"],
|
||||
dnl if no lib found, try to add the given library
|
||||
[if test -d "$OPT_ZLIB"; then
|
||||
CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
|
||||
LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib"
|
||||
LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
|
||||
fi])
|
||||
|
||||
AC_CHECK_HEADER(zlib.h,[
|
||||
AC_CHECK_LIB(z, gzread,
|
||||
[HAVE_LIBZ="1"
|
||||
AC_SUBST(HAVE_LIBZ)
|
||||
AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
|
||||
AC_DEFINE(HAVE_LIBZ, 1, [If zlib is available])],
|
||||
[ CPPFLAGS=$_cppflags
|
||||
LDFLAGS=$_ldflags])],
|
||||
[ CPPFLAGS=$_cppflags
|
||||
LDFLAGS=$_ldflags]
|
||||
)
|
||||
AC_CHECK_HEADER(zlib.h,
|
||||
[
|
||||
dnl zlib.h was found
|
||||
HAVE_ZLIB_H="1"
|
||||
dnl if the lib wasn't found already, try again with the new paths
|
||||
if test "$HAVE_LIBZ" != "1"; then
|
||||
AC_CHECK_LIB(z, gzread,
|
||||
[
|
||||
dnl the lib was found!
|
||||
HAVE_LIBZ="1"
|
||||
],
|
||||
[ CPPFLAGS=$_cppflags
|
||||
LDFLAGS=$_ldflags])
|
||||
fi
|
||||
],
|
||||
[
|
||||
dnl zlib.h was not found, restore the flags
|
||||
CPPFLAGS=$_cppflags
|
||||
LDFLAGS=$_ldflags]
|
||||
)
|
||||
|
||||
if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
|
||||
then
|
||||
AC_MSG_WARN([configure found only the libz lib, not the header file!])
|
||||
elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
|
||||
then
|
||||
AC_MSG_WARN([configure found only the libz header file, not the lib!])
|
||||
elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
|
||||
then
|
||||
dnl both header and lib were found!
|
||||
AC_SUBST(HAVE_LIBZ)
|
||||
AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
|
||||
AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
|
||||
|
||||
LIBS="$LIBS -lz"
|
||||
|
||||
dnl replace 'HAVE_LIBZ' in the automake makefile.ams
|
||||
AMFIXLIB="1"
|
||||
AC_MSG_NOTICE([found both libz and libz.h header])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl set variable for use in automakefile(s)
|
||||
AM_CONDITIONAL(HAVE_LIBZ, test x"$HAVE_LIBZ" = x1)
|
||||
AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
|
||||
|
||||
dnl Default is to try the thread-safe versions of a few functions
|
||||
OPT_THREAD=on
|
||||
@@ -818,12 +938,13 @@ then
|
||||
AC_DEFINE(DISABLED_THREADSAFE, 1, \
|
||||
Set to explicitly specify we don't want to use thread-safe functions)
|
||||
else
|
||||
if test "$ipv6" != "yes"; then
|
||||
dnl dig around for gethostbyname_r()
|
||||
CURL_CHECK_GETHOSTBYNAME_R()
|
||||
|
||||
dnl dig around for gethostbyname_r()
|
||||
CURL_CHECK_GETHOSTBYNAME_R()
|
||||
|
||||
dnl dig around for gethostbyaddr_r()
|
||||
CURL_CHECK_GETHOSTBYADDR_R()
|
||||
dnl dig around for gethostbyaddr_r()
|
||||
CURL_CHECK_GETHOSTBYADDR_R()
|
||||
fi
|
||||
|
||||
dnl poke around for inet_ntoa_r()
|
||||
CURL_CHECK_INET_NTOA_R()
|
||||
@@ -849,6 +970,7 @@ AC_CHECK_HEADERS(
|
||||
sys/time.h \
|
||||
sys/select.h \
|
||||
sys/socket.h \
|
||||
sys/ioctl.h \
|
||||
assert.h \
|
||||
unistd.h \
|
||||
malloc.h \
|
||||
@@ -901,7 +1023,10 @@ AC_C_CONST
|
||||
AC_TYPE_SIZE_T
|
||||
AC_HEADER_TIME
|
||||
|
||||
AC_CHECK_SIZEOF(off_t)
|
||||
AC_CHECK_SIZEOF(curl_off_t, ,[
|
||||
#include <stdio.h>
|
||||
#include "$srcdir/include/curl/curl.h"
|
||||
])
|
||||
|
||||
AC_CHECK_TYPE(long long,
|
||||
[AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports 'long long'])])
|
||||
@@ -987,8 +1112,64 @@ AC_PATH_PROGS( NROFF, gnroff nroff, ,
|
||||
$PATH:/usr/bin/:/usr/local/bin )
|
||||
AC_SUBST(NROFF)
|
||||
|
||||
if test -n "$NROFF"; then
|
||||
dnl only check for nroff options if an nroff command was found
|
||||
|
||||
AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
|
||||
MANOPT="-man"
|
||||
mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
|
||||
if test -z "$mancheck"; then
|
||||
MANOPT="-mandoc"
|
||||
mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
|
||||
if test -z "$mancheck"; then
|
||||
MANOPT=""
|
||||
AC_MSG_RESULT([failed])
|
||||
AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
|
||||
else
|
||||
AC_MSG_RESULT([$MANOPT])
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([$MANOPT])
|
||||
fi
|
||||
AC_SUBST(MANOPT)
|
||||
fi
|
||||
|
||||
if test -z "$MANOPT"
|
||||
then
|
||||
dnl if no nroff tool was found, or no option that could convert man pages
|
||||
dnl was found, then disable the built-in manual stuff
|
||||
AC_MSG_WARN([disabling built-in manual])
|
||||
USE_MANUAL="no";
|
||||
fi
|
||||
|
||||
AC_PROG_YACC
|
||||
|
||||
if test -z "$YACC"
|
||||
then
|
||||
AC_MSG_CHECKING([if OK to build without bison/yacc])
|
||||
dnl no yacc is a big deal if we have no pre-fixed getdate.y
|
||||
if test -r "$srcdir/lib/getdate.c"
|
||||
then
|
||||
dnl all is well, we don't have to generate it!
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_ERROR([no yacc or bison found, can't build libcurl!])
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl *************************************************************************
|
||||
dnl If the manual variable still is set, then we go with providing a built-in
|
||||
dnl manual
|
||||
|
||||
if test "$USE_MANUAL" = "1"; then
|
||||
AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
|
||||
fi
|
||||
|
||||
dnl set variable for use in automakefile(s)
|
||||
AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
|
||||
|
||||
|
||||
dnl AC_PATH_PROG( RANLIB, ranlib, /usr/bin/ranlib,
|
||||
dnl $PATH:/usr/bin/:/usr/local/bin )
|
||||
dnl AC_SUBST(RANLIB)
|
||||
@@ -1007,25 +1188,14 @@ AC_HELP_STRING([--disable-debug],[Disable debug options]),
|
||||
*) AC_MSG_RESULT(yes)
|
||||
|
||||
CPPFLAGS="$CPPFLAGS -DCURLDEBUG"
|
||||
CFLAGS="$CFLAGS -g"
|
||||
if test "$GCC" = "yes"; then
|
||||
CFLAGS="$CFLAGS -W -Wall -Wwrite-strings -pedantic -Wno-long-long -Wundef -Wpointer-arith -Wnested-externs"
|
||||
fi
|
||||
dnl strip off optimizer flags
|
||||
NEWFLAGS=""
|
||||
for flag in $CFLAGS; do
|
||||
case "$flag" in
|
||||
-O*)
|
||||
dnl echo "cut off $flag"
|
||||
;;
|
||||
*)
|
||||
NEWFLAGS="$NEWFLAGS $flag"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
CFLAGS=$NEWFLAGS
|
||||
CFLAGS="$CFLAGS -g"
|
||||
|
||||
dnl set compiler "debug" options to become more picky, and remove
|
||||
dnl optimize options from CFLAGS
|
||||
CURL_CC_DEBUG_OPTS
|
||||
;;
|
||||
esac ],
|
||||
esac
|
||||
],
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
@@ -1048,7 +1218,7 @@ AC_HELP_STRING([--disable-ares],[Disable ares for name lookups]),
|
||||
HAVE_ARES="1"
|
||||
AC_SUBST(HAVE_ARES)
|
||||
|
||||
LIBS="$LIBS -lares"
|
||||
LIBS="$LIBS -lcares"
|
||||
|
||||
dnl For backwards compatibility default to includes/lib in srcdir/ares
|
||||
dnl If a value is specified it is assumed that the libs are in $val/lib
|
||||
@@ -1098,6 +1268,7 @@ AC_CONFIG_FILES([Makefile \
|
||||
packages/DOS/Makefile \
|
||||
packages/EPM/curl.list \
|
||||
packages/EPM/Makefile \
|
||||
packages/vms/Makefile \
|
||||
curl-config
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
@@ -37,7 +37,7 @@
|
||||
(setq tab-width 8
|
||||
indent-tabs-mode nil ; Use spaces. Not tabs.
|
||||
comment-column 40
|
||||
c-font-lock-extra-types (append '("bool" "CURL" "CURLcode" "ssize_t" "size_t" "socklen_t" "fd_set" "time_t" "off_t"))
|
||||
c-font-lock-extra-types (append '("bool" "CURL" "CURLcode" "ssize_t" "size_t" "socklen_t" "fd_set" "time_t" "curl_off_t" "curl_socket_t"))
|
||||
)
|
||||
;; keybindings for C, C++, and Objective-C. We can put these in
|
||||
;; c-mode-base-map because of inheritance ...
|
||||
|
@@ -35,6 +35,11 @@ Cocoa
|
||||
Written by Dan Wood.
|
||||
http://curlhandle.sourceforge.net/
|
||||
|
||||
D
|
||||
|
||||
Written by Charles Sanders and James Wavro
|
||||
http://www.atari-soldiers.com/libcurl.html
|
||||
|
||||
Dylan
|
||||
|
||||
Written by Chris Double.
|
||||
|
67
docs/FAQ
67
docs/FAQ
@@ -1,8 +1,8 @@
|
||||
Updated: December 22, 2003 (http://curl.haxx.se/docs/faq.html)
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
Updated: March 16, 2004 (http://curl.haxx.se/docs/faq.html)
|
||||
_ _ ____ _
|
||||
___| | | | _ \| |
|
||||
/ __| | | | |_) | |
|
||||
| (__| |_| | _ <| |___
|
||||
\___|\___/|_| \_\_____|
|
||||
|
||||
FAQ
|
||||
@@ -19,7 +19,7 @@ FAQ
|
||||
|
||||
2. Install Related Problems
|
||||
2.1 configure doesn't find OpenSSL even when it is installed
|
||||
2.1.1. native linker doesn't find openssl
|
||||
2.1.1. native linker doesn't find OpenSSL
|
||||
2.1.2. only the libssl lib is missing
|
||||
2.2 Does curl work/build with other SSL libraries?
|
||||
2.3 Where can I find a copy of LIBEAY32.DLL?
|
||||
@@ -90,7 +90,7 @@ FAQ
|
||||
with URL spelled in uppercase to make it obvious it deals with URLs. The
|
||||
fact it can also be pronounced 'see URL' also helped, it works as an
|
||||
abbrivation for "Client URL Request Library" or why not the recursive
|
||||
version: "Curl is a URL Request Library".
|
||||
version: "Curl URL Request Library".
|
||||
|
||||
Curl supports a range of common Internet protocols, currently including
|
||||
HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE.
|
||||
@@ -101,7 +101,7 @@ FAQ
|
||||
NOTE: there are numerous sub-projects and related projects that also use the
|
||||
word curl in the project names in various combinations, but you should take
|
||||
notice that this FAQ is directed at the command-line tool named curl (and
|
||||
libcurl the library), and may therefore not be valid for other curl
|
||||
libcurl the library), and may therefore not be valid for other curl-related
|
||||
projects.
|
||||
|
||||
1.2 What is libcurl?
|
||||
@@ -109,16 +109,16 @@ FAQ
|
||||
libcurl is a reliable and portable library which provides you with an easy
|
||||
interface to a range of common Internet protocols.
|
||||
|
||||
You can use libcurl for free in your application even if it is commercial
|
||||
or closed-source.
|
||||
You can use libcurl for free in your application, be it open source,
|
||||
commercial or closed-source.
|
||||
|
||||
1.3 What is cURL not?
|
||||
|
||||
Curl is *not* a wget clone even though that is a very common misconception.
|
||||
Never, during curl's development, have we intended curl to replace wget or
|
||||
compete on its market. Curl is targeted at single-shot file transfers.
|
||||
|
||||
Curl is not a web site mirroring program. If you wanna use curl to mirror
|
||||
Curl is *not* a wget clone. That is a common misconception. Never, during
|
||||
curl's development, have we intended curl to replace wget or compete on its
|
||||
market. Curl is targeted at single-shot file transfers.
|
||||
|
||||
Curl is not a web site mirroring program. If you want to use curl to mirror
|
||||
something: fine, go ahead and write a script that wraps around curl to make
|
||||
it reality (like curlmirror.pl does).
|
||||
|
||||
@@ -181,9 +181,8 @@ FAQ
|
||||
curl. We do this voluntarily on our spare time.
|
||||
|
||||
We get some help from companies. Contactor Data hosts the curl web site,
|
||||
Haxx owns the curl web site's domain and sourceforge.net hosts several
|
||||
project services we take advantage from, like the bug tracker, mailing lists
|
||||
and more.
|
||||
Haxx owns the curl web site's domain and sourceforge.net hosts project
|
||||
services we take advantage from, like the bug tracker.
|
||||
|
||||
If you want to support our project with a donation or similar, one way of
|
||||
doing that would be to buy "gift certificates" at useful online shopping
|
||||
@@ -198,7 +197,7 @@ FAQ
|
||||
programming language for the web, named CURL.
|
||||
|
||||
We are in no way associated with curl.com or their CURL programming
|
||||
language.
|
||||
language.
|
||||
|
||||
Our project name curl has been in effective use since 1998. We were not the
|
||||
first computer related project to use the name "curl" and do not claim any
|
||||
@@ -281,8 +280,7 @@ FAQ
|
||||
|
||||
2.4. Does cURL support Socks (RFC 1928) ?
|
||||
|
||||
There is limited support for SOCKS5 for curl built with IPv6 support
|
||||
disabled.
|
||||
Yes, SOCKS5 is supported when curl is built with IPv6 support disabled.
|
||||
|
||||
|
||||
3. Usage problems
|
||||
@@ -414,7 +412,7 @@ FAQ
|
||||
put the entire option within quotes. Like in:
|
||||
|
||||
curl -d " with spaces " url.com
|
||||
|
||||
|
||||
or perhaps
|
||||
|
||||
curl -d ' with spaces ' url.com
|
||||
@@ -450,7 +448,7 @@ FAQ
|
||||
|
||||
- Read the javascript code and rewrite the same logic in another language.
|
||||
|
||||
- Implement a javascript interpreted, people have successfully used the
|
||||
- Implement a javascript interpreter, people have successfully used the
|
||||
Mozilla javascript engine in the past.
|
||||
|
||||
- Ask your admins to stop this, for a static proxy setup or similar.
|
||||
@@ -478,7 +476,7 @@ FAQ
|
||||
requests properly. To correct this problem, tell curl to select SSLv2 from
|
||||
the command line (-2/--sslv2).
|
||||
|
||||
There has also been examples where the remote server didn't like the SSLv2
|
||||
There have also been examples where the remote server didn't like the SSLv2
|
||||
request and instead you had to force curl to use SSLv3 with -3/--sslv3.
|
||||
|
||||
4.2. Why do I get problems when I use & or % in the URL?
|
||||
@@ -554,7 +552,7 @@ FAQ
|
||||
containing a list of valid methods for the requested resource.
|
||||
|
||||
4.5.6 "301 Moved Permanently"
|
||||
|
||||
|
||||
If you get this return code and an HTML output similar to this:
|
||||
|
||||
<H1>Moved Permanently</H1> The document has moved <A
|
||||
@@ -577,21 +575,26 @@ FAQ
|
||||
|
||||
The first part is to avoid having clear-text passwords in the command line
|
||||
so that they don't appear in 'ps' outputs and similar. That is easily
|
||||
avoided by using the "-K" option to tell curl to read parameters from a
|
||||
file or stdin to which you can pass the secret info.
|
||||
avoided by using the "-K" option to tell curl to read parameters from a file
|
||||
or stdin to which you can pass the secret info. curl itself will also
|
||||
attempt to "hide" the given password by blanking out the option - this
|
||||
doesn't work on all platforms.
|
||||
|
||||
To keep the passwords in your account secret from the rest of the world is
|
||||
not a task that curl addresses. You could of course encrypt them somehow to
|
||||
at least hide them from being read by human eyes, but that is not what
|
||||
anyone would call security.
|
||||
|
||||
Also note that regular HTTP and FTP passwords are sent in clear across the
|
||||
network. All it takes for anyone to fetch them is to listen on the network.
|
||||
Eavesdropping is very easy.
|
||||
Also note that regular HTTP (using Basic authentication) and FTP passwords
|
||||
are sent in clear across the network. All it takes for anyone to fetch them
|
||||
is to listen on the network. Eavesdropping is very easy. Use more secure
|
||||
authentication methods (like Digest, Negotiate or even NTLM) or consider the
|
||||
SSL-based alternatives HTTPS and FTPS.
|
||||
|
||||
4.8 I found a bug!
|
||||
|
||||
It is not a bug if the behavior is documented. Read the docs first.
|
||||
Especially check out the KNOWN_BUGS file, it may be a documented bug!
|
||||
|
||||
If it is a problem with a binary you've downloaded or a package for your
|
||||
particular platform, try contacting the person who built the package/archive
|
||||
@@ -629,7 +632,7 @@ FAQ
|
||||
You invoke curl 7.10 or later to communicate on a https:// URL and get an
|
||||
error back looking something similar to this:
|
||||
|
||||
curl: (35) SSL: error:14090086:SSL routines:
|
||||
curl: (35) SSL: error:14090086:SSL routines:
|
||||
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
|
||||
|
||||
Then it means that curl couldn't verify that the server's certificate was
|
||||
@@ -686,7 +689,7 @@ FAQ
|
||||
{
|
||||
register int realsize = size * nmemb;
|
||||
struct MemoryStruct *mem = (struct MemoryStruct *)data;
|
||||
|
||||
|
||||
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
|
||||
if (mem->memory) {
|
||||
memcpy(&(mem->memory[mem->size]), ptr, realsize);
|
||||
|
@@ -124,3 +124,5 @@ November 2003: curl 7.10.8 is released. 45000 lines of code. ~55000 unique
|
||||
visitors to the curl.haxx.se site. Five official web mirrors.
|
||||
|
||||
December 2003, full-fledged SSL for FTP is supported.
|
||||
|
||||
January 2004: curl 7.11.0 introduced large file support.
|
||||
|
@@ -488,6 +488,7 @@ PORTS
|
||||
- Alpha Tru64 v5.0 5.1
|
||||
- HP-PA HP-UX 9.X 10.X 11.X
|
||||
- HP-PA Linux
|
||||
- HP3000 MPE/iX
|
||||
- MIPS IRIX 6.2, 6.5
|
||||
- MIPS Linux
|
||||
- Pocket PC/Win CE 3.0
|
||||
@@ -510,6 +511,7 @@ PORTS
|
||||
- i386 HURD
|
||||
- i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4
|
||||
- i386 NetBSD
|
||||
- i386 Novell NetWare
|
||||
- i386 OS/2
|
||||
- i386 OpenBSD
|
||||
- i386 SCO unix
|
||||
|
@@ -3,6 +3,9 @@ join in and help us correct one or more of these! Also be sure to check the
|
||||
changelog of the current development status, as one or more of these problems
|
||||
may have been fixed since this was written!
|
||||
|
||||
* NTLM authentication with passwords longer than 14 letters fail. There is
|
||||
a known fix for this, planned to come in curl 7.11.2
|
||||
|
||||
* Doing resumed upload over HTTP does not work with '-C -', because curl
|
||||
doesn't do a HEAD first to get the initial size. This needs to be done
|
||||
manually for HTTP PUT resume to work, and then '-C [index]'.
|
||||
@@ -41,20 +44,11 @@ may have been fixed since this was written!
|
||||
* IPv6 support on AIX 4.3.3 doesn't work due to a missing sockaddr_storage
|
||||
struct. It has been reported to work on AIX 5.1 though.
|
||||
|
||||
* Running 'make test' on Mac OS X gives 4 errors. This seems to be related
|
||||
to some kind of libtool problem:
|
||||
http://curl.haxx.se/mail/archive-2002-03/0029.html and
|
||||
http://curl.haxx.se/mail/archive-2002-03/0033.html
|
||||
|
||||
* libcurl does not deal nicely with files larger than 2GB
|
||||
|
||||
* GOPHER transfers seem broken
|
||||
|
||||
* configure --disable-http is not fully supported. All other protocols seem
|
||||
to work to disable.
|
||||
|
||||
* The -m parameter does not work when using telnet with curl on Windows.
|
||||
|
||||
* If a HTTP server responds to a HEAD request and includes a body (thus
|
||||
violating the RFC2616), curl won't wait to read the response but just stop
|
||||
reading and return back. If a second request (let's assume a GET) is then
|
||||
@@ -64,63 +58,3 @@ may have been fixed since this was written!
|
||||
and havoc is what happens.
|
||||
More details on this is found in this libcurl mailing list thread:
|
||||
http://curl.haxx.se/mail/lib-2002-08/0000.html
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Q: My program blows up when I run lots of curl_easy_perform() calls on a
|
||||
single thread
|
||||
Q: My program dies when a single thread re-enters the win32 select() call
|
||||
via curl_easy_perform()
|
||||
Q: --- add your own flavour here ---
|
||||
|
||||
Single Threaded Re-Entracy
|
||||
--------------------------
|
||||
|
||||
There is a glitch / trick to using cURL on Win32 related to re-entrancy.
|
||||
This experience was gained on verion 7.9.4 using Windows NT SP3 in a banking
|
||||
environment (just in case you wanted to know).
|
||||
|
||||
If you have already called curl_easy_perform(), and *somehow* you cause your
|
||||
single thread of execution to make another call to curl_easy_perform() - the
|
||||
windows socket() call used to create a new socket for the second connection
|
||||
can return with 10044 / 10043 error codes.
|
||||
|
||||
The WSA errors we experienced are:
|
||||
WSAEPROTONOSUPPORT
|
||||
(10043)
|
||||
Protocol not supported.
|
||||
The requested protocol has not been configured into the system, or no
|
||||
implementation for it exists. For example, a socket call requests a
|
||||
SOCK_DGRAM socket, but specifies a stream protocol.
|
||||
|
||||
WSAESOCKTNOSUPPORT
|
||||
(10044)
|
||||
Socket type not supported.
|
||||
The support for the specified socket type does not exist in this address
|
||||
family. For example, the optional type SOCK_RAW might be selected in a
|
||||
socket call, and the implementation does not support SOCK_RAW sockets at
|
||||
all.
|
||||
|
||||
We have experienced this by creating a timer that ticks every 20ms, and on
|
||||
the tick making a curl_easy_perform() call. The call usually completed in
|
||||
about 300ms. And we expected (before this test) that the timer would NOT be
|
||||
fired during a call to curl_easy_perform(), howvever, while the first
|
||||
curl_easy_perform() is running a tick *is* fired by the windows API somehow,
|
||||
and we then call curl_easy_perform() again - thus single threaded
|
||||
re-entrancy is achieved.
|
||||
|
||||
Notes:
|
||||
* We made sure that a new CURL structure was being used for each
|
||||
curl_easy_perform() request, and that the curl_global_init() had been called
|
||||
beforehand.
|
||||
* I'm happy to answer any questions about this problem to try to track it
|
||||
down.
|
||||
* Once the socket() call started failing, there is no hope - it never works
|
||||
again.
|
||||
* Slowing the timer down to give each request enough time to complete solves
|
||||
this problem completely.
|
||||
|
||||
If anyone has the source code to the WinNT implementation of socket() and
|
||||
can figure out WHY this can occur, more tracing can be performed.
|
||||
|
||||
John Clayton <John.Clayton at barclayscapital.com>
|
||||
|
@@ -836,8 +836,6 @@ PERSISTANT CONNECTIONS
|
||||
transfers faster. If you use a http proxy for file transfers, practicly
|
||||
all transfers will be persistant.
|
||||
|
||||
Persistant connections were introduced in curl 7.7.
|
||||
|
||||
MAILING LISTS
|
||||
|
||||
For your convenience, we have several open mailing lists to discuss curl,
|
||||
|
@@ -8,10 +8,11 @@ man_MANS = \
|
||||
curl.1 \
|
||||
curl-config.1
|
||||
|
||||
HTMLPAGES = \
|
||||
GENHTMLPAGES = \
|
||||
curl.html \
|
||||
curl-config.html \
|
||||
index.html
|
||||
curl-config.html
|
||||
|
||||
HTMLPAGES = $(GENHTMLPAGES) index.html
|
||||
|
||||
PDFPAGES = \
|
||||
curl.pdf \
|
||||
@@ -19,6 +20,8 @@ PDFPAGES = \
|
||||
|
||||
SUBDIRS = examples libcurl
|
||||
|
||||
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
|
||||
|
||||
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
|
||||
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \
|
||||
VERSIONS KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) \
|
||||
|
@@ -1,7 +1,7 @@
|
||||
Peer SSL Certificate Verification
|
||||
=================================
|
||||
|
||||
Starting in 7.10, libcurl performs peer SSL certificate verification by
|
||||
Since version 7.10, libcurl performs peer SSL certificate verification by
|
||||
default. This is done by installing a default CA cert bundle on 'make install'
|
||||
(or similar), that CA bundle package is used by default on operations against
|
||||
SSL servers.
|
||||
@@ -11,9 +11,11 @@ by CAs present in the bundle, you will not notice any changed behavior and you
|
||||
will seamlessly get a higher security level on your SSL connections since you
|
||||
can be sure that the remote server really is the one it claims to be.
|
||||
|
||||
If the remote server uses a self-signed certificate, or if you don't install
|
||||
curl's CA cert bundle or if it uses a certificate signed by a CA that isn't
|
||||
included in the bundle, then you need to do one of the following:
|
||||
If the remote server uses a self-signed certificate, if you don't install
|
||||
curl's CA cert bundle, if the server uses a certificate signed by a CA that
|
||||
isn't included in the bundle or if the remoste host is an imposter
|
||||
impersonating your favourite site, and you want to transfer files from this
|
||||
server, do one of the following:
|
||||
|
||||
1. Tell libcurl to *not* verify the peer. With libcurl you disable with with
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||
@@ -37,3 +39,8 @@ trouble for some users, since it adds security to a majority of the SSL
|
||||
connections that previously weren't really secure. It turned out many people
|
||||
were using previous versions of curl/libcurl without realizing the need for
|
||||
the CA cert options to get truly secure SSL connections.
|
||||
|
||||
The default path of the CA bundle installed with the curl package is:
|
||||
/usr/local/share/curl/curl-ca-bundle.crt, which can be changed by running
|
||||
configure with the --with-ca-bundle option pointing out the path of your
|
||||
choice.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
This project has been alive for several years. Countless people have provided
|
||||
feedback that have improved curl. Here follows a (incomplete) list of people
|
||||
that have contributed with non-trivial parts:
|
||||
This project has been alive for several years. Countless people have provided
|
||||
feedback that have improved curl. Here follows a (incomplete) list of people
|
||||
that have contributed with non-trivial parts:
|
||||
|
||||
Daniel Stenberg <daniel@haxx.se>
|
||||
Rafael Sagula <sagula@inf.ufrgs.br>
|
||||
@@ -96,4 +96,5 @@ David Meyer <meyer@paracel.com>
|
||||
Dominick Meglio <codemstr@ptd.net>
|
||||
Gisle Vanem <gvanem@broadpark.no>
|
||||
Giuseppe Attardi <attardi@di.unipi.it>
|
||||
|
||||
Tor Arntsen <tor@spacetec.no>
|
||||
David Byron <DByron@everdreamcorp.com>
|
||||
|
40
docs/TODO
40
docs/TODO
@@ -25,14 +25,16 @@ TODO
|
||||
[http://curl.haxx.se/dev/no_copy_callbacks.txt]
|
||||
|
||||
* More data sharing. curl_share_* functions already exist and work, and they
|
||||
can be extended to share more.
|
||||
can be extended to share more. For example, enable sharing of the ares
|
||||
channel.
|
||||
|
||||
* Set the SO_KEEPALIVE socket option to make libcurl notice and disconnect
|
||||
very long time idle connections.
|
||||
* Introduce a new error code indicating authentication problems (for proxy
|
||||
CONNECT error 407 for example). This cannot be an error code, we must not
|
||||
return informational stuff as errors, consider a new info returned by
|
||||
curl_easy_getinfo() #845941
|
||||
|
||||
* Go through the code and verify that libcurl deals with big files >2GB and
|
||||
>4GB all over. Bug reports (and source reviews) show that it doesn't
|
||||
currently work.
|
||||
* Option to set the SO_KEEPALIVE socket option to make libcurl notice and
|
||||
disconnect very long time idle connections.
|
||||
|
||||
LIBCURL - multi interface
|
||||
|
||||
@@ -156,8 +158,19 @@ TODO
|
||||
* --data-encode that URL encodes the data before posting
|
||||
http://curl.haxx.se/mail/archive-2003-11/0091.html (Kevin Roth suggested)
|
||||
|
||||
BUILD
|
||||
|
||||
* Consider extending 'roffit' to produce decent ASCII output, and use that
|
||||
instead of (g)nroff when building src/hugehelp.c
|
||||
|
||||
TEST SUITE
|
||||
|
||||
* Make the test servers able to serve multiple running test suites. Like if
|
||||
two users run 'make test' at once.
|
||||
|
||||
* Make runtests.pl capable of changing port numbers for the servers. This was
|
||||
the intention from the start, but in practise it is now hard.
|
||||
|
||||
* If perl wasn't found by the configure script, don't attempt to run the
|
||||
tests but explain something nice why it doesn't.
|
||||
|
||||
@@ -167,11 +180,20 @@ TODO
|
||||
* Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
|
||||
fork()s and it should become even more portable.
|
||||
|
||||
* Introduce a test suite that tests libcurl better and more explicitly.
|
||||
|
||||
NEXT MAJOR RELEASE
|
||||
NEXT MAJOR RELEASE
|
||||
|
||||
* curl_easy_cleanup() returns void, but curl_multi_cleanup() returns a
|
||||
CURLMcode. These should be changed to be the same.
|
||||
|
||||
* curl_formparse() should be removed
|
||||
|
||||
* remove obsolete defines from curl/curl.h
|
||||
|
||||
* remove the following functions from the public API:
|
||||
curl_getenv
|
||||
curl_mprintf (and variations)
|
||||
curl_strequal
|
||||
curl_strnequal
|
||||
|
||||
They will instead become curlx_ - alternatives. That makes the curl app
|
||||
still capable of building with them from source.
|
||||
|
144
docs/curl.1
144
docs/curl.1
@@ -2,7 +2,7 @@
|
||||
.\" nroff -man curl.1
|
||||
.\" Written by Daniel Stenberg
|
||||
.\"
|
||||
.TH curl 1 "2 Dec 2003" "Curl 7.11.0" "Curl Manual"
|
||||
.TH curl 1 "5 Mar 2004" "Curl 7.11.1" "Curl Manual"
|
||||
.SH NAME
|
||||
curl \- transfer a URL
|
||||
.SH SYNOPSIS
|
||||
@@ -165,9 +165,9 @@ that can emulate as if a user has filled in a HTML form and pressed the submit
|
||||
button. Note that the data is sent exactly as specified with no extra
|
||||
processing (with all newlines cut off). The data is expected to be
|
||||
\&"url-encoded". This will cause curl to pass the data to the server using the
|
||||
content-type application/x-www-form-urlencoded. Compare to -F. If this option
|
||||
is used more than once on the same command line, the data pieces specified
|
||||
will be merged together with a separating &-letter. Thus, using '-d
|
||||
content-type application/x-www-form-urlencoded. Compare to \fI-F/--form\fP. If
|
||||
this option is used more than once on the same command line, the data pieces
|
||||
specified will be merged together with a separating &-letter. Thus, using '-d
|
||||
name=daniel -d skill=lousy' would generate a post chunk that looks like
|
||||
\&'name=daniel&skill=lousy'.
|
||||
|
||||
@@ -259,6 +259,11 @@ If the optional password isn't specified, it will be queried for on
|
||||
the terminal. Note that this certificate is the private key and the private
|
||||
certificate concatenated!
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--cert-type <type>"
|
||||
(SSL) Tells curl what certificate type the provided certificate is in. PEM,
|
||||
DER and ENG are recognized types.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--cacert <CA certificate>"
|
||||
(HTTPS) Tells curl to use the specified certificate file to verify the
|
||||
@@ -400,13 +405,23 @@ default. This makes all connections considered "insecure" to fail unless
|
||||
\fI-k/--insecure\fP is used.
|
||||
|
||||
If this option is used twice, the second time will again disable it.
|
||||
.IP "--key <key>"
|
||||
(SSL) Private key file name. Allows you to provide your private key in this
|
||||
separate file.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--key-type <type>"
|
||||
(SSL) Private key file type. Specify which type your \fI--key\fP provided
|
||||
private key is. DER, PEM and ENG are supported.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--krb4 <level>"
|
||||
(FTP) Enable kerberos4 authentication and use. The level must be entered and
|
||||
should be one of 'clear', 'safe', 'confidential' or 'private'. Should you use
|
||||
a level that is not one of these, 'private' will instead be used.
|
||||
|
||||
This option requiures that the library was built with kerberos4 support. This
|
||||
is not very common. Use \fI--version\fP to see if your version supports it.
|
||||
is not very common. Use \fI-V/--version\fP to see if your curl supports it.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-K/--config <config file>"
|
||||
@@ -432,10 +447,13 @@ Specify the maximum transfer rate you want curl to use. This feature is useful
|
||||
if you have a limited pipe and you'd like your transfer not use your entire
|
||||
bandwidth.
|
||||
|
||||
The given speed is measured in bytes/second, unless a suffix is
|
||||
appended. Appending 'k' or 'K' will count the number as kilobytes, 'm' or M'
|
||||
makes it megabytes while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and
|
||||
1G.
|
||||
The given speed is measured in bytes/second, unless a suffix is appended.
|
||||
Appending 'k' or 'K' will count the number as kilobytes, 'm' or M' makes it
|
||||
megabytes while 'g' or 'G' makes it gigabytes. Examples: 200K, 3m and 1G.
|
||||
|
||||
If you are also using the \fI-Y/--speed-limit\fP option, that option will take
|
||||
precedence and might cripple the rate-limiting slightly, to help keeping the
|
||||
speed-limit logic working.
|
||||
|
||||
This option was introduced in curl 7.10.
|
||||
|
||||
@@ -455,11 +473,12 @@ If this option is used twice, the second will again disable list only.
|
||||
.IP "-L/--location"
|
||||
(HTTP/HTTPS) If the server reports that the requested page has a different
|
||||
location (indicated with the header line Location:) this flag will let curl
|
||||
attempt to reattempt the get on the new place. If used together with -i or -I,
|
||||
headers from all requested pages will be shown. If authentication is used,
|
||||
curl will only send its credentials to the initial host, so if a redirect
|
||||
takes curl to a different host, it won't intercept the user+password. See also
|
||||
\fI--location-trusted\fP on how to change this.
|
||||
attempt to reattempt the get on the new place. If used together with
|
||||
\fI-i/--include\fP or \fI-I/--head\fP, headers from all requested pages will
|
||||
be shown. If authentication is used, curl will only send its credentials to
|
||||
the initial host, so if a redirect takes curl to a different host, it won't
|
||||
intercept the user+password. See also \fI--location-trusted\fP on how to
|
||||
change this.
|
||||
|
||||
If this option is used twice, the second will again disable location following.
|
||||
.IP "--location-trusted"
|
||||
@@ -506,6 +525,9 @@ to ftp to the machine host.domain.com with user name \&'myself' and password
|
||||
.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"
|
||||
Very similar to \fI--netrc\fP, but this option makes the .netrc usage
|
||||
\fBoptional\fP and not mandatory as the \fI--netrc\fP does.
|
||||
.IP "--negotiate"
|
||||
(HTTP) Enables GSS-Negotiate authentication. The GSS-Negotiate method was
|
||||
designed by Microsoft and is used in their web aplications. It is primarily
|
||||
@@ -514,7 +536,7 @@ with another authentication methods. For more information see IETF draft
|
||||
draft-brezak-spnego-http-04.txt. (Added in 7.10.6)
|
||||
|
||||
This option requiures that the library was built with GSSAPI support. This is
|
||||
not very common. Use \fI--version\fP to see if your version supports
|
||||
not very common. Use \fI-V/--version\fP to see if your version supports
|
||||
GSS-Negotiate.
|
||||
|
||||
If this option is used several times, the following occurrences make no
|
||||
@@ -534,8 +556,11 @@ on their efforts. This kind of behavior should not be endorsed, you should
|
||||
encourage everyone who uses NTLM to switch to a public and documented
|
||||
authentication method instead. Such as Digest. (Added in 7.10.6)
|
||||
|
||||
This option requiures that the library was built with SSL support. Use \fIcurl
|
||||
--version\fP to see if your version supports NTLM.
|
||||
If you want to enable NTLM for your proxy authentication, then use
|
||||
\fI--proxy-ntlm\fP.
|
||||
|
||||
This option requiures that the library was built with SSL support. Use
|
||||
\fI-V/--version\fP to see if your curl supports NTLM.
|
||||
|
||||
If this option is used several times, the following occurrences make no
|
||||
difference.
|
||||
@@ -553,18 +578,28 @@ or use several variables like:
|
||||
|
||||
You may use this option as many times as you have number of URLs.
|
||||
|
||||
See also the --create-dirs option to create the local directories dynamically.
|
||||
See also the \fI--create-dirs\fP option to create the local directories
|
||||
dynamically.
|
||||
.IP "-O/--remote-name"
|
||||
Write output to a local file named like the remote file we get. (Only the file
|
||||
part of the remote file is used, the path is cut off.)
|
||||
|
||||
You may use this option as many times as you have number of URLs.
|
||||
.IP "--pass <phrase>"
|
||||
(SSL) Pass phrase for the private key
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--proxy-ntlm"
|
||||
Tells curl to use NTLM authentication when communicating with the given
|
||||
proxy. Use \fI--ntlm\fP for enabling NTLM with a remote host.
|
||||
|
||||
If this option is used twice, the second will again disable proxy NTLM.
|
||||
.IP "-p/--proxytunnel"
|
||||
When an HTTP proxy is used, this option will cause non-HTTP 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 CONNECT request
|
||||
and requires that the proxy allows direct connect to the remote port number
|
||||
curl wants to tunnel through to.
|
||||
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
|
||||
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
|
||||
remote port number curl wants to tunnel through to.
|
||||
|
||||
If this option is used twice, the second will again disable proxy tunnel.
|
||||
.IP "-P/--ftp-port <address>"
|
||||
@@ -585,7 +620,8 @@ i.e "my.host.domain" to specify machine
|
||||
.RE
|
||||
|
||||
If this option is used several times, the last one will be used. Disable the
|
||||
use of PORT with \fI--ftp-pasv\fP.
|
||||
use of PORT with \fI--ftp-pasv\fP. Disable the attempt to use the EPRT command
|
||||
instead of PORT by using \fI--disable-eprt\fP. EPRT is really PORT++.
|
||||
.IP "-q"
|
||||
If used as the first parameter on the command line, the \fI$HOME/.curlrc\fP
|
||||
file will not be read and used as a config file.
|
||||
@@ -657,6 +693,14 @@ If this option is used twice, the second will again disable mute.
|
||||
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 "--socks <host[:port]>"
|
||||
Use the specified SOCKS5 proxy. If the port number is not specified, it is
|
||||
assumed at port 1080. (Option added in 7.11.1)
|
||||
|
||||
This option overrides any previous use of \fI-x/--proxy\fP, as they are
|
||||
mutually exclusive.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--stderr <file>"
|
||||
Redirect all writes to stderr to the specified file instead. If the file name
|
||||
is a plain '-', it is instead written to stdout. This option has no point when
|
||||
@@ -706,24 +750,18 @@ Enables a full trace dump of all incoming and outgoing data, including
|
||||
descriptive information, to the given output file. Use "-" as filename to have
|
||||
the output sent to stdout.
|
||||
|
||||
This is very similar to --trace, but leaves out the hex part and only shows
|
||||
the ASCII part of the dump. It makes smaller output that might be easier to
|
||||
read for untrained humans.
|
||||
This is very similar to \fI--trace\fP, but leaves out the hex part and only
|
||||
shows the ASCII part of the dump. It makes smaller output that might be easier
|
||||
to read for untrained humans.
|
||||
|
||||
If this option is used several times, the last one will be used. (Added in
|
||||
7.9.7)
|
||||
.IP "-u/--user <user:password>"
|
||||
Specify user and password to use when fetching. Read the MANUAL for detailed
|
||||
examples of how to use this. If no password is specified, curl will ask for it
|
||||
interactively.
|
||||
|
||||
You can also use the --digest option to enable Digest authentication when
|
||||
communicating with HTTP 1.1 servers.
|
||||
Specify user and password to use for server authentication.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-U/--proxy-user <user:password>"
|
||||
Specify user and password to use for Proxy authentication. If no
|
||||
password is specified, curl will ask for it interactively.
|
||||
Specify user and password to use for proxy authentication.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--url <URL>"
|
||||
@@ -731,7 +769,7 @@ Specify a URL to fetch. This option is mostly handy when you want to specify
|
||||
URL(s) in a config file.
|
||||
|
||||
This option may be used any number of times. To control where this URL is
|
||||
written, use the \fI-o\fP or the \fI-O\fP options.
|
||||
written, use the \fI-o/--output\fP or the \fI-O/--remote-name\fP options.
|
||||
.IP "-v/--verbose"
|
||||
Makes the fetching more verbose/talkative. Mostly usable for debugging. Lines
|
||||
starting with '>' means data sent by curl, '<' means data received by curl
|
||||
@@ -755,8 +793,30 @@ The second line (starts with "Protocols:") shows all protocols that libcurl
|
||||
reports to support.
|
||||
|
||||
The third line (starts with "Features:") shows specific features libcurl
|
||||
reports to offer.
|
||||
|
||||
reports to offer. Available features include:
|
||||
.RS
|
||||
.IP "IPv6"
|
||||
You can use IPv6 with this.
|
||||
.IP "krb4"
|
||||
Krb4 for ftp is supported.
|
||||
.IP "SSL"
|
||||
HTTPS and FTPS are supported.
|
||||
.IP "libz"
|
||||
Automatic decompression of compressed files over HTTP is supported.
|
||||
.IP "NTLM"
|
||||
NTLM authenticaion is supported.
|
||||
.IP "GSS-Negotiate"
|
||||
Negotiate authenticaion is supported.
|
||||
.IP "Debug"
|
||||
This curl uses a libcurl built with Debug. This enables more error-tracking
|
||||
and memory debugging etc. For curl-developers only!
|
||||
.IP "AsynchDNS"
|
||||
This curl uses asynchronous name resolves.
|
||||
.IP "SPNEGO"
|
||||
SPNEGO Negotiate authenticaion is supported.
|
||||
.IP "Largefile"
|
||||
This curl supports transfers of large files, files larger than 2GB.
|
||||
.RE
|
||||
.IP "-w/--write-out <format>"
|
||||
Defines what to display after a completed and successful operation. The format
|
||||
is a string that may contain plain text mixed with any number of variables. The
|
||||
@@ -886,9 +946,9 @@ than the specified date/time.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-Z/--max-redirs <num>"
|
||||
Set maximum number of redirection-followings allowed. If -L/--location is
|
||||
used, this option can be used to prevent curl from following redirections "in
|
||||
absurdum".
|
||||
Set maximum number of redirection-followings allowed. If \fI-L/--location\fP
|
||||
is used, this option can be used to prevent curl from following redirections
|
||||
\&"in absurdum".
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-0/--http1.0"
|
||||
@@ -986,7 +1046,7 @@ FTP quote error. A quote command returned error from the server.
|
||||
.IP 22
|
||||
HTTP page not retrieved. The requested url was not found or returned another
|
||||
error with the HTTP error code being 400 or above. This return code only
|
||||
appears if --fail is used.
|
||||
appears if \fI-f/--fail\fP is used.
|
||||
.IP 23
|
||||
Write error. Curl couldn't write data to a local filesystem or similar.
|
||||
.IP 24
|
||||
|
@@ -1,8 +1,8 @@
|
||||
/*****************************************************************************
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* _ _ ____ _
|
||||
* Project ___| | | | _ \| |
|
||||
* / __| | | | |_) | |
|
||||
* | (__| |_| | _ <| |___
|
||||
* \___|\___/|_| \_\_____|
|
||||
*
|
||||
* $Id$
|
||||
@@ -17,10 +17,13 @@
|
||||
#include <curl/types.h> /* new for v7 */
|
||||
#include <curl/easy.h> /* new for v7 */
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
GtkWidget *Bar;
|
||||
|
||||
size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
|
||||
{
|
||||
return fwrite(ptr, size, nmemb, stream);
|
||||
}
|
||||
|
||||
size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
|
||||
{
|
||||
return fread(ptr, size, nmemb, stream);
|
||||
@@ -45,25 +48,27 @@ void *curl_thread(void *ptr)
|
||||
CURLcode res;
|
||||
FILE *outfile;
|
||||
gchar *url = ptr;
|
||||
|
||||
|
||||
curl = curl_easy_init();
|
||||
if(curl)
|
||||
{
|
||||
outfile = fopen("/tmp/test.curl", "w");
|
||||
outfile = fopen("test.curl", "w");
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(curl, CURLOPT_FILE, outfile);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func);
|
||||
curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func);
|
||||
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);
|
||||
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);
|
||||
curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar);
|
||||
|
||||
|
||||
res = curl_easy_perform(curl);
|
||||
|
||||
fclose(outfile);
|
||||
/* always cleanup */
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -71,11 +76,10 @@ int main(int argc, char **argv)
|
||||
{
|
||||
GtkWidget *Window, *Frame, *Frame2;
|
||||
GtkAdjustment *adj;
|
||||
pthread_t curl_tid;
|
||||
|
||||
/* Init thread */
|
||||
g_thread_init(NULL);
|
||||
|
||||
|
||||
gtk_init(&argc, &argv);
|
||||
Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
Frame = gtk_frame_new(NULL);
|
||||
@@ -90,8 +94,10 @@ int main(int argc, char **argv)
|
||||
gtk_container_add(GTK_CONTAINER(Frame2), Bar);
|
||||
gtk_widget_show_all(Window);
|
||||
|
||||
pthread_create(&curl_tid, NULL, curl_thread, argv[1]);
|
||||
|
||||
if (!g_thread_create(&curl_thread, argv[1], FALSE, NULL) != 0)
|
||||
g_warning("can't create the thread");
|
||||
|
||||
|
||||
gdk_threads_enter();
|
||||
gtk_main();
|
||||
gdk_threads_leave();
|
||||
|
@@ -222,7 +222,14 @@ Multi-threading issues
|
||||
handlers. Signals are needed for a SIGPIPE handler, and the alarm() syscall
|
||||
is used to catch timeouts (mostly during DNS lookup).
|
||||
|
||||
So when using multiple threads you should first ignore SIGPIPE in your main
|
||||
If you are accessing HTTPS or FTPS URLs in a multi-threaded manner, you are
|
||||
then of course using OpenSSL multi-threaded and it has itself a few
|
||||
requirements on this. Basicly, you need to provide one or two functions to
|
||||
allow it to function properly. For all details, see this:
|
||||
|
||||
http://www.openssl.org/docs/crypto/threads.html#DESCRIPTION
|
||||
|
||||
When using multiple threads you should first ignore SIGPIPE in your main
|
||||
thread and set the CURLOPT_NOSIGNAL option to TRUE for all handles.
|
||||
|
||||
Everything will work fine except that timeouts are not honored during the DNS
|
||||
|
@@ -122,7 +122,7 @@ CLEANFILES = $(HTMLPAGES) $(PDFPAGES)
|
||||
|
||||
EXTRA_DIST = $(man_MANS) $(HTMLPAGES) index.html $(PDFPAGES)
|
||||
|
||||
MAN2HTML= roffit < $< >$@
|
||||
MAN2HTML= roffit --mandir=. < $< >$@
|
||||
|
||||
SUFFIXES = .3 .html
|
||||
|
||||
|
@@ -12,8 +12,8 @@ curl_easy_cleanup - End a libcurl easy session
|
||||
|
||||
.SH DESCRIPTION
|
||||
This function must be the last function to call for an easy session. It is the
|
||||
opposite of the \fIcurl_easy_init\fP function and must be called with the same
|
||||
\fIhandle\fP as input that the curl_easy_init call returned.
|
||||
opposite of the \fIcurl_easy_init(3)\fP function and must be called with the
|
||||
same \fIhandle\fP as input that the curl_easy_init call returned.
|
||||
|
||||
This will effectively close all connections this handle has used and possibly
|
||||
has kept open until now. Don't call this function if you intend to transfer
|
||||
|
@@ -14,20 +14,18 @@ curl_easy_duphandle - Clone a libcurl session handle
|
||||
This function will return a new curl handle, a duplicate, using all the
|
||||
options previously set in the input curl \fIhandle\fP. Both handles can
|
||||
subsequently be used independently and they must both be freed with
|
||||
\fIcurl_easy_cleanup()\fP.
|
||||
\fIcurl_easy_cleanup(3)\fP.
|
||||
|
||||
All strings that the input handle has been told to point to (as opposed to
|
||||
copy) with previous calls to \fIcurl_easy_setopt\fP using char * inputs, will
|
||||
be pointed to by the new handle as well. You must therefore make sure to keep
|
||||
the data around until both handles have been cleaned up.
|
||||
copy) with previous calls to \fIcurl_easy_setopt(3)\fP using char * inputs,
|
||||
will be pointed to by the new handle as well. You must therefore make sure to
|
||||
keep the data around until both handles have been cleaned up.
|
||||
|
||||
The new handle will \fBnot\fP inherit any state information, no connections,
|
||||
no SSL sessions and no cookies.
|
||||
|
||||
\fBNote\fP that even in multi-threaded programs, this function must be called
|
||||
in a synchronous way, the input handle may not be in use when cloned.
|
||||
|
||||
This function was added in libcurl 7.9.
|
||||
.SH RETURN VALUE
|
||||
If this function returns NULL, something went wrong and no valid handle was
|
||||
returned.
|
||||
|
@@ -85,25 +85,25 @@ than one request if FOLLOWLOCATION is true.
|
||||
.IP CURLINFO_SSL_VERIFYRESULT
|
||||
Pass a pointer to a long to receive the result of the certification
|
||||
verification that was requested (using the CURLOPT_SSL_VERIFYPEER option to
|
||||
curl_easy_setopt). (Added in 7.4.2)
|
||||
\fIcurl_easy_setopt(3)\fP).
|
||||
.IP CURLINFO_CONTENT_LENGTH_DOWNLOAD
|
||||
Pass a pointer to a double to receive the content-length of the download. This
|
||||
is the value read from the Content-Length: field. (Added in 7.6.1)
|
||||
is the value read from the Content-Length: field.
|
||||
.IP CURLINFO_CONTENT_LENGTH_UPLOAD
|
||||
Pass a pointer to a double to receive the specified size of the upload.
|
||||
.IP CURLINFO_CONTENT_TYPE
|
||||
Pass a pointer to a 'char *' to receive the content-type of the downloaded
|
||||
object. This is the value read from the Content-Type: field. If you get NULL,
|
||||
it means that the server didn't send a valid Content-Type header or that the
|
||||
protocol used doesn't support this. (Added in 7.9.4)
|
||||
protocol used doesn't support this.
|
||||
.IP CURLINFO_PRIVATE
|
||||
Pass a pointer to a 'char *' to receive the pointer to the private data
|
||||
associated with the curl handle (set with the CURLOPT_PRIVATE option to
|
||||
curl_easy_setopt). (Added in 7.10.3)
|
||||
\fIcurl_easy_setopt(3)\fP). (Added in 7.10.3)
|
||||
.IP CURLINFO_HTTPAUTH_AVAIL
|
||||
Pass a pointer to a long to receive a bitmask indicating the authentication
|
||||
method(s) available. The meaning of the bits is explained in the
|
||||
CURLOPT_HTTPAUTH option for curl_easy_setopt. (Added in 7.10.8)
|
||||
CURLOPT_HTTPAUTH option for \fIcurl_easy_setopt(3)\fP. (Added in 7.10.8)
|
||||
.IP CURLINFO_PROXYAUTH_AVAIL
|
||||
Pass a pointer to a long to receive a bitmask indicating the authentication
|
||||
method(s) available for your proxy athentication. (Added in 7.10.8)
|
||||
@@ -112,5 +112,3 @@ If the operation was successful, CURLE_OK is returned. Otherwise an
|
||||
appropriate error code will be returned.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_easy_setopt "(3)"
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
|
@@ -13,8 +13,8 @@ curl_easy_init - Start a libcurl easy session
|
||||
.SH DESCRIPTION
|
||||
This function must be the first function to call, and it returns a CURL easy
|
||||
handle that you must use as input to other easy-functions. curl_easy_init
|
||||
intializes curl and this call MUST have a corresponding call to
|
||||
\fIcurl_easy_cleanup\fP when the operation is complete.
|
||||
intializes curl and this call \fBMUST\fP have a corresponding call to
|
||||
\fIcurl_easy_cleanup(3)\fP when the operation is complete.
|
||||
|
||||
.SH RETURN VALUE
|
||||
If this function returns NULL, something went wrong and you cannot use the
|
||||
|
@@ -8,31 +8,26 @@ curl_easy_perform - Perform a file transfer
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
.BI "CURLcode curl_easy_perform(CURL *" handle ");
|
||||
.BI "CURLcode curl_easy_perform(CURL *" handle ");"
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
This function is called after the init and all the curl_easy_setopt() calls
|
||||
are made, and will perform the transfer as described in the options.
|
||||
It must be called with the same
|
||||
This function is called after the init and all the \fIcurl_easy_setopt(3)\fP
|
||||
calls are made, and will perform the transfer as described in the options. It
|
||||
must be called with the same
|
||||
.I handle
|
||||
as input as the curl_easy_init call returned.
|
||||
|
||||
libcurl version 7.7 or later (for older versions see below): You can do any
|
||||
amount of calls to curl_easy_perform() while using the same handle. If you
|
||||
intend to transfer more than one file, you are even encouraged to do
|
||||
so. libcurl will then attempt to re-use the same connection for the following
|
||||
transfers, thus making the operations faster, less CPU intense and using less
|
||||
network resources. Just note that you will have to use
|
||||
.I curl_easy_setopt
|
||||
between the invokes to set options for the following curl_easy_perform.
|
||||
You can do any amount of calls to \fIcurl_easy_perform(3)\fP while using the
|
||||
same handle. If you intend to transfer more than one file, you are even
|
||||
encouraged to do so. libcurl will then attempt to re-use the same connection
|
||||
for the following transfers, thus making the operations faster, less CPU
|
||||
intense and using less network resources. Just note that you will have to use
|
||||
\fIcurl_easy_setopt(3)\fP between the invokes to set options for the following
|
||||
curl_easy_perform.
|
||||
|
||||
You must never call this function simultaneously from two places using the
|
||||
same handle. Let the function return first before invoking it another time. If
|
||||
you want parallel transfers, you must use several curl handles.
|
||||
|
||||
Before libcurl version 7.7: You are only allowed to call this function once
|
||||
using the same handle. If you want to do repeated calls, you must call
|
||||
curl_easy_cleanup and curl_easy_init again first.
|
||||
.SH RETURN VALUE
|
||||
0 means everything was ok, non-zero means an error occurred as
|
||||
.I <curl/curl.h>
|
||||
@@ -42,5 +37,4 @@ there will be a readable error message in the error buffer when non-zero is
|
||||
returned.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_easy_init "(3), " curl_easy_setopt "(3), "
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
|
||||
|
@@ -21,7 +21,7 @@
|
||||
.\" * $Id$
|
||||
.\" **************************************************************************
|
||||
.\"
|
||||
.TH curl_easy_setopt 3 "22 Jan 2004" "libcurl 7.11.0" "libcurl Manual"
|
||||
.TH curl_easy_setopt 3 "12 Mar 2004" "libcurl 7.11.1" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_easy_setopt - set options for a curl easy handle
|
||||
.SH SYNOPSIS
|
||||
@@ -46,8 +46,8 @@ you must change them between the transfers.
|
||||
\fBNOTE:\fP strings passed to libcurl as 'char *' arguments, will not be
|
||||
copied by the library. Instead you should keep them available until libcurl no
|
||||
longer needs them. Failing to do so will cause very odd behavior or even
|
||||
crashes. libcurl will need them until you call curl_easy_cleanup() or you set
|
||||
the same option again to use a different pointer.
|
||||
crashes. libcurl will need them until you call \fIcurl_easy_cleanup(3)\fP or
|
||||
you set the same option again to use a different pointer.
|
||||
|
||||
The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
|
||||
\fIcurl_easy_duphandle(3)\fP call.
|
||||
@@ -56,7 +56,7 @@ The \fIhandle\fP is the return code from a \fIcurl_easy_init(3)\fP or
|
||||
Set the parameter to non-zero to get the library to display a lot of verbose
|
||||
information about its operations. Very useful for libcurl and/or protocol
|
||||
debugging and understanding. The verbose information will be sent to stderr,
|
||||
or the stream set with CURLOPT_STDERR.
|
||||
or the stream set with \fICURLOPT_STDERR\fP.
|
||||
|
||||
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
|
||||
@@ -232,7 +232,14 @@ The actual URL to deal with. The parameter should be a char * to a zero
|
||||
terminated string. The string must remain present until curl no longer needs
|
||||
it, as it doesn't copy the string.
|
||||
|
||||
\fBNOTE:\fP this option is (the only one) required to be set before
|
||||
If the given URL lacks the protocol part ("http://" or "ftp://" etc), it will
|
||||
attempt to guess which protocol to use based on the given host name. If the
|
||||
given protocol of the set URL is not supported, libcurl will return on error
|
||||
(\fICURLE_UNSUPPORTED_PROTOCOL\fP) when you call \fIcurl_easy_perform(3)\fP or
|
||||
\fIcurl_multi_perform(3)\fP. Use \fIcurl_version_info(3)\fP for detailed info
|
||||
on which protocols that are supported.
|
||||
|
||||
\fBNOTE:\fP \fICURLOPT_URL\fP is the only option that must be set before
|
||||
\fIcurl_easy_perform(3)\fP is called.
|
||||
.IP CURLOPT_PROXY
|
||||
Set HTTP proxy to use. The parameter should be a char * to a zero terminated
|
||||
@@ -271,16 +278,23 @@ name.
|
||||
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
|
||||
caching, or set to -1 to make the cached entries remain forever. By default,
|
||||
libcurl caches info for 60 seconds.
|
||||
libcurl caches this info for 60 seconds.
|
||||
.IP CURLOPT_DNS_USE_GLOBAL_CACHE
|
||||
Pass a long. If the value is non-zero, it tells curl to use a global DNS cache
|
||||
that will survive between easy handle creations and deletions. This is not
|
||||
thread-safe and this will use a global varible.
|
||||
|
||||
\fBWARNING:\fP this option is considered obsolete. Stop using it. Switch over
|
||||
to using the share interface instead! See \fICURLOPT_SHARE\fP and
|
||||
\fIcurl_share_init(3)\fP.
|
||||
.IP CURLOPT_BUFFERSIZE
|
||||
Pass a long specifying your prefered size for the receive buffer in libcurl.
|
||||
The main point of this would be that the write callback gets called more often
|
||||
and with smaller chunks. This is just treated as a request, not an order. You
|
||||
cannot be guaranteed to actually get the given size. (Added in 7.10)
|
||||
.IP CURLOPT_PORT
|
||||
Pass a long specifying what remote port number to connect to, instead of the
|
||||
one specified in the URL or the default port for the used protocol.
|
||||
.SH NAMES and PASSWORDS OPTIONS (Authentication)
|
||||
.IP CURLOPT_NETRC
|
||||
This parameter controls the preference of libcurl between using user names and
|
||||
@@ -319,8 +333,8 @@ user.
|
||||
.IP CURLOPT_NETRC_FILE
|
||||
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
|
||||
option is omitted, and CURLOPT_NETRC is set, libcurl will attempt to find the
|
||||
a .netrc file in the current user's home directory. (Added in 7.10.9)
|
||||
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)
|
||||
.IP CURLOPT_USERPWD
|
||||
Pass a char * as parameter, which should be [user name]:[password] to use for
|
||||
the connection. Use \fICURLOPT_HTTPAUTH\fP to decide authentication method.
|
||||
@@ -389,6 +403,10 @@ round-trip. Set the actual name and password with the
|
||||
together the bits listed above for the \fICURLOPT_HTTPAUTH\fP option. As of
|
||||
this writing, only Basic and NTLM work. (Added in 7.10.7)
|
||||
.SH HTTP OPTIONS
|
||||
.IP CURLOPT_AUTOREFERER
|
||||
Pass a non-zero parameter to enable this. When enabled, libcurl will
|
||||
automaticly set the Referer: field in requests where it follows a Location:
|
||||
redirect.
|
||||
.IP CURLOPT_ENCODING
|
||||
Sets the contents of the Accept-Encoding: header sent in an HTTP
|
||||
request, and enables decoding of a response when a Content-Encoding:
|
||||
@@ -446,6 +464,11 @@ If you want to post data to the server without letting libcurl do a strlen()
|
||||
to measure the data size, this option must be used. When this option is used
|
||||
you can post fully binary data, which otherwise is likely to fail. If this
|
||||
size is set to zero, the library will use strlen() to get the size.
|
||||
.IP CURLOPT_POSTFIELDSIZE_LARGE
|
||||
Pass a curl_off_t as parameter. Use this to set the size of the
|
||||
\fICURLOPT_POSTFIELDS\fP data to prevent libcurl from doing strlen() on the
|
||||
data to figure out the size. This is the large file version of the
|
||||
\fICURLOPT_POSTFIELDSIZE\fP option. (Added in 7.11.1)
|
||||
.IP CURLOPT_HTTPPOST
|
||||
Tells libcurl you want a multipart/formdata HTTP POST to be made and you
|
||||
instruct what data to pass on to the server. Pass a pointer to a linked list
|
||||
@@ -530,18 +553,17 @@ cookies for this session, so if you for example follow a location it will make
|
||||
matching cookies get sent accordingly.
|
||||
|
||||
\fBNOTE:\fP If the cookie jar file can't be created or written to (when the
|
||||
curl_easy_cleanup() is called), libcurl will not and cannot report an 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 about this
|
||||
possibly lethal situation.
|
||||
.IP CURLOPT_TIMECONDITION
|
||||
Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time
|
||||
value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
|
||||
or \fICURL_TIMECOND_IFUNMODSINCE\fP. This is a HTTP-only feature.
|
||||
.IP CURLOPT_TIMEVALUE
|
||||
Pass a long as parameter. This should be the time in seconds since 1 jan 1970,
|
||||
and the time will be used in a condition as specified with
|
||||
\fICURLOPT_TIMECONDITION\fP.
|
||||
\fIcurl_easy_cleanup(3)\fP is called), libcurl will not and cannot report an
|
||||
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
|
||||
about this possibly lethal situation.
|
||||
.IP CURLOPT_COOKIESESSION
|
||||
Pass a long set to non-zero to mark this as a new cookie "session". It will
|
||||
force libcurl to ignore all cookies it is about to load that are "session
|
||||
cookies" from the previous session. By default, libcurl always stores and
|
||||
loads all cookies, independent if they are session cookies are not. Session
|
||||
cookies are cookies without expiry date and they are meant to be alive and
|
||||
existing for this "session" only.
|
||||
.IP CURLOPT_HTTPGET
|
||||
Pass a long. If the long is non-zero, this forces the HTTP request to get back
|
||||
to GET. Only really usable if POST, PUT or a custom request have been used
|
||||
@@ -624,6 +646,19 @@ curl is waiting for a response, this value overrides \fICURLOPT_TIMEOUT\fP. It
|
||||
is recommended that if used in conjunction with \fICURLOPT_TIMEOUT\fP, you set
|
||||
\fICURLOPT_FTP_RESPONSE_TIMEOUT\fP to a value smaller than
|
||||
\fICURLOPT_TIMEOUT\fP. (Added in 7.10.8)
|
||||
.IP CURLOPT_FTP_SSL
|
||||
Pass a long using one of the values from below, to make libcurl use your
|
||||
desired level of SSL for the ftp transfer. (Added in 7.11.0)
|
||||
.RS
|
||||
.IP CURLFTPSSL_NONE
|
||||
Don't attempt to use SSL.
|
||||
.IP CURLFTPSSL_TRY
|
||||
Try using SSL, proceed as normal otherwise.
|
||||
.IP CURLFTPSSL_CONTROL
|
||||
Require SSL for the control connection or fail with \fICURLE_FTP_SSL_FAILED\fP.
|
||||
.IP CURLFTPSSL_ALL
|
||||
Require SSL for all communication or fail with \fICURLE_FTP_SSL_FAILED\fP.
|
||||
.RE
|
||||
.SH PROTOCOL OPTIONS
|
||||
.IP CURLOPT_TRANSFERTEXT
|
||||
A non-zero parameter tells the library to use ASCII mode for ftp transfers,
|
||||
@@ -645,9 +680,8 @@ techniques).
|
||||
Pass a long as parameter. It contains the offset in number of bytes that you
|
||||
want the transfer to start from.
|
||||
.IP CURLOPT_RESUME_FROM_LARGE
|
||||
Pass an off_t as parameter. It contains the offset in number of bytes that you
|
||||
want the transfer to start from. This does not yet support large files on
|
||||
Windows. (Added in 7.11.0)
|
||||
Pass an curl_off_t as parameter. It contains the offset in number of bytes
|
||||
that you want the transfer to start from. (Added in 7.11.0)
|
||||
.IP CURLOPT_CUSTOMREQUEST
|
||||
Pass a pointer to a zero terminated string as parameter. It will be user
|
||||
instead of GET or HEAD when doing a HTTP request, or instead of LIST or NLST
|
||||
@@ -679,8 +713,7 @@ as a long. See also \fICURLOPT_INFILESIZE_LARGE\fP.
|
||||
.IP CURLOPT_INFILESIZE_LARGE
|
||||
When uploading a file to a remote site, this option should be used to tell
|
||||
libcurl what the expected size of the infile is. This value should be passed
|
||||
as an off_t. This does not yet support large files on Windows. (Added in
|
||||
7.11.0)
|
||||
as a curl_off_t. (Added in 7.11.0)
|
||||
.IP CURLOPT_UPLOAD
|
||||
A non-zero parameter tells the library to prepare for an upload. The
|
||||
\fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE_LARGE\fP are also interesting
|
||||
@@ -694,14 +727,26 @@ NOTE: The file size is not always known prior to download, and for such files
|
||||
this option has no effect even if the file transfer ends up being larger than
|
||||
this given limit. This concerns both FTP and HTTP transfers.
|
||||
.IP CURLOPT_MAXFILESIZE_LARGE
|
||||
Pass an off_t as parameter. This allows you to 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 CURLE_FILESIZE_EXCEEDED will be returned.
|
||||
This does not yet support large files on Windows. (Added in 7.11.0)
|
||||
Pass a curl_off_t as parameter. This allows you to 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 \fICURLE_FILESIZE_EXCEEDED\fP will be
|
||||
returned. (Added in 7.11.0)
|
||||
|
||||
NOTE: The file size is not always known prior to download, and for such files
|
||||
this option has no effect even if the file transfer ends up being larger than
|
||||
this given limit. This concerns both FTP and HTTP transfers.
|
||||
.IP CURLOPT_TIMECONDITION
|
||||
Pass a long as parameter. This defines how the \fICURLOPT_TIMEVALUE\fP time
|
||||
value is treated. You can set this parameter to \fICURL_TIMECOND_IFMODSINCE\fP
|
||||
or \fICURL_TIMECOND_IFUNMODSINCE\fP. This feature applies to HTTP and FTP.
|
||||
|
||||
NOTE: The last modification time of a file is not always known and in such
|
||||
instances this feature will have no effect even if the given time condition
|
||||
would have not been met.
|
||||
.IP CURLOPT_TIMEVALUE
|
||||
Pass a long as parameter. This should be the time in seconds since 1 jan 1970,
|
||||
and the time will be used in a condition as specified with
|
||||
\fICURLOPT_TIMECONDITION\fP.
|
||||
.SH CONNECTION OPTIONS
|
||||
.IP CURLOPT_TIMEOUT
|
||||
Pass a long as parameter containing the maximum time in seconds that you allow
|
||||
@@ -806,18 +851,18 @@ the format of your private key. Supported formats are "PEM", "DER" and "ENG".
|
||||
|
||||
\fBNOTE:\fPThe format "ENG" enables you to load the private key from a crypto
|
||||
engine. in this case \fICURLOPT_SSLKEY\fP is used as an identifier passed to
|
||||
the engine. You have to set the crypto engine with \fICURLOPT_SSL_ENGINE\fP.
|
||||
the engine. You have to set the crypto engine with \fICURLOPT_SSLENGINE\fP.
|
||||
.IP CURLOPT_SSLKEYPASSWD
|
||||
Pass a pointer to a zero terminated string as parameter. It will be used as
|
||||
the password required to use the \fICURLOPT_SSLKEY\fP private key.
|
||||
.IP CURLOPT_SSL_ENGINE
|
||||
.IP CURLOPT_SSLENGINE
|
||||
Pass a pointer to a zero terminated string as parameter. It will be used as
|
||||
the identifier for the crypto engine you want to use for your private
|
||||
key.
|
||||
|
||||
\fBNOTE:\fPIf the crypto device cannot be loaded,
|
||||
\fICURLE_SSL_ENGINE_NOTFOUND\fP is returned.
|
||||
.IP CURLOPT_SSL_ENGINEDEFAULT
|
||||
.IP CURLOPT_SSLENGINE_DEFAULT
|
||||
Sets the actual crypto engine as the default for (asymetric) crypto
|
||||
operations.
|
||||
|
||||
@@ -878,11 +923,24 @@ support only works for FTP.
|
||||
.IP CURLOPT_PRIVATE
|
||||
Pass a char * as parameter, pointing to data that should be associated with
|
||||
this curl handle. The pointer can subsequently be retrieved using
|
||||
\fIcurl_easy_getinfo\fP with the CURLINFO_PRIVATE option. libcurl itself does
|
||||
nothing with this data. (Added in 7.10.3)
|
||||
\fIcurl_easy_getinfo(3)\fP with the CURLINFO_PRIVATE option. libcurl itself
|
||||
does nothing with this data. (Added in 7.10.3)
|
||||
.IP CURLOPT_SHARE
|
||||
Pass a share handle as a parameter. The share handle must have been created by
|
||||
a previous call to \fIcurl_share_init(3)\fP. Setting this option, will make
|
||||
this curl handle use the data from the shared handle instead of keeping the
|
||||
data to itself. This enables several curl handles to share data. If the curl
|
||||
handles are used simultaneously, you \fBMUST\fP use the locking methods in the
|
||||
share handle. See \fIcurl_share_setopt(3)\fP for details.
|
||||
.SH TELNET OPTIONS
|
||||
.IP CURLOPT_TELNETOPTIONS
|
||||
Provide a pointer to a curl_slist with variables to pass to the telnet
|
||||
negotiations. The variables should be in the format <option=value>. libcurl
|
||||
supports the options 'TTYPE', 'XDISPLOC' and 'NEW_ENV'. See the TELNET
|
||||
standard for details.
|
||||
.SH RETURN VALUE
|
||||
CURLE_OK (zero) means that the option was set properly, non-zero means an
|
||||
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
|
||||
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors(3)\fP
|
||||
man page for the full list with descriptions.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_easy_init "(3), " curl_easy_cleanup "(3), "
|
||||
|
@@ -23,4 +23,4 @@ You must curl_free() the returned string when you're done with it.
|
||||
.SH RETURN VALUE
|
||||
A pointer to a zero terminated string or NULL if it failed.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_unescape(), curl_free(), RFC 2396
|
||||
.BR curl_unescape(3), curl_free(3), RFC 2396
|
||||
|
@@ -8,8 +8,8 @@ curl_formadd - add a section to a multipart/formdata HTTP POST
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
.BI "CURLFORMcode curl_formadd(struct HttpPost ** " firstitem,
|
||||
.BI "struct HttpPost ** " lastitem, " ...);"
|
||||
.BI "CURLFORMcode curl_formadd(struct curl_httppost ** " firstitem,
|
||||
.BI "struct curl_httppost ** " lastitem, " ...);"
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
curl_formadd() is used to append sections when building a multipart/formdata
|
||||
@@ -92,8 +92,8 @@ name field in the content header.
|
||||
.B CURLFORM_BUFFERPTR
|
||||
followed by a pointer to a data area, tells libcurl the address of the buffer
|
||||
containing data to upload (as indicated with \fICURLFORM_BUFFER\fP). The
|
||||
buffer containing this data must not be freed until after curl_easy_cleanup is
|
||||
called.
|
||||
buffer containing this data must not be freed until after
|
||||
\fIcurl_easy_cleanup(3)\fP is called.
|
||||
|
||||
.B CURLFORM_BUFFERLENGTH
|
||||
followed by a long with the size of the \fICURLFORM_BUFFERPTR\fP data area,
|
||||
@@ -114,9 +114,9 @@ of headers to those libcurl automatically generates. The list must exist while
|
||||
the POST occurs, if you free it before the post completes you may experience
|
||||
problems.
|
||||
|
||||
When you've passed the HttpPost pointer to \fIcurl_easy_setopt\fP (using the
|
||||
\fICURLOPT_HTTPPOST\fP option), you must not free the list until after you've
|
||||
called \fIcurl_easy_cleanup\fP for the curl handle.
|
||||
When you've passed the HttpPost pointer to \fIcurl_easy_setopt(3)\fP (using
|
||||
the \fICURLOPT_HTTPPOST\fP option), you must not free the list until after
|
||||
you've called \fIcurl_easy_cleanup(3)\fP for the curl handle.
|
||||
|
||||
See example below.
|
||||
.SH RETURN VALUE
|
||||
@@ -207,6 +207,3 @@ defines.
|
||||
.BR curl_easy_setopt "(3), "
|
||||
.BR curl_formparse "(3) [deprecated], "
|
||||
.BR curl_formfree "(3)"
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
|
||||
|
@@ -8,20 +8,13 @@ curl_formfree - free a previously build multipart/formdata HTTP POST chain
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
.BI "void curl_formfree(struct HttpPost *" form);
|
||||
.BI "void curl_formfree(struct curl_httppost *" form);
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
curl_formfree() is used to clean up data previously built/appended with
|
||||
curl_formadd()/curl_formparse(). This must be called when the data has
|
||||
been used, which typically means after the curl_easy_perform() has
|
||||
been called.
|
||||
\fIcurl_formadd(3)\fP. This must be called when the data has been used, which
|
||||
typically means after the \fIcurl_easy_perform(3)\fP has been called.
|
||||
.SH RETURN VALUE
|
||||
None
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_formparse "(3) [deprecated], "
|
||||
.BR curl_formadd "(3) "
|
||||
.SH BUGS
|
||||
libcurl 7.7.1 and earlier versions does not allow a NULL pointer to be used as
|
||||
argument.
|
||||
|
||||
|
||||
|
@@ -11,7 +11,8 @@ curl_free - reclaim memory that has been obtained through a libcurl call
|
||||
.BI "void curl_free( char *" ptr " );"
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
curl_free reclaims memory that has been obtained through a libcurl call.
|
||||
Use curl_free() instead of free() to avoid anomalies that can result from differences in memory management between your application and libcurl.
|
||||
curl_free reclaims memory that has been obtained through a libcurl call. Use
|
||||
curl_free() instead of free() to avoid anomalies that can result from
|
||||
differences in memory management between your application and libcurl.
|
||||
.SH "SEE ALSO"
|
||||
.I curl_unescape()
|
||||
.I curl_unescape(3)
|
||||
|
@@ -74,7 +74,7 @@ Originally written by Steven M. Bellovin <smb@research.att.com> while at the
|
||||
University of North Carolina at Chapel Hill. Later tweaked by a couple of
|
||||
people on Usenet. Completely overhauled by Rich $alz <rsalz@bbn.com> and Jim
|
||||
Berets <jberets@bbn.com> in August, 1990.
|
||||
|
||||
It has been modified extensively since imported to curl.
|
||||
.SH "SEE ALSO"
|
||||
.BR
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
.BR GNU date(1)
|
||||
|
@@ -8,7 +8,7 @@ curl_getenv - return value for environment name
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
.BI "char *curl_getenv(const char *" name ");
|
||||
.BI "char *curl_getenv(const char *" name ");"
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
curl_getenv() is a portable wrapper for the getenv() function, meant to
|
||||
@@ -18,7 +18,7 @@ systems libcurl builds on (including win32).
|
||||
If successful, curl_getenv() returns a pointer to the value of the specified
|
||||
environment. The memory it refers to is malloc()ed why the application must
|
||||
free() this when the data has completed to serve its purpose. When
|
||||
.I curl_getenv()
|
||||
.I curl_getenv(3)
|
||||
fails to find the specified name, it returns a null pointer.
|
||||
.SH NOTE
|
||||
Under unix operating systems, there isn't any point in returning an allocated
|
||||
@@ -27,6 +27,3 @@ unix implementation thus have to suffer slightly from the drawbacks of other
|
||||
systems.
|
||||
.SH "SEE ALSO"
|
||||
.BR getenv "(3C), "
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
.\"
|
||||
.TH curl_global_cleanup 3 "28 May 2001" "libcurl 7.8" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_global_cleanup - Global libcurl cleanup
|
||||
curl_global_cleanup - global libcurl cleanup
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
@@ -15,13 +15,9 @@ curl_global_cleanup must be called once (no matter how many threads or libcurl
|
||||
sessions that'll be used) by every application that uses libcurl, after all
|
||||
uses of libcurl is complete.
|
||||
|
||||
This is the opposite of \fIcurl_global_init\fP.
|
||||
This is the opposite of \fIcurl_global_init(3)\fP.
|
||||
|
||||
Not calling this function may result in memory leaks.
|
||||
|
||||
This function was added in libcurl 7.8.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_global_init "(3), "
|
||||
.SH BUGS
|
||||
None?
|
||||
|
||||
|
@@ -14,18 +14,17 @@ curl_global_init - Global libcurl initialisation
|
||||
This function should only be called once (no matter how many threads or
|
||||
libcurl sessions that'll be used) by every application that uses libcurl.
|
||||
|
||||
If this function hasn't been invoked when \fIcurl_easy_init\fP is called, it
|
||||
will be done automatically by libcurl.
|
||||
If this function hasn't been invoked when \fIcurl_easy_init(3)\fP is called,
|
||||
it will be done automatically by libcurl.
|
||||
|
||||
The flags option is a bit pattern that tells libcurl exact what features to
|
||||
init, as described below. Set the desired bits by ORing the values together.
|
||||
|
||||
You must however \fBalways\fP use the \fIcurl_global_cleanup\fP function, as
|
||||
that cannot be called automatically for you by libcurl.
|
||||
You must however \fBalways\fP use the \fIcurl_global_cleanup(3)\fP function,
|
||||
as that cannot be called automatically for you by libcurl.
|
||||
|
||||
Calling this function more than once will cause unpredictable results.
|
||||
|
||||
This function was added in libcurl 7.8.
|
||||
.SH FLAGS
|
||||
.TP 5
|
||||
.B CURL_GLOBAL_ALL
|
||||
@@ -35,7 +34,7 @@ Initialize everything possible. This sets all known bits.
|
||||
Initialize SSL
|
||||
.TP
|
||||
.B CURL_GLOBAL_WIN32
|
||||
Initialize the Win32 socket libraries. (added in libcurl 7.8.1)
|
||||
Initialize the Win32 socket libraries.
|
||||
.TP
|
||||
.B CURL_GLOBAL_NOTHING
|
||||
Initialise nothing extra. This sets no bit.
|
||||
@@ -44,6 +43,5 @@ If this function returns non-zero, something went wrong and you cannot use the
|
||||
other curl functions.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_global_cleanup "(3), "
|
||||
.SH BUGS
|
||||
None.
|
||||
|
||||
|
||||
|
@@ -9,11 +9,11 @@ curl_multi_add_handle - add an easy handle to a multi session
|
||||
CURLMcode curl_multi_add_handle(CURLM *multi_handle, CURL *easy_handle);
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
Adds a standard easy handle to the multi stack. This will make this multi
|
||||
handle control the specified easy handle.
|
||||
Adds a standard easy handle to the multi stack. This function call will make
|
||||
this \fImulti_handle\fP control the specified \fIeasy_handle\fP.
|
||||
|
||||
When an easy handle has been added to a multi stack, you can not and you must
|
||||
not use curl_easy_perform() on that handle!
|
||||
not use \fIcurl_easy_perform(3)\fP on that handle!
|
||||
.SH RETURN VALUE
|
||||
CURLMcode type, general libcurl multi interface error code.
|
||||
.SH "SEE ALSO"
|
||||
|
@@ -11,7 +11,7 @@ curl_multi_cleanup - close down a multi session
|
||||
.SH DESCRIPTION
|
||||
Cleans up and removes a whole multi stack. It does not free or touch any
|
||||
individual easy handles in any way - they still need to be closed
|
||||
individually, using the usual curl_easy_cleanup() way.
|
||||
individually, using the usual \fIcurl_easy_cleanup(3)\fP way.
|
||||
.SH RETURN VALUE
|
||||
CURLMcode type, general libcurl multi interface error code.
|
||||
.SH "SEE ALSO"
|
||||
|
@@ -22,6 +22,7 @@ NOTE that once this call is made, you must not remove the sets you point to,
|
||||
as libcurl will need to be able to read them. It needs them after select()
|
||||
calls, to know if certain sockets are readable or writable.
|
||||
.SH RETURN VALUE
|
||||
CURLMcode type, general libcurl multi interface error code.
|
||||
CURLMcode type, general libcurl multi interface error code. See
|
||||
\fIlibcurl-errors.3\fP
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"
|
||||
|
@@ -21,13 +21,14 @@ integer pointed to with \fImsgs_in_queue\fP will contain the number of
|
||||
remaining messages after this function was called.
|
||||
|
||||
The data the returned pointer points to will not survive calling
|
||||
curl_multi_cleanup().
|
||||
\fIcurl_multi_cleanup(3)\fP.
|
||||
|
||||
The 'CURLMsg' struct is very simple and only contain very basic informations.
|
||||
If more involved information is wanted, the particular "easy handle" in
|
||||
present in that struct and can thus be used in subsequent regular
|
||||
curl_easy_getinfo() calls (or similar):
|
||||
\fIcurl_easy_getinfo(3)\fP calls (or similar):
|
||||
|
||||
.NF
|
||||
struct CURLMsg {
|
||||
CURLMSG msg; /* what this message means */
|
||||
CURL *easy_handle; /* the handle it concerns */
|
||||
|
@@ -2,7 +2,7 @@
|
||||
.\"
|
||||
.TH curl_multi_init 3 "1 March 2002" "libcurl 7.9.5" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_multi_init - Start a multi session
|
||||
curl_multi_init - create a multi handle
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
@@ -12,11 +12,10 @@ curl_multi_init - Start a multi session
|
||||
This function returns a CURLM handle to be used as input to all the other
|
||||
multi-functions, sometimes refered to as a multi handle on some places in the
|
||||
documentation. This init call MUST have a corresponding call to
|
||||
\fIcurl_multi_cleanup\fP when the operation is complete.
|
||||
\fIcurl_multi_cleanup(3)\fP when the operation is complete.
|
||||
.SH RETURN VALUE
|
||||
If this function returns NULL, something went wrong and you cannot use the
|
||||
other curl functions.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_multi_cleanup "(3)," curl_global_init "(3)," curl_easy_init "(3)"
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
|
||||
|
@@ -29,8 +29,9 @@ NOTE that this only returns errors etc regarding the whole multi stack. There
|
||||
might still have occurred problems on invidual transfers even when this
|
||||
function returns OK.
|
||||
.SH "TYPICAL USAGE"
|
||||
Most application will use \fIcurl_multi_fdset\fP to get the multi_handle's
|
||||
Most application will use \fIcurl_multi_fdset(3)\fP to get the multi_handle's
|
||||
file descriptors, then it'll wait for action on them using select() and as
|
||||
soon as one or more of them are ready, \fIcurl_multi_perform\fP gets called.
|
||||
soon as one or more of them are ready, \fIcurl_multi_perform(3)\fP gets
|
||||
called.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)"
|
||||
.BR curl_multi_cleanup "(3)," curl_multi_init "(3)," curl_multi_fdset "(3)"
|
||||
|
@@ -13,7 +13,9 @@ This function deletes a shared object. The share handle cannot be used anymore
|
||||
when this function has been called.
|
||||
|
||||
.SH RETURN VALUE
|
||||
If this function returns non-zero, the object was not properly deleted and it
|
||||
still remains!
|
||||
CURLSHE_OK (zero) means that the option was set properly, non-zero means an
|
||||
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
|
||||
man page for the full list with descriptions. If an error occurs, then the
|
||||
share object will not be deleted.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_share_init "(3), " curl_share_setopt "(3)"
|
||||
|
@@ -13,9 +13,13 @@ This function returns a CURLSH handle to be used as input to all the other
|
||||
share-functions, sometimes refered to as a share handle on some places in the
|
||||
documentation. This init call MUST have a corresponding call to
|
||||
\fIcurl_share_cleanup\fP when all operations using the share are complete.
|
||||
|
||||
This \fIshare handle\fP is what you pass to curl using the \fICURLOPT_SHARE\fP
|
||||
option with \fIcurl_easy_setopt(3)\fP, to make that specific curl handle use
|
||||
the data in this share.
|
||||
.SH RETURN VALUE
|
||||
If this function returns NULL, something went wrong and you got no share
|
||||
object to use.
|
||||
If this function returns NULL, something went wrong (out of memory, etc.)
|
||||
and therefore the share object was not created.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_share_cleanup "(3), " curl_share_setopt "(3)"
|
||||
|
||||
|
@@ -11,8 +11,7 @@ CURLSHcode curl_share_setopt(CURLSH *share, CURLSHoption option, parameter);
|
||||
.SH DESCRIPTION
|
||||
Set the \fIoption\fP to \fIparameter\fP for the given \fIshare\fP.
|
||||
.SH OPTIONS
|
||||
.TP 0.4i
|
||||
.B CURLSHOPT_LOCKFUNC
|
||||
.IP CURLSHOPT_LOCKFUNC
|
||||
The \fIparameter\fP must be a pointer to a function matching the following
|
||||
prototype:
|
||||
|
||||
@@ -24,23 +23,37 @@ only one lock is given at any time for each kind of data.
|
||||
|
||||
\fIaccess\fP defines what access type libcurl wants, shared or single.
|
||||
|
||||
\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDAT\fP.
|
||||
\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDATA\fP.
|
||||
.IP CURLSHOPT_UNLOCKFUNC
|
||||
The \fIparameter\fP must be a pointer to a function matching the following
|
||||
prototype:
|
||||
|
||||
.TP
|
||||
.B CURLSHOPT_UNLOCKFUNC
|
||||
hej
|
||||
.TP
|
||||
.B CURLSHOPT_SHARE
|
||||
hej
|
||||
.TP
|
||||
.B CURLSHOPT_UNSHARE
|
||||
hej
|
||||
.TP
|
||||
.B CURLSHOPT_USERDATA
|
||||
hej
|
||||
.PP
|
||||
void unlock_function(CURL *handle, curl_lock_data data, void *userptr);
|
||||
|
||||
\fIdata\fP defines what data libcurl wants to unlock, and you must make sure
|
||||
that only one lick is given at any time for each kind of data.
|
||||
|
||||
\fIuserptr\fP is the pointer you set with \fICURLSHOPT_USERDATA\fP.
|
||||
.IP CURLSHOPT_SHARE
|
||||
The \fIparameter\fP specifies a type of data that should be shared. This may
|
||||
be set to one of the values described below.
|
||||
.RS
|
||||
.IP CURL_LOCK_DATA_COOKIE
|
||||
Cookie data will be shared across the easy handles using this shared object.
|
||||
.IP CURL_LOCK_DATA_DNS
|
||||
Cached DNS hosts will be shared across the easy handles using this shared
|
||||
object.
|
||||
.RE
|
||||
.IP CURLSHOPT_UNSHARE
|
||||
This option does the opposite of \fICURLSHOPT_SHARE\fP. It specifies that
|
||||
the specified \fIparameter\fP will no longer be shared. Valid values are
|
||||
the same as those for \fICURLSHOPT_SHARE\fP.
|
||||
.IP CURLSHOPT_USERDATA
|
||||
The \fIparameter\fP allows you to specify a pointer to data that will passed
|
||||
to the lock_function and unlock_function each time it is called.
|
||||
.SH RETURN VALUE
|
||||
If this function returns non-zero, something was wrong!
|
||||
|
||||
CURLSHE_OK (zero) means that the option was set properly, non-zero means an
|
||||
error occurred as \fI<curl/curl.h>\fP defines. See the \fIlibcurl-errors.3\fP
|
||||
man page for the full list with descriptions.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_share_cleanup "(3), " curl_share_init "(3)"
|
||||
|
@@ -18,7 +18,8 @@ the new list is returned from this function. The specified \fIstring\fP has
|
||||
been appended when this function returns. curl_slist_append() copies the
|
||||
string.
|
||||
|
||||
The list should be freed again (after usage) with \fBcurl_slist_free_all()\fP.
|
||||
The list should be freed again (after usage) with
|
||||
\fBcurl_slist_free_all(3)\fP.
|
||||
.SH RETURN VALUE
|
||||
A null pointer is returned if anything went wrong, otherwise the new list
|
||||
pointer is returned.
|
||||
@@ -34,6 +35,3 @@ pointer is returned.
|
||||
curl_slist_free_all(slist); /* free the list again */
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_slist_free_all "(3), "
|
||||
.SH BUGS
|
||||
None.
|
||||
|
||||
|
@@ -17,6 +17,4 @@ linked list.
|
||||
Nothing.
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_slist_append "(3), "
|
||||
.SH BUGS
|
||||
Surely there are some, you tell me!
|
||||
|
||||
|
@@ -24,4 +24,4 @@ You must curl_free() the returned string when you're done with it.
|
||||
.SH RETURN VALUE
|
||||
A pointer to a zero terminated string or NULL if it failed.
|
||||
.SH "SEE ALSO"
|
||||
.I curl_escape(), curl_free(), RFC 2396
|
||||
.I curl_escape(3), curl_free(3), RFC 2396
|
||||
|
@@ -47,9 +47,9 @@ field).
|
||||
|
||||
\fIversion\fP is just an ascii string for the libcurl version.
|
||||
|
||||
\fIversion_num\fP is a 6 digit hexadecimal number created like this: <2 digits
|
||||
major number> | <2 digits minor number> | <2 digits patch number>. Version
|
||||
7.9.8 is therefore returned as 0x070908.
|
||||
\fIversion_num\fP is a 24 bit number created like this: <8 bits major number>
|
||||
| <8 bits minor number> | <8 bits patch number>. Version 7.9.8 is therefore
|
||||
returned as 0x070908.
|
||||
|
||||
\fIhost\fP is an ascii string showing what host information that this libcurl
|
||||
was built for. As discovered by a configure script or set by the build
|
||||
|
@@ -9,21 +9,21 @@ libcurl-easy \- easy interface overview
|
||||
When using libcurl's "easy" interface you init your session and get a handle
|
||||
(often referred to as an "easy handle" in various docs and sources), which you
|
||||
use as input to the easy interface functions you use. Use
|
||||
\fIcurl_easy_init()\fP to get the handle.
|
||||
\fIcurl_easy_init(3)\fP to get the handle.
|
||||
|
||||
You continue by setting all the options you want in the upcoming transfer, the
|
||||
most important among them is the URL itself (you can't transfer anything
|
||||
without a specified URL as you may have figured out yourself). You might want
|
||||
to set some callbacks as well that will be called from the library when data
|
||||
is available etc. \fIcurl_easy_setopt()\fP is used for all this.
|
||||
is available etc. \fIcurl_easy_setopt(3)\fP is used for all this.
|
||||
|
||||
When all is setup, you tell libcurl to perform the transfer using
|
||||
\fIcurl_easy_perform()\fP. It will then do the entire operation and won't
|
||||
\fIcurl_easy_perform(3)\fP. It will then do the entire operation and won't
|
||||
return until it is done (successfully or not).
|
||||
|
||||
After the transfer has been made, you can set new options and make another
|
||||
transfer, or if you're done, cleanup the session by calling
|
||||
\fIcurl_easy_cleanup()\fP. If you want persistant connections, you don't
|
||||
\fIcurl_easy_cleanup(3)\fP. If you want persistant connections, you don't
|
||||
cleanup immediately, but instead run ahead and perform other transfers using
|
||||
the same easy handle.
|
||||
|
||||
|
@@ -2,7 +2,7 @@
|
||||
.\" nroff -man [file]
|
||||
.\" $Id$
|
||||
.\"
|
||||
.TH libcurl-errors 3 "18 Oct 2003" "libcurl 7.10.8" "libcurl errors"
|
||||
.TH libcurl-errors 3 "8 Mar 2004" "libcurl 7.11.0" "libcurl errors"
|
||||
.SH NAME
|
||||
libcurl-errors \- error codes in libcurl
|
||||
.SH DESCRIPTION
|
||||
@@ -15,7 +15,6 @@ human readable error string that may offer more details about the error cause
|
||||
than just the error code does.
|
||||
|
||||
CURLcode is one of the following:
|
||||
.RS 0
|
||||
.IP "CURLE_OK (0)"
|
||||
All fine. Proceed as usual.
|
||||
.IP "CURLE_UNSUPPORTED_PROTOCOL (1)"
|
||||
@@ -183,8 +182,24 @@ Unrecognized transfer encoding
|
||||
Invalid LDAP URL
|
||||
.IP "CURLE_FILESIZE_EXCEEDED (63)"
|
||||
Maximum file size exceeded
|
||||
.RE
|
||||
|
||||
.IP "CURLE_FTP_SSL_FAILED (64)"
|
||||
Requested FTP SSL level failed
|
||||
.SH "CURLMcode"
|
||||
This is the generic return code used by functions in the libcurl multi
|
||||
interface.
|
||||
|
||||
This is left to be documented.
|
||||
.SH "CURLSHcode"
|
||||
The "share" interface will return a CURLSHcode to indicate when an
|
||||
error has occurred.
|
||||
|
||||
CURLSHcode is one of the following:
|
||||
.IP "CURLSHE_OK (0)"
|
||||
All fine. Proceed as usual.
|
||||
.IP "CURLSHE_BAD_OPTION (1)"
|
||||
An invalid option was passed to the function.
|
||||
.IP "CURLSHE_IN_USE (2)"
|
||||
The share object is currently in use.
|
||||
.IP "CURLSHE_INVALID (3)"
|
||||
An invalid share object was passed to the function.
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user