Compare commits
1089 Commits
curl-7_10_
...
curl-7_11_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
c96f7f13da | ||
![]() |
1bdc4b2006 | ||
![]() |
3915fecf80 | ||
![]() |
f94f06825c | ||
![]() |
2ddbf8975a | ||
![]() |
68a3cbe384 | ||
![]() |
b9432d1296 | ||
![]() |
e202a29a9a | ||
![]() |
3755bffcc2 | ||
![]() |
2a0a305300 | ||
![]() |
70e2aadc18 | ||
![]() |
a1c8aaf666 | ||
![]() |
8ee470aaeb | ||
![]() |
37e4858cd0 | ||
![]() |
a27072bebb | ||
![]() |
47059f45fe | ||
![]() |
daced8041d | ||
![]() |
b053ae6a65 | ||
![]() |
42f60ecb36 | ||
![]() |
550862f41a | ||
![]() |
6838f74fe0 | ||
![]() |
2ff30d067c | ||
![]() |
84406b3e2c | ||
![]() |
c323969bdd | ||
![]() |
43cbbdbea0 | ||
![]() |
1d3f76df71 | ||
![]() |
33cb93ad0b | ||
![]() |
4dc9179f4b | ||
![]() |
26a5ec9aa0 | ||
![]() |
883ea3113c | ||
![]() |
62b7c08bb3 | ||
![]() |
a85fa66cc8 | ||
![]() |
9ba010c629 | ||
![]() |
3ef3f2b6f0 | ||
![]() |
1401d909e8 | ||
![]() |
3233322622 | ||
![]() |
e373f1fd73 | ||
![]() |
dc25cd6f3a | ||
![]() |
0e31d41d4e | ||
![]() |
b7a7600465 | ||
![]() |
111a2f3057 | ||
![]() |
760cecac8d | ||
![]() |
6f8b4395ec | ||
![]() |
5506f8767c | ||
![]() |
5887945828 | ||
![]() |
25e98179be | ||
![]() |
78ebe3fa5a | ||
![]() |
a8e8e51b14 | ||
![]() |
f97d194934 | ||
![]() |
4661cc7403 | ||
![]() |
bc11929395 | ||
![]() |
caf37bc92e | ||
![]() |
5de447b0cb | ||
![]() |
5dbaced4a2 | ||
![]() |
43f8a1f5de | ||
![]() |
f57efa1899 | ||
![]() |
592522ceaf | ||
![]() |
4f84e6d9e2 | ||
![]() |
6f08903f07 | ||
![]() |
220cd010bd | ||
![]() |
68e8a0f0d9 | ||
![]() |
b23dbf9f34 | ||
![]() |
1d0b5b507a | ||
![]() |
b83d8104cd | ||
![]() |
bf6e1053cf | ||
![]() |
c3dd928e29 | ||
![]() |
aba6c2b89d | ||
![]() |
9c0a386246 | ||
![]() |
bba3bb7556 | ||
![]() |
c1422864b5 | ||
![]() |
31a693b99a | ||
![]() |
804534fbc9 | ||
![]() |
1bc6532c16 | ||
![]() |
b48bf7470d | ||
![]() |
1ca9ce5ef4 | ||
![]() |
789f2ecbe7 | ||
![]() |
ee7d1d0701 | ||
![]() |
4e3aa250c4 | ||
![]() |
3647a6ddcd | ||
![]() |
79aaa85a51 | ||
![]() |
392a543eff | ||
![]() |
eb6345de60 | ||
![]() |
0fd3b7a00a | ||
![]() |
bd51b80fa5 | ||
![]() |
15c900839b | ||
![]() |
2fd463e979 | ||
![]() |
de8660a96a | ||
![]() |
1e9cb272f1 | ||
![]() |
72b1144b8c | ||
![]() |
348fe0e210 | ||
![]() |
cf1f46e1ca | ||
![]() |
f052cbee19 | ||
![]() |
1f5e8670e1 | ||
![]() |
3b491d0f73 | ||
![]() |
26a2b8d26d | ||
![]() |
a7fd6f9007 | ||
![]() |
8ed44e8dfb | ||
![]() |
f617c1131a | ||
![]() |
5ca47f19d7 | ||
![]() |
9044fcbb5f | ||
![]() |
7a82810b59 | ||
![]() |
0ccdf3d0e6 | ||
![]() |
ca7f0852df | ||
![]() |
780b962336 | ||
![]() |
bbeb840916 | ||
![]() |
f4ec465bfc | ||
![]() |
57c86a953d | ||
![]() |
0fff8656e9 | ||
![]() |
7b929636ee | ||
![]() |
76835a2e00 | ||
![]() |
1b171b02ac | ||
![]() |
a8dc362572 | ||
![]() |
7c72f8ee6c | ||
![]() |
c39a54609b | ||
![]() |
ce6b767b47 | ||
![]() |
7ba4d3464f | ||
![]() |
03def138fe | ||
![]() |
9d99af5329 | ||
![]() |
c8d850dbad | ||
![]() |
01ea357744 | ||
![]() |
ad9e83a90f | ||
![]() |
6c9d96e811 | ||
![]() |
f840e5192c | ||
![]() |
ba9272dd05 | ||
![]() |
675db3a211 | ||
![]() |
1fc7ff878e | ||
![]() |
b643d148b1 | ||
![]() |
5804c995e1 | ||
![]() |
13a6f85320 | ||
![]() |
8b4582f111 | ||
![]() |
cd3bf7c56f | ||
![]() |
ee1595dcd5 | ||
![]() |
310086deed | ||
![]() |
5d27f50f2f | ||
![]() |
9d0330d5bd | ||
![]() |
d5074f74bb | ||
![]() |
ea0cf7c87b | ||
![]() |
a56164c8e0 | ||
![]() |
cd95bb22ea | ||
![]() |
1745ecd8ac | ||
![]() |
75d66b9c62 | ||
![]() |
2ff9f55001 | ||
![]() |
ce446dbdc2 | ||
![]() |
dd2add82ee | ||
![]() |
40d9855df2 | ||
![]() |
ecf7adba15 | ||
![]() |
931c847e2b | ||
![]() |
8230d9bff8 | ||
![]() |
64cc14e9e6 | ||
![]() |
d5b8971ff3 | ||
![]() |
7ea837a18c | ||
![]() |
b8b8473b6d | ||
![]() |
894dbae455 | ||
![]() |
2c11425868 | ||
![]() |
a2ea0abf7f | ||
![]() |
be8f8e66a4 | ||
![]() |
9fadfffb9d | ||
![]() |
76f23acfa1 | ||
![]() |
6950aeafcc | ||
![]() |
cd160a66c9 | ||
![]() |
a7376968d2 | ||
![]() |
fd96a2af34 | ||
![]() |
a90cd1a45c | ||
![]() |
8e92600ddd | ||
![]() |
5e75c310ba | ||
![]() |
20cab07c29 | ||
![]() |
f466d7a6f1 | ||
![]() |
dc46f535ae | ||
![]() |
27fd5d6d6a | ||
![]() |
18a3c3302f | ||
![]() |
97959a00d7 | ||
![]() |
5e92b2906b | ||
![]() |
126ed14313 | ||
![]() |
712d0374f7 | ||
![]() |
4b49b2e3cf | ||
![]() |
d85c21994f | ||
![]() |
6b33a5f954 | ||
![]() |
ed22afe5fb | ||
![]() |
843391c745 | ||
![]() |
ad6699e0c4 | ||
![]() |
43137cf595 | ||
![]() |
db6dc49b0b | ||
![]() |
593170d1de | ||
![]() |
0eace2fefe | ||
![]() |
abd65e21c6 | ||
![]() |
e21104a865 | ||
![]() |
3ecf63fa66 | ||
![]() |
762dcf0780 | ||
![]() |
75ee9b5333 | ||
![]() |
e161bdc5be | ||
![]() |
bb3d6e8552 | ||
![]() |
189c2f4989 | ||
![]() |
f28389c87b | ||
![]() |
7461592a16 | ||
![]() |
50b0e72f7b | ||
![]() |
76e73cfec8 | ||
![]() |
5d8ec172a6 | ||
![]() |
0953140b53 | ||
![]() |
6c2825997a | ||
![]() |
accc6eb91a | ||
![]() |
eab8cdc640 | ||
![]() |
dc9d0f256d | ||
![]() |
b60d6404d8 | ||
![]() |
08fe4b3210 | ||
![]() |
0e60a118d0 | ||
![]() |
4b78b4124e | ||
![]() |
0d6d9af7ab | ||
![]() |
41cd36b830 | ||
![]() |
242be55771 | ||
![]() |
7cf47ea5b5 | ||
![]() |
6fb0012833 | ||
![]() |
9d1ce9c0df | ||
![]() |
5947e4e9fd | ||
![]() |
e992aa6a54 | ||
![]() |
2cf218610e | ||
![]() |
fe6f0aeb26 | ||
![]() |
bd04c6fb67 | ||
![]() |
c5637baa06 | ||
![]() |
f8426a2c44 | ||
![]() |
0c791d1e76 | ||
![]() |
c4a89d29f6 | ||
![]() |
306ff5649a | ||
![]() |
1c652dfc5d | ||
![]() |
1f61e7f8f4 | ||
![]() |
1a5f190e47 | ||
![]() |
570033448c | ||
![]() |
f44b655513 | ||
![]() |
0aa720fa26 | ||
![]() |
d44f3f84f8 | ||
![]() |
d426db3d27 | ||
![]() |
0fd88d7c8f | ||
![]() |
4e84ac4db8 | ||
![]() |
da5c8a121f | ||
![]() |
76c36688d0 | ||
![]() |
651c8d3bc4 | ||
![]() |
a8a946d71d | ||
![]() |
c5c005609e | ||
![]() |
97886f9353 | ||
![]() |
a784bd0797 | ||
![]() |
4aacf65678 | ||
![]() |
dd1ba7633e | ||
![]() |
a4ea5a4054 | ||
![]() |
69060b1382 | ||
![]() |
a6562ea77d | ||
![]() |
ad3563096a | ||
![]() |
c5f02c1986 | ||
![]() |
7ef5d20cad | ||
![]() |
98b619c3a7 | ||
![]() |
5b75919f95 | ||
![]() |
20b76e09e3 | ||
![]() |
67fca4cb01 | ||
![]() |
606715b2cd | ||
![]() |
ce04b35032 | ||
![]() |
ec7f244ee9 | ||
![]() |
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 | ||
![]() |
fadf077502 | ||
![]() |
863c7c7282 | ||
![]() |
3a85b187c6 | ||
![]() |
296ccc35d2 | ||
![]() |
68826c25f8 | ||
![]() |
5e2fcc1f74 | ||
![]() |
e262a7265a | ||
![]() |
945c6f7279 | ||
![]() |
6ddec1f169 | ||
![]() |
9beae7693a | ||
![]() |
d204c62c39 | ||
![]() |
13dd99842a | ||
![]() |
2431b2caff | ||
![]() |
f44bc85545 | ||
![]() |
52df162c2f | ||
![]() |
60787171c7 | ||
![]() |
61e3d75def | ||
![]() |
27b7220f1b | ||
![]() |
a275365c72 | ||
![]() |
80ef1bad86 | ||
![]() |
686c70c5b5 | ||
![]() |
f94502ecba | ||
![]() |
4c70c3e820 | ||
![]() |
84990cb176 | ||
![]() |
eabbb5331a | ||
![]() |
898bf8bb0b | ||
![]() |
3d66d10fbe | ||
![]() |
7052daf475 | ||
![]() |
846d203d31 | ||
![]() |
7561cbda0a | ||
![]() |
c5c89862b2 | ||
![]() |
3a70d686ee | ||
![]() |
2d567af069 | ||
![]() |
d2f7037ff7 | ||
![]() |
c3614fa6a3 | ||
![]() |
f1da9e508e | ||
![]() |
9e80356dd5 | ||
![]() |
4a4295290d | ||
![]() |
57f67d0241 | ||
![]() |
d50c9218c7 | ||
![]() |
3c1bb36193 | ||
![]() |
16c747da76 | ||
![]() |
baf948db40 | ||
![]() |
9906eb8e19 | ||
![]() |
44d931dbc7 | ||
![]() |
d0ad607c46 | ||
![]() |
36f76396ea | ||
![]() |
1cb3cd1463 | ||
![]() |
a76235c008 | ||
![]() |
71b3cc08a6 | ||
![]() |
d8dd9b0008 | ||
![]() |
35fd3a3139 | ||
![]() |
90be1d157e | ||
![]() |
8433068f3a | ||
![]() |
e043cf22e2 | ||
![]() |
206039cb76 | ||
![]() |
4ba05e1128 | ||
![]() |
0ae7e93299 | ||
![]() |
5baf747e67 | ||
![]() |
3a61c98b65 | ||
![]() |
5173bab0bb | ||
![]() |
b291bbc9a6 | ||
![]() |
11e8600390 | ||
![]() |
93aea06ed9 | ||
![]() |
9e5aee63c7 | ||
![]() |
60cc5a3f27 | ||
![]() |
5ac047dc39 | ||
![]() |
6cd280fdfb | ||
![]() |
c8ac7a0d95 | ||
![]() |
44031f32a1 | ||
![]() |
7237221108 | ||
![]() |
ad36138f52 | ||
![]() |
8a16e48a6c | ||
![]() |
4c3a2318ae | ||
![]() |
7beac70644 | ||
![]() |
b16dfbee99 | ||
![]() |
202e54cf9c | ||
![]() |
e0d9e7a255 | ||
![]() |
c2bc5662b5 | ||
![]() |
f4569f10f0 | ||
![]() |
23cfb9a832 | ||
![]() |
b921777057 | ||
![]() |
ff6d9a1109 | ||
![]() |
053f6c85ef | ||
![]() |
9970fb863d | ||
![]() |
feeef39ebf | ||
![]() |
7bf11297fe | ||
![]() |
292ef5fabb | ||
![]() |
2b277f85f5 | ||
![]() |
9363d94f9b | ||
![]() |
ea1c98dccf | ||
![]() |
1109a4a629 | ||
![]() |
2d01740e1a | ||
![]() |
979a1e6237 | ||
![]() |
b60e0fa97e | ||
![]() |
41c6f68d94 | ||
![]() |
411d0cb715 | ||
![]() |
8b3946efda | ||
![]() |
763d6a8524 | ||
![]() |
232b051254 | ||
![]() |
aef6208bd7 | ||
![]() |
50c5a69d70 | ||
![]() |
9ebe4ab60c | ||
![]() |
a0edfb90c2 | ||
![]() |
93a8572928 | ||
![]() |
591fe66f18 | ||
![]() |
a99e6445bf | ||
![]() |
f3e5d4a602 | ||
![]() |
1d6248baa4 | ||
![]() |
61685fee7e | ||
![]() |
55e4d79111 | ||
![]() |
84b3c3b569 | ||
![]() |
4ea14b25df | ||
![]() |
4223f602ed | ||
![]() |
8146d46386 | ||
![]() |
36a2fac79f | ||
![]() |
58cf108251 | ||
![]() |
6c6e5522cb | ||
![]() |
aff9a817b4 | ||
![]() |
f4e987cd19 | ||
![]() |
b3afb31181 | ||
![]() |
a3ad4295c9 | ||
![]() |
2450506c83 | ||
![]() |
23a6041698 | ||
![]() |
979ba8a8b5 | ||
![]() |
cd9dea3091 | ||
![]() |
989ec98ebd | ||
![]() |
d262d0a62a | ||
![]() |
15b775e126 | ||
![]() |
3788f25eac | ||
![]() |
5b8852107b | ||
![]() |
cfe53768dd | ||
![]() |
947e656367 | ||
![]() |
50e7545118 | ||
![]() |
0839d6e6bc | ||
![]() |
bbafc27b42 | ||
![]() |
a7de09a966 | ||
![]() |
1410deb8f7 | ||
![]() |
7dea4acc46 | ||
![]() |
a3c09e636d | ||
![]() |
a025425d06 | ||
![]() |
4eb9ac0821 | ||
![]() |
77a5e7c646 | ||
![]() |
8f0abd31c5 | ||
![]() |
a13f85fb33 | ||
![]() |
3b048880ad | ||
![]() |
24ac5b8a6c | ||
![]() |
9bc97b2d3c | ||
![]() |
9825d81973 | ||
![]() |
1e012c5259 | ||
![]() |
68c508976f | ||
![]() |
4d8a53da2f | ||
![]() |
29d3deaee8 | ||
![]() |
6c56340e1a | ||
![]() |
134ab91358 | ||
![]() |
fb927939e2 | ||
![]() |
ac114ed45b | ||
![]() |
d46a735418 | ||
![]() |
5a87203fe4 | ||
![]() |
90e9c64f72 | ||
![]() |
8742d39060 | ||
![]() |
821302bcf3 | ||
![]() |
f68219ddaa | ||
![]() |
7e3cd82b50 | ||
![]() |
bc372815a8 | ||
![]() |
391a37ebbf | ||
![]() |
a61dc1e9c5 | ||
![]() |
2e0d1a55c6 | ||
![]() |
dfd1a636b4 | ||
![]() |
ee337309cf | ||
![]() |
437afe0767 | ||
![]() |
0ab2dff69c | ||
![]() |
bff59dac12 | ||
![]() |
ea53aed841 | ||
![]() |
e2555cf83d | ||
![]() |
f7c8a57206 | ||
![]() |
02bf6660bf | ||
![]() |
6c8e6df38f | ||
![]() |
96d3db1687 | ||
![]() |
3e43105ff1 | ||
![]() |
8ccc1148d9 | ||
![]() |
06c38330ba | ||
![]() |
0f4d042d3e | ||
![]() |
c79de8d86e | ||
![]() |
d670f308a6 | ||
![]() |
e64e9d7fed | ||
![]() |
ad5ead8bed | ||
![]() |
1b99d33b59 | ||
![]() |
800052dc50 | ||
![]() |
d4629fd395 | ||
![]() |
2c22feced2 | ||
![]() |
41688a1642 | ||
![]() |
2cf209d3f7 | ||
![]() |
909887f310 | ||
![]() |
d1d417664e | ||
![]() |
7d7e99104e | ||
![]() |
3eeea48839 | ||
![]() |
cd653f1be9 | ||
![]() |
5751796ddd | ||
![]() |
012c4ee1fa | ||
![]() |
426954ff95 | ||
![]() |
471c30372b | ||
![]() |
f6413f2cb4 | ||
![]() |
e80bdd66f9 | ||
![]() |
d083fac1fc | ||
![]() |
1d85f950bf | ||
![]() |
1d977b7848 | ||
![]() |
b3803903d1 | ||
![]() |
efc9410796 | ||
![]() |
45614d54c6 | ||
![]() |
50e690f2dd | ||
![]() |
2f9f843e8a | ||
![]() |
15d41dfbcd | ||
![]() |
bc01ad5b9e | ||
![]() |
dadc1026f1 | ||
![]() |
d8cf2d42c0 | ||
![]() |
96d7a95ce4 | ||
![]() |
d5d55a856e | ||
![]() |
dac045029a | ||
![]() |
1e98727c55 | ||
![]() |
1c700b5a5c | ||
![]() |
af9dc9f128 | ||
![]() |
4874aa6986 | ||
![]() |
c0336dcc52 | ||
![]() |
78fb476677 | ||
![]() |
3fed12a203 | ||
![]() |
ed2b831afe | ||
![]() |
f481b3e1dc | ||
![]() |
2769f3b245 | ||
![]() |
e9a545c710 | ||
![]() |
edce444551 | ||
![]() |
7bee4140e8 | ||
![]() |
cc48658564 | ||
![]() |
79e4aee185 | ||
![]() |
4d28012468 | ||
![]() |
e1d01045e2 | ||
![]() |
0717e4690e | ||
![]() |
a0a5668dbd | ||
![]() |
bfc7d6c11b | ||
![]() |
dfe0118033 | ||
![]() |
a701f3dddf | ||
![]() |
f99a1d4e82 | ||
![]() |
43bb20461f | ||
![]() |
b9d3c71178 | ||
![]() |
1e251a64f3 | ||
![]() |
776f0bd95e | ||
![]() |
cd9aabb474 | ||
![]() |
e42f806b3f | ||
![]() |
0850aec780 | ||
![]() |
ad77f760cf | ||
![]() |
a50d2a45d7 | ||
![]() |
17a834bc63 | ||
![]() |
c10bc0ef12 | ||
![]() |
f9b1981bd7 | ||
![]() |
451d34ce21 | ||
![]() |
445950aa70 | ||
![]() |
8be602cdfd | ||
![]() |
3dd40cca9a | ||
![]() |
f1445ea228 | ||
![]() |
c40309ae21 | ||
![]() |
fe0b5801ec | ||
![]() |
3de511b248 | ||
![]() |
b1aa8eb7ef | ||
![]() |
967cb4d75e | ||
![]() |
bcbaeaf7d5 | ||
![]() |
41be41358e | ||
![]() |
ecb818805b | ||
![]() |
d95f7129d5 | ||
![]() |
6294b356fb | ||
![]() |
3e64a76498 | ||
![]() |
dec9907c16 | ||
![]() |
527850928d | ||
![]() |
eee3f13134 | ||
![]() |
80d2be541d | ||
![]() |
472c4d8616 | ||
![]() |
45abf75e1e | ||
![]() |
4ec4e91de0 | ||
![]() |
f6645094a2 | ||
![]() |
7496e87d16 | ||
![]() |
bd4c081157 | ||
![]() |
927e392b31 | ||
![]() |
aeb5edbf07 | ||
![]() |
67dcddbef7 | ||
![]() |
7ffb8c6aee | ||
![]() |
344c378996 | ||
![]() |
445f54db57 | ||
![]() |
9b7c311929 | ||
![]() |
6a21a28048 | ||
![]() |
0adb75114b | ||
![]() |
ecfb53f06d | ||
![]() |
c020ee2eb6 | ||
![]() |
a3279d4baf | ||
![]() |
c45f43ce32 | ||
![]() |
0eb037a849 | ||
![]() |
5a089f6c1f | ||
![]() |
556d59dfcf | ||
![]() |
79cb1400ab |
1572
CHANGES.2003
Normal file
1572
CHANGES.2003
Normal file
File diff suppressed because it is too large
Load Diff
2
COPYING
2
COPYING
@@ -1,6 +1,6 @@
|
||||
COPYRIGHT AND PERMISSION NOTICE
|
||||
|
||||
Copyright (c) 1996 - 2003, Daniel Stenberg, <daniel@haxx.se>.
|
||||
Copyright (c) 1996 - 2004, Daniel Stenberg, <daniel@haxx.se>.
|
||||
|
||||
All rights reserved.
|
||||
|
||||
|
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
Makefile.am
24
Makefile.am
@@ -1,12 +1,30 @@
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
###########################################################################
|
||||
|
||||
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
|
||||
|
||||
|
@@ -1,25 +1,25 @@
|
||||
#############################################################################
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
#***************************************************************************
|
||||
# _ _ ____ _
|
||||
# Project ___| | | | _ \| |
|
||||
# / __| | | | |_) | |
|
||||
# | (__| |_| | _ <| |___
|
||||
# \___|\___/|_| \_\_____|
|
||||
#
|
||||
# Copyright (C) 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
# Copyright (C) 1998 - 2004, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
#
|
||||
# In order to be useful for every potential user, curl and libcurl are
|
||||
# dual-licensed under the MPL and the MIT/X-derivate licenses.
|
||||
# This software is licensed as described in the file COPYING, which
|
||||
# you should have received as part of this distribution. The terms
|
||||
# are also available at http://curl.haxx.se/docs/copyright.html.
|
||||
#
|
||||
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
# copies of the Software, and permit persons to whom the Software is
|
||||
# furnished to do so, under the terms of the MPL or the MIT/X-derivate
|
||||
# licenses. You may pick one of these licenses.
|
||||
# furnished to do so, under the terms of the COPYING file.
|
||||
#
|
||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
# KIND, either express or implied.
|
||||
#
|
||||
# $Id$
|
||||
#############################################################################
|
||||
###########################################################################
|
||||
|
||||
all:
|
||||
./configure
|
||||
@@ -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
|
||||
@@ -77,6 +77,14 @@ cygwin-ssl:
|
||||
./configure --with-ssl
|
||||
make
|
||||
|
||||
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
|
||||
|
||||
unix-ssl: ssl
|
||||
|
24
README
24
README
@@ -31,21 +31,31 @@ WEB SITE
|
||||
Visit the curl web site or mirrors for the latest news:
|
||||
|
||||
Sweden -- http://curl.haxx.se/
|
||||
Russia -- http://curl.tsuren.net/
|
||||
US -- http://curl.sf.net/
|
||||
Australia -- http://curl.planetmirror.com/
|
||||
Denmark -- http://curl.cofman.dk/
|
||||
Estonia -- http://curl.wildyou.net/
|
||||
Germany -- http://curl.mirror.at.stealer.net/
|
||||
Germany -- http://curl.netmirror.org/
|
||||
Russia -- http://curl.tsuren.net/
|
||||
Thailand -- http://curl.siamu.ac.th/
|
||||
US (CA) -- http://curl.mirror.redwire.net/
|
||||
US -- http://curl.signal42.com/
|
||||
|
||||
DOWNLOAD
|
||||
|
||||
The official download mirror sites are:
|
||||
|
||||
Australia -- http://curl.planetmirror.com/download.html
|
||||
Estonia -- http://curl.wildyou.net/download.html
|
||||
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
|
||||
Germany -- http://curl.mirror.at.stealer.net/download.html
|
||||
Germany -- http://curl.netmirror.org/download.html
|
||||
Hongkong -- http://www.execve.net/curl/
|
||||
Russia -- http://curl.tsuren.net/download.html
|
||||
Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/
|
||||
Sweden -- http://cool.haxx.se/curl/
|
||||
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
|
||||
Australia -- http://curl.planetmirror.com/download/
|
||||
US -- http://curl.sourceforge.net/download/
|
||||
Hongkong -- http://www.execve.net/curl/
|
||||
Russia -- http://curl.tsuren.net/download/
|
||||
Thailand -- http://curl.siamu.ac.th/download.html
|
||||
US (CA) -- http://curl.mirror.redwire.net/download.html
|
||||
|
||||
CVS
|
||||
|
||||
|
136
RELEASE-NOTES
136
RELEASE-NOTES
@@ -1,94 +1,74 @@
|
||||
Curl and libcurl 7.10.8. A bugfix release.
|
||||
Curl and libcurl 7.11.2. A bugfix release.
|
||||
|
||||
The 77th public curl release. Release number 104 counted from the very
|
||||
beginning.
|
||||
Public curl release number: 80
|
||||
Releases counted from the very beginning: 107
|
||||
Available command line options: 94
|
||||
Available curl_easy_setopt() options: 113
|
||||
|
||||
This release includes the following changes:
|
||||
|
||||
o --head now works on file:// URLs too
|
||||
o file: URLs with only one initial slash now works too
|
||||
o RELEASE-NOTES document added to the release archive to summarize the big
|
||||
and visible changes and bugfixes
|
||||
o CURLOPT_MAXFILESIZE was added, and --max-filesize
|
||||
o CURLOPT_PASSWDFUNCTION and CURLOPT_PASSWDDATA are no longer supported
|
||||
o IPv6 is now supported on Windows builds too
|
||||
o CURLOPT_IPRESOLVE lets you select pure IPv6 or IPv4 resolved addresses
|
||||
(curl offers the command line options -4/--ipv4 and -6/--ipv6)
|
||||
o GSS-Negotiate works fine with the MIT kerberos library
|
||||
o SPNEGO support added, if libcurl is built with the FBopenssl libraries,
|
||||
curl_version_info() can return a feature bit for it and curl -V displays
|
||||
SPNEGO as a feature if libcurl is built with it enabled
|
||||
o easy handles added to a multi handle now share DNS cache automaticly
|
||||
o CURLINFO_HTTPAUTH_AVAIL and CURLINFO_PROXYAUTH_AVAIL were added
|
||||
o CURLOPT_FTP_RESPONSE_TIMEOUT was added
|
||||
o NTLM, Digest and GSS-Negotiate authentications also work for HTTPS over
|
||||
proxies
|
||||
o curl supports multiple -T flags to allow serveral uploaded files using
|
||||
a single command line
|
||||
o CURLINFO_RESPONSE_CODE can return the last FTP response code
|
||||
o removed maximum user+password+hostname size limit
|
||||
o removed maximum dir depth limit for FTP
|
||||
o the ares build now requires c-ares 1.2.0 or later
|
||||
o --tcp-nodelay and CURLOPT_TCP_NODELAY were added
|
||||
o curl/curlver.h contains the libcurl version info now
|
||||
|
||||
This release includes the following bugfixes:
|
||||
|
||||
o added work-around for a name resolve problem on some glibc versions
|
||||
o a rare ERRORBUFFER single-byte overflow was fixed
|
||||
o HTTP-resuming an already downloaded file works better
|
||||
o builds better on Solaris 8+ with gcc
|
||||
o --disable-eprt works now
|
||||
o improved CA cert verification
|
||||
o --anyauth could bug when the first response had no body contents
|
||||
o double password prompting when doing NTLM fixed
|
||||
o improved performance when used multi-threaded on windows
|
||||
o share-locking during DNS lookups was modified
|
||||
o resume was not possible to switch off properly once enabled
|
||||
o fixed the ipv4 connect code when a DNS entry has multiple IPs
|
||||
o now checks subjectAltNames when matching certs
|
||||
o HTTP POST using read callback works again
|
||||
o builds fine on BeOS now
|
||||
o CURLOPT_COOKIE set to NULL no longer sends the previously set cookie
|
||||
o if an FTP transfer used a bad path, the next transfer could fail too
|
||||
o ares-built libcurl resolves IP-only names properly
|
||||
o changed the curl_lock_function proto to prevent warnings on some compilers
|
||||
o builds fine on QNX 6.2.x now
|
||||
o PUT with --digest works now
|
||||
o --anyauth that picks NTLM and then follows a redirect (and does NTLM again)
|
||||
works now
|
||||
o asynch resolves now work on NT4 too
|
||||
o a DNS cache trash (possible segfault) was fixed
|
||||
o runtests.pl clears all proxy environment variables before the test is run
|
||||
o Microsoft's "Negotiate" authentication is now supported by the existing
|
||||
GSSNEGOTIATE option
|
||||
o A set zero-length proxy name confused libcurl
|
||||
o Digest authentication works again without OpenSSL on 64bit architectures
|
||||
o configure --enable-thread works now
|
||||
o buffer problems in the test suite's web server were fixed
|
||||
o improved proxy password handling
|
||||
o LDAP is again working nicely with the current OpenLDAP
|
||||
o asynch name lookup for non-resolving hosts now return a proper error message
|
||||
o CURLOPT_SSL_VERIFYHOST set to 1 no longer aborts if no CN field is
|
||||
obtainable, it will merely warn about it
|
||||
o name resolve segfault with uClibc fixed
|
||||
o multi interface and multi-part/formpost could end in segfault
|
||||
o curl_multi_info_read() sets the msgs_in_queue to 0 when returning NULL
|
||||
o multi interface, ares and non-resolving host caused a segfault
|
||||
o minor single SSL memory leak fixed
|
||||
o Setting CURLOPT_WRITEFUNCTION or CURLOPT_READFUNCTION to NULL resets them
|
||||
to default
|
||||
o configure --disable-manual works better
|
||||
o removed a memory leak when doing a windows threaded resolve and it failed
|
||||
o --proxy-ntlm now checks if libcurl supports NTLM before using it
|
||||
o minor --fail with authentication bugfix
|
||||
o CURLOPT_IPRESOLVE set to CURL_IPRESOLVE_V6 will now cause a returned error
|
||||
if the host only can resolve ipv4 addresses
|
||||
o curl -4/-6 now actually sets the requested option in libcurl
|
||||
o multi interface on Windows without ares works again
|
||||
o improved resolution for the CURLINFO_*_TIME info variables
|
||||
o getting only a 100 Continue response and nothing else, when talking HTTP,
|
||||
is now treated as an error by libcurl
|
||||
o fixed minor memory leak in libcurl for Windows when statically linked
|
||||
o POST/PUT using Digest/NTLM/Negotiate (including anyauth) now work better
|
||||
o --limit-rate with high speed rates is a lot more accurate now, and supports
|
||||
limiting to speeds >2GB/sec on systems with Large File support.
|
||||
o curl_strnqual.3 "refer-to" man page fix
|
||||
o fixed a minor very old progress meter final update bug
|
||||
o added checks for a working NI_WITHSCOPEID before that is used
|
||||
o fixed a flaw that prevented ares name resolve timeouts to occur
|
||||
o getting user name from http_proxy env variable works now
|
||||
o fixed too early name resolve timeouts with ares
|
||||
o HTTP Digest "re-negotiation" works now
|
||||
o CURLOPT_FAILONERROR (-f/--fail) works with all kinds of authentication
|
||||
o better thread-safety thanks to the internal strerror() replacement
|
||||
o better thread-safety on AIX thanks to better function detection
|
||||
o minor ipv6 build fix for windows
|
||||
o the test suite runs fine with mingw-built curl
|
||||
o the postit2.c example works now
|
||||
o better error message when --interface fails on windows
|
||||
o the progress meter now displays very long times better
|
||||
o CURLINFO_CONTENT_LENGTH_DOWNLOAD with CURLOPT_NOBODY set TRUE now works
|
||||
o passwords longer than 14 letters work with NTLM
|
||||
o 'make netware' in the root dir works now
|
||||
o builds fine on VMS again and even nicer than before
|
||||
|
||||
Other curl-related news since the previous public release:
|
||||
|
||||
o TclCurl 0.10.7 was released.
|
||||
o PycURL 7.11.1 was released: http://pycurl.sf.net/
|
||||
o CURLHandle 1.9 was released: http://curlhandle.sourceforge.net/
|
||||
o A curl module for the Q language was announced:
|
||||
http://q-lang.sourceforge.net/
|
||||
o c-ares 1.2.0 was released: http://daniel.haxx.se/projects/c-ares/
|
||||
o New curl web mirrors:
|
||||
Germany http://curl.netmirror.org/
|
||||
USA http://curl.signal42.com/
|
||||
Denmark http://curl.cofman.dk/
|
||||
|
||||
This release would not have looked like this without help, code, reports and
|
||||
advice from friends like these:
|
||||
|
||||
Loren Kirkby, Jeff Pohlmeyer, Antoine Calando, Gerd v. Egidy, Vincent
|
||||
Sanders, John McGowan, Henrik Storner, J<>rg Mueller-Tolk, Peter Pentchev,
|
||||
Early Ehlinger, Kevin Fisk, Jurij Smakov, Bjorn Reese, Tim Bartley, David
|
||||
Kimdon, Dominick Meglio, Markus Moeller, Giuseppe Attardi, James MacMillan,
|
||||
Neil Spring, Siddhartha Prakash Jain, Jon Turner, Vincent Bronner, Shard,
|
||||
Jeremy Friesner, Florian Schoppmann, Neil Dunbar, Frank Ticheler, Lachlan
|
||||
O'Dea, Dirk Manske, Domenico Andreoli, Gisle Vanem, Kimmo Kinnunen, Andrew
|
||||
Fuller, Georg Horn, Andr<64>s Garc<72>a, Dylan Ellicott, Kevin Roth, David Hull,
|
||||
James Bursa, Dan C
|
||||
Thomas Schwinge, Marty Kuhrt, G<>nter Knauf, Kevin Roth, Glen Nakamura, Gisle
|
||||
Vanem, Greg Hewgill, Joe Halpin, Tor Arntsen, Dirk Manske, Roy Shan, Mitz
|
||||
Wark, Andr<64>s Garc<72>a, Robin Kay, Alan Pinstein, David Byron, Nathan
|
||||
O'Sullivan, Erwin Authried
|
||||
|
||||
|
||||
Thanks! (and sorry if I forgot to mention someone)
|
||||
|
37
TODO-RELEASE
Normal file
37
TODO-RELEASE
Normal file
@@ -0,0 +1,37 @@
|
||||
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
|
||||
|
||||
To get fixed in 7.11.2 (planned release late April 2004)
|
||||
======================
|
||||
|
||||
|
||||
To get fixed in 7.12.0 (no date)
|
||||
======================
|
||||
|
||||
25. curl_easy_strerror() curl_multi_strerror() curl_share_strerror()
|
||||
Code already in CVS. Messages need overview/improvements.
|
||||
Medium prio.
|
||||
|
||||
26. i18n of error messages?
|
||||
Low prio. Nobody has volunteered. Subject for removal.
|
||||
|
||||
33. Add a function to replace the malloc-calls within libcurl.
|
||||
Low prio. Seshubabu Pasam works on this.
|
||||
|
||||
35. Rearrange lib/hostip.c to reduce the amount of #ifdefs and make it easier
|
||||
to understand and edit. Daniel works on this. See
|
||||
http://curl.haxx.se/beta/hostip-cleanup1.patch
|
||||
Medium prio.
|
||||
|
||||
36. Add support for a threaded getaddrinfo() on Windows and IPv6 enabled
|
||||
libcurl.
|
||||
|
||||
37. Configure option "--with-libidn" to support IDNA (Internationalising
|
||||
Domain Names in Applications). Translate to/from ACE encoded domain
|
||||
names as needed.
|
||||
|
||||
38. Make the ldap protocol work with Windows' built-in LDAP-client.
|
||||
I.e. dynamically link to WLDAP32.DLL and add ldap URL parsing
|
||||
(WLDAP32.DLL doesn't have an UTF-8 ldap_url_parse).
|
290
acinclude.m4
290
acinclude.m4
@@ -7,7 +7,7 @@ dnl There are two known platforms (AIX 3.x and SunOS 4.1.x) where the
|
||||
dnl O_NONBLOCK define is found but does not work. This condition is attempted
|
||||
dnl to get caught in this script by using an excessive number of #ifdefs...
|
||||
dnl
|
||||
AC_DEFUN(CURL_CHECK_NONBLOCKING_SOCKET,
|
||||
AC_DEFUN([CURL_CHECK_NONBLOCKING_SOCKET],
|
||||
[
|
||||
AC_MSG_CHECKING([non-blocking sockets style])
|
||||
|
||||
@@ -64,7 +64,7 @@ dnl the code was bad, try a different program now, test 3
|
||||
],[
|
||||
/* ioctlsocket source code */
|
||||
int socket;
|
||||
int flags = ioctlsocket(socket, FIONBIO, &flags);
|
||||
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
|
||||
],[
|
||||
dnl ioctlsocket test was good
|
||||
nonblock="ioctlsocket"
|
||||
@@ -215,7 +215,7 @@ dnl check for "localhost", if it doesn't exist, we can't do the
|
||||
dnl gethostbyname_r tests!
|
||||
dnl
|
||||
|
||||
AC_DEFUN(CURL_CHECK_WORKING_RESOLVER,[
|
||||
AC_DEFUN([CURL_CHECK_WORKING_RESOLVER],[
|
||||
AC_MSG_CHECKING([if "localhost" resolves])
|
||||
AC_TRY_RUN([
|
||||
#include <string.h>
|
||||
@@ -238,14 +238,15 @@ exit (h == NULL ? 1 : 0); }],[
|
||||
dnl ************************************************************
|
||||
dnl check for working getaddrinfo()
|
||||
dnl
|
||||
AC_DEFUN(CURL_CHECK_WORKING_GETADDRINFO,[
|
||||
AC_DEFUN([CURL_CHECK_WORKING_GETADDRINFO],[
|
||||
AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
|
||||
AC_TRY_RUN( [
|
||||
#include <netdb.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
void main(void) {
|
||||
int main(void)
|
||||
{
|
||||
struct addrinfo hints, *ai;
|
||||
int error;
|
||||
|
||||
@@ -254,11 +255,9 @@ void main(void) {
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
|
||||
if (error) {
|
||||
exit(1);
|
||||
}
|
||||
else {
|
||||
exit(0);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
],[
|
||||
ac_cv_working_getaddrinfo="yes"
|
||||
@@ -276,10 +275,72 @@ if test "$ac_cv_working_getaddrinfo" = "yes"; then
|
||||
fi
|
||||
])
|
||||
|
||||
dnl ************************************************************
|
||||
dnl check for working NI_WITHSCOPEID in getnameinfo()
|
||||
dnl
|
||||
AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID],[
|
||||
AC_CACHE_CHECK(for working NI_WITHSCOPEID, ac_cv_working_ni_withscopeid,[
|
||||
|
||||
AC_DEFUN(CURL_CHECK_LOCALTIME_R,
|
||||
AC_RUN_IFELSE([[
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netdb.h>
|
||||
int main()
|
||||
{
|
||||
#ifdef NI_WITHSCOPEID
|
||||
struct sockaddr_storage ss;
|
||||
int sslen = sizeof(ss);
|
||||
int rc;
|
||||
char hbuf[NI_MAXHOST];
|
||||
int fd = socket(AF_INET6, SOCK_STREAM, 0);
|
||||
if(fd < 0) {
|
||||
perror("socket()");
|
||||
return 1; /* couldn't create socket of either kind */
|
||||
}
|
||||
|
||||
rc = getsockname(fd, (struct sockaddr *)&ss, &sslen);
|
||||
if(rc) {
|
||||
perror("getsockname()");
|
||||
return 2;
|
||||
}
|
||||
|
||||
rc = getnameinfo((struct sockaddr *)&ss, sslen, hbuf, sizeof(hbuf),
|
||||
NULL, 0,
|
||||
NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID);
|
||||
|
||||
if(rc) {
|
||||
printf("rc = %s\n", gai_strerror(rc));
|
||||
return 3;
|
||||
}
|
||||
|
||||
return 0; /* everything works fine, use NI_WITHSCOPEID! */
|
||||
#else
|
||||
return 4; /* we don't seem to have the definition, don't use it */
|
||||
#endif
|
||||
}
|
||||
]],
|
||||
dnl program worked:
|
||||
[ ac_cv_working_ni_withscopeid="yes" ],
|
||||
dnl program failed:
|
||||
[ ac_cv_working_ni_withscopeid="no" ],
|
||||
dnl we cross-compile:
|
||||
[ ac_cv_working_ni_withscopeid="yes" ]
|
||||
) dnl end of AC_RUN_IFELSE
|
||||
|
||||
]) dnl end of AC_CACHE_CHECK
|
||||
|
||||
if test "$ac_cv_working_ni_withscopeid" = "yes"; then
|
||||
AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
|
||||
[Define if NI_WITHSCOPEID exists and works])
|
||||
fi
|
||||
|
||||
]) dnl end of AC_DEFUN
|
||||
|
||||
|
||||
AC_DEFUN([CURL_CHECK_LOCALTIME_R],
|
||||
[
|
||||
dnl check for a few thread-safe functions
|
||||
dnl check for localtime_r
|
||||
AC_CHECK_FUNCS(localtime_r,[
|
||||
AC_MSG_CHECKING(whether localtime_r is declared)
|
||||
AC_EGREP_CPP(localtime_r,[
|
||||
@@ -295,7 +356,93 @@ AC_DEFUN(CURL_CHECK_LOCALTIME_R,
|
||||
AC_MSG_RESULT(no))])])
|
||||
])
|
||||
|
||||
AC_DEFUN(CURL_CHECK_INET_NTOA_R,
|
||||
dnl
|
||||
dnl This function checks for strerror_r(). If it isn't found at first, it
|
||||
dnl retries with _THREAD_SAFE defined, as that is what AIX seems to require
|
||||
dnl in order to find this function.
|
||||
dnl
|
||||
dnl If the function is found, it will then proceed to check how the function
|
||||
dnl actually works: glibc-style or POSIX-style.
|
||||
dnl
|
||||
dnl glibc:
|
||||
dnl char *strerror_r(int errnum, char *buf, size_t n);
|
||||
dnl
|
||||
dnl What this one does is to return the error string (no surprises there),
|
||||
dnl but it doesn't usually copy anything into buf! The 'buf' and 'n'
|
||||
dnl parameters are only meant as an optional working area, in case strerror_r
|
||||
dnl needs it. A quick test on a few systems shows that it's generally not
|
||||
dnl touched at all.
|
||||
dnl
|
||||
dnl POSIX:
|
||||
dnl int strerror_r(int errnum, char *buf, size_t n);
|
||||
dnl
|
||||
AC_DEFUN([CURL_CHECK_STRERROR_R],
|
||||
[
|
||||
dnl determine of strerror_r is present
|
||||
AC_CHECK_FUNCS(strerror_r,[
|
||||
AC_MSG_CHECKING(whether strerror_r is declared)
|
||||
AC_EGREP_CPP(strerror_r,[
|
||||
#include <string.h>],[
|
||||
strerror_r="yes"
|
||||
AC_MSG_RESULT(yes)],[
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_CHECKING(whether strerror_r with -D_THREAD_SAFE is declared)
|
||||
AC_EGREP_CPP(strerror_r,[
|
||||
#define _THREAD_SAFE
|
||||
#include <string.h>],[
|
||||
strerror_r="yes"
|
||||
CPPFLAGS="-D_THREAD_SAFE $CPPFLAGS"
|
||||
AC_MSG_RESULT(yes)],
|
||||
AC_MSG_RESULT(no))])])
|
||||
|
||||
if test "x$strerror_r" = "xyes"; then
|
||||
dnl determine if this strerror_r() is glibc or POSIX
|
||||
AC_MSG_CHECKING([for a glibc strerror_r API])
|
||||
AC_TRY_RUN([
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
int
|
||||
main () {
|
||||
char buffer[1024]; /* big enough to play with */
|
||||
char *string =
|
||||
strerror_r(EACCES, buffer, sizeof(buffer));
|
||||
/* this should've returned a string */
|
||||
if(!string || !string[0])
|
||||
return 99;
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
AC_DEFINE(HAVE_GLIBC_STRERROR_R, 1, [we have a glibc-style strerror_r()])
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_RESULT([no])
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING([for a POSIX strerror_r API])
|
||||
AC_TRY_RUN([
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
int
|
||||
main () {
|
||||
char buffer[1024]; /* big enough to play with */
|
||||
int error =
|
||||
strerror_r(EACCES, buffer, sizeof(buffer));
|
||||
/* This should've returned zero, and written an error string in the
|
||||
buffer.*/
|
||||
if(!buffer[0] || error)
|
||||
return 99;
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
AC_DEFINE(HAVE_POSIX_STRERROR_R, 1, [we have a POSIX-style strerror_r()])
|
||||
AC_MSG_RESULT([yes]),
|
||||
AC_MSG_RESULT([no])
|
||||
)
|
||||
|
||||
fi
|
||||
|
||||
])
|
||||
|
||||
AC_DEFUN([CURL_CHECK_INET_NTOA_R],
|
||||
[
|
||||
dnl determine if function definition for inet_ntoa_r exists.
|
||||
AC_CHECK_FUNCS(inet_ntoa_r,[
|
||||
@@ -315,7 +462,7 @@ AC_DEFUN(CURL_CHECK_INET_NTOA_R,
|
||||
AC_MSG_RESULT(no))])])
|
||||
])
|
||||
|
||||
AC_DEFUN(CURL_CHECK_GETHOSTBYADDR_R,
|
||||
AC_DEFUN([CURL_CHECK_GETHOSTBYADDR_R],
|
||||
[
|
||||
dnl check for number of arguments to gethostbyaddr_r. it might take
|
||||
dnl either 5, 7, or 8 arguments.
|
||||
@@ -392,7 +539,7 @@ rc = gethostbyaddr_r(address, length, type, &h,
|
||||
have_missing_r_funcs="$have_missing_r_funcs gethostbyaddr_r"])])])])])
|
||||
])
|
||||
|
||||
AC_DEFUN(CURL_CHECK_GETHOSTBYNAME_R,
|
||||
AC_DEFUN([CURL_CHECK_GETHOSTBYNAME_R],
|
||||
[
|
||||
dnl check for number of arguments to gethostbyname_r. it might take
|
||||
dnl either 3, 5, or 6 arguments.
|
||||
@@ -475,3 +622,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
|
||||
|
92
ares/CHANGES
92
ares/CHANGES
@@ -1,11 +1,89 @@
|
||||
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.
|
||||
Changelog for the c-ares project
|
||||
|
||||
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.
|
||||
Version 1.2.0 (April 13, 2004)
|
||||
|
||||
* October 24, 2003. Daniel Stenberg:
|
||||
* April 2, 2004
|
||||
- Updated various man pages to look nicer when converted to HTML on the web
|
||||
site.
|
||||
|
||||
* April 1, 2004
|
||||
- Dirk Manske provided a new function that is now named ares_cancel(). It is
|
||||
used to cancel/cleanup a resolve/request made using ares functions on the
|
||||
given ares channel. It does not destroy/kill the ares channel itself.
|
||||
|
||||
- Dominick Meglio cleaned up the formatting in several man pages.
|
||||
|
||||
* March 30, 2004
|
||||
- Dominick Meglio's new ares_expand_string. A helper function when decoding
|
||||
incoming DNS packages.
|
||||
|
||||
- Daniel Stenberg modified the Makefile.in to use a for loop for the man page
|
||||
installation to improve overview and make it easier to add man pages.
|
||||
|
||||
Version 1.1.0 (March 11, 2004)
|
||||
|
||||
* March 9, 2004
|
||||
- Gisle Vanem improved build on Windows.
|
||||
|
||||
* February 25, 2004
|
||||
- Dan Fandrich found a flaw in the Feb 22 fix.
|
||||
|
||||
- Added better configure --enable-debug logic (taken from the curl configure
|
||||
script). Added acinclude.m4 to the tarball.
|
||||
|
||||
* February 23, 2004
|
||||
- Removed ares_free_errmem(), the function, the file and the man page. It was
|
||||
not used and it did nothing.
|
||||
|
||||
- Fixed a lot of code that wasn't "64bit clean" and thus caused a lot of
|
||||
compiler warnings on picky compilers.
|
||||
|
||||
* February 22, 2004
|
||||
- Dominick Meglio made ares init support multiple name servers in the
|
||||
NameServer key on Windows.
|
||||
|
||||
* February 16, 2004
|
||||
- Modified ares_private.h to include libcurl's memory debug header if
|
||||
CURLDEBUG is set. This makes all the ares-functions supervised properly by
|
||||
the curl test suite. This also forced me to add inclusion of the
|
||||
ares_private.h header in a few more files that are using some kind of
|
||||
memory-related resources.
|
||||
|
||||
- Made the makefile only build ahost and adig if 'make demos' is used.
|
||||
|
||||
* February 10, 2004
|
||||
- Dirk Manske made ares_version.h installed with 'make install'
|
||||
|
||||
* February 4, 2004
|
||||
- ares_free_errmem() is subject for removal, it is simply present for future
|
||||
purposes, and since we removed the extra parameter in strerror() it won't
|
||||
be used by c-ares!
|
||||
- configure --enable-debug now enables picky compiler options if gcc is used
|
||||
- fixed several compiler warnings --enable-debug showed and Joerg Mueller-Tolk
|
||||
reported
|
||||
|
||||
Version 1.0.0 (February 3, 2004)
|
||||
|
||||
* February 3, 2004
|
||||
- now we produce the libcares.a library instead of the previous libares.a
|
||||
since we are no longer compatible
|
||||
|
||||
* February 2, 2004
|
||||
|
||||
- ares_strerror() has one argument less. This is the first official
|
||||
modification of the existing provided ares API.
|
||||
|
||||
* January 29, 2004
|
||||
|
||||
- Dirk Manske fixed how the socket is set non-blocking.
|
||||
|
||||
* January 4, 2004
|
||||
|
||||
- Dominick Meglio made the private gettimeofday() become ares_gettimeofday()
|
||||
instead in order to not pollute the name space and risk colliding with
|
||||
other libraries' versions of this function.
|
||||
|
||||
* October 24, 2003. Daniel Stenberg
|
||||
|
||||
Added ares_version().
|
||||
|
||||
@@ -20,3 +98,5 @@ Version 1.0-pre1 (8 October 2003)
|
||||
- Daniel Stenberg adjusted the windows port
|
||||
|
||||
- liren at vivisimo.com made the initial windows port
|
||||
|
||||
* Imported the sources from ares 1.1.1
|
||||
|
@@ -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
|
||||
@@ -19,8 +21,6 @@ vc/adig/adig.dsp
|
||||
vc/adig/adig.mak
|
||||
vc/adig/adig.plg
|
||||
vc/vc.dsw
|
||||
vc/vc.ncb
|
||||
vc/vc.opt
|
||||
vc/ahost/ahost.dep
|
||||
vc/ahost/ahost.dsp
|
||||
vc/ahost/ahost.mak
|
||||
|
@@ -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,36 @@ 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
|
||||
ares_send.o ares_strerror.o ares_timeout.o ares_version.o \
|
||||
ares_expand_string.o ares_cancel.o
|
||||
|
||||
all: libares.a adig ahost
|
||||
MANPAGES= ares_destroy.3 ares_expand_name.3 ares_expand_string.3 ares_fds.3 \
|
||||
ares_free_hostent.3 ares_free_string.3 ares_gethostbyaddr.3 \
|
||||
ares_gethostbyname.3 ares_init.3 ares_init_options.3 ares_mkquery.3 \
|
||||
ares_parse_a_reply.3 ares_parse_ptr_reply.3 ares_process.3 \
|
||||
ares_query.3 ares_search.3 ares_send.3 ares_strerror.3 ares_timeout.3 \
|
||||
ares_version.3 ares_cancel.3
|
||||
|
||||
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,39 +63,17 @@ 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_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 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_gethostbyaddr.3 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_gethostbyname.3 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_init.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_init_options.3 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_mkquery.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_parse_a_reply.3 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_parse_ptr_reply.3 \
|
||||
${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_process.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_query.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_search.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_send.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_strerror.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_timeout.3 ${DESTDIR}${mandir}/man3
|
||||
${INSTALL} -m 444 ${srcdir}/ares_version.h ${DESTDIR}${includedir}
|
||||
(for man in $(MANPAGES); do \
|
||||
${INSTALL} -m 444 ${srcdir}/$${man} ${DESTDIR}${mandir}/man3; \
|
||||
done)
|
||||
|
||||
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
|
||||
|
25
ares/README.cares
Normal file
25
ares/README.cares
Normal file
@@ -0,0 +1,25 @@
|
||||
c-ares
|
||||
======
|
||||
|
||||
This package is based on ares 1.1.1 (written by Greg Hudson). I decided to
|
||||
fork and release a separate project since the ares author didn't want the
|
||||
improvements that were vital for our use of it.
|
||||
|
||||
This package is dubbed 'c-ares' since I (Daniel Stenberg) wanted this for use
|
||||
within the curl project (hence the letter C) and it makes a nice pun. Also,
|
||||
c-ares is not API compatible with ares: a new name makes that more obvious to
|
||||
the public.
|
||||
|
||||
The full source code is available in the 'c-ares' release archives, and in the
|
||||
'ares' subdir of the curl CVS source 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 c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares
|
||||
|
||||
c-ares is of course distributed under the same MIT-style license as the
|
||||
original ares.
|
||||
|
||||
You'll find all c-ares details and news here:
|
||||
|
||||
http://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;
|
||||
}
|
||||
|
||||
|
18
ares/ares.h
18
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>
|
||||
@@ -48,6 +55,7 @@
|
||||
#define ARES_EFILE 14
|
||||
#define ARES_ENOMEM 15
|
||||
#define ARES_EDESTRUCTION 16
|
||||
#define ARES_EBADSTR 17
|
||||
|
||||
/* Flag values */
|
||||
#define ARES_FLAG_USEVC (1 << 0)
|
||||
@@ -97,7 +105,7 @@ int ares_init(ares_channel *channelptr);
|
||||
int ares_init_options(ares_channel *channelptr, struct ares_options *options,
|
||||
int optmask);
|
||||
void ares_destroy(ares_channel channel);
|
||||
|
||||
void ares_cancel(ares_channel channel);
|
||||
void ares_send(ares_channel channel, const unsigned char *qbuf, int qlen,
|
||||
ares_callback callback, void *arg);
|
||||
void ares_query(ares_channel channel, const char *name, int dnsclass,
|
||||
@@ -117,14 +125,16 @@ 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_expand_string(const unsigned char *encoded, const unsigned char *abuf,
|
||||
int alen, unsigned 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')
|
||||
|
@@ -14,29 +14,24 @@
|
||||
.\" 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_CANCEL 3 "31 March 2004"
|
||||
.SH NAME
|
||||
ares_free_errmem \- Free memory allocated by ares_strerror
|
||||
ares_cancel \- Cancel a resolve
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B void ares_free_errmem(char *\fIerrmem\fP)
|
||||
.B int ares_cancel(ares_channel \fIchannel\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 .
|
||||
The \fBares_cancel\fP function cancels all lookups/requests made on the the
|
||||
name service channel identified by \fIchannel\fP. \fBares_cancel\fP invokes
|
||||
the callbacks for each pending query on the channel, passing a status of
|
||||
.BR ARES_ETIMEOUT .
|
||||
These calls give the callbacks a chance to clean up any state which
|
||||
might have been stored in their arguments.
|
||||
.SH SEE ALSO
|
||||
.BR ares_strerror (3)
|
||||
.BR ares_init (3)
|
||||
.BR ares_destroy (3)
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
Dirk Manske
|
@@ -13,14 +13,32 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.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.
|
||||
/*
|
||||
* ares_cancel() cancels a ongoing request/resolve that might be going on on
|
||||
* the given channel. It does NOT kill the channel, use ares_destroy() for
|
||||
* that.
|
||||
*/
|
||||
void ares_free_errmem(char *mem)
|
||||
void ares_cancel(ares_channel channel)
|
||||
{
|
||||
struct query *query, *next;
|
||||
int i;
|
||||
|
||||
for (query = channel->queries; query; query = next)
|
||||
{
|
||||
next = query->next;
|
||||
query->callback(query->arg, ARES_ETIMEOUT, NULL, 0);
|
||||
free(query->tcpbuf);
|
||||
free(query->skip_server);
|
||||
free(query);
|
||||
}
|
||||
channel->queries = NULL;
|
||||
if (!(channel->flags & ARES_FLAG_STAYOPEN))
|
||||
{
|
||||
for (i = 0; i < channel->nservers; i++)
|
||||
ares__close_sockets(&channel->servers[i]);
|
||||
}
|
||||
}
|
@@ -36,7 +36,8 @@ status of
|
||||
These calls give the callbacks a chance to clean up any state which
|
||||
might have been stored in their arguments.
|
||||
.SH SEE ALSO
|
||||
.BR ares_init (3)
|
||||
.BR ares_init (3),
|
||||
.BR ares_cancel (3)
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
|
@@ -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;
|
||||
|
62
ares/ares_expand_string.3
Normal file
62
ares/ares_expand_string.3
Normal file
@@ -0,0 +1,62 @@
|
||||
.\" $Id$
|
||||
.\"
|
||||
.\" Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and distribute this
|
||||
.\" software and its documentation for any purpose and without
|
||||
.\" fee is hereby granted, provided that the above copyright
|
||||
.\" notice appear in all copies and that both that copyright
|
||||
.\" notice and this permission notice appear in supporting
|
||||
.\" documentation, and that the name of M.I.T. not be used in
|
||||
.\" advertising or publicity pertaining to distribution of the
|
||||
.\" software without specific, written prior permission.
|
||||
.\" M.I.T. makes no representations about the suitability of
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_EXPAND_NAME 3 "23 July 1998"
|
||||
.SH NAME
|
||||
ares_expand_string \- Expand a length encoded string
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B int ares_expand_string(const unsigned char *\fIencoded\fP,
|
||||
.B const unsigned char *\fIabuf\fP, int \fIalen\fP, unsigned char **\fIs\fP,
|
||||
.B int *\fIenclen\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B ares_expand_string
|
||||
function converts a length encoded string to a NULL terminated C
|
||||
string. The argument
|
||||
.I encoded
|
||||
gives the beginning of the encoded string, and the arguments
|
||||
.I abuf
|
||||
and
|
||||
.I alen
|
||||
give the containing message buffer (necessary for the processing of
|
||||
indirection pointers within the encoded domain name). The result is
|
||||
placed in a NUL-terminated allocated buffer, a pointer to which is
|
||||
stored in the variable pointed to by
|
||||
.IR s .
|
||||
The length of the encoded string is stored in the variable pointed to by
|
||||
.I enclen
|
||||
so that the caller can advance past the encoded string to read
|
||||
further data in the message.
|
||||
.SH RETURN VALUES
|
||||
.B ares_expand_string
|
||||
can return any of the following values:
|
||||
.TP 15
|
||||
.B ARES_SUCCESS
|
||||
Expansion of the encoded string succeeded.
|
||||
.TP 15
|
||||
.B ARES_EBADSTR
|
||||
The encoded string was malformed and could not be expanded.
|
||||
.TP 15
|
||||
.B ARES_ENOMEM
|
||||
Memory was exhausted.
|
||||
.SH SEE ALSO
|
||||
.BR ares_free_string (3)
|
||||
.SH AUTHOR
|
||||
Dominick Meglio
|
65
ares/ares_expand_string.c
Normal file
65
ares/ares_expand_string.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
||||
*
|
||||
* Permission to use, copy, modify, and distribute this
|
||||
* software and its documentation for any purpose and without
|
||||
* fee is hereby granted, provided that the above copyright
|
||||
* notice appear in all copies and that both that copyright
|
||||
* notice and this permission notice appear in supporting
|
||||
* documentation, and that the name of M.I.T. not be used in
|
||||
* advertising or publicity pertaining to distribution of the
|
||||
* software without specific, written prior permission.
|
||||
* M.I.T. makes no representations about the suitability of
|
||||
* this software for any purpose. It is provided "as is"
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
#include "nameser.h"
|
||||
#else
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/nameser.h>
|
||||
#endif
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include "ares.h"
|
||||
#include "ares_private.h" /* for the memdebug */
|
||||
|
||||
/* Simply decodes a length-encoded character string. The first byte of the
|
||||
* input is the length of the string to be returned and the bytes thereafter
|
||||
* are the characters of the string. The returned result will be NULL
|
||||
* terminated.
|
||||
*/
|
||||
int ares_expand_string(const unsigned char *encoded,
|
||||
const unsigned char *abuf,
|
||||
int alen,
|
||||
unsigned char **s,
|
||||
long *enclen)
|
||||
{
|
||||
unsigned char *q;
|
||||
long len;
|
||||
if (encoded == abuf+alen)
|
||||
return ARES_EBADSTR;
|
||||
|
||||
len = *encoded;
|
||||
if (encoded+len+1 > abuf+alen)
|
||||
return ARES_EBADSTR;
|
||||
|
||||
encoded++;
|
||||
|
||||
*s = malloc(len+1);
|
||||
if (*s == NULL)
|
||||
return ARES_ENOMEM;
|
||||
q = *s;
|
||||
strncpy((char *)q, (char *)encoded, len);
|
||||
q[len] = '\0';
|
||||
|
||||
*s = q;
|
||||
|
||||
*enclen = len+1;
|
||||
|
||||
return ARES_SUCCESS;
|
||||
}
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -28,21 +28,16 @@ The
|
||||
.I ares_free_hostent
|
||||
function frees a
|
||||
.B struct hostent
|
||||
allocated by one of the functions
|
||||
.I ares_parse_a_reply
|
||||
or
|
||||
.IR ares_parse_ptr_reply .
|
||||
allocated by one of the functions \fIares_parse_a_reply(3)\fP or
|
||||
\fIares_parse_ptr_reply(3)\fP.
|
||||
.SH NOTES
|
||||
It is not necessary (and is not correct) to free the host structure passed to
|
||||
the callback functions for \fIares_gethostbyname(3)\fP or
|
||||
\fIares_gethostbyaddr(3)\fP. The ares library will automatically free such
|
||||
host structures when the callback returns.
|
||||
.SH SEE ALSO
|
||||
.BR ares_parse_a_reply (3),
|
||||
.BR ares_parse_ptr_reply (3)
|
||||
.SH NOTES
|
||||
It is not necessary (and is not correct) to free the host structure
|
||||
passed to the callback functions for
|
||||
.I ares_gethostbyname
|
||||
or
|
||||
.IR ares_gethostbyaddr .
|
||||
The ares library will automatically free such host structures when the
|
||||
callback returns.
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
|
@@ -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,23 +14,22 @@
|
||||
.\" 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
|
||||
.I ares_free_string
|
||||
function frees a string allocated by the
|
||||
.I ares_mkquery
|
||||
function.
|
||||
function frees a string allocated by an ares function.
|
||||
.SH SEE ALSO
|
||||
.BR ares_mkquery (3)
|
||||
.BR ares_expand_string (3)
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -40,14 +40,10 @@ and
|
||||
.I addrlen
|
||||
give the address as a series of bytes, and
|
||||
.I family
|
||||
gives the type of address. When the query is complete or has failed,
|
||||
the ares library will invoke
|
||||
.IR callback .
|
||||
Completion or failure of the query may happen immediately, or may
|
||||
happen during a later call to
|
||||
.BR ares_process (3)
|
||||
or
|
||||
.BR ares_destroy (3).
|
||||
gives the type of address. When the query is complete or has failed, the ares
|
||||
library will invoke \fIcallback\fP. Completion or failure of the query may
|
||||
happen immediately, or may happen during a later call to
|
||||
\fIares_process(3)\fP, \fIares_destroy(3)\fP or \fIares_cancel(3)\fP.
|
||||
.PP
|
||||
The callback argument
|
||||
.I arg
|
||||
@@ -93,7 +89,8 @@ did not complete successfully,
|
||||
will be
|
||||
.BR NULL .
|
||||
.SH SEE ALSO
|
||||
.BR ares_process (3)
|
||||
.BR ares_process (3),
|
||||
.BR ares_gethostbyname (3)
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
|
@@ -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,
|
||||
|
@@ -37,14 +37,11 @@ The parameter
|
||||
.I name
|
||||
gives the hostname as a NUL-terminated C string, and
|
||||
.I family
|
||||
gives the desired type of address for the resulting host entry. When
|
||||
the query is complete or has failed, the ares library will invoke
|
||||
.IR callback .
|
||||
Completion or failure of the query may happen immediately, or may
|
||||
happen during a later call to
|
||||
.BR ares_process (3)
|
||||
or
|
||||
.BR ares_destroy (3).
|
||||
gives the desired type of address for the resulting host entry. When the
|
||||
query is complete or has failed, the ares library will invoke \fIcallback\fP.
|
||||
Completion or failure of the query may happen immediately, or may happen
|
||||
during a later call to \fIares_process(3)\fP, \fIares_destroy(3)\fP or
|
||||
\fIares_cancel(3)\fP.
|
||||
.PP
|
||||
The callback argument
|
||||
.I arg
|
||||
@@ -96,7 +93,8 @@ did not complete successfully,
|
||||
will be
|
||||
.BR NULL .
|
||||
.SH SEE ALSO
|
||||
.BR ares_process (3)
|
||||
.BR ares_process (3),
|
||||
.BR ares_gethostbyaddr (3)
|
||||
.SH AUTHOR
|
||||
Greg Hudson, MIT Information Systems
|
||||
.br
|
||||
|
@@ -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)
|
||||
|
@@ -21,11 +21,9 @@ ares_mkquery \- Compose a single-question DNS query buffer
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B
|
||||
int ares_mkquery(const char *\fIname\fP, int \fIdnsclass\fP, int \fItype\fP,
|
||||
.B
|
||||
unsigned short \fIid\fP, int \fIrd\fP, char **\fIbuf\fP,
|
||||
int *\fIbuflen\fP)
|
||||
.B int ares_mkquery(const char *\fIname\fP, int \fIdnsclass\fP, int \fItype\fP,
|
||||
.B unsigned short \fIid\fP, int \fIrd\fP, char **\fIbuf\fP,
|
||||
.B int *\fIbuflen\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
@@ -52,8 +50,7 @@ stored in the variable pointed to by
|
||||
and the length of which will be stored in the variable pointed to by
|
||||
.IR buflen .
|
||||
It is the caller's responsibility to free this buffer using
|
||||
.B ares_free_string
|
||||
when it is no longer needed.
|
||||
\fIares_free_string(3)\fP when it is no longer needed.
|
||||
.SH RETURN VALUES
|
||||
.B ares_mkquery
|
||||
can return any of the following values:
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
@@ -21,9 +21,8 @@ ares_parse_a_reply \- Parse a reply to a DNS query of type A into a hostent
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B
|
||||
int ares_parse_a_reply(const unsigned char *\fIabuf\fB, int \fIalen\fB,
|
||||
.B struct hostent **\fIhost\fB);
|
||||
.B int ares_parse_a_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
|
||||
.B struct hostent **\fIhost\fP);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
|
@@ -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);
|
||||
|
@@ -21,11 +21,9 @@ ares_parse_ptr_reply \- Parse a reply to a DNS query of type PTR into a hostent
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B
|
||||
int ares_parse_ptr_reply(const unsigned char *\fIabuf\fB, int \fIalen\fB,
|
||||
.B
|
||||
const void *\fIaddr\fP, int \fIaddrlen\fP, int \fIfamily\fP,
|
||||
.B struct hostent **\fIhost\fB);
|
||||
.B int ares_parse_ptr_reply(const unsigned char *\fIabuf\fP, int \fIalen\fP,
|
||||
.B const void *\fIaddr\fP, int \fIaddrlen\fP, int \fIfamily\fP,
|
||||
.B struct hostent **\fIhost\fP);
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
|
@@ -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
|
||||
|
@@ -35,13 +35,10 @@ The file descriptor sets pointed to by
|
||||
and
|
||||
.I write_fds
|
||||
should have file descriptors set in them according to whether the file
|
||||
descriptors specified by
|
||||
.BR ares_fds (3)
|
||||
are ready for reading and writing. (The easiest way to determine this
|
||||
information is to invoke
|
||||
descriptors specified by \fIares_fds(3)\fP are ready for reading and writing.
|
||||
(The easiest way to determine this information is to invoke
|
||||
.B select
|
||||
with a timeout no greater than the timeout given by
|
||||
.BR ares_timeout (3)).
|
||||
with a timeout no greater than the timeout given by \fIares_timeout(3)\fP ).
|
||||
.PP
|
||||
The
|
||||
.B ares_process
|
||||
|
@@ -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;
|
||||
|
@@ -24,8 +24,7 @@ ares_send \- Initiate a DNS query
|
||||
.B typedef void (*ares_callback)(void *\fIarg\fP, int \fIstatus\fP,
|
||||
.B unsigned char *\fIabuf\fP, int \fIalen\fP)
|
||||
.PP
|
||||
.B
|
||||
void ares_send(ares_channel \fIchannel\fP, const unsigned char *\fIqbuf\fP,
|
||||
.B void ares_send(ares_channel \fIchannel\fP, const unsigned char *\fIqbuf\fP,
|
||||
.B int \fIqlen\fP, ares_callback \fIcallback\fP, void *\fIarg\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
|
@@ -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",
|
||||
@@ -39,9 +35,11 @@ const char *ares_strerror(int code, char **memptr)
|
||||
"Timeout while contacting DNS servers",
|
||||
"End of file",
|
||||
"Error reading file",
|
||||
"Out of memory"
|
||||
"Out of memory",
|
||||
"Channel is being destroyed",
|
||||
"Misformatted string"
|
||||
};
|
||||
|
||||
assert(code >= 0 && code < (sizeof(errtext) / sizeof(*errtext)));
|
||||
assert(code >= 0 && code < (int)(sizeof(errtext) / sizeof(*errtext)));
|
||||
return errtext[code];
|
||||
}
|
||||
|
@@ -27,10 +27,8 @@ ares_fds \- Get file descriptors to select on for name service
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B ares_timeout
|
||||
function determines the maximum time for which the caller should wait
|
||||
before invoking
|
||||
.BR ares_process (3)
|
||||
to process timeouts. The parameter
|
||||
function determines the maximum time for which the caller should wait before
|
||||
invoking \fIares_process(3)\fP to process timeouts. The parameter
|
||||
.I maxtv
|
||||
specifies a existing maximum timeout, or
|
||||
.B NULL
|
||||
|
@@ -13,8 +13,6 @@
|
||||
* without express or implied warranty.
|
||||
*/
|
||||
|
||||
static const char rcsid[] = "$Id$";
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
41
ares/ares_version.3
Normal file
41
ares/ares_version.3
Normal file
@@ -0,0 +1,41 @@
|
||||
.\" $Id$
|
||||
.\"
|
||||
.\" Copyright 2004 by Daniel Stenberg
|
||||
.\"
|
||||
.\" Permission to use, copy, modify, and distribute this
|
||||
.\" software and its documentation for any purpose and without
|
||||
.\" fee is hereby granted, provided that the above copyright
|
||||
.\" notice appear in all copies and that both that copyright
|
||||
.\" notice and this permission notice appear in supporting
|
||||
.\" documentation, and that the name of M.I.T. not be used in
|
||||
.\" advertising or publicity pertaining to distribution of the
|
||||
.\" software without specific, written prior permission.
|
||||
.\" M.I.T. makes no representations about the suitability of
|
||||
.\" this software for any purpose. It is provided "as is"
|
||||
.\" without express or implied warranty.
|
||||
.\"
|
||||
.TH ARES_VERSION 3 "29 January 2004"
|
||||
.SH NAME
|
||||
ares_version \- Get the version number of the library
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
.B #include <ares.h>
|
||||
.PP
|
||||
.B const char *ares_version(int *\fIversion\fP)
|
||||
.fi
|
||||
.SH DESCRIPTION
|
||||
The
|
||||
.B ares_version
|
||||
function gets the library version as a string and optionally as an integer
|
||||
stored in the
|
||||
.IR version ,
|
||||
argument. If you pass a NULL, no integer is attempted to be returned.
|
||||
|
||||
The integer is built up as 24bit number, with 8 separate bits used for major
|
||||
number, minor number and patch number. This makes a version string such as
|
||||
1.2.3 will be returned as the hexadecimal number 0x010203 (decimal 66051).
|
||||
.SH NOTES
|
||||
This function is not compatible with ares.
|
||||
.SH AUTHOR
|
||||
Daniel Stenberg
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
#include "ares_version.h"
|
||||
|
||||
char *ares_version(int *version)
|
||||
const char *ares_version(int *version)
|
||||
{
|
||||
if(version)
|
||||
*version = ARES_VERSION;
|
||||
|
@@ -4,14 +4,14 @@
|
||||
#define ARES__VERSION_H
|
||||
|
||||
#define ARES_VERSION_MAJOR 1
|
||||
#define ARES_VERSION_MINOR 0
|
||||
#define ARES_VERSION_MINOR 2
|
||||
#define ARES_VERSION_PATCH 0
|
||||
#define ARES_VERSION ((ARES_VERSION_MAJOR<<16)|\
|
||||
(ARES_VERSION_MINOR<<8)|\
|
||||
(ARES_VERSION_PATCH))
|
||||
#define ARES_VERSION_STR "1.0.0"
|
||||
#define ARES_VERSION_STR "1.2.0"
|
||||
|
||||
char *ares_version(int *version);
|
||||
const char *ares_version(int *version);
|
||||
|
||||
#endif
|
||||
|
||||
|
4
ares/buildconf
Executable file
4
ares/buildconf
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
aclocal
|
||||
autoconf
|
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)
|
15
ares/maketgz
15
ares/maketgz
@@ -2,6 +2,8 @@
|
||||
|
||||
$version = $ARGV[0];
|
||||
|
||||
$name="c-ares";
|
||||
|
||||
if($version eq "") {
|
||||
print "Enter version number!\n";
|
||||
exit;
|
||||
@@ -81,13 +83,18 @@ 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`;
|
||||
|
||||
print "NOTE: now cvs tag this release!\n";
|
||||
|
@@ -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,8 +21,10 @@ struct iovec
|
||||
|
||||
#define getpid() _getpid()
|
||||
|
||||
int strcasecmp(const char *a, const char *b);
|
||||
int gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||
struct timezone { int dummy; };
|
||||
|
||||
int ares_gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||
#define gettimeofday(tv,tz) ares_gettimeofday(tv,tz)
|
||||
|
||||
#define NS_CMPRSFLGS 0xc0
|
||||
|
||||
@@ -35,7 +41,7 @@ typedef enum __ns_class {
|
||||
/* Query class values which do not appear in resource records */
|
||||
ns_c_none = 254, /* for prereq. sections in update requests */
|
||||
ns_c_any = 255, /* Wildcard match. */
|
||||
ns_c_max = 65536
|
||||
ns_c_max = 65536
|
||||
} ns_class;
|
||||
|
||||
#define C_IN ns_c_in
|
||||
@@ -113,7 +119,7 @@ typedef enum __ns_opcode {
|
||||
/* Opcode 3 is undefined/reserved. */
|
||||
ns_o_notify = 4, /* Zone change notification. */
|
||||
ns_o_update = 5, /* Zone update message. */
|
||||
ns_o_max = 6
|
||||
ns_o_max = 6
|
||||
} ns_opcode;
|
||||
|
||||
#define QUERY ns_o_query
|
||||
@@ -147,17 +153,18 @@ typedef enum __ns_rcode {
|
||||
/* The following are TSIG extended errors */
|
||||
ns_r_badsig = 16,
|
||||
ns_r_badkey = 17,
|
||||
ns_r_badtime = 18
|
||||
ns_r_badtime = 18
|
||||
} ns_rcode;
|
||||
|
||||
#define SERVFAIL ns_r_servfail
|
||||
#define NOTIMP ns_r_notimpl
|
||||
#define REFUSED ns_r_refused
|
||||
#define NOERROR ns_r_noerror
|
||||
#define FORMERR ns_r_formerr
|
||||
#define NXDOMAIN ns_r_nxdomain
|
||||
#define SERVFAIL ns_r_servfail
|
||||
#define NOTIMP ns_r_notimpl
|
||||
#define REFUSED ns_r_refused
|
||||
#undef NOERROR /* it seems this is already defined in winerror.h */
|
||||
#define NOERROR ns_r_noerror
|
||||
#define FORMERR ns_r_formerr
|
||||
#define NXDOMAIN ns_r_nxdomain
|
||||
|
||||
#define C_CHAOS ns_c_chaos
|
||||
#define C_CHAOS ns_c_chaos
|
||||
#define C_HS ns_c_hs
|
||||
#define C_NONE ns_c_none
|
||||
#define C_ANY ns_c_any
|
||||
@@ -203,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 */
|
||||
|
BIN
ares/vc/vc.ncb
BIN
ares/vc/vc.ncb
Binary file not shown.
BIN
ares/vc/vc.opt
BIN
ares/vc/vc.opt
Binary file not shown.
@@ -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,13 +20,14 @@ 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
|
||||
gettimeofday(struct timeval *tv, struct timezone *tz)
|
||||
ares_gettimeofday(struct timeval *tv, struct timezone *tz)
|
||||
{
|
||||
FILETIME ft;
|
||||
LARGE_INTEGER li;
|
||||
|
@@ -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
|
53
buildconf
53
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
|
||||
#
|
||||
@@ -52,7 +67,7 @@ echo "buildconf: autoheader version $ah_version (ok)"
|
||||
# automake 1.7 or newer
|
||||
#
|
||||
need_automake="1.7"
|
||||
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//'`
|
||||
am_version=`${AUTOMAKE:-automake} --version 2>/dev/null|head -1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
|
||||
if test -z "$am_version"; then
|
||||
echo "buildconf: automake not found."
|
||||
echo " You need automake version $need_automake or newer installed."
|
||||
@@ -63,7 +78,7 @@ if test "$1" = "1" -a "$2" -lt "7" || test "$1" -lt "1"; then
|
||||
echo "buildconf: automake version $am_version found."
|
||||
echo " You need automake version $need_automake or newer installed."
|
||||
echo " If you have a sufficient automake installed, but it"
|
||||
echo " is not named 'autommake', then try setting the"
|
||||
echo " is not named 'automake', then try setting the"
|
||||
echo " AUTOMAKE environment variable."
|
||||
exit 1
|
||||
fi
|
||||
@@ -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"
|
||||
${ACLOCAL:-aclocal} $ACLOCAL_FLAGS || die "The command '${ACLOCAL:-aclocal}${ACLOCAL_FLAGS:+" $ACLOCAL_FLAGS"}' 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} $ACLOCAL_FLAGS || die "The command '${ACLOCAL:-aclocal}${ACLOCAL_FLAGS:+" $ACLOCAL_FLAGS"}' 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
|
437
configure.ac
437
configure.ac
@@ -7,7 +7,7 @@ dnl We don't know the version number "staticly" so we use a dash here
|
||||
AC_INIT(curl, [-], [curl-bug@haxx.se])
|
||||
|
||||
dnl configure script copyright
|
||||
AC_COPYRIGHT([Copyright (c) 1998 - 2003 Daniel Stenberg, <daniel@haxx.se>
|
||||
AC_COPYRIGHT([Copyright (c) 1998 - 2004 Daniel Stenberg, <daniel@haxx.se>
|
||||
This configure script may be copied, distributed and modified under the
|
||||
terms of the curl license; see COPYING for more details])
|
||||
|
||||
@@ -24,14 +24,14 @@ AC_PATH_PROG( AR, ar, , $PATH:/usr/bin:/usr/local/bin:/usr/ccs/bin)
|
||||
AC_SUBST(AR)
|
||||
|
||||
dnl figure out the libcurl version
|
||||
VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curl.h`
|
||||
VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
|
||||
AM_INIT_AUTOMAKE(curl,$VERSION)
|
||||
AC_MSG_CHECKING([curl version])
|
||||
AC_MSG_RESULT($VERSION)
|
||||
|
||||
dnl
|
||||
dnl we extract the numerical version for curl-config only
|
||||
VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curl.h`
|
||||
VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
|
||||
AC_SUBST(VERSIONNUM)
|
||||
|
||||
dnl Solaris pkgadd support definitions
|
||||
@@ -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 **********************************************************************
|
||||
@@ -310,6 +384,8 @@ main()
|
||||
|
||||
if test "$ipv6" = "yes"; then
|
||||
CURL_CHECK_WORKING_GETADDRINFO
|
||||
|
||||
CURL_CHECK_NI_WITHSCOPEID
|
||||
fi
|
||||
|
||||
dnl **********************************************************************
|
||||
@@ -365,18 +441,30 @@ dnl Check if the operating system allows programs to write to their own argv[]
|
||||
dnl **********************************************************************
|
||||
|
||||
AC_MSG_CHECKING([if argv can be written to])
|
||||
AC_CACHE_VAL(curl_cv_writable_argv, [
|
||||
AC_RUN_IFELSE([[
|
||||
int main(int argc, char ** argv) {
|
||||
argv[0][0] = ' ';
|
||||
return (argv[0][0] == ' ')?0:1;
|
||||
}
|
||||
]],
|
||||
curl_cv_writable_argv=yes,
|
||||
curl_cv_writable_argv=no,
|
||||
curl_cv_writable_argv=cross)
|
||||
])
|
||||
case $curl_cv_writable_argv in
|
||||
yes)
|
||||
AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no),
|
||||
AC_MSG_RESULT(yes)
|
||||
;;
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_WARN([the previous check could not be made default was used])
|
||||
)
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Check for the presence of Kerberos4 libraries and headers
|
||||
@@ -404,8 +492,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
|
||||
@@ -454,7 +542,7 @@ then
|
||||
AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
|
||||
|
||||
dnl add define KRB4
|
||||
AC_DEFINE(KRB4, 1,
|
||||
AC_DEFINE(HAVE_KRB4, 1,
|
||||
[if you have the Kerberos4 libraries (including -ldes)])
|
||||
|
||||
dnl substitute it too!
|
||||
@@ -482,15 +570,20 @@ AC_ARG_WITH(spnego,
|
||||
)
|
||||
AC_MSG_CHECKING([if SPNEGO support is requested])
|
||||
if test x"$want_spnego" = xyes; then
|
||||
|
||||
if test -z "$SPNEGO_LIB_DIR"; then
|
||||
LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT $(wl)-R$SPNEGO_ROOT -lfbopenssl"
|
||||
|
||||
if test X"$SPNEGO_ROOT" = Xyes; then
|
||||
AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
|
||||
AC_MSG_RESULT(no)
|
||||
else
|
||||
LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
|
||||
fi
|
||||
if test -z "$SPNEGO_LIB_DIR"; then
|
||||
LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
|
||||
else
|
||||
LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
|
||||
fi
|
||||
|
||||
AC_DEFINE(HAVE_SPNEGO, 1, [Define this if you have the SPNEGO library fbopenssl])
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_SPNEGO, 1, [Define this if you have the SPNEGO library fbopenssl])
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
@@ -526,7 +619,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"
|
||||
@@ -536,7 +629,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"
|
||||
@@ -602,7 +695,7 @@ AC_HELP_STRING([--without-ssl], [disable SSL]),
|
||||
|
||||
if test X"$OPT_SSL" = Xno
|
||||
then
|
||||
AC_MSG_WARN(SSL/https support disabled)
|
||||
AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more])
|
||||
else
|
||||
|
||||
dnl Check for and handle argument to --with-ssl.
|
||||
@@ -619,7 +712,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
|
||||
@@ -629,7 +722,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" ], [
|
||||
@@ -643,6 +736,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)
|
||||
|
||||
@@ -741,29 +848,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)
|
||||
LIBS="$LIBS -lz"
|
||||
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
|
||||
@@ -779,6 +917,7 @@ printf("just fine");
|
||||
#endif
|
||||
],
|
||||
[ AC_MSG_RESULT([yes])
|
||||
RECENTAIX=yes
|
||||
OPT_THREAD=off ],
|
||||
[ AC_MSG_RESULT([no]) ]
|
||||
)
|
||||
@@ -802,12 +941,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()
|
||||
@@ -815,10 +955,31 @@ else
|
||||
dnl is there a localtime_r()
|
||||
CURL_CHECK_LOCALTIME_R()
|
||||
|
||||
AC_CHECK_FUNCS( gmtime_r )
|
||||
dnl is there a strerror_r()
|
||||
CURL_CHECK_STRERROR_R()
|
||||
|
||||
AC_CHECK_FUNCS( gmtime_r )
|
||||
fi
|
||||
|
||||
dnl for recent AIX versions, we skip all the thread-safe checks above since
|
||||
dnl they claim a thread-safe libc using the standard API. But there are
|
||||
dnl some functions still not thread-safe. Check for these!
|
||||
|
||||
dnl Let's hope this split URL remains working:
|
||||
dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
|
||||
dnl genprogc/thread_quick_ref.htm
|
||||
|
||||
if test "x$RECENTAIX" = "xyes"; then
|
||||
dnl is there a localtime_r()
|
||||
CURL_CHECK_LOCALTIME_R()
|
||||
|
||||
dnl is there a strerror_r()
|
||||
CURL_CHECK_STRERROR_R()
|
||||
|
||||
AC_CHECK_FUNCS( gmtime_r )
|
||||
fi
|
||||
|
||||
|
||||
dnl **********************************************************************
|
||||
dnl Back to "normal" configuring
|
||||
dnl **********************************************************************
|
||||
@@ -833,12 +994,16 @@ AC_CHECK_HEADERS(
|
||||
sys/time.h \
|
||||
sys/select.h \
|
||||
sys/socket.h \
|
||||
sys/ioctl.h \
|
||||
assert.h \
|
||||
unistd.h \
|
||||
malloc.h \
|
||||
stdlib.h \
|
||||
limits.h \
|
||||
arpa/inet.h \
|
||||
net/if.h \
|
||||
netinet/in.h \
|
||||
netinet/tcp.h \
|
||||
netdb.h \
|
||||
sys/sockio.h \
|
||||
sys/stat.h \
|
||||
@@ -875,6 +1040,9 @@ dnl default includes
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
]
|
||||
)
|
||||
|
||||
@@ -883,7 +1051,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'])])
|
||||
@@ -901,7 +1072,8 @@ dnl Checks for library functions.
|
||||
dnl AC_PROG_GCC_TRADITIONAL
|
||||
AC_TYPE_SIGNAL
|
||||
dnl AC_FUNC_VPRINTF
|
||||
AC_CHECK_FUNCS( socket \
|
||||
AC_CHECK_FUNCS( strtoll \
|
||||
socket \
|
||||
select \
|
||||
strdup \
|
||||
strstr \
|
||||
@@ -968,8 +1140,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)
|
||||
@@ -988,33 +1216,21 @@ 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)
|
||||
)
|
||||
|
||||
ares="no"
|
||||
AC_MSG_CHECKING([whether to enable ares])
|
||||
AC_ARG_ENABLE(ares,
|
||||
AC_HELP_STRING([--enable-ares],[Enable using ares for name lookups])
|
||||
AC_HELP_STRING([--disable-ares],[Disable using ares for name lookups]),
|
||||
AC_HELP_STRING([--enable-ares=PATH],[Enable ares for name lookups])
|
||||
AC_HELP_STRING([--disable-ares],[Disable ares for name lookups]),
|
||||
[ case "$enableval" in
|
||||
no)
|
||||
AC_MSG_RESULT(no)
|
||||
@@ -1026,15 +1242,63 @@ AC_HELP_STRING([--disable-ares],[Disable using ares for name lookups]),
|
||||
fi
|
||||
|
||||
AC_DEFINE(USE_ARES, 1, [Define if you want to enable ares support])
|
||||
dnl substitute HAVE_ARES for curl-config and similar
|
||||
HAVE_ARES="1"
|
||||
AC_SUBST(HAVE_ARES)
|
||||
|
||||
ares="yes"
|
||||
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
|
||||
dnl and the includes are in $val/include. This is the default setup for
|
||||
dnl ares so it should not be a problem.
|
||||
if test "x$enableval" = "xyes" ; then
|
||||
if test -d "$srcdir/ares"; then
|
||||
aresembedded="yes"
|
||||
AC_CONFIG_SUBDIRS(ares)
|
||||
aresinc=`cd $srcdir/ares && pwd`
|
||||
CPPFLAGS="$CPPFLAGS -I$aresinc"
|
||||
|
||||
dnl the pwd= below cannot 'cd' into the ares dir to get the full
|
||||
dnl path to it, since it may not exist yet if we build outside of
|
||||
dnl the source tree
|
||||
pwd=`pwd`
|
||||
LDFLAGS="$LDFLAGS -L$pwd/ares"
|
||||
fi
|
||||
else
|
||||
CPPFLAGS="$CPPFLAGS -I$enableval/include"
|
||||
LDFLAGS="$LDFLAGS -L$enableval/lib"
|
||||
fi
|
||||
|
||||
if test -z "$aresembedded"; then
|
||||
dnl verify that a sufficient c-ares is here if we have pointed one
|
||||
dnl out and don't use the "embedded" ares dir (in which case we don't
|
||||
dnl check it because it might not have been built yet)
|
||||
AC_MSG_CHECKING([that c-ares is good and recent enough])
|
||||
AC_LINK_IFELSE( [
|
||||
#include <ares.h>
|
||||
/* provide a set of dummy functions in case c-ares was built with debug */
|
||||
void curl_dofree() { }
|
||||
void curl_sclose() { }
|
||||
void curl_domalloc() { }
|
||||
|
||||
int main(void)
|
||||
{
|
||||
ares_channel channel;
|
||||
ares_cancel(channel);
|
||||
return 0;
|
||||
}
|
||||
],
|
||||
AC_MSG_RESULT(yes),
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_ERROR([c-ares library defective or too old])
|
||||
)
|
||||
fi
|
||||
;;
|
||||
esac ],
|
||||
AC_MSG_RESULT(no)
|
||||
)
|
||||
|
||||
AM_CONDITIONAL(ARES, test x$ares = xyes)
|
||||
|
||||
AC_CONFIG_FILES([Makefile \
|
||||
docs/Makefile \
|
||||
docs/examples/Makefile \
|
||||
@@ -1058,6 +1322,7 @@ AC_CONFIG_FILES([Makefile \
|
||||
packages/DOS/Makefile \
|
||||
packages/EPM/curl.list \
|
||||
packages/EPM/Makefile \
|
||||
packages/vms/Makefile \
|
||||
curl-config
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
@@ -90,6 +90,9 @@ while test $# -gt 0; do
|
||||
if test "@CURL_DISABLE_DICT@" = "1"; then
|
||||
echo "DICT-disabled"
|
||||
fi
|
||||
if test "@HAVE_ARES@" = "1"; then
|
||||
echo "AsynchDNS"
|
||||
fi
|
||||
;;
|
||||
|
||||
--version)
|
||||
|
@@ -2,17 +2,8 @@
|
||||
;;;; $Id$
|
||||
|
||||
;;; The curl hacker's C conventions.
|
||||
|
||||
;;; After loading this file and added the mode-hook you can in C
|
||||
;;; files, put something like this to use the curl style
|
||||
;;; automatically:
|
||||
;;
|
||||
;; /* -----------------------------------------------------------------
|
||||
;; * local variables:
|
||||
;; * eval: (set c-file-style "curl")
|
||||
;; * end:
|
||||
;; */
|
||||
;;
|
||||
;;; See the sample.emacs file on how this file can be made to take
|
||||
;;; effect automatically when editing curl source files.
|
||||
|
||||
(defconst curl-c-style
|
||||
'((c-basic-offset . 2)
|
||||
@@ -37,7 +28,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"))
|
||||
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" "in_addr_t" "CURLSHcode" "CURLMcode"))
|
||||
)
|
||||
;; 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.
|
||||
@@ -45,6 +50,9 @@ Euphoria
|
||||
Written by Ray Smith.
|
||||
http://rays-web.com/eulibcurl.htm
|
||||
|
||||
Ferite
|
||||
http://www.ferite.org/
|
||||
|
||||
Java
|
||||
|
||||
Written by Daniel Stenberg.
|
||||
|
90
docs/FAQ
90
docs/FAQ
@@ -1,8 +1,8 @@
|
||||
Updated: June 17, 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?
|
||||
@@ -40,6 +40,7 @@ FAQ
|
||||
3.12 Why do FTP specific features over HTTP proxy fail?
|
||||
3.13 Why does my single/double quotes fail?
|
||||
3.14 Does curl support javascript or pac (automated proxy config)?
|
||||
3.15 Can I do recursive fetches with curl?
|
||||
|
||||
4. Running Problems
|
||||
4.1 Problems connecting to SSL servers.
|
||||
@@ -66,7 +67,7 @@ FAQ
|
||||
5.2 How can I receive all data into a large memory chunk?
|
||||
5.3 How do I fetch multiple files with libcurl?
|
||||
5.4 Does libcurl do Winsock initing on win32 systems?
|
||||
5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ?
|
||||
5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ?
|
||||
5.6 What about Keep-Alive or persistent connections?
|
||||
5.7 Link errors when building libcurl on Windows!
|
||||
|
||||
@@ -89,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.
|
||||
@@ -100,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?
|
||||
@@ -108,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).
|
||||
|
||||
@@ -180,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
|
||||
@@ -197,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
|
||||
@@ -280,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
|
||||
@@ -413,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
|
||||
@@ -449,11 +448,19 @@ 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.
|
||||
|
||||
3.15 Can I do recursive fetches with curl?
|
||||
|
||||
No. curl itself has no code that performs recursive operations, such as
|
||||
those performed by wget.
|
||||
|
||||
There exist wrapper scripts with that functionality (for example the
|
||||
curlmirror perl script), and you can write programs based on libcurl to do
|
||||
it, but the command line tool curl itself cannot.
|
||||
|
||||
4. Running Problems
|
||||
|
||||
@@ -469,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?
|
||||
@@ -545,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
|
||||
@@ -568,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
|
||||
@@ -620,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
|
||||
@@ -677,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);
|
||||
@@ -699,13 +711,15 @@ FAQ
|
||||
|
||||
Yes, if told to in the curl_global_init() call.
|
||||
|
||||
5.5 Does CURLOPT_FILE and CURLOPT_INFILE work on win32 ?
|
||||
5.5 Does CURLOPT_WRITEDATA and CURLOPT_READDATA work on win32 ?
|
||||
|
||||
Yes, but you cannot open a FILE * and pass the pointer to a DLL and have
|
||||
that DLL use the FILE *. If you set CURLOPT_FILE you must also use
|
||||
CURLOPT_WRITEFUNCTION as well to set a function that writes the file, even
|
||||
if that simply writes the data to the specified FILE*. Similarly, if you use
|
||||
CURLOPT_INFILE you must also specify CURLOPT_READFUNCTION.
|
||||
that DLL use the FILE * (as the DLL and the client application cannot access
|
||||
each others' variable memory areas). If you set CURLOPT_WRITEDATA you must
|
||||
also use CURLOPT_WRITEFUNCTION as well to set a function that writes the
|
||||
file, even if that simply writes the data to the specified FILE *.
|
||||
Similarly, if you use CURLOPT_READDATA you must also specify
|
||||
CURLOPT_READFUNCTION.
|
||||
|
||||
(Provided by Joel DeYoung and Bob Schader)
|
||||
|
||||
|
@@ -25,6 +25,7 @@ Misc
|
||||
- socks5 support
|
||||
- supports user name + password in proxy environment variables
|
||||
- operations through proxy "tunnel" (using CONNECT)
|
||||
- supports transfers of large files (>2GB and >4GB)
|
||||
|
||||
HTTP
|
||||
- HTTP/1.1 compliant (optionally uses 1.0)
|
||||
@@ -80,6 +81,11 @@ FTP
|
||||
- all operations can be tunneled through a http-proxy
|
||||
- customizable to retrieve file modification date
|
||||
|
||||
FTPS (*1)
|
||||
- explicit ftps:// support that use SSL on both connections
|
||||
- implicit "AUTH TSL" and "AUTH SSL" usage to "upgrade" plain ftp://
|
||||
connection to use SSL for both or one of the connections
|
||||
|
||||
TELNET
|
||||
- connection negotiation
|
||||
- custom telnet options
|
||||
|
22
docs/HISTORY
22
docs/HISTORY
@@ -23,17 +23,17 @@ the http-only days were already passed.
|
||||
|
||||
The project slowly grew bigger. When upload capabilities were added and the
|
||||
name once again was misleading, a second name change was made and on March 20,
|
||||
1998 curl 4 was released. (The version numbering from the previous names were
|
||||
1998 curl 4 was released. (The version numbering from the previous names was
|
||||
kept.)
|
||||
|
||||
(Unrelated to this project a company called Curl Corporation filed a US
|
||||
(Unrelated to this project a company called Curl Corporation registered a US
|
||||
trademark on the name "CURL" on May 18 1998. That company had then already
|
||||
registered the curl.com domain back in November of the previous year. All this
|
||||
was much later brought into the lights.)
|
||||
was revealed to us much later.)
|
||||
|
||||
SSL support was added, powered by the SSLeay library.
|
||||
|
||||
August 1998, added project curl to freshmeat.net.
|
||||
August 1998, first announcement of curl on freshmeat.net.
|
||||
|
||||
October 1998, with the curl 4.9 release and the introduction of cookie
|
||||
support, curl was no longer released under the GPL license. Now we're at 4000
|
||||
@@ -42,7 +42,7 @@ lines of code, we switched over to the MPL license to restrict the effects of
|
||||
|
||||
November 1998, configure script and reported successful compiles on several
|
||||
major operating systems. The never-quite-understood -F option was added and
|
||||
curl could now simulate quite a lot of a browser.
|
||||
curl could now simulate quite a lot of a browser. TELNET support was added.
|
||||
|
||||
Curl 5 was released in December 1998 and introduced the first ever curl man
|
||||
page. People started making Linux RPM packages out of it.
|
||||
@@ -90,6 +90,8 @@ curl supports HTTP 1.1 starting with the release of 7.7, March 22 2001. This
|
||||
also introduced libcurl's ability to do persistent connections. 24000 lines of
|
||||
code.
|
||||
|
||||
The first experimental ftps:// support was added in March 2001.
|
||||
|
||||
August 2001. curl is bundled in Mac OS X, 10.1. It was already becoming more
|
||||
and more of a standard utility of Linux distributions and a regular in the BSD
|
||||
ports collections. The curl web site gets 8000 visits weekly. Curl Corporation
|
||||
@@ -114,3 +116,13 @@ license only.
|
||||
|
||||
February 2003, the curl site averages at 20000 visits weekly. At any given
|
||||
moment, there's an average of 3 people browsing the curl.haxx.se site.
|
||||
|
||||
Multiple new authentication schemes are supported: Digest (May), NTLM (June)
|
||||
and Negotiate (June).
|
||||
|
||||
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.
|
||||
|
76
docs/INSTALL
76
docs/INSTALL
@@ -6,14 +6,13 @@
|
||||
|
||||
How To Compile
|
||||
|
||||
Curl has been compiled and built on numerous different operating systems.
|
||||
Installing Binary Packages
|
||||
==========================
|
||||
|
||||
Most systems build curl the same way (unix-style). Continue reading below for
|
||||
more details if you're one of them.
|
||||
|
||||
If you're using Windows (95/98/NT/ME/2000/XP or similar), VMS, RISC OS or OS/2
|
||||
or cross-compile, you should continue reading from one the paragraphs further
|
||||
down.
|
||||
Lots of people download binary distributions of curl and libcurl. This
|
||||
document does not describe how to install curl or libcurl using such a
|
||||
binary package. This document describes how to compile, build and install
|
||||
curl and libcurl from source code.
|
||||
|
||||
UNIX
|
||||
====
|
||||
@@ -231,6 +230,36 @@ Win32
|
||||
project properties to use the SSL include path, link with the SSL libs
|
||||
and define the USE_SSLEAY symbol.
|
||||
|
||||
Using Borland C++ compiler version 5.5.1 (available as free download
|
||||
from Borland's site)
|
||||
---------------------------------------------------------------------
|
||||
|
||||
compile openssl
|
||||
|
||||
Make sure you include the paths to curl/include and openssl/inc32 in
|
||||
your bcc32.cnf file
|
||||
|
||||
|
||||
eg : -I"c:\Bcc55\include;c:\path_curl\include;c:\path_openssl\inc32"
|
||||
|
||||
Check to make sure that all of the sources listed in lib/Makefile.b32
|
||||
are present in the /path_to_curl/lib directory. (Check the src
|
||||
directory for missing ones.)
|
||||
|
||||
Make sure the environment variable "BCCDIR" is set to the install
|
||||
location for the compiler eg : c:\Borland\BCC55
|
||||
|
||||
command line:
|
||||
make -f /path_to_curl/lib/Makefile-ssl.b32
|
||||
|
||||
compile simplessl.c with appropriate links
|
||||
|
||||
c:\curl\docs\examples\> bcc32 -L c:\path_to_curl\lib\libcurl.lib
|
||||
-L c:\borland\bcc55\lib\psdk\ws2_32.lib
|
||||
-L c:\openssl\out32\libeay32.lib
|
||||
-L c:\openssl\out32\ssleay32.lib
|
||||
simplessl.c
|
||||
|
||||
Disabling Specific Protocols:
|
||||
|
||||
The configure utility, unfortunately, is not available for the Windows
|
||||
@@ -290,8 +319,6 @@ VMS
|
||||
===
|
||||
(The VMS section is in whole contributed by the friendly Nico Baggus)
|
||||
|
||||
This is the first attempt at porting cURL to VMS.
|
||||
|
||||
Curl seems to work with FTP & HTTP other protocols are not tested. (the
|
||||
perl http/ftp testing server supplied as testing too cannot work on VMS
|
||||
because vms has no concept of fork(). [ I tried to give it a whack, but
|
||||
@@ -300,7 +327,7 @@ VMS
|
||||
SSL stuff has not been ported.
|
||||
|
||||
Telnet has about the same issues as for Win32. When the changes for Win32
|
||||
are clear maybe they'l work for VMS too. The basic problem is that select
|
||||
are clear maybe they'll work for VMS too. The basic problem is that select
|
||||
ONLY works for sockets.
|
||||
|
||||
Marked instances of fopen/[f]stat that might become a problem, especially
|
||||
@@ -422,6 +449,29 @@ RISC OS
|
||||
where riscos-gcc and riscos-ar are links to the gccsdk tools.
|
||||
You can then link your program with curl/lib/.libs/libcurl.a
|
||||
|
||||
|
||||
AmigaOS
|
||||
=======
|
||||
(This section was graciously brought to us by Diego Casorran)
|
||||
|
||||
To build cURL/libcurl on AmigaOS just type 'make amiga' ...
|
||||
|
||||
What you need is: (not tested with others versions)
|
||||
|
||||
GeekGadgets / gcc 2.95.3 (http://www.geekgadgets.org/)
|
||||
|
||||
AmiTCP SDK v4.3 (http://www.aminet.net/comm/tcp/AmiTCP-SDK-4.3.lha)
|
||||
|
||||
Native Developer Kit (http://www.amiga.com/3.9/download/NDK3.9.lha)
|
||||
|
||||
As no ixemul.library is required you will be able to build it for
|
||||
WarpOS/PowerPC (not tested by me), as well a MorphOS version should be
|
||||
possible with no problems.
|
||||
|
||||
To enable SSL support, you need a OpenSSL native version (without ixemul),
|
||||
you can find a precompiled package at http://amiga.sourceforge.net/OpenSSL/
|
||||
|
||||
|
||||
PORTS
|
||||
=====
|
||||
This is a probably incomplete list of known hardware and operating systems
|
||||
@@ -438,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
|
||||
@@ -460,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
|
||||
@@ -497,7 +549,3 @@ OpenLDAP
|
||||
|
||||
http://www.openldap.org
|
||||
|
||||
You need to install it with shared libraries, which is enabled when running
|
||||
the ldap configure script with "--enable-shared". With my linux 2.0.36
|
||||
kernel I also had to disable using threads (with --without-threads),
|
||||
because the configure script couldn't figure out my system.
|
||||
|
@@ -3,6 +3,14 @@ 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!
|
||||
|
||||
* --limit-rate using -d or -F does not work. This is because the limit logic
|
||||
is provided by the curl app in its read/write callbacks, and when doing
|
||||
-d/-F the callbacks aren't used!
|
||||
|
||||
* 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]'.
|
||||
|
||||
* CURLOPT_USERPWD and CURLOPT_PROXYUSERPWD have no way of providing user names
|
||||
that contain a colon. This can't be fixed easily in a backwards compatible
|
||||
way without adding new options (and then, they should most probably allow
|
||||
@@ -15,13 +23,6 @@ may have been fixed since this was written!
|
||||
indicate that the user wants to reach the root dir (this exception SHALL
|
||||
remain even when this bug is fixed).
|
||||
|
||||
* 1) libcurl does a POST
|
||||
2) receives a 100-continue
|
||||
3) sends away the POST
|
||||
Now, if nothing else is returned from the server, libcurl MUST return
|
||||
CURLE_GOT_NOTHING, but it seems it returns CURLE_OK as it seems to count
|
||||
the 100-continue reply as a good enough reply.
|
||||
|
||||
* libcurl doesn't treat the content-length of compressed data properly, as
|
||||
it seems HTTP servers send the *uncompressed* length in that header and
|
||||
libcurl thinks of it as the *compressed* lenght. Some explanations are here:
|
||||
@@ -31,26 +32,14 @@ may have been fixed since this was written!
|
||||
locally, which is because libcurl doesn't call the write callback with zero
|
||||
bytes. Explained here: http://curl.haxx.se/mail/archive-2003-04/0143.html
|
||||
|
||||
* Using CURLOPT_FAILONERROR (-f/--fail) will make authentication to stop
|
||||
working if you use anything but plain Basic auth.
|
||||
|
||||
* 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
|
||||
@@ -60,63 +49,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>
|
||||
|
13
docs/MANUAL
13
docs/MANUAL
@@ -63,6 +63,11 @@ USING PASSWORDS
|
||||
|
||||
curl -u name:passwd ftp://machine.domain:port/full/path/to/file
|
||||
|
||||
FTPS
|
||||
|
||||
It is just like for FTP, but you may also want to specify and use
|
||||
SSL-specific options for certificates etc.
|
||||
|
||||
HTTP
|
||||
|
||||
The HTTP URL doesn't support user and password in the URL string. Curl
|
||||
@@ -75,6 +80,12 @@ USING PASSWORDS
|
||||
|
||||
curl -u name:passwd http://machine.domain/full/path/to/file
|
||||
|
||||
HTTP offers many different methods of authentication and curl supports
|
||||
several: Basic, Digest, NTLM and Negotiate. Without telling which method to
|
||||
use, curl defaults to Basic. You can also ask curl to pick the most secure
|
||||
ones out of the ones that the server accepts for the given URL, by using
|
||||
--anyauth.
|
||||
|
||||
NOTE! Since HTTP URLs don't support user and password, you can't use that
|
||||
style when using Curl via a proxy. You _must_ use the -u style fetch
|
||||
during such circumstances.
|
||||
@@ -836,8 +847,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,12 +20,14 @@ 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) \
|
||||
HISTORY INSTALL libcurl-the-guide $(PDFPAGES)
|
||||
|
||||
MAN2HTML= $(NROFF) -man $< | man2html >$@
|
||||
MAN2HTML= roffit < $< >$@
|
||||
|
||||
SUFFIXES = .1 .html .pdf
|
||||
|
||||
|
@@ -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);
|
||||
@@ -26,6 +28,12 @@ included in the bundle, then you need to do one of the following:
|
||||
|
||||
With the curl command tool: --cacert [file]
|
||||
|
||||
3. Add the CA cert for your server to the existing default CA cert bundle.
|
||||
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.
|
||||
|
||||
Neglecting to use one of the above menthods when dealing with a server using a
|
||||
certficate that isn't signed by one of the certficates in the installed CA
|
||||
cert bundle, will cause SSL to report an error ("certificate verify failed")
|
||||
@@ -37,3 +45,4 @@ 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.
|
||||
|
||||
|
12
docs/THANKS
12
docs/THANKS
@@ -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>
|
||||
@@ -92,3 +92,9 @@ Jean-Philippe Barrette-LaPierre <jpb@rrette.com>
|
||||
Richard Bramante <RBramante@on.com>
|
||||
Daniel Kouril <kouril@ics.muni.cz>
|
||||
Dirk Manske <dm@nettraffic.de>
|
||||
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>
|
||||
|
69
docs/TODO
69
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
|
||||
|
||||
@@ -55,6 +57,13 @@ TODO
|
||||
|
||||
FTP
|
||||
|
||||
* Optimize the way libcurl uses CWD on each new request over a persistent
|
||||
connection (on FTP) even if it doesn't have to.
|
||||
|
||||
* 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.
|
||||
|
||||
* Support the most common FTP proxies, Philip Newton provided a list
|
||||
allegedly from ncftp:
|
||||
http://curl.haxx.se/mail/archive-2003-04/0126.html
|
||||
@@ -68,11 +77,6 @@ TODO
|
||||
* Since USERPWD always override the user and password specified in URLs, we
|
||||
might need another way to specify user+password for anonymous ftp logins.
|
||||
|
||||
* Add FTPS support with SSL for the data connection too. This should be made
|
||||
according to the specs written in draft-murray-auth-ftp-ssl-12.txt,
|
||||
"Securing FTP with TLS", valid until 28th February, 2004.
|
||||
http://curl.haxx.se/rfc/draft-murray-auth-ftp-ssl-12.txt
|
||||
|
||||
HTTP
|
||||
|
||||
* Digest and GSS-Negotiate support for HTTP proxies. They only work on
|
||||
@@ -94,6 +98,15 @@ TODO
|
||||
|
||||
SSL
|
||||
|
||||
* Anton Fedorov's "dumpcert" patch:
|
||||
http://curl.haxx.se/mail/lib-2004-03/0088.html
|
||||
|
||||
* Evaluate/apply Gertjan van Wingerde's SSL patches:
|
||||
http://curl.haxx.se/mail/lib-2004-03/0087.html
|
||||
|
||||
* Peter Sylvester's "Most Significant Common Name" change. Feedback welcome.
|
||||
At least the UTF8 conversion and comparison should be done. Patch?
|
||||
|
||||
* If you really want to improve the SSL situation, you should probably have a
|
||||
look at SSL cafile loading as well - quick traces look to me like these are
|
||||
done on every request as well, when they should only be necessary once per
|
||||
@@ -153,8 +166,27 @@ TODO
|
||||
which should overwrite the program reasonable defaults (plain/text,
|
||||
8bit...) (Idea brough to us by kromJx)
|
||||
|
||||
* ability to specify the classic computing suffixes on the range
|
||||
specifications. For example, to download the first 500 Kilobytes of a file,
|
||||
be able to specify the following for the -r option: "-r 0-500K" or for the
|
||||
first 2 Megabytes of a file: "-r 0-2M". (Mark Smith suggested)
|
||||
|
||||
* --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.
|
||||
|
||||
@@ -164,11 +196,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.
|
||||
|
@@ -1,7 +1,7 @@
|
||||
Online: http://curl.haxx.se/docs/httpscripting.shtml
|
||||
Author: Daniel Stenberg <daniel@haxx.se>
|
||||
Date: October 31, 2001
|
||||
Version: 0.5
|
||||
Date: November 6, 2001
|
||||
Version: 0.6
|
||||
|
||||
The Art Of Scripting HTTP Requests Using Curl
|
||||
=============================================
|
||||
@@ -65,7 +65,8 @@ Version: 0.5
|
||||
|
||||
All HTTP replies contain a set of headers that are normally hidden, use
|
||||
curl's -i option to display them as well as the rest of the document. You can
|
||||
also ask the remote server for ONLY the headers by using the -I option.
|
||||
also ask the remote server for ONLY the headers by using the -I option (which
|
||||
will make curl issue a HEAD request).
|
||||
|
||||
4. Forms
|
||||
|
||||
@@ -122,17 +123,22 @@ Version: 0.5
|
||||
|
||||
<form method="POST" action="junk.cgi">
|
||||
<input type=text name="birthyear">
|
||||
<input type=submit name=press value="OK">
|
||||
<input type=submit name=press value=" OK ">
|
||||
</form>
|
||||
|
||||
And to use curl to post this form with the same data filled in as before, we
|
||||
could do it like:
|
||||
|
||||
curl -d "birthyear=1905&press=OK" www.hotmail.com/when/junk.cgi
|
||||
curl -d "birthyear=1905&press=%20OK%20" www.hotmail.com/when/junk.cgi
|
||||
|
||||
This kind of POST will use the Content-Type
|
||||
application/x-www-form-urlencoded and is the most widely used POST kind.
|
||||
|
||||
The data you send to the server MUST already be properly encoded, curl will
|
||||
not do that for you. For example, if you want the data to contain a space,
|
||||
you need to replace that space with %20 etc. Failing to comply with this
|
||||
will most likely cause your data to be received wrongly and messed up.
|
||||
|
||||
4.3 FILE UPLOAD POST
|
||||
|
||||
Back in late 1995 they defined a new way to post data over HTTP. It was
|
||||
@@ -202,14 +208,18 @@ Version: 0.5
|
||||
|
||||
Authentication is the ability to tell the server your username and password
|
||||
so that it can verify that you're allowed to do the request you're doing. The
|
||||
basic authentication used in HTTP is *plain* *text* based, which means it
|
||||
sends username and password only slightly obfuscated, but still fully
|
||||
readable by anyone that sniffs on the network between you and the remote
|
||||
server.
|
||||
Basic authentication used in HTTP (which is the type curl uses by default) is
|
||||
*plain* *text* based, which means it sends username and password only
|
||||
slightly obfuscated, but still fully readable by anyone that sniffs on the
|
||||
network between you and the remote server.
|
||||
|
||||
To tell curl to use a user and password for authentication:
|
||||
|
||||
curl -u name:password www.secrets.com
|
||||
|
||||
The site might require a different authentication method (check the headers
|
||||
returned by the server), and then --ntlm, --digest, --negotiate or even
|
||||
--anyauth might be options that suit you.
|
||||
|
||||
Sometimes your HTTP access is only available through the use of a HTTP
|
||||
proxy. This seems to be especially common at various companies. A HTTP proxy
|
||||
@@ -218,6 +228,9 @@ Version: 0.5
|
||||
|
||||
curl -U proxyuser:proxypassword curl.haxx.se
|
||||
|
||||
If your proxy requires the authentication to be done using the NTLM method,
|
||||
use --proxy-ntlm.
|
||||
|
||||
If you use any one these user+password options but leave out the password
|
||||
part, curl will prompt for the password interactively.
|
||||
|
||||
@@ -309,6 +322,9 @@ Version: 0.5
|
||||
|
||||
curl -D headers_and_cookies www.cookiesite.com
|
||||
|
||||
(Take note that the -c option described below is a better way to store
|
||||
cookies.)
|
||||
|
||||
Curl has a full blown cookie parsing engine built-in that comes to use if you
|
||||
want to reconnect to a server and use cookies that were stored from a
|
||||
previous connection (or handicrafted manually to fool the server into
|
||||
@@ -362,6 +378,11 @@ Version: 0.5
|
||||
|
||||
curl -E mycert.pem https://that.secure.server.com
|
||||
|
||||
curl also tries to verify that the server is who it claims to be, by
|
||||
verifying the server's certificate against a CA cert bundle. Failing the
|
||||
verification will cause curl to deny the connection. You must then use -k in
|
||||
case you want to tell curl to ignore that the server can't be verified.
|
||||
|
||||
12. REFERENCES
|
||||
|
||||
RFC 2616 is a must to read if you want in-depth understanding of the HTTP
|
||||
|
314
docs/curl.1
314
docs/curl.1
@@ -2,7 +2,7 @@
|
||||
.\" nroff -man curl.1
|
||||
.\" Written by Daniel Stenberg
|
||||
.\"
|
||||
.TH curl 1 "22 Oct 2003" "Curl 7.10.8" "Curl Manual"
|
||||
.TH curl 1 "25 Mar 2004" "Curl 7.11.2" "Curl Manual"
|
||||
.SH NAME
|
||||
curl \- transfer a URL
|
||||
.SH SYNOPSIS
|
||||
@@ -56,11 +56,10 @@ file instead of overwriting it. If the file doesn't exist, it will be created.
|
||||
|
||||
If this option is used twice, the second one will disable append mode again.
|
||||
.IP "-A/--user-agent <agent string>"
|
||||
(HTTP)
|
||||
Specify the User-Agent string to send to the HTTP server. Some badly done CGIs
|
||||
fail if its not set to "Mozilla/4.0". To encode blanks in the string,
|
||||
surround the string with single quote marks. This can also be set with the
|
||||
-H/--header flag of course.
|
||||
(HTTP) Specify the User-Agent string to send to the HTTP server. Some badly
|
||||
done CGIs fail if its not set to "Mozilla/4.0". To encode blanks in the
|
||||
string, surround the string with single quote marks. This can also be set
|
||||
with the \fI-H/--header\fP option of course.
|
||||
|
||||
If this option is set more than once, the last one will be the one that's
|
||||
used.
|
||||
@@ -69,7 +68,7 @@ used.
|
||||
most secure one the remote site claims it supports. This is done by first
|
||||
doing a request and checking the response-headers, thus inducing an extra
|
||||
network round-trip. This is used instead of setting a specific authentication
|
||||
method, which you can do with \fI--digest\fP, \fI--ntlm\fP, and
|
||||
method, which you can do with \fI--basic\fP, \fI--digest\fP, \fI--ntlm\fP, and
|
||||
\fI--negotiate\fP. (Added in 7.10.6)
|
||||
|
||||
If this option is used several times, the following occurrences make no
|
||||
@@ -84,14 +83,14 @@ If no '=' letter is used in the line, it is treated as a filename to use to
|
||||
read previously stored cookie lines from, which should be used in this session
|
||||
if they match. Using this method also activates the "cookie parser" which will
|
||||
make curl record incoming cookies too, which may be handy if you're using this
|
||||
in combination with the -L/--location option. The file format of the file to
|
||||
read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie
|
||||
file format.
|
||||
in combination with the \fI-L/--location\fP option. The file format of the
|
||||
file to read cookies from should be plain HTTP headers or the Netscape/Mozilla
|
||||
cookie file format.
|
||||
|
||||
.B NOTE
|
||||
that the file specified with -b/--cookie is only used as input. No cookies
|
||||
will be stored in the file. To store cookies, use the -c/--cookie-jar option
|
||||
or you could even save the HTTP headers to a file using -D/--dump-header!
|
||||
\fBNOTE\fP that the file specified with \fI-b/--cookie\fP is only used as
|
||||
input. No cookies will be stored in the file. To store cookies, use the
|
||||
\fI-c/--cookie-jar\fP option or you could even save the HTTP headers to a file
|
||||
using \fI-D/--dump-header\fP!
|
||||
|
||||
If this option is set more than once, the last one will be the one that's
|
||||
used.
|
||||
@@ -112,7 +111,7 @@ difference.
|
||||
.IP "--ciphers <list of ciphers>"
|
||||
(SSL) Specifies which ciphers to use in the connection. The list of ciphers
|
||||
must be using valid ciphers. Read up on SSL cipher list details on this URL:
|
||||
.I http://www.openssl.org/docs/apps/ciphers.html
|
||||
\fIhttp://www.openssl.org/docs/apps/ciphers.html\fP
|
||||
|
||||
If this option is used several times, the last one will override the others.
|
||||
.IP "--compressed"
|
||||
@@ -166,8 +165,8 @@ 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 more than
|
||||
one -d/--data option is used on the same command line, the data pieces
|
||||
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'.
|
||||
@@ -176,31 +175,32 @@ If you start the data with the letter @, the rest should be a file name to
|
||||
read the data from, or - if you want curl to read the data from stdin. The
|
||||
contents of the file must already be url-encoded. Multiple files can also be
|
||||
specified. Posting data from a file named 'foobar' would thus be done with
|
||||
\&"--data @foobar".
|
||||
\fI--data\fP @foobar".
|
||||
|
||||
To post data purely binary, you should instead use the --data-binary option.
|
||||
To post data purely binary, you should instead use the \fI--data-binary\fP
|
||||
option.
|
||||
|
||||
-d/--data is the same as --data-ascii.
|
||||
\fI-d/--data\fP is the same as \fI--data-ascii\fP.
|
||||
|
||||
If this option is used several times, the ones following the first will
|
||||
append data.
|
||||
.IP "--data-ascii <data>"
|
||||
(HTTP) This is an alias for the -d/--data option.
|
||||
(HTTP) This is an alias for the \fI-d/--data\fP option.
|
||||
|
||||
If this option is used several times, the ones following the first will
|
||||
append data.
|
||||
.IP "--data-binary <data>"
|
||||
(HTTP) This posts data in a similar manner as --data-ascii does, although when
|
||||
using this option the entire context of the posted data is kept as-is. If you
|
||||
want to post a binary file without the strip-newlines feature of the
|
||||
--data-ascii option, this is for you.
|
||||
(HTTP) This posts data in a similar manner as \fI--data-ascii\fP does,
|
||||
although when using this option the entire context of the posted data is kept
|
||||
as-is. If you want to post a binary file without the strip-newlines feature of
|
||||
the \fI--data-ascii\fP option, this is for you.
|
||||
|
||||
If this option is used several times, the ones following the first will
|
||||
append data.
|
||||
.IP "--digest"
|
||||
(HTTP) Enables HTTP Digest authentication. This is a authentication that
|
||||
prevents the password from being sent over the wire in clear text. Use this in
|
||||
combination with the normal -u/--user option to set user name and
|
||||
combination with the normal \fI-u/--user\fP option to set user name and
|
||||
password. See also \fI--ntlm\fP, \fI--negotiate\fP and \fI--anyauth\fP for
|
||||
related options. (Added in curl 7.10.6)
|
||||
|
||||
@@ -226,8 +226,8 @@ Write the protocol headers to the specified file.
|
||||
|
||||
This option is handy to use when you want to store the headers that a HTTP
|
||||
site sends to you. Cookies from the headers could then be read in a second
|
||||
curl invoke by using the -b/--cookie option! The -c/--cookie-jar option is
|
||||
however a better way to store cookies.
|
||||
curl invoke by using the \fI-b/--cookie\fP option! The \fI-c/--cookie-jar\fP
|
||||
option is however a better way to store cookies.
|
||||
|
||||
When used on FTP, the ftp server response lines are considered being "headers"
|
||||
and thus are saved there.
|
||||
@@ -235,11 +235,10 @@ and thus are saved there.
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-e/--referer <URL>"
|
||||
(HTTP) Sends the "Referer Page" information to the HTTP server. This can also
|
||||
be set with the -H/--header flag of course. When used with
|
||||
.I -L/--location
|
||||
you can append ";auto" to the referer URL to make curl automatically set the
|
||||
previous URL when it follows a Location: header. The ";auto" string can be
|
||||
used alone, even if you don't set an initial referer.
|
||||
be set with the \fI-H/--header\fP flag of course. When used with
|
||||
\fI-L/--location\fP you can append ";auto" to the referer URL to make curl
|
||||
automatically set the previous URL when it follows a Location: header. The
|
||||
";auto" string can be used alone, even if you don't set an initial referer.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--environment"
|
||||
@@ -251,8 +250,7 @@ If this option is used several times, each occurrence will toggle this on/off.
|
||||
.IP "--egd-file <file>"
|
||||
(HTTPS) Specify the path name to the Entropy Gathering Daemon socket. The
|
||||
socket is used to seed the random engine for SSL connections. See also the
|
||||
.I "--random-file"
|
||||
option.
|
||||
\fI--random-file\fP option.
|
||||
.IP "-E/--cert <certificate[:password]>"
|
||||
(HTTPS)
|
||||
Tells curl to use the specified certificate file when getting a file
|
||||
@@ -261,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
|
||||
@@ -279,9 +282,10 @@ If this option is used several times, the last one will be used.
|
||||
.IP "--capath <CA certificate directory>"
|
||||
(HTTPS) Tells curl to use the specified certificate directory to verify the
|
||||
peer. The certificates must be in PEM format, and the directory must have been
|
||||
processed using the c_rehash utility supplied with openssl. Using --capath can
|
||||
allow curl to make https connections much more efficiently than using --cacert
|
||||
if the --cacert file contains many CA certificates.
|
||||
processed using the c_rehash utility supplied with openssl. Using
|
||||
\fI--capath\fP can allow curl to make https connections much more efficiently
|
||||
than using \fI--cacert\fP if the \fI--cacert\fP file contains many CA
|
||||
certificates.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-f/--fail"
|
||||
@@ -294,9 +298,19 @@ prevent curl from outputting that and fail silently instead.
|
||||
If this option is used twice, the second will again disable silent failure.
|
||||
.IP "--ftp-create-dirs"
|
||||
(FTP) When an FTP URL/operation uses a path that doesn't currently exist on
|
||||
the server, the standard behaviour of curl is to fail. Using this option, curl
|
||||
the server, the standard behavior of curl is to fail. Using this option, curl
|
||||
will instead attempt to create missing directories. (Added in 7.10.7)
|
||||
|
||||
If this option is used twice, the second will again disable silent failure.
|
||||
.IP "--ftp-pasv"
|
||||
(FTP) Use PASV when transfering. PASV is the internal default behavior, but
|
||||
using this option can be used to override a previos --ftp-port option. (Added
|
||||
in 7.11.0)
|
||||
|
||||
If this option is used twice, the second will again disable silent failure.
|
||||
.IP "--ftp-ssl"
|
||||
(FTP) Make the FTP connection switch to use SSL/TLS. (Added in 7.11.0)
|
||||
|
||||
If this option is used twice, the second will again disable silent failure.
|
||||
.IP "-F/--form <name=content>"
|
||||
(HTTP) This lets curl emulate a filled in form in which a user has pressed the
|
||||
@@ -331,10 +345,10 @@ you can specify URLs that contain the letters {}[] without having them being
|
||||
interpreted by curl itself. Note that these letters are not normal legal URL
|
||||
contents but they should be encoded according to the URI standard.
|
||||
.IP "-G/--get"
|
||||
When used, this option will make all data specified with -d/--data or
|
||||
--data-binary to be used in a HTTP GET request instead of the POST request
|
||||
that otherwise would be used. The data will be appended to the URL with a '?'
|
||||
separator.
|
||||
When used, this option will make all data specified with \fI-d/--data\fP or
|
||||
\fI--data-binary\fP to be used in a HTTP GET request instead of the POST
|
||||
request that otherwise would be used. The data will be appended to the URL
|
||||
with a '?' separator.
|
||||
|
||||
If used in combination with -I, the POST data will instead be appended to the
|
||||
URL with a HEAD request.
|
||||
@@ -352,6 +366,8 @@ set headers without knowing perfectly well what you're doing. Replacing an
|
||||
internal header with one without content on the right side of the colon will
|
||||
prevent that header from appearing.
|
||||
|
||||
See also the \fI-A/--user-agent\fP and \fI-e/--referer\fP options.
|
||||
|
||||
This option can be used multiple times to add/replace/remove multiple headers.
|
||||
.IP "-i/--include"
|
||||
(HTTP)
|
||||
@@ -363,7 +379,7 @@ If this option is used twice, the second will again disable header include.
|
||||
Perform an operation using a specified interface. You can enter interface
|
||||
name, IP address or host name. An example could look like:
|
||||
|
||||
.B "curl --interface eth0:1 http://www.netscape.com/"
|
||||
curl --interface eth0:1 http://www.netscape.com/
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "-I/--head"
|
||||
@@ -386,16 +402,27 @@ If this option is used several times, each occurrence will toggle this on/off.
|
||||
and transfers. Starting with curl 7.10, all SSL connections will be attempted
|
||||
to be made secure by using the CA certificate bundle installed by
|
||||
default. This makes all connections considered "insecure" to fail unless
|
||||
-k/--insecure is used.
|
||||
|
||||
This option is ignored if --cacert or --capath is used!
|
||||
\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-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>"
|
||||
Specify which config file to read curl arguments from. The config file is a
|
||||
@@ -409,7 +436,7 @@ treated as a comment.
|
||||
Specify the filename as '-' to make curl read the file from stdin.
|
||||
|
||||
Note that to be able to specify a URL in the config file, you need to specify
|
||||
it using the --url option, and not by simply writing the URL on its own
|
||||
it using the \fI--url\fP option, and not by simply writing the URL on its own
|
||||
line. So, it could look similar to this:
|
||||
|
||||
url = "http://curl.haxx.se/docs/"
|
||||
@@ -420,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.
|
||||
|
||||
@@ -443,19 +473,20 @@ 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"
|
||||
(HTTP/HTTPS) Like \fI--location\fP, but will allow sending the name + password
|
||||
to all hosts that the site may redirect to. This may or may not introduce a
|
||||
security breach if the site redirects you do a site to which you'll send your
|
||||
authentication info (which is plaintext in the case of HTTP Basic
|
||||
authentication).
|
||||
(HTTP/HTTPS) Like \fI-L/--location\fP, but will allow sending the name +
|
||||
password to all hosts that the site may redirect to. This may or may not
|
||||
introduce a security breach if the site redirects you do a site to which
|
||||
you'll send your authentication info (which is plaintext in the case of HTTP
|
||||
Basic authentication).
|
||||
|
||||
If this option is used twice, the second will again disable location following.
|
||||
.IP "--max-filesize <bytes>"
|
||||
@@ -476,11 +507,9 @@ If this option is used several times, the last one will be used.
|
||||
.IP "-M/--manual"
|
||||
Manual. Display the huge help text.
|
||||
.IP "-n/--netrc"
|
||||
Makes curl scan the
|
||||
.I .netrc
|
||||
file in the user's home directory for login name and password. This is
|
||||
typically used for ftp on unix. If used with http, curl will enable user
|
||||
authentication. See
|
||||
Makes curl scan the \fI.netrc\fP file in the user's home directory for login
|
||||
name and password. This is typically used for ftp on unix. If used with http,
|
||||
curl will enable user authentication. See
|
||||
.BR netrc(4)
|
||||
or
|
||||
.BR ftp(1)
|
||||
@@ -489,14 +518,16 @@ hasn't the right permissions (it should not be world nor group
|
||||
readable). The environment variable "HOME" is used to find the home
|
||||
directory.
|
||||
|
||||
A quick and very simple example of how to setup a
|
||||
.I .netrc
|
||||
to allow curl to ftp to the machine host.domain.com with user name
|
||||
\&'myself' and password 'secret' should look similar to:
|
||||
A quick and very simple example of how to setup a \fI.netrc\fP to allow curl
|
||||
to ftp to the machine host.domain.com with user name \&'myself' and password
|
||||
'secret' should look similar to:
|
||||
|
||||
.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
|
||||
@@ -504,9 +535,9 @@ meant as a support for Kerberos5 authentication but may be also used along
|
||||
with another authentication methods. For more information see IETF draft
|
||||
draft-brezak-spnego-http-04.txt. (Added in 7.10.6)
|
||||
|
||||
\fBNOTE\fP that this option requiures that the library was built with GSSAPI
|
||||
support. This is not very common. Use \fIcurl --version\fP to see if your
|
||||
version supports GSS-Negotiate.
|
||||
This option requiures that the library was built with GSSAPI support. This is
|
||||
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
|
||||
difference.
|
||||
@@ -525,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)
|
||||
|
||||
\fBNOTE\fP that 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.
|
||||
@@ -544,46 +578,52 @@ 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/--ftpport <address>"
|
||||
(FTP)
|
||||
Reverses the initiator/listener roles when connecting with ftp. This
|
||||
switch makes Curl use the PORT command instead of PASV. In
|
||||
practice, PORT tells the server to connect to the client's specified
|
||||
address and port, while PASV asks the server for an ip address and
|
||||
port to connect to. <address> should be one of:
|
||||
.IP "-P/--ftp-port <address>"
|
||||
(FTP) Reverses the initiator/listener roles when connecting with ftp. This
|
||||
switch makes Curl use the PORT command instead of PASV. In practice, PORT
|
||||
tells the server to connect to the client's specified address and port, while
|
||||
PASV asks the server for an ip address and port to connect to. <address>
|
||||
should be one of:
|
||||
.RS
|
||||
.TP 12
|
||||
.B interface
|
||||
.IP interface
|
||||
i.e "eth0" to specify which interface's IP address you want to use (Unix only)
|
||||
.TP
|
||||
.B "IP address"
|
||||
.IP "IP address"
|
||||
i.e "192.168.10.1" to specify exact IP number
|
||||
.TP
|
||||
.B "host name"
|
||||
.IP "host name"
|
||||
i.e "my.host.domain" to specify machine
|
||||
.TP
|
||||
.B "-"
|
||||
.IP "-"
|
||||
(any single-letter string) to make it pick the machine's default
|
||||
.RE
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
If this option is used several times, the last one will be used. Disable the
|
||||
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
|
||||
.I $HOME/.curlrc
|
||||
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.
|
||||
.IP "-Q/--quote <comand>"
|
||||
(FTP) Send an arbitrary command to the remote FTP server, by using the QUOTE
|
||||
@@ -598,9 +638,7 @@ This option can be used multiple times.
|
||||
.IP "--random-file <file>"
|
||||
(HTTPS) Specify the path name to file containing what will be considered as
|
||||
random data. The data is used to seed the random engine for SSL connections.
|
||||
See also the
|
||||
.I "--edg-file"
|
||||
option.
|
||||
See also the \fI--egd-file\fP option.
|
||||
.IP "-r/--range <range>"
|
||||
(HTTP/FTP)
|
||||
Retrieve a byte range (i.e a partial document) from a HTTP/1.1 or FTP
|
||||
@@ -655,12 +693,25 @@ 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
|
||||
you're using a shell with decent redirecting capabilities.
|
||||
|
||||
If this option is used several times, the last one will be used.
|
||||
.IP "--tcp-nodelay"
|
||||
Turn on the TCP_NODELAY option. See the \fIcurl_easy_setopt(3)\fP man page for
|
||||
details about this option. (Added in 7.11.2)
|
||||
|
||||
If this option is used several times, each occurance toggles this on/off.
|
||||
.IP "-t/--telnet-option <OPT=val>"
|
||||
Pass options to the telnet protocol. Supported options are:
|
||||
|
||||
@@ -704,35 +755,26 @@ 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>"
|
||||
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
|
||||
.I -o
|
||||
or the
|
||||
.I -O
|
||||
options.
|
||||
This option may be used any number of times. To control where this URL is
|
||||
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
|
||||
@@ -756,8 +798,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
|
||||
@@ -887,9 +951,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"
|
||||
@@ -987,7 +1051,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();
|
||||
|
@@ -51,11 +51,6 @@
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
#if (LIBCURL_VERSION_NUM < 0x070907)
|
||||
#error "too old libcurl version, get the latest!"
|
||||
#endif
|
||||
|
||||
|
||||
enum fcurl_type_e { CFTYPE_NONE=0, CFTYPE_FILE=1, CFTYPE_CURL=2 };
|
||||
|
||||
struct fcurl_data
|
||||
@@ -236,7 +231,7 @@ url_fopen(char *url,const char *operation)
|
||||
file->handle.curl = curl_easy_init();
|
||||
|
||||
curl_easy_setopt(file->handle.curl, CURLOPT_URL, url);
|
||||
curl_easy_setopt(file->handle.curl, CURLOPT_FILE, file);
|
||||
curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file);
|
||||
curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, FALSE);
|
||||
curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback);
|
||||
|
||||
|
@@ -58,7 +58,7 @@ int main(void)
|
||||
/* Define our callback to get called when there's data to be written */
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
|
||||
/* Set a pointer to our struct to pass to the callback */
|
||||
curl_easy_setopt(curl, CURLOPT_FILE, &ftpfile);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
|
||||
|
||||
/* Switch on full protocol/debug output */
|
||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
|
||||
|
@@ -45,7 +45,7 @@ int main(int argc, char **argv)
|
||||
if(curl) {
|
||||
/* Get a file listing from sunet */
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.sunet.se/");
|
||||
curl_easy_setopt(curl, CURLOPT_FILE, ftpfile);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);
|
||||
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
|
||||
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile);
|
||||
res = curl_easy_perform(curl);
|
||||
|
@@ -70,10 +70,10 @@ int main(int argc, char **argv)
|
||||
curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
|
||||
|
||||
/* now specify which file to upload */
|
||||
curl_easy_setopt(curl, CURLOPT_INFILE, hd_src);
|
||||
curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
|
||||
|
||||
/* and give the size of the upload (optional) */
|
||||
curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size);
|
||||
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_info.st_size);
|
||||
|
||||
/* Now run off and do what you've been told! */
|
||||
res = curl_easy_perform(curl);
|
||||
|
@@ -13,9 +13,6 @@
|
||||
* This exact source code has not been verified to work.
|
||||
*/
|
||||
|
||||
/* to make this work under windows, use the win32-functions from the
|
||||
win32socket.c file as well */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
@@ -51,6 +48,8 @@ int main(int argc, char **argv)
|
||||
chunk.memory=NULL; /* we expect realloc(NULL, size) to work */
|
||||
chunk.size = 0; /* no data at this point */
|
||||
|
||||
curl_global_init(CURL_GLOBAL_ALL);
|
||||
|
||||
/* init the curl session */
|
||||
curl_handle = curl_easy_init();
|
||||
|
||||
@@ -61,7 +60,7 @@ int main(int argc, char **argv)
|
||||
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
|
||||
|
||||
/* we pass our 'chunk' struct to the callback function */
|
||||
curl_easy_setopt(curl_handle, CURLOPT_FILE, (void *)&chunk);
|
||||
curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
|
||||
|
||||
/* get it! */
|
||||
curl_easy_perform(curl_handle);
|
||||
|
@@ -78,14 +78,15 @@ int main(int argc, char **argv)
|
||||
/* HTTP PUT please */
|
||||
curl_easy_setopt(curl, CURLOPT_PUT, TRUE);
|
||||
|
||||
/* specify target */
|
||||
/* specify target URL, and note that this URL should include a file
|
||||
name, not only a directory */
|
||||
curl_easy_setopt(curl,CURLOPT_URL, url);
|
||||
|
||||
/* now specify which file to upload */
|
||||
curl_easy_setopt(curl, CURLOPT_INFILE, hd_src);
|
||||
curl_easy_setopt(curl, CURLOPT_READDATA, hd_src);
|
||||
|
||||
/* and give the size of the upload (optional) */
|
||||
curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size);
|
||||
/* and give the size of the upload */
|
||||
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, file_info.st_size);
|
||||
|
||||
/* Now run off and do what you've been told! */
|
||||
res = curl_easy_perform(curl);
|
||||
|
@@ -70,6 +70,8 @@ int main(int argc, char **argv)
|
||||
switch(rc) {
|
||||
case -1:
|
||||
/* select error */
|
||||
still_running = 0;
|
||||
printf("select() returns error, this is badness\n");
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
|
@@ -10,26 +10,14 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <curl/curl.h>
|
||||
|
||||
/* to make this work under windows, use the win32-functions from the
|
||||
docs/examples/win32socket.c file as well */
|
||||
|
||||
/* This example REQUIRES libcurl 7.7 or later */
|
||||
#if (LIBCURL_VERSION_NUM < 0x070700)
|
||||
#error Too old libcurl version, upgrade or stay away.
|
||||
#endif
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
|
||||
#ifdef MALLOCDEBUG
|
||||
/* this sends all memory debug messages to a specified logfile */
|
||||
curl_memdebug("memdump");
|
||||
#endif
|
||||
curl_global_init(CURL_GLOBAL_ALL);
|
||||
|
||||
curl = curl_easy_init();
|
||||
if(curl) {
|
||||
|
@@ -10,21 +10,11 @@
|
||||
* An example source code that issues a HTTP POST and we provide the actual
|
||||
* data through a read callback.
|
||||
*
|
||||
* Please be aware of the fact that the size of the posted data MUST be
|
||||
* specified before the transfer is being made (with CURLOPT_POSTFIELDSIZE).
|
||||
* This requirement will change when libcurl starts supporting chunked-encoded
|
||||
* sends.
|
||||
*
|
||||
* This example requires libcurl 7.9.6 or later.
|
||||
*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <curl/curl.h>
|
||||
|
||||
#if LIBCURL_VERSION_NUM < 0x070906
|
||||
#error this example source requires libcurl 7.9.6 or newer
|
||||
#endif
|
||||
|
||||
char data[]="this is what we post to the silly web server";
|
||||
|
||||
struct WriteThis {
|
||||
@@ -74,7 +64,7 @@ int main(void)
|
||||
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
|
||||
|
||||
/* pointer to pass to our read function */
|
||||
curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
|
||||
curl_easy_setopt(curl, CURLOPT_READDATA, &pooh);
|
||||
|
||||
/* get verbose debug output please */
|
||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
|
||||
|
@@ -21,9 +21,6 @@
|
||||
* This exact source code has not been verified to work.
|
||||
*/
|
||||
|
||||
/* to make this work under windows, use the win32-functions from the
|
||||
win32socket.c file as well */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
@@ -31,20 +28,18 @@
|
||||
#include <curl/types.h>
|
||||
#include <curl/easy.h>
|
||||
|
||||
#if LIBCURL_VERSION_NUM < 0x070900
|
||||
#error "curl_formadd() is not introduced until libcurl 7.9 and later"
|
||||
#endif
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
CURL *curl;
|
||||
CURLcode res;
|
||||
|
||||
struct HttpPost *formpost=NULL;
|
||||
struct HttpPost *lastptr=NULL;
|
||||
struct curl_httppost *formpost=NULL;
|
||||
struct curl_httppost *lastptr=NULL;
|
||||
struct curl_slist *headerlist=NULL;
|
||||
char buf[] = "Expect:";
|
||||
|
||||
curl_global_init(CURL_GLOBAL_ALL);
|
||||
|
||||
/* Fill in the file upload field */
|
||||
curl_formadd(&formpost,
|
||||
&lastptr,
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user