Compare commits
10862 Commits
curl-7_9_5
...
curl-7_21_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8249b0522d | ||
|
|
a43201e578 | ||
|
|
3c2ee9c341 | ||
|
|
8d31d70114 | ||
|
|
9754b20adb | ||
|
|
17c1e3bcba | ||
|
|
6cf90c6a7b | ||
|
|
67d76dd520 | ||
|
|
8348dd96dd | ||
|
|
2596eb6d19 | ||
|
|
625932d398 | ||
|
|
37201e3c36 | ||
|
|
06869597c3 | ||
|
|
517f3a1b8f | ||
|
|
495d3e07d4 | ||
|
|
44e5e37f38 | ||
|
|
1d594772fd | ||
|
|
ff26895b5c | ||
|
|
d7134036b2 | ||
|
|
7115245f88 | ||
|
|
dc2157a087 | ||
|
|
5d5dd08e77 | ||
|
|
cfbdbf9783 | ||
|
|
b24e872502 | ||
|
|
50a1d5ee1c | ||
|
|
6ccbd1bee4 | ||
|
|
1267719735 | ||
|
|
c49e9683b8 | ||
|
|
6ea043a504 | ||
|
|
af4eae77ac | ||
|
|
7d342c723c | ||
|
|
5c2b6b2d3e | ||
|
|
11958ed331 | ||
|
|
15201da4ca | ||
|
|
59bad26bb2 | ||
|
|
f91d578674 | ||
|
|
9df8257301 | ||
|
|
992ceae386 | ||
|
|
364fd2f1ad | ||
|
|
1cbe66fbc8 | ||
|
|
f8cf037ecf | ||
|
|
6028fdb305 | ||
|
|
45456135d5 | ||
|
|
52beeb2c9f | ||
|
|
544f15af98 | ||
|
|
000ac0c975 | ||
|
|
fc308282ac | ||
|
|
e9f3513264 | ||
|
|
a1a5ba3d0a | ||
|
|
687df5c8c3 | ||
|
|
40253e32fe | ||
|
|
f97a7eb400 | ||
|
|
3cf658fc24 | ||
|
|
5247266df6 | ||
|
|
dfa6ee890d | ||
|
|
bd5df39a29 | ||
|
|
6f3dc2a726 | ||
|
|
b01fb30f9c | ||
|
|
f38e52071e | ||
|
|
811fcccfc9 | ||
|
|
b552ca223e | ||
|
|
a93522f68d | ||
|
|
425060fed1 | ||
|
|
fbee86a9e2 | ||
|
|
2f0c118577 | ||
|
|
53e47ca947 | ||
|
|
314117cbf1 | ||
|
|
d296dd4ee8 | ||
|
|
04eff9beb9 | ||
|
|
b5c3feda17 | ||
|
|
01c309e186 | ||
|
|
d873c820bd | ||
|
|
41cf1f4090 | ||
|
|
6ad0acb608 | ||
|
|
cfbb351e22 | ||
|
|
11f53b9a18 | ||
|
|
eb33f5d1f8 | ||
|
|
cef30e0924 | ||
|
|
a13128596c | ||
|
|
6d2ccfed48 | ||
|
|
7738b15977 | ||
|
|
0fa4b41c2b | ||
|
|
7d166b0ef6 | ||
|
|
affff47b3d | ||
|
|
d6981cb508 | ||
|
|
40ecd6c9b8 | ||
|
|
181b08babb | ||
|
|
7abf3b97fe | ||
|
|
4a1384a8b4 | ||
|
|
d76874a665 | ||
|
|
c8d42b2f1c | ||
|
|
84332b60b9 | ||
|
|
bc0699f226 | ||
|
|
157e6d4e7e | ||
|
|
d4e6404135 | ||
|
|
3992309285 | ||
|
|
241b704e1f | ||
|
|
1dbb9a0ba4 | ||
|
|
e7743aa7b4 | ||
|
|
915032ea02 | ||
|
|
e01cc7737c | ||
|
|
bd36927f18 | ||
|
|
0417d34533 | ||
|
|
a57611e308 | ||
|
|
12533bb184 | ||
|
|
9be951a415 | ||
|
|
7239538d9a | ||
|
|
18a9ee6bdf | ||
|
|
f3b77e5611 | ||
|
|
89924a897d | ||
|
|
bcefe839c7 | ||
|
|
458dd4550b | ||
|
|
f7ae7b3623 | ||
|
|
31dd8ab1d6 | ||
|
|
8da56e12c6 | ||
|
|
0a04078916 | ||
|
|
1182c8bdcd | ||
|
|
55d2460fc3 | ||
|
|
a89d7997b7 | ||
|
|
d8383220ec | ||
|
|
8e7ec794f5 | ||
|
|
bd5d478dd4 | ||
|
|
1b15b31c86 | ||
|
|
e6d85923c1 | ||
|
|
614bae813e | ||
|
|
bd6a695545 | ||
|
|
d63bdba097 | ||
|
|
43edcc4a2e | ||
|
|
01c2b397aa | ||
|
|
51a757c11b | ||
|
|
7a99672042 | ||
|
|
7eecfb536a | ||
|
|
a09814138a | ||
|
|
42432d67cc | ||
|
|
e91d167ff8 | ||
|
|
88af6fbf98 | ||
|
|
6b6fe2a4d5 | ||
|
|
54aca3c5ec | ||
|
|
0a9cf4365a | ||
|
|
343c4c7072 | ||
|
|
6a0d3233ff | ||
|
|
d3714b016d | ||
|
|
da6e992e1d | ||
|
|
bb60fe0c1a | ||
|
|
feecf63a96 | ||
|
|
cbdd1cbcde | ||
|
|
b3d7161642 | ||
|
|
3b47d231ac | ||
|
|
7977bc3dfa | ||
|
|
00fdafb0a1 | ||
|
|
f737e94164 | ||
|
|
a0dd9df9ab | ||
|
|
4724b9d966 | ||
|
|
8098d9417c | ||
|
|
605207a3a6 | ||
|
|
43d20d81a5 | ||
|
|
bc0f3dd15e | ||
|
|
475c19c42b | ||
|
|
c072bd4609 | ||
|
|
684830cb2a | ||
|
|
51248a9bdd | ||
|
|
3b24076c3b | ||
|
|
077125e4a2 | ||
|
|
df06182d86 | ||
|
|
d939e0f410 | ||
|
|
69d07feb14 | ||
|
|
1c4538610b | ||
|
|
2c72732ebf | ||
|
|
e1c2c9be1a | ||
|
|
89da532445 | ||
|
|
b38189c7b4 | ||
|
|
1bb04927f3 | ||
|
|
3fd01be648 | ||
|
|
5ae6db321f | ||
|
|
0546d448ce | ||
|
|
b4fa27ae4b | ||
|
|
12043e3c9c | ||
|
|
a324fa7b97 | ||
|
|
a9483b1f4a | ||
|
|
40f8aaedb7 | ||
|
|
374f48675b | ||
|
|
20ae9d4f71 | ||
|
|
35955179c6 | ||
|
|
b1c1b9bb76 | ||
|
|
123f80ae54 | ||
|
|
c54ab4dca7 | ||
|
|
233ec511db | ||
|
|
4b96e5c70f | ||
|
|
75743b009b | ||
|
|
01459828ef | ||
|
|
99179da4cc | ||
|
|
645bdd837a | ||
|
|
c03cbb38ad | ||
|
|
63661d8e83 | ||
|
|
4a0493f789 | ||
|
|
eadeb5bd9a | ||
|
|
9190e2876e | ||
|
|
b4f0e1291f | ||
|
|
dd8568739c | ||
|
|
97b497a75f | ||
|
|
d3c813e726 | ||
|
|
9e480973eb | ||
|
|
2e056353b0 | ||
|
|
606b933a4f | ||
|
|
d17709da31 | ||
|
|
0bb6deda72 | ||
|
|
0a29e2445c | ||
|
|
700335103e | ||
|
|
368fd5d27b | ||
|
|
81239edb89 | ||
|
|
22f3b01478 | ||
|
|
5f53c9d94a | ||
|
|
04cfef24a1 | ||
|
|
1d26151d5f | ||
|
|
aabd27d9aa | ||
|
|
dcc061543a | ||
|
|
2ffe834bff | ||
|
|
027ceb37a1 | ||
|
|
510836f80b | ||
|
|
e4af5d6efc | ||
|
|
43b816538f | ||
|
|
77cfeadfa6 | ||
|
|
ea521cf617 | ||
|
|
a82c5a39c4 | ||
|
|
7764795c06 | ||
|
|
d6706294e0 | ||
|
|
83305cbf9f | ||
|
|
76255cfdc9 | ||
|
|
ad6bc4d82e | ||
|
|
147609ca6e | ||
|
|
7871fbad4d | ||
|
|
46b9719bbb | ||
|
|
a1a98d5908 | ||
|
|
a799162bc7 | ||
|
|
d62ce21249 | ||
|
|
0825cd80a6 | ||
|
|
04cb15ae9d | ||
|
|
bc8fc9803f | ||
|
|
016ce4b1da | ||
|
|
3e759f4fb6 | ||
|
|
2e8b21833a | ||
|
|
54b0e87796 | ||
|
|
a784ed6065 | ||
|
|
d2621445f1 | ||
|
|
adaf87530d | ||
|
|
8914857092 | ||
|
|
aca0fff4e1 | ||
|
|
d64bd82bdc | ||
|
|
cb6647ce1c | ||
|
|
51427e1947 | ||
|
|
1de6b97a76 | ||
|
|
f09340de8b | ||
|
|
82b55efdba | ||
|
|
16f575ee6c | ||
|
|
38d2afcefb | ||
|
|
7f616eb513 | ||
|
|
fe818c8076 | ||
|
|
a7b9452a6b | ||
|
|
2c1b0624ac | ||
|
|
107146676e | ||
|
|
79dc74e84d | ||
|
|
6be508dcc2 | ||
|
|
82e9b78a38 | ||
|
|
07f45946b5 | ||
|
|
7fb7f24131 | ||
|
|
5b40c11c2f | ||
|
|
9d6a394c44 | ||
|
|
d7b82baf97 | ||
|
|
36e245658b | ||
|
|
d487ade72c | ||
|
|
71be565cf4 | ||
|
|
81512cc02b | ||
|
|
32236dad5e | ||
|
|
b30ce34d84 | ||
|
|
2164b6b463 | ||
|
|
7af5e3c39e | ||
|
|
42930155ab | ||
|
|
e5b3246d0a | ||
|
|
47dda4a1d4 | ||
|
|
a5b7e3205d | ||
|
|
dfce37da23 | ||
|
|
14bfcb96f5 | ||
|
|
87fbcb4494 | ||
|
|
4bfe07640c | ||
|
|
5d93525f30 | ||
|
|
b7848e4a72 | ||
|
|
99ec359b4d | ||
|
|
dfad8a6dad | ||
|
|
d841ab82b8 | ||
|
|
d6be52d80e | ||
|
|
c0111460b0 | ||
|
|
93981bb9b5 | ||
|
|
8f136288c5 | ||
|
|
9799dbebd6 | ||
|
|
b025ac16a6 | ||
|
|
5d43c75c66 | ||
|
|
15fa5dcfe6 | ||
|
|
516dfd1705 | ||
|
|
743bd81e64 | ||
|
|
520cee3fb7 | ||
|
|
fa7341143a | ||
|
|
313a5b05c2 | ||
|
|
01fc53e027 | ||
|
|
0a4ccce054 | ||
|
|
c2888604d7 | ||
|
|
6632d957e7 | ||
|
|
c5e539c312 | ||
|
|
0338994c6a | ||
|
|
2056ca9fea | ||
|
|
cca192e58f | ||
|
|
f3d4b17a9c | ||
|
|
5bd38b70dd | ||
|
|
44f1bef668 | ||
|
|
f38510f4b5 | ||
|
|
689b6929c3 | ||
|
|
68aae7f579 | ||
|
|
a76fa17681 | ||
|
|
72411118ec | ||
|
|
5a16df5e04 | ||
|
|
5a814f6f2c | ||
|
|
81219e8030 | ||
|
|
92b387f57a | ||
|
|
6432fafa1a | ||
|
|
9c7a9f8329 | ||
|
|
6ab2cae55e | ||
|
|
a8f85e778f | ||
|
|
f6b7471f40 | ||
|
|
32edba1999 | ||
|
|
5ccd7c1807 | ||
|
|
4f9b47de8c | ||
|
|
f9db721c1c | ||
|
|
cf9145973b | ||
|
|
d18fb4a129 | ||
|
|
26e3c74ab7 | ||
|
|
753b2a0086 | ||
|
|
7427acc472 | ||
|
|
02892e4fd8 | ||
|
|
10977f57de | ||
|
|
ef1ac363ee | ||
|
|
e6858e267b | ||
|
|
ff8711135e | ||
|
|
7425db3fab | ||
|
|
64ac64e783 | ||
|
|
e7e37a246a | ||
|
|
78b284014b | ||
|
|
9c049e109b | ||
|
|
49f3160d69 | ||
|
|
e78e584035 | ||
|
|
a681d46c1b | ||
|
|
1d265692b7 | ||
|
|
7b913444ec | ||
|
|
909fdc07bf | ||
|
|
8c6793d79a | ||
|
|
643ae2ca8b | ||
|
|
d1837ad90a | ||
|
|
fd10ed56d5 | ||
|
|
7e22d6332b | ||
|
|
3ec7543007 | ||
|
|
604a2bdac8 | ||
|
|
69ccc9f861 | ||
|
|
302507d5dc | ||
|
|
7784e3309d | ||
|
|
0eda142e90 | ||
|
|
e2bd52e553 | ||
|
|
d4fbf2c3f0 | ||
|
|
2b0c2ac49c | ||
|
|
7de44e0a42 | ||
|
|
05de2cf180 | ||
|
|
93e6b1cb7c | ||
|
|
5e1859014b | ||
|
|
e1c38791b7 | ||
|
|
ac8b2ef563 | ||
|
|
efcf372d86 | ||
|
|
675330b8df | ||
|
|
a1a66c7cd6 | ||
|
|
bed30bc6df | ||
|
|
d610519246 | ||
|
|
4f44717590 | ||
|
|
49d309866c | ||
|
|
481c61d060 | ||
|
|
ff438c994e | ||
|
|
5709a0dca2 | ||
|
|
05632d5db9 | ||
|
|
c245a8f92e | ||
|
|
d42f9329dc | ||
|
|
c869ae7447 | ||
|
|
9828b926ae | ||
|
|
8aa68b4cad | ||
|
|
1ac168e576 | ||
|
|
50b51161c9 | ||
|
|
661888c303 | ||
|
|
be28825b2d | ||
|
|
2309b4e330 | ||
|
|
dd0c31ce38 | ||
|
|
123c6d5c82 | ||
|
|
3f96b7827b | ||
|
|
4259d2df7d | ||
|
|
4b351d018e | ||
|
|
e32fe30d0c | ||
|
|
f5857a59bb | ||
|
|
7fd32ce73d | ||
|
|
2a94293efd | ||
|
|
b33ddd615a | ||
|
|
d4cd5411a6 | ||
|
|
6657f12fff | ||
|
|
3cd5b1cfb0 | ||
|
|
6572514ae5 | ||
|
|
abcea311e3 | ||
|
|
c8bfb9e58a | ||
|
|
9599837e63 | ||
|
|
1609685fc2 | ||
|
|
e1d6034977 | ||
|
|
3d3900f032 | ||
|
|
ad76d58e7f | ||
|
|
930742776a | ||
|
|
b40acd8009 | ||
|
|
19ca0c0fbe | ||
|
|
6728334edb | ||
|
|
749fd2f9e9 | ||
|
|
d9291eb4b8 | ||
|
|
8d6e8e00e1 | ||
|
|
12bb308cab | ||
|
|
733f794cb8 | ||
|
|
52cd332b95 | ||
|
|
3709ffc700 | ||
|
|
e37d1b1ee3 | ||
|
|
c7e647b88a | ||
|
|
5bb8bbed1e | ||
|
|
a09be6410f | ||
|
|
e262aaae2b | ||
|
|
a0c3edcc37 | ||
|
|
a24a67bd1e | ||
|
|
3036abb90c | ||
|
|
2e9eb1a2ac | ||
|
|
f5d8c0befc | ||
|
|
21f331ead2 | ||
|
|
f933747088 | ||
|
|
ce54bd113b | ||
|
|
f4551a9678 | ||
|
|
52f088ec1b | ||
|
|
a0fba2f66b | ||
|
|
013d5a72d4 | ||
|
|
9b2cce236f | ||
|
|
cd465e4ada | ||
|
|
6bf071df7e | ||
|
|
7c028a8332 | ||
|
|
13ac29382f | ||
|
|
8719398d05 | ||
|
|
53aa6b21fe | ||
|
|
7842704ee7 | ||
|
|
496002ea1c | ||
|
|
1a1ffb10d0 | ||
|
|
2a056ba49e | ||
|
|
eef316f099 | ||
|
|
03a57308b9 | ||
|
|
507d58435a | ||
|
|
dc21a5e5a1 | ||
|
|
cef95aadeb | ||
|
|
697496ff99 | ||
|
|
bcd1c7c2e9 | ||
|
|
87428e07ca | ||
|
|
01fb0d8497 | ||
|
|
cce81a7f45 | ||
|
|
4ad984043e | ||
|
|
6a8aa246ff | ||
|
|
e25c5283d8 | ||
|
|
5695c4db86 | ||
|
|
aa0f8593b9 | ||
|
|
4186b5b41f | ||
|
|
8904064c3a | ||
|
|
5b778a7ca4 | ||
|
|
439f62bfa8 | ||
|
|
693abbae3a | ||
|
|
e1625ba727 | ||
|
|
338553eda3 | ||
|
|
2abcd132f8 | ||
|
|
dc9f0a9758 | ||
|
|
10affed097 | ||
|
|
25a49ccd21 | ||
|
|
9ac65581bb | ||
|
|
a4a60afabb | ||
|
|
a434cb43e8 | ||
|
|
846b926a3f | ||
|
|
f0d3930346 | ||
|
|
a6fb6b70c7 | ||
|
|
2179ef9fa9 | ||
|
|
048438345a | ||
|
|
6e461e45c3 | ||
|
|
19e089702a | ||
|
|
23bab783d4 | ||
|
|
46b112bcd4 | ||
|
|
f442dd6496 | ||
|
|
bb2d9c3704 | ||
|
|
d5b2d8e081 | ||
|
|
4b43d18c4a | ||
|
|
2596fe0cb7 | ||
|
|
f1106049d9 | ||
|
|
a07bc79117 | ||
|
|
2268657272 | ||
|
|
68d83a8142 | ||
|
|
b4ff6d3007 | ||
|
|
68b73bcfba | ||
|
|
ac04add596 | ||
|
|
c703d01a23 | ||
|
|
975814368a | ||
|
|
dc6adb54fb | ||
|
|
2138ee7628 | ||
|
|
4258e943a1 | ||
|
|
c3b87d1b4f | ||
|
|
547931366d | ||
|
|
b41d3be7fa | ||
|
|
07fc7852d7 | ||
|
|
99f366adf9 | ||
|
|
d20a2469ea | ||
|
|
1abff19a5f | ||
|
|
77066c6e47 | ||
|
|
f2f07dad34 | ||
|
|
06ae8ca5a6 | ||
|
|
d33da42334 | ||
|
|
e118cd4ca0 | ||
|
|
71593dfe57 | ||
|
|
0f4a91afde | ||
|
|
2c2464a682 | ||
|
|
880452d2ed | ||
|
|
e3009f2950 | ||
|
|
cad9c3f55f | ||
|
|
12d01bc5f7 | ||
|
|
bc7615ae2d | ||
|
|
7aef172a34 | ||
|
|
f47b84b57f | ||
|
|
1a5749424b | ||
|
|
a9a5a8e45c | ||
|
|
8044366134 | ||
|
|
15efa262bb | ||
|
|
429e544556 | ||
|
|
680434f313 | ||
|
|
c9f46446d5 | ||
|
|
b77d0db59e | ||
|
|
3205ac35b0 | ||
|
|
381a4d6efe | ||
|
|
f6d288a397 | ||
|
|
013ec6a92f | ||
|
|
e2fc294470 | ||
|
|
d1717e7c90 | ||
|
|
e569ff959f | ||
|
|
839b61c32a | ||
|
|
d28b8d3158 | ||
|
|
2dfbd0d050 | ||
|
|
54879d7763 | ||
|
|
49ba75af26 | ||
|
|
232d17ec64 | ||
|
|
bafba6946c | ||
|
|
da23b16ad8 | ||
|
|
46de140aca | ||
|
|
17a2c32ca9 | ||
|
|
9f6c4daa27 | ||
|
|
ea72194650 | ||
|
|
35e220606d | ||
|
|
55f1e787f3 | ||
|
|
516cf5c8dd | ||
|
|
35fbeda003 | ||
|
|
715e3a806f | ||
|
|
6ebd71d186 | ||
|
|
4ee4e66c4f | ||
|
|
4d19ebe738 | ||
|
|
5312fdcd73 | ||
|
|
fce02e1cab | ||
|
|
15ddc1f134 | ||
|
|
d65cf7889b | ||
|
|
ddab9bd2ec | ||
|
|
eff18763a1 | ||
|
|
3e21f1e971 | ||
|
|
ccffed997e | ||
|
|
6259bcd51f | ||
|
|
a4031dbd85 | ||
|
|
2f3bce1193 | ||
|
|
3cb76e5ebb | ||
|
|
6418c0588d | ||
|
|
124b35aafe | ||
|
|
bbefdf88fd | ||
|
|
06c96d01d2 | ||
|
|
83e91586ef | ||
|
|
c82a1f95eb | ||
|
|
d34982bb65 | ||
|
|
22ed0f5059 | ||
|
|
9bc897f380 | ||
|
|
9b0e57b0f7 | ||
|
|
1d86ebfc88 | ||
|
|
a9b860765d | ||
|
|
483ff1ca75 | ||
|
|
c054b8bfa7 | ||
|
|
340ab2f87f | ||
|
|
f8b16e5ccb | ||
|
|
4bb80cfd75 | ||
|
|
de2cc11a73 | ||
|
|
c656098ee0 | ||
|
|
94f33457d3 | ||
|
|
80675818e0 | ||
|
|
b0e2d47a3e | ||
|
|
0abd928d3d | ||
|
|
597ad5a2ce | ||
|
|
703fa98a48 | ||
|
|
ec4647c0f9 | ||
|
|
33ce0ec1f1 | ||
|
|
1435864030 | ||
|
|
4a8a731476 | ||
|
|
6636fbf238 | ||
|
|
c94d44505f | ||
|
|
0032ce762e | ||
|
|
bdb338b3c7 | ||
|
|
099eed7bf1 | ||
|
|
bc253a4d5f | ||
|
|
a771fb0d41 | ||
|
|
c047fe8e90 | ||
|
|
e45eefcb90 | ||
|
|
844c19cc5b | ||
|
|
4a8570313a | ||
|
|
e59a5cbe4e | ||
|
|
bfc4c33985 | ||
|
|
5af20c70e4 | ||
|
|
bd7430c1ee | ||
|
|
6e5acc2fc1 | ||
|
|
abe3e6b36c | ||
|
|
105e430641 | ||
|
|
4a349f7a54 | ||
|
|
2f9a17fc44 | ||
|
|
bc4582b68a | ||
|
|
e09718d457 | ||
|
|
2c0418f154 | ||
|
|
a74e885bef | ||
|
|
6291a1cf23 | ||
|
|
a872ff742c | ||
|
|
58a1557088 | ||
|
|
422a7869be | ||
|
|
471e8eefb6 | ||
|
|
d2e1ec58f2 | ||
|
|
48032c0880 | ||
|
|
877dad1e24 | ||
|
|
01030e9240 | ||
|
|
a5ca3f1754 | ||
|
|
77a17a21d1 | ||
|
|
6035a4b044 | ||
|
|
469d3ed591 | ||
|
|
3afe2b65b6 | ||
|
|
afdc3d81e9 | ||
|
|
ccfe279117 | ||
|
|
5b5ff41ef1 | ||
|
|
0a713139f6 | ||
|
|
0687bc6bd6 | ||
|
|
424a8882fb | ||
|
|
3fdced357b | ||
|
|
ce2ac665e4 | ||
|
|
0375f70b5c | ||
|
|
7f8980114b | ||
|
|
312494f25f | ||
|
|
8d97b33347 | ||
|
|
b51b703a5b | ||
|
|
071c38988d | ||
|
|
365e75a270 | ||
|
|
b992928f3d | ||
|
|
32413a8e34 | ||
|
|
ada2774ab2 | ||
|
|
a644af129e | ||
|
|
7624527591 | ||
|
|
383bf1e476 | ||
|
|
8c8df3966b | ||
|
|
4344215309 | ||
|
|
0643829444 | ||
|
|
7525670610 | ||
|
|
b32a96eda0 | ||
|
|
82f5ffff8f | ||
|
|
3fd67b5f36 | ||
|
|
1647d64a4b | ||
|
|
d17416190b | ||
|
|
2158e234aa | ||
|
|
cb348a5b1f | ||
|
|
377b2db05b | ||
|
|
78b7d7f7a8 | ||
|
|
5bec1b1cf0 | ||
|
|
cd7b12edff | ||
|
|
1103d0c718 | ||
|
|
aae97c998a | ||
|
|
017c14cc99 | ||
|
|
b90703f594 | ||
|
|
552c3de357 | ||
|
|
aa2f447400 | ||
|
|
184f92d243 | ||
|
|
a1d701d05a | ||
|
|
a114b7b1c0 | ||
|
|
8524c04ca9 | ||
|
|
31630203b1 | ||
|
|
d37a9c4f87 | ||
|
|
88944eb13a | ||
|
|
bd8096b42b | ||
|
|
1e87e4bb4e | ||
|
|
9bd03483ce | ||
|
|
2e83006603 | ||
|
|
fd903eb6be | ||
|
|
2c93ec5303 | ||
|
|
d79b5a0613 | ||
|
|
a62f32d3c2 | ||
|
|
241c0ad5bd | ||
|
|
605bbfc4c0 | ||
|
|
42d365f199 | ||
|
|
31266ca92a | ||
|
|
3f3f6be825 | ||
|
|
01682cca55 | ||
|
|
99a5a5a3e9 | ||
|
|
eb0479575a | ||
|
|
97141d08f7 | ||
|
|
99e9938617 | ||
|
|
6c6dc3f879 | ||
|
|
a1311e5a24 | ||
|
|
5e6ffe353a | ||
|
|
d7cd761047 | ||
|
|
05488d63d0 | ||
|
|
3184a91ec8 | ||
|
|
0dde9056d7 | ||
|
|
a487c80535 | ||
|
|
1e9a946e6d | ||
|
|
7cd5ffc1bf | ||
|
|
fa6631edd5 | ||
|
|
e70c0913b1 | ||
|
|
5b2a31ae41 | ||
|
|
c796f2646e | ||
|
|
d0f6bde732 | ||
|
|
1bd5784a13 | ||
|
|
1f7d9f4f7b | ||
|
|
b6ac8d62a1 | ||
|
|
4ec17a08bc | ||
|
|
aefe0299e0 | ||
|
|
b89789d82f | ||
|
|
a218235964 | ||
|
|
73ad32e125 | ||
|
|
77625f8560 | ||
|
|
1af64730e0 | ||
|
|
eacf62792f | ||
|
|
6ce407305b | ||
|
|
ae3892e8ab | ||
|
|
c74875d94e | ||
|
|
271dc9c582 | ||
|
|
7bede9180d | ||
|
|
f0917cabb5 | ||
|
|
96395a908a | ||
|
|
e9a993b9e9 | ||
|
|
982fe33924 | ||
|
|
fa188eec7b | ||
|
|
bdd3763980 | ||
|
|
1cfa52b67d | ||
|
|
57d3488a0d | ||
|
|
83d34a246e | ||
|
|
76b3c9d70f | ||
|
|
d911e22d8f | ||
|
|
efd1d9dc04 | ||
|
|
88a0060b2e | ||
|
|
4adf7d62d4 | ||
|
|
6add5baa3a | ||
|
|
2a3dafc0cd | ||
|
|
f912f8d5d2 | ||
|
|
af7a5b297f | ||
|
|
344bbcf259 | ||
|
|
240fa29e94 | ||
|
|
010fe5acd5 | ||
|
|
aeec8e0b38 | ||
|
|
2d15ac3d4e | ||
|
|
53deae3781 | ||
|
|
39cc424e81 | ||
|
|
4d0b0cae9e | ||
|
|
8343cb8910 | ||
|
|
a75d9d9169 | ||
|
|
54c60d0067 | ||
|
|
91d05903b4 | ||
|
|
10a11e3abe | ||
|
|
414180b363 | ||
|
|
7603a29fc3 | ||
|
|
002ed5f298 | ||
|
|
044ba6dad2 | ||
|
|
3802d027cd | ||
|
|
3111701c38 | ||
|
|
2c9644b812 | ||
|
|
99daca5a48 | ||
|
|
a6abbb120e | ||
|
|
b0f548fb56 | ||
|
|
364d76aca7 | ||
|
|
6e9a484ea6 | ||
|
|
303f74c740 | ||
|
|
4ea8ad584b | ||
|
|
19b8a80ee9 | ||
|
|
30eb452adf | ||
|
|
92b9b46831 | ||
|
|
83a6b34803 | ||
|
|
43fefab2a1 | ||
|
|
ec3bb8f727 | ||
|
|
463d2d395c | ||
|
|
2fc1752d6e | ||
|
|
296ebf382c | ||
|
|
b91ed67276 | ||
|
|
315253b367 | ||
|
|
3b1de97eaa | ||
|
|
5ce6454d33 | ||
|
|
0653fa107f | ||
|
|
ebe5339003 | ||
|
|
95362af43c | ||
|
|
d14bf09ab8 | ||
|
|
636d2fe00a | ||
|
|
fb2425b147 | ||
|
|
2286f566d0 | ||
|
|
ed2aa87e63 | ||
|
|
f0826974f2 | ||
|
|
d61690ef46 | ||
|
|
a72ce23f16 | ||
|
|
bfae1bd999 | ||
|
|
8a7231d7ae | ||
|
|
4d922545d5 | ||
|
|
1fc32d866a | ||
|
|
230dc699e2 | ||
|
|
3f6854272f | ||
|
|
448f6684bb | ||
|
|
af06a0e497 | ||
|
|
6e38cc9048 | ||
|
|
a240f4d1df | ||
|
|
6f273b1a5f | ||
|
|
f07f17f2a4 | ||
|
|
c713627412 | ||
|
|
b1a35cd3ac | ||
|
|
9cbf69ca0b | ||
|
|
c7d2e4c1e1 | ||
|
|
cbd527843b | ||
|
|
fba233bb34 | ||
|
|
8b49428298 | ||
|
|
19f79e5a79 | ||
|
|
e20f3ecd7e | ||
|
|
c83f7ede26 | ||
|
|
f385fdefbe | ||
|
|
88fe6557e9 | ||
|
|
405e18571e | ||
|
|
094afbeb56 | ||
|
|
1fddcb3f88 | ||
|
|
b723500af0 | ||
|
|
4bfa0b08de | ||
|
|
e536cb085f | ||
|
|
083e2df4ed | ||
|
|
b7997d8a3b | ||
|
|
c80b593e5b | ||
|
|
e37f8164a9 | ||
|
|
35d4c57051 | ||
|
|
f6114f2ec4 | ||
|
|
f9e55c9908 | ||
|
|
3005e63b02 | ||
|
|
65e628cc97 | ||
|
|
738e547815 | ||
|
|
5ec8a3ae06 | ||
|
|
fdfbc5d8da | ||
|
|
504e6d7ae6 | ||
|
|
c3266a5eb1 | ||
|
|
ced1e1e726 | ||
|
|
a41493b3b0 | ||
|
|
6da73d09f1 | ||
|
|
4c0ffd33f5 | ||
|
|
99363a0ee1 | ||
|
|
71260534f9 | ||
|
|
5e62be1d8c | ||
|
|
7e6a67b436 | ||
|
|
5a0a473c30 | ||
|
|
5129442ee7 | ||
|
|
e8fd5d8062 | ||
|
|
2f6dcaa644 | ||
|
|
59939313f8 | ||
|
|
961c504ca5 | ||
|
|
b32d1a9a1d | ||
|
|
4c8adc8fee | ||
|
|
69ac7b0cf8 | ||
|
|
09526fc9e9 | ||
|
|
f0068267ee | ||
|
|
7db7c0af4f | ||
|
|
6bf10a111f | ||
|
|
530fde3a22 | ||
|
|
5b3be2ee35 | ||
|
|
3b8d7fddf7 | ||
|
|
0e80f0e4c4 | ||
|
|
a2ddb0a61b | ||
|
|
581ce03345 | ||
|
|
f7f76e17c3 | ||
|
|
1cbc93fb54 | ||
|
|
a8ddd6ce31 | ||
|
|
eb16c0e1eb | ||
|
|
9c49e51f7e | ||
|
|
90bc6ee8f3 | ||
|
|
5e75817d44 | ||
|
|
a7e4022d6b | ||
|
|
4999847625 | ||
|
|
d26a92493a | ||
|
|
05a4abea04 | ||
|
|
c1f9440aca | ||
|
|
011a2818db | ||
|
|
571309dc3e | ||
|
|
d547d00f2c | ||
|
|
668dc0ad87 | ||
|
|
0b7e0eed49 | ||
|
|
9b7e45e874 | ||
|
|
40c2c3270d | ||
|
|
b3e8cf539d | ||
|
|
fb5f332834 | ||
|
|
107c4d878a | ||
|
|
5d786d0e97 | ||
|
|
5f77eea408 | ||
|
|
a0905ec0ab | ||
|
|
d7470a3629 | ||
|
|
2287e7ba8b | ||
|
|
16a1e251cd | ||
|
|
1aa320dedb | ||
|
|
d17ce4e9f1 | ||
|
|
50c3417686 | ||
|
|
46f294dbb0 | ||
|
|
d7231f54d7 | ||
|
|
809f2a190c | ||
|
|
4f62cdf6f9 | ||
|
|
b8012ea251 | ||
|
|
02673a8900 | ||
|
|
676e0c28e7 | ||
|
|
55e68ba333 | ||
|
|
3f56d12830 | ||
|
|
257f2376d5 | ||
|
|
1d8d389bce | ||
|
|
99e43046a7 | ||
|
|
a5460f2431 | ||
|
|
6bf9d56485 | ||
|
|
367114bc87 | ||
|
|
81d45ed3a2 | ||
|
|
7d74e02519 | ||
|
|
7611d30a05 | ||
|
|
3704375292 | ||
|
|
ea1f30e686 | ||
|
|
9732b7cebe | ||
|
|
f39380b1ac | ||
|
|
c8da2980ed | ||
|
|
b19dc0eeb0 | ||
|
|
41de897b6b | ||
|
|
108b414bb8 | ||
|
|
be7af8beaa | ||
|
|
db1281fa9b | ||
|
|
223d848104 | ||
|
|
d8884168e3 | ||
|
|
5dd64e9e4b | ||
|
|
ce6731baf1 | ||
|
|
2c0b65d37b | ||
|
|
a76f4ab7dd | ||
|
|
d68f215f03 | ||
|
|
0a5ac52b49 | ||
|
|
8acb3803e4 | ||
|
|
ac62a94de3 | ||
|
|
0abcb37e3f | ||
|
|
7da5efd55c | ||
|
|
d4ff44d5f6 | ||
|
|
fff706d702 | ||
|
|
eac4310b2e | ||
|
|
e87ee29e32 | ||
|
|
61ebbc01ed | ||
|
|
15f425bdb8 | ||
|
|
861092637b | ||
|
|
3717b7a792 | ||
|
|
950a034895 | ||
|
|
982e655c07 | ||
|
|
308497ffc6 | ||
|
|
b205525d34 | ||
|
|
654b6b6c63 | ||
|
|
3b908ed143 | ||
|
|
265ed24ac0 | ||
|
|
57eeee2ec3 | ||
|
|
6a79b0e859 | ||
|
|
0d9f14f5c1 | ||
|
|
9fced16efb | ||
|
|
f16868d301 | ||
|
|
21af9bf1cd | ||
|
|
b2f4308980 | ||
|
|
6a37135f4d | ||
|
|
b8e1e63379 | ||
|
|
448d2b5f49 | ||
|
|
7867d44251 | ||
|
|
2380ca1714 | ||
|
|
a1cc78d5a1 | ||
|
|
7531ac89d6 | ||
|
|
72acffc66c | ||
|
|
525549f204 | ||
|
|
3f8d3e9c50 | ||
|
|
1951cd1eee | ||
|
|
55aee95f11 | ||
|
|
777134a07b | ||
|
|
4b8ce9423f | ||
|
|
051ab439a9 | ||
|
|
12e60c6d4e | ||
|
|
ff3223259f | ||
|
|
3da1ade4e5 | ||
|
|
ff40c83aa7 | ||
|
|
f49427d364 | ||
|
|
04e8ff84fe | ||
|
|
6f4a5a4612 | ||
|
|
6d4e6cc813 | ||
|
|
86cec97b22 | ||
|
|
e5ee822745 | ||
|
|
167a92810a | ||
|
|
b8b8c3d538 | ||
|
|
21105ab344 | ||
|
|
e49d928ce4 | ||
|
|
5e253785af | ||
|
|
3cbc8d1ba3 | ||
|
|
b4af26a188 | ||
|
|
6daede08cb | ||
|
|
3669ff3c1e | ||
|
|
9afdb05fe8 | ||
|
|
4d9279cb3b | ||
|
|
640e49976f | ||
|
|
f1aa936d2c | ||
|
|
a5ba25a5f6 | ||
|
|
b4e6418aef | ||
|
|
0077a6d51b | ||
|
|
4798f4e652 | ||
|
|
b38e28b6bc | ||
|
|
052dac0d3f | ||
|
|
2eeafcf9a6 | ||
|
|
45e093fc45 | ||
|
|
e593715d72 | ||
|
|
1209f2c014 | ||
|
|
7c821a85f8 | ||
|
|
cf367a62ce | ||
|
|
b233957885 | ||
|
|
492aed1450 | ||
|
|
cd91a1eeca | ||
|
|
5ed274d0b7 | ||
|
|
4271f44a9e | ||
|
|
78d07cb0f9 | ||
|
|
5b11e3883c | ||
|
|
7d22ce5573 | ||
|
|
b64dd3c63d | ||
|
|
0ea6abe7df | ||
|
|
8646cecb78 | ||
|
|
867a0de670 | ||
|
|
4f47fc4e14 | ||
|
|
8d39a31e89 | ||
|
|
66fcebdc9e | ||
|
|
af9ce990f0 | ||
|
|
e3d623f190 | ||
|
|
15be441ad8 | ||
|
|
c7c84e7420 | ||
|
|
37489a855f | ||
|
|
f03130a36e | ||
|
|
a1d18227e5 | ||
|
|
1549605c55 | ||
|
|
14a3f4cd54 | ||
|
|
9448659fc6 | ||
|
|
4002714825 | ||
|
|
61ea058d9f | ||
|
|
0fdb77d643 | ||
|
|
0c90cb7b83 | ||
|
|
ede2ac0ea2 | ||
|
|
d006efebc0 | ||
|
|
f2f45339dc | ||
|
|
be5c815f63 | ||
|
|
31e106ced2 | ||
|
|
250ba99498 | ||
|
|
c2c3a46e3e | ||
|
|
3eee678ab1 | ||
|
|
62ed553054 | ||
|
|
e3049e98d8 | ||
|
|
86f9168797 | ||
|
|
f7690db37d | ||
|
|
7e0b0763fc | ||
|
|
c67c4e7095 | ||
|
|
64a05e540e | ||
|
|
beb0a345ac | ||
|
|
f60cb60fc6 | ||
|
|
4002fbe1f5 | ||
|
|
7ff4b4f2b5 | ||
|
|
945feafe25 | ||
|
|
5389ac0ddf | ||
|
|
5d4a1e245b | ||
|
|
3c199daa95 | ||
|
|
4dd33ac575 | ||
|
|
bb3bbfe56d | ||
|
|
f09de577f5 | ||
|
|
c2ce4e55f0 | ||
|
|
5e3796349a | ||
|
|
56a161e09a | ||
|
|
2786ecaeef | ||
|
|
1486a11839 | ||
|
|
c4c15288d2 | ||
|
|
aaed838872 | ||
|
|
43fba2627a | ||
|
|
7df26a5415 | ||
|
|
f3611c2773 | ||
|
|
d5de849552 | ||
|
|
6569a23890 | ||
|
|
2cf0f80e9f | ||
|
|
223c0b980b | ||
|
|
7ab1139f07 | ||
|
|
d055226949 | ||
|
|
cf910f3097 | ||
|
|
183c9ce1cf | ||
|
|
777168cb77 | ||
|
|
0dd6c329e3 | ||
|
|
7a642c8bf1 | ||
|
|
e47c939822 | ||
|
|
a0bbe25eef | ||
|
|
b96f11f7ec | ||
|
|
7e07da977c | ||
|
|
ddb1fb7535 | ||
|
|
ea2754e028 | ||
|
|
ceda7e98f8 | ||
|
|
2d0aca3b92 | ||
|
|
4e9d3c26ed | ||
|
|
f3bd0c3fc3 | ||
|
|
eb438719f7 | ||
|
|
44e2832b2a | ||
|
|
9539d32298 | ||
|
|
60c0994677 | ||
|
|
e7f81d59b0 | ||
|
|
f1320d6733 | ||
|
|
68f7d5b8d3 | ||
|
|
e8baa332d7 | ||
|
|
39704bec3c | ||
|
|
fad14bca01 | ||
|
|
9e8eec4816 | ||
|
|
fa2ea23c96 | ||
|
|
1a255e0e28 | ||
|
|
1d92cf1dab | ||
|
|
8d1e46bdcc | ||
|
|
b0b2824b58 | ||
|
|
0cb6f3053f | ||
|
|
95c2b205a4 | ||
|
|
6ede4ce79d | ||
|
|
10f2fa9c72 | ||
|
|
8b5102ca83 | ||
|
|
1048043963 | ||
|
|
2c4fcf2ea8 | ||
|
|
681162510a | ||
|
|
5c59ee9488 | ||
|
|
9075195ec4 | ||
|
|
62960f8a42 | ||
|
|
6293fe98a0 | ||
|
|
5c716247aa | ||
|
|
daf688eba6 | ||
|
|
c6712a0c6c | ||
|
|
4d74b52656 | ||
|
|
be2fcbcbf1 | ||
|
|
6247b6d468 | ||
|
|
966cb698e6 | ||
|
|
4b44638f4d | ||
|
|
13afff5752 | ||
|
|
e73fe837a8 | ||
|
|
a9caeb1064 | ||
|
|
171eef68c3 | ||
|
|
33368ebd02 | ||
|
|
501f9f8309 | ||
|
|
9fe787fc1f | ||
|
|
0dec3e5e6a | ||
|
|
66f5baa16e | ||
|
|
1cb921b7f3 | ||
|
|
0cf6721898 | ||
|
|
97c8bc9757 | ||
|
|
2cad095425 | ||
|
|
37d509f04f | ||
|
|
35eb9fc6ad | ||
|
|
df09088a96 | ||
|
|
1a14966577 | ||
|
|
0606b792f0 | ||
|
|
a53525e930 | ||
|
|
3a9c03bef3 | ||
|
|
f0dbdcff9d | ||
|
|
9d03dd7fb8 | ||
|
|
781b82baf5 | ||
|
|
2838362a7b | ||
|
|
0b66efac9c | ||
|
|
47a9660ec1 | ||
|
|
aabf62e7d2 | ||
|
|
6d891d2a3b | ||
|
|
c0e8bed5bf | ||
|
|
0dce2ff8a0 | ||
|
|
2642638fca | ||
|
|
8b0fc9819f | ||
|
|
bf5f91244b | ||
|
|
e8e84cf1da | ||
|
|
0179dbe1c2 | ||
|
|
8978b87728 | ||
|
|
0684128209 | ||
|
|
9b5c00a664 | ||
|
|
b347a7a96e | ||
|
|
240bfaa69e | ||
|
|
7dc48e57a6 | ||
|
|
8570883412 | ||
|
|
1d5627b181 | ||
|
|
038fff6c9f | ||
|
|
21dd9a8021 | ||
|
|
59934c1176 | ||
|
|
2f6ff57d96 | ||
|
|
77eba8727d | ||
|
|
47c392e135 | ||
|
|
9cff716925 | ||
|
|
4c207a004c | ||
|
|
650543a042 | ||
|
|
5f0cae8037 | ||
|
|
95c2ab77e7 | ||
|
|
d7f33b7e4e | ||
|
|
56e6441ceb | ||
|
|
b74b5e0602 | ||
|
|
b4dcbbfabd | ||
|
|
6dd0277c22 | ||
|
|
fb08218a04 | ||
|
|
08d95bff5e | ||
|
|
b476530755 | ||
|
|
a8ea1e9ef4 | ||
|
|
6dade671ad | ||
|
|
38b88b5892 | ||
|
|
340e3b952f | ||
|
|
35c91f6ea9 | ||
|
|
f5f9354093 | ||
|
|
600460ffc6 | ||
|
|
18b3833f90 | ||
|
|
f671d0513c | ||
|
|
100f6b7703 | ||
|
|
4e75c70874 | ||
|
|
bdbfe1f8a9 | ||
|
|
bea9d2cafd | ||
|
|
d709cb2ae3 | ||
|
|
444bb03fab | ||
|
|
966cc10fcc | ||
|
|
0c7087c41f | ||
|
|
c42a06bc1f | ||
|
|
b4c00a8fb0 | ||
|
|
f3403d4c5b | ||
|
|
5cf78472e1 | ||
|
|
2aaff16a87 | ||
|
|
6236198d43 | ||
|
|
83fb285d40 | ||
|
|
3050f10676 | ||
|
|
175fc5096d | ||
|
|
18f238dd53 | ||
|
|
4f551259dd | ||
|
|
9cb68c6e32 | ||
|
|
a9a89c604a | ||
|
|
e96a9190a3 | ||
|
|
1ff4e9008b | ||
|
|
2d716517a8 | ||
|
|
22226a8aec | ||
|
|
9b8e56c97c | ||
|
|
ad1bfc5468 | ||
|
|
2c0c05e96d | ||
|
|
d6d63147b6 | ||
|
|
98f7771d74 | ||
|
|
37eba37019 | ||
|
|
40b2f2553b | ||
|
|
d3e35d49ae | ||
|
|
a0474685c1 | ||
|
|
0b317b72ae | ||
|
|
afe06d1563 | ||
|
|
c40365e9b6 | ||
|
|
4b6d3a2bfd | ||
|
|
7ae624e700 | ||
|
|
c32cf33a16 | ||
|
|
7eb59de7df | ||
|
|
5931cf77f4 | ||
|
|
989aace192 | ||
|
|
65cf30e441 | ||
|
|
d4480c979d | ||
|
|
169e94d68b | ||
|
|
0cc8184057 | ||
|
|
a7c75142fa | ||
|
|
02d3c452e4 | ||
|
|
1c148575ea | ||
|
|
d1a1865650 | ||
|
|
067544abc5 | ||
|
|
77da57057f | ||
|
|
aa1da57c37 | ||
|
|
c2ce2aa4de | ||
|
|
90c9fd55fc | ||
|
|
47e403640b | ||
|
|
4ea513cc38 | ||
|
|
3ca0b9bb47 | ||
|
|
e592da5a59 | ||
|
|
2c93f889fd | ||
|
|
6173ce6463 | ||
|
|
065a51d2e1 | ||
|
|
7edcc22136 | ||
|
|
352177090f | ||
|
|
9d18c0b156 | ||
|
|
ec65a9a364 | ||
|
|
5c4b6a8ef0 | ||
|
|
5d502eb90c | ||
|
|
d6662d8442 | ||
|
|
1d97f13462 | ||
|
|
2c16681225 | ||
|
|
065047dc62 | ||
|
|
eba8d6d5f5 | ||
|
|
744dceaffe | ||
|
|
8740d147c9 | ||
|
|
16ae283fb4 | ||
|
|
312600fe9c | ||
|
|
3e0c067e43 | ||
|
|
f90551ff41 | ||
|
|
9442fc0b52 | ||
|
|
dbb93a2718 | ||
|
|
242cf423f8 | ||
|
|
217faf778b | ||
|
|
01b74950b7 | ||
|
|
420bfbcf40 | ||
|
|
89f6567fda | ||
|
|
efec05d581 | ||
|
|
47198dce5d | ||
|
|
f45500c612 | ||
|
|
6f3e817372 | ||
|
|
cfda5df020 | ||
|
|
2b4f41603d | ||
|
|
448f448d14 | ||
|
|
ee6a618116 | ||
|
|
e08f81c891 | ||
|
|
9324f1c29f | ||
|
|
d71c1514f2 | ||
|
|
2df75e84e7 | ||
|
|
9ab89734de | ||
|
|
960c0319c4 | ||
|
|
439891cb9f | ||
|
|
bdfb3ef11c | ||
|
|
8d581f7fe4 | ||
|
|
262907d0a3 | ||
|
|
15be673054 | ||
|
|
16a5649670 | ||
|
|
6582895b51 | ||
|
|
e3d65389d7 | ||
|
|
027cb376f3 | ||
|
|
f1261bcdd7 | ||
|
|
2e7b36d04f | ||
|
|
ce1a58414a | ||
|
|
1012c5705a | ||
|
|
1c2947581b | ||
|
|
00883822be | ||
|
|
13fdb9d8a5 | ||
|
|
52b2bc4109 | ||
|
|
b59b3a5152 | ||
|
|
fe6c03370e | ||
|
|
e3f128875c | ||
|
|
7bf82a814b | ||
|
|
e1270928a3 | ||
|
|
6fce5b54a8 | ||
|
|
3c38eafd75 | ||
|
|
9dcc1b3370 | ||
|
|
e3c37aac28 | ||
|
|
61a967095d | ||
|
|
c0e004ec1c | ||
|
|
0a1b7296b9 | ||
|
|
cd5e6743f7 | ||
|
|
2091fe530f | ||
|
|
cda8d63d43 | ||
|
|
bef1b140e9 | ||
|
|
c9188e2260 | ||
|
|
15eaf27bc7 | ||
|
|
bf2277e263 | ||
|
|
348ffbc47e | ||
|
|
f13cbcf175 | ||
|
|
9418c56fd3 | ||
|
|
7dbd502931 | ||
|
|
0bf9c1e881 | ||
|
|
bf07d37737 | ||
|
|
eecb713616 | ||
|
|
bf085e2c4b | ||
|
|
ce1a97d6c8 | ||
|
|
34c9ec4e1a | ||
|
|
e73fb6808a | ||
|
|
1c93d9dcfe | ||
|
|
675d6ec5e6 | ||
|
|
1ad43c54c0 | ||
|
|
1cf6c15ab4 | ||
|
|
8fc17ed764 | ||
|
|
26028068e8 | ||
|
|
8519682564 | ||
|
|
5ca0c73e98 | ||
|
|
4c979aa44f | ||
|
|
274dc3ecac | ||
|
|
5e2b5edde5 | ||
|
|
b8b6521659 | ||
|
|
e37b1b0623 | ||
|
|
4a79462c3e | ||
|
|
c328cc9608 | ||
|
|
cf2d39220a | ||
|
|
7dbd649f60 | ||
|
|
4282199bb4 | ||
|
|
7071dd0162 | ||
|
|
e61a687eda | ||
|
|
7e85d2fbd4 | ||
|
|
969ab28261 | ||
|
|
90d36cc630 | ||
|
|
1bb68cbcfa | ||
|
|
de7a14003c | ||
|
|
e3ead9f585 | ||
|
|
a461b0ae44 | ||
|
|
1b28f9fa89 | ||
|
|
dff8076022 | ||
|
|
dd3c187484 | ||
|
|
4677778f85 | ||
|
|
f96204dbe0 | ||
|
|
0427b783e2 | ||
|
|
4650732f4a | ||
|
|
1e138c1401 | ||
|
|
89fb7c85bf | ||
|
|
0e51fc90e3 | ||
|
|
1b6c683ca6 | ||
|
|
501e72c3de | ||
|
|
a450efb483 | ||
|
|
0cf8d4f8e8 | ||
|
|
084447e414 | ||
|
|
4c9c9f0b89 | ||
|
|
13db2916de | ||
|
|
2d64cd55a1 | ||
|
|
60a6af7498 | ||
|
|
3cb06eb2b2 | ||
|
|
b8e73495a5 | ||
|
|
187cfc1594 | ||
|
|
90cd2a4753 | ||
|
|
f3e6a582d4 | ||
|
|
3ae470eedf | ||
|
|
6595592a71 | ||
|
|
199389c94a | ||
|
|
c31438b2f2 | ||
|
|
843f73ecaa | ||
|
|
86f043a66c | ||
|
|
80d2df7789 | ||
|
|
f882a63cba | ||
|
|
611b3584d6 | ||
|
|
a1f13dd31b | ||
|
|
966e7d0e36 | ||
|
|
44103abdb7 | ||
|
|
8f9d4b2b50 | ||
|
|
78c674a685 | ||
|
|
197830a57d | ||
|
|
3d024d5fce | ||
|
|
5763743614 | ||
|
|
54da964a99 | ||
|
|
e25cff9328 | ||
|
|
36b397be9f | ||
|
|
468019e947 | ||
|
|
7e941baa26 | ||
|
|
63270b0665 | ||
|
|
bcdbba05d3 | ||
|
|
51d1f309cd | ||
|
|
f04720afb8 | ||
|
|
e6e6c6e635 | ||
|
|
1f340a262f | ||
|
|
242a17b9e0 | ||
|
|
6e1632c606 | ||
|
|
56dab605f1 | ||
|
|
3aa3d7e629 | ||
|
|
75585f771a | ||
|
|
9a9f35039e | ||
|
|
e6f84b8cc8 | ||
|
|
72f15da2ed | ||
|
|
effbd99384 | ||
|
|
d1ba4324de | ||
|
|
c0b5d378dc | ||
|
|
b8c438f22d | ||
|
|
a85271ce0a | ||
|
|
fd5e69f769 | ||
|
|
ddb0b8d8b8 | ||
|
|
1345226bc9 | ||
|
|
fb202e9de7 | ||
|
|
5dcb5fa862 | ||
|
|
f77f2709a9 | ||
|
|
bc852bca48 | ||
|
|
9314e9e853 | ||
|
|
838ddf8f55 | ||
|
|
619869c639 | ||
|
|
31baaf72b4 | ||
|
|
c92b996942 | ||
|
|
e84c7db049 | ||
|
|
9ef7b6afe2 | ||
|
|
c5c03ac556 | ||
|
|
6ca321ca75 | ||
|
|
9c788a529b | ||
|
|
6159c356c9 | ||
|
|
ac9d92587e | ||
|
|
f32dc6b828 | ||
|
|
7a928b40f3 | ||
|
|
172501e10c | ||
|
|
317e030de0 | ||
|
|
cfda3e6a48 | ||
|
|
4d522b8f31 | ||
|
|
e93c81196f | ||
|
|
7bdd14a994 | ||
|
|
afe06b48d6 | ||
|
|
63c5ed3798 | ||
|
|
77bb536542 | ||
|
|
7c6e0d5981 | ||
|
|
a1708730c3 | ||
|
|
d33ca87e4c | ||
|
|
3c509c5f68 | ||
|
|
a840cc700a | ||
|
|
b40b989523 | ||
|
|
5eba93c4e7 | ||
|
|
915dfb494e | ||
|
|
a16cca7680 | ||
|
|
644482fc99 | ||
|
|
8c08ecfcbf | ||
|
|
b9920bdd0e | ||
|
|
bdf71e2685 | ||
|
|
bd4fd9c28c | ||
|
|
ff3e574187 | ||
|
|
4422f80ae7 | ||
|
|
cc8c2efff2 | ||
|
|
cdaca293d9 | ||
|
|
4dbc7850bd | ||
|
|
8119379d4f | ||
|
|
9b4253fe67 | ||
|
|
b5c599c80c | ||
|
|
9137e717b0 | ||
|
|
80186aa7f4 | ||
|
|
6ac739630f | ||
|
|
80a61616b1 | ||
|
|
589d2ee7b5 | ||
|
|
0a294db912 | ||
|
|
2788aa366c | ||
|
|
0f29fdaf17 | ||
|
|
2912d993c2 | ||
|
|
62ceb118ee | ||
|
|
0569c9c1be | ||
|
|
5a91746b80 | ||
|
|
fdc091a857 | ||
|
|
8469db016d | ||
|
|
f6312b16f1 | ||
|
|
c76e538231 | ||
|
|
96ea49870c | ||
|
|
6e8c73fd38 | ||
|
|
56981a2aaf | ||
|
|
ec16121fb3 | ||
|
|
7bd9988c8e | ||
|
|
068312ecb8 | ||
|
|
d36a86a12c | ||
|
|
c174b13f8b | ||
|
|
6b95c4e358 | ||
|
|
22e2ecb003 | ||
|
|
e08296f70c | ||
|
|
dd50e5bdf2 | ||
|
|
504ecd5f7a | ||
|
|
7d1bb21c19 | ||
|
|
63dc2a843f | ||
|
|
296baeb096 | ||
|
|
01dabb774a | ||
|
|
d0fe4071a9 | ||
|
|
3d491c470b | ||
|
|
06462e8a92 | ||
|
|
dbf371344b | ||
|
|
e2c6e00570 | ||
|
|
e4a0001fc6 | ||
|
|
49400b0c7f | ||
|
|
5957498c6f | ||
|
|
b6282b99cb | ||
|
|
a8483841b5 | ||
|
|
d068001102 | ||
|
|
d576be58dc | ||
|
|
1a2b88964f | ||
|
|
f7a188a642 | ||
|
|
befbf2a206 | ||
|
|
e01b7c1ede | ||
|
|
dd8d472318 | ||
|
|
256489639c | ||
|
|
e323abe5d9 | ||
|
|
afc00b08d7 | ||
|
|
af41fb79b5 | ||
|
|
535b7c5e0f | ||
|
|
217f7a7ea7 | ||
|
|
317d351423 | ||
|
|
d27519c0ca | ||
|
|
255dc45dc9 | ||
|
|
f4d8728df9 | ||
|
|
8611631f5e | ||
|
|
1e5ed4fa33 | ||
|
|
0daeab3b8d | ||
|
|
bd27401311 | ||
|
|
14df44dd3f | ||
|
|
1272621ebc | ||
|
|
0e83482e47 | ||
|
|
c0d929bed9 | ||
|
|
828a26286d | ||
|
|
082b0d822c | ||
|
|
651b4b9efa | ||
|
|
ab1e54375f | ||
|
|
70e2db51e1 | ||
|
|
0145919a9e | ||
|
|
2236a247d9 | ||
|
|
7291f50e8d | ||
|
|
bc5677a47b | ||
|
|
137ef36757 | ||
|
|
33a3753c3f | ||
|
|
9770899a4b | ||
|
|
fe8eeb5641 | ||
|
|
8cd1f1f7f9 | ||
|
|
b84876ba69 | ||
|
|
0f1ca2939a | ||
|
|
4882078469 | ||
|
|
991b120eee | ||
|
|
f278d177f9 | ||
|
|
53b2ff4b04 | ||
|
|
0c89d71aee | ||
|
|
b746bf7814 | ||
|
|
f11969015a | ||
|
|
f1b820e5fc | ||
|
|
7356ff0b18 | ||
|
|
30f7a2ff20 | ||
|
|
f6b55fae79 | ||
|
|
8aa88f4d36 | ||
|
|
ce7b565595 | ||
|
|
41fd08bb0d | ||
|
|
d0a930cd44 | ||
|
|
9bb1854398 | ||
|
|
f7400212fc | ||
|
|
6434b42481 | ||
|
|
dd0b38b32f | ||
|
|
7816db8e8a | ||
|
|
9cc6ab3922 | ||
|
|
2c27e24bb4 | ||
|
|
c382c550e7 | ||
|
|
c663494c69 | ||
|
|
97f27ea585 | ||
|
|
379bfa5a36 | ||
|
|
235c0077b8 | ||
|
|
c621546bd6 | ||
|
|
aa330b8240 | ||
|
|
e43606eb4d | ||
|
|
6a378a28b4 | ||
|
|
95368d9cb4 | ||
|
|
74f9c570ea | ||
|
|
eed4a13b3b | ||
|
|
7e9f7659b3 | ||
|
|
4d396169c8 | ||
|
|
4cd950900b | ||
|
|
2b96c3f5ce | ||
|
|
63fad159e8 | ||
|
|
e5f1480a38 | ||
|
|
020955ebc2 | ||
|
|
3733fa02ee | ||
|
|
7037e4a4b1 | ||
|
|
0e98f938c4 | ||
|
|
55d0c29f4a | ||
|
|
59997ecad5 | ||
|
|
6e2f0833ad | ||
|
|
25f626cc52 | ||
|
|
ece891d6db | ||
|
|
702355da47 | ||
|
|
c4fba310d2 | ||
|
|
e9dd099870 | ||
|
|
070d89a561 | ||
|
|
28cc9dd331 | ||
|
|
7c1fecc94a | ||
|
|
7a9fab52be | ||
|
|
8cb8371011 | ||
|
|
875c55d86b | ||
|
|
b85154f13f | ||
|
|
06047d9103 | ||
|
|
2362637e90 | ||
|
|
edd02607e2 | ||
|
|
0211e420ed | ||
|
|
9a184e0bb1 | ||
|
|
168fb3a8d8 | ||
|
|
4c5307b456 | ||
|
|
626f9bd8c2 | ||
|
|
a06b36dee0 | ||
|
|
18e1bee8d5 | ||
|
|
41f76801eb | ||
|
|
31a7bfc47f | ||
|
|
1b6d18fcb0 | ||
|
|
57c32b709d | ||
|
|
5f19822e37 | ||
|
|
9a0c9cd6e1 | ||
|
|
0ac8e1d80b | ||
|
|
744e55ec74 | ||
|
|
74ba4d7950 | ||
|
|
fa96436661 | ||
|
|
d15b8273d6 | ||
|
|
0a5cf3a928 | ||
|
|
6173e38fdc | ||
|
|
34cd99d1d9 | ||
|
|
0922a0fc3f | ||
|
|
dd53b356ff | ||
|
|
f1db505778 | ||
|
|
662727ca3e | ||
|
|
bdec6f2b20 | ||
|
|
c86c294f55 | ||
|
|
a9a03b9708 | ||
|
|
f4e8c406bb | ||
|
|
12bfcb501c | ||
|
|
0fc1782dd4 | ||
|
|
9274d31690 | ||
|
|
983a539503 | ||
|
|
94bb7fe5cb | ||
|
|
b98e0aa09b | ||
|
|
49c6d7e32d | ||
|
|
ee73fc361b | ||
|
|
e84dbd28db | ||
|
|
02449d9aa5 | ||
|
|
2876329f16 | ||
|
|
a1f455551f | ||
|
|
042cc1f69e | ||
|
|
90b804d3fa | ||
|
|
4bc603a0cc | ||
|
|
6c3f74b946 | ||
|
|
8d78a33e60 | ||
|
|
df07537ccf | ||
|
|
de25ed3f37 | ||
|
|
40edf25866 | ||
|
|
7b7db23633 | ||
|
|
794b4da840 | ||
|
|
e9ea3ba4a2 | ||
|
|
d207ea1652 | ||
|
|
625d06ac79 | ||
|
|
3460225590 | ||
|
|
ea6531cf32 | ||
|
|
2afb88e2ce | ||
|
|
6c9f37d263 | ||
|
|
735955282b | ||
|
|
dd056e54e2 | ||
|
|
f5548973ab | ||
|
|
07dc741e18 | ||
|
|
8b66981ce0 | ||
|
|
3a7e8c9f5f | ||
|
|
fb90b43432 | ||
|
|
0302c21253 | ||
|
|
9182a46233 | ||
|
|
51b46f451f | ||
|
|
11f3690201 | ||
|
|
5784a37f91 | ||
|
|
af91ff0e06 | ||
|
|
be3a78f583 | ||
|
|
7f22da5230 | ||
|
|
5af0629ba5 | ||
|
|
a776e5ad31 | ||
|
|
6e422c447a | ||
|
|
4608d0157e | ||
|
|
a24fe59ee4 | ||
|
|
4ad296c60b | ||
|
|
0517fa153c | ||
|
|
8f81fd6be5 | ||
|
|
1472be4d3e | ||
|
|
8925527fef | ||
|
|
8cdc220bc0 | ||
|
|
d315d41a12 | ||
|
|
4f7687895d | ||
|
|
07d46886df | ||
|
|
b79c8f527f | ||
|
|
0cf10ae4d7 | ||
|
|
debe0b561d | ||
|
|
9ddc7ad038 | ||
|
|
9a4c887c4a | ||
|
|
de41c6ef43 | ||
|
|
002cf105c6 | ||
|
|
fb8fdf9273 | ||
|
|
517b8ed057 | ||
|
|
d3d7ed1766 | ||
|
|
77fd094090 | ||
|
|
c65f9acdc7 | ||
|
|
5c4cdcb2d5 | ||
|
|
b1233c7e4d | ||
|
|
4ebe4b907b | ||
|
|
bf44d0f640 | ||
|
|
73cf99c052 | ||
|
|
44c02227e9 | ||
|
|
77da9a0087 | ||
|
|
42d2353e74 | ||
|
|
4b441ebac5 | ||
|
|
01140217f5 | ||
|
|
71f3877f3a | ||
|
|
83d135f990 | ||
|
|
d4ac3d53fc | ||
|
|
f0332c0b58 | ||
|
|
bdd4294e79 | ||
|
|
dcf92bffd2 | ||
|
|
a2256e899b | ||
|
|
8b6805572a | ||
|
|
607253c2d0 | ||
|
|
09f4a1c5e5 | ||
|
|
5c9fff9c6e | ||
|
|
99b4912688 | ||
|
|
0a6312d66f | ||
|
|
a97f52db20 | ||
|
|
5267be57f7 | ||
|
|
e813bf31d7 | ||
|
|
1bd0be0361 | ||
|
|
996c8ca7c2 | ||
|
|
fec65fbff6 | ||
|
|
de4610a55f | ||
|
|
6e34c2d59a | ||
|
|
34b09398d5 | ||
|
|
0516ce7786 | ||
|
|
bb86462ed7 | ||
|
|
8fa8df95fb | ||
|
|
82ca52713b | ||
|
|
f29e383575 | ||
|
|
5aeef9c1c8 | ||
|
|
ddd3fe5948 | ||
|
|
5591550167 | ||
|
|
6bb9ef8de4 | ||
|
|
14a6788535 | ||
|
|
6f86826516 | ||
|
|
0e6ed13454 | ||
|
|
b914f45e9e | ||
|
|
3ed66094e8 | ||
|
|
718004d9b5 | ||
|
|
1dc54324f4 | ||
|
|
89ecf4ac01 | ||
|
|
d42eac4287 | ||
|
|
3fa6c51bb1 | ||
|
|
37c5250e03 | ||
|
|
0d3bb93ce8 | ||
|
|
5e74c58b73 | ||
|
|
7ac16811cc | ||
|
|
29b6a732f3 | ||
|
|
3dcd6bc597 | ||
|
|
1342f5d592 | ||
|
|
8fbfd5916d | ||
|
|
1225d36188 | ||
|
|
a19e02be5e | ||
|
|
0761e60a4a | ||
|
|
af96c8304f | ||
|
|
0de0e95020 | ||
|
|
35d8fb0501 | ||
|
|
87c71953be | ||
|
|
79a91b8168 | ||
|
|
2f9038bf62 | ||
|
|
4d50ca4e21 | ||
|
|
a1077d0970 | ||
|
|
b9fdc0c251 | ||
|
|
f471b4836f | ||
|
|
32b75d1b69 | ||
|
|
f7e3bd28b4 | ||
|
|
452e52f958 | ||
|
|
0090099565 | ||
|
|
2ed23cb50d | ||
|
|
a97ab4f933 | ||
|
|
bc93011554 | ||
|
|
14b6cc4e22 | ||
|
|
80ffd3581f | ||
|
|
dd058b8de6 | ||
|
|
3c2ad4022c | ||
|
|
1f4b8da60a | ||
|
|
9af4cf219e | ||
|
|
cf4b88fcc4 | ||
|
|
2215a9a181 | ||
|
|
aa32f61ce7 | ||
|
|
8266727062 | ||
|
|
d839230402 | ||
|
|
1cc50d31f9 | ||
|
|
104377d718 | ||
|
|
83640b2ee5 | ||
|
|
9aea3e265d | ||
|
|
59227bf075 | ||
|
|
f61cfc5931 | ||
|
|
27b8a5fd84 | ||
|
|
60ff74140e | ||
|
|
4f0a7170af | ||
|
|
6d2ff9d2a7 | ||
|
|
122b0bfe82 | ||
|
|
3eae7695fc | ||
|
|
6efde61227 | ||
|
|
1c48124db4 | ||
|
|
e9895ea2e7 | ||
|
|
eab8c0d754 | ||
|
|
7ffe62d901 | ||
|
|
d5bfec70af | ||
|
|
2a86817349 | ||
|
|
5be7d88b34 | ||
|
|
8a335ee7fd | ||
|
|
216ad2680b | ||
|
|
e16509d5cf | ||
|
|
19c9b7c803 | ||
|
|
ffd08df863 | ||
|
|
460459e8db | ||
|
|
07416b61e3 | ||
|
|
000a13e21a | ||
|
|
03ca98b0df | ||
|
|
abb74a1203 | ||
|
|
77c1d556bb | ||
|
|
bd55ab05bd | ||
|
|
2025193b7a | ||
|
|
418683f537 | ||
|
|
008b848dcc | ||
|
|
79b7575fd8 | ||
|
|
792279581b | ||
|
|
3ca360391a | ||
|
|
5f0a3797c9 | ||
|
|
2d2c53d20e | ||
|
|
02ca14fd0e | ||
|
|
0f5895faee | ||
|
|
c0dfe6e51d | ||
|
|
1b4af1f8d8 | ||
|
|
8e255534a1 | ||
|
|
4607dfe257 | ||
|
|
6e376532b0 | ||
|
|
4ed64fd5ee | ||
|
|
21700ae515 | ||
|
|
b962ef3154 | ||
|
|
32f78136b2 | ||
|
|
01d6133bd7 | ||
|
|
4b62cd3616 | ||
|
|
df7b1d8e64 | ||
|
|
2449e1f5a5 | ||
|
|
66c0e4ad5f | ||
|
|
18371aaff9 | ||
|
|
f36eab2608 | ||
|
|
66d38261f7 | ||
|
|
553b4cfd0b | ||
|
|
edd63a7920 | ||
|
|
5ce03efc3e | ||
|
|
4645e8b6b1 | ||
|
|
42365aa7ef | ||
|
|
dff4ce92ad | ||
|
|
e5b0533dab | ||
|
|
a2a315a6e8 | ||
|
|
7abdc4b218 | ||
|
|
479ddb1fee | ||
|
|
4ee27b4594 | ||
|
|
58ebde9502 | ||
|
|
04ee89493e | ||
|
|
dd3594c6b3 | ||
|
|
f7ea431516 | ||
|
|
16a153468d | ||
|
|
b062212e55 | ||
|
|
39eb96e9ff | ||
|
|
4c84f6b423 | ||
|
|
0b2ae71f8b | ||
|
|
39d0b57ebf | ||
|
|
c036f6ae2d | ||
|
|
e35e2ea6ec | ||
|
|
f33f8eee26 | ||
|
|
31a3f064c0 | ||
|
|
232518a219 | ||
|
|
bc165078a2 | ||
|
|
e4dabef0c7 | ||
|
|
00142d8443 | ||
|
|
1b0b7fa0e1 | ||
|
|
67fb731ec4 | ||
|
|
a30a6f2f20 | ||
|
|
baeebb2b57 | ||
|
|
ecc6f550eb | ||
|
|
640974fb28 | ||
|
|
3b0c5ae467 | ||
|
|
0fa14c8662 | ||
|
|
d17be0df52 | ||
|
|
53a8a6e5a6 | ||
|
|
dd2fc45c27 | ||
|
|
ba9f8c674c | ||
|
|
c4f4fa4089 | ||
|
|
32634b0771 | ||
|
|
c97b66287c | ||
|
|
cd6fc8a8ef | ||
|
|
3308781376 | ||
|
|
40e8b4e527 | ||
|
|
4741e64c89 | ||
|
|
0b489c7e61 | ||
|
|
22d4db1cf2 | ||
|
|
7383225271 | ||
|
|
4b3ae5e157 | ||
|
|
797bc8504c | ||
|
|
305f4d92ef | ||
|
|
c36f0e71b6 | ||
|
|
a028c69f48 | ||
|
|
4e4b6de5ce | ||
|
|
9aac2328c6 | ||
|
|
e5084c1eca | ||
|
|
9b12f09600 | ||
|
|
a71762e405 | ||
|
|
b8f3e5675a | ||
|
|
820011dedc | ||
|
|
cdd6054e08 | ||
|
|
a15b6a6f86 | ||
|
|
20d3e2b967 | ||
|
|
608fdce0a0 | ||
|
|
ecd3251542 | ||
|
|
999c7126b3 | ||
|
|
3c50ea961f | ||
|
|
acc29ff1d9 | ||
|
|
886bba55ac | ||
|
|
cd440215a5 | ||
|
|
73060b4523 | ||
|
|
c76d939563 | ||
|
|
3c4b69f95d | ||
|
|
3f01d9a043 | ||
|
|
dbc6fe3e84 | ||
|
|
da6c15163b | ||
|
|
9818bf7026 | ||
|
|
73c7acb159 | ||
|
|
ea8fbb5233 | ||
|
|
9b033e1b8a | ||
|
|
a65ce7b107 | ||
|
|
2249c12a3c | ||
|
|
b4ac9cd02c | ||
|
|
3517eba632 | ||
|
|
2cd44abafc | ||
|
|
4b486ebbc1 | ||
|
|
f9f211d2c6 | ||
|
|
77b30f69e4 | ||
|
|
17d2a464ad | ||
|
|
ae6530ee82 | ||
|
|
a6ba9e5ccd | ||
|
|
c4cdab969b | ||
|
|
c331c73ec6 | ||
|
|
d1f063c62d | ||
|
|
b686dc4911 | ||
|
|
78936b2f2a | ||
|
|
b2ed1e2607 | ||
|
|
fb8870297d | ||
|
|
4cbc0f6c2e | ||
|
|
1b9eff64fa | ||
|
|
d07d1a6ef8 | ||
|
|
8bdd60fa71 | ||
|
|
b872086c74 | ||
|
|
e0af4a15d0 | ||
|
|
d31802ed98 | ||
|
|
87c4136bd4 | ||
|
|
09e027bc9d | ||
|
|
707828b71a | ||
|
|
8f44037133 | ||
|
|
9717ccb786 | ||
|
|
6354cbf9d6 | ||
|
|
95a849efc2 | ||
|
|
fe083a94b9 | ||
|
|
6fdcdfa5ea | ||
|
|
4a4885eead | ||
|
|
a0ef686c54 | ||
|
|
2903a5c050 | ||
|
|
4d50b9f1f1 | ||
|
|
5e3c2af236 | ||
|
|
5d791838d2 | ||
|
|
b80c5cff49 | ||
|
|
47b5740bdf | ||
|
|
b8092857d9 | ||
|
|
3cda1a23ce | ||
|
|
215677c10b | ||
|
|
3688cd3fea | ||
|
|
5ca2a8318d | ||
|
|
e27ec862c3 | ||
|
|
d0b8b5a199 | ||
|
|
efe2ce3647 | ||
|
|
71f00188fb | ||
|
|
a1c9cb8860 | ||
|
|
74e9718370 | ||
|
|
2d71c9cdfd | ||
|
|
484d549ece | ||
|
|
d098ab436d | ||
|
|
85ffd33f08 | ||
|
|
c1b8e93083 | ||
|
|
383d4656aa | ||
|
|
3e3d10824f | ||
|
|
128418b214 | ||
|
|
050a39a7a5 | ||
|
|
5f085789b9 | ||
|
|
6a8832d83b | ||
|
|
fcb498b0d5 | ||
|
|
0433252e50 | ||
|
|
5ce6f37e26 | ||
|
|
02fc7bb5f6 | ||
|
|
9e1294e866 | ||
|
|
c2c800d863 | ||
|
|
625c107c25 | ||
|
|
33319f5d2d | ||
|
|
ad3c1c37bb | ||
|
|
005bf19acf | ||
|
|
91c77808c4 | ||
|
|
0ce97f77e0 | ||
|
|
197ad60d21 | ||
|
|
dc31387c6f | ||
|
|
bd64da3785 | ||
|
|
4fef0d4f14 | ||
|
|
89d6f580dc | ||
|
|
23eb74e085 | ||
|
|
9c86097286 | ||
|
|
f0bb9c7d8d | ||
|
|
d4514f9c10 | ||
|
|
c324033ba4 | ||
|
|
74a16db975 | ||
|
|
a10044e110 | ||
|
|
6cdd067faf | ||
|
|
0989cd358a | ||
|
|
6e0739931d | ||
|
|
b17ca44f0b | ||
|
|
fd6e025d61 | ||
|
|
9230708e47 | ||
|
|
92f3b3895e | ||
|
|
fa8a78ff01 | ||
|
|
310d842b70 | ||
|
|
1498de83d6 | ||
|
|
e29f62f0a7 | ||
|
|
39e5fa6ae8 | ||
|
|
dc289aa4fa | ||
|
|
6db8f53445 | ||
|
|
417bac4055 | ||
|
|
e9c94cdd49 | ||
|
|
d104216bbe | ||
|
|
d086fdaf9f | ||
|
|
8693afdfea | ||
|
|
a876161ef9 | ||
|
|
10035c898b | ||
|
|
71edaf4d01 | ||
|
|
2b77d50776 | ||
|
|
6ea91af2f8 | ||
|
|
b767440399 | ||
|
|
4174ec7116 | ||
|
|
068ba17e21 | ||
|
|
4d10c96aa6 | ||
|
|
b701ea36a7 | ||
|
|
198fa5e3c7 | ||
|
|
507cd13793 | ||
|
|
6c14c96e71 | ||
|
|
976963cd21 | ||
|
|
9391d980c3 | ||
|
|
bab5183820 | ||
|
|
0abaf22467 | ||
|
|
463a8134a1 | ||
|
|
d22b2d181f | ||
|
|
5a9bbf639a | ||
|
|
81e48ada47 | ||
|
|
598bc44f67 | ||
|
|
b93f4f623c | ||
|
|
1054dc5ed1 | ||
|
|
7fc4e8af0a | ||
|
|
4198bb88b6 | ||
|
|
db325d1f43 | ||
|
|
7ff38c14a9 | ||
|
|
3f2de3d101 | ||
|
|
6bd91936ff | ||
|
|
035a2e5479 | ||
|
|
6983ba3225 | ||
|
|
77e028d620 | ||
|
|
0bb91218c5 | ||
|
|
231a51fe7a | ||
|
|
8d0cbaf8df | ||
|
|
b843c27322 | ||
|
|
2688cf343b | ||
|
|
b416b87518 | ||
|
|
3f1b9f095a | ||
|
|
8a6eeb82c5 | ||
|
|
5779283a52 | ||
|
|
80d0dcc9a3 | ||
|
|
d51ad518c4 | ||
|
|
29ba1730ca | ||
|
|
183210619d | ||
|
|
feff911fb7 | ||
|
|
8eee5f3253 | ||
|
|
3e55fef5e1 | ||
|
|
63397e380f | ||
|
|
07c3aaeea1 | ||
|
|
8254bbae56 | ||
|
|
e7886aa9b4 | ||
|
|
fb08868e54 | ||
|
|
c141d99059 | ||
|
|
f66e1c49b0 | ||
|
|
4acbe8f20c | ||
|
|
2ea70a5c73 | ||
|
|
eb612bfdfc | ||
|
|
5e826c78a7 | ||
|
|
a0d906739d | ||
|
|
98b13037e7 | ||
|
|
29f09f71b4 | ||
|
|
a00b6e258d | ||
|
|
7ded272b94 | ||
|
|
1d12b1fa1e | ||
|
|
54582bdce9 | ||
|
|
a9a4300a36 | ||
|
|
f720e0ac0f | ||
|
|
a8245df745 | ||
|
|
86c5d02a5e | ||
|
|
5af597c2fb | ||
|
|
dd9e0164d5 | ||
|
|
9d16b4081e | ||
|
|
545cafce9b | ||
|
|
fb66d51796 | ||
|
|
5175664174 | ||
|
|
a579d67064 | ||
|
|
be760bed7e | ||
|
|
357383159e | ||
|
|
0ea1c28135 | ||
|
|
36e56f36ad | ||
|
|
0a9984c27e | ||
|
|
0ecdcc253b | ||
|
|
1667890172 | ||
|
|
9b3f863cf5 | ||
|
|
2f2ed4e40e | ||
|
|
3d582304b6 | ||
|
|
996d45df0a | ||
|
|
6047635406 | ||
|
|
e16bccbb91 | ||
|
|
9786e7faeb | ||
|
|
fde4b823f1 | ||
|
|
b7e71a249e | ||
|
|
bf8d642607 | ||
|
|
1fab40bb69 | ||
|
|
ad61b58036 | ||
|
|
b7722e7037 | ||
|
|
6c2167b65f | ||
|
|
18be9882f7 | ||
|
|
a102c2c22b | ||
|
|
ae75462254 | ||
|
|
3ad956e73f | ||
|
|
d6114165d3 | ||
|
|
c3a959cc37 | ||
|
|
ca70beec47 | ||
|
|
758939215d | ||
|
|
ab861e56f1 | ||
|
|
8eb64ad600 | ||
|
|
d74d3fe851 | ||
|
|
fefc6a7e6b | ||
|
|
a119114ad7 | ||
|
|
430b1a22db | ||
|
|
a754ea1326 | ||
|
|
2ecf22e37e | ||
|
|
9dcd0756ba | ||
|
|
c455254fd1 | ||
|
|
bb1f6e6818 | ||
|
|
0722e91eb9 | ||
|
|
c859a6f365 | ||
|
|
ef49850789 | ||
|
|
4f6f334f41 | ||
|
|
8cd76d3921 | ||
|
|
885805b5df | ||
|
|
d61f260372 | ||
|
|
d0a48627b2 | ||
|
|
4b8f13e902 | ||
|
|
5b9a57f536 | ||
|
|
ba9963b8fa | ||
|
|
6887106ff7 | ||
|
|
98416a4fab | ||
|
|
fad3288d20 | ||
|
|
5ecff1e4c3 | ||
|
|
bfeae0b5f5 | ||
|
|
1c5336cd57 | ||
|
|
43c2cf4edb | ||
|
|
f6d80d66a2 | ||
|
|
b2ca0babeb | ||
|
|
ed4ae322f5 | ||
|
|
4f924ab07e | ||
|
|
ebadeff0ca | ||
|
|
830018aa38 | ||
|
|
8dfddd279b | ||
|
|
544f2f74df | ||
|
|
450348d6bd | ||
|
|
5928ea9c7a | ||
|
|
4754880099 | ||
|
|
1fea66e527 | ||
|
|
806a3163ba | ||
|
|
08cf6780ba | ||
|
|
6814907a2c | ||
|
|
11a8a25528 | ||
|
|
1b246eecfe | ||
|
|
95456b8e78 | ||
|
|
79fc481a2b | ||
|
|
b9ce871463 | ||
|
|
0bd78e1cd8 | ||
|
|
d27f2d8168 | ||
|
|
407f3f142a | ||
|
|
61cfbecc74 | ||
|
|
feeabd08ab | ||
|
|
31a3432a8e | ||
|
|
27db045095 | ||
|
|
db8c75f08d | ||
|
|
beaada77e6 | ||
|
|
aefab9293a | ||
|
|
a6d9310888 | ||
|
|
bfc09ac211 | ||
|
|
d930280af5 | ||
|
|
445e4a9792 | ||
|
|
aec761916e | ||
|
|
7d750d2b92 | ||
|
|
bdf1724412 | ||
|
|
9cea2dfb8f | ||
|
|
00dec36c72 | ||
|
|
26a651f7ae | ||
|
|
b64f0dace3 | ||
|
|
a7b95cacb6 | ||
|
|
ac0e0351a0 | ||
|
|
2245ac2f88 | ||
|
|
1bfaf76dd0 | ||
|
|
88513d2d1a | ||
|
|
91bc396178 | ||
|
|
d3fdbe48ae | ||
|
|
2c086105b1 | ||
|
|
aed98c5125 | ||
|
|
2d77f7cd48 | ||
|
|
d5affe1ada | ||
|
|
d61688923d | ||
|
|
4aee6822ca | ||
|
|
038542ea3e | ||
|
|
beb14ca6d6 | ||
|
|
4114129ac0 | ||
|
|
6d24719167 | ||
|
|
2393c94363 | ||
|
|
372203f1fa | ||
|
|
691468174b | ||
|
|
6f8d439717 | ||
|
|
f3ab5d5500 | ||
|
|
8f467b4288 | ||
|
|
4adcf7e9ed | ||
|
|
9f8c40ed78 | ||
|
|
cda9d7e579 | ||
|
|
c27d2d4b93 | ||
|
|
003afef541 | ||
|
|
09bbca2f61 | ||
|
|
0a305eb79f | ||
|
|
aff5408633 | ||
|
|
31626d4c6f | ||
|
|
426ec2d399 | ||
|
|
a632f6d5b1 | ||
|
|
83c199bb00 | ||
|
|
2ec6d08613 | ||
|
|
42271ad463 | ||
|
|
57ee847ce7 | ||
|
|
985bd18904 | ||
|
|
2d1f798d14 | ||
|
|
9e9f70a693 | ||
|
|
1b9d311b5c | ||
|
|
4d437416da | ||
|
|
267b942383 | ||
|
|
142cb601f8 | ||
|
|
21b523fcd3 | ||
|
|
006cab3e9e | ||
|
|
4e909ee8b1 | ||
|
|
95df5d042c | ||
|
|
22059858fe | ||
|
|
82107a02f5 | ||
|
|
515893595d | ||
|
|
3800be3898 | ||
|
|
c9ad952604 | ||
|
|
2a09ffc648 | ||
|
|
821d8fee3b | ||
|
|
42224594b6 | ||
|
|
d369a2b775 | ||
|
|
a5f4cfc612 | ||
|
|
23e5402bec | ||
|
|
391e8afd1f | ||
|
|
eff2c3a621 | ||
|
|
de48e4e4df | ||
|
|
c4a694862c | ||
|
|
1e076a4ae0 | ||
|
|
188311863a | ||
|
|
0eb083e979 | ||
|
|
abe61b9926 | ||
|
|
54e49d10d2 | ||
|
|
ef75829878 | ||
|
|
a19341b57a | ||
|
|
c9549391d1 | ||
|
|
2b767161da | ||
|
|
7c9631081d | ||
|
|
b6f29bef06 | ||
|
|
6abbbaad1b | ||
|
|
fe5f448015 | ||
|
|
7beb473a3d | ||
|
|
19bc92289d | ||
|
|
4e4f6c1ec8 | ||
|
|
459e67b2a7 | ||
|
|
51ba24991c | ||
|
|
dfa0fd5b33 | ||
|
|
f7ef60c13f | ||
|
|
8b2bfa4212 | ||
|
|
a6c915aab9 | ||
|
|
a8323cc3f5 | ||
|
|
aa29735868 | ||
|
|
a059e9241e | ||
|
|
acd637160f | ||
|
|
ddb2783f9a | ||
|
|
8fa895d65e | ||
|
|
33b658a341 | ||
|
|
df725aade2 | ||
|
|
d84440d53b | ||
|
|
0c1ae21c11 | ||
|
|
f30959c6bd | ||
|
|
d7e406e020 | ||
|
|
638e3c070c | ||
|
|
07aeac37fd | ||
|
|
6ec76e7f9a | ||
|
|
cb9951dcad | ||
|
|
0776701396 | ||
|
|
39de6c784c | ||
|
|
e5c4482088 | ||
|
|
975c171d5a | ||
|
|
7d7f63059a | ||
|
|
8c6c0a7bcc | ||
|
|
aa41743ebd | ||
|
|
ee5f13cb6b | ||
|
|
974145f61c | ||
|
|
849318138e | ||
|
|
6a04c0878b | ||
|
|
db80e18308 | ||
|
|
3081207a4c | ||
|
|
8085c7a450 | ||
|
|
842de91168 | ||
|
|
4c621bc697 | ||
|
|
938458b330 | ||
|
|
651dad0cc1 | ||
|
|
f591ab3ba0 | ||
|
|
09aa4cf2ca | ||
|
|
61c0bdb09c | ||
|
|
89367d47a8 | ||
|
|
7fdfd938e0 | ||
|
|
e526b5ffeb | ||
|
|
adb974960d | ||
|
|
2acc92828f | ||
|
|
a1d1f43e6a | ||
|
|
aac739ccd2 | ||
|
|
c3d1b07c45 | ||
|
|
77bafd823b | ||
|
|
624b5f228b | ||
|
|
6d233becf0 | ||
|
|
2bcd13aaee | ||
|
|
20723cb792 | ||
|
|
b93ad10fa5 | ||
|
|
28e2007767 | ||
|
|
802f1e4406 | ||
|
|
a37cc6cb08 | ||
|
|
6cea51585f | ||
|
|
fce9c3a9f1 | ||
|
|
969903ebf2 | ||
|
|
7b3f86152a | ||
|
|
ea1362a936 | ||
|
|
f62a5b83a9 | ||
|
|
a834b98232 | ||
|
|
152cf6325d | ||
|
|
c98ab69cc7 | ||
|
|
f7cce15156 | ||
|
|
3072c5b8a1 | ||
|
|
ac1ab03cb0 | ||
|
|
2ef72f7abb | ||
|
|
eae27d1788 | ||
|
|
a3787eff19 | ||
|
|
836d945ece | ||
|
|
2816902f0e | ||
|
|
f72a26d340 | ||
|
|
387521bb6d | ||
|
|
a4da82a43b | ||
|
|
bc90fefb5b | ||
|
|
c3d871aef4 | ||
|
|
59e378f48f | ||
|
|
a622fd90b4 | ||
|
|
861b647e7b | ||
|
|
70e57dad88 | ||
|
|
91ff938035 | ||
|
|
3acd1146f9 | ||
|
|
45d3bfff28 | ||
|
|
18110b519c | ||
|
|
4c9768565e | ||
|
|
873e734c39 | ||
|
|
747e0c657d | ||
|
|
780f13db30 | ||
|
|
62519bfe05 | ||
|
|
29f7f468ce | ||
|
|
9c36a5fd06 | ||
|
|
4558c8f37a | ||
|
|
bb67388bbe | ||
|
|
3dcd2b82c4 | ||
|
|
c0f3e32447 | ||
|
|
8733e087d7 | ||
|
|
9f9e577640 | ||
|
|
9813cea1d0 | ||
|
|
304537c24f | ||
|
|
cc0054a4d5 | ||
|
|
29ec219b82 | ||
|
|
0994d7811f | ||
|
|
934708d950 | ||
|
|
bbc002a505 | ||
|
|
c8d4e8b5d0 | ||
|
|
18a21d5802 | ||
|
|
fcb63f3039 | ||
|
|
91d7a6f8a9 | ||
|
|
238db14002 | ||
|
|
d0995204da | ||
|
|
6ebc2b2561 | ||
|
|
95b817e8d7 | ||
|
|
558f034007 | ||
|
|
72ea805298 | ||
|
|
79ffbf7fe1 | ||
|
|
4f0d286d2c | ||
|
|
6fb5888e55 | ||
|
|
b5810dfe9d | ||
|
|
85a79f9d67 | ||
|
|
d24465b79a | ||
|
|
c67a99ff27 | ||
|
|
bae4e12302 | ||
|
|
09df1cdb5c | ||
|
|
2946d87e48 | ||
|
|
6a2d7bff1a | ||
|
|
9b7b2b347f | ||
|
|
33638d5347 | ||
|
|
2ae7d2e6ea | ||
|
|
ffc490ef89 | ||
|
|
29b75ca46f | ||
|
|
004dde18a7 | ||
|
|
3440e8d208 | ||
|
|
e138ae5ec9 | ||
|
|
bf8ba229e0 | ||
|
|
19d0a7495e | ||
|
|
099b62f124 | ||
|
|
8ce78ca488 | ||
|
|
fc9610919c | ||
|
|
e082d2403c | ||
|
|
370c3afc71 | ||
|
|
93357ef017 | ||
|
|
753592cc70 | ||
|
|
b150e6866d | ||
|
|
2f475fa9ea | ||
|
|
ecff50c2b4 | ||
|
|
6f53cf9cc6 | ||
|
|
1056202b48 | ||
|
|
709de3d621 | ||
|
|
f9894f4ebc | ||
|
|
74d3b80d70 | ||
|
|
4b01dfe369 | ||
|
|
fc09d10560 | ||
|
|
59b2e3ea4a | ||
|
|
243cf29793 | ||
|
|
9ded8fbe58 | ||
|
|
9258928c2d | ||
|
|
132cd3aa2c | ||
|
|
fef60d9d41 | ||
|
|
2fdd24c724 | ||
|
|
852a02daff | ||
|
|
2a6148716c | ||
|
|
5ca692fc89 | ||
|
|
3e2487493e | ||
|
|
fdcb0cd2bc | ||
|
|
4962e1772d | ||
|
|
d7d5618498 | ||
|
|
3f3d6ebe66 | ||
|
|
ec28988bfa | ||
|
|
db23538898 | ||
|
|
423a18cecc | ||
|
|
f164260eee | ||
|
|
a091121293 | ||
|
|
d744c85310 | ||
|
|
c9f2c54c49 | ||
|
|
f29d223ed5 | ||
|
|
8dabd34432 | ||
|
|
a104a365e3 | ||
|
|
62d94ff342 | ||
|
|
cbc04a7d40 | ||
|
|
71d3c5bf41 | ||
|
|
bc69e46ad1 | ||
|
|
13f035b905 | ||
|
|
79cbe50894 | ||
|
|
1c04aa54a7 | ||
|
|
b718283327 | ||
|
|
b34390017b | ||
|
|
8980f89370 | ||
|
|
f46d47239f | ||
|
|
13dc82b9d4 | ||
|
|
a243dd4587 | ||
|
|
9d5d6c557b | ||
|
|
a604682805 | ||
|
|
70b1cd798f | ||
|
|
578f42d588 | ||
|
|
e3ad6d2bd1 | ||
|
|
4b64a8d20d | ||
|
|
fcc8700218 | ||
|
|
e5b713ee63 | ||
|
|
9849c6b847 | ||
|
|
9bb5da968c | ||
|
|
d5a71fd567 | ||
|
|
0f98ba4729 | ||
|
|
a6a2174bf7 | ||
|
|
f07c3171e3 | ||
|
|
6cb1e3f3fa | ||
|
|
81b64f69a5 | ||
|
|
17e1f58fd6 | ||
|
|
582833b338 | ||
|
|
48be4fa069 | ||
|
|
2af05bdd3c | ||
|
|
4dbfc91e2b | ||
|
|
95cef39def | ||
|
|
00fb5bcf35 | ||
|
|
42eeb93d99 | ||
|
|
afe7bb4b33 | ||
|
|
0f5f91df0b | ||
|
|
f209a4804b | ||
|
|
5794ffe4bd | ||
|
|
ceb49d3742 | ||
|
|
44142f8234 | ||
|
|
347213d124 | ||
|
|
8ca51bc68a | ||
|
|
56f852a64f | ||
|
|
1c68e79091 | ||
|
|
473a050f0b | ||
|
|
6768e81d5d | ||
|
|
3743f515cf | ||
|
|
3e0b6a7d1f | ||
|
|
ef72f7d513 | ||
|
|
2f71461b29 | ||
|
|
d8cab4c133 | ||
|
|
95a093e97b | ||
|
|
68bb51c55b | ||
|
|
fb8fe6f2b3 | ||
|
|
3e61c90dbe | ||
|
|
ac18b471d2 | ||
|
|
bbe2386bff | ||
|
|
2f47248e3c | ||
|
|
315bb970a5 | ||
|
|
65b0f6049d | ||
|
|
0033535e21 | ||
|
|
3e4a8cb800 | ||
|
|
ad638da2c2 | ||
|
|
a923d8541c | ||
|
|
66fb9ca5f6 | ||
|
|
11cb78c5f8 | ||
|
|
527a5f0980 | ||
|
|
6e878d2ca4 | ||
|
|
cf30b24706 | ||
|
|
709a2ed474 | ||
|
|
ecd30cc8bb | ||
|
|
0105ad5e39 | ||
|
|
cebaab8ee5 | ||
|
|
34281925d6 | ||
|
|
e90c4fa770 | ||
|
|
a06e077938 | ||
|
|
7bdae7be4f | ||
|
|
c125d83e9e | ||
|
|
2abf9221e3 | ||
|
|
6f1e89085c | ||
|
|
5303cdc4af | ||
|
|
feb03e4717 | ||
|
|
64e3a091c3 | ||
|
|
a2c50a980c | ||
|
|
23478b891f | ||
|
|
aab2d52b25 | ||
|
|
9a9041f1ce | ||
|
|
0aa704935b | ||
|
|
ede7f8f5de | ||
|
|
3c317d2fac | ||
|
|
b55b0258e0 | ||
|
|
55a8098d48 | ||
|
|
389e50ff1e | ||
|
|
1df4043ad7 | ||
|
|
b000b8a736 | ||
|
|
7eab7fa353 | ||
|
|
58f7c82d52 | ||
|
|
4d1cd0da93 | ||
|
|
9ee7a014c9 | ||
|
|
e1ab7db87d | ||
|
|
14a5596346 | ||
|
|
2eba5f33b9 | ||
|
|
60a3773c50 | ||
|
|
e8e8177e9d | ||
|
|
f1fe04245a | ||
|
|
8bb208e8f8 | ||
|
|
f8a3aa91cd | ||
|
|
019bde82ce | ||
|
|
ca5e38751c | ||
|
|
b5b25b39e9 | ||
|
|
1784523cc6 | ||
|
|
d71d10adbc | ||
|
|
40fb750589 | ||
|
|
62a6b8d4a6 | ||
|
|
24b1890710 | ||
|
|
3a1d28379a | ||
|
|
c57285d199 | ||
|
|
68cfe929c4 | ||
|
|
6237fd2c16 | ||
|
|
b023f9bd2a | ||
|
|
b7ac885d38 | ||
|
|
cbd9dcbe41 | ||
|
|
4594187732 | ||
|
|
63818f8488 | ||
|
|
8af61cdb66 | ||
|
|
ab83c0fd5b | ||
|
|
3cc40a2584 | ||
|
|
c11933b3fd | ||
|
|
4687699726 | ||
|
|
012dcb4893 | ||
|
|
f01d18e4b9 | ||
|
|
dabd3cd355 | ||
|
|
fa001f27a5 | ||
|
|
40b2e06a7f | ||
|
|
8008499028 | ||
|
|
3ac6929919 | ||
|
|
8d36acd29b | ||
|
|
e54209d643 | ||
|
|
f6a958dc3a | ||
|
|
2548e7b23f | ||
|
|
97046a3548 | ||
|
|
a7d52c414f | ||
|
|
479466a495 | ||
|
|
fa2a8f6fb8 | ||
|
|
ddfa33be79 | ||
|
|
25c76a760e | ||
|
|
14240e9e10 | ||
|
|
a3045b4e49 | ||
|
|
b0685b3576 | ||
|
|
138c57c76a | ||
|
|
182a415555 | ||
|
|
6e789fc516 | ||
|
|
09f278121e | ||
|
|
ed50e3f1b4 | ||
|
|
3a499099af | ||
|
|
931fc45f05 | ||
|
|
6076c74041 | ||
|
|
b4fdccf87a | ||
|
|
8d012181b0 | ||
|
|
d6344d9b5f | ||
|
|
cb9410ded2 | ||
|
|
6838fb32af | ||
|
|
74d77cb140 | ||
|
|
7ad3abfd05 | ||
|
|
7c6df7132e | ||
|
|
f27299dc3b | ||
|
|
47724ef238 | ||
|
|
357389a905 | ||
|
|
42cabc14d4 | ||
|
|
a948ca1669 | ||
|
|
9cef14dfb2 | ||
|
|
2d15d84a01 | ||
|
|
1035469662 | ||
|
|
296a6f7749 | ||
|
|
5cff8124b0 | ||
|
|
90e2510e2f | ||
|
|
9251dd7b24 | ||
|
|
3615063fbc | ||
|
|
09664f1ab8 | ||
|
|
bdf1157d55 | ||
|
|
b4a5ce89c2 | ||
|
|
660516914e | ||
|
|
4c1c479fcf | ||
|
|
309651dc82 | ||
|
|
b13b9f3331 | ||
|
|
108e584983 | ||
|
|
f3b4071209 | ||
|
|
fe1d024351 | ||
|
|
0de08d418f | ||
|
|
109edaae6d | ||
|
|
d69a630989 | ||
|
|
987b67bd2e | ||
|
|
f4d56802f9 | ||
|
|
9dfd6eacf4 | ||
|
|
5aed78e183 | ||
|
|
011e5dd864 | ||
|
|
ae654266df | ||
|
|
03986f1b8b | ||
|
|
bc649593e4 | ||
|
|
cc0285da7f | ||
|
|
f3bc16f4f5 | ||
|
|
15f94858f2 | ||
|
|
5febd06c25 | ||
|
|
9eb7fe8ac0 | ||
|
|
1f26ea4a85 | ||
|
|
912c29fd8c | ||
|
|
eea468918e | ||
|
|
537490e391 | ||
|
|
de8e362d4a | ||
|
|
7a588144b7 | ||
|
|
7f2999aa43 | ||
|
|
a3498f96ef | ||
|
|
637bfa0252 | ||
|
|
1c8f689ecb | ||
|
|
7a8b11d716 | ||
|
|
a67e207866 | ||
|
|
5817209158 | ||
|
|
b39d409aa2 | ||
|
|
a18fb9448b | ||
|
|
1f3007dbb4 | ||
|
|
5dafa4a270 | ||
|
|
e93bcbeee1 | ||
|
|
adc032e7d8 | ||
|
|
248c2b9bf5 | ||
|
|
a8baa05023 | ||
|
|
7066a79466 | ||
|
|
4a623f7ed2 | ||
|
|
f18700ef64 | ||
|
|
52d9a3c34f | ||
|
|
d785ed2588 | ||
|
|
4ff37a4ed1 | ||
|
|
fe167b6ba2 | ||
|
|
f042a7419d | ||
|
|
bc0ebfcdeb | ||
|
|
57d13c770a | ||
|
|
1692384636 | ||
|
|
7634091325 | ||
|
|
bdc8f59c17 | ||
|
|
817efbc29c | ||
|
|
d2661cb4b2 | ||
|
|
9b0110f50c | ||
|
|
5876381f86 | ||
|
|
c4edc25d01 | ||
|
|
36361d14cf | ||
|
|
c8fe5f485c | ||
|
|
1ac1212925 | ||
|
|
3d4fb5136d | ||
|
|
b6b03c8ab9 | ||
|
|
432945e422 | ||
|
|
052f9ddedb | ||
|
|
a96784b98e | ||
|
|
e06944438a | ||
|
|
fa1009b6fc | ||
|
|
b377e857bd | ||
|
|
9a806f667b | ||
|
|
979c9ce8e3 | ||
|
|
b217e6eed7 | ||
|
|
6b7e74a030 | ||
|
|
7fdeb14e6d | ||
|
|
8a323f8354 | ||
|
|
a7abd5bf70 | ||
|
|
932b589780 | ||
|
|
27c282a6ee | ||
|
|
5373289574 | ||
|
|
7d0eabaa80 | ||
|
|
e7f5d12cb6 | ||
|
|
f14e020370 | ||
|
|
e933b28aaf | ||
|
|
1bc490077a | ||
|
|
7d773abe50 | ||
|
|
f22114aeed | ||
|
|
0919de4511 | ||
|
|
3e5292a052 | ||
|
|
2066d60b16 | ||
|
|
51e84c77e7 | ||
|
|
775d9e0615 | ||
|
|
a20d55fb64 | ||
|
|
1b37baf656 | ||
|
|
bffe69a151 | ||
|
|
71525352f0 | ||
|
|
facc5f7ec5 | ||
|
|
184229b1e5 | ||
|
|
3e488c4f19 | ||
|
|
3f84e373ac | ||
|
|
ac6d6ec2f1 | ||
|
|
f11d5d9de8 | ||
|
|
ed2dbefa73 | ||
|
|
39f23aec6b | ||
|
|
362422641e | ||
|
|
a9dc900515 | ||
|
|
3a705696af | ||
|
|
2cfb8a2bf0 | ||
|
|
21ee1c2d01 | ||
|
|
a00febe1a0 | ||
|
|
1e7125ae7b | ||
|
|
aa4a7471dd | ||
|
|
69a03ce23c | ||
|
|
0f50cd7623 | ||
|
|
669c555874 | ||
|
|
1cfb73a129 | ||
|
|
2a585c2fba | ||
|
|
32a83128e6 | ||
|
|
fe7bb33af8 | ||
|
|
da6fa34f02 | ||
|
|
37a358ab93 | ||
|
|
3452c8d693 | ||
|
|
336992cc54 | ||
|
|
13afcbd1eb | ||
|
|
e58a3fd0aa | ||
|
|
57625b6c4c | ||
|
|
0d058d2174 | ||
|
|
8d49a8f278 | ||
|
|
b4b6cfdb1c | ||
|
|
6b7ccde156 | ||
|
|
9b0fd007fd | ||
|
|
6f3ef94836 | ||
|
|
08ac9866e0 | ||
|
|
a17fadea3a | ||
|
|
e30bbfd85d | ||
|
|
120f9d81b2 | ||
|
|
fa38839a80 | ||
|
|
d8f109176c | ||
|
|
bbb1b99ce1 | ||
|
|
0cd8840dba | ||
|
|
d4b253ba3e | ||
|
|
aee7fc118b | ||
|
|
60f0b4fffe | ||
|
|
a95e600eb0 | ||
|
|
a25959184e | ||
|
|
0e5da5b8bc | ||
|
|
ddfa4b8896 | ||
|
|
d816a11bca | ||
|
|
7820391cb9 | ||
|
|
148866bc73 | ||
|
|
0b57c47547 | ||
|
|
02db4450df | ||
|
|
ed7af82bdf | ||
|
|
e3b5673e98 | ||
|
|
82412f218f | ||
|
|
7c648782bc | ||
|
|
ee64d14733 | ||
|
|
bfaab6ed6b | ||
|
|
97333deb3f | ||
|
|
400d9d4205 | ||
|
|
ad1145a201 | ||
|
|
513c22df3b | ||
|
|
b5afd53138 | ||
|
|
72b4b3c7f8 | ||
|
|
eb60ba23f5 | ||
|
|
69aac49f79 | ||
|
|
67f139e016 | ||
|
|
654f047302 | ||
|
|
e6c23672b2 | ||
|
|
1058e5fdde | ||
|
|
6929d9355f | ||
|
|
8c377ad965 | ||
|
|
a81a16beac | ||
|
|
d92945bb8a | ||
|
|
90a6a59a2f | ||
|
|
8bae3d9007 | ||
|
|
98042b858d | ||
|
|
a837bd08b0 | ||
|
|
2c61e9c76a | ||
|
|
da97f78ae0 | ||
|
|
2e1a9da5e2 | ||
|
|
422fd933f5 | ||
|
|
2594124825 | ||
|
|
d09b6ecaa5 | ||
|
|
fb2e71b9bd | ||
|
|
68b67e24f2 | ||
|
|
c1e2341f0a | ||
|
|
70d834c512 | ||
|
|
65ee4e4555 | ||
|
|
5304b13365 | ||
|
|
e547bfa933 | ||
|
|
36ddb13d1f | ||
|
|
74e3def5b3 | ||
|
|
24d41452b0 | ||
|
|
2597020d22 | ||
|
|
2d0fea2650 | ||
|
|
c1a71ad14f | ||
|
|
024c7641a9 | ||
|
|
5c56bdf229 | ||
|
|
af779fa57c | ||
|
|
9918541795 | ||
|
|
04d5c8fb77 | ||
|
|
5980b3cbb0 | ||
|
|
10074bfcc6 | ||
|
|
3940e69c91 | ||
|
|
0ace5f6553 | ||
|
|
b8a9f19515 | ||
|
|
6cd007838d | ||
|
|
72870e2c57 | ||
|
|
9c8997cbe4 | ||
|
|
c6efb82526 | ||
|
|
5abfdc0140 | ||
|
|
d8bc4a0e9a | ||
|
|
8ad2fdd71e | ||
|
|
a2e45a2211 | ||
|
|
621c2b9015 | ||
|
|
b39d1e9b9d | ||
|
|
e1c456407e | ||
|
|
3fe8251dfb | ||
|
|
930a45e7a9 | ||
|
|
afc66554d7 | ||
|
|
998ab15570 | ||
|
|
c0d258ca17 | ||
|
|
230e4547e8 | ||
|
|
4cf33909ee | ||
|
|
323273382c | ||
|
|
6f0a2608b4 | ||
|
|
ea86edbd82 | ||
|
|
e7b5a8e6cb | ||
|
|
27eaf0cf02 | ||
|
|
c84904d8c8 | ||
|
|
01e1c85304 | ||
|
|
4774582dfb | ||
|
|
1ed09ff7a4 | ||
|
|
d89cf27d65 | ||
|
|
35d5ba2626 | ||
|
|
e5f0c38fa9 | ||
|
|
47925f3dd7 | ||
|
|
82c5950c7e | ||
|
|
1806879bb2 | ||
|
|
998b046d70 | ||
|
|
ec4f6e93c2 | ||
|
|
b49dcfb52b | ||
|
|
c62d55342d | ||
|
|
f7815fa93c | ||
|
|
6e305e11e3 | ||
|
|
b97606f0b0 | ||
|
|
f26154bfa9 | ||
|
|
d220ac8582 | ||
|
|
c57e748107 | ||
|
|
d6f8f16068 | ||
|
|
466429efb0 | ||
|
|
89977c73d1 | ||
|
|
a9a05a32bd | ||
|
|
2045c79e37 | ||
|
|
e60b5245d3 | ||
|
|
90bbabce56 | ||
|
|
ddfbe8b649 | ||
|
|
d001f6a396 | ||
|
|
d31da176eb | ||
|
|
e664cd5826 | ||
|
|
b8abeab6d3 | ||
|
|
4aa176c127 | ||
|
|
498e939f0e | ||
|
|
9a22b893b6 | ||
|
|
76d0d40946 | ||
|
|
791ad1210e | ||
|
|
100945694a | ||
|
|
abe2e6ecf7 | ||
|
|
d8efc99217 | ||
|
|
0163b5b8be | ||
|
|
baee3996ab | ||
|
|
8ad1928d93 | ||
|
|
24bf52bc69 | ||
|
|
862049c490 | ||
|
|
a8fc98aa30 | ||
|
|
d70f33748c | ||
|
|
b006c31b7b | ||
|
|
ae45a462e0 | ||
|
|
3cb0dd6685 | ||
|
|
c2a84aa6f0 | ||
|
|
9346e55d5a | ||
|
|
8fc2f8ef62 | ||
|
|
512b9ac194 | ||
|
|
560a82aeaf | ||
|
|
7358db5c27 | ||
|
|
e059efda1b | ||
|
|
164a985115 | ||
|
|
ade57a781c | ||
|
|
9f12ed83f2 | ||
|
|
8aabd9839b | ||
|
|
882fbb0433 | ||
|
|
15eee5dbbb | ||
|
|
cfc1d037ff | ||
|
|
c24ed07596 | ||
|
|
08aab6a620 | ||
|
|
2748c64d60 | ||
|
|
c4f1ab3cc5 | ||
|
|
5e06ec8409 | ||
|
|
04d0a84ae5 | ||
|
|
c1dfe2c529 | ||
|
|
7f88e8badb | ||
|
|
2f66ff2e4f | ||
|
|
76c251513e | ||
|
|
80afddacc8 | ||
|
|
7543c9df50 | ||
|
|
83fb13329d | ||
|
|
e06c923605 | ||
|
|
ab1169895f | ||
|
|
01e81c7e10 | ||
|
|
7bf1142ae0 | ||
|
|
af9f7a952b | ||
|
|
514592b892 | ||
|
|
d72efff878 | ||
|
|
e4c60e2030 | ||
|
|
ed80eb5b0f | ||
|
|
60dd765b3d | ||
|
|
b380dd030f | ||
|
|
19479ea021 | ||
|
|
d708ef6731 | ||
|
|
d1238baecb | ||
|
|
0510759bc4 | ||
|
|
6d5cca5ed0 | ||
|
|
e2b82b4325 | ||
|
|
cf4570a06f | ||
|
|
6df5dddd90 | ||
|
|
d4e9b141db | ||
|
|
ec0665a931 | ||
|
|
836fa69e2e | ||
|
|
9026dc2da4 | ||
|
|
98c9af4c59 | ||
|
|
e481d679b2 | ||
|
|
eb68aa38e3 | ||
|
|
082237e2b5 | ||
|
|
dd08a7a4f6 | ||
|
|
a60c9ef88e | ||
|
|
4e3d235e04 | ||
|
|
19da3606f9 | ||
|
|
fc9e0d2249 | ||
|
|
21a0f09081 | ||
|
|
b84b71f524 | ||
|
|
3d29bda9f8 | ||
|
|
459c664043 | ||
|
|
45edad84cb | ||
|
|
fd31f7e7e5 | ||
|
|
7b2531da24 | ||
|
|
848a13654d | ||
|
|
1cca8f5a30 | ||
|
|
12ffcf0b45 | ||
|
|
852989856d | ||
|
|
7dfdbf8fbe | ||
|
|
1eebb90030 | ||
|
|
ab71654078 | ||
|
|
7a6cff4b3a | ||
|
|
c3ba2198b1 | ||
|
|
ff748f1a41 | ||
|
|
b8193b6321 | ||
|
|
113d0937de | ||
|
|
d0a506661f | ||
|
|
4e71173928 | ||
|
|
e0f0a2ccee | ||
|
|
96edebf4d9 | ||
|
|
3783b455c0 | ||
|
|
7ee5238f5e | ||
|
|
b398169567 | ||
|
|
1960eebc2d | ||
|
|
ad1dd08693 | ||
|
|
95fd093c4a | ||
|
|
ed1ad28e29 | ||
|
|
7076505c24 | ||
|
|
5825cf9457 | ||
|
|
ff40415aee | ||
|
|
f48eb36f75 | ||
|
|
768e3e796e | ||
|
|
3869d4a3a7 | ||
|
|
a87c468c5c | ||
|
|
7abf50a5c0 | ||
|
|
d3f46eb61b | ||
|
|
72c58b0d1d | ||
|
|
6c89e1b311 | ||
|
|
09777a4fc2 | ||
|
|
0331071346 | ||
|
|
614ae7b2bc | ||
|
|
af41ada7aa | ||
|
|
6a33a4456e | ||
|
|
e0c2a39ad4 | ||
|
|
cda1f2be58 | ||
|
|
79e06c4147 | ||
|
|
ead2618c31 | ||
|
|
84eb9fee76 | ||
|
|
79300cdcd9 | ||
|
|
a9591ad1b7 | ||
|
|
098106b54c | ||
|
|
74bb59fa57 | ||
|
|
c97d112b30 | ||
|
|
2dc20b84c1 | ||
|
|
39b689f966 | ||
|
|
6fd3ff4032 | ||
|
|
ab8d1464a7 | ||
|
|
bf90d11a31 | ||
|
|
a08b6ae813 | ||
|
|
74c500b6ec | ||
|
|
26aeadbc3e | ||
|
|
d0a4b50e19 | ||
|
|
ebaf06a741 | ||
|
|
34d837c2dd | ||
|
|
7607d5145b | ||
|
|
12a90289ed | ||
|
|
592697583d | ||
|
|
b50a96982e | ||
|
|
aa2a54c10a | ||
|
|
532d4b5106 | ||
|
|
5788719988 | ||
|
|
ac0b911eda | ||
|
|
10232bfe9e | ||
|
|
a9c1ca9fc5 | ||
|
|
d051dd8087 | ||
|
|
bf52cef16f | ||
|
|
16a9c5e02b | ||
|
|
fef1a90938 | ||
|
|
27870d48ff | ||
|
|
2f66f3ce08 | ||
|
|
369df58a0d | ||
|
|
3d08b352a2 | ||
|
|
d13be06aaa | ||
|
|
f1c69192da | ||
|
|
a2314225e0 | ||
|
|
1e482fe6a8 | ||
|
|
80e7f9b9de | ||
|
|
d219269f1b | ||
|
|
0ff0512aff | ||
|
|
bdd731177e | ||
|
|
abd1c526f0 | ||
|
|
a050a5fa9b | ||
|
|
7f7b643c0d | ||
|
|
cd2814725a | ||
|
|
342fa1cf06 | ||
|
|
b425e851fb | ||
|
|
7c6a026230 | ||
|
|
2c9763da3e | ||
|
|
a782c3e368 | ||
|
|
95bd901efe | ||
|
|
98c9a5b7f6 | ||
|
|
516192e7f2 | ||
|
|
c37cdbe2cf | ||
|
|
c0a30b04c2 | ||
|
|
86cbb23282 | ||
|
|
e9a460411f | ||
|
|
a57098ea9b | ||
|
|
6f3166c15b | ||
|
|
1380c9af9f | ||
|
|
942daece00 | ||
|
|
040a4443a1 | ||
|
|
641d5c4111 | ||
|
|
ad4a9955c5 | ||
|
|
553ed99e3b | ||
|
|
b74cdee6ab | ||
|
|
f3c0afa5b8 | ||
|
|
a69ba639ba | ||
|
|
fc9ad03e66 | ||
|
|
b9d66dca51 | ||
|
|
ecf1c6ca5d | ||
|
|
9b48991ebd | ||
|
|
7a8a20416f | ||
|
|
458925ae0b | ||
|
|
e44dc92197 | ||
|
|
9bb51d767e | ||
|
|
82e095a275 | ||
|
|
0e40261a11 | ||
|
|
8e9e33ae52 | ||
|
|
40e1a016f9 | ||
|
|
1cf559492a | ||
|
|
4957a838ef | ||
|
|
91aeebed26 | ||
|
|
b16ea66cec | ||
|
|
80cec5a62a | ||
|
|
6c2c281a7e | ||
|
|
0836893335 | ||
|
|
590f0358d8 | ||
|
|
115446be37 | ||
|
|
d83606ee3a | ||
|
|
8f4fda1d6f | ||
|
|
18cbb4d7d6 | ||
|
|
22e84d92b7 | ||
|
|
3d74649908 | ||
|
|
ed63d9d4de | ||
|
|
8adc7038fe | ||
|
|
b12fef3f31 | ||
|
|
6cc8df95dd | ||
|
|
f105e23444 | ||
|
|
7513d29a48 | ||
|
|
97a41f3646 | ||
|
|
84de433e62 | ||
|
|
724ad15dad | ||
|
|
79aa6c841e | ||
|
|
058e764af8 | ||
|
|
0d09f342c4 | ||
|
|
9682c2037e | ||
|
|
74241e7d85 | ||
|
|
3154f04fb9 | ||
|
|
6982ed4db7 | ||
|
|
9dd3e4d481 | ||
|
|
1d95109ffa | ||
|
|
e9bb7b7712 | ||
|
|
5e9c564883 | ||
|
|
3bb4602227 | ||
|
|
064eebeaf1 | ||
|
|
4ae644e427 | ||
|
|
d208e56b16 | ||
|
|
e6170eb20d | ||
|
|
2c80bcbc81 | ||
|
|
b60dbfa9e9 | ||
|
|
9019fc5671 | ||
|
|
5db0f70491 | ||
|
|
53a549000c | ||
|
|
55700cb01f | ||
|
|
f9a6062081 | ||
|
|
0cae201044 | ||
|
|
9df37b93df | ||
|
|
7b5c86033a | ||
|
|
ade0890746 | ||
|
|
7a5596bf02 | ||
|
|
d2125cf501 | ||
|
|
c9eb41c056 | ||
|
|
0d722204c3 | ||
|
|
e829d5643f | ||
|
|
1093287494 | ||
|
|
6398f71cc4 | ||
|
|
e2b50b203d | ||
|
|
ab0de23d83 | ||
|
|
ec54fbd9ed | ||
|
|
074bd2a19b | ||
|
|
fb23b85770 | ||
|
|
3458ce9ae5 | ||
|
|
ba3e7a8656 | ||
|
|
240bae4eb2 | ||
|
|
4180ca7638 | ||
|
|
0e73361a06 | ||
|
|
23547fa2a0 | ||
|
|
550d6f74b9 | ||
|
|
f7b71c2abe | ||
|
|
0da90b5d91 | ||
|
|
f20c94ced9 | ||
|
|
3e635a2334 | ||
|
|
e78652d850 | ||
|
|
48918c3047 | ||
|
|
dc42d6fb8d | ||
|
|
d2ad98d8c5 | ||
|
|
d25aab2704 | ||
|
|
cfaf88aab4 | ||
|
|
ecc75be6f3 | ||
|
|
13ebf61850 | ||
|
|
b3fafe9b3a | ||
|
|
c66943bd89 | ||
|
|
11fae450fa | ||
|
|
cf9259dd92 | ||
|
|
6634e3c3a3 | ||
|
|
533ae704a1 | ||
|
|
fcc320ee40 | ||
|
|
dc9fe9c361 | ||
|
|
75c369dcca | ||
|
|
019f6a1926 | ||
|
|
44fba11b34 | ||
|
|
df07c87b89 | ||
|
|
8f9e0357dd | ||
|
|
736af32b49 | ||
|
|
6942d313ff | ||
|
|
940c075bd8 | ||
|
|
08e5c0812f | ||
|
|
a8c71961e0 | ||
|
|
d6f47cc60c | ||
|
|
63d595a047 | ||
|
|
15e56c3284 | ||
|
|
fc1443dcfc | ||
|
|
59e3651af3 | ||
|
|
4c841a1f0c | ||
|
|
339ebdf08b | ||
|
|
f01d324c83 | ||
|
|
405e192b8c | ||
|
|
1a340de0e5 | ||
|
|
05c191199d | ||
|
|
1fd7085ef1 | ||
|
|
c3a7a757f7 | ||
|
|
dca46e6470 | ||
|
|
7edd13822c | ||
|
|
a2bff51ede | ||
|
|
5dc1240c49 | ||
|
|
c764331dd9 | ||
|
|
586444b6b8 | ||
|
|
ce1649564c | ||
|
|
d76a74cc5e | ||
|
|
1b701c746f | ||
|
|
15bf168527 | ||
|
|
20e9fc73e2 | ||
|
|
bad6410d08 | ||
|
|
fecb67b246 | ||
|
|
2c0956200f | ||
|
|
acd9d72466 | ||
|
|
cd63a461d7 | ||
|
|
7bd098f670 | ||
|
|
4b5c504bd4 | ||
|
|
ffae4f6b48 | ||
|
|
454e840590 | ||
|
|
ed0a413711 | ||
|
|
ff812ccdc9 | ||
|
|
03bbf4de48 | ||
|
|
a62e155ca4 | ||
|
|
b620e62f0f | ||
|
|
b3186dee17 | ||
|
|
ea3f63281c | ||
|
|
7b9435890d | ||
|
|
1bfbd25027 | ||
|
|
ceb5a8ca7b | ||
|
|
ddc98c6fc9 | ||
|
|
ff6ff66e50 | ||
|
|
a7b98f5f6b | ||
|
|
6bae091c1b | ||
|
|
33d68653f0 | ||
|
|
267836e83c | ||
|
|
87fdfe770d | ||
|
|
8fca5c2e69 | ||
|
|
5f2055729e | ||
|
|
c6df788866 | ||
|
|
e67b2524d1 | ||
|
|
d7bcc26179 | ||
|
|
69e540dfa6 | ||
|
|
2198869eb1 | ||
|
|
fb07259e0d | ||
|
|
9d28a0252c | ||
|
|
d54c14ccf9 | ||
|
|
41def4be6e | ||
|
|
2d38d0d515 | ||
|
|
e796c79d18 | ||
|
|
c93ba48da2 | ||
|
|
e322513698 | ||
|
|
6fa72e6417 | ||
|
|
c914e6ea5d | ||
|
|
79cb74f03a | ||
|
|
34cf35051a | ||
|
|
9bd28a021f | ||
|
|
5ee3f41e0d | ||
|
|
64e88ff6a7 | ||
|
|
acd7c94598 | ||
|
|
bdb2beb8e4 | ||
|
|
727e23322f | ||
|
|
ef0ed9b720 | ||
|
|
a674654f83 | ||
|
|
3caeb0a91f | ||
|
|
a4eddf0d0d | ||
|
|
fcf9029179 | ||
|
|
e40327ba00 | ||
|
|
bdd0e3d3f5 | ||
|
|
e9490fdbd9 | ||
|
|
bd40b3ff3f | ||
|
|
8c66811e09 | ||
|
|
daadcfd1de | ||
|
|
62df0ff025 | ||
|
|
01d95b56a0 | ||
|
|
f6adae8d35 | ||
|
|
bcaadb4284 | ||
|
|
8d963aa0e2 | ||
|
|
0530b0a5ca | ||
|
|
5396121595 | ||
|
|
bcfc7d90d1 | ||
|
|
47246eb401 | ||
|
|
3620e71010 | ||
|
|
c522f349fe | ||
|
|
6893fcaa9b | ||
|
|
301ae1ae1b | ||
|
|
ddaa78f08b | ||
|
|
3d55877764 | ||
|
|
3ee32d7920 | ||
|
|
b3de497d83 | ||
|
|
ed6466d176 | ||
|
|
991505e077 | ||
|
|
56f17d2c9f | ||
|
|
19ae96f4d0 | ||
|
|
53108806af | ||
|
|
1d620a3df4 | ||
|
|
69f685056d | ||
|
|
9c7d4394f9 | ||
|
|
bcc3c9279a | ||
|
|
5d63404966 | ||
|
|
a8ae8087c4 | ||
|
|
502da27d65 | ||
|
|
4ab8ebb232 | ||
|
|
f866af912d | ||
|
|
4f00a8db73 | ||
|
|
5004529685 | ||
|
|
2b63eb8511 | ||
|
|
f09fe4b49f | ||
|
|
22c76df44d | ||
|
|
35be09cf58 | ||
|
|
3564aec388 | ||
|
|
a042090467 | ||
|
|
148d727525 | ||
|
|
08adf67969 | ||
|
|
e2c817731a | ||
|
|
8df7e0bdba | ||
|
|
14ff7e75e0 | ||
|
|
d270d6518a | ||
|
|
18faa50940 | ||
|
|
0ce484eed9 | ||
|
|
bce5ae9a07 | ||
|
|
15f832d1c2 | ||
|
|
c249a8aa1b | ||
|
|
fc794ae012 | ||
|
|
07227e8089 | ||
|
|
32cc75d6cb | ||
|
|
1c0a19ad53 | ||
|
|
de23b98522 | ||
|
|
5e1c9e90d9 | ||
|
|
59b4bdf78d | ||
|
|
34d02d1969 | ||
|
|
2408b236ca | ||
|
|
4acd437952 | ||
|
|
314f62958d | ||
|
|
c616d56e96 | ||
|
|
f111c9edae | ||
|
|
7138296633 | ||
|
|
195e94c0fa | ||
|
|
cadd08f36a | ||
|
|
7306b7829b | ||
|
|
423309541a | ||
|
|
9c6533d287 | ||
|
|
b430576436 | ||
|
|
65008a4e55 | ||
|
|
3df484088f | ||
|
|
2912189875 | ||
|
|
fcb2595ed6 | ||
|
|
0878af3ec0 | ||
|
|
fe0d7aee49 | ||
|
|
2e42b0a252 | ||
|
|
fcc485092a | ||
|
|
a4945fe687 | ||
|
|
88d89b2177 | ||
|
|
61a2d5ea75 | ||
|
|
c479c64333 | ||
|
|
7a2177dc42 | ||
|
|
bf6e2f28ba | ||
|
|
f5da1e5484 | ||
|
|
fd8d862c37 | ||
|
|
083d3190e5 | ||
|
|
6787d1ed35 | ||
|
|
d9023c16ab | ||
|
|
193d33fd4a | ||
|
|
a46b40b7fd | ||
|
|
0b9b8acb08 | ||
|
|
bf98b635cd | ||
|
|
7795eb6db8 | ||
|
|
31674559d3 | ||
|
|
04e4d9a0b3 | ||
|
|
f277124a0f | ||
|
|
6adf5880f5 | ||
|
|
4e8c4fc80b | ||
|
|
fc1d1ea934 | ||
|
|
9cd30c2012 | ||
|
|
d639ed1aaf | ||
|
|
c3a02f5407 | ||
|
|
674845f239 | ||
|
|
07a1857d59 | ||
|
|
f4ffa85f60 | ||
|
|
bcd7d03b3b | ||
|
|
82c9379b6c | ||
|
|
c1730dc50a | ||
|
|
20695098c8 | ||
|
|
ee52ae001c | ||
|
|
26115aac5d | ||
|
|
ca6b27aed2 | ||
|
|
4fabe22173 | ||
|
|
7b1a22147e | ||
|
|
dc24540ed1 | ||
|
|
92eae30f4d | ||
|
|
79ef08f631 | ||
|
|
e3c5f8374b | ||
|
|
6dc68b4193 | ||
|
|
afab4d888f | ||
|
|
c751dfd65d | ||
|
|
dbca1347f1 | ||
|
|
3b6315ce1f | ||
|
|
3c1db5f250 | ||
|
|
562e9b7bf3 | ||
|
|
a83e72692f | ||
|
|
bd99a7dc8c | ||
|
|
db2d52a792 | ||
|
|
24602edc17 | ||
|
|
b0b40d9a00 | ||
|
|
71b105ceb1 | ||
|
|
ccb4956145 | ||
|
|
3d09cb0a88 | ||
|
|
a03c2d825b | ||
|
|
06fb242e23 | ||
|
|
a086952244 | ||
|
|
2b314064ae | ||
|
|
439990be88 | ||
|
|
41d8186c7e | ||
|
|
6e9276229f | ||
|
|
636f5eb882 | ||
|
|
963ef5414c | ||
|
|
975812d246 | ||
|
|
089668ec73 | ||
|
|
cc0ce38acc | ||
|
|
8cdff55b80 | ||
|
|
662bee7193 | ||
|
|
f8172f85b1 | ||
|
|
7d3ea12b62 | ||
|
|
59dc9085d1 | ||
|
|
4e4f33a297 | ||
|
|
8fa599215b | ||
|
|
31e2409d6b | ||
|
|
15c304225f | ||
|
|
e1998e3b58 | ||
|
|
5c447f2499 | ||
|
|
9d0ffb9cc6 | ||
|
|
2be50baf97 | ||
|
|
a1772ca406 | ||
|
|
30eda92a53 | ||
|
|
1f058f1014 | ||
|
|
84d0477cb9 | ||
|
|
1c93e75375 | ||
|
|
380ed8bebf | ||
|
|
98e8978857 | ||
|
|
56ddfbea6e | ||
|
|
45a2240ead | ||
|
|
f75ba55b51 | ||
|
|
46e6115d72 | ||
|
|
800a72878a | ||
|
|
649f7b7fd3 | ||
|
|
c1b734a3e1 | ||
|
|
cf806748ec | ||
|
|
b28dc011e0 | ||
|
|
ee4fef3768 | ||
|
|
058a023fae | ||
|
|
0c367fef94 | ||
|
|
a418d290f1 | ||
|
|
08cb30801c | ||
|
|
788de4f7ba | ||
|
|
ebce0a16f6 | ||
|
|
df546bd58c | ||
|
|
05221e9056 | ||
|
|
e963714de6 | ||
|
|
dc11239ff1 | ||
|
|
d59841618d | ||
|
|
8d3964782a | ||
|
|
162c039e9d | ||
|
|
13648f8ccd | ||
|
|
5b809a3104 | ||
|
|
3daa54d636 | ||
|
|
8f1829d1d2 | ||
|
|
6efb6addf2 | ||
|
|
d789097af0 | ||
|
|
4bd2d49ca1 | ||
|
|
ecfede9b3c | ||
|
|
cb04619de2 | ||
|
|
61e2e86aef | ||
|
|
9b86eecb94 | ||
|
|
35212da048 | ||
|
|
755e743cdd | ||
|
|
1a323390ec | ||
|
|
23559fd118 | ||
|
|
d994a873a4 | ||
|
|
b6575ce0b0 | ||
|
|
e2b2a84497 | ||
|
|
86956c2261 | ||
|
|
ef6dfdc7fd | ||
|
|
f3b85ef79d | ||
|
|
1d7e42ee9f | ||
|
|
6dfb5b4e1f | ||
|
|
930085751c | ||
|
|
258c4686b2 | ||
|
|
600d0b1303 | ||
|
|
2f928797cf | ||
|
|
f3f06e823c | ||
|
|
58292f49c5 | ||
|
|
5376d1047c | ||
|
|
1746b57161 | ||
|
|
0561bffab3 | ||
|
|
968e943eac | ||
|
|
5be00c95a7 | ||
|
|
c80b9c3778 | ||
|
|
536f98a766 | ||
|
|
c4e5613a7d | ||
|
|
bff962398d | ||
|
|
2b15823dab | ||
|
|
59dcc7e191 | ||
|
|
ea3fe98867 | ||
|
|
4f05613fbb | ||
|
|
22e52ddd6e | ||
|
|
1125d45397 | ||
|
|
44d408204a | ||
|
|
50feea3eef | ||
|
|
ca95f58ac0 | ||
|
|
ed636cbe44 | ||
|
|
738e4f410c | ||
|
|
4e731a0189 | ||
|
|
5cf6a539fe | ||
|
|
17fde12fb8 | ||
|
|
5c8b973d4f | ||
|
|
b22e03b2b2 | ||
|
|
a2926ebe7c | ||
|
|
c508d70258 | ||
|
|
f5971f54ff | ||
|
|
c5b16d4468 | ||
|
|
3c71a1bab7 | ||
|
|
3ec322685b | ||
|
|
9a39839a43 | ||
|
|
e87c996fe0 | ||
|
|
32195c673d | ||
|
|
b99a61c5b0 | ||
|
|
c960cd41e8 | ||
|
|
a29471d0f7 | ||
|
|
ba6f20a244 | ||
|
|
61572a1f97 | ||
|
|
dee3844f13 | ||
|
|
cbd1a77ec2 | ||
|
|
33f7ac06c3 | ||
|
|
70f10f1ac9 | ||
|
|
775b60fa09 | ||
|
|
66e4d391d3 | ||
|
|
caf880be18 | ||
|
|
c8355c27e9 | ||
|
|
c2d7e2ae17 | ||
|
|
98ecad0da6 | ||
|
|
bbc4e05434 | ||
|
|
ad6e28073c | ||
|
|
af29dcbafb | ||
|
|
b9a7f4e502 | ||
|
|
51009a40b4 | ||
|
|
2ec8f77f21 | ||
|
|
7f62028d66 | ||
|
|
d34fe06fb0 | ||
|
|
2f3d520571 | ||
|
|
48dd0c5673 | ||
|
|
8be493296d | ||
|
|
6f33531861 | ||
|
|
16897354bc | ||
|
|
823a0454a6 | ||
|
|
6790c559af | ||
|
|
c56c4a0a47 | ||
|
|
45064c5778 | ||
|
|
7aba59f577 | ||
|
|
59b05ac383 | ||
|
|
9b15f1be26 | ||
|
|
38cd2d781f | ||
|
|
2f285b3f16 | ||
|
|
57d2fb41d0 | ||
|
|
0f77fe55b6 | ||
|
|
68ee002ad0 | ||
|
|
1fc3b18592 | ||
|
|
5a5287ef2a | ||
|
|
30c85c327b | ||
|
|
ed3cc86390 | ||
|
|
e5f1499f62 | ||
|
|
848f40fd65 | ||
|
|
5adf53dc01 | ||
|
|
15feb8217f | ||
|
|
59dccb34b0 | ||
|
|
e8057241c6 | ||
|
|
d3ee83747c | ||
|
|
3f55ed0ef7 | ||
|
|
f9cfef3599 | ||
|
|
07dbfa25a0 | ||
|
|
1d49c04545 | ||
|
|
faaaf62655 | ||
|
|
43885493ea | ||
|
|
1230422181 | ||
|
|
6a17cae4f6 | ||
|
|
1eac702c1a | ||
|
|
4b96ac504c | ||
|
|
0678a51d3b | ||
|
|
b7dd186d36 | ||
|
|
26c1c8b2ad | ||
|
|
824aa5f918 | ||
|
|
ca67dcbc05 | ||
|
|
9dbc2c827d | ||
|
|
91e27ce755 | ||
|
|
65ed696625 | ||
|
|
3e3eaaada7 | ||
|
|
8997d258f7 | ||
|
|
a3f958aaaa | ||
|
|
38649d1362 | ||
|
|
4f00a02ba3 | ||
|
|
edef367e9c | ||
|
|
08c5e2a194 | ||
|
|
c67c54d4b3 | ||
|
|
23b05e8473 | ||
|
|
949ff9715a | ||
|
|
b9a305983f | ||
|
|
8e7da9464a | ||
|
|
e550df675a | ||
|
|
f614fe4946 | ||
|
|
e6ad066ed1 | ||
|
|
5b358603bd | ||
|
|
3910a61b61 | ||
|
|
45d9772667 | ||
|
|
268eebca01 | ||
|
|
1056dc9a26 | ||
|
|
053654dc4d | ||
|
|
7fe89c5d29 | ||
|
|
5c8fc7dce9 | ||
|
|
e8d3710aff | ||
|
|
d0fe681a28 | ||
|
|
9a70a6d0c0 | ||
|
|
ee19b44fe0 | ||
|
|
8f0bef2fa0 | ||
|
|
33ddeb6dcc | ||
|
|
e0dc7d6fc8 | ||
|
|
8f5909b664 | ||
|
|
bef2e7f2ff | ||
|
|
8cfb0e26bb | ||
|
|
0164f0cf81 | ||
|
|
420ea83ef3 | ||
|
|
223e470e93 | ||
|
|
e7387f7557 | ||
|
|
582bad89ef | ||
|
|
92433e596b | ||
|
|
5360f88393 | ||
|
|
949073d448 | ||
|
|
85877dae9a | ||
|
|
c6ef31955a | ||
|
|
92aaff009d | ||
|
|
65ba6e3337 | ||
|
|
fbb5518ab6 | ||
|
|
a83b5d1b67 | ||
|
|
add90abfa4 | ||
|
|
a005243908 | ||
|
|
001a2d9b67 | ||
|
|
95446f694b | ||
|
|
4db954f802 | ||
|
|
a171f60bf7 | ||
|
|
887e8f9265 | ||
|
|
07625fe243 | ||
|
|
61ffcd7815 | ||
|
|
a9f47b9364 | ||
|
|
7831c1ae44 | ||
|
|
5ce3eb066e | ||
|
|
07b6e7363d | ||
|
|
2741f97a69 | ||
|
|
d7fbe07ee2 | ||
|
|
2fce1f3e97 | ||
|
|
d09bac137a | ||
|
|
43e8f00861 | ||
|
|
3337be81c8 | ||
|
|
0cc9122093 | ||
|
|
54bcde0a14 | ||
|
|
660c86ce95 | ||
|
|
50b3545ada | ||
|
|
baac8065cf | ||
|
|
257e38d5c5 | ||
|
|
fc70b2f916 | ||
|
|
33a8e6c30c | ||
|
|
3c875e0112 | ||
|
|
59136ece19 | ||
|
|
08fd1829e0 | ||
|
|
43a4604639 | ||
|
|
83f385acf3 | ||
|
|
606af3024b | ||
|
|
4449bd9b4d | ||
|
|
bffa835573 | ||
|
|
6dd6b4d1fa | ||
|
|
67d94514b0 | ||
|
|
91b38857ef | ||
|
|
6d5f899761 | ||
|
|
77a3e3c7f7 | ||
|
|
81249965f7 | ||
|
|
45c6db9ac4 | ||
|
|
06be8bc389 | ||
|
|
0ac5fd354b | ||
|
|
a11c8a6ea0 | ||
|
|
2858935187 | ||
|
|
43b10339ab | ||
|
|
3f3a38f9c6 | ||
|
|
4bf28cb904 | ||
|
|
1abde9009a | ||
|
|
db85a941d0 | ||
|
|
1bfb0fc5da | ||
|
|
ce1cfcb7a6 | ||
|
|
ce81cd21d3 | ||
|
|
51c6a5d43b | ||
|
|
15b8da1980 | ||
|
|
c1c257d19a | ||
|
|
08b9f73219 | ||
|
|
94162d62ac | ||
|
|
059707be32 | ||
|
|
048bfeaaef | ||
|
|
a137109a0c | ||
|
|
17c01d21a9 | ||
|
|
f5cad68d22 | ||
|
|
119364741e | ||
|
|
8d1239c091 | ||
|
|
30a39fe877 | ||
|
|
0489081d3f | ||
|
|
19c8da85d8 | ||
|
|
b03abddb28 | ||
|
|
ccf083e26d | ||
|
|
dbd4abf0ff | ||
|
|
9ca2644429 | ||
|
|
ec08e2f9f2 | ||
|
|
38dd0ede9d | ||
|
|
62c264bcdb | ||
|
|
b108c664ac | ||
|
|
64db60397b | ||
|
|
d243908a01 | ||
|
|
c145fbea49 | ||
|
|
84fcff79f4 | ||
|
|
f58ba5ab1c | ||
|
|
2694b970e8 | ||
|
|
23f5d145ec | ||
|
|
b01ab65225 | ||
|
|
7a7f490efa | ||
|
|
95c15fce0c | ||
|
|
c788efffd4 | ||
|
|
c1a475e708 | ||
|
|
d0de9663e2 | ||
|
|
d6dd848523 | ||
|
|
9fc66e4dd9 | ||
|
|
6ecea9453b | ||
|
|
2c105af910 | ||
|
|
bb667c8ac6 | ||
|
|
8179743cee | ||
|
|
3d59a3855a | ||
|
|
8388366849 | ||
|
|
ef3b425b11 | ||
|
|
026d93b4f6 | ||
|
|
36710c4586 | ||
|
|
63ac6156aa | ||
|
|
08a70d117c | ||
|
|
6ce589c3ee | ||
|
|
d426c20c0a | ||
|
|
54ca7d8cb2 | ||
|
|
0819c3a8cf | ||
|
|
ad05b22de3 | ||
|
|
9fc8800b6d | ||
|
|
a4d6611d26 | ||
|
|
015fc6aa17 | ||
|
|
a739b9bc45 | ||
|
|
0bd2d54814 | ||
|
|
16b95fc773 | ||
|
|
9c5cd6c413 | ||
|
|
9b55056423 | ||
|
|
fd4cf78f36 | ||
|
|
a6315359d7 | ||
|
|
966130132f | ||
|
|
a19de6e9ac | ||
|
|
bdfeaa0f95 | ||
|
|
c478200766 | ||
|
|
775f86cb5a | ||
|
|
db1c92ceac | ||
|
|
0f4664d27f | ||
|
|
0f89a2e639 | ||
|
|
05b26e7566 | ||
|
|
6c511abf43 | ||
|
|
bb6d0771c2 | ||
|
|
75f6c36e51 | ||
|
|
015d5869d7 | ||
|
|
4686adb433 | ||
|
|
785a4899f5 | ||
|
|
da62aff6bb | ||
|
|
322308e298 | ||
|
|
b53e326828 | ||
|
|
0885d787ab | ||
|
|
2620d78e94 | ||
|
|
8c3f40ee32 | ||
|
|
b1aafbd957 | ||
|
|
45fd6685bd | ||
|
|
0159636373 | ||
|
|
7ac7c119be | ||
|
|
4f067b1d1c | ||
|
|
ae60745e3e | ||
|
|
7f496d8c3f | ||
|
|
048c74f2fa | ||
|
|
0ed57d370d | ||
|
|
551abba277 | ||
|
|
9b11a84e74 | ||
|
|
26f8de459a | ||
|
|
ceff98fd49 | ||
|
|
e04151ed76 | ||
|
|
cdb2552424 | ||
|
|
b41e65a8e3 | ||
|
|
be8c219ec2 | ||
|
|
099c011059 | ||
|
|
245a780711 | ||
|
|
05e4a3026d | ||
|
|
39a416f12a | ||
|
|
9b23b31071 | ||
|
|
8412d1e493 | ||
|
|
2ee41a5ffc | ||
|
|
a18f599482 | ||
|
|
6d27647b61 | ||
|
|
3bc11344de | ||
|
|
3dbe708308 | ||
|
|
621709c623 | ||
|
|
9e241864e3 | ||
|
|
cf613fdba4 | ||
|
|
e6addcf624 | ||
|
|
9e88343a17 | ||
|
|
1ce732e9d6 | ||
|
|
cc618e761c | ||
|
|
24db40de7c | ||
|
|
7350f9851a | ||
|
|
d030dfa6e2 | ||
|
|
14d6db0873 | ||
|
|
0ff311aa1a | ||
|
|
8147c3659d | ||
|
|
73e91ce20c | ||
|
|
8780ff879c | ||
|
|
6fd1cfeab1 | ||
|
|
9d0533056c | ||
|
|
6c4f317f7f | ||
|
|
21ed69b51e | ||
|
|
3b819b3064 | ||
|
|
3fa60164af | ||
|
|
ac6e0501c6 | ||
|
|
4f17c58315 | ||
|
|
f6251734fc | ||
|
|
9f44a95522 | ||
|
|
4b60c3e9d3 | ||
|
|
5d4c981e13 | ||
|
|
da4a776758 | ||
|
|
1b66c1da6c | ||
|
|
5cb2ee878c | ||
|
|
8cf0814a14 | ||
|
|
523767660c | ||
|
|
327c0d6b1c | ||
|
|
870842ccee | ||
|
|
68b215157f | ||
|
|
a892cf2c12 | ||
|
|
7cba40b218 | ||
|
|
d994fcf2b1 | ||
|
|
975fafdc49 | ||
|
|
9537580ba2 | ||
|
|
bc0adcef1f | ||
|
|
7ffae92daf | ||
|
|
abca03cf36 | ||
|
|
374f0214b6 | ||
|
|
4945b2454d | ||
|
|
a5cb022407 | ||
|
|
feb63efc31 | ||
|
|
4cf3ad07e5 | ||
|
|
557cc55f6f | ||
|
|
2d8dba388b | ||
|
|
91fd2c3bcd | ||
|
|
d38891c950 | ||
|
|
381e372939 | ||
|
|
c347db2e0a | ||
|
|
232a4553b8 | ||
|
|
014f1bea9a | ||
|
|
5b4f50857a | ||
|
|
6f10a718e4 | ||
|
|
658de40930 | ||
|
|
2c06e7f8ef | ||
|
|
fa1c916943 | ||
|
|
b132e865b9 | ||
|
|
77431568d2 | ||
|
|
e16c1b8e28 | ||
|
|
1a8d8aa227 | ||
|
|
d4c4fd6272 | ||
|
|
acb905231d | ||
|
|
c915eac93c | ||
|
|
72e675caee | ||
|
|
e347cff0e4 | ||
|
|
d79fdbc46e | ||
|
|
ab13c2f814 | ||
|
|
138ca334f9 | ||
|
|
1aa82decea | ||
|
|
014fe6971e | ||
|
|
3217809294 | ||
|
|
f3c7adcb54 | ||
|
|
dcf698dc74 | ||
|
|
54117be639 | ||
|
|
5a79532aee | ||
|
|
29ac001aa6 | ||
|
|
ccba0d10b6 | ||
|
|
7f7e42732d | ||
|
|
ca410ec2ca | ||
|
|
e5d8693865 | ||
|
|
46c92c0b80 | ||
|
|
7b5d148b1f | ||
|
|
f4bc326670 | ||
|
|
327598e7b4 | ||
|
|
11caaad5f9 | ||
|
|
3e0845e182 | ||
|
|
a2c7abea6c | ||
|
|
2f8f12e82e | ||
|
|
5cdcc2b3aa | ||
|
|
652e2cf57c | ||
|
|
8ee5e95ab1 | ||
|
|
22c61d8da6 | ||
|
|
1b88990cbb | ||
|
|
df3e8e19c1 | ||
|
|
44dc36cc8f | ||
|
|
6d3701318d | ||
|
|
d0edb47896 | ||
|
|
b238e0b1b4 | ||
|
|
3f62bfb61d | ||
|
|
c7a66d5af4 | ||
|
|
1866b95b7f | ||
|
|
668c204970 | ||
|
|
af2d899d6b | ||
|
|
d5ed9f787f | ||
|
|
259f27b09f | ||
|
|
c1b9356081 | ||
|
|
c669e1ae45 | ||
|
|
10203cada9 | ||
|
|
58b0415d36 | ||
|
|
ad9cb40b6f | ||
|
|
2e60ca382d | ||
|
|
25920f4a14 | ||
|
|
160c302933 | ||
|
|
dddc8e3374 | ||
|
|
bccb1ee7cd | ||
|
|
26af759732 | ||
|
|
87fc4ad919 | ||
|
|
b214298960 | ||
|
|
1926f4573d | ||
|
|
7fe65aaf5b | ||
|
|
0d3d84e3ff | ||
|
|
e789a3802c | ||
|
|
4aabbc5ac2 | ||
|
|
e7a50e37d6 | ||
|
|
9fa05db83b | ||
|
|
7ed58c4636 | ||
|
|
f2f7c18245 | ||
|
|
efaab37698 | ||
|
|
869319ce4a | ||
|
|
252f16db02 | ||
|
|
72f5d6ba46 | ||
|
|
5ec786b02e | ||
|
|
035ee257c8 | ||
|
|
188b08ca55 | ||
|
|
6f750f3b57 | ||
|
|
5a6dcdc36c | ||
|
|
59c16a570f | ||
|
|
50c10aa5bf | ||
|
|
006878686c | ||
|
|
bd100b2a51 | ||
|
|
5b1bbffdff | ||
|
|
16710a1c9b | ||
|
|
ba5c71b79b | ||
|
|
f3799462c2 | ||
|
|
f01c6e51f4 | ||
|
|
21d62118dc | ||
|
|
de55038e33 | ||
|
|
ea908c23ae | ||
|
|
844cbc701a | ||
|
|
f1fa7b8ba4 | ||
|
|
86ff3194fa | ||
|
|
d460b601f9 | ||
|
|
48a06d1a7b | ||
|
|
813a1107f4 | ||
|
|
b3461bab1d | ||
|
|
5ecd56d964 | ||
|
|
cc44fb1dc8 | ||
|
|
77b0efdbc2 | ||
|
|
68653bcbdd | ||
|
|
9af807a5ce | ||
|
|
4bbcc47f3f | ||
|
|
8ab495a088 | ||
|
|
84e7bb85b1 | ||
|
|
4fc7e13a98 | ||
|
|
b465750041 | ||
|
|
37dc0fa519 | ||
|
|
000fdc6b99 | ||
|
|
594fc0411e | ||
|
|
94fcb4b09d | ||
|
|
1a0034ac34 | ||
|
|
e3377e637a | ||
|
|
2ab854cafd | ||
|
|
4a2f0fb2be | ||
|
|
dca3564cfb | ||
|
|
9d183bb7b1 | ||
|
|
c7db74fe73 | ||
|
|
5251c45187 | ||
|
|
d9b5f327bf | ||
|
|
ca1356702a | ||
|
|
89d119646d | ||
|
|
989dd9c34a | ||
|
|
1d728aae2a | ||
|
|
98b9349be7 | ||
|
|
4706a93341 | ||
|
|
b85b56a73d | ||
|
|
1da3d402f6 | ||
|
|
1da3192d2d | ||
|
|
dab569d76c | ||
|
|
598c589359 | ||
|
|
15c8219340 | ||
|
|
5ae21ebde9 | ||
|
|
c7e0d8c30b | ||
|
|
fee4f8c86d | ||
|
|
1261c3feba | ||
|
|
7fc300d5dc | ||
|
|
88ce03e945 | ||
|
|
5bed99c97d | ||
|
|
46c699c483 | ||
|
|
f7d6e147f1 | ||
|
|
aad1d3ce14 | ||
|
|
cf5378b366 | ||
|
|
fea938cbcb | ||
|
|
a67c8b4698 | ||
|
|
49ce3e5160 | ||
|
|
4a728747e6 | ||
|
|
f5a6355172 | ||
|
|
ffff8ddbef | ||
|
|
cf86f8cb78 | ||
|
|
a53ba060c8 | ||
|
|
72bb5854f7 | ||
|
|
0de56e5535 | ||
|
|
0878b14f79 | ||
|
|
7d56f35388 | ||
|
|
d12759c73e | ||
|
|
c0095d6dd9 | ||
|
|
6a88eab067 | ||
|
|
a4f36558fc | ||
|
|
5e1cd407a3 | ||
|
|
2a1345ae9f | ||
|
|
cf61c8d659 | ||
|
|
c39690486c | ||
|
|
814b471d55 | ||
|
|
5119fb16d6 | ||
|
|
dc2c70be07 | ||
|
|
19631f5d5f | ||
|
|
a8d6b40736 | ||
|
|
8026d94c07 | ||
|
|
93bd512357 | ||
|
|
04d3a8c714 | ||
|
|
4b1782c371 | ||
|
|
f84642197f | ||
|
|
ec1b7a0eea | ||
|
|
4b0e48cb4e | ||
|
|
41df67fc2c | ||
|
|
932d38323f | ||
|
|
74ad8516d7 | ||
|
|
ed4a16dbd1 | ||
|
|
e2bac4fe6f | ||
|
|
836ffbfc22 | ||
|
|
7fd4f82a45 | ||
|
|
598bc3968e | ||
|
|
29357151af | ||
|
|
6606ae6fe0 | ||
|
|
9f21f74fbd | ||
|
|
3760180320 | ||
|
|
056af4c9ac | ||
|
|
07bf3c86b6 | ||
|
|
4182803bc2 | ||
|
|
7509ef6b4e | ||
|
|
70f8068d4d | ||
|
|
a7513a8521 | ||
|
|
3f7e541415 | ||
|
|
f7e9a21c53 | ||
|
|
f1537d45ca | ||
|
|
5a051617f3 | ||
|
|
55cd28283c | ||
|
|
924665c84c | ||
|
|
fcfffbe2f2 | ||
|
|
54967d2a3a | ||
|
|
667fd9a60b | ||
|
|
892a24f4c4 | ||
|
|
f7676e9667 | ||
|
|
8727803cf8 | ||
|
|
73e13ef19d | ||
|
|
e983cd5cd3 | ||
|
|
ca3e5a6322 | ||
|
|
c4931601c6 | ||
|
|
857492ac9e | ||
|
|
afdfa4bed2 | ||
|
|
3fc6faf1ae | ||
|
|
c8a47bf662 | ||
|
|
aed0cc6f2a | ||
|
|
d500c468fc | ||
|
|
5df5a2aa54 | ||
|
|
9ca688c8e7 | ||
|
|
8edbe262d9 | ||
|
|
4cd7f85410 | ||
|
|
edd35cab5c | ||
|
|
a2060effed | ||
|
|
33b9daaa4c | ||
|
|
62f0f5571d | ||
|
|
7a360de49d | ||
|
|
1be4557694 | ||
|
|
6a21738704 | ||
|
|
974fa1242a | ||
|
|
3dff58b3aa | ||
|
|
abf8589f0d | ||
|
|
b8d006b9d7 | ||
|
|
af4edf10f5 | ||
|
|
0f9e209534 | ||
|
|
2aed8946b0 | ||
|
|
03b03f7b60 | ||
|
|
a1b650ad7b | ||
|
|
d978f85d55 | ||
|
|
6e7f47da5b | ||
|
|
277bab0c7b | ||
|
|
fc3c5dae87 | ||
|
|
891dffb528 | ||
|
|
f0b361ecc1 | ||
|
|
df7eed16dd | ||
|
|
61db4f3e2a | ||
|
|
fe85ae15f3 | ||
|
|
cc26cc5dcd | ||
|
|
eb965e2a13 | ||
|
|
4e35395d0e | ||
|
|
b61b420cb8 | ||
|
|
b0aa11fde7 | ||
|
|
b691102ec7 | ||
|
|
2785fe7f61 | ||
|
|
db5d4bd811 | ||
|
|
dc3b3c6916 | ||
|
|
82d3f97659 | ||
|
|
235632ed2c | ||
|
|
68330c86e7 | ||
|
|
f37dc9168a | ||
|
|
17798ed740 | ||
|
|
05ba9f9fcd | ||
|
|
96f4af4db9 | ||
|
|
3ec7f8a25a | ||
|
|
375cdf89ad | ||
|
|
ab7e7144ef | ||
|
|
6f59e19b91 | ||
|
|
7800b56dc8 | ||
|
|
73c13220ee | ||
|
|
99e0597c7b | ||
|
|
3247ac1918 | ||
|
|
c45d44fee9 | ||
|
|
1e718a515a | ||
|
|
d23d686de2 | ||
|
|
c8677e9d3f | ||
|
|
a32eaffa77 | ||
|
|
1dcb99f0f7 | ||
|
|
03bc2d34da | ||
|
|
477e27f99d | ||
|
|
6a84d492f1 | ||
|
|
873d95a34c | ||
|
|
1500e95839 | ||
|
|
4f8ebd1673 | ||
|
|
cd4e6fbcac | ||
|
|
2fd2ca9dac | ||
|
|
82d6240e7d | ||
|
|
ad80490711 | ||
|
|
38b490a310 | ||
|
|
2ea052336f | ||
|
|
3b9eefca89 | ||
|
|
073a6cea45 | ||
|
|
345ffd1163 | ||
|
|
f0ffb35d55 | ||
|
|
b4d2fbae6d | ||
|
|
42a2138d11 | ||
|
|
e86dfd9688 | ||
|
|
a466b31574 | ||
|
|
48064f8dee | ||
|
|
e71378d3c8 | ||
|
|
90d40aff72 | ||
|
|
30808dca40 | ||
|
|
8629620b1c | ||
|
|
25d2a27c64 | ||
|
|
b084dc8760 | ||
|
|
2ae9536d32 | ||
|
|
f5713dbb2e | ||
|
|
b10ff9791b | ||
|
|
86a25239ec | ||
|
|
4c663ba9a8 | ||
|
|
713c9f8602 | ||
|
|
14b9b823e6 | ||
|
|
6a674ded0e | ||
|
|
2faba57c85 | ||
|
|
79d59ec97b | ||
|
|
a49e78d9b7 | ||
|
|
9583b51d80 | ||
|
|
670273968c | ||
|
|
b6820b2674 | ||
|
|
b9a6dfab03 | ||
|
|
8bd7197a8f | ||
|
|
ebb5e1db4b | ||
|
|
4702807da8 | ||
|
|
fe1fe64fd4 | ||
|
|
9d904ee41b | ||
|
|
fcc3e2ca34 | ||
|
|
c25da51913 | ||
|
|
05ab8d291c | ||
|
|
70b1900dd1 | ||
|
|
380e132da3 | ||
|
|
f2eb3c1f79 | ||
|
|
96c093f27c | ||
|
|
a9d49769ff | ||
|
|
d7616d8a0a | ||
|
|
826bbfc01c | ||
|
|
250f9670b7 | ||
|
|
ed4936fd30 | ||
|
|
4dd2628093 | ||
|
|
8479785620 | ||
|
|
0427e94465 | ||
|
|
09fd3b4935 | ||
|
|
3fef839f75 | ||
|
|
ea43bb013b | ||
|
|
b0a4c992e7 | ||
|
|
85707460e5 | ||
|
|
41ba7666f0 | ||
|
|
4367e0513a | ||
|
|
ed998270aa | ||
|
|
1b7f00b2a6 | ||
|
|
ad19f95f15 | ||
|
|
bcfe3cb231 | ||
|
|
805a5dcac8 | ||
|
|
0b67ee7bad | ||
|
|
9298037639 | ||
|
|
f7472075d7 | ||
|
|
9f72db13c4 | ||
|
|
acc4868b78 | ||
|
|
1afb67e31b | ||
|
|
2f0539d880 | ||
|
|
6f7d0a7cbd | ||
|
|
3d513f7ab1 | ||
|
|
6c8e6549d0 | ||
|
|
eec105daba | ||
|
|
19a80add95 | ||
|
|
93844f64ef | ||
|
|
60588b2455 | ||
|
|
5187faeeb9 | ||
|
|
1228ec9fbb | ||
|
|
717adfeb96 | ||
|
|
503557e5ce | ||
|
|
f611f42dcf | ||
|
|
7a0e0c36c5 | ||
|
|
61edee979f | ||
|
|
7a343a3f60 | ||
|
|
b4d3c4a76c | ||
|
|
f213d0db98 | ||
|
|
6e835ef3aa | ||
|
|
ed8cb57151 | ||
|
|
9bdb05b4d6 | ||
|
|
94b253fde7 | ||
|
|
61d7e720a5 | ||
|
|
17507eac85 | ||
|
|
bc1ae973da | ||
|
|
6a35841b2e | ||
|
|
28dde78dde | ||
|
|
37171809f6 | ||
|
|
3398eca7c3 | ||
|
|
3616912d22 | ||
|
|
0abccc676d | ||
|
|
a93af43974 | ||
|
|
0bbc759c0c | ||
|
|
56a5c49ac0 | ||
|
|
02267eba4c | ||
|
|
cea9695bcf | ||
|
|
92039629c7 | ||
|
|
c8d3327e92 | ||
|
|
043070f90e | ||
|
|
36626c4b6e | ||
|
|
7f33aae067 | ||
|
|
61022f3817 | ||
|
|
bf648fcfc3 | ||
|
|
b0e909329e | ||
|
|
ae3d5949b8 | ||
|
|
c234b9d04b | ||
|
|
7a86740afd | ||
|
|
8e719e3ef5 | ||
|
|
66fc5498d2 | ||
|
|
f30ae93a1f | ||
|
|
365e8eb78e | ||
|
|
76627b322e | ||
|
|
827228bd69 | ||
|
|
69c5506b69 | ||
|
|
3a2e623fc8 | ||
|
|
8aa9f01ed8 | ||
|
|
b0b6a853f6 | ||
|
|
0563a7a923 | ||
|
|
945ba7cb7e | ||
|
|
e3dab1bea2 | ||
|
|
9c369c695d | ||
|
|
011ccbc31a | ||
|
|
f1596698ae | ||
|
|
c60b52ab43 | ||
|
|
71a0d50f48 | ||
|
|
8d2a0fe85b | ||
|
|
b039d883e5 | ||
|
|
b3401ddbad | ||
|
|
038fe54e21 | ||
|
|
4b5a65455e | ||
|
|
2566a5d4da | ||
|
|
c38c339480 | ||
|
|
ea74b4b8e1 | ||
|
|
2364066be0 | ||
|
|
b36376e12d | ||
|
|
8aae15b630 | ||
|
|
88bf2a2dc7 | ||
|
|
45847c5324 | ||
|
|
70cce4cddd | ||
|
|
42c0ac2008 | ||
|
|
70ddabbfb0 | ||
|
|
e3716938bd | ||
|
|
b122959c8b | ||
|
|
84c5e846b3 | ||
|
|
47f044265e | ||
|
|
d46d995766 | ||
|
|
1a0cc60741 | ||
|
|
7cbbd1b56b | ||
|
|
5daa6b9367 | ||
|
|
a7aca2e8af | ||
|
|
d8d3dc9302 | ||
|
|
5be7b543d8 | ||
|
|
910ee13b20 | ||
|
|
35935d71d2 | ||
|
|
de17f4436e | ||
|
|
be5ade5c7a | ||
|
|
0e05a6329a | ||
|
|
c518c52aba | ||
|
|
e4c28abdc1 | ||
|
|
a11374d994 | ||
|
|
d9e89e170f | ||
|
|
47594be5c0 | ||
|
|
0d635a1119 | ||
|
|
e9ffa9a3b8 | ||
|
|
248a5381d4 | ||
|
|
c1ab3e2d59 | ||
|
|
c895dc8a19 | ||
|
|
a0a79ce853 | ||
|
|
70f9a13ecb | ||
|
|
c321b9f704 | ||
|
|
7e74349b86 | ||
|
|
fd016fb3ee | ||
|
|
09dd2d3856 | ||
|
|
5625e5d5b8 | ||
|
|
8a529bd987 | ||
|
|
8fe9376d54 | ||
|
|
a1f72943e9 | ||
|
|
0969a96732 | ||
|
|
ec8019b2a8 | ||
|
|
27d2d78059 | ||
|
|
7d48d851a2 | ||
|
|
6a2cecf153 | ||
|
|
990b15e402 | ||
|
|
584f3639e3 | ||
|
|
2886ce96b0 | ||
|
|
3344142b87 | ||
|
|
f1b4f5e2ae | ||
|
|
bcf0af9ddb | ||
|
|
70550a0572 | ||
|
|
d7088d1032 | ||
|
|
d07a874899 | ||
|
|
c420113795 | ||
|
|
5c850b825b | ||
|
|
7bbad0b534 | ||
|
|
305e03905f | ||
|
|
161be66c89 | ||
|
|
4095c9de37 | ||
|
|
20d33ad7e5 | ||
|
|
b8c12fe658 | ||
|
|
e4d4ee8db5 | ||
|
|
8a7d58378b | ||
|
|
bdbaedc452 | ||
|
|
0839621f47 | ||
|
|
bf2c1e099c | ||
|
|
6c6e4710b5 | ||
|
|
5e7164f87a | ||
|
|
ef10eaeb29 | ||
|
|
fce4dcccd8 | ||
|
|
f2beee209b | ||
|
|
9d8b22d3de | ||
|
|
5796c7b132 | ||
|
|
dc2ea33e32 | ||
|
|
c1f117700a | ||
|
|
7ea90c46eb | ||
|
|
4d9e24d1e4 | ||
|
|
1f236ba108 | ||
|
|
d27813c2dd | ||
|
|
453e9b0dce | ||
|
|
b8626c3df8 | ||
|
|
f8d78d57a7 | ||
|
|
371a25eee9 | ||
|
|
e535a71c71 | ||
|
|
b9e5fecf5f | ||
|
|
3af08472ad | ||
|
|
fdc1b61507 | ||
|
|
7fd154f094 | ||
|
|
a209c32bf3 | ||
|
|
75db459f0a | ||
|
|
74e54c5a49 | ||
|
|
6fc151577e | ||
|
|
3dcc7202d5 | ||
|
|
40981286ea | ||
|
|
f55a1c3a6c | ||
|
|
c5586a65c2 | ||
|
|
ffb11ad5c6 | ||
|
|
fbb1e49215 | ||
|
|
c26320d94f | ||
|
|
f6e892b1b6 | ||
|
|
59302d4ba0 | ||
|
|
c563a53c16 | ||
|
|
7763bb9172 | ||
|
|
e37a49086e | ||
|
|
a1e5c621c0 | ||
|
|
f776c1d2eb | ||
|
|
3d5a8515a6 | ||
|
|
42a7905205 | ||
|
|
bfa0f8c6c2 | ||
|
|
869d192ffc | ||
|
|
60bc103a78 | ||
|
|
8a0a7ce3a8 | ||
|
|
31b1e988f4 | ||
|
|
25c064c888 | ||
|
|
884171aecf | ||
|
|
45b2577974 | ||
|
|
d58c7a8bdd | ||
|
|
eed47311f8 | ||
|
|
59eaae42b8 | ||
|
|
59c620bfa5 | ||
|
|
4294cac701 | ||
|
|
282127fbff | ||
|
|
d49e9fad19 | ||
|
|
fba4cd0e62 | ||
|
|
2166645ce4 | ||
|
|
844f5b6b45 | ||
|
|
424063235b | ||
|
|
8272abef28 | ||
|
|
5fbc93c3eb | ||
|
|
8851df41c5 | ||
|
|
a6f4612154 | ||
|
|
52e5e869e6 | ||
|
|
12ef1035bb | ||
|
|
6c56b5301f | ||
|
|
07b6625573 | ||
|
|
fa0780bb91 | ||
|
|
f08ac86834 | ||
|
|
d6eca89229 | ||
|
|
2bd1d7e996 | ||
|
|
3b355421ec | ||
|
|
0dd1219668 | ||
|
|
b7131009fb | ||
|
|
3d528e1b15 | ||
|
|
f9a339a225 | ||
|
|
0043e87014 | ||
|
|
0f634a0c89 | ||
|
|
047cd1a533 | ||
|
|
f9eb61e90a | ||
|
|
34afb0b257 | ||
|
|
6bb9bd8b69 | ||
|
|
72175c738f | ||
|
|
2288094b26 | ||
|
|
273b2b230b | ||
|
|
3229a80c9f | ||
|
|
5eba84eed3 | ||
|
|
4fb483012c | ||
|
|
f1a8fd843f | ||
|
|
8920606b8b | ||
|
|
90ce18019c | ||
|
|
fe10cb2ef5 | ||
|
|
842be6c52f | ||
|
|
e4b754f64e | ||
|
|
34ed4642ec | ||
|
|
248f057137 | ||
|
|
2b6a0c0a7c | ||
|
|
072a8b2955 | ||
|
|
0c817b6614 | ||
|
|
e9cbd0c366 | ||
|
|
ff314d7600 | ||
|
|
d052e545af | ||
|
|
da2b75a026 | ||
|
|
0e2d3b7b6c | ||
|
|
46a50aa001 | ||
|
|
605a391178 | ||
|
|
de6f82d094 | ||
|
|
c1f3edbdd1 | ||
|
|
a20a6f67c5 | ||
|
|
75931492c3 | ||
|
|
800b55c702 | ||
|
|
a53411c0dd | ||
|
|
b169aa2992 | ||
|
|
9189ac1141 | ||
|
|
5c7c79bd08 | ||
|
|
8605321d06 | ||
|
|
d314453037 | ||
|
|
9cb69f77f1 | ||
|
|
ee332e0c8e | ||
|
|
0188493d54 | ||
|
|
ae07fd2ba8 | ||
|
|
d76a734043 | ||
|
|
b66def2b4c | ||
|
|
20b9ab49a7 | ||
|
|
c8cd13337e | ||
|
|
40e9e40cb4 | ||
|
|
09c70dec08 | ||
|
|
0dc570862a | ||
|
|
dbaf4f9361 | ||
|
|
433575068c | ||
|
|
40087ce7c0 | ||
|
|
e12d46ac50 | ||
|
|
1e55ed5c7d | ||
|
|
6dd4fe0740 | ||
|
|
3789e2e6ce | ||
|
|
1962ebf8e7 | ||
|
|
7c144d5a7e | ||
|
|
0f0540d00b | ||
|
|
3f29ed6d44 | ||
|
|
1bfa7dfe39 | ||
|
|
85daec253c | ||
|
|
389a15a867 | ||
|
|
74befdfbe0 | ||
|
|
d31feb8ff9 | ||
|
|
4c3568bfd6 | ||
|
|
b4ef5e22e0 | ||
|
|
23786eae32 | ||
|
|
c84f84c70d | ||
|
|
e5f8e5e57a | ||
|
|
53a3abc76b | ||
|
|
bfd6474f6b | ||
|
|
d3b89e114a | ||
|
|
aeddea2b71 | ||
|
|
cef5b14baa | ||
|
|
82d310d0d9 | ||
|
|
4fdb42377b | ||
|
|
be8a5d0aef | ||
|
|
dd433679e6 | ||
|
|
99dcd33f04 | ||
|
|
e817eb6cec | ||
|
|
060f7ca2d2 | ||
|
|
638c715a51 | ||
|
|
af9a63287e | ||
|
|
00f36c5f45 | ||
|
|
e69d82a5fb | ||
|
|
d165da07fe | ||
|
|
15363cd6dc | ||
|
|
b3272fd799 | ||
|
|
fa31335926 | ||
|
|
acc4cf87cd | ||
|
|
7444342675 | ||
|
|
ee1235a7cd | ||
|
|
c514a2a89a | ||
|
|
e2f0580dfe | ||
|
|
d165bed2d6 | ||
|
|
802a5b618e | ||
|
|
1ca763d1d1 | ||
|
|
8b26c93a59 | ||
|
|
b819c72700 | ||
|
|
d2cfb7fd13 | ||
|
|
e37973913d | ||
|
|
8b5295d003 | ||
|
|
fe0afb211e | ||
|
|
141b3d0c2f | ||
|
|
2a6a22a3b0 | ||
|
|
4937281ddc | ||
|
|
8e27ed2fdd | ||
|
|
9bf9617ad6 | ||
|
|
69565afab0 | ||
|
|
39aac63521 | ||
|
|
f19d333ef6 | ||
|
|
3a634a273a | ||
|
|
06d1b029f6 | ||
|
|
45bf417301 | ||
|
|
48029d7e74 | ||
|
|
83e078256c | ||
|
|
2f5e99ca02 | ||
|
|
6014c21bc9 | ||
|
|
8c0b1dc3c5 | ||
|
|
be3c5f0b94 | ||
|
|
e268e8559e | ||
|
|
29bb6f65f1 | ||
|
|
37f07a54bd | ||
|
|
da8c666e4f | ||
|
|
c11681becd | ||
|
|
78a1e5d1a6 | ||
|
|
116f60e063 | ||
|
|
7725853446 | ||
|
|
9993e2121d | ||
|
|
9a70ce4245 | ||
|
|
7ba53a4f41 | ||
|
|
1297c54b26 | ||
|
|
1045b8d382 | ||
|
|
d2bdad5945 | ||
|
|
17e8d60c01 | ||
|
|
ec1b351317 | ||
|
|
75fca27f8e | ||
|
|
f2cd2882a0 | ||
|
|
07d8a14ec0 | ||
|
|
31e598d2f3 | ||
|
|
cbf58d88d0 | ||
|
|
300cbc2e21 | ||
|
|
ec9e399668 | ||
|
|
2691f1efc8 | ||
|
|
d9bf55570b | ||
|
|
b54a8531a9 | ||
|
|
789fd0b74a | ||
|
|
8103915797 | ||
|
|
c461254dea | ||
|
|
3f140a6008 | ||
|
|
a0a47f2767 | ||
|
|
213017e9cf | ||
|
|
69f2f5cb6f | ||
|
|
d46cab4a94 | ||
|
|
4dc453c087 | ||
|
|
a1d5983991 | ||
|
|
4894ce16fc | ||
|
|
aa4435c23b | ||
|
|
dca8f962e0 | ||
|
|
059b57677c | ||
|
|
9896421586 | ||
|
|
6663608d15 | ||
|
|
d21e4eb8ae | ||
|
|
d381dd68cf | ||
|
|
7a97e66fb3 | ||
|
|
d86e6d3ed2 | ||
|
|
f99ca90540 | ||
|
|
e24cb6cb90 | ||
|
|
b05f408348 | ||
|
|
c5e7d839d5 | ||
|
|
e3ade3ccb5 | ||
|
|
71afe05b9f | ||
|
|
5a267c4312 | ||
|
|
fbcf86b83e | ||
|
|
5c3f36b4b4 | ||
|
|
9de4e5ebe4 | ||
|
|
7033a1c072 | ||
|
|
4efa0d9f68 | ||
|
|
e021fe9444 | ||
|
|
23d1041bd8 | ||
|
|
be71ccbce3 | ||
|
|
0db485a448 | ||
|
|
6d05a33ed9 | ||
|
|
569c169559 | ||
|
|
ecbc7f89c0 | ||
|
|
5649b738be | ||
|
|
0f9f6cf180 | ||
|
|
7f70dbcad5 | ||
|
|
28b932fb4e | ||
|
|
a631741141 | ||
|
|
c7d0966201 | ||
|
|
cf491357b6 | ||
|
|
02c17651bf | ||
|
|
890b34d22e | ||
|
|
e89fb10736 | ||
|
|
48e8b52fbb | ||
|
|
61f19c6ca3 | ||
|
|
8c9233f6b2 | ||
|
|
6fcf98f617 | ||
|
|
2f4fe0175b | ||
|
|
9f62ff5df6 | ||
|
|
4e3f3e751e | ||
|
|
04e6568a7e | ||
|
|
7a39b98471 | ||
|
|
4ab91a93e8 | ||
|
|
6647ca6ec5 | ||
|
|
529e01736c | ||
|
|
078fc4186b | ||
|
|
fabbb3fc34 | ||
|
|
1db063e705 | ||
|
|
1fa9ef246a | ||
|
|
e12220cc4c | ||
|
|
77fcad041f | ||
|
|
e213555c98 | ||
|
|
3a813b3c3b | ||
|
|
028a9d6785 | ||
|
|
d0aca8017f | ||
|
|
91386937ff | ||
|
|
0fc51ac5a6 | ||
|
|
bc2183b440 | ||
|
|
01c4fba15c | ||
|
|
9b6474378a | ||
|
|
5446ed4733 | ||
|
|
a50414f594 | ||
|
|
fe7fa8e794 | ||
|
|
6a175b42db | ||
|
|
a7748c2024 | ||
|
|
8f87c15bda | ||
|
|
82f52e5a6f | ||
|
|
67d2dd62f9 | ||
|
|
138b4f27b4 | ||
|
|
c26ec47e90 | ||
|
|
8337a375dd | ||
|
|
8260243be1 | ||
|
|
ef6f24a7ce | ||
|
|
abe90019d3 | ||
|
|
c185cdf2b4 | ||
|
|
f71c8c7d84 | ||
|
|
d32f1390b3 | ||
|
|
68f3c2adca | ||
|
|
2a8e2edf83 | ||
|
|
401598c2fe | ||
|
|
d60848d04b | ||
|
|
d2dd3d7e16 | ||
|
|
1c63ceb317 | ||
|
|
c25283185a | ||
|
|
54db98c220 | ||
|
|
5565f45f5e | ||
|
|
49c4d9c9cd | ||
|
|
c2639e0738 | ||
|
|
e485a23a3e | ||
|
|
d7d5baa0e2 | ||
|
|
e1e55e4d04 | ||
|
|
1eb530d8dc | ||
|
|
bad67830b3 | ||
|
|
db22c83031 | ||
|
|
a4b39c6ab8 | ||
|
|
d10e174fd1 | ||
|
|
e994c6af75 | ||
|
|
ef442d5803 | ||
|
|
8680e010c2 | ||
|
|
4d8dcf7b77 | ||
|
|
abdbd3100f | ||
|
|
ddace02efe | ||
|
|
1f4c8c4f09 | ||
|
|
8162b32bad | ||
|
|
daf527b276 | ||
|
|
ee51c07be6 | ||
|
|
856ba4c6c6 | ||
|
|
b3e23373bd | ||
|
|
e5adab39b1 | ||
|
|
d31153584e | ||
|
|
823d296e12 | ||
|
|
e09450103b | ||
|
|
fbc4407583 | ||
|
|
a79e5d7925 | ||
|
|
82491d5c06 | ||
|
|
b6f889085d | ||
|
|
cdbbb7d900 | ||
|
|
2bf4d9a22c | ||
|
|
f1918aa343 | ||
|
|
56580fc6f8 | ||
|
|
2e6600425e | ||
|
|
cc021fc200 | ||
|
|
e6aed92742 | ||
|
|
02fb4d96d1 | ||
|
|
43e3c5e5fa | ||
|
|
4f496f2f70 | ||
|
|
d681bc7520 | ||
|
|
f21a2b3270 | ||
|
|
5f5a28d20e | ||
|
|
89f9cb4041 | ||
|
|
2b280bcc69 | ||
|
|
1c0224be42 | ||
|
|
dbdb7fa55a | ||
|
|
83a43bea8a | ||
|
|
abb4cdafe9 | ||
|
|
2b7bcf2505 | ||
|
|
5aefdd93cb | ||
|
|
4b27fae069 | ||
|
|
10a13eba72 | ||
|
|
44ac2776ae | ||
|
|
36e3e6ed16 | ||
|
|
5f9cbc4209 | ||
|
|
3239f059b8 | ||
|
|
45bac25d90 | ||
|
|
354c8dcd82 | ||
|
|
b1e4cc370d | ||
|
|
2293474b90 | ||
|
|
9e1aef7183 | ||
|
|
f68323da7d | ||
|
|
a61aafa325 | ||
|
|
33bea767eb | ||
|
|
9ab7cda010 | ||
|
|
6da70628c6 | ||
|
|
3bae748256 | ||
|
|
521c4b303d | ||
|
|
a2effd123a | ||
|
|
7b704e173c | ||
|
|
6045d051d7 | ||
|
|
cfe00ed4ad | ||
|
|
0b4bdcf18f | ||
|
|
8cade952bf | ||
|
|
385e612fa5 | ||
|
|
1886388791 | ||
|
|
32fe5b14ec | ||
|
|
bbdc483671 | ||
|
|
f11d3c329c | ||
|
|
b0d13fa4cb | ||
|
|
0fb5a65a58 | ||
|
|
c8afb02b4c | ||
|
|
869d65337e | ||
|
|
277df1c6b1 | ||
|
|
5ec5b95f54 | ||
|
|
9e61c904ac | ||
|
|
7efb955fd0 | ||
|
|
75899741b9 | ||
|
|
d465199411 | ||
|
|
55123424c8 | ||
|
|
f5e4a78b59 | ||
|
|
7515a75206 | ||
|
|
4750e6f3c5 | ||
|
|
b7aaa4d907 | ||
|
|
e61e09f658 | ||
|
|
058e993acb | ||
|
|
359d500908 | ||
|
|
cb42855445 | ||
|
|
d8ff0336a5 | ||
|
|
0682d25da5 | ||
|
|
d86d14074d | ||
|
|
8500397cf1 | ||
|
|
bd600fbebe | ||
|
|
064bbb999f | ||
|
|
bedc61ac45 | ||
|
|
61a6992559 | ||
|
|
ebee2e323d | ||
|
|
b2f8de571f | ||
|
|
cb4a5f5a2b | ||
|
|
1beb7de7e0 | ||
|
|
89ab5f4380 | ||
|
|
439b84c782 | ||
|
|
0e899d7728 | ||
|
|
1a85fb2bd0 | ||
|
|
8d11767048 | ||
|
|
fcccf9aa0d | ||
|
|
72bd027537 | ||
|
|
1d44c9ccc1 | ||
|
|
33831759b5 | ||
|
|
6fe932b255 | ||
|
|
8da02df8e0 | ||
|
|
587c99351d | ||
|
|
88c8d72a21 | ||
|
|
cf99fed17a | ||
|
|
ca48b6bf35 | ||
|
|
4dcd606b47 | ||
|
|
393ddd6e1f | ||
|
|
840e796aa9 | ||
|
|
5fd096da8d | ||
|
|
eb29c5c285 | ||
|
|
1eb286e43e | ||
|
|
ae76ebe2d1 | ||
|
|
e4505aefd9 | ||
|
|
d6b0612882 | ||
|
|
4c65eb0af8 | ||
|
|
318a8258fd | ||
|
|
17ae28e0fe | ||
|
|
3c4f622479 | ||
|
|
3ce43764be | ||
|
|
b555c60e49 | ||
|
|
2336d010ef | ||
|
|
b9af0d89d5 | ||
|
|
6f2afe0c30 | ||
|
|
d8c61d459e | ||
|
|
7ae5ebbeb2 | ||
|
|
7335b71dfb | ||
|
|
9583b03074 | ||
|
|
3c81d5f125 | ||
|
|
688699a046 | ||
|
|
090f5a9a45 | ||
|
|
da58d03ff7 | ||
|
|
9ea3831c08 | ||
|
|
a46f55b9de | ||
|
|
a634f64400 | ||
|
|
bcd8a3b240 | ||
|
|
04d5d1895c | ||
|
|
abd2775a70 | ||
|
|
73226415fc | ||
|
|
ab160ef445 | ||
|
|
268fe09322 | ||
|
|
7a557e984a | ||
|
|
f1a55cbe6d | ||
|
|
1e35d95df8 | ||
|
|
d8387b418d | ||
|
|
adea16a294 | ||
|
|
7f2d5cab2d | ||
|
|
c6ff612f6e | ||
|
|
8db353e1d7 | ||
|
|
e6978117a7 | ||
|
|
5dcb055077 | ||
|
|
0b5e1a9b2f | ||
|
|
2e17a97474 | ||
|
|
74ddbd8a3b | ||
|
|
b8039a821b | ||
|
|
438312f00e | ||
|
|
381ccaa391 | ||
|
|
3204494883 | ||
|
|
e264f699d4 | ||
|
|
68d4b77d44 | ||
|
|
e1ac99af1f | ||
|
|
be0d17e812 | ||
|
|
4eb35406f4 | ||
|
|
624745ab20 | ||
|
|
9354822e09 | ||
|
|
17d4f9513e | ||
|
|
f830d77307 | ||
|
|
a03c76b228 | ||
|
|
35ad61429d | ||
|
|
b5b3d9e5c7 | ||
|
|
6e682c2b01 | ||
|
|
7e2ea2ece0 | ||
|
|
01926d66d7 | ||
|
|
69f7d0a0ce | ||
|
|
d1c84705ec | ||
|
|
3274908551 | ||
|
|
c730934498 | ||
|
|
471a8b223b | ||
|
|
47ee9202c3 | ||
|
|
1bcbe89802 | ||
|
|
bf57e9bb12 | ||
|
|
318a7584f3 | ||
|
|
961ec228d4 | ||
|
|
a777eb3d81 | ||
|
|
7f79b52dae | ||
|
|
db680edc26 | ||
|
|
e6ce80458f | ||
|
|
cdcb123aa8 | ||
|
|
78081a1652 | ||
|
|
7408976b15 | ||
|
|
763bb73cc3 | ||
|
|
1dee2cd55e | ||
|
|
426ecfd136 | ||
|
|
4913baed16 | ||
|
|
675f6a8901 | ||
|
|
2147284cad | ||
|
|
7f1870da5f | ||
|
|
2149a095f7 | ||
|
|
e8d21adbaa | ||
|
|
fa28531322 | ||
|
|
deef85ca9a | ||
|
|
4f4427ff41 | ||
|
|
0ed285e84d | ||
|
|
905ca77c9e | ||
|
|
61043c7e74 | ||
|
|
4545c9f22f | ||
|
|
ad772d7b48 | ||
|
|
a56ef92729 | ||
|
|
561d01c450 | ||
|
|
c6c8a30da1 | ||
|
|
914dbeb12c | ||
|
|
56dc90eaab | ||
|
|
f51c567de3 | ||
|
|
9b2acca63e | ||
|
|
afcd9f1b1c | ||
|
|
755ccbc468 | ||
|
|
0af7aec211 | ||
|
|
ee085ad6bd | ||
|
|
719bec2606 | ||
|
|
b1db9dbb16 | ||
|
|
609044aea2 | ||
|
|
ba481718a4 | ||
|
|
1be60dde7f | ||
|
|
e92e811a61 | ||
|
|
5aa0db8681 | ||
|
|
d5691211dd | ||
|
|
a93695a70e | ||
|
|
ce935a2697 | ||
|
|
812ce0d93f | ||
|
|
bbae5b49f9 | ||
|
|
772a985dc3 | ||
|
|
8a7514de8a | ||
|
|
32ad212ac9 | ||
|
|
8a8d5c784c | ||
|
|
125830ab4b | ||
|
|
5b75b423e6 | ||
|
|
012d7e2878 | ||
|
|
cd3029f36f | ||
|
|
6adaac7e18 | ||
|
|
cde5e35d9b | ||
|
|
ee17fba72e | ||
|
|
6296b89319 | ||
|
|
5450db9151 | ||
|
|
b4700f026b | ||
|
|
d771fa7c48 | ||
|
|
b2c378267b | ||
|
|
384c8f3560 | ||
|
|
f44ef427a2 | ||
|
|
c54a4301ee | ||
|
|
36a3514225 | ||
|
|
e1edd41e1b | ||
|
|
13e60c55a1 | ||
|
|
9b8b1a68f0 | ||
|
|
4ec9316155 | ||
|
|
ef769500d4 | ||
|
|
23692574a2 | ||
|
|
5f6fd682a5 | ||
|
|
db24518a30 | ||
|
|
90933ac660 | ||
|
|
087579a6f4 | ||
|
|
de59cde155 | ||
|
|
3cd95eacdf | ||
|
|
deb81b2ad4 | ||
|
|
4e717cdb30 | ||
|
|
33acd6f041 | ||
|
|
7575e6afc4 | ||
|
|
316a9f6480 | ||
|
|
c6de584cad | ||
|
|
d997ff6aa8 | ||
|
|
b9ccecf86e | ||
|
|
bd5d21aaf2 | ||
|
|
19e07771d1 | ||
|
|
ef267ab449 | ||
|
|
4f6ed683e8 | ||
|
|
c818e7064f | ||
|
|
ead6ab2ef7 | ||
|
|
5c3dc49f44 | ||
|
|
83884180ac | ||
|
|
4cac96c33a | ||
|
|
5df4be1165 | ||
|
|
96445f1b7d | ||
|
|
4bdd7596d3 | ||
|
|
18aae32015 | ||
|
|
a8996b9e52 | ||
|
|
94095c61d8 | ||
|
|
1cddd744ad | ||
|
|
786738dd00 | ||
|
|
5b8d5fdf2f | ||
|
|
694f31ca37 | ||
|
|
9c1ad0f9f7 | ||
|
|
71c6335293 | ||
|
|
8c38ea4ebc | ||
|
|
44d84ac164 | ||
|
|
930f9bd534 | ||
|
|
b61fbbde46 | ||
|
|
ec956b0334 | ||
|
|
44ffe0dc79 | ||
|
|
e3a61fba52 | ||
|
|
65794f60ec | ||
|
|
7a710b4970 | ||
|
|
0bb20cc611 | ||
|
|
433c0c895e | ||
|
|
67e8d22958 | ||
|
|
10d1fc0e73 | ||
|
|
2260c8aa11 | ||
|
|
97eb62aff8 | ||
|
|
1855fc35f2 | ||
|
|
dc3ed35313 | ||
|
|
6b868df554 | ||
|
|
5ccbbe40c2 | ||
|
|
86f93a53d6 | ||
|
|
f53347631e | ||
|
|
efe3cb6e1a | ||
|
|
32ac4edeed | ||
|
|
4c04c09138 | ||
|
|
47ea80baee | ||
|
|
95c3fa836b | ||
|
|
ab60a12465 | ||
|
|
2d38e51867 | ||
|
|
a5dda669e3 | ||
|
|
3c4f3a680a | ||
|
|
b61c06384a | ||
|
|
e7742bfb7c | ||
|
|
22307ae0ee | ||
|
|
e150150d9f | ||
|
|
943f0733bb | ||
|
|
8274447dd9 | ||
|
|
083a84e5d0 | ||
|
|
d5eb386d00 | ||
|
|
1ce7b48057 | ||
|
|
cbcdd337aa | ||
|
|
c144adf77c | ||
|
|
d390039873 | ||
|
|
7d0c58a285 | ||
|
|
9263001b21 | ||
|
|
66ee6d07f8 | ||
|
|
a40dcca794 | ||
|
|
15e3dfe1d3 | ||
|
|
a1de9367ec | ||
|
|
eceb37bde2 | ||
|
|
56fcf85ab6 | ||
|
|
77db81d661 | ||
|
|
2ad7fcbc2f | ||
|
|
2c62dfd124 | ||
|
|
ef66497a0d | ||
|
|
1128029599 | ||
|
|
befc30bc55 | ||
|
|
ca5846cde9 | ||
|
|
8547ab1663 | ||
|
|
9c0e6ac365 | ||
|
|
552b963e6d | ||
|
|
e2b48366d3 | ||
|
|
5e0d9aea32 | ||
|
|
ae13c93b7d | ||
|
|
b9f8a4a477 | ||
|
|
68e9f75708 | ||
|
|
d569693f24 | ||
|
|
15d8bb2105 | ||
|
|
b2ca777a08 | ||
|
|
ba01198e6c | ||
|
|
6ebd5e1761 | ||
|
|
2723eda1e4 | ||
|
|
1fa3a5cce9 | ||
|
|
fe8aee6b08 | ||
|
|
0639e2a6e2 | ||
|
|
f1d707705e | ||
|
|
296a7db960 | ||
|
|
4c0936e72f | ||
|
|
0992e391ba | ||
|
|
b22aaeef6a | ||
|
|
8090ee0e5d | ||
|
|
f7d31bb3e3 | ||
|
|
9cd928674f | ||
|
|
3ea8a4d220 | ||
|
|
b0d3ba76a0 | ||
|
|
ab798fe5ba | ||
|
|
e7d90e08b9 | ||
|
|
c2404f77e9 | ||
|
|
ec4a16f2e0 | ||
|
|
ca5de26f50 | ||
|
|
71920d61e6 | ||
|
|
5de75eee56 | ||
|
|
2d5fc39d35 | ||
|
|
c001ed53fa | ||
|
|
39e01e9349 | ||
|
|
9e54d4c7d2 | ||
|
|
56bf97ffc9 | ||
|
|
7d3e719a2c | ||
|
|
e55d4fd5c1 | ||
|
|
5ee231415f | ||
|
|
c866771cd2 | ||
|
|
4a24219a1a | ||
|
|
733a184ce0 | ||
|
|
eee09e79e8 | ||
|
|
6df85adf3e | ||
|
|
3ee6036551 | ||
|
|
fb65080548 | ||
|
|
3a5f21b0d1 | ||
|
|
13a5598dc3 | ||
|
|
5a6c89661a | ||
|
|
7c5745720a | ||
|
|
00ae13f966 | ||
|
|
29dc39fce1 | ||
|
|
5c184cfc0d | ||
|
|
055022a55f | ||
|
|
c30e908034 | ||
|
|
8d24c0212e | ||
|
|
8240cea628 | ||
|
|
f2a33eb372 | ||
|
|
e134a40208 | ||
|
|
690888cfc1 | ||
|
|
fb8d9b6645 | ||
|
|
f7ddb39ee1 | ||
|
|
145084b699 | ||
|
|
f1ba12607a | ||
|
|
bb87b65f08 | ||
|
|
b0f6e7cee4 | ||
|
|
ed72d4e104 | ||
|
|
8ec1bfe897 | ||
|
|
1dec17562f | ||
|
|
9cc3795f1a | ||
|
|
be1306a6c2 | ||
|
|
e9160a31e0 | ||
|
|
0a670c578f | ||
|
|
e3c15fc4b9 | ||
|
|
dc7c915553 | ||
|
|
b7eeb6e67f | ||
|
|
7e4193b538 | ||
|
|
a932803eac | ||
|
|
52560142bf | ||
|
|
874a4ef8c7 | ||
|
|
0bb3ac7c31 | ||
|
|
1e9f5845ab | ||
|
|
c41dfc2501 | ||
|
|
30ac7eced1 | ||
|
|
466d093a92 | ||
|
|
1e9be353c2 | ||
|
|
4f4277d9c7 | ||
|
|
6728bda5c5 | ||
|
|
dc9f154823 | ||
|
|
d7168a82e2 | ||
|
|
c9c8ee3796 | ||
|
|
c7aae10300 | ||
|
|
909941405f | ||
|
|
4031eb1d91 | ||
|
|
59cf6fd4f0 | ||
|
|
6de9732a88 | ||
|
|
1f7f500922 | ||
|
|
4b1462ec65 | ||
|
|
6ed47f0aad | ||
|
|
2d8c7ba9fc | ||
|
|
3b342d18bc | ||
|
|
f24ad3800c | ||
|
|
e2ff369eba | ||
|
|
9691a78f6b | ||
|
|
7ff6b6fafd | ||
|
|
7c621cfbdf | ||
|
|
5acadc9cd7 | ||
|
|
2ff609dd43 | ||
|
|
da48a6ba87 | ||
|
|
cd6c58216a | ||
|
|
bdbd0cf27a | ||
|
|
d792937686 | ||
|
|
bac66ec26b | ||
|
|
77516822f6 | ||
|
|
37d8c67530 | ||
|
|
cfdcae4bc7 | ||
|
|
74a6921bc4 | ||
|
|
490cccba3c | ||
|
|
839441e236 | ||
|
|
ba9ea943e2 | ||
|
|
455087faae | ||
|
|
31def9e217 | ||
|
|
ee3514ccdc | ||
|
|
cf606d7da0 | ||
|
|
eb26a581f9 | ||
|
|
b04cbebf86 | ||
|
|
4272af801f | ||
|
|
0b633027cb | ||
|
|
93943ef949 | ||
|
|
b184b87714 | ||
|
|
a11473f85d | ||
|
|
1eedad27a2 | ||
|
|
ac02d379ba | ||
|
|
a4ebf5b507 | ||
|
|
c410769588 | ||
|
|
997a987943 | ||
|
|
6201dc083a | ||
|
|
b33f47804d | ||
|
|
7ba5e098a3 | ||
|
|
824b78021c | ||
|
|
31657c85e5 | ||
|
|
7010e5ea84 | ||
|
|
2cba6b246d | ||
|
|
52cc2a7a0c | ||
|
|
c012e2b408 | ||
|
|
646a6b604f | ||
|
|
cca00a6378 | ||
|
|
10b7fc7e51 | ||
|
|
43e4544d51 | ||
|
|
21aa8f0b45 | ||
|
|
b708fa51ad | ||
|
|
8709f6c4b3 | ||
|
|
2ac560e58b | ||
|
|
8f8ba9486d | ||
|
|
f55924b3e0 | ||
|
|
7240acdebc | ||
|
|
b9b06b00bf | ||
|
|
51f258d103 | ||
|
|
4c75f1c7b7 | ||
|
|
ed7bff1fec | ||
|
|
01a79be2c9 | ||
|
|
d211fcd34f | ||
|
|
159834171e | ||
|
|
8a38c72c48 | ||
|
|
fbcdc192d5 | ||
|
|
ee642859ef | ||
|
|
9f579f12fc | ||
|
|
825a526789 | ||
|
|
ae8a01ead6 | ||
|
|
9dde0b54a3 | ||
|
|
f1343b2f55 | ||
|
|
962b7985e6 | ||
|
|
5a1c64d316 | ||
|
|
01b2cf82ec | ||
|
|
c033c4c71c | ||
|
|
aa791ee5cf | ||
|
|
305671e2ab | ||
|
|
d654736834 | ||
|
|
2c81bfead5 | ||
|
|
77b3bc239d | ||
|
|
c10d15aa0f | ||
|
|
a88deadd6f | ||
|
|
e6ea8f1199 | ||
|
|
4d4151f6c1 | ||
|
|
518becfe2e | ||
|
|
6f6b93da02 | ||
|
|
45b1843dc9 | ||
|
|
cb86a302d8 | ||
|
|
d15ed439ae | ||
|
|
b765e1f3b7 | ||
|
|
2527b53019 | ||
|
|
78a47826b2 | ||
|
|
ecfaa4f869 | ||
|
|
f36adcdb73 | ||
|
|
13616f8f96 | ||
|
|
ab486d1e27 | ||
|
|
9111909c1d | ||
|
|
4a1a1a75fb | ||
|
|
e4d6ade4b3 | ||
|
|
c82e880f5b | ||
|
|
f2aa3b21e0 | ||
|
|
385db0e97d | ||
|
|
4e58da5222 | ||
|
|
1c6ebb0782 | ||
|
|
7e8b84c3e7 | ||
|
|
132067b081 | ||
|
|
8c36fc8f31 | ||
|
|
93858efe73 | ||
|
|
ba7f27a3f6 | ||
|
|
2f70fb7015 | ||
|
|
655ec6bf8e | ||
|
|
c4ad533300 | ||
|
|
5cdbd0cf4a | ||
|
|
a55c70d4ae | ||
|
|
02938a010d | ||
|
|
e40641bf7c | ||
|
|
27c0b43897 | ||
|
|
d46de5ab8b | ||
|
|
73ebb0edde | ||
|
|
684245d6ce | ||
|
|
d157c29269 | ||
|
|
4d2e81661b | ||
|
|
483a586d55 | ||
|
|
4ac54f8c2c | ||
|
|
840aacf7dd | ||
|
|
ab4256d53a | ||
|
|
46c5e562bf | ||
|
|
42f5a90d09 | ||
|
|
ef82da93fb | ||
|
|
06d05b18b2 | ||
|
|
431c4bd6e3 | ||
|
|
f72c4e82fd | ||
|
|
9c83a20a27 | ||
|
|
773bec5ae5 | ||
|
|
f3c508f6e8 | ||
|
|
2aa4710745 | ||
|
|
3b0a920fad | ||
|
|
daef1cf34d | ||
|
|
bd8d4637a3 | ||
|
|
d2cefc140a | ||
|
|
ccfce89423 | ||
|
|
700cd5805c | ||
|
|
498aad8587 | ||
|
|
73f407b7ae | ||
|
|
4be7dcba48 | ||
|
|
f0694c582e | ||
|
|
f90f0c98d9 | ||
|
|
95aecc5dbb | ||
|
|
f975fd03a1 | ||
|
|
8272874704 | ||
|
|
86f4cead16 | ||
|
|
88a1a10e6f | ||
|
|
624e657210 | ||
|
|
2278e8f1ba | ||
|
|
58176d1484 | ||
|
|
10489879f7 | ||
|
|
fe22872d14 | ||
|
|
4d95d23d99 | ||
|
|
c6fc5a1a26 | ||
|
|
012d75442a | ||
|
|
dcc7900e7c | ||
|
|
34f5e8ad0e | ||
|
|
c2fee9894a | ||
|
|
abd983e851 | ||
|
|
28611704d9 | ||
|
|
305dddeab0 | ||
|
|
ee8112b42f | ||
|
|
ca319f63ad | ||
|
|
a09a8164db | ||
|
|
e5cf6a20a7 | ||
|
|
af5e6e7e6d | ||
|
|
70f2b5e877 | ||
|
|
8ef454dcbe | ||
|
|
551a041283 | ||
|
|
03288943af | ||
|
|
725f734bae | ||
|
|
0f32460656 | ||
|
|
25180cc850 | ||
|
|
2a0e41cab9 | ||
|
|
05edd48ad0 | ||
|
|
266ab95557 | ||
|
|
0a4bba565c | ||
|
|
2ddb9d57aa | ||
|
|
4f012ad703 | ||
|
|
a1cd180082 | ||
|
|
bc2f0c7dcb | ||
|
|
c6ae0ebcbf | ||
|
|
c6ec576cbb | ||
|
|
55329b56cb | ||
|
|
7e43d06b60 | ||
|
|
89f54f3739 | ||
|
|
01fa02d0b5 | ||
|
|
8bed45340a | ||
|
|
55138753c6 | ||
|
|
43369b8096 | ||
|
|
bec1977137 | ||
|
|
4c08eb4b11 | ||
|
|
0163730437 | ||
|
|
39745ac38e | ||
|
|
cacf8bbb58 | ||
|
|
a1c6d5861a | ||
|
|
589c4596d8 | ||
|
|
7a6d7fca42 | ||
|
|
5305c9f1e8 | ||
|
|
b1022ea4c1 | ||
|
|
380a74a4ed | ||
|
|
ff709848a6 | ||
|
|
279dd6d878 | ||
|
|
2e0ad842d0 | ||
|
|
a3949c7786 | ||
|
|
2320606262 | ||
|
|
b01286d280 | ||
|
|
64f72c22b9 | ||
|
|
856114d05c | ||
|
|
98b8c4b0c9 | ||
|
|
01f5f0be5a | ||
|
|
eb6d404753 | ||
|
|
c508ab1aef | ||
|
|
0793dc922c | ||
|
|
00a41ab296 | ||
|
|
37f4877e56 | ||
|
|
a6fc45c02f | ||
|
|
25411e01db | ||
|
|
a8ac6f1dc1 | ||
|
|
dfe1884c25 | ||
|
|
3e5dcc8bcd | ||
|
|
ff81900784 | ||
|
|
4cb30a3057 | ||
|
|
72f80b88f7 | ||
|
|
3008d8133c | ||
|
|
4524618bf2 | ||
|
|
55d22ba10c | ||
|
|
76cf020750 | ||
|
|
f13ac35edf | ||
|
|
59582a9d9d | ||
|
|
6246bbc656 | ||
|
|
1b028b419b | ||
|
|
4c6c768422 | ||
|
|
1d3969b215 | ||
|
|
94116d9ebc | ||
|
|
cc5174a89a | ||
|
|
31552100c5 | ||
|
|
8df5dcb193 | ||
|
|
7929600798 | ||
|
|
a05ea124b9 | ||
|
|
6a03ab3ad4 | ||
|
|
6a151c1312 | ||
|
|
990e56fb13 | ||
|
|
2bd3033f68 | ||
|
|
fe105a07e3 | ||
|
|
a5782defd3 | ||
|
|
bcccd2fe74 | ||
|
|
404e23734b | ||
|
|
973d63f4f2 | ||
|
|
405d98ee63 | ||
|
|
f81724969d | ||
|
|
edb5444fa3 | ||
|
|
e877cb7bd7 | ||
|
|
482b3ba702 | ||
|
|
752acedc0b | ||
|
|
fb88723afc | ||
|
|
3718737091 | ||
|
|
3d3f056f7e | ||
|
|
c60621c367 | ||
|
|
606562aa7e | ||
|
|
f689d06ca9 | ||
|
|
7cfd7f3fb1 | ||
|
|
4a8dfb3461 | ||
|
|
3752b3aead | ||
|
|
b81d41df22 | ||
|
|
dadf3f06ee | ||
|
|
8ed0d5675f | ||
|
|
d5e9041344 | ||
|
|
d99c20f628 | ||
|
|
973ed24dc8 | ||
|
|
5d5f5e3be8 | ||
|
|
d9e14408f0 | ||
|
|
c9c5ce2365 | ||
|
|
975534370f | ||
|
|
28605f6bd3 | ||
|
|
3c6d3b69c2 | ||
|
|
00312e95fe | ||
|
|
4223130bb0 | ||
|
|
c811e1ce70 | ||
|
|
77475f2ad0 | ||
|
|
3680a2f6f5 | ||
|
|
1946058e7b | ||
|
|
73daf8ce33 | ||
|
|
094ceeba14 | ||
|
|
3b7359a27a | ||
|
|
df9108e19b | ||
|
|
6307e783d8 | ||
|
|
b9cd73c76d | ||
|
|
b62c230ca2 | ||
|
|
800193da9b | ||
|
|
577ba5783c | ||
|
|
9bece2b313 | ||
|
|
e85e30546c | ||
|
|
758f6eed51 | ||
|
|
80ee5d3bd8 | ||
|
|
dd06c60ada | ||
|
|
6ca627ae74 | ||
|
|
80a0b81c2a | ||
|
|
06a7b0561b | ||
|
|
12db20be4e | ||
|
|
3cbb1b2b64 | ||
|
|
d75e587613 | ||
|
|
414c57d138 | ||
|
|
c14a84e6f2 | ||
|
|
def0db30e7 | ||
|
|
6ef7a81a3b | ||
|
|
95152aec68 | ||
|
|
8ed6762363 | ||
|
|
87c5ed8bec | ||
|
|
ecc6c1f501 | ||
|
|
3d8338b0d4 | ||
|
|
c91e25518f | ||
|
|
a8dddeab61 | ||
|
|
8f0a5ab660 | ||
|
|
db03d4bdd0 | ||
|
|
0ec96e4279 | ||
|
|
6e520c4cdc | ||
|
|
1e8683d72d | ||
|
|
2df622fd14 | ||
|
|
fede784fa2 | ||
|
|
f191b143e9 | ||
|
|
59212553b5 | ||
|
|
e532b196cc | ||
|
|
0f5232280c | ||
|
|
38898ba4af | ||
|
|
48f56d9600 | ||
|
|
17bf5ac2fc | ||
|
|
343b882d80 | ||
|
|
db06d21339 | ||
|
|
19240f08bb | ||
|
|
d774730f83 | ||
|
|
c2edf42567 | ||
|
|
08f0e55b4f | ||
|
|
deeb74b7e4 | ||
|
|
0542002d7a | ||
|
|
c1e307f585 | ||
|
|
7b4ba43dcf | ||
|
|
b0e4debaab | ||
|
|
676597e961 | ||
|
|
686d90745b | ||
|
|
5dc02d53c3 | ||
|
|
0598547b58 | ||
|
|
67c7745f5d | ||
|
|
a2c289646d | ||
|
|
e6efecd054 | ||
|
|
778b6a86c0 | ||
|
|
e5babd086d | ||
|
|
c212ebbdda | ||
|
|
83b8de3d43 | ||
|
|
e174d374f2 | ||
|
|
4edb93508d | ||
|
|
38c994b83b | ||
|
|
1b8643d4c9 | ||
|
|
d3c796f5b0 | ||
|
|
83d8a6a450 | ||
|
|
a21a77d230 | ||
|
|
260b88c197 | ||
|
|
655331a91b | ||
|
|
09e569f83d | ||
|
|
e4a4b562c4 | ||
|
|
35b4a755f9 | ||
|
|
5a4b43848a | ||
|
|
d98869a088 | ||
|
|
4d33cf739d | ||
|
|
34e7daf989 | ||
|
|
b0adcd6a46 | ||
|
|
be285cde3f | ||
|
|
0ff1faf7f2 | ||
|
|
bcc62cc9e3 | ||
|
|
97b466d409 | ||
|
|
f17d9bba14 | ||
|
|
d74725ce67 | ||
|
|
3dad55d7a8 | ||
|
|
598ffeea89 | ||
|
|
83367f67de | ||
|
|
15f2647d71 | ||
|
|
6421d69bff | ||
|
|
18081e30e1 | ||
|
|
97181b5c0d | ||
|
|
a63f9887b9 | ||
|
|
1282aad4a5 | ||
|
|
b8fad99f09 | ||
|
|
c7e9e60b05 | ||
|
|
47f2e1da73 | ||
|
|
5975229919 | ||
|
|
38295e8a75 | ||
|
|
f9612b5eaf | ||
|
|
5cf2ef2ef7 | ||
|
|
938b5c886e | ||
|
|
0618e68200 | ||
|
|
bac52f3969 | ||
|
|
d494d62953 | ||
|
|
7206181385 | ||
|
|
3f22901a43 | ||
|
|
f70f11fc70 | ||
|
|
cffebd7fd6 | ||
|
|
b8c8e7349f | ||
|
|
8bba99ae56 | ||
|
|
b5c5f57613 | ||
|
|
33df856925 | ||
|
|
ce09cedd2e | ||
|
|
7d68101f83 | ||
|
|
aa50a00898 | ||
|
|
26f112ba55 | ||
|
|
159b9162f8 | ||
|
|
d7999f9fcb | ||
|
|
f13eba4c78 | ||
|
|
050e82e088 | ||
|
|
88377e5b61 | ||
|
|
241af465fd | ||
|
|
59510a554d | ||
|
|
b10aa95d28 | ||
|
|
097bee681a | ||
|
|
8548c2fc61 | ||
|
|
dc4fbd2e97 | ||
|
|
60b029869f | ||
|
|
f592ea6c30 | ||
|
|
a39ac3d94a | ||
|
|
4b23ddc002 | ||
|
|
4486d336a6 | ||
|
|
45e4b811b0 | ||
|
|
0e6a1a4420 | ||
|
|
b8bf708db9 | ||
|
|
6fdbb01194 | ||
|
|
d29147565c | ||
|
|
75c9430559 | ||
|
|
9ac99a80c3 | ||
|
|
a15d107dde | ||
|
|
09897b8146 | ||
|
|
29e446e508 | ||
|
|
10beb36b1c | ||
|
|
a65a888866 | ||
|
|
98180b5cc7 | ||
|
|
92009181af | ||
|
|
831bdb9f63 | ||
|
|
50a4dbbb5e | ||
|
|
ad6511c313 | ||
|
|
7a37fa4aef | ||
|
|
dcee24191f | ||
|
|
87bcb6f377 | ||
|
|
b0bc2f00d2 | ||
|
|
3b19c7d0d9 | ||
|
|
12f5c67bf5 | ||
|
|
d7a83d8995 | ||
|
|
7725729d90 | ||
|
|
e96445bd02 | ||
|
|
da2c124675 | ||
|
|
8cb695a963 | ||
|
|
54cbd7e154 | ||
|
|
5994b62930 | ||
|
|
2fbf94b0f3 | ||
|
|
32bc30e210 | ||
|
|
f3bc8e6ce1 | ||
|
|
16f3a32bec | ||
|
|
c44d2498e3 | ||
|
|
2aed209efa | ||
|
|
b55b780d7b | ||
|
|
8d4eb2bc1f | ||
|
|
67bf4f28ff | ||
|
|
803582f8ac | ||
|
|
03603f392a | ||
|
|
fcfd6d9504 | ||
|
|
c31451cf13 | ||
|
|
5deff1a179 | ||
|
|
e236a1c99b | ||
|
|
a2f3094eb0 | ||
|
|
65afc576ea | ||
|
|
8971f656b4 | ||
|
|
394ce9ee39 | ||
|
|
67a83c1b34 | ||
|
|
1e8d094274 | ||
|
|
4c35a40858 | ||
|
|
802b2aaf6a | ||
|
|
0e79a8944b | ||
|
|
bebf70667d | ||
|
|
d9bd5de0b1 | ||
|
|
31c7aa0ba4 | ||
|
|
fc2388189f | ||
|
|
4431338691 | ||
|
|
bda1e9aeab | ||
|
|
4969ca768d | ||
|
|
2acd1c1642 | ||
|
|
e1e753179a | ||
|
|
f4cc8153ae | ||
|
|
e4d8cb4ee0 | ||
|
|
723a78ae3f | ||
|
|
cd9d0d7dec | ||
|
|
665d4f08c8 | ||
|
|
00c7780fcb | ||
|
|
15ab13dc42 | ||
|
|
8a0ca3066e | ||
|
|
ea01755bb4 | ||
|
|
69c2084a18 | ||
|
|
99c0a1a7d0 | ||
|
|
5acf997e69 | ||
|
|
dd87e4ed39 | ||
|
|
2f8c26ba8a | ||
|
|
81b9793807 | ||
|
|
7278f17e8f | ||
|
|
66c7427df0 | ||
|
|
c1a06d858d | ||
|
|
53b5fdbe9e | ||
|
|
687cf0235e | ||
|
|
b6e9229cf0 | ||
|
|
089e4848d8 | ||
|
|
58d2e7c6d1 | ||
|
|
fa18d6fb76 | ||
|
|
4dcb930247 | ||
|
|
74a299fd08 | ||
|
|
532a560d87 | ||
|
|
0040a60559 | ||
|
|
cc34342790 | ||
|
|
bdbf6e9d19 | ||
|
|
db86f765eb | ||
|
|
b11dec5dd5 | ||
|
|
86becc7591 | ||
|
|
8922bc038b | ||
|
|
009f5790a4 | ||
|
|
0536b6c459 | ||
|
|
0e3ebd9841 | ||
|
|
598965a606 | ||
|
|
d7a2938849 | ||
|
|
a683658675 | ||
|
|
25169f68b7 | ||
|
|
e5247ae65d | ||
|
|
a718cb05ff | ||
|
|
b466ef2581 | ||
|
|
c7a634641f | ||
|
|
e4388643f1 | ||
|
|
bc4208201c | ||
|
|
a0d69d52a1 | ||
|
|
c23a1be139 | ||
|
|
9799f7afb0 | ||
|
|
6358b24fac | ||
|
|
b58634316f | ||
|
|
e3657644d6 | ||
|
|
7d1e3ebeed | ||
|
|
9e61dfe85e | ||
|
|
7b51aafa86 | ||
|
|
5f487123df | ||
|
|
f1f32477e3 | ||
|
|
df2b1251a0 | ||
|
|
02c7cf6fa5 | ||
|
|
60006ff993 | ||
|
|
f3af5d7b8e | ||
|
|
d551412a32 | ||
|
|
6de67a134e | ||
|
|
8ec31398e0 | ||
|
|
fd0d560b47 | ||
|
|
cc542269a1 | ||
|
|
7b488a3bef | ||
|
|
f448168501 | ||
|
|
80a8fb98db | ||
|
|
898bb397b1 | ||
|
|
74ed5b5ebd | ||
|
|
178afd81a9 | ||
|
|
d6eb1a7b98 | ||
|
|
4ff56b15e9 | ||
|
|
e6b98d3152 | ||
|
|
5fd8dd2dce | ||
|
|
0ad3e046a4 | ||
|
|
d6c5d24af3 | ||
|
|
8a3280a2de | ||
|
|
450a0a647a | ||
|
|
676c0cf123 | ||
|
|
a731319321 | ||
|
|
81b06a09b7 | ||
|
|
23b34744d9 | ||
|
|
bc8590aa12 | ||
|
|
939d368d5f | ||
|
|
336e3b8baf | ||
|
|
47c06fa308 | ||
|
|
b7f447f8d8 | ||
|
|
03af76b631 | ||
|
|
e105d5c28f | ||
|
|
d6ffb4c177 | ||
|
|
6dbfce1031 | ||
|
|
fea5ddf585 | ||
|
|
b9f39c2711 | ||
|
|
5acac0309a | ||
|
|
78febad718 | ||
|
|
a6a5bba0a9 | ||
|
|
51581c034d | ||
|
|
8f25a95b47 | ||
|
|
7f5d092223 | ||
|
|
2e5cccd1b6 | ||
|
|
2645782f89 | ||
|
|
9533092511 | ||
|
|
6005a461bb | ||
|
|
e2df946eee | ||
|
|
d14588120f | ||
|
|
ab31cfa664 | ||
|
|
af1c397969 | ||
|
|
947f9deed5 | ||
|
|
ce95eee903 | ||
|
|
b15f3bb969 | ||
|
|
998e8cba19 | ||
|
|
e3f523ab2a | ||
|
|
36485e56ed | ||
|
|
b4113360f6 | ||
|
|
2d71e22f08 | ||
|
|
2ae67c431c | ||
|
|
4b1a91b64f | ||
|
|
4f69318e12 | ||
|
|
1cc98ab50f | ||
|
|
a6494602fd | ||
|
|
50ec78b488 | ||
|
|
7d044d14f9 | ||
|
|
df03d5a8b2 | ||
|
|
6a0ed81e67 | ||
|
|
c94f3e8188 | ||
|
|
1e5f6cc1dc | ||
|
|
b1fece74e3 | ||
|
|
fdbe0df6e7 | ||
|
|
93d59520e4 | ||
|
|
b68d3a073b | ||
|
|
2100311f41 | ||
|
|
e1269e3156 | ||
|
|
c88d61b044 | ||
|
|
f49df54a36 | ||
|
|
952bbc4410 | ||
|
|
1eb4b85d72 | ||
|
|
59b6cb9e91 | ||
|
|
e06afaeb7a | ||
|
|
8c6f654b26 | ||
|
|
1d8212e53a | ||
|
|
083c5e17e1 | ||
|
|
272231fb09 | ||
|
|
67b4d9b232 | ||
|
|
21709e1557 | ||
|
|
9c312637d1 | ||
|
|
feacad7f68 | ||
|
|
6513303498 | ||
|
|
3e2a52b034 | ||
|
|
176d4e85e9 | ||
|
|
84d30dffb6 | ||
|
|
0fd282b078 | ||
|
|
cdf4afbe50 | ||
|
|
b222b2304e | ||
|
|
fdf9900114 | ||
|
|
5867eb2dd2 | ||
|
|
61f145e3de | ||
|
|
b97e7fc730 | ||
|
|
01cbf08064 | ||
|
|
fec632e948 | ||
|
|
6aab5b57e1 | ||
|
|
d2a27e02ce | ||
|
|
b55506a76d | ||
|
|
afc2aa2b3f | ||
|
|
d055b269ed | ||
|
|
8a246a4a9f | ||
|
|
2f684351bf | ||
|
|
74e5beab9d | ||
|
|
b41765f441 | ||
|
|
05a6013f42 | ||
|
|
cfff544d67 | ||
|
|
599d9642ca | ||
|
|
0264faaa4e | ||
|
|
4022a60ea7 | ||
|
|
39e366fc11 | ||
|
|
096675824f | ||
|
|
80bfa76ac9 | ||
|
|
b2e553a82e | ||
|
|
772b64d9d3 | ||
|
|
92c0de518e | ||
|
|
ff96456513 | ||
|
|
e89adbef51 | ||
|
|
22a6a6cf81 | ||
|
|
fd870e4e8a | ||
|
|
d52ed3fff2 | ||
|
|
bac17ab7d8 | ||
|
|
9ace303528 | ||
|
|
7e81c35cdc | ||
|
|
0f125d9bcf | ||
|
|
d4714517c0 | ||
|
|
280e4bf4c3 | ||
|
|
adf462fe05 | ||
|
|
c2862742ab | ||
|
|
8a712eb5af | ||
|
|
d58790af17 | ||
|
|
9ef7a13403 | ||
|
|
a5da1219bb | ||
|
|
be524fed38 | ||
|
|
042016b85e | ||
|
|
f6da574324 | ||
|
|
b09d5c3135 | ||
|
|
ec65c3fd53 | ||
|
|
7ca2f31c8d | ||
|
|
2275737a5d | ||
|
|
5e3836055f | ||
|
|
37a6a0bb3e | ||
|
|
6bcca3eca9 | ||
|
|
ce40b8d531 | ||
|
|
9f109b94b8 | ||
|
|
89024febde | ||
|
|
b7a673c6e2 | ||
|
|
7f68be770d | ||
|
|
4f173f35db | ||
|
|
ae9fbe573e | ||
|
|
29676f473d | ||
|
|
a5fcb26ab1 | ||
|
|
d68b1a1e8c | ||
|
|
bd8baed138 | ||
|
|
00a7dda273 | ||
|
|
4dba07c384 | ||
|
|
4d39c6b7cc | ||
|
|
7d6f6158c9 | ||
|
|
6863dbbc0c | ||
|
|
28b96efd8b | ||
|
|
0f82af0f49 | ||
|
|
f0d839436f | ||
|
|
f1aa4b4127 | ||
|
|
ccdb43f7f1 | ||
|
|
72900f0f90 | ||
|
|
3ad958ddb1 | ||
|
|
2c77cc90f4 | ||
|
|
db4c33b4fb | ||
|
|
3fb04115fc | ||
|
|
4faaa32aef | ||
|
|
cab59b4c32 | ||
|
|
931eff89f5 | ||
|
|
175335808b | ||
|
|
e00216581e | ||
|
|
23951ec00c | ||
|
|
a8fc5d0f9f | ||
|
|
f5e85bab1c | ||
|
|
9a44fa83dc | ||
|
|
6b1e54da62 | ||
|
|
b91421b107 | ||
|
|
43b3954fa5 | ||
|
|
80f2e3f263 | ||
|
|
9ea423b4c1 | ||
|
|
b259c9c535 | ||
|
|
80f481a5f7 | ||
|
|
115fe1b577 | ||
|
|
06d6ea651e | ||
|
|
966fa848a0 | ||
|
|
6f8fe67ace | ||
|
|
d49edc8e09 | ||
|
|
3b9c20fe31 | ||
|
|
bd72c5eacf | ||
|
|
9d152a77fd | ||
|
|
33dc28b905 | ||
|
|
43ce64dcca | ||
|
|
9e0882ba98 | ||
|
|
c890149c8c | ||
|
|
1a1ab2e2e8 | ||
|
|
715b706caa | ||
|
|
bfa9c42c25 | ||
|
|
9d98f97e1b | ||
|
|
5eb5ce6ff3 | ||
|
|
be9c873a6e | ||
|
|
034d80f6cd | ||
|
|
021e786c71 | ||
|
|
0c6bb8cb66 | ||
|
|
4d7f08a99e | ||
|
|
fdef584681 | ||
|
|
f335bac8a3 | ||
|
|
51369753bb | ||
|
|
82a4c2bce3 | ||
|
|
e73c6e039e | ||
|
|
19bad0844f | ||
|
|
96cec4dfd7 | ||
|
|
943aea6267 | ||
|
|
b433e4a1e7 | ||
|
|
20f1966c0e | ||
|
|
ab1f5c3edd | ||
|
|
b2be6799f2 | ||
|
|
ea2618fc6f | ||
|
|
62fdf8eaed | ||
|
|
d3569a3572 | ||
|
|
89df76e449 | ||
|
|
e5b2f33b4f | ||
|
|
934d312f50 | ||
|
|
68917eb517 | ||
|
|
3beb2f6b5d | ||
|
|
b29017f15b | ||
|
|
db83a0ebbc | ||
|
|
6d9fddb95d | ||
|
|
4284190cc4 | ||
|
|
5e4cbd2d24 | ||
|
|
06c3bec65d | ||
|
|
e8c3bb45ba | ||
|
|
4ec55a964d | ||
|
|
b9420864c0 | ||
|
|
bf6588b6a7 | ||
|
|
e43217e664 | ||
|
|
e19ee2d102 | ||
|
|
b4c53e2cfd | ||
|
|
a2902de67c | ||
|
|
da192f7955 | ||
|
|
a2210d23c3 | ||
|
|
bd5a622400 | ||
|
|
b9494cb0d6 | ||
|
|
0f73af4470 | ||
|
|
45e26b5c02 | ||
|
|
6af5ea38ce | ||
|
|
b6f0aa4394 | ||
|
|
774dab58f6 | ||
|
|
e3bdb98f7a | ||
|
|
58d628c9f8 | ||
|
|
1e69394545 | ||
|
|
1cf798ad14 | ||
|
|
da3992d2e9 | ||
|
|
48908e4633 | ||
|
|
f5ae149338 | ||
|
|
3fe5311967 | ||
|
|
6a48639c68 | ||
|
|
e7093b3ca8 | ||
|
|
d0a4104c0c | ||
|
|
90559bed53 | ||
|
|
973a18cf03 | ||
|
|
3c666ce57a | ||
|
|
a1287ec64f | ||
|
|
5fbfa1bfa8 | ||
|
|
da3ecc91f8 | ||
|
|
09c8f558f7 | ||
|
|
528a149def | ||
|
|
29e36afb6b | ||
|
|
0e39543d35 | ||
|
|
0de20d8ee6 | ||
|
|
cd5de5c0e5 | ||
|
|
bd5afc26bd | ||
|
|
9542dfdcdc | ||
|
|
97a6d7b1a8 | ||
|
|
209b9d4374 | ||
|
|
0b8ccd0ae7 | ||
|
|
0b7f5ad508 | ||
|
|
8a38805e82 | ||
|
|
836d88a4b8 | ||
|
|
d5268ed511 | ||
|
|
0e7d93858d | ||
|
|
2164d760b7 | ||
|
|
b9c8de598b | ||
|
|
9889a811db | ||
|
|
9e38d882b9 | ||
|
|
e8635044b5 | ||
|
|
56dea0ac9a | ||
|
|
e8b77477c7 | ||
|
|
64298e528d | ||
|
|
4f1465e7c7 | ||
|
|
6120041b69 | ||
|
|
8c1213627d | ||
|
|
3e6ae6eeb8 | ||
|
|
291e9aeabd | ||
|
|
a3d776187a | ||
|
|
e55f502e2f | ||
|
|
e369270f88 | ||
|
|
7e845e7cfd | ||
|
|
56d9624b56 | ||
|
|
911d135deb | ||
|
|
8107b90678 | ||
|
|
7722452b98 | ||
|
|
6e1a986e0f | ||
|
|
e0785ade35 | ||
|
|
0177ed6f03 | ||
|
|
c62635a3b5 | ||
|
|
0177476fd2 | ||
|
|
76d7dface7 | ||
|
|
982ba21460 | ||
|
|
6081c60556 | ||
|
|
2fe3c22108 | ||
|
|
75dbb3189a | ||
|
|
32330300a9 | ||
|
|
64414df27e | ||
|
|
f98ec86798 | ||
|
|
87bbd13899 | ||
|
|
51a4493add | ||
|
|
5effe8f336 | ||
|
|
296eb2bd61 | ||
|
|
9853acba66 | ||
|
|
09cb9c782d | ||
|
|
575ce905b2 | ||
|
|
54887af471 | ||
|
|
573350637e | ||
|
|
49a16f7121 | ||
|
|
a4773fcbbb | ||
|
|
1e038c4bc6 | ||
|
|
6ba19692a3 | ||
|
|
432dfe2b8f | ||
|
|
a142372750 | ||
|
|
f14195f786 | ||
|
|
9d54f9a6b7 | ||
|
|
ebb91191bf | ||
|
|
8742e294d4 | ||
|
|
8882d1fa1b | ||
|
|
0c37ab5255 | ||
|
|
747a05844d | ||
|
|
c7b7bf32f8 | ||
|
|
710ee3b0e0 | ||
|
|
7a8993892d | ||
|
|
5e16a77fa9 | ||
|
|
ef35519696 | ||
|
|
d5baaf7756 | ||
|
|
2a94387fc3 | ||
|
|
6a5c2b0fc3 | ||
|
|
fc281d6440 | ||
|
|
e22ac39da4 | ||
|
|
34cadb1e54 | ||
|
|
94692b904e | ||
|
|
18f3087afd | ||
|
|
15bc228ae9 | ||
|
|
2b7a38d032 | ||
|
|
90e1a6905a | ||
|
|
c36af24cbd | ||
|
|
a676c18502 | ||
|
|
362912ff83 | ||
|
|
46ff13f243 | ||
|
|
340a67a6f8 | ||
|
|
9294c1e76c | ||
|
|
fd704f8de0 | ||
|
|
d9ca9154d1 | ||
|
|
35110eca73 | ||
|
|
9ad92b3007 | ||
|
|
2f78c96330 | ||
|
|
639857ceb2 | ||
|
|
162f58c53c | ||
|
|
84c4d96e71 | ||
|
|
c0d343d56d | ||
|
|
6d14a80608 | ||
|
|
f451bb7c49 | ||
|
|
20b17d6b04 | ||
|
|
bb2317b63c | ||
|
|
189461dc98 | ||
|
|
69af552bc1 | ||
|
|
0ae6ff9f72 | ||
|
|
8b571fbbb1 | ||
|
|
f3fcd409d5 | ||
|
|
a47532f88a | ||
|
|
6c157a404b | ||
|
|
4f8a49143d | ||
|
|
493d6033aa | ||
|
|
8f219af884 | ||
|
|
aeb04136f7 | ||
|
|
0b8f57bf06 | ||
|
|
6508d446e1 | ||
|
|
82cb462bb4 | ||
|
|
9a264bf610 | ||
|
|
57007e80a9 | ||
|
|
b6c876bdb6 | ||
|
|
57afae79eb | ||
|
|
84c2184909 | ||
|
|
e358a24a75 | ||
|
|
9da9d00c62 | ||
|
|
ec3f269d1f | ||
|
|
1c388a52a5 | ||
|
|
34a827bbfe | ||
|
|
726b9e2240 | ||
|
|
2236ba0d20 | ||
|
|
463c0f7096 | ||
|
|
e49a7e361c | ||
|
|
6e87cf5b30 | ||
|
|
5872e8dd7e | ||
|
|
e81d4ac8c8 | ||
|
|
4922904991 | ||
|
|
decae2dcda | ||
|
|
16bbd13af7 | ||
|
|
ee0666c8df | ||
|
|
a8a8ae2e92 | ||
|
|
fd1148a728 | ||
|
|
74c7b41ee7 | ||
|
|
465e19dbe9 | ||
|
|
86660c73e5 | ||
|
|
6d8a208df2 | ||
|
|
c3a826fdce | ||
|
|
c5d6a42abf | ||
|
|
d49c144297 | ||
|
|
e7de7d5eb3 | ||
|
|
20005a83d2 | ||
|
|
27926030f9 | ||
|
|
701de67b79 | ||
|
|
883479f01e | ||
|
|
b37a0b0512 | ||
|
|
5c5d5270d2 | ||
|
|
36461fb2aa | ||
|
|
d8dcd5e472 | ||
|
|
c51b46c982 | ||
|
|
b1b63c1dd1 | ||
|
|
30c93d66eb | ||
|
|
3b60bb7259 | ||
|
|
c73f8e835f | ||
|
|
93558c4299 | ||
|
|
396cff5779 | ||
|
|
336154e729 | ||
|
|
bb0aba34fa | ||
|
|
1dc0ce9562 | ||
|
|
e4aee168b5 | ||
|
|
2c10c895da | ||
|
|
c04fae3096 | ||
|
|
a214af0830 | ||
|
|
f21bc46e82 | ||
|
|
044327a488 | ||
|
|
c4bbcc83b6 | ||
|
|
eb162b73c2 | ||
|
|
29aafb9cea | ||
|
|
40eb7d0d48 | ||
|
|
1dcb2b7e65 | ||
|
|
5470b9aa73 | ||
|
|
050bd7dd0b | ||
|
|
f75038634f | ||
|
|
300b4a9158 | ||
|
|
52071f3476 | ||
|
|
42ddd745f8 | ||
|
|
a7846189cd | ||
|
|
4762995d1f | ||
|
|
e3a530eb61 | ||
|
|
d1235ff058 | ||
|
|
4370e92dbd | ||
|
|
50e9522a06 | ||
|
|
b5bb9aa8e3 | ||
|
|
cf2e365f23 | ||
|
|
72e532cb67 | ||
|
|
ac5635f77d | ||
|
|
640d67c119 | ||
|
|
3e79693e3b | ||
|
|
d55d3c2fd0 | ||
|
|
3aced17c75 | ||
|
|
bac63914db | ||
|
|
6a63c51f7c | ||
|
|
632cf13767 | ||
|
|
e7012a515c | ||
|
|
6b638af92f | ||
|
|
c654b79c53 | ||
|
|
bee7b874ea | ||
|
|
9c3fc592f7 | ||
|
|
4eab7a1ebc | ||
|
|
3d985688e4 | ||
|
|
17ea2631cd | ||
|
|
b749910e6c | ||
|
|
eff36caea8 | ||
|
|
6ff092f140 | ||
|
|
28bb36e53d | ||
|
|
4a091bbd8a | ||
|
|
e99a6b813e | ||
|
|
b9e5302f27 | ||
|
|
dd7b6aef39 | ||
|
|
910b8b6a69 | ||
|
|
c3207e215f | ||
|
|
f83be11b85 | ||
|
|
45bce1062a | ||
|
|
8cb344bf3c | ||
|
|
fcc4518cdc | ||
|
|
c84839eb91 | ||
|
|
1f878aee69 | ||
|
|
84fd4686e2 | ||
|
|
ede9fb4fcc | ||
|
|
723aef71e8 | ||
|
|
48964a911e | ||
|
|
6a35cb60fd | ||
|
|
1e51c3a832 | ||
|
|
205dda2b39 | ||
|
|
1c18d19da0 | ||
|
|
645729e943 | ||
|
|
f425a25c98 | ||
|
|
aaace2e802 | ||
|
|
3f16d9fbc9 | ||
|
|
3afc57bab8 | ||
|
|
55225106b6 | ||
|
|
1a31bff9fe | ||
|
|
4eaa3329ec | ||
|
|
028d78b993 | ||
|
|
944af98be6 | ||
|
|
2789b2b0ad | ||
|
|
7dded571de | ||
|
|
95fe8372e8 | ||
|
|
ecdcb0ef67 | ||
|
|
6a04a03eb5 | ||
|
|
0c96056a94 | ||
|
|
f518a5e231 | ||
|
|
f581c1062e | ||
|
|
0b3deceea3 | ||
|
|
fa4cd8868c | ||
|
|
8c573ca7f3 | ||
|
|
5a5cf3a51d | ||
|
|
3f23e8443e | ||
|
|
a00f9b093c | ||
|
|
5f538ce3f8 | ||
|
|
ebcaa3d579 | ||
|
|
60e26199a2 | ||
|
|
11defd180c | ||
|
|
c82c1691ee | ||
|
|
364562f209 | ||
|
|
5d9fc28fa7 | ||
|
|
e5ec5c284f | ||
|
|
a90e33ad71 | ||
|
|
62ab21ce7d | ||
|
|
cc8e8db1e5 | ||
|
|
b19cba2016 | ||
|
|
315a9c95d5 | ||
|
|
e010ac9706 | ||
|
|
e4c0a85da0 | ||
|
|
d3e4cdd5b0 | ||
|
|
763b812dc7 | ||
|
|
3269dfb4ab | ||
|
|
e816bd259f | ||
|
|
a295408e09 | ||
|
|
42a34c7cd7 | ||
|
|
9a72751958 | ||
|
|
314e6fa80b | ||
|
|
b2b66f749a | ||
|
|
708ed6fded | ||
|
|
5c30fa50d6 | ||
|
|
fc33c424d9 | ||
|
|
b04d6dd0b1 | ||
|
|
9c5f79c56a | ||
|
|
ef5eea689a | ||
|
|
fd191deb49 | ||
|
|
e1da1ff7d3 | ||
|
|
2b00ed7ef8 | ||
|
|
d960ea959d | ||
|
|
274842ec41 | ||
|
|
c06da7c84a | ||
|
|
cea117b509 | ||
|
|
6078c938b2 | ||
|
|
9e95dd4821 | ||
|
|
0cc8b57d4f | ||
|
|
2179e6e797 | ||
|
|
7dde3d1825 | ||
|
|
a0fe950b75 | ||
|
|
44985e8884 | ||
|
|
f03366bcbf | ||
|
|
d43ea83033 | ||
|
|
11bdba0007 | ||
|
|
07e58aaa79 | ||
|
|
a31ddd363b | ||
|
|
ed9e10f2d8 | ||
|
|
02ae3c2810 | ||
|
|
669ebb5f71 | ||
|
|
9a3e0e52cb | ||
|
|
b0f856213d | ||
|
|
6f4ff1f2bf | ||
|
|
d3eea61f1f | ||
|
|
d59d81fae8 | ||
|
|
329ca40b6f | ||
|
|
e71bd416f4 | ||
|
|
ad66fc6cc2 | ||
|
|
d12b44204b | ||
|
|
4be2136de4 | ||
|
|
c4dbed040b | ||
|
|
366b62af2d | ||
|
|
a6955aa486 | ||
|
|
ad30341fa2 | ||
|
|
23da55a9f1 | ||
|
|
41e6292e7b | ||
|
|
ae1d6f29d9 | ||
|
|
ccfc1ddbef | ||
|
|
002de1eae2 | ||
|
|
63621bae81 | ||
|
|
85f9e6c4b9 | ||
|
|
967ec296c0 | ||
|
|
c6aae9b1d7 | ||
|
|
913c370c25 | ||
|
|
e5472bbd21 | ||
|
|
957c258c6d | ||
|
|
abee109cd1 | ||
|
|
502e5ae6e1 | ||
|
|
b8417be1f2 | ||
|
|
9e037431b4 | ||
|
|
f71b3676bb | ||
|
|
50fe7b5e35 | ||
|
|
9fb253388b | ||
|
|
8cf1786296 | ||
|
|
51b17b299c | ||
|
|
78882e4642 | ||
|
|
8465a367a4 | ||
|
|
3bcfe678ab | ||
|
|
d5403f3a5b | ||
|
|
26abb48533 | ||
|
|
177848ed27 | ||
|
|
656a2e93d7 | ||
|
|
6b1220b61d | ||
|
|
9d7330d879 | ||
|
|
26a5954fa0 | ||
|
|
01165e08e0 | ||
|
|
6e1633a6c5 | ||
|
|
a8ff0a21bf | ||
|
|
b8bc6bed97 | ||
|
|
1a4402038c | ||
|
|
5ac51cc9b5 | ||
|
|
c12159ce21 | ||
|
|
4485503ecc | ||
|
|
200ac588cc | ||
|
|
0bb040822d | ||
|
|
543fbe14ee | ||
|
|
e02ab66120 | ||
|
|
76c7c694c5 | ||
|
|
f0057977b7 | ||
|
|
e8e43f06af | ||
|
|
04b35e86d5 | ||
|
|
64ab85da4f | ||
|
|
b8d7a13ea3 | ||
|
|
78a76dc905 | ||
|
|
5fa5fff0e9 | ||
|
|
d323b3d816 | ||
|
|
b685b5672a | ||
|
|
8f6c2f87c8 | ||
|
|
f30e8b11eb | ||
|
|
8bd6d6a4de | ||
|
|
b3a8f438fc | ||
|
|
e78ddf0a95 | ||
|
|
5f0366c2cb | ||
|
|
779ca09775 | ||
|
|
313f1a1e83 | ||
|
|
21337f4776 | ||
|
|
53a8e5655b | ||
|
|
2d85585ae1 | ||
|
|
63d109f7be | ||
|
|
c904b6b5bf | ||
|
|
6a27449922 | ||
|
|
9a9c07f571 | ||
|
|
4382204e1b | ||
|
|
6d3114efe2 | ||
|
|
b62baaed95 | ||
|
|
9b391e531b | ||
|
|
a0c7a6d22b | ||
|
|
14424f7058 | ||
|
|
6063dff8d0 | ||
|
|
7fba9ed398 | ||
|
|
53280a196b | ||
|
|
0bf9a5704b | ||
|
|
8182d17ae1 | ||
|
|
69b1ac7dcd | ||
|
|
b15507aac3 | ||
|
|
6c2f583f51 | ||
|
|
a72eaddda3 | ||
|
|
dc050e45df | ||
|
|
2fcbf13920 | ||
|
|
099ae31523 | ||
|
|
c2fcdf3a02 | ||
|
|
2056a538b9 | ||
|
|
cd1144dc24 | ||
|
|
e9d068b913 | ||
|
|
ec2ad57c32 | ||
|
|
316adac511 | ||
|
|
d7b11d4c33 | ||
|
|
c52aa6df33 | ||
|
|
a19b23b59f | ||
|
|
4e26b2a65b | ||
|
|
7c4feac6db | ||
|
|
e01e364c37 | ||
|
|
c13a3d7b84 | ||
|
|
67805b6dc5 | ||
|
|
0050ab2a3d | ||
|
|
60e66c6cbf | ||
|
|
5ad2a253e8 | ||
|
|
b5d50e9298 | ||
|
|
37f7362aca | ||
|
|
bee198def5 | ||
|
|
f09e479fd6 | ||
|
|
80fe93bc33 | ||
|
|
ea03ad3bee | ||
|
|
feec421744 | ||
|
|
634982840e | ||
|
|
fb3c85ab2f | ||
|
|
a9b7c3531c | ||
|
|
a7ba0d908d | ||
|
|
2fc70e2c5d | ||
|
|
7ae3f0e70c | ||
|
|
9afaa51e3f | ||
|
|
c736a719f1 | ||
|
|
37a547842b | ||
|
|
b9f1d43921 | ||
|
|
bec6423c02 | ||
|
|
241b2b4ae3 | ||
|
|
14d9b56937 | ||
|
|
1c3766eb46 | ||
|
|
70024d61eb | ||
|
|
2085f133d6 | ||
|
|
2a045dfceb | ||
|
|
893cbaaf2f | ||
|
|
6e61939382 | ||
|
|
015a618172 | ||
|
|
2a8b91cdb9 | ||
|
|
bebd5dbc5a | ||
|
|
018dbfe058 | ||
|
|
c6ea597817 | ||
|
|
175b00c0a2 | ||
|
|
5ebc6e305e | ||
|
|
993600761f | ||
|
|
1d9fff80b7 | ||
|
|
c712b84dd5 | ||
|
|
dcf8dd4b5e | ||
|
|
ba26c3fb22 | ||
|
|
41563607a8 | ||
|
|
2d4dcfb740 | ||
|
|
34854e70cf | ||
|
|
758d9fe852 | ||
|
|
6a6c0e7a73 | ||
|
|
ee44eec3e1 | ||
|
|
eccd0d8e37 | ||
|
|
983be0ec60 | ||
|
|
243a45d840 | ||
|
|
60ec804047 | ||
|
|
c53e9ccf4a | ||
|
|
6e8e0418fc | ||
|
|
e9eb52305f | ||
|
|
8501ae748c | ||
|
|
da59692067 | ||
|
|
bae77c0a46 | ||
|
|
b42bc7329e | ||
|
|
9b3c2b6ae2 | ||
|
|
833b6df969 | ||
|
|
0b45431139 | ||
|
|
5d1349031c | ||
|
|
82388a5e4c | ||
|
|
74816fed6c | ||
|
|
b4c9789d5f | ||
|
|
f96fadc074 | ||
|
|
f6b1173437 | ||
|
|
346992c366 | ||
|
|
ab4086bc24 | ||
|
|
d8e7f2b2c7 | ||
|
|
93fcb94b62 | ||
|
|
32a446cf19 | ||
|
|
94459cab98 | ||
|
|
158588640a | ||
|
|
f00f050d1b | ||
|
|
c4f34c60a5 | ||
|
|
371ef80dc3 | ||
|
|
84b4e9ff7c | ||
|
|
677a74fa1b | ||
|
|
8a076d1dba | ||
|
|
970722483c | ||
|
|
31443724c6 | ||
|
|
0e7614919b | ||
|
|
2bf72937d2 | ||
|
|
4e555c7b32 | ||
|
|
bd7021d05b | ||
|
|
1a14555605 | ||
|
|
cb3fb371ea | ||
|
|
6c6dda1b74 | ||
|
|
a712808006 | ||
|
|
e19c203728 | ||
|
|
8817779f23 | ||
|
|
3e5a32671c | ||
|
|
d34f32b39e | ||
|
|
c85a77e0b1 | ||
|
|
9406e517e6 | ||
|
|
4a56049225 | ||
|
|
04ea4b4d75 | ||
|
|
5b6b6283f3 | ||
|
|
38f07ce0fb | ||
|
|
987cdebefb | ||
|
|
6b978db369 | ||
|
|
5840c8cb70 | ||
|
|
44f2024bab | ||
|
|
410942e9df | ||
|
|
5b3730feae | ||
|
|
38f797ccd6 | ||
|
|
553c5a7501 | ||
|
|
bbba9d568f | ||
|
|
11e43dd021 | ||
|
|
e8ddf84871 | ||
|
|
67f04d2d5f | ||
|
|
8f646eef45 | ||
|
|
d26e932858 | ||
|
|
73b9d0840c | ||
|
|
2ea4326c40 | ||
|
|
8b80ac2877 | ||
|
|
233237740d | ||
|
|
f5cdac38bd | ||
|
|
760565dcad | ||
|
|
b5d97b3d94 | ||
|
|
4a6cc54eb5 | ||
|
|
61133545f6 | ||
|
|
bf87d13f5b | ||
|
|
efaf688650 | ||
|
|
9a5c21c16f | ||
|
|
06ffb47ef2 | ||
|
|
1acbda97e0 | ||
|
|
d6460aff36 | ||
|
|
a357f77c4c | ||
|
|
d5bdd2b2f9 | ||
|
|
562d2de303 | ||
|
|
1f68fa19c7 | ||
|
|
677ddd6160 | ||
|
|
228e627475 | ||
|
|
ec4e653c6f | ||
|
|
3916d1e6cb | ||
|
|
387aaba810 | ||
|
|
9f3d9da119 | ||
|
|
76c24a0d82 | ||
|
|
ffd65a1956 | ||
|
|
de8947f92f | ||
|
|
d2b4dedbe4 | ||
|
|
34865ffb4a | ||
|
|
62970da675 | ||
|
|
8ed31c48e0 | ||
|
|
13d40e33a4 | ||
|
|
c765213aaa | ||
|
|
983bf93a24 | ||
|
|
2f8085af15 | ||
|
|
88a4dc2795 | ||
|
|
b5112096d7 | ||
|
|
fc80c714e8 | ||
|
|
84bc23b92f | ||
|
|
d90472dd64 | ||
|
|
3b63ed8230 | ||
|
|
e75441e027 | ||
|
|
0ae8b51230 | ||
|
|
547c136b4f | ||
|
|
4ed13bde55 | ||
|
|
80e01deba0 | ||
|
|
fb9ae9d0e2 | ||
|
|
dd54d8551b | ||
|
|
205f8b266c | ||
|
|
c4ce9ac4de | ||
|
|
0e4e28fdda | ||
|
|
db2370a12f | ||
|
|
d1d35ba85f | ||
|
|
2ab2e7675c | ||
|
|
0472629222 | ||
|
|
c4f7570a23 | ||
|
|
d26cfd5791 | ||
|
|
b7ffc6bb45 | ||
|
|
8a96aec567 | ||
|
|
5cd9f57137 | ||
|
|
702664e959 | ||
|
|
18d87edd6d | ||
|
|
dc59795629 | ||
|
|
cb9bb31f7d | ||
|
|
02706bec94 | ||
|
|
7657186bf6 | ||
|
|
42ac24448c | ||
|
|
31891b55a4 | ||
|
|
aa47ac4c06 | ||
|
|
b01151e81c | ||
|
|
67bd6f9ccd | ||
|
|
4869fa285b | ||
|
|
d221e01406 | ||
|
|
874fc8228a | ||
|
|
6f752c64bc | ||
|
|
ccb7950c4c | ||
|
|
750e771376 | ||
|
|
7012a4a291 | ||
|
|
40ab20a252 | ||
|
|
6af315e50c | ||
|
|
861b5e608b | ||
|
|
f61917594e | ||
|
|
0ddab51ad8 | ||
|
|
9798432f56 | ||
|
|
5faf52619d | ||
|
|
f8b4ba80e0 | ||
|
|
527f70e540 | ||
|
|
19f66c7575 | ||
|
|
b7721deb02 | ||
|
|
5ba188ab2d | ||
|
|
eadfd78c2e | ||
|
|
4d815c9990 | ||
|
|
176981b529 | ||
|
|
85baebd0d4 | ||
|
|
ac022b2e30 | ||
|
|
f169b750b8 | ||
|
|
86295eef13 | ||
|
|
32d60b2714 | ||
|
|
0a3065a2f2 | ||
|
|
b98faaa8c0 | ||
|
|
73772323c9 | ||
|
|
98389066e2 | ||
|
|
fb53ed4c1f | ||
|
|
e719eb5b81 | ||
|
|
3858063bcd | ||
|
|
d4f5fea840 | ||
|
|
22c1d48cb2 | ||
|
|
e7cefd684b | ||
|
|
d2485e4f20 | ||
|
|
160d6b26b0 | ||
|
|
17d61e4f29 | ||
|
|
446b9467da | ||
|
|
3970a7056c | ||
|
|
74068a6d1b | ||
|
|
8c83422fe2 | ||
|
|
61a1e3cd01 | ||
|
|
89cac6f25c | ||
|
|
62082293c5 | ||
|
|
153fd2752c | ||
|
|
e649a40f5d | ||
|
|
32d76a5b57 | ||
|
|
14aa3fa258 | ||
|
|
f5394cccb1 | ||
|
|
64dd9c7656 | ||
|
|
16ae0c6466 | ||
|
|
6a2e21ec8c | ||
|
|
120f17ce04 | ||
|
|
ab938bb9bd | ||
|
|
33820cd2ac | ||
|
|
41def21f91 | ||
|
|
d118312922 | ||
|
|
82b93e4945 | ||
|
|
e36fb1ecda | ||
|
|
e4a1788614 | ||
|
|
7b23eff9cf | ||
|
|
67ff8e3ea3 | ||
|
|
2248599ae1 | ||
|
|
29350b363b | ||
|
|
83c470a443 | ||
|
|
ab96e2d6e9 | ||
|
|
6b81cf4bc9 | ||
|
|
0d9301539e | ||
|
|
4a9e12542d | ||
|
|
21b4105454 | ||
|
|
d7648d94ca | ||
|
|
883343ba63 | ||
|
|
16b5dc710f | ||
|
|
686d767053 | ||
|
|
ed3176dd6b | ||
|
|
6a99ab098c | ||
|
|
b03adde546 | ||
|
|
e6034ea299 | ||
|
|
c7f51ebeab | ||
|
|
9a820d7a98 | ||
|
|
8dbaf534c8 | ||
|
|
91f483c591 | ||
|
|
c5b448038f | ||
|
|
c4ff5eb0ca | ||
|
|
0859cd2444 | ||
|
|
59b45a90cc | ||
|
|
f661475962 | ||
|
|
54b02ecf09 | ||
|
|
4551e7ce49 | ||
|
|
064bc3ecbc | ||
|
|
cf38a4c470 | ||
|
|
aacc79a3a3 | ||
|
|
9864bf703d | ||
|
|
289a42f050 | ||
|
|
ade1e79b37 | ||
|
|
2415724d5f | ||
|
|
5463177f1f | ||
|
|
4efd751eda | ||
|
|
2337efc3b1 | ||
|
|
b942a25a45 | ||
|
|
beab9a9696 | ||
|
|
177dbc7be0 | ||
|
|
f2e71edcbd | ||
|
|
fad6e5a5bc | ||
|
|
52f6c437fe | ||
|
|
80a8be6319 | ||
|
|
043d70fcdf | ||
|
|
4f7e958969 | ||
|
|
53143910a1 | ||
|
|
95656cd7f3 | ||
|
|
d8f79b263d | ||
|
|
51da8552c3 | ||
|
|
7e42cb61f7 | ||
|
|
6c038680f9 | ||
|
|
291a908f19 | ||
|
|
b264a03f89 | ||
|
|
7472ede32a | ||
|
|
b5065e462b | ||
|
|
8dd799b4bd | ||
|
|
a38520c90d | ||
|
|
3050ae57c0 | ||
|
|
01205f772c | ||
|
|
06ad5be3af | ||
|
|
2fe3829e5e | ||
|
|
a0c8b9bc68 | ||
|
|
0406b1facf | ||
|
|
65dbee01e5 | ||
|
|
b1080f7c9a | ||
|
|
7bfd58d41f | ||
|
|
3851c6aae2 | ||
|
|
ae03fa7d8e | ||
|
|
8a14dd25a9 | ||
|
|
e0bea7d541 | ||
|
|
534a8a05f3 | ||
|
|
f5b8a26d9a | ||
|
|
cf51f7fb65 | ||
|
|
4d1f3d3cd0 | ||
|
|
f70b87b4c5 | ||
|
|
0e26355348 | ||
|
|
246ea56eab | ||
|
|
7c1bba315b | ||
|
|
9395cad379 | ||
|
|
c5b2e85b47 | ||
|
|
38f8087281 | ||
|
|
e3fa7d021e | ||
|
|
a1813e2b2d | ||
|
|
2e62458eef | ||
|
|
bb9e5565f2 | ||
|
|
29102befa6 | ||
|
|
9d1145598a | ||
|
|
065e466f1a | ||
|
|
3ac00f32af | ||
|
|
21bb852750 | ||
|
|
83bab78bda | ||
|
|
894ec46ef4 | ||
|
|
4eb1d3eb1b | ||
|
|
945423e83a | ||
|
|
9fd33c0b96 | ||
|
|
3c09f2d2bd | ||
|
|
7b4bf6a22c | ||
|
|
b5b77f6367 | ||
|
|
5a8097a4d5 | ||
|
|
9cdf6fb64b | ||
|
|
a137223b4f | ||
|
|
52e1ce9518 | ||
|
|
8127a34f98 | ||
|
|
2dcb8b674f | ||
|
|
1e3b1b6e47 | ||
|
|
9cdaae94cc | ||
|
|
316e74be74 | ||
|
|
af69c4f4f7 | ||
|
|
ad9648a215 | ||
|
|
1576f3319e | ||
|
|
8ac90316d9 | ||
|
|
35ba5c826d | ||
|
|
4f4ffa98b5 | ||
|
|
b7d92c3e03 | ||
|
|
4ecf939452 | ||
|
|
7ef6b05ef1 | ||
|
|
695f95aad1 | ||
|
|
2a6ea6d7a7 | ||
|
|
f5e0ff2170 | ||
|
|
814d176b86 | ||
|
|
3955b31362 | ||
|
|
4b3fb5a01c | ||
|
|
67abd4cd47 | ||
|
|
58f4af7973 | ||
|
|
99befd3a15 | ||
|
|
3acda85c2b | ||
|
|
dbb69797cf | ||
|
|
2910880b15 | ||
|
|
8b5f0abef1 | ||
|
|
10b5327b19 | ||
|
|
4ba1eb26fa | ||
|
|
444f6427b8 | ||
|
|
a173e07eec | ||
|
|
3de85777de | ||
|
|
f4c5314890 | ||
|
|
1225ad58bd | ||
|
|
951fdeba67 | ||
|
|
327b46cced | ||
|
|
80d301257c | ||
|
|
0e59182945 | ||
|
|
7270d5ce26 | ||
|
|
a142d419d2 | ||
|
|
23cf63f550 | ||
|
|
13ee90bbd4 | ||
|
|
754d6c3abd | ||
|
|
c6f6e81238 | ||
|
|
7803a1a28a | ||
|
|
3d647b9a98 | ||
|
|
090a7f38be | ||
|
|
8ad47a13e5 | ||
|
|
497cc6bfaf | ||
|
|
d5be114c07 | ||
|
|
6e43a4ccce | ||
|
|
a07dcfd850 | ||
|
|
321511a5be | ||
|
|
c5297b9fd9 | ||
|
|
7e00076586 | ||
|
|
9a8ba19b73 | ||
|
|
41e776f9db | ||
|
|
5c2d4a6bdd | ||
|
|
83b709401c | ||
|
|
3590fffeae | ||
|
|
5e2e87cc8d | ||
|
|
b1bdba7db5 | ||
|
|
e3d342df96 | ||
|
|
ff54a74b4d | ||
|
|
ccf65be0a4 | ||
|
|
7dfef13224 | ||
|
|
0b85e53af2 | ||
|
|
26cfb21c00 | ||
|
|
b7acdbcb4c | ||
|
|
6e1e9caa32 | ||
|
|
f71725de6e | ||
|
|
26fe6da93b | ||
|
|
8d4ac69175 | ||
|
|
4f5a6a33b4 | ||
|
|
ec8ee4404b | ||
|
|
e47b5d4e6c | ||
|
|
494c40fd98 | ||
|
|
d3b414724b | ||
|
|
38181fbc74 | ||
|
|
8847e61fca | ||
|
|
95b84adb9b | ||
|
|
b34d161703 | ||
|
|
d88b3d3d5d | ||
|
|
f2fb9039bd | ||
|
|
a28b32aa45 | ||
|
|
1ba47e7af9 | ||
|
|
9359498b06 | ||
|
|
553082e24a | ||
|
|
dc28a9c0c1 | ||
|
|
1faef62d59 | ||
|
|
0d0d5e7ee3 | ||
|
|
4f567d0f81 | ||
|
|
f23d923fd3 | ||
|
|
10d6d8b2ae | ||
|
|
358e08b95d | ||
|
|
e181eda253 | ||
|
|
7d3f5d7ac1 | ||
|
|
37c7a695a2 | ||
|
|
07f107ae20 | ||
|
|
5c14b3be6d | ||
|
|
1dc15ec1bc | ||
|
|
6a9ed44088 | ||
|
|
bdb0620529 | ||
|
|
be9ea07e87 | ||
|
|
4cf14e9f85 | ||
|
|
d02b2c4308 | ||
|
|
1687a9eb94 | ||
|
|
344c6a3725 | ||
|
|
f966dad306 | ||
|
|
887f41c062 | ||
|
|
4b1350e467 | ||
|
|
22a0c57746 | ||
|
|
fec571f5b0 | ||
|
|
976285ccbc | ||
|
|
9b3b7ad22e | ||
|
|
1b8ac7c6b5 | ||
|
|
bd2db87237 | ||
|
|
df3ca59116 | ||
|
|
3ca4509ae9 | ||
|
|
d531926246 | ||
|
|
357fdb60b6 | ||
|
|
b6f855cb9b | ||
|
|
b6646310e8 | ||
|
|
070da3c08f | ||
|
|
6b7f6369ec | ||
|
|
309e3ce4f9 | ||
|
|
8a4eb8ed45 | ||
|
|
eee70dcf8e | ||
|
|
c0c885a1f3 | ||
|
|
a7488672bf | ||
|
|
c1312cab1f | ||
|
|
8c833d375a | ||
|
|
18f14ae23d | ||
|
|
98adcdd466 | ||
|
|
a2bd47c567 | ||
|
|
7b3c308eb0 | ||
|
|
1be1d3cfb8 | ||
|
|
b970469df9 | ||
|
|
80a324386b | ||
|
|
163518778c | ||
|
|
7fd1ce4dc3 | ||
|
|
c78ee11c41 | ||
|
|
4435e3b269 | ||
|
|
b96a0dba90 | ||
|
|
30dfc00a54 | ||
|
|
fe5979cfdb | ||
|
|
a1f7987ad8 | ||
|
|
ac269a8f68 | ||
|
|
35944744f8 | ||
|
|
4b1c0bd1e7 | ||
|
|
b7ff86fa2b | ||
|
|
2c27e4ee76 | ||
|
|
6ac9e67bd7 | ||
|
|
8726a6b6ed | ||
|
|
2f26069a41 | ||
|
|
d6c155ff47 | ||
|
|
15360e5e51 | ||
|
|
e587a56fc0 | ||
|
|
113531432a | ||
|
|
bfa74c2649 | ||
|
|
6bb215f56c | ||
|
|
8b37844e5f | ||
|
|
1445e62312 | ||
|
|
4781ff88fd | ||
|
|
c28e15c682 | ||
|
|
fe0585ec91 | ||
|
|
18c0b49f3d | ||
|
|
5d69c956ee | ||
|
|
93aa22ea08 | ||
|
|
b7c6bc20be | ||
|
|
9bb4a95e08 | ||
|
|
0966ddafaa | ||
|
|
c073625fb9 | ||
|
|
85dd4bfb8d | ||
|
|
5ae34aa8e1 | ||
|
|
0eb8414750 | ||
|
|
09717d3fc8 | ||
|
|
81a3246a56 | ||
|
|
4c8fbe9abf | ||
|
|
c0d448f778 | ||
|
|
16e9a9eaef | ||
|
|
0d7446c134 | ||
|
|
a4752673bb | ||
|
|
9a0d5c4ed8 | ||
|
|
d85bc18178 | ||
|
|
f0e66d8c76 | ||
|
|
af114358c8 | ||
|
|
ffe17a8197 | ||
|
|
2459e1e268 | ||
|
|
a34a4af36a | ||
|
|
bf51f05a50 | ||
|
|
5d94ff5974 | ||
|
|
0d4ddfa743 | ||
|
|
56c9899832 | ||
|
|
7b3fba1ad5 | ||
|
|
700e3b685a | ||
|
|
3e1caa6185 | ||
|
|
50eafb7668 | ||
|
|
25559ac02e | ||
|
|
51a87fa652 | ||
|
|
b2dad0342f | ||
|
|
a5abce7982 | ||
|
|
de3f22b288 | ||
|
|
be5cc378c8 | ||
|
|
4afc4aed73 | ||
|
|
a4e1ac7952 | ||
|
|
f84d2b4d36 | ||
|
|
b4c7876e4b | ||
|
|
4207ef3d27 | ||
|
|
b3572269a4 | ||
|
|
097d449cc1 | ||
|
|
7f44713487 | ||
|
|
b7a6b78e0c | ||
|
|
855a9eff76 | ||
|
|
8e34e75100 | ||
|
|
4be60ac155 | ||
|
|
5ec4501b9d | ||
|
|
e80f566a14 | ||
|
|
1729918777 | ||
|
|
cef290c6b4 | ||
|
|
539e34b5df | ||
|
|
765683403f | ||
|
|
cca9fca894 | ||
|
|
2b403db811 | ||
|
|
03e7b7c95f | ||
|
|
1a05a90f1c | ||
|
|
dcea109bb5 | ||
|
|
d46a573bbe | ||
|
|
7d0d19708a | ||
|
|
09f14efade | ||
|
|
87753cda49 | ||
|
|
66f6f43056 | ||
|
|
86f059dcfb | ||
|
|
5931d43a36 | ||
|
|
8475a0df2f | ||
|
|
ccc4c9c02c | ||
|
|
16edb15600 | ||
|
|
9e7534a46e | ||
|
|
737dddaec0 | ||
|
|
b5c90c9b05 | ||
|
|
c3ecd552f5 | ||
|
|
56f0227c92 | ||
|
|
dcb5a4df01 | ||
|
|
fd64213c2f | ||
|
|
fc2c06754c | ||
|
|
7ec200f4d1 | ||
|
|
e53f139925 | ||
|
|
61599ceb7b | ||
|
|
6f8e3f106a | ||
|
|
8fd676f73e | ||
|
|
98a8103a3b | ||
|
|
94043b1150 | ||
|
|
1b02ad5e8a | ||
|
|
4897587615 | ||
|
|
8e2f57c82e | ||
|
|
c3323b1902 | ||
|
|
59c063dfd3 | ||
|
|
8c16696f47 | ||
|
|
f68950db67 | ||
|
|
710e370c34 | ||
|
|
7bb6d76d14 | ||
|
|
2467f814a8 | ||
|
|
a654ef9ee6 | ||
|
|
c1688733c1 | ||
|
|
cd73a733c7 | ||
|
|
8ef8e949bd | ||
|
|
49111a63e6 | ||
|
|
ee4ecf5155 | ||
|
|
3478253e5a | ||
|
|
6ddc59dadf | ||
|
|
dc8688b8dc | ||
|
|
865e495188 | ||
|
|
d3c0ed007e | ||
|
|
0dc79376e7 | ||
|
|
3ccbed1022 | ||
|
|
377e43fbb9 | ||
|
|
1f2b042b95 | ||
|
|
fd49ba6c18 | ||
|
|
facfa19cdd | ||
|
|
3347ced899 | ||
|
|
592686bee9 | ||
|
|
f471a293ea | ||
|
|
c688166066 | ||
|
|
5dcd2710d4 | ||
|
|
16d8383625 | ||
|
|
6b49fd7483 | ||
|
|
f10985fc50 | ||
|
|
edeac97773 | ||
|
|
40498ffdd0 | ||
|
|
fd884a3cd2 | ||
|
|
1887629c5c | ||
|
|
d3be5b2725 | ||
|
|
2e973684c0 | ||
|
|
ab909fc4c2 | ||
|
|
4cd5220d27 | ||
|
|
24d47a6e07 | ||
|
|
8a66584db4 | ||
|
|
186f433e40 | ||
|
|
736a40fec9 | ||
|
|
4245400ae4 | ||
|
|
629bba6b35 | ||
|
|
f6f2a9e4be | ||
|
|
8bfcae65ef | ||
|
|
96cf615e9d | ||
|
|
e9b3e1d031 | ||
|
|
7167cde020 | ||
|
|
2a80a4c521 | ||
|
|
83f11b1c9b | ||
|
|
a00e7f0f5e | ||
|
|
e1607f5705 | ||
|
|
cce931f27d | ||
|
|
34089c93bb | ||
|
|
beb61ef429 | ||
|
|
72aff74798 | ||
|
|
8e715af480 | ||
|
|
2730842559 | ||
|
|
cac269cf91 | ||
|
|
249036ada0 | ||
|
|
18d80b9e8f | ||
|
|
b2d8e0b476 | ||
|
|
225a652021 | ||
|
|
38b1d96750 | ||
|
|
2f069ad3e2 | ||
|
|
a3dbe03e80 | ||
|
|
f4bef25b5e | ||
|
|
ebf7d22503 | ||
|
|
9296d9deb8 | ||
|
|
7b95a25adc | ||
|
|
82d6cfa7fc | ||
|
|
48750d5fc7 | ||
|
|
4f0258ec09 | ||
|
|
db4d0d307a | ||
|
|
2baf22e184 | ||
|
|
21d5aead47 | ||
|
|
f40c9b83df | ||
|
|
b9e082b811 | ||
|
|
0bfa601a9f | ||
|
|
e356420123 | ||
|
|
e8f85cba0f | ||
|
|
1aba99b1e7 | ||
|
|
12815d7cd6 | ||
|
|
9deb76ce3e | ||
|
|
c98676068e | ||
|
|
b534f74bf4 | ||
|
|
411e9b0c45 | ||
|
|
3fa1879f6a | ||
|
|
d30cf22c12 | ||
|
|
557b6cfd3f | ||
|
|
84bf03b365 | ||
|
|
34342bcd19 | ||
|
|
5322a86313 | ||
|
|
1dc50e21c4 | ||
|
|
1eddbb1b47 | ||
|
|
bb8591cf54 | ||
|
|
a7913a62a9 | ||
|
|
6d1b37b3da | ||
|
|
34750cc738 | ||
|
|
af677c4e1d | ||
|
|
298076e00f | ||
|
|
0d2cdd9773 | ||
|
|
eb5d3b5a7c | ||
|
|
7663775971 | ||
|
|
fe46572f2b | ||
|
|
a6d4d3eeac | ||
|
|
62f97f1817 | ||
|
|
253ff7b2ad | ||
|
|
c274e51654 | ||
|
|
1239e48304 | ||
|
|
52313cbac9 | ||
|
|
071218a201 | ||
|
|
f0d6cc23ae | ||
|
|
ceefe2e248 | ||
|
|
9a2aed7d7a | ||
|
|
a91a75355d | ||
|
|
01acbfa1a5 | ||
|
|
49b2896a3b | ||
|
|
39af394a1c | ||
|
|
5c7dcc6c33 | ||
|
|
6c5ea2af27 | ||
|
|
93e084e097 | ||
|
|
1a61bcecfc | ||
|
|
3d9fb701e2 | ||
|
|
19a568a983 | ||
|
|
70c3f6a8dd | ||
|
|
bb999d8213 | ||
|
|
121197bc87 | ||
|
|
d5dd8e0fdc | ||
|
|
c368800877 | ||
|
|
6eb58549a9 | ||
|
|
95def48071 | ||
|
|
2ee6c33412 | ||
|
|
be7ce435c0 | ||
|
|
f4252f8672 | ||
|
|
f4f961c4ea | ||
|
|
e2fe03df8e | ||
|
|
19b284c214 | ||
|
|
6b3e3095ea | ||
|
|
fd2aad1d9b | ||
|
|
d239fc5d04 | ||
|
|
ec4da97a35 | ||
|
|
bb48ccedd7 | ||
|
|
afc0dfb141 | ||
|
|
8e87223195 | ||
|
|
be1cece69b | ||
|
|
45be6d6645 | ||
|
|
d4db35c125 | ||
|
|
94c6a5eeab | ||
|
|
35292e794a | ||
|
|
c2043a7f94 | ||
|
|
e752588e8d | ||
|
|
8f30dbd4f0 | ||
|
|
29eb80dbd1 | ||
|
|
6cf6f9a21e | ||
|
|
6af6a2bbe8 | ||
|
|
2576ac1c76 | ||
|
|
bfeea8e6b7 | ||
|
|
2f89f2311c | ||
|
|
75e5967afd | ||
|
|
1003628103 | ||
|
|
3451e888b9 | ||
|
|
12dc142a28 | ||
|
|
cb80670885 | ||
|
|
c189687188 | ||
|
|
595016d393 | ||
|
|
23550fe5de | ||
|
|
8420de971f | ||
|
|
17f8f32b2e | ||
|
|
7676f40218 | ||
|
|
2de62cb06f | ||
|
|
be1df3ca0a | ||
|
|
543ab6f331 | ||
|
|
2b6f7ef2a9 | ||
|
|
0d37f8564e | ||
|
|
6cd2536048 | ||
|
|
60fccf4e37 | ||
|
|
8a8028394f | ||
|
|
6a06667cc0 | ||
|
|
25bf23105d | ||
|
|
2544c78083 | ||
|
|
40b9b6f6dc | ||
|
|
f5e1beddf1 | ||
|
|
d4076c9a8a | ||
|
|
106695d45e | ||
|
|
f71b3f48a1 | ||
|
|
aa8dd932c1 | ||
|
|
adbe3eefb6 | ||
|
|
33f69c0546 | ||
|
|
6c3a87a599 | ||
|
|
13cc010e38 | ||
|
|
e99bf99829 | ||
|
|
2e7dcc1e2a | ||
|
|
b85a036e4a | ||
|
|
7885264b29 | ||
|
|
73dd450147 | ||
|
|
96efa990f9 | ||
|
|
4e0aee9408 | ||
|
|
27d509cfe9 | ||
|
|
ade8e47a8c | ||
|
|
ca52c963c7 | ||
|
|
17acdb5acf | ||
|
|
f6433211ae | ||
|
|
0ec4c66fba | ||
|
|
1faa9d6fd5 | ||
|
|
23d64e720d | ||
|
|
b8b56248bd | ||
|
|
33929117f9 | ||
|
|
2b1673c9c8 | ||
|
|
702f549a6a | ||
|
|
428741d7cf | ||
|
|
6fa624cf8c | ||
|
|
5f60188b8a | ||
|
|
75a6fdeb58 | ||
|
|
5f3fa92062 | ||
|
|
66077ae48b | ||
|
|
92637303db | ||
|
|
811dfd710b | ||
|
|
b08dc2cadb | ||
|
|
f7c5a097e3 | ||
|
|
5eb3102cd1 | ||
|
|
05825a8a9f | ||
|
|
24353c4372 | ||
|
|
e89ea07626 | ||
|
|
b99c95ba46 | ||
|
|
9432bfe90c | ||
|
|
37bf6da9c8 | ||
|
|
b3ebbd60a2 | ||
|
|
e942394bdb | ||
|
|
4adfcd4fd7 | ||
|
|
c10196afc0 | ||
|
|
49746d1dce | ||
|
|
d46e235c2a | ||
|
|
ee44677d7e | ||
|
|
20057aee2e | ||
|
|
7119679080 | ||
|
|
d869b51a57 | ||
|
|
dbacc81af7 | ||
|
|
b233c13dca | ||
|
|
464be27479 | ||
|
|
d736ac51c0 | ||
|
|
e8b295ff7d | ||
|
|
4a4490d5f1 | ||
|
|
46313be2f5 | ||
|
|
723bfe42e7 | ||
|
|
e35c7dcd72 | ||
|
|
fa83a0573e | ||
|
|
7b97371ab1 | ||
|
|
b17e32baa7 | ||
|
|
cd52b9f0da | ||
|
|
c3d74ffe48 | ||
|
|
a231a96841 | ||
|
|
93b61bf0d3 | ||
|
|
06d39bd303 | ||
|
|
52177b1f60 | ||
|
|
566f7b5e58 | ||
|
|
c8c47768c7 | ||
|
|
62ff567c47 | ||
|
|
ee400f9552 | ||
|
|
9ac7629e2c | ||
|
|
d72ca96a43 | ||
|
|
d0dcb3b554 | ||
|
|
e139e49826 | ||
|
|
3838745fdb | ||
|
|
06a5c70f4d | ||
|
|
62af3fb7b9 | ||
|
|
db302a1055 | ||
|
|
847c91e568 | ||
|
|
2646af106b | ||
|
|
7261b4556b | ||
|
|
071e3cf007 | ||
|
|
164184b484 | ||
|
|
8b6e87abee | ||
|
|
45197b188e | ||
|
|
559553b169 | ||
|
|
84ec4068de | ||
|
|
aea87be19e | ||
|
|
9f14744d16 | ||
|
|
1dc8c1dbc8 | ||
|
|
e9812c53cb | ||
|
|
ed98565963 | ||
|
|
1d3233612a | ||
|
|
8362a34cef | ||
|
|
edd16d978f | ||
|
|
4356356305 | ||
|
|
cb88135220 | ||
|
|
498a0fe795 | ||
|
|
0ca1b6afcf | ||
|
|
d3c9f3d6f8 | ||
|
|
df59ca1a45 | ||
|
|
9d84442409 | ||
|
|
5ab9d72e45 | ||
|
|
6060e7ed96 | ||
|
|
7ca7f7a725 | ||
|
|
355b3d3057 | ||
|
|
d5bdf5f89c | ||
|
|
17de7e0f1c | ||
|
|
2cea484428 | ||
|
|
fb3e19ae50 | ||
|
|
99db7fb222 | ||
|
|
49d0272627 | ||
|
|
da30242640 | ||
|
|
811edcde18 | ||
|
|
4934e6471b | ||
|
|
9dbd6659dc | ||
|
|
5ddad4cdb3 | ||
|
|
338c2da24f | ||
|
|
b5cafc0b83 | ||
|
|
c50ced6cc2 | ||
|
|
f4783bda27 | ||
|
|
b55507c8a7 | ||
|
|
827a805966 | ||
|
|
e23ba31eb9 | ||
|
|
02c6fde11e | ||
|
|
d003f6e125 | ||
|
|
1dfff2487f | ||
|
|
4ff9cd39c5 | ||
|
|
9c4ffcc250 | ||
|
|
6b5a04cf83 | ||
|
|
55e61c092e | ||
|
|
de6ab3de22 | ||
|
|
5e1eb58e5a | ||
|
|
d892a4dc23 | ||
|
|
496ea65f39 | ||
|
|
6577b15d08 | ||
|
|
f2e35fad27 | ||
|
|
81c48aa43d | ||
|
|
0cfa9b52ae | ||
|
|
48b92c163f | ||
|
|
b7575b39c4 | ||
|
|
ae2f002b44 | ||
|
|
89c312691e | ||
|
|
1d23affbc5 | ||
|
|
26ffaa263b | ||
|
|
ca5e6160b7 | ||
|
|
6d60ff6ea1 | ||
|
|
43ae26f146 | ||
|
|
3e01f70468 | ||
|
|
b9f1dd7691 | ||
|
|
a7bed4fc7c | ||
|
|
7ca49dc91d | ||
|
|
645ee8a42a | ||
|
|
115dd6f095 | ||
|
|
0e03165467 | ||
|
|
6574f4106e | ||
|
|
8e7fcd9ee1 | ||
|
|
ad63e1e698 | ||
|
|
d784526dae | ||
|
|
79d480e1e7 | ||
|
|
b3b2ba31f7 | ||
|
|
7f78bc3c6d | ||
|
|
f508f30fb6 | ||
|
|
d20a05161a | ||
|
|
6769ab2797 | ||
|
|
85867cbe94 | ||
|
|
5e8d3988a2 | ||
|
|
1cd0a08575 | ||
|
|
efd71af2a1 | ||
|
|
2ea80c29fa | ||
|
|
e3fc0d5e78 | ||
|
|
33f42aacca | ||
|
|
c85bf83e88 | ||
|
|
060b6ce148 | ||
|
|
35618b4712 | ||
|
|
cd2e99e980 | ||
|
|
0359ae8f40 | ||
|
|
972d39234f | ||
|
|
798349fce6 | ||
|
|
9612fda886 | ||
|
|
4b217efb84 | ||
|
|
555cfb3059 | ||
|
|
c0d1d6926c | ||
|
|
fca8fcec3e | ||
|
|
6844d5dcad | ||
|
|
d759e97166 | ||
|
|
cbfc737d79 | ||
|
|
ab64bf6fb1 | ||
|
|
0b0d20021c | ||
|
|
932a6f6b77 | ||
|
|
1318760ad2 | ||
|
|
15a403a98d | ||
|
|
a92b7c1b16 | ||
|
|
0c54013ee3 | ||
|
|
ca5d1e7a8d | ||
|
|
40a39e2270 | ||
|
|
982530b186 | ||
|
|
fadc08445a | ||
|
|
783381c163 | ||
|
|
5f26bee7c8 | ||
|
|
2be57d0833 | ||
|
|
6e6748f051 | ||
|
|
a8d544d9b3 | ||
|
|
5f1490e1bd | ||
|
|
2c3e557b5c | ||
|
|
08df4b8971 | ||
|
|
11f58ea896 | ||
|
|
15f3b4b6d1 | ||
|
|
35270e50c2 | ||
|
|
8c975657e7 | ||
|
|
03cb3b9db1 | ||
|
|
19ad942739 | ||
|
|
3cf452b923 | ||
|
|
2a6f9aa155 | ||
|
|
570455b21d | ||
|
|
dccdf9e66c | ||
|
|
dd4d5bb1e0 | ||
|
|
842e4aaa0d | ||
|
|
ebb09cd9c4 | ||
|
|
9a6df07d3d | ||
|
|
c59c429a69 | ||
|
|
69f9d0c916 | ||
|
|
56edbe3804 | ||
|
|
94c4a18541 | ||
|
|
bdcf8d626d | ||
|
|
576b40b1b0 | ||
|
|
954575a19d | ||
|
|
47bbe36725 | ||
|
|
1a8f7e830c | ||
|
|
dfc85b7291 | ||
|
|
1457b80617 | ||
|
|
dba40b35f2 | ||
|
|
e9d95f1a25 | ||
|
|
67e40a2b16 | ||
|
|
25f5f14d35 | ||
|
|
dfda9cc007 | ||
|
|
e39b29fc48 | ||
|
|
4c17ba4fc0 | ||
|
|
4511f7ac50 | ||
|
|
b9f76f11bb | ||
|
|
17841a20e3 | ||
|
|
d90d40b5d1 | ||
|
|
d2e6a0583a | ||
|
|
b2c9277e66 | ||
|
|
31c332af93 | ||
|
|
90af60a6ef | ||
|
|
80c7566203 | ||
|
|
efb1fdbec8 | ||
|
|
bada8cc259 | ||
|
|
c3a076176e | ||
|
|
2cda3070d5 | ||
|
|
728bed8c98 | ||
|
|
6e72ea7442 | ||
|
|
a4aac27fd3 | ||
|
|
5b8816dcb7 | ||
|
|
fc0df97278 | ||
|
|
592658e874 | ||
|
|
5a70e42428 | ||
|
|
e4caa98901 | ||
|
|
c211a7c685 | ||
|
|
7876c078bc | ||
|
|
aedadfc779 | ||
|
|
2046a6b9e5 | ||
|
|
d1d53b2bbf | ||
|
|
950aa1c743 | ||
|
|
a9572bf88a | ||
|
|
5a93f50394 | ||
|
|
60af1cbcc2 | ||
|
|
8952ef933b | ||
|
|
b350d5da59 | ||
|
|
6df3bf3644 | ||
|
|
35840a2c5c | ||
|
|
090b89cc76 | ||
|
|
f05d47ddd6 | ||
|
|
fcfd4bef2d | ||
|
|
18dc8fbc26 | ||
|
|
d9ceee1c75 | ||
|
|
097281f459 | ||
|
|
087748c48e | ||
|
|
e35187741b | ||
|
|
574e911375 | ||
|
|
ce945bd2f0 | ||
|
|
8efa6f407d | ||
|
|
85bd4621db | ||
|
|
6c3759d78d | ||
|
|
4af08a19f8 | ||
|
|
c14650caec | ||
|
|
c7a9e07909 | ||
|
|
185baf036b | ||
|
|
3523613826 | ||
|
|
782ade7223 | ||
|
|
ba40eccc90 | ||
|
|
4191741fb6 | ||
|
|
7a52f44bd4 | ||
|
|
efa5485744 | ||
|
|
c81ac51e5c | ||
|
|
fd17cf2e3c | ||
|
|
d4b0999415 | ||
|
|
03f8ec89db | ||
|
|
f633ab688b | ||
|
|
808621ab22 | ||
|
|
6ed5feda2b | ||
|
|
964066c0de | ||
|
|
a913e93667 | ||
|
|
a7b99fc463 | ||
|
|
6f252f4704 | ||
|
|
b596c34bed | ||
|
|
b0cd96478c | ||
|
|
387ec712e6 | ||
|
|
f2a99d7d74 | ||
|
|
8b6b15dccc | ||
|
|
bbb72b7b6b | ||
|
|
785bad388b | ||
|
|
cf10df6c68 | ||
|
|
5b55dcbfbb | ||
|
|
e7dbbd16a5 | ||
|
|
62f0457961 | ||
|
|
8879b57b73 | ||
|
|
e49a6feabb | ||
|
|
feb2dd2835 | ||
|
|
5e34f3dc01 | ||
|
|
0031d76f2a | ||
|
|
00ee738fdd | ||
|
|
8d0a823124 | ||
|
|
9729df1756 | ||
|
|
cdb419d65e | ||
|
|
d6f9a41539 | ||
|
|
1daa258b8a | ||
|
|
560c257bd0 | ||
|
|
d7aae417b1 | ||
|
|
c39858aac0 | ||
|
|
818aed35e2 | ||
|
|
2ed524f07e | ||
|
|
5f1eefd03f | ||
|
|
522b4d7576 | ||
|
|
d6dcb08407 | ||
|
|
806c756a2d | ||
|
|
2494701347 | ||
|
|
1c10272e15 | ||
|
|
0badcf381a | ||
|
|
35558e6bd7 | ||
|
|
7659747e6f | ||
|
|
53189fb2d7 | ||
|
|
450c178d77 | ||
|
|
a20eb6df1b | ||
|
|
d73425061a | ||
|
|
0051d5ac88 | ||
|
|
76920413d9 | ||
|
|
44d9a8ba4e | ||
|
|
38dc548a87 | ||
|
|
dca6386234 | ||
|
|
2a701a1aac | ||
|
|
0cb297abc9 | ||
|
|
821a23535b | ||
|
|
bc80599178 | ||
|
|
941374b573 | ||
|
|
1886893d66 | ||
|
|
7291772b1f | ||
|
|
8e28721057 | ||
|
|
8d2120566e | ||
|
|
67341c4cbe | ||
|
|
f8188ddfee | ||
|
|
29c546b426 | ||
|
|
0d259b898b | ||
|
|
c136b80af5 | ||
|
|
83b87d53c1 | ||
|
|
1e99f1ee41 | ||
|
|
d7fe136d54 | ||
|
|
cd7a0f829f | ||
|
|
cf3f1ef284 | ||
|
|
a737864a1c | ||
|
|
c68a6805b3 | ||
|
|
bd3d5a17b4 | ||
|
|
d4b577114b | ||
|
|
713effb6e4 | ||
|
|
b92e2ab6b1 | ||
|
|
05baf94b43 | ||
|
|
a76288b99a | ||
|
|
557e95c0a3 | ||
|
|
0a83fa90bb | ||
|
|
daeb143177 | ||
|
|
9f752120c0 | ||
|
|
80a1e972fc | ||
|
|
5e65d48ffa | ||
|
|
752ef08141 | ||
|
|
070e0e8b0a | ||
|
|
2ed0728cef | ||
|
|
a79b9e9d4a | ||
|
|
24572daccc | ||
|
|
1770563fff | ||
|
|
4cd96483f6 | ||
|
|
8f1783b8a7 | ||
|
|
be72eaa327 | ||
|
|
61bded1d82 | ||
|
|
4b3937373a | ||
|
|
08bf0907d4 | ||
|
|
eb044f8787 | ||
|
|
8d0c77403c | ||
|
|
601062455c | ||
|
|
5be788ba36 | ||
|
|
281559b31b | ||
|
|
ef1aa4e5e9 | ||
|
|
7b7ac04895 | ||
|
|
60f5b2b275 | ||
|
|
c0f9d7fdb7 | ||
|
|
fc4d6f73a6 | ||
|
|
295169f9d9 | ||
|
|
1a3797a699 | ||
|
|
977e106924 | ||
|
|
8d76d4016d | ||
|
|
9f92657f76 | ||
|
|
9f341f9ce5 | ||
|
|
2098871509 | ||
|
|
3d00c86f4c | ||
|
|
90037b85d1 | ||
|
|
6ec145d4b4 | ||
|
|
40a58c392f | ||
|
|
9733cd59bb | ||
|
|
b3caf7bfa8 | ||
|
|
23fbb89805 | ||
|
|
bd1adaf7ea | ||
|
|
0c9e23fc0c | ||
|
|
f091ce64ac | ||
|
|
55a69ebea6 | ||
|
|
d6b3850562 | ||
|
|
80197cf493 | ||
|
|
8ee564c216 | ||
|
|
5bfeb60a83 | ||
|
|
1ab4a2f870 | ||
|
|
2a627059ac | ||
|
|
3f739acf24 | ||
|
|
d3454ceb94 | ||
|
|
59695c05b1 | ||
|
|
f0969c9692 | ||
|
|
18dd8154e2 | ||
|
|
4c58797607 | ||
|
|
d620f1e529 | ||
|
|
e0b436f8e1 | ||
|
|
e99d1e97de | ||
|
|
1fb74b4fa2 | ||
|
|
473f6ea9f0 | ||
|
|
0b04c52119 | ||
|
|
8383945acc | ||
|
|
fce9d51122 | ||
|
|
7c3ee84295 | ||
|
|
a8db25f48b | ||
|
|
20705ca311 | ||
|
|
af33c6b549 | ||
|
|
2b8775dff7 | ||
|
|
ea81dd9e2e | ||
|
|
7dcb102733 | ||
|
|
aa0e32060e | ||
|
|
2e8f37aca5 | ||
|
|
195d769c4b | ||
|
|
70f08b5baa | ||
|
|
9e987ac6a2 | ||
|
|
de03f172ad | ||
|
|
0078944486 | ||
|
|
d3f796ac59 | ||
|
|
3d38080d54 | ||
|
|
fe07962f9c | ||
|
|
938a72b2db | ||
|
|
a8827b1ed6 | ||
|
|
ff40cd71ac | ||
|
|
39626d8cfd | ||
|
|
67ad29e716 | ||
|
|
8bbf9b13af | ||
|
|
cb21851c74 | ||
|
|
8d611bec6e | ||
|
|
1de1dc7314 | ||
|
|
aca79af7de | ||
|
|
da6eea9b38 | ||
|
|
dcf7310b2d | ||
|
|
c2e8ba0fba | ||
|
|
a5360255ba | ||
|
|
5690a2b493 | ||
|
|
ff0429a802 | ||
|
|
46cdc83b81 | ||
|
|
76dfef7117 | ||
|
|
de2aeb9fc2 | ||
|
|
17a5b44205 | ||
|
|
f99e347878 | ||
|
|
f5a0c17322 | ||
|
|
8442c3942d | ||
|
|
15cd35f67f | ||
|
|
459801d6e0 | ||
|
|
2c43d64302 | ||
|
|
fd802db39f | ||
|
|
765754d39d | ||
|
|
f7f6b288eb | ||
|
|
11ee9540bf | ||
|
|
f6319bd706 | ||
|
|
0912015a5c | ||
|
|
4e7575fc7a | ||
|
|
6531a6116d | ||
|
|
9a33561e80 | ||
|
|
88229a0f2a | ||
|
|
120394cc45 | ||
|
|
1adfe0fe18 | ||
|
|
d57c178a62 | ||
|
|
6faa83bc6a | ||
|
|
9fb4e019fa | ||
|
|
74551597b1 | ||
|
|
37c269d0ba | ||
|
|
5d8b526b80 | ||
|
|
83dcc3e061 | ||
|
|
4ed58463f7 | ||
|
|
85b2056dc7 | ||
|
|
94ca911dc1 | ||
|
|
24420c2191 | ||
|
|
59f904d8de | ||
|
|
755f98e768 | ||
|
|
aadc797225 | ||
|
|
5c882bdfa3 | ||
|
|
60f9450594 | ||
|
|
ff52ba7f7b | ||
|
|
0fbcea45d6 | ||
|
|
ca6d430561 | ||
|
|
91601b3bf4 | ||
|
|
cdd70596df | ||
|
|
7e186f9a63 | ||
|
|
a94e117ede | ||
|
|
662cb30372 | ||
|
|
bd3aba5d6a | ||
|
|
29ed6d24bf | ||
|
|
e2c5c20896 | ||
|
|
7c4b6cb0d9 | ||
|
|
aced2904ff | ||
|
|
17eb1fca7c | ||
|
|
2511d1193a | ||
|
|
e9056f5f95 | ||
|
|
a9893ca79a | ||
|
|
f39f7c28f0 | ||
|
|
a807065ccc | ||
|
|
67532e916c | ||
|
|
3920b4dae8 | ||
|
|
d70a335dce | ||
|
|
8001921112 | ||
|
|
d7cb09bd18 | ||
|
|
e11710714c | ||
|
|
5b0bfc298f | ||
|
|
0383f7f19d | ||
|
|
23a43c6e0f | ||
|
|
eb946690d2 | ||
|
|
c090fdbdf1 | ||
|
|
de279099e5 | ||
|
|
6bd8db3c99 | ||
|
|
6176f14141 | ||
|
|
512e54ff85 | ||
|
|
a5aa569fe3 | ||
|
|
e2e593a036 | ||
|
|
9ce0a7b49d | ||
|
|
4ab0d74250 | ||
|
|
b5f85ba77d | ||
|
|
b6ee33c6e1 | ||
|
|
1c69b15c7c | ||
|
|
54cd2bee58 | ||
|
|
5bf02b16a0 | ||
|
|
594cb8507b | ||
|
|
78aba6e4cd | ||
|
|
ccdcdb2a46 | ||
|
|
b121e41ec3 | ||
|
|
05d8e56ffd | ||
|
|
4345c7a712 | ||
|
|
12d5e33dc9 | ||
|
|
6d70a82757 | ||
|
|
47d52d4eca | ||
|
|
4973b0f88a | ||
|
|
d1542bf549 | ||
|
|
2b7727aad1 | ||
|
|
fd775454ca | ||
|
|
8e09a389c4 | ||
|
|
aa3ae01878 | ||
|
|
c123676825 | ||
|
|
d60c22572b | ||
|
|
1d7ce36791 | ||
|
|
34e8baab9a | ||
|
|
a219d774fe | ||
|
|
005042e973 | ||
|
|
d301d69fbf | ||
|
|
34af02caca | ||
|
|
91025d1dd6 | ||
|
|
c9bab31a7f | ||
|
|
2f60e91a9b | ||
|
|
018affe6d0 | ||
|
|
aeb27ccfdb | ||
|
|
939866faab | ||
|
|
98f968f2ee | ||
|
|
864f1a3366 | ||
|
|
f42b10242f | ||
|
|
853134017d | ||
|
|
d3999e06d1 | ||
|
|
0b0b37cffe | ||
|
|
a13f5888d5 | ||
|
|
c8807438ce | ||
|
|
3f106afd00 | ||
|
|
d925057e11 | ||
|
|
bbafb2eb27 | ||
|
|
434bc13812 | ||
|
|
5c592f7dd9 | ||
|
|
9bf1ba2f7e | ||
|
|
724e4a3585 | ||
|
|
f69711fc78 | ||
|
|
04e2520dbb | ||
|
|
7a35fb5403 | ||
|
|
63f97b38eb | ||
|
|
b8541929c8 | ||
|
|
329f17ac7c | ||
|
|
5dcab07c54 | ||
|
|
1f798affb9 | ||
|
|
a2ecdf4249 | ||
|
|
71fdc063bd | ||
|
|
887d78a9ad | ||
|
|
00557a5475 | ||
|
|
e18d27b78a | ||
|
|
228fea4628 | ||
|
|
e64dacb40e | ||
|
|
fff01f24bf | ||
|
|
e55dee3807 | ||
|
|
8c2ce33c0b | ||
|
|
135394f511 | ||
|
|
fe065dc851 | ||
|
|
445c7791a7 | ||
|
|
686ba84128 | ||
|
|
3394c01826 | ||
|
|
d67ea8c7ad | ||
|
|
535046430a | ||
|
|
9aebdff219 | ||
|
|
90da930131 | ||
|
|
fbdc1b1e3d | ||
|
|
e942df755b | ||
|
|
91c8be3628 | ||
|
|
d56c03840b | ||
|
|
d3d5cdf305 | ||
|
|
af43ce73e5 | ||
|
|
84b52e92f4 | ||
|
|
0aa7d11cc9 | ||
|
|
933f7cecae | ||
|
|
8e73e55336 | ||
|
|
55c015c136 | ||
|
|
bde6c6685e | ||
|
|
58387b91f9 | ||
|
|
6f74820cfc | ||
|
|
af72f198ba | ||
|
|
3fc831f9eb | ||
|
|
9f660862ec | ||
|
|
1354671c90 | ||
|
|
1175a226e3 | ||
|
|
358b72bb12 | ||
|
|
6c408c885a | ||
|
|
9cf04dff6a | ||
|
|
6bdcfecbcf | ||
|
|
3f21fe60fc | ||
|
|
b2c290e40e | ||
|
|
bc5b2fa12c | ||
|
|
32a9554c92 | ||
|
|
afc1ed60f7 | ||
|
|
91018f4f24 | ||
|
|
fb086b57a8 | ||
|
|
3fc39a6efb | ||
|
|
6062ac7c37 | ||
|
|
caf7854a3c | ||
|
|
6def0892ea | ||
|
|
1c0744bde6 | ||
|
|
7591e07b7c | ||
|
|
35ab93f484 | ||
|
|
dcf5e52b62 | ||
|
|
aae521d086 | ||
|
|
78e6508e22 | ||
|
|
4d9517f0b4 | ||
|
|
a331aa0221 | ||
|
|
679cabb532 | ||
|
|
7332350e85 | ||
|
|
69f4dda74a | ||
|
|
c19c3bd15a | ||
|
|
76ff92b811 | ||
|
|
4250637e7d | ||
|
|
08d1da106e | ||
|
|
9e31a0536e | ||
|
|
2960d37d71 | ||
|
|
c63af5fc01 | ||
|
|
fc6eff13b5 | ||
|
|
e7ee1ccf45 | ||
|
|
98bf69f8f1 | ||
|
|
0363fbc411 | ||
|
|
e3bc92ae53 | ||
|
|
27e76021e9 | ||
|
|
93dde29979 | ||
|
|
d42dcd60cd | ||
|
|
ade89799f5 | ||
|
|
6e118ce50f | ||
|
|
34be9df773 | ||
|
|
7356a67780 | ||
|
|
f77949ef3b | ||
|
|
26b8b3fc53 | ||
|
|
38cc79a54f | ||
|
|
ec113aefb9 | ||
|
|
913e1570bd | ||
|
|
e2aaf22d5d | ||
|
|
3304589043 | ||
|
|
0247642bb6 | ||
|
|
19f5aa165c | ||
|
|
1756499b11 | ||
|
|
15f9a93c25 | ||
|
|
e99287734b | ||
|
|
8349dde0f1 | ||
|
|
59907ebc0e | ||
|
|
da91d6ac66 | ||
|
|
7548115a0e | ||
|
|
8ca37dd1c7 | ||
|
|
31e9e4bb76 | ||
|
|
84a322ab23 | ||
|
|
707f217b2d | ||
|
|
e6b45a66ec | ||
|
|
b34c40dcf5 | ||
|
|
699ebe2f0b | ||
|
|
e1c6f216c2 | ||
|
|
630b73bfa8 | ||
|
|
877f16e5a5 | ||
|
|
fbe1fa9dcc | ||
|
|
5b65cc55a2 | ||
|
|
97769737d0 | ||
|
|
5b0a5c4050 | ||
|
|
4b9f8e766d | ||
|
|
96002646f1 | ||
|
|
5ef6904ec3 | ||
|
|
2f53da5e7a | ||
|
|
58f1cc0b5f | ||
|
|
98c70b73f2 | ||
|
|
6bd02a3ab5 | ||
|
|
372e7a6cd4 | ||
|
|
211004bb0d | ||
|
|
80d2fff1a1 | ||
|
|
cf3cf413c8 | ||
|
|
e218811ca3 | ||
|
|
a9f2274bd8 | ||
|
|
92179ff990 | ||
|
|
4aac210a83 | ||
|
|
245e3122df | ||
|
|
ffc5fa3a2b | ||
|
|
f5042cce34 | ||
|
|
712c67b4ae | ||
|
|
5dcfb8ad66 | ||
|
|
673ff5eb2c | ||
|
|
92fc3f07ba | ||
|
|
cff90cf3f9 | ||
|
|
a33c53a36b | ||
|
|
2370d4fa02 | ||
|
|
f128d904a5 | ||
|
|
fb1039f2ab | ||
|
|
923ce98e42 | ||
|
|
8e935b58a2 | ||
|
|
c93e972543 | ||
|
|
1cb66f5262 | ||
|
|
648e82f05d | ||
|
|
1dbe60b8b7 | ||
|
|
9631fa7407 | ||
|
|
9befc682ee | ||
|
|
fbeb674479 | ||
|
|
af641d20a7 | ||
|
|
d02587750c | ||
|
|
241a4b3d45 | ||
|
|
496e81a25a | ||
|
|
f39b081253 | ||
|
|
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 | ||
|
|
d1b94a5f3f | ||
|
|
a07f43d202 | ||
|
|
a717afc3a7 | ||
|
|
f023b4cc79 | ||
|
|
a7aacac5e8 | ||
|
|
decdb93ccb | ||
|
|
3e24c6a957 | ||
|
|
00d2c9d92d | ||
|
|
bd383f0c60 | ||
|
|
900cecae96 | ||
|
|
ffc58c6620 | ||
|
|
39f673874f | ||
|
|
fe291202db | ||
|
|
4606dc4158 | ||
|
|
36d6b16c23 | ||
|
|
b4d8108ba1 | ||
|
|
2c120aa05c | ||
|
|
693df0fa34 | ||
|
|
fb26b2bd98 | ||
|
|
5554f1ccba | ||
|
|
46accd62d1 | ||
|
|
41535eaea9 | ||
|
|
02437b2d51 | ||
|
|
c964aedf3b | ||
|
|
5f4fb857f0 | ||
|
|
0334509754 | ||
|
|
aad70aa24e | ||
|
|
e9c835ad06 | ||
|
|
0701b973df | ||
|
|
ec59aa259f | ||
|
|
ffc6d062d8 | ||
|
|
757a7d0851 | ||
|
|
25613503cb | ||
|
|
60ef75f2ee | ||
|
|
1cdc66d927 | ||
|
|
ba12c5deda | ||
|
|
203f66d0cb | ||
|
|
54c6f2c7c0 | ||
|
|
4cccceb034 | ||
|
|
245ab7c796 | ||
|
|
2bdf52d4c5 | ||
|
|
f991a69cce | ||
|
|
3dd26b7932 | ||
|
|
a5e22867c7 | ||
|
|
5c96266d45 | ||
|
|
fcfc6de918 | ||
|
|
da0b380655 | ||
|
|
ed7ac3c932 | ||
|
|
b5d4a71883 | ||
|
|
a9d74e6c97 | ||
|
|
d46afd2b6a | ||
|
|
ce4b8420d1 | ||
|
|
faabd44658 | ||
|
|
2fe5f5ab4b | ||
|
|
656d4b4c20 | ||
|
|
7247041e21 | ||
|
|
017a78d0c5 | ||
|
|
9010bd3831 | ||
|
|
ded884e825 | ||
|
|
b53a5e92c0 | ||
|
|
69bdb82586 | ||
|
|
4799d39be6 | ||
|
|
f32d011d90 | ||
|
|
14f795816d | ||
|
|
5987791516 | ||
|
|
db074518c3 | ||
|
|
64731b0056 | ||
|
|
debe6a1432 | ||
|
|
715c3f6482 | ||
|
|
f232baf4d2 | ||
|
|
b439e8ffb7 | ||
|
|
475166fc8b | ||
|
|
be2b742b85 | ||
|
|
640d6a5564 | ||
|
|
2e9d100d03 | ||
|
|
294adcae9d | ||
|
|
1fd16e7b04 | ||
|
|
d1c08e1d85 | ||
|
|
d7c09efeb1 | ||
|
|
b83c7ade10 | ||
|
|
7d6584e140 | ||
|
|
31b6bb6a41 | ||
|
|
b84607ff7b | ||
|
|
ac2af59880 | ||
|
|
d9f961ed2d | ||
|
|
c7f5476416 | ||
|
|
381c6c5d52 | ||
|
|
9df8f9a63d | ||
|
|
5eee801d06 | ||
|
|
80a06403e4 | ||
|
|
7ad69f59c7 | ||
|
|
83b82e4472 | ||
|
|
65dab79ca5 | ||
|
|
f0089b6291 | ||
|
|
d10508e08c | ||
|
|
630995f40a | ||
|
|
f7f7cd6cce | ||
|
|
ce7326ed09 | ||
|
|
b3591ec464 | ||
|
|
b1952e773a | ||
|
|
ce5db9a86e | ||
|
|
94568f884d | ||
|
|
d095b20d1c | ||
|
|
18b809e7e4 | ||
|
|
3f458fc650 | ||
|
|
9935d33b8e | ||
|
|
d42c6b7e78 | ||
|
|
d70550f949 | ||
|
|
679654bd47 | ||
|
|
9e3f54431d | ||
|
|
3d59934163 | ||
|
|
a77d931cd0 | ||
|
|
260c353577 | ||
|
|
8823679e70 | ||
|
|
722ece4055 | ||
|
|
cc09e31acf | ||
|
|
fe09079778 | ||
|
|
8f5b80c715 | ||
|
|
460979496e | ||
|
|
cadcc12169 | ||
|
|
22adcb9cd1 | ||
|
|
597c1fe6bc | ||
|
|
7201a5a290 | ||
|
|
c6a0bb99af | ||
|
|
622984de64 | ||
|
|
a9af971c59 | ||
|
|
171229e122 | ||
|
|
b71ca15598 | ||
|
|
1c604b7ba9 | ||
|
|
749f5387c1 | ||
|
|
7553341bad | ||
|
|
c6f11b053d | ||
|
|
7d6e2a3adb | ||
|
|
43cc844d3f | ||
|
|
941dfc502a | ||
|
|
8341e8e502 | ||
|
|
e85881d7ec | ||
|
|
c9d154ca7f | ||
|
|
5911485f38 | ||
|
|
6d6de53eb9 | ||
|
|
022996e5c7 | ||
|
|
4935853eb9 | ||
|
|
d1a3c9944e | ||
|
|
8996a7346e | ||
|
|
e4adbf4017 | ||
|
|
c29740f0d8 | ||
|
|
1a4fddb9ba | ||
|
|
af19ff51e6 | ||
|
|
5438ced6b3 | ||
|
|
2eb3ad7678 | ||
|
|
b86ad6438e | ||
|
|
81f250be59 | ||
|
|
9db5dfc15d | ||
|
|
377ce6a2c2 | ||
|
|
867c189ef7 | ||
|
|
33525ac165 | ||
|
|
5c52cacc98 | ||
|
|
e612f73374 | ||
|
|
ff5b6ff528 | ||
|
|
c86768d856 | ||
|
|
9f002b1289 | ||
|
|
0436fbe226 | ||
|
|
6494889e3b | ||
|
|
f52534522c | ||
|
|
0b615afac9 | ||
|
|
b61c25af45 | ||
|
|
bf20ed5984 | ||
|
|
9d5c22d5ae | ||
|
|
aaddfa0181 | ||
|
|
17e13acd10 | ||
|
|
5564e9a321 | ||
|
|
a0118fb390 | ||
|
|
57b6202eaa | ||
|
|
0bbe184f1f | ||
|
|
1b0af1c53a | ||
|
|
23f8692058 | ||
|
|
780652e5b6 | ||
|
|
8297ac4a28 | ||
|
|
45ef092cc2 | ||
|
|
a191fe028c | ||
|
|
343291ce37 | ||
|
|
b864e25011 | ||
|
|
24836d30f5 | ||
|
|
ba1ff79b3f | ||
|
|
09d593ade0 | ||
|
|
d1b17779a3 | ||
|
|
588b63a05b | ||
|
|
a5c2a86649 | ||
|
|
8a46c64c78 | ||
|
|
2d4c0af528 | ||
|
|
edd09a1b16 | ||
|
|
0edab55dd2 | ||
|
|
16643faaa1 | ||
|
|
881c38b38a | ||
|
|
59889d45da | ||
|
|
734c17ae56 | ||
|
|
48c1943824 | ||
|
|
9ef76fecef | ||
|
|
8aa2894bfb | ||
|
|
f40467638d | ||
|
|
2297eca103 | ||
|
|
09ccfcdcd4 | ||
|
|
bbc01c36d2 | ||
|
|
b560428492 | ||
|
|
d19134e644 | ||
|
|
951e2a6545 | ||
|
|
fcacd38036 | ||
|
|
c4aca23ec4 | ||
|
|
20943292ff | ||
|
|
b2ddfb54a7 | ||
|
|
76b9631d03 | ||
|
|
58b1437cae | ||
|
|
c611ac958e | ||
|
|
e7160459ab | ||
|
|
071fc74c0e | ||
|
|
14597475b1 | ||
|
|
de3281a3a8 | ||
|
|
6e16985156 | ||
|
|
50dacab379 | ||
|
|
7c2930611b | ||
|
|
84bc46ac3b | ||
|
|
fd42247cac | ||
|
|
0efcb57623 | ||
|
|
6fde147273 | ||
|
|
cc497fd153 | ||
|
|
c1f31180a2 | ||
|
|
d4ab68cd51 | ||
|
|
e8c762981a | ||
|
|
0ef3e6fe8a | ||
|
|
adcbe03aeb | ||
|
|
359c0eac0d | ||
|
|
a53d7848eb | ||
|
|
29b7fb628e | ||
|
|
df760a0a4b | ||
|
|
f2057eb744 | ||
|
|
2956fe97a0 | ||
|
|
1f9b0e70ab | ||
|
|
8fae12b2f1 | ||
|
|
7410210f19 | ||
|
|
40e6b12cca | ||
|
|
f2d422235b | ||
|
|
6a678f6d64 | ||
|
|
52ceab5e41 | ||
|
|
cafcc242e6 | ||
|
|
2ad0a7d20f | ||
|
|
481094db90 | ||
|
|
840c0af014 | ||
|
|
f193ab4b59 | ||
|
|
f7db3023a8 | ||
|
|
cfe80449e2 | ||
|
|
818d231849 | ||
|
|
eb9937ec1a | ||
|
|
070cd2b52f | ||
|
|
96d9ddee38 | ||
|
|
5629eeaec2 | ||
|
|
46c2bc4bb6 | ||
|
|
3938e0f58b | ||
|
|
fa162e8feb | ||
|
|
a95df8246b | ||
|
|
8feb5110b5 | ||
|
|
32899f8309 | ||
|
|
dc7c6d1030 | ||
|
|
7fdd0bd367 | ||
|
|
4459d3b434 | ||
|
|
7e7d89471a | ||
|
|
e67d15b50e | ||
|
|
bd78878cc3 | ||
|
|
5974309d10 | ||
|
|
d00e4a377b | ||
|
|
afc6ade2b9 | ||
|
|
734e8d6229 | ||
|
|
61629d2c86 | ||
|
|
cb48c6a3d8 | ||
|
|
93a29c3c45 | ||
|
|
e92b7c73bc | ||
|
|
0ea74e3255 | ||
|
|
3bd52e3cb1 | ||
|
|
c7f9c51fe6 | ||
|
|
b1da98170f | ||
|
|
0496598e77 | ||
|
|
fb3eee5f0b | ||
|
|
e16bc91601 | ||
|
|
a8c78cbbb0 | ||
|
|
3a5a6038e7 | ||
|
|
d412724598 | ||
|
|
f95de76789 | ||
|
|
33cf204e9a | ||
|
|
dafc652f63 | ||
|
|
c16dd085f1 | ||
|
|
a7349a48ff | ||
|
|
8042cd93c3 | ||
|
|
394faaeb97 | ||
|
|
5c2df3e1a4 | ||
|
|
6fc55467f4 | ||
|
|
a147a07956 | ||
|
|
a10581d459 | ||
|
|
cc2d6942bb | ||
|
|
3974c02bb1 | ||
|
|
09b5ddaea5 | ||
|
|
acbcd68d89 | ||
|
|
4281470fca | ||
|
|
68a4aa6773 | ||
|
|
905b160097 | ||
|
|
52596c339b | ||
|
|
73500267ee | ||
|
|
e6011e33a6 | ||
|
|
3454319c17 | ||
|
|
02c78ecf81 | ||
|
|
caca034302 | ||
|
|
fb366ed35f | ||
|
|
b352ffca15 | ||
|
|
2d94856efd | ||
|
|
ae66bd1284 | ||
|
|
89d9d4e6c8 | ||
|
|
fe60fc4730 | ||
|
|
46690d5e1c | ||
|
|
beaea8cb25 | ||
|
|
409ec90c85 | ||
|
|
4d423eeabe | ||
|
|
019e612225 | ||
|
|
6550d271f0 | ||
|
|
c46da65263 | ||
|
|
b46745759b | ||
|
|
9687571a84 | ||
|
|
c13236de25 | ||
|
|
8ffbb6acd4 | ||
|
|
a3e5d81765 | ||
|
|
e2aecfe80f | ||
|
|
a3c1248214 | ||
|
|
b933639222 | ||
|
|
27619fc450 | ||
|
|
96fecba190 | ||
|
|
50257d4f50 | ||
|
|
3eb4ae031c | ||
|
|
6a4ec3be81 | ||
|
|
cc9ac6ad14 | ||
|
|
644990a835 | ||
|
|
d3b81ea3f7 | ||
|
|
3660f67534 | ||
|
|
203cc4a5c3 | ||
|
|
c7be232fee | ||
|
|
2617b379be | ||
|
|
84ed5e755a | ||
|
|
2f17615790 | ||
|
|
acfa131c8c | ||
|
|
793d0e27e1 | ||
|
|
fdf0c443c3 | ||
|
|
1b39b53321 | ||
|
|
1679993e3b | ||
|
|
4c831f8b68 | ||
|
|
7a19923afa | ||
|
|
3e122a765d | ||
|
|
d873ba8c9f | ||
|
|
8093338f39 | ||
|
|
07660eea1e | ||
|
|
a2b2d4cd5c | ||
|
|
96e217b496 | ||
|
|
2dd1518d63 | ||
|
|
168703b7bf | ||
|
|
0f2d680f1f | ||
|
|
b7930b6ebd | ||
|
|
8fa43b469a | ||
|
|
894e52f61a | ||
|
|
3c294691aa | ||
|
|
acbf932861 | ||
|
|
26f5c53be8 | ||
|
|
8dd069604c | ||
|
|
5dadbd094e | ||
|
|
514a8739b6 | ||
|
|
12e78a082e | ||
|
|
9273096a8a | ||
|
|
686c6133f8 | ||
|
|
1d1276cc3a | ||
|
|
d987676ef0 | ||
|
|
6e4658c89d | ||
|
|
b7cbcf7434 | ||
|
|
e347d06a49 | ||
|
|
2077e9365a | ||
|
|
6e3adc9b14 | ||
|
|
7954eee639 | ||
|
|
f9f1f0e316 | ||
|
|
a9afe6aa84 | ||
|
|
6d36796135 | ||
|
|
9e81fd5703 | ||
|
|
609059b6ec | ||
|
|
6af73f417a | ||
|
|
32468a0072 | ||
|
|
6800c45104 | ||
|
|
0d8c754ffd | ||
|
|
1b80276496 | ||
|
|
bf9a138276 | ||
|
|
b3f9c636b9 | ||
|
|
18975d44a6 | ||
|
|
b201db5cec | ||
|
|
bbe23945e4 | ||
|
|
bbdc0394ff | ||
|
|
38a9b14965 | ||
|
|
77ba0d3686 | ||
|
|
065c8d7a95 | ||
|
|
c704d1545c | ||
|
|
62b65a5f20 | ||
|
|
665a7a3848 | ||
|
|
256b9f31e1 | ||
|
|
a3037e1173 | ||
|
|
f3e7a5d755 | ||
|
|
5f0cba7775 | ||
|
|
673759fe7e | ||
|
|
b73612392d | ||
|
|
f85935f0f9 | ||
|
|
1e7e53c87e | ||
|
|
b9fdf3cc3b | ||
|
|
c462601362 | ||
|
|
859877dcfc | ||
|
|
c04ce95106 | ||
|
|
98ee12bc35 | ||
|
|
fdda786fa2 | ||
|
|
831be4f4dd | ||
|
|
41ae97e710 | ||
|
|
f72ba7f79d | ||
|
|
296046510b | ||
|
|
db9f87f697 | ||
|
|
3270ea55dd | ||
|
|
a358ac24f4 | ||
|
|
8bedd43b28 | ||
|
|
9ea2087ede | ||
|
|
9f7c634133 | ||
|
|
da20d68a12 | ||
|
|
d3e512c738 | ||
|
|
339f84fe1f | ||
|
|
2d41b735ec | ||
|
|
e3b4dd08ff | ||
|
|
6809a906bb | ||
|
|
1c35cbcc07 | ||
|
|
5f8989a436 | ||
|
|
aa7b0648ff | ||
|
|
2fbe61960f | ||
|
|
bdb5e5a250 | ||
|
|
48a580e609 | ||
|
|
1361fc69b9 | ||
|
|
93352e56d8 | ||
|
|
d9246ff24d | ||
|
|
9301bc3444 | ||
|
|
76352c4e2d | ||
|
|
428f41bd12 | ||
|
|
99c32e460f | ||
|
|
83f249cf65 | ||
|
|
2c2baa93ea | ||
|
|
f0278ca114 | ||
|
|
297b1b5013 | ||
|
|
e9f63bf4e8 | ||
|
|
556ce1c6a1 | ||
|
|
cc4ff62681 | ||
|
|
0423fd9b55 | ||
|
|
789ab20bf7 | ||
|
|
b47462bd68 | ||
|
|
1a94fee42d | ||
|
|
a91ce6a5d6 | ||
|
|
981ffd9fce | ||
|
|
e76c960624 | ||
|
|
416c92cc6f | ||
|
|
fb731eb3e7 | ||
|
|
6f2a4d290f | ||
|
|
cefc8ba938 | ||
|
|
d0bd644eef | ||
|
|
071c95128e | ||
|
|
1a192c489b | ||
|
|
56014e74a0 | ||
|
|
172271498d | ||
|
|
f2882cb88c | ||
|
|
152f1fee40 | ||
|
|
968234e6ae | ||
|
|
5e133e2dff | ||
|
|
0049c09fc3 | ||
|
|
a2a63c27f4 | ||
|
|
c50a601f1a | ||
|
|
bc0fd6db71 | ||
|
|
52b631fade | ||
|
|
2f0bc9d1f7 | ||
|
|
5ef6520d4e | ||
|
|
2c1925161e | ||
|
|
0529b349d5 | ||
|
|
b4620364a2 | ||
|
|
634aef3895 | ||
|
|
06c86d1a8c | ||
|
|
79749f8eb4 | ||
|
|
b036986b3e | ||
|
|
938f1d1da7 | ||
|
|
58b6b3df06 | ||
|
|
f9c3347f7c | ||
|
|
5b72eb0b03 | ||
|
|
6dd4c13bc0 | ||
|
|
e4e7db551f | ||
|
|
ebfde8da56 | ||
|
|
756bc0f4b7 | ||
|
|
269d491b6a | ||
|
|
449e5bc2ad | ||
|
|
8736c11d84 | ||
|
|
45fc760985 | ||
|
|
7968e3c2de | ||
|
|
964a41c75c | ||
|
|
5931d53637 | ||
|
|
3ed3ae5bcf | ||
|
|
6519cc70c5 | ||
|
|
505a4f27fa | ||
|
|
79144eba99 | ||
|
|
26e17d89c9 | ||
|
|
4322c1106f | ||
|
|
73071dfd4f | ||
|
|
b7c14b3c27 | ||
|
|
3130b44535 | ||
|
|
a2bd73334f | ||
|
|
1a393f5625 | ||
|
|
d4951e837e | ||
|
|
26f6365e93 | ||
|
|
3a552b1e63 | ||
|
|
69eb1790da | ||
|
|
a1af6f3614 | ||
|
|
3aced61465 | ||
|
|
6f02ddfce8 | ||
|
|
c2faa39b62 | ||
|
|
2d3734b8b5 | ||
|
|
ed908b7f89 | ||
|
|
f7d795a364 | ||
|
|
8919b39d54 | ||
|
|
84cedc094e | ||
|
|
3b2b2496d7 | ||
|
|
445684c409 | ||
|
|
898e067ccc | ||
|
|
12859e345f | ||
|
|
89f4af695e | ||
|
|
308bc9d919 | ||
|
|
db566c54ae | ||
|
|
81d403e207 | ||
|
|
2bd71d70ff | ||
|
|
1eef6f44ba | ||
|
|
204f03912f | ||
|
|
f8c3b3aa18 | ||
|
|
d4df981463 | ||
|
|
497c6d516d | ||
|
|
8288862b7e | ||
|
|
9aae16c236 | ||
|
|
80c194a70a | ||
|
|
c832b2db5b | ||
|
|
27018882ec | ||
|
|
caf6e9c540 | ||
|
|
e727fb82f2 | ||
|
|
c78df56801 | ||
|
|
d13202f43b | ||
|
|
9d139a6b35 | ||
|
|
d2abe44e6f | ||
|
|
bc67228576 | ||
|
|
ecf32c964a | ||
|
|
e58f30b82a | ||
|
|
654e3f1101 | ||
|
|
86689dc524 | ||
|
|
5f62a0c1ca | ||
|
|
ad1bf0f389 | ||
|
|
9c7703ace1 | ||
|
|
4a8155b53c | ||
|
|
80d6d5c5c4 | ||
|
|
c624be8388 | ||
|
|
09df1cd41e | ||
|
|
52c5b57200 | ||
|
|
5ea04a852e | ||
|
|
a2eef05198 | ||
|
|
55f75af353 | ||
|
|
fb6a51b8fd | ||
|
|
252cc2213e | ||
|
|
73c5f24fa4 | ||
|
|
4c80e103a0 | ||
|
|
39ea557360 | ||
|
|
d0cc92a01a | ||
|
|
d7980c1a45 | ||
|
|
e56ae1426c | ||
|
|
696843c020 | ||
|
|
6ff5621dd7 | ||
|
|
e7fb72a732 | ||
|
|
8d30d34e0c | ||
|
|
bc7fe85f8a | ||
|
|
89352d92c5 | ||
|
|
c32390d84c | ||
|
|
45ca866a2d | ||
|
|
ceef206c21 | ||
|
|
7c6424f0a9 | ||
|
|
bc942de6f1 | ||
|
|
06984df5cb | ||
|
|
4f136a3a76 | ||
|
|
363bf3ba30 | ||
|
|
acb895956a | ||
|
|
21e87b9bb3 | ||
|
|
c896ebcf12 | ||
|
|
d288222e80 | ||
|
|
4eb2a6c9a3 | ||
|
|
2563731c4d | ||
|
|
4e410111db | ||
|
|
5670563a26 | ||
|
|
6caa656d01 | ||
|
|
c12af7aed1 | ||
|
|
dcb6d1c01d | ||
|
|
18234cbdac | ||
|
|
06bf988dc1 | ||
|
|
55ff4c3f08 | ||
|
|
4915002168 | ||
|
|
5bd8d60e41 | ||
|
|
fc872808c5 | ||
|
|
0f4feda382 | ||
|
|
90b0f38316 | ||
|
|
18f630ab21 | ||
|
|
e97fd44151 | ||
|
|
b75679778f | ||
|
|
35a84ad576 | ||
|
|
4ed28be75a | ||
|
|
e2f4656a86 | ||
|
|
1e14da5c60 | ||
|
|
b2ef79ef3d | ||
|
|
f488874ff5 | ||
|
|
23258648da | ||
|
|
6b84ebe501 | ||
|
|
07dd067f73 | ||
|
|
420744d048 | ||
|
|
01108e3a63 | ||
|
|
8026b1e194 | ||
|
|
a39d77227f | ||
|
|
9f69deec7d | ||
|
|
e912f772e0 | ||
|
|
0102726aeb | ||
|
|
1e7aa04040 | ||
|
|
00a7c6fe6b | ||
|
|
87f8c0d471 | ||
|
|
334d78cd18 | ||
|
|
2356325592 | ||
|
|
d78ec593fa | ||
|
|
d5043133e6 | ||
|
|
509f69a457 | ||
|
|
662c659220 | ||
|
|
9a6566e774 | ||
|
|
4da0428d9e | ||
|
|
8ee1177206 | ||
|
|
e9154b2549 | ||
|
|
d398a0dd58 | ||
|
|
7723a24297 | ||
|
|
95a4b8db68 | ||
|
|
663c1898a3 | ||
|
|
465de793e8 | ||
|
|
de9b76cef0 | ||
|
|
1747a8d3d9 | ||
|
|
1094e79749 | ||
|
|
22569681bc | ||
|
|
e615d117a0 | ||
|
|
a51258b6bb | ||
|
|
8894bd07b6 | ||
|
|
ec45a9e825 | ||
|
|
871358a6e5 | ||
|
|
2e2e0fba60 | ||
|
|
4a5139e3f4 | ||
|
|
8f85933d7c | ||
|
|
246f3a63f6 | ||
|
|
e99eff4eb0 | ||
|
|
c0197f19cf | ||
|
|
3994d67eea | ||
|
|
9ead79c9d4 | ||
|
|
9371aed46c | ||
|
|
940707ad66 | ||
|
|
e6c267fb4c | ||
|
|
93538fccd6 | ||
|
|
83a7fad308 | ||
|
|
3c7e33388e | ||
|
|
7b0f35edb6 | ||
|
|
94a157d0b0 | ||
|
|
ca04620253 | ||
|
|
073ef0b36a | ||
|
|
c41c05d4f4 | ||
|
|
f1ea54e07a | ||
|
|
a139ce901a | ||
|
|
7431957113 | ||
|
|
1752d80915 | ||
|
|
aa7420e109 | ||
|
|
a290d4b9db | ||
|
|
19a4314e7f | ||
|
|
d166e85e0a | ||
|
|
f213e857ab | ||
|
|
eb6130baa7 | ||
|
|
f69ea2c68a | ||
|
|
078441d477 | ||
|
|
95f6b15a67 | ||
|
|
ee29dbdb8f | ||
|
|
15f3f4c93f | ||
|
|
6932e94e0e | ||
|
|
3ef06d7efe | ||
|
|
fb012b48e9 | ||
|
|
bc77bf217f | ||
|
|
37d1e9351e | ||
|
|
4494c0dee0 | ||
|
|
26afc604ac | ||
|
|
9aefcada19 | ||
|
|
69fc363760 | ||
|
|
bea02ddebe | ||
|
|
3fb257c39c | ||
|
|
7c96c5a39b | ||
|
|
efd836d971 | ||
|
|
836aaa1647 | ||
|
|
bf2b3dbf3e | ||
|
|
b4fa2ff995 | ||
|
|
2f9cabc30b | ||
|
|
63593f5597 | ||
|
|
c0acaa5d2c | ||
|
|
2e46f8d0a6 | ||
|
|
51da6aaa07 | ||
|
|
c8b79e36db | ||
|
|
208374bcc9 | ||
|
|
7f0a6e7203 | ||
|
|
54ebb9cfd4 | ||
|
|
49e9c1495b | ||
|
|
a84b0fbd52 | ||
|
|
c95814c04d | ||
|
|
9f8123f1b8 | ||
|
|
8b23db4f4d | ||
|
|
d77cc13374 | ||
|
|
9a12db1aa2 | ||
|
|
eb54d34bec | ||
|
|
4b1203d4c9 | ||
|
|
183a9c6244 | ||
|
|
1f2294d585 | ||
|
|
0b839c4f77 | ||
|
|
1d4fd1fcae | ||
|
|
b1d8d72c16 | ||
|
|
bafb68b844 | ||
|
|
21873b52e9 | ||
|
|
0aa8b82871 | ||
|
|
f9781afafd | ||
|
|
fece361a55 | ||
|
|
7b51b2f128 | ||
|
|
22d88fb28e | ||
|
|
f7c5b28e76 | ||
|
|
5760f2a307 | ||
|
|
ee46efb5a5 | ||
|
|
eb6ffebfc7 | ||
|
|
c06c44f286 | ||
|
|
019c4088cf | ||
|
|
0b0a88b78d | ||
|
|
028e9cc56f | ||
|
|
e0d8615ece | ||
|
|
c8ecbda40b | ||
|
|
2324c10d43 | ||
|
|
89cfa76291 | ||
|
|
072070a22c | ||
|
|
3c3ad134ea | ||
|
|
a4ffcfd4d5 | ||
|
|
136670c58a | ||
|
|
28169725fa | ||
|
|
5b13106f54 | ||
|
|
1a2db0dfb1 | ||
|
|
696f95bb0a | ||
|
|
acec588fe3 | ||
|
|
6ed0da8e98 | ||
|
|
7fd91d70bd | ||
|
|
61788a0389 | ||
|
|
0821447b5b | ||
|
|
3cba274ba6 | ||
|
|
df7bbcfd21 | ||
|
|
021d406f0c | ||
|
|
294569c502 | ||
|
|
bfd00ac2ed | ||
|
|
735a4714f4 | ||
|
|
827fd47198 | ||
|
|
e26b917661 | ||
|
|
92872a2a3c | ||
|
|
16ddb09cb4 | ||
|
|
d37031f14e | ||
|
|
b4e84ca7d2 | ||
|
|
47970b9e6f | ||
|
|
f65f120d50 | ||
|
|
df00ec3c82 | ||
|
|
ad6fca28f9 | ||
|
|
fd33923496 | ||
|
|
a55649dc82 | ||
|
|
9558f229db | ||
|
|
7917bfb1c9 | ||
|
|
25f611ca42 | ||
|
|
e6eb49e7e0 | ||
|
|
9a075f53dc | ||
|
|
4b3f800c03 | ||
|
|
82bc76b243 | ||
|
|
18b9b04907 | ||
|
|
87f1f08b36 | ||
|
|
7d7ebbe9f7 | ||
|
|
5111ce782f | ||
|
|
20b0e563ce | ||
|
|
8b6cf239a3 | ||
|
|
bcc285cffd | ||
|
|
d5ba030942 | ||
|
|
803f43592a | ||
|
|
904b9ccaa3 | ||
|
|
89721ff04a | ||
|
|
6164823921 | ||
|
|
f8b3c47f99 | ||
|
|
56dd2da962 | ||
|
|
68bb74d172 | ||
|
|
bf5e12c8e0 | ||
|
|
de11f5e53a | ||
|
|
b125e8e23a | ||
|
|
b28b616eb2 | ||
|
|
4534ca238d | ||
|
|
cee0e94294 | ||
|
|
8319ea7078 | ||
|
|
5334a58f9b | ||
|
|
2616bdc4cd | ||
|
|
c149b3f797 | ||
|
|
d349eb3d43 | ||
|
|
9b43ade1c0 | ||
|
|
ad05d0a8d9 | ||
|
|
e6bfbe9683 | ||
|
|
c871efca4b | ||
|
|
12c72b419c | ||
|
|
a15b7691ca | ||
|
|
01618d323b | ||
|
|
bb6d0e37e3 | ||
|
|
24a6100897 | ||
|
|
0251563c98 | ||
|
|
72673a351b | ||
|
|
96b7131844 | ||
|
|
dcc2f16416 | ||
|
|
c2b8a04000 | ||
|
|
d65587b06c | ||
|
|
1ab0134522 | ||
|
|
afffce80f0 | ||
|
|
70b80b0160 | ||
|
|
64067a04b5 | ||
|
|
38cf0268c0 | ||
|
|
2d2034703f | ||
|
|
571ceeff90 | ||
|
|
34c4ba4321 | ||
|
|
babb372eb9 | ||
|
|
5b9b82c1cd | ||
|
|
075c534270 | ||
|
|
f317f8b149 | ||
|
|
f8d552dde5 | ||
|
|
606f72bb13 | ||
|
|
327e6a2b4f | ||
|
|
be8f6c7f5c | ||
|
|
073448e0ea | ||
|
|
f136f435b5 | ||
|
|
ebea6b487b | ||
|
|
e5b7dc56e6 | ||
|
|
c2d8025a0a | ||
|
|
853e240e1d | ||
|
|
8755a6d1ac | ||
|
|
9f723061cb | ||
|
|
652683fc04 | ||
|
|
83a463891d | ||
|
|
957b618fdc | ||
|
|
ebe5191b63 | ||
|
|
c426234df7 | ||
|
|
8c3a10392e | ||
|
|
d0e44946e9 | ||
|
|
46a593d968 | ||
|
|
eb0cc34951 | ||
|
|
1c7dfda4bc | ||
|
|
3c0e4a2fa1 | ||
|
|
c753072ae1 | ||
|
|
243942a7aa | ||
|
|
8d5ac8b43c | ||
|
|
17962b3d2e | ||
|
|
f70acd5979 | ||
|
|
ffe5c46224 | ||
|
|
3242ea5f66 | ||
|
|
39a282bffc | ||
|
|
29583004ce | ||
|
|
0a1a185874 | ||
|
|
8f809e2a93 | ||
|
|
f216059b49 | ||
|
|
9121b1f41d | ||
|
|
60e015d0c1 | ||
|
|
7e049fca61 | ||
|
|
0f0e4de6a4 | ||
|
|
bc1102922b | ||
|
|
a3d3642a30 | ||
|
|
248eb47329 | ||
|
|
52ebf50607 | ||
|
|
d34a4b126e | ||
|
|
de96719a45 | ||
|
|
9876ed09fe | ||
|
|
17cbbe3dc5 | ||
|
|
b995af17eb | ||
|
|
6589579850 | ||
|
|
5ddc260fc2 | ||
|
|
db5c9cd4c0 | ||
|
|
9b6d010aef | ||
|
|
065b87e949 | ||
|
|
a6206a3aef | ||
|
|
30639ed72b | ||
|
|
9d02a39e13 | ||
|
|
fc0af0d4d1 | ||
|
|
a683416081 | ||
|
|
9faf57ee8d | ||
|
|
44b9ccb7e2 | ||
|
|
de003d9cf8 | ||
|
|
8a2a523c70 | ||
|
|
c3dfe50aaf | ||
|
|
9659d862c7 | ||
|
|
69ab4cd391 | ||
|
|
498f3985b3 | ||
|
|
977175d4fd | ||
|
|
3ddc7b9390 | ||
|
|
10e9bf623f | ||
|
|
48a5c64e94 | ||
|
|
140606ccd5 | ||
|
|
f56d006f93 | ||
|
|
beb13a1d3e | ||
|
|
fa47138327 | ||
|
|
9421d4510a | ||
|
|
ff8abfca85 | ||
|
|
5c858965b8 | ||
|
|
e3f83cb17a | ||
|
|
de6008e01a | ||
|
|
6417e696df | ||
|
|
5d28f3781b | ||
|
|
10026bb62e | ||
|
|
21c16f923c | ||
|
|
32cef52f0d | ||
|
|
e7dd7c54ff | ||
|
|
b0b50bd12a | ||
|
|
f2c6057490 | ||
|
|
169b2eeb94 | ||
|
|
f81d027f60 | ||
|
|
872eeb7339 | ||
|
|
7f67a28c2a | ||
|
|
30a46e1135 | ||
|
|
3a01478ce8 | ||
|
|
53d71fab60 | ||
|
|
be891f112c | ||
|
|
89934239d7 | ||
|
|
8986037fdd | ||
|
|
a7c72b7abf | ||
|
|
409ac80710 | ||
|
|
fc7bebdf55 | ||
|
|
ca52549557 | ||
|
|
8948a65654 | ||
|
|
b4e33cfcc7 | ||
|
|
86742e8334 | ||
|
|
173b35eaf8 | ||
|
|
2b054e5309 | ||
|
|
a302ff1605 | ||
|
|
f7bb4e6138 | ||
|
|
5c5489916b | ||
|
|
5627cf7167 | ||
|
|
c05dae4a68 | ||
|
|
57e61e3743 | ||
|
|
a6c395c156 | ||
|
|
543e0b1e0f | ||
|
|
64b0ff875f | ||
|
|
a034208a00 | ||
|
|
5f1251586b | ||
|
|
6f6cffdc32 | ||
|
|
21a98ef264 | ||
|
|
aa90436435 | ||
|
|
61225052f9 | ||
|
|
dee3163d95 | ||
|
|
8b0668b99e | ||
|
|
8471a82c85 | ||
|
|
ed4dff63b9 | ||
|
|
838e776542 | ||
|
|
39c12790bc | ||
|
|
126e6d6645 | ||
|
|
5796a1b282 | ||
|
|
90982529fc | ||
|
|
aba51d6b60 | ||
|
|
49bc4567bb | ||
|
|
2ac52705c6 | ||
|
|
d0eb56dd97 | ||
|
|
b9c60df04b | ||
|
|
8c236e4dfa | ||
|
|
154a59f21f | ||
|
|
9689e1c548 | ||
|
|
5a83976c99 | ||
|
|
b5276a9a69 | ||
|
|
30377baa5e | ||
|
|
aa8b7dd336 | ||
|
|
f26a338a54 | ||
|
|
c4383f1d99 | ||
|
|
4527995e66 | ||
|
|
b0fbb98f41 | ||
|
|
63667dfd96 | ||
|
|
77c388c928 | ||
|
|
a69b814ded | ||
|
|
c51ada766d | ||
|
|
ef2709f97c | ||
|
|
bf9b9ca29d | ||
|
|
64f224bb22 | ||
|
|
285a8fe4d0 | ||
|
|
3773d76dfd | ||
|
|
94c5c7bd6d | ||
|
|
12cfc4c0b0 | ||
|
|
9a2de6e6ee | ||
|
|
2ede47b8c8 | ||
|
|
76e107506f | ||
|
|
6f35ed51dc | ||
|
|
c94ba66310 | ||
|
|
a15133f5cf | ||
|
|
cc09e9d4c2 | ||
|
|
16e0da2c4b | ||
|
|
ed22f75241 | ||
|
|
ba25cad6e2 | ||
|
|
abb01123cb | ||
|
|
e2d249f8c5 | ||
|
|
4a2ac166fa | ||
|
|
5fab55383d | ||
|
|
f152f23a68 | ||
|
|
24e78b3571 | ||
|
|
9a239edb52 | ||
|
|
abcc5c5a82 | ||
|
|
cb5ba675a7 | ||
|
|
2288086695 | ||
|
|
61421b7a8f | ||
|
|
6a7e53a7c7 | ||
|
|
ca134d5522 | ||
|
|
ec24efda74 | ||
|
|
7f0f10e498 | ||
|
|
aa5af100b4 | ||
|
|
37ae32f688 | ||
|
|
d0cffdec5d | ||
|
|
0f34521612 | ||
|
|
e69362df22 | ||
|
|
3de8f6f38e | ||
|
|
5359bc8083 | ||
|
|
eb6a14fe10 | ||
|
|
2912537533 | ||
|
|
cfb32da198 | ||
|
|
9b4f92130f | ||
|
|
5a2ab686a6 | ||
|
|
3b8583b014 | ||
|
|
ed29552b1e | ||
|
|
a2ada3cf96 | ||
|
|
88825a1187 | ||
|
|
264e7fc58b | ||
|
|
1698015e3c | ||
|
|
39dc14c002 | ||
|
|
04c499a5fc | ||
|
|
efbe930a69 | ||
|
|
747f87f61e | ||
|
|
5a4c56fc44 | ||
|
|
81f45ba92a | ||
|
|
a5dc4e32f2 | ||
|
|
2b839853ec | ||
|
|
66b6cd68ed | ||
|
|
0ef3d90838 | ||
|
|
5cc50f9b27 | ||
|
|
e879e26a5b | ||
|
|
96d84150e1 | ||
|
|
2aa0c6c488 | ||
|
|
811138386f | ||
|
|
c433cf7459 | ||
|
|
e0d6ebc2f2 | ||
|
|
4938991ab8 | ||
|
|
13722f536e | ||
|
|
57f0e3292d | ||
|
|
da5ae565ab | ||
|
|
87c5066242 | ||
|
|
b528bde470 | ||
|
|
57572e550f | ||
|
|
3aea0d3d68 | ||
|
|
9ae920c1b6 | ||
|
|
dff406a360 | ||
|
|
d346ba5c3c | ||
|
|
978541adc2 | ||
|
|
637bce2707 | ||
|
|
07e3dc2ee2 | ||
|
|
ead065d803 | ||
|
|
0150bff7b4 | ||
|
|
0f493b6038 | ||
|
|
f26b709c50 | ||
|
|
ae10d9cf22 | ||
|
|
81af9674ed | ||
|
|
b63df7991a | ||
|
|
a79990465c | ||
|
|
ad6bd530ac | ||
|
|
c1b369fd4c | ||
|
|
01fcd3c2d5 | ||
|
|
7196d784d3 | ||
|
|
0f0aaf51e0 | ||
|
|
b5f493c55a | ||
|
|
0aa031beb9 | ||
|
|
db6ff224f8 | ||
|
|
b3c7cd61f3 | ||
|
|
9ae05c4d91 | ||
|
|
264e6f6efd | ||
|
|
ec7bccf671 | ||
|
|
49f75ee8ce | ||
|
|
4bcc866c52 | ||
|
|
c65e088caf | ||
|
|
6ca4116555 | ||
|
|
f6cdb820af | ||
|
|
081e5a82ff | ||
|
|
2ad2a4bd9f | ||
|
|
645e700da3 | ||
|
|
92aea29a30 | ||
|
|
e1c01af929 | ||
|
|
7ef749497d | ||
|
|
d72aa49126 | ||
|
|
e92bd312ec | ||
|
|
b097c2cfb0 | ||
|
|
a39cdc80b7 | ||
|
|
a47250810e | ||
|
|
1f50f3031f | ||
|
|
75145dd753 | ||
|
|
d0b97f7e1f | ||
|
|
199a0311e2 | ||
|
|
fa446f860f | ||
|
|
7a74303f3c | ||
|
|
7d9eabb981 | ||
|
|
ff5308a5af | ||
|
|
3f8ba3a986 | ||
|
|
4a555de1b2 | ||
|
|
d27e4a08f9 | ||
|
|
bf678a1ca9 | ||
|
|
13a903de28 | ||
|
|
a3c14c031e | ||
|
|
e90d528026 | ||
|
|
d64dd77993 | ||
|
|
113850a748 | ||
|
|
1c49a00d64 | ||
|
|
eef6c83503 | ||
|
|
ceb5648eb7 | ||
|
|
a0eadb76ea | ||
|
|
065852e46c | ||
|
|
e5e2fb8274 | ||
|
|
0210b3c893 | ||
|
|
7df5677b46 | ||
|
|
2e71876b28 | ||
|
|
11576b1142 | ||
|
|
ce011b8a2d | ||
|
|
12cfb4f7ee | ||
|
|
9e1123debe | ||
|
|
c7354142c0 | ||
|
|
dee84f448f | ||
|
|
1607711603 | ||
|
|
8bca5e05b8 | ||
|
|
f68505ee23 | ||
|
|
d2174da641 | ||
|
|
255b1e68d0 | ||
|
|
fbee6b87f5 | ||
|
|
3836a70f97 | ||
|
|
e0ec9fa294 | ||
|
|
80fe50590f | ||
|
|
ae18d1c55a | ||
|
|
75194373e0 | ||
|
|
f3875048f6 | ||
|
|
210af986ad | ||
|
|
c03044f492 | ||
|
|
522b85ae21 | ||
|
|
208e56dbe9 | ||
|
|
42acb00c81 | ||
|
|
ca6e770837 | ||
|
|
775968003c | ||
|
|
323d3e9b5d | ||
|
|
16f9755e73 | ||
|
|
66eb98bb0a | ||
|
|
299546f5c0 | ||
|
|
7be9b4c418 | ||
|
|
03c22b4576 | ||
|
|
ef749fa9ce | ||
|
|
a23c92596e | ||
|
|
abb1497c98 | ||
|
|
7a8594da43 | ||
|
|
cbf28daed9 | ||
|
|
0ff1ca30c3 | ||
|
|
2cff251863 | ||
|
|
73d996bf26 | ||
|
|
5bc78cb724 | ||
|
|
cdba92ac3c | ||
|
|
6d28f92ffe | ||
|
|
01387f42c5 | ||
|
|
8f52b731f4 | ||
|
|
d442088ed3 | ||
|
|
22a323890a | ||
|
|
163bba1410 | ||
|
|
db1c618fcf | ||
|
|
01bdfa7b6d | ||
|
|
6a88c8d845 | ||
|
|
b8a6913e09 | ||
|
|
744d8c1006 | ||
|
|
c2e2c98d81 | ||
|
|
3fa353a2d3 | ||
|
|
c27c9f80d2 | ||
|
|
b5a74715cf | ||
|
|
13ee2901f4 | ||
|
|
32c03eadd6 | ||
|
|
0fa512f26d | ||
|
|
219d88518c | ||
|
|
ecf3aee43a | ||
|
|
7f08cab73e | ||
|
|
c4e9ef199e | ||
|
|
9e612b5550 | ||
|
|
203633d34d | ||
|
|
45bd009bb1 | ||
|
|
ee656415c4 | ||
|
|
156aad198f | ||
|
|
b1ffb79a50 | ||
|
|
d6654bfe00 | ||
|
|
eefdd67d22 | ||
|
|
86a86d7afd | ||
|
|
b6dac2b484 | ||
|
|
e6367abae9 | ||
|
|
fc4d1d9a60 | ||
|
|
94bae20776 | ||
|
|
bb8c8d273c | ||
|
|
ee600ace37 | ||
|
|
da86e32eb4 | ||
|
|
b5bbc04ad1 | ||
|
|
265c58611f | ||
|
|
25c973a39e | ||
|
|
123c7b32db | ||
|
|
e2d8e2c4ae | ||
|
|
701509d322 | ||
|
|
c3cc616264 | ||
|
|
91b84b89e4 | ||
|
|
017ec204a9 | ||
|
|
8dbfecd153 | ||
|
|
512db1bc54 | ||
|
|
e157aabd4d | ||
|
|
db2fea448c | ||
|
|
dd82d69b8c | ||
|
|
27328281b7 | ||
|
|
51d205b267 | ||
|
|
84800914f6 | ||
|
|
9b296e65bd | ||
|
|
5f649a1649 | ||
|
|
daea056210 | ||
|
|
30c0db06bd | ||
|
|
91168c005c | ||
|
|
cfa0054077 | ||
|
|
3d5820648b | ||
|
|
d08df97fe5 | ||
|
|
fd6624a058 | ||
|
|
8aa41dd04b | ||
|
|
e890113fc6 | ||
|
|
e2e64798b5 | ||
|
|
b9b6a6566a | ||
|
|
dc9e415602 | ||
|
|
84fa12c885 | ||
|
|
296b35fe9b | ||
|
|
0ff89b9c3c | ||
|
|
3b33540c99 | ||
|
|
29d0174253 | ||
|
|
cc7f2a0d08 | ||
|
|
b1579aed2f | ||
|
|
9247daf953 | ||
|
|
9031e33b66 | ||
|
|
1ee1f5f427 | ||
|
|
a5874a5393 | ||
|
|
969217c9d9 | ||
|
|
e399502c7a | ||
|
|
6883f0c49f | ||
|
|
3fc2c813cc | ||
|
|
9de4b99fc7 | ||
|
|
24e7036822 | ||
|
|
ec9acbcda7 | ||
|
|
c0460660d5 | ||
|
|
b03f4919fb | ||
|
|
08620743b9 | ||
|
|
41362f063a | ||
|
|
5b3069e265 | ||
|
|
b466924717 | ||
|
|
cbc0f65fa3 | ||
|
|
35089a4289 | ||
|
|
aef3131e92 | ||
|
|
342fce97af | ||
|
|
fb5d267bd0 | ||
|
|
c19844a0a3 | ||
|
|
22cf05519a | ||
|
|
511ce35631 | ||
|
|
e9b7548dd6 | ||
|
|
010cde0a4a | ||
|
|
cac5251a98 | ||
|
|
3b825bcbfb | ||
|
|
31959fb24b | ||
|
|
5e9675ad1e | ||
|
|
084b7675b2 | ||
|
|
ed8be5bc55 | ||
|
|
efca2943a0 | ||
|
|
371da7132f | ||
|
|
9a3ff5c46a | ||
|
|
b36c654a3d | ||
|
|
ddeb2613ec | ||
|
|
2d02d20911 | ||
|
|
b2563b9f9f | ||
|
|
fccf6925b1 | ||
|
|
4a7cf65064 | ||
|
|
56587e2821 | ||
|
|
33b8e71583 | ||
|
|
1c96128695 | ||
|
|
ca516b1b26 | ||
|
|
ba4e69bebc | ||
|
|
de5e9f100c | ||
|
|
955da86a3e | ||
|
|
8d85be4c5e | ||
|
|
93eadfb10f | ||
|
|
f8e0b18439 | ||
|
|
64bbe9dfaf | ||
|
|
2e8a9416af | ||
|
|
5dd40bd0bb | ||
|
|
1822dd0549 | ||
|
|
751e49fb0a | ||
|
|
56c43604d0 | ||
|
|
7438c378be | ||
|
|
0e0caf7c06 | ||
|
|
5644f4a295 | ||
|
|
98e1605b17 | ||
|
|
73f0e32d1a | ||
|
|
713cb56fea | ||
|
|
bd3bb70ee8 | ||
|
|
8aa3f14303 | ||
|
|
ac285b453e | ||
|
|
daf55705e4 | ||
|
|
7140baae72 | ||
|
|
27a2e590cd | ||
|
|
7172fa058a | ||
|
|
c0790ccf08 | ||
|
|
87c43517cd | ||
|
|
6561ec524b | ||
|
|
982c5460f0 | ||
|
|
2a3a8848f3 | ||
|
|
752520e428 | ||
|
|
8095b776fe | ||
|
|
e504103e2c | ||
|
|
904183262a | ||
|
|
2a0bc64226 | ||
|
|
6b975c308c | ||
|
|
74be55a477 | ||
|
|
394832c2d6 | ||
|
|
f636c12255 | ||
|
|
03e4a8214c | ||
|
|
6d7785a35b | ||
|
|
904f579332 | ||
|
|
a72d789b08 | ||
|
|
87ad7ace18 | ||
|
|
35153eb524 | ||
|
|
c8ee1fa62e | ||
|
|
5c1a6ed719 | ||
|
|
9d68fde148 | ||
|
|
c7d517f6d2 | ||
|
|
183f1531d3 | ||
|
|
6dfe0ec31e | ||
|
|
8b3f1cebda | ||
|
|
086daf913c | ||
|
|
6a3e2272e9 | ||
|
|
d0e0bf53a6 | ||
|
|
0009e4dfb9 | ||
|
|
30b7a9f172 | ||
|
|
c74cb59e08 | ||
|
|
c1f29a8e08 | ||
|
|
cb895ec335 | ||
|
|
2df4866cfa | ||
|
|
423a1cf486 | ||
|
|
7aeb63c817 | ||
|
|
476fa1f4d2 | ||
|
|
0bea215560 | ||
|
|
3c20b98d99 | ||
|
|
8bcdda29d4 | ||
|
|
c88036405f | ||
|
|
60cddab4f2 | ||
|
|
411ca1c050 | ||
|
|
d1be3a4a1d | ||
|
|
b5dd257427 | ||
|
|
4cf953678d | ||
|
|
ca5678c8c1 | ||
|
|
9e4594be53 | ||
|
|
d16c757c28 | ||
|
|
312bcafd05 | ||
|
|
be24652d4d | ||
|
|
6ab44d9439 | ||
|
|
108cb14d1f | ||
|
|
b98308b524 | ||
|
|
215c445583 | ||
|
|
20d8e32a58 | ||
|
|
33306b2749 | ||
|
|
94eeeba79a | ||
|
|
ecd29a289a | ||
|
|
e7d0af72e3 | ||
|
|
fcb1d3521a | ||
|
|
890bf3bd27 | ||
|
|
dafd81178f | ||
|
|
99dfdebc64 | ||
|
|
c1cfdd6323 | ||
|
|
264a9bc6ed | ||
|
|
f79f5cbf82 | ||
|
|
7313501e30 | ||
|
|
d8b2c819e7 | ||
|
|
69f6d14b81 | ||
|
|
9f3856e646 | ||
|
|
a46e2e9900 | ||
|
|
14f0dd2dd0 | ||
|
|
c051438fa1 | ||
|
|
52e32ac1d3 | ||
|
|
7f8ad34ba2 | ||
|
|
a9c0302454 | ||
|
|
a33e89b44a | ||
|
|
e203ecebee | ||
|
|
2f8e7f56b3 | ||
|
|
2443e1f38c | ||
|
|
eb164098b7 | ||
|
|
62527fa98a | ||
|
|
b9f8e80b14 | ||
|
|
b79e250ed2 | ||
|
|
fc5c9d8f17 | ||
|
|
72d57a8ee6 | ||
|
|
23262e30bc | ||
|
|
8b4ad40ed6 | ||
|
|
d7e9797365 | ||
|
|
e54e0c7877 | ||
|
|
5cb06d8fd6 | ||
|
|
2b34d4e1f7 | ||
|
|
c7aa095fac | ||
|
|
93f1784526 | ||
|
|
559dc503c2 | ||
|
|
414afe0935 | ||
|
|
4ad4f3fc70 | ||
|
|
67273eed9b | ||
|
|
3c63e1d8d9 | ||
|
|
cae555c977 | ||
|
|
407583e8e2 | ||
|
|
131645dc31 | ||
|
|
dafd644fe7 | ||
|
|
73cc1742af | ||
|
|
87afd7686f | ||
|
|
8ce10b5dfa | ||
|
|
943e31b35c | ||
|
|
20f85b94df | ||
|
|
17b784381e | ||
|
|
e3031fddb9 | ||
|
|
38c994a7ae | ||
|
|
85e2e96fb6 | ||
|
|
be35b3ad03 | ||
|
|
dbbd871ea1 | ||
|
|
813911db59 | ||
|
|
3c49b405de | ||
|
|
4cfffd6c4a | ||
|
|
e9f1c12f0f | ||
|
|
4fe252847c | ||
|
|
109cbbe9c5 | ||
|
|
fd3881eaa6 | ||
|
|
08ef208fb7 | ||
|
|
8c45e2a641 | ||
|
|
25dc520163 | ||
|
|
fc37ef9e4b | ||
|
|
11ba367fc9 | ||
|
|
78473f71eb | ||
|
|
8b77f40f99 | ||
|
|
d866716565 | ||
|
|
307d0effe2 | ||
|
|
b47b053e54 | ||
|
|
b79f01caf3 | ||
|
|
0db227f55e | ||
|
|
ac48b38842 | ||
|
|
0cbb9365c6 | ||
|
|
798b8c522b | ||
|
|
15bc7e19f9 | ||
|
|
0be3f1a063 | ||
|
|
c0257c6721 | ||
|
|
9aec0fc7de | ||
|
|
bce5e0d82c | ||
|
|
62032ee248 | ||
|
|
775645f29b | ||
|
|
99c0456872 | ||
|
|
0236bee5de | ||
|
|
59c11b82d5 | ||
|
|
98871d1e9e | ||
|
|
b40dc5d742 | ||
|
|
17b0723713 | ||
|
|
ec585e8907 | ||
|
|
0aeb25ff3b | ||
|
|
a928f2c4aa | ||
|
|
51fcee6f81 | ||
|
|
654be65590 | ||
|
|
105ec79b2b | ||
|
|
c759d8427a | ||
|
|
c7b03d6479 | ||
|
|
2080738883 | ||
|
|
48bc73c271 | ||
|
|
3d0969d1d1 | ||
|
|
323f195036 | ||
|
|
c3c392fc98 | ||
|
|
5d2944c211 | ||
|
|
fe3ba1dd11 | ||
|
|
0c00eb93a0 | ||
|
|
baa77ec13b | ||
|
|
9263652c6d | ||
|
|
bc74375543 | ||
|
|
edb1756050 | ||
|
|
5215f6f654 | ||
|
|
1913b4eeed | ||
|
|
b44a4da5df | ||
|
|
919878fbb2 | ||
|
|
06bdf83419 | ||
|
|
2ff2810a92 | ||
|
|
20d9c1b30d | ||
|
|
bbe10cb0cb | ||
|
|
daba8f3a70 | ||
|
|
1458c3668d | ||
|
|
980a47b42b | ||
|
|
f7ca561b06 | ||
|
|
cacd756efd | ||
|
|
8539e76cb9 | ||
|
|
3bbf694d5a | ||
|
|
44debdde62 | ||
|
|
c6cf2b8e93 | ||
|
|
69c5452b25 | ||
|
|
d321056e8d | ||
|
|
d9a1a59f22 | ||
|
|
0b898b5a8a | ||
|
|
a9e0885be0 | ||
|
|
57ff28c9b7 | ||
|
|
86cc34c0de | ||
|
|
39028f1bd4 | ||
|
|
71f4c05665 | ||
|
|
9ef9797998 | ||
|
|
ab9374de57 | ||
|
|
913e997061 | ||
|
|
8e50d6b6f3 | ||
|
|
2db0744a7b | ||
|
|
2de0028349 | ||
|
|
35d04c5398 | ||
|
|
b1becd0ed5 | ||
|
|
bd9650bc81 | ||
|
|
969a25d1b2 | ||
|
|
f144f77ba7 | ||
|
|
abea1f8910 | ||
|
|
8eaa7fec76 | ||
|
|
fdace647e8 | ||
|
|
d7531c18fc | ||
|
|
ef3f978784 | ||
|
|
e410860e0e | ||
|
|
c64fca1b0c | ||
|
|
15b2a3af91 | ||
|
|
8358505b6d | ||
|
|
1c42779845 | ||
|
|
32823f17e0 | ||
|
|
e1c2e3f5e9 | ||
|
|
044755b30f | ||
|
|
9aa22399a8 | ||
|
|
f564905ac4 | ||
|
|
00e4f81446 | ||
|
|
8927ddec16 | ||
|
|
f6525ae200 | ||
|
|
0be7944d66 | ||
|
|
47819ea86e | ||
|
|
96ce3461ad | ||
|
|
8b6d555421 | ||
|
|
3b9ef8dfc8 | ||
|
|
db6d4bcf47 | ||
|
|
471f1d694f | ||
|
|
495f6f6bd3 | ||
|
|
36e35b6f60 | ||
|
|
192606bc4b | ||
|
|
53a9fdf078 | ||
|
|
ef436bdbe8 | ||
|
|
72d722b07b | ||
|
|
21fc402c01 | ||
|
|
381f77756d | ||
|
|
a386562d9a | ||
|
|
2bc84fb163 | ||
|
|
08f8917acb | ||
|
|
62d205a2ec | ||
|
|
29e873b12d | ||
|
|
95f78080ab | ||
|
|
9549cfde02 | ||
|
|
2361aabbef | ||
|
|
e0cc8d2ce9 | ||
|
|
53c0e97117 | ||
|
|
bb44791bf3 | ||
|
|
9ebcfe9dff | ||
|
|
f339bf613c | ||
|
|
b00c59816d | ||
|
|
a00918116d | ||
|
|
d26c318321 | ||
|
|
eb8770506f | ||
|
|
c06171a802 | ||
|
|
5528c1eaa5 | ||
|
|
93516effe4 | ||
|
|
38e518c710 | ||
|
|
3f6133be27 | ||
|
|
c3bfb355c5 | ||
|
|
c69dd14cbc | ||
|
|
7954652b80 | ||
|
|
ca35b39900 | ||
|
|
09df9b90c3 | ||
|
|
308ae5cbf2 | ||
|
|
1cd5cdfccb | ||
|
|
606e7fd744 | ||
|
|
e8109b09b1 | ||
|
|
536ea60d73 | ||
|
|
3390b6446c | ||
|
|
bfc7f1e4ac | ||
|
|
8ba410a56e | ||
|
|
14d1da3ae0 | ||
|
|
2a72641a0b | ||
|
|
9c4e5dc3ee | ||
|
|
540e5ffa90 | ||
|
|
c1a57591ee | ||
|
|
1a4f72dd4f | ||
|
|
c3c8bbd3b2 | ||
|
|
fb7d34cea8 | ||
|
|
0866c1b52d | ||
|
|
136f728b49 | ||
|
|
5d28a857a4 | ||
|
|
edbe0d166c | ||
|
|
4db8c8b1a3 | ||
|
|
2b16b8604a | ||
|
|
f630929810 | ||
|
|
016abdfef6 | ||
|
|
fd915609cd | ||
|
|
064697fde6 | ||
|
|
a03fd7b81c | ||
|
|
1cfcbc50a6 | ||
|
|
ea1f138c08 | ||
|
|
d560207ea1 | ||
|
|
90b51831fd | ||
|
|
38ed8938d8 | ||
|
|
547e91dbf0 | ||
|
|
04da96e044 | ||
|
|
4a7def101b | ||
|
|
541e5a3b82 | ||
|
|
5af61716aa | ||
|
|
6f3e0051c3 | ||
|
|
703ecc3521 | ||
|
|
67b0f9aacd | ||
|
|
854277bae5 | ||
|
|
ca9760756a | ||
|
|
f1f993a25b | ||
|
|
eb0f727818 | ||
|
|
dc3d0289d6 | ||
|
|
bd830c6f4d | ||
|
|
51d602f973 | ||
|
|
30d5401f31 | ||
|
|
ab6b0f9843 | ||
|
|
c560327f26 | ||
|
|
28939dd45c | ||
|
|
3853e3d6f3 | ||
|
|
6062a1bd68 | ||
|
|
8d94688fd1 | ||
|
|
6b4532b592 | ||
|
|
286fb6f645 | ||
|
|
340caf5da3 | ||
|
|
171c4fd49f | ||
|
|
b8a0fb1dfe | ||
|
|
e65993bccb | ||
|
|
7ffb4660ec | ||
|
|
974f314f57 | ||
|
|
4cec22fa19 | ||
|
|
069477d35c | ||
|
|
eaff1a344e | ||
|
|
1fe1e39a88 | ||
|
|
33b06f56f0 | ||
|
|
61a84abe2a | ||
|
|
3d03100079 | ||
|
|
5297a52bf0 | ||
|
|
88631276e8 | ||
|
|
2c0d9ad64c | ||
|
|
5c691ed835 | ||
|
|
f73864a045 | ||
|
|
94da04fcac | ||
|
|
5f758fbd11 | ||
|
|
fb29529a52 | ||
|
|
3cd2673077 | ||
|
|
d242214e18 | ||
|
|
468b787272 | ||
|
|
cfdb6f851c | ||
|
|
7886f120f3 | ||
|
|
76fe69b133 | ||
|
|
e1bae4fc7e | ||
|
|
bc9705f758 | ||
|
|
c819e234b8 | ||
|
|
ce021b79a7 | ||
|
|
805a2f6f99 | ||
|
|
eb78400b53 | ||
|
|
4852f9ffbd | ||
|
|
c8d2ad2513 | ||
|
|
9f374c2050 | ||
|
|
5799852424 | ||
|
|
6417fa95cf | ||
|
|
61f6284a35 | ||
|
|
6b1a1a62a3 | ||
|
|
feacb4b481 | ||
|
|
fe3c874001 | ||
|
|
d9459b54d9 | ||
|
|
017be8a882 | ||
|
|
b86e543a13 |
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.dsw -crlf
|
||||||
43
.gitignore
vendored
Normal file
43
.gitignore
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
*.lib
|
||||||
|
*.pdb
|
||||||
|
*.dll
|
||||||
|
*.exe
|
||||||
|
*.obj
|
||||||
|
*.asc
|
||||||
|
.*.swp
|
||||||
|
Debug
|
||||||
|
Release
|
||||||
|
*.exp
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
aclocal.m4
|
||||||
|
autom4te.cache
|
||||||
|
config.guess
|
||||||
|
config.log
|
||||||
|
config.status
|
||||||
|
config.sub
|
||||||
|
configure
|
||||||
|
depcomp
|
||||||
|
libtool
|
||||||
|
ltmain.sh
|
||||||
|
compile
|
||||||
|
curl-config
|
||||||
|
libcurl.pc
|
||||||
|
missing
|
||||||
|
curl-*.tar.gz
|
||||||
|
curl-*.tar.bz2
|
||||||
|
curl-*.tar.lzma
|
||||||
|
curl-*.zip
|
||||||
|
INSTALL
|
||||||
|
install-sh
|
||||||
|
*.o
|
||||||
|
*.lo
|
||||||
|
*.la
|
||||||
|
mkinstalldirs
|
||||||
|
tags
|
||||||
|
TAGS
|
||||||
|
*~
|
||||||
|
aclocal.m4.bak
|
||||||
|
CHANGES.dist
|
||||||
106
Android.mk
Normal file
106
Android.mk
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
# Google Android makefile for curl and libcurl
|
||||||
|
#
|
||||||
|
# Place the curl source (including this makefile) into external/curl/ in the
|
||||||
|
# Android source tree. Then build them with 'make curl' or just 'make libcurl'
|
||||||
|
# from the Android root. Tested with Android 1.5 and 2.1
|
||||||
|
#
|
||||||
|
# Note: you must first create a curl_config.h file by running configure in the
|
||||||
|
# Android environment. The only way I've found to do this is tricky. Perform a
|
||||||
|
# normal Android build with libcurl in the source tree, providing the target
|
||||||
|
# "showcommands" to make. The build will eventually fail (because curl_config.h
|
||||||
|
# doesn't exist yet), but the compiler commands used to build curl will be
|
||||||
|
# shown. Now, from the external/curl/ directory, run curl's normal configure
|
||||||
|
# command with flags that match what Android itself uses. This will mean
|
||||||
|
# putting the compiler directory into the PATH, putting the -I, -isystem and
|
||||||
|
# -D options into CPPFLAGS, putting the -W, -m, -f, -O and -nostdlib options
|
||||||
|
# into CFLAGS, and putting the -Wl, -L and -l options into LIBS, along with the
|
||||||
|
# path to the files libgcc.a, crtbegin_dynamic.o, and ccrtend_android.o.
|
||||||
|
# Remember that the paths must be absolute since you will not be running
|
||||||
|
# configure from the same directory as the Android make. The normal
|
||||||
|
# cross-compiler options must also be set. Note that the -c, -o, -MD and
|
||||||
|
# similar flags must not be set.
|
||||||
|
#
|
||||||
|
# To see all the LIBS options, you'll need to do the "showcommands" trick on an
|
||||||
|
# executable that's already buildable and watch what flags Android uses to link
|
||||||
|
# it (dhcpcd is a good choice to watch). You'll also want to add -L options to
|
||||||
|
# LIBS that point to the out/.../obj/lib/ and out/.../obj/system/lib/
|
||||||
|
# directories so that additional libraries can be found and used by curl.
|
||||||
|
#
|
||||||
|
# The end result will be a configure command that looks something like this
|
||||||
|
# (the environment variable A is set to the Android root path which makes the
|
||||||
|
# command shorter):
|
||||||
|
#
|
||||||
|
# A=`realpath ../..` && \
|
||||||
|
# PATH="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/bin:$PATH" \
|
||||||
|
# ./configure --host=arm-linux CC=arm-eabi-gcc \
|
||||||
|
# CPPFLAGS="-I $A/system/core/include ..." \
|
||||||
|
# CFLAGS="-nostdlib -fno-exceptions -Wno-multichar ..." \
|
||||||
|
# LIBS="$A/prebuilt/linux-x86/toolchain/arm-eabi-X/lib/gcc/arm-eabi/X\
|
||||||
|
# /interwork/libgcc.a ..."
|
||||||
|
#
|
||||||
|
# Finally, copy the file COPYING to NOTICE so that the curl license gets put
|
||||||
|
# into the right place (but see the note about this below).
|
||||||
|
#
|
||||||
|
# Dan Fandrich
|
||||||
|
# August 2010
|
||||||
|
|
||||||
|
LOCAL_PATH:= $(call my-dir)
|
||||||
|
|
||||||
|
common_CFLAGS := -Wpointer-arith -Wwrite-strings -Wunused -Winline -Wnested-externs -Wmissing-declarations -Wmissing-prototypes -Wno-long-long -Wfloat-equal -Wno-multichar -Wsign-compare -Wno-format-nonliteral -Wendif-labels -Wstrict-prototypes -Wdeclaration-after-statement -Wno-system-headers -DHAVE_CONFIG_H
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# Build the libcurl library
|
||||||
|
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
include $(LOCAL_PATH)/lib/Makefile.inc
|
||||||
|
CURL_HEADERS := \
|
||||||
|
curlbuild.h \
|
||||||
|
curl.h \
|
||||||
|
curlrules.h \
|
||||||
|
curlver.h \
|
||||||
|
easy.h \
|
||||||
|
mprintf.h \
|
||||||
|
multi.h \
|
||||||
|
stdcheaders.h \
|
||||||
|
typecheck-gcc.h \
|
||||||
|
types.h
|
||||||
|
|
||||||
|
LOCAL_SRC_FILES := $(addprefix lib/,$(CSOURCES))
|
||||||
|
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/
|
||||||
|
LOCAL_CFLAGS += $(common_CFLAGS)
|
||||||
|
|
||||||
|
LOCAL_COPY_HEADERS_TO := libcurl/curl
|
||||||
|
LOCAL_COPY_HEADERS := $(addprefix include/curl/,$(CURL_HEADERS))
|
||||||
|
|
||||||
|
LOCAL_MODULE:= libcurl
|
||||||
|
|
||||||
|
# Copy the licence to a place where Android will find it.
|
||||||
|
# Actually, this doesn't quite work because the build system searches
|
||||||
|
# for NOTICE files before it gets to this point, so it will only be seen
|
||||||
|
# on subsequent builds.
|
||||||
|
ALL_PREBUILT += $(LOCAL_PATH)/NOTICE
|
||||||
|
$(LOCAL_PATH)/NOTICE: $(LOCAL_PATH)/COPYING | $(ACP)
|
||||||
|
$(copy-file-to-target)
|
||||||
|
|
||||||
|
include $(BUILD_STATIC_LIBRARY)
|
||||||
|
|
||||||
|
|
||||||
|
#########################
|
||||||
|
# Build the curl binary
|
||||||
|
|
||||||
|
include $(CLEAR_VARS)
|
||||||
|
include $(LOCAL_PATH)/src/Makefile.inc
|
||||||
|
LOCAL_SRC_FILES := $(addprefix src/,$(CURL_CFILES))
|
||||||
|
|
||||||
|
LOCAL_MODULE := curl
|
||||||
|
LOCAL_STATIC_LIBRARIES := libcurl
|
||||||
|
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||||
|
|
||||||
|
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include $(LOCAL_PATH)/lib
|
||||||
|
|
||||||
|
# This may also need to include $(CURLX_ONES) in order to correctly link
|
||||||
|
# if libcurl is changed to be built as a dynamic library
|
||||||
|
LOCAL_CFLAGS += $(common_CFLAGS)
|
||||||
|
|
||||||
|
include $(BUILD_EXECUTABLE)
|
||||||
|
|
||||||
441
CHANGES
441
CHANGES
@@ -1,436 +1,15 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
History of Changes
|
Changelog
|
||||||
|
|
||||||
|
This file no longer holds the changelog. Now you can generate it yourself
|
||||||
|
like this:
|
||||||
|
|
||||||
Version 7.9.5
|
$ git log --pretty=fuller --no-color --date=short --decorate=full | \
|
||||||
|
./log2changes.pl
|
||||||
|
|
||||||
Daniel (7 March 2002)
|
The older, manually edited, changelog is found in git named CHANGES.0
|
||||||
- Added docs/KNOWN_BUGS to the release archive.
|
|
||||||
|
|
||||||
Daniel (6 March 2002)
|
|
||||||
- Kevin Roth corrected a flaw in the curl client globbing code that made it
|
|
||||||
mess up backslashes. This was most notable on windows (cygwin) machines when
|
|
||||||
using file://.
|
|
||||||
|
|
||||||
- Brad provided another fix for building outside the source-tree.
|
|
||||||
|
|
||||||
- Ralph Mitchell patched away a few compiler warnings in tests/server/sws.c
|
|
||||||
|
|
||||||
Daniel (5 March 2002)
|
|
||||||
- I noticed that the typedef in curl.h for the progress callback prototype was
|
|
||||||
wrong and thus applications that used it would not get the proper input
|
|
||||||
data. It used size_t where the implementation actually uses doubles!
|
|
||||||
|
|
||||||
I wish I could blame someone else, but this was my fault. Again.
|
|
||||||
|
|
||||||
Version 7.9.5-pre6
|
|
||||||
|
|
||||||
Daniel (4 March 2002)
|
|
||||||
- Cut off the changes done during 2001 from this changelog file and put them
|
|
||||||
in a separate file (CHANGES.2001), available from CVS of course.
|
|
||||||
|
|
||||||
- I removed the multi directory. The example sources were moved to the
|
|
||||||
docs/examples directory where they belong.
|
|
||||||
|
|
||||||
- Wrote 7 new man pages for the current functions in the new multi interface.
|
|
||||||
They're all still pretty basic, but we can use them as a start and add more
|
|
||||||
contents to them when we figure out what to write. The large amount of man
|
|
||||||
pages for libcurl now present made me decide to put them in a new separate
|
|
||||||
subdirectory in the docs directory. Named libcurl.
|
|
||||||
|
|
||||||
- Giuseppe Corbelli provided a template file for the EPM package manager, it
|
|
||||||
gets generated nicely by the configure script now.
|
|
||||||
|
|
||||||
Version 7.9.5-pre5
|
|
||||||
|
|
||||||
Daniel (1 March 2002)
|
|
||||||
- Moved the memanalyze.pl script into the tests/ dir and added it to the
|
|
||||||
release archives. It was previously only present in the CVS tree.
|
|
||||||
|
|
||||||
- Modified the February 17th Host: fix, as bug report #523718 pointed out that
|
|
||||||
it caused crashes!
|
|
||||||
|
|
||||||
- Nico Baggus added more error codes to the VMS stuff.
|
|
||||||
|
|
||||||
- Wesley Laxton brought the code that introduced the new CURLOPT_PREQUOTE
|
|
||||||
option. It is just another FTP quote option that allows the user to specify
|
|
||||||
a list of FTP commands to issue *just before* the transfer command (RETR or
|
|
||||||
STOR etc). It has turned up a few systems that really need this.
|
|
||||||
|
|
||||||
The curl command line tool can also take advantage of this by prefixing the
|
|
||||||
quote commands with a plus (+) in similar style that post transfer quote
|
|
||||||
commands are specified.
|
|
||||||
|
|
||||||
This is not yet documented. There is no test case for this yet.
|
|
||||||
|
|
||||||
Daniel (28 February 2002)
|
|
||||||
- Ralph Mitchell made some serious efforts and put a lot of sweat in setting
|
|
||||||
up scripts and things for me to be able to repeat his problems, and I
|
|
||||||
finally could. I found a problem with the header byte counter that wasn't
|
|
||||||
increased properly and thus we could return CURLE_GOT_NOTHING when we in
|
|
||||||
fact had received data.
|
|
||||||
|
|
||||||
Daniel (27 February 2002)
|
|
||||||
- I had to revert the non-space parsing cookie fix I posted to the mailing
|
|
||||||
list. Expire dates do have spaces and still need to get parsed properly!
|
|
||||||
Instead we just ignore trailing white space and it seems to work...
|
|
||||||
|
|
||||||
Daniel (26 February 2002)
|
|
||||||
- Made the cookie property 'Max-Age' work, just since we already tried to
|
|
||||||
support it, it is better to do it right. No one uses this anyway.
|
|
||||||
|
|
||||||
- The cookie parser could crash if a really weird (illegal) cookie line was
|
|
||||||
received. I also made it better discard really oddly formatted lines better.
|
|
||||||
|
|
||||||
Made the cookie jar store the second field from the left using the syntax
|
|
||||||
that Netscape and Mozilla probably like. Curl itself ignores it.
|
|
||||||
|
|
||||||
Added test case 31 for these cases.
|
|
||||||
|
|
||||||
Clay Loveless' email regarding some cookie issues started my cleanup.
|
|
||||||
|
|
||||||
- Kevin Roth pointed out that my automake fiddles broke the ability to build
|
|
||||||
outside the source-tree and I posted a patch to the mailing list that brings
|
|
||||||
this ability back.
|
|
||||||
|
|
||||||
Version 7.9.5-pre4
|
|
||||||
|
|
||||||
Daniel (25 February 2002)
|
|
||||||
- Fiddled with the automake files to make all source files in the lib
|
|
||||||
directory not have ../src in the include path, and the src sources shouldn't
|
|
||||||
have ../lib!
|
|
||||||
|
|
||||||
- All 79 test cases ran OK under Linux and Solaris using the new HTTP server
|
|
||||||
in the test suite. The new HTTP server was first donated by Georg Horn and
|
|
||||||
subsequently modified to work with the test suite. It is currently still not
|
|
||||||
portable enough to run on "all over" but this is a start and I can run all
|
|
||||||
curl tests on my machines. This is an important requirement for the upcoming
|
|
||||||
public release.
|
|
||||||
|
|
||||||
- Using -d and -I on the same command line now reports an error, as it implies
|
|
||||||
two different HTTP requests that can't be mixed.
|
|
||||||
|
|
||||||
- Jeffrey Pohlmeyer provided a patch that made the -w/--write-out option
|
|
||||||
support %{content_type} to get the content type of the recent download.
|
|
||||||
|
|
||||||
- Kevin Roth reported that pre2 and pre3 didn't compile properly on cygwin,
|
|
||||||
and this was because I used #ifdef HAVE_WINSOCK_H in lib/multi.h to figure
|
|
||||||
out if we could include winsock.h which turns out not to be a wise choice to
|
|
||||||
do on cygwin since it has the file but can't include it!
|
|
||||||
|
|
||||||
Daniel (22 February 2002)
|
|
||||||
- Added src/config-vms.h to the release archive.
|
|
||||||
|
|
||||||
- Fixed the connection timeout value again, the change from February 18 wasn't
|
|
||||||
complete.
|
|
||||||
|
|
||||||
Version 7.9.5-pre3
|
|
||||||
|
|
||||||
Daniel (21 February 2002)
|
|
||||||
- Kevin Roth and Andr<64>s Garc<72>a both found out that lib/config.h.in was missing
|
|
||||||
in the pre-release archive and thus the configure script failed.
|
|
||||||
|
|
||||||
Version 7.9.5-pre2
|
|
||||||
|
|
||||||
Daniel (20 February 2002)
|
|
||||||
- Andr<64>s Garc<72>a provided a solution to bug report #515228. the total time
|
|
||||||
counter was not set correctly when -I was used during some conditions (all
|
|
||||||
headers were read in one single read).
|
|
||||||
|
|
||||||
- Nico Baggus provided a huge patch with minor tweaks all over to make curl
|
|
||||||
compile nicely on VMS.
|
|
||||||
|
|
||||||
Daniel (19 February 2002)
|
|
||||||
- Rick Richardson found out that by replacing PF_UNSPEC with PF_INET in the
|
|
||||||
getaddrinfo() calls, he could speed up some name resolving calls with an
|
|
||||||
order of magnitudes on his Redhat Linux 7.2.
|
|
||||||
|
|
||||||
- Philip Gladstone found a second INADDR_NONE problem where we used long
|
|
||||||
intead of in_addr_t which caused 64bit problemos. We really shouldn't define
|
|
||||||
that on two different places.
|
|
||||||
|
|
||||||
Daniel (18 February 2002)
|
|
||||||
- Philip Gladstone found a problem in how HTTP requests were sent if the
|
|
||||||
request couldn't be sent all at once.
|
|
||||||
|
|
||||||
- Emil found and corrected a bad connection timeout comparison that made curl
|
|
||||||
use the longest of connect-timeout and timout as a timeout value, instead of
|
|
||||||
the shortest as it was supposed to!
|
|
||||||
|
|
||||||
- Aron Roberts provided updated information about LDAP URL syntax to go into
|
|
||||||
the manual as a replacement for the old references.
|
|
||||||
|
|
||||||
Daniel (17 February 2002)
|
|
||||||
- Philip Gladstone pointed out two missing include files that made curl core
|
|
||||||
dump on 64bit architectures. We need to pay more attention on these details.
|
|
||||||
It is *lethal* to for example forget the malloc() prototype, as 'int' is
|
|
||||||
32bit and malloc() must return a 64bit pointer on these platforms.
|
|
||||||
|
|
||||||
- Giaslas Georgios fixed a problem with Host: headers on repeated requests on
|
|
||||||
the same handle using a proxy.
|
|
||||||
|
|
||||||
Daniel (8 February 2002)
|
|
||||||
- Hanno L. Kranzhoff accurately found out that disabling the Expect: header
|
|
||||||
when doing multipart formposts didn't work very well. It disabled other
|
|
||||||
parts of the request header too, resulting in a broken header. When I fixed
|
|
||||||
this, I also noticed that the Content-Type wasn't possible to disable. It is
|
|
||||||
now, even though it probably is really stupid to try to do this (because of
|
|
||||||
the boundary string that is included in the internally generated header,
|
|
||||||
used as form part separator.)
|
|
||||||
|
|
||||||
Daniel (7 February 2002)
|
|
||||||
- I moved the config*.h files from the root directory to the lib/ directory.
|
|
||||||
|
|
||||||
- I've added the new test suite HTTP server to the CVS repository, It seems to
|
|
||||||
work pretty good now, but we must make it get used by the test scripts
|
|
||||||
properly and then we need to make sure that it compiles, builds and runs on
|
|
||||||
most operating systems.
|
|
||||||
|
|
||||||
Version 7.9.5-pre1
|
|
||||||
|
|
||||||
Daniel (6 February 2002)
|
|
||||||
- Miklos Nemeth provided updated windows makefiles and INSTALL docs.
|
|
||||||
|
|
||||||
- Mr Larry Fahnoe found a problem with formposts and I managed to track down
|
|
||||||
and patch this bug. This was actually two bugs, as the posted size was also
|
|
||||||
said to be two bytes too large.
|
|
||||||
|
|
||||||
- Brent Beardsley found out and brought a correction for the
|
|
||||||
CURLINFO_CONTENT_TYPE parser that was off one byte. This was my fault, I
|
|
||||||
accidentaly broke Giaslas Georgios' patch.
|
|
||||||
|
|
||||||
Daniel (5 February 2002)
|
|
||||||
- Kevin Roth found yet another SSL download problem.
|
|
||||||
|
|
||||||
Version 7.9.4
|
|
||||||
|
|
||||||
- no changes since pre-release
|
|
||||||
|
|
||||||
Version 7.9.4-pre2
|
|
||||||
|
|
||||||
Daniel (3 February 2002)
|
|
||||||
- Eric Melville provided a few spelling corrections in the curl man page.
|
|
||||||
|
|
||||||
Daniel (1 February 2002)
|
|
||||||
- Andreas Damm corrected the unconditional use of gmtime() in getdate, it now
|
|
||||||
uses gmtime_r() on all hosts that have it.
|
|
||||||
|
|
||||||
Daniel (31 January 2002)
|
|
||||||
- An anonymous bug report identified a problem in the DNS caching which made it
|
|
||||||
sometimes allocate one byte too little to store the cache entry in. This
|
|
||||||
happened when the port number started with 1!
|
|
||||||
|
|
||||||
- Albert Chin provided a patch that improves the gethostbyname_r() configure
|
|
||||||
check on HP-UX 11.00.
|
|
||||||
|
|
||||||
Version 7.9.4-pre1
|
|
||||||
|
|
||||||
Daniel (30 January 2002)
|
|
||||||
- Georg Horn found another way the SSL reading failed due to the non-blocking
|
|
||||||
state of the sockets! I fixed.
|
|
||||||
|
|
||||||
Daniel (29 January 2002)
|
|
||||||
- Multipart formposts now send the full request properly, including the CRLF.
|
|
||||||
They were previously treated as part of the post data.
|
|
||||||
|
|
||||||
- The upload byte counter bugged.
|
|
||||||
|
|
||||||
- T. Bharath pointed out that we seed SSL on every connect, which is a time-
|
|
||||||
consuming operation that should only be needed to do once. We patched
|
|
||||||
libcurl to now only seed on the first connect when unseeded. The seeded
|
|
||||||
status is global so it'll now only happen once during a program's life time.
|
|
||||||
|
|
||||||
If the random_file or egdsocket is set, the seed will be re-made though.
|
|
||||||
|
|
||||||
- Giaslas Georgios introduced CURLINFO_CONTENT_TYPE that lets
|
|
||||||
curl_easy_getinfo() read the content-type from the previous request.
|
|
||||||
|
|
||||||
Daniel (28 January 2002)
|
|
||||||
- Kjetil Jacobsen found a way to crash curl and after much debugging, it
|
|
||||||
turned out it was a IPv4-linux only problem introduced in 7.9.3 related to
|
|
||||||
name resolving.
|
|
||||||
|
|
||||||
- Andreas Damm posted a huge patch that made the curl_getdate() function fully
|
|
||||||
reentrant!
|
|
||||||
|
|
||||||
- Steve Marx pointed out that you couldn't mix CURLOPT_CUSTOMREQUEST with
|
|
||||||
CURLOPT_POSTFIELDS. You can now!
|
|
||||||
|
|
||||||
Daniel (25 January 2002)
|
|
||||||
- Krishnendu Majumdar pointed out that the header length counter was not reset
|
|
||||||
between multiple requests on the same handle.
|
|
||||||
|
|
||||||
- Pedro Neves rightfully questioned why curl always append \r\n to the data
|
|
||||||
that is sent in HTTP POST requests. Unfortunately, this broke the test suite
|
|
||||||
as the test HTTP server is lame enough not to deal with this... :-O
|
|
||||||
|
|
||||||
- Following Location: headers when the connection didn't close didn't work as
|
|
||||||
libcurl didn't properly stop reading. This problem was added in 7.9.3 due to
|
|
||||||
the restructured internals. 'Frank' posted a bug report about this.
|
|
||||||
|
|
||||||
Daniel (24 January 2002)
|
|
||||||
- Kevin Roth very quickly spotted that we wrongly installed the example
|
|
||||||
programs that were built in the multi directory, when 'make install' was
|
|
||||||
used. :-/
|
|
||||||
|
|
||||||
Version 7.9.3
|
|
||||||
|
|
||||||
Daniel (23 January 2002)
|
|
||||||
- Andr<64>s Garc<72>a found a persistancy problem when doing HTTP HEAD, that made
|
|
||||||
curl "hang" until the connection was closed by the server. This problem has
|
|
||||||
been introduced in 7.9.3 due to internal rewrites, this was not present in
|
|
||||||
7.9.2.
|
|
||||||
|
|
||||||
Version 7.9.3-pre4
|
|
||||||
|
|
||||||
Daniel (19 January 2002)
|
|
||||||
- Antonio filed bug report #505514 and provided a fix! When doing multipart
|
|
||||||
formposts, libcurl would include an error text in the actual post if a
|
|
||||||
specified file wasn't found. This is not libcurl's job. Instead we add an
|
|
||||||
empty part.
|
|
||||||
|
|
||||||
Daniel (18 January 2002)
|
|
||||||
- Played around with stricter compiler warnings for gcc (when ./configure
|
|
||||||
--enable-debug is used) and changed some minor things to stop the warnings.
|
|
||||||
|
|
||||||
- Commented out the 'long long' and 'long double' checks in configure.in, as
|
|
||||||
we don't currently use them anyway and the code in lib/mprintf.c that use
|
|
||||||
them causes warnings.
|
|
||||||
|
|
||||||
- Saul Good and jonatan pointed out Mac OS X build problems with pre3 and how
|
|
||||||
to correct them. Two compiler warnings were removed as well.
|
|
||||||
|
|
||||||
- Andr<64>s Garc<72>a fixed two minor mingw32 building problems.
|
|
||||||
|
|
||||||
Version 7.9.3-pre3
|
|
||||||
|
|
||||||
Daniel (17 January 2002)
|
|
||||||
- docs/libcurl-the-guide is a new tutorial for our libcurl programming
|
|
||||||
friends.
|
|
||||||
|
|
||||||
- Richard Archer brought back the ability to compile and build with OpenSSL
|
|
||||||
versions before 0.9.5.
|
|
||||||
[http://sourceforge.net/tracker/?func=detail&atid=100976&aid=504163&group_id=976]
|
|
||||||
|
|
||||||
- The DNS cache code didn't take the port number into account, which made it
|
|
||||||
work rather bad on IPv6-enabled hosts (especially when doing passive
|
|
||||||
FTP). Sterling fixed it.
|
|
||||||
|
|
||||||
Daniel (16 January 2002)
|
|
||||||
- Georg Horn could make a transfer time-out without error text. I found it and
|
|
||||||
corrected it.
|
|
||||||
|
|
||||||
- SSL writes didn't work, they return an uninitialized value that caused
|
|
||||||
havoc all over. Georg Horn experienced this.
|
|
||||||
|
|
||||||
- Kevin Roth patched the curl_version() function to use the proper OpenSSL
|
|
||||||
function for version information. This way, curl will report the version of
|
|
||||||
the SSL library actually running right now, not the one that had its headers
|
|
||||||
installed when libcurl was built. Mainly intersting when running with shared
|
|
||||||
OpenSSL libraries.
|
|
||||||
|
|
||||||
Version 7.9.3-pre2
|
|
||||||
|
|
||||||
Daniel (16 January 2002)
|
|
||||||
- Mofied the main transfer loop and related stuff to deal with non-blocking
|
|
||||||
sockets in the upload section. While doing this, I've now separated the
|
|
||||||
connection oriented buffers to have one for downloads and one for uploads
|
|
||||||
(as two can happen simultaneously). I also shrunk the buffers to 20K
|
|
||||||
each. As we have a scratch buffer twice the size of the upload buffer, we
|
|
||||||
arrived at 80K for buffers compared with the previous 150K.
|
|
||||||
|
|
||||||
- Added the --cc option to curl-config command as it enables so very cool
|
|
||||||
one-liners. Have a go a this one, building the simple.c example:
|
|
||||||
|
|
||||||
$ `curl-config --cc --cflags --libs` -o example simple.c
|
|
||||||
|
|
||||||
Daniel (14 January 2002)
|
|
||||||
- I made all socket reads (recv) handle EWOULDBLOCK. I hope nicely. Now we
|
|
||||||
only need to address all writes (send) too and then I'm ready for another
|
|
||||||
pre-release...
|
|
||||||
|
|
||||||
- Stoned Elipot patched the in_addr_t configure test to make it work better on
|
|
||||||
more platforms.
|
|
||||||
|
|
||||||
Daniel (9 January 2002)
|
|
||||||
- Cris Bailiff found out that filling up curl's SSL session cache caused a
|
|
||||||
crash!
|
|
||||||
|
|
||||||
- Posted the curl questionnaire on the web site. If you haven't posted your
|
|
||||||
opinions there yet, go there and do it now while it is still there:
|
|
||||||
|
|
||||||
http://curl.haxx.se/q/
|
|
||||||
|
|
||||||
- Georg Horn quickly found out that the SSL reading no longer worked as
|
|
||||||
supposed since the switch to non-blocking sockets. I've made a quick patch
|
|
||||||
(for reading only) but we should improve it even further.
|
|
||||||
|
|
||||||
Version 7.9.3-pre1
|
|
||||||
|
|
||||||
Daniel (7 January 2002)
|
|
||||||
- I made the 'bool' typedef use an "unsigned char". It makes it the same on
|
|
||||||
all platforms, no matter what the platform thinks the default format for
|
|
||||||
char is. This was noticed since we made a silly comparison involving such a
|
|
||||||
bool variable, and only one compiler/platform combination (on Debian Linux)
|
|
||||||
complained about it (that happened to have its char unsigned by default).
|
|
||||||
|
|
||||||
- Bug report #495290 identified a cookie parsing problem that was corrected.
|
|
||||||
When a Set-Cookie: line is received without a trailing semicolon, libcurl
|
|
||||||
didn't read the last "name=value" pair of the line, leading to confusions...
|
|
||||||
|
|
||||||
- Sterling committed his updated DNS cache code.
|
|
||||||
|
|
||||||
- I worked with Georg Horn and comments from G<>tz Babin-Ebell and switched
|
|
||||||
curl's socket operations completely over to non-blocking for the entire
|
|
||||||
operation (previously we used non-blocking only for the connection phase).
|
|
||||||
We had to do this to make the SSL connection phase timeout properly without
|
|
||||||
the use of signals. A little extra code to deal with this was added.
|
|
||||||
|
|
||||||
- T. Bharath pointed out a slightly obscure cookie engine flaw.
|
|
||||||
|
|
||||||
- Pete Su pointed out that libcurl didn't treat HTTP code 204 as it should.
|
|
||||||
204-replies never provides a response-body. This resulted in bad persistant
|
|
||||||
behavior when 204 was received.
|
|
||||||
|
|
||||||
Daniel (5 January 2002)
|
|
||||||
- SM updated the VC++ library Makefiles for the new source files.
|
|
||||||
|
|
||||||
Daniel (4 January 2002)
|
|
||||||
- I discovered that we wrongly used inet_ntoa() (instead of inet_ntoa_r() in
|
|
||||||
two places in the source code). One happened with VERBOSE set on connects,
|
|
||||||
and the other when VERBOSE was on and krb4 over nat was used... I honestly
|
|
||||||
don't think anyone has suffered from these mistakes.
|
|
||||||
|
|
||||||
- I replaced a lot of silly occurances of printf() to instead use the more
|
|
||||||
appropriate Curl_infof() or Curl_failf(). The krb4 and telnet code were
|
|
||||||
affected.
|
|
||||||
|
|
||||||
- Philip Gladstone found a few more problems with 64-bit archs (the 64-bit
|
|
||||||
sparc on solaris 8).
|
|
||||||
|
|
||||||
- After discussions on the libcurl list with Raoul Cridlig, I just made FTP
|
|
||||||
response lines get passed to the header callback if such a one is
|
|
||||||
registered. It'll make it possible for any application to get all the
|
|
||||||
responses an FTP server sends to libcurl.
|
|
||||||
|
|
||||||
Daniel (3 January 2002)
|
|
||||||
- Sterling Hughes brought a few buckets of code. Now, libcurl will
|
|
||||||
automatically cache DNS lookups and re-use the previous results first if any
|
|
||||||
such is available. It greatly improves speed when doing many repeated
|
|
||||||
operations to the same host.
|
|
||||||
|
|
||||||
- As the test case uses --include and then --head, I had to modify src/main.c
|
|
||||||
to deal with this situation slightly better than previously. When done, we
|
|
||||||
have 100% good tests again in the main branch.
|
|
||||||
|
|
||||||
Daniel (2 January 2002)
|
|
||||||
- Made test case 25 run again in the multi-dev branch. But it seems that the
|
|
||||||
changes done on dec-20 made test case 104 cease to work (in both branches).
|
|
||||||
|
|
||||||
- Philip Gladstone pointed out a few portability problems in the source code
|
|
||||||
that didn't compile on 64-bit sparcs using Sun's native
|
|
||||||
|
|||||||
835
CHANGES.1999
835
CHANGES.1999
@@ -1,835 +0,0 @@
|
|||||||
Daniel (28 December 1999):
|
|
||||||
- Tim Verhoeven correctly identified that curl
|
|
||||||
doesn't support URL formatted file names when getting ftp. Now, there's a
|
|
||||||
problem with getting very weird file names off FTP servers. RFC 959 defines
|
|
||||||
that the file name syntax to use should be the same as in the native OS of
|
|
||||||
the server. Since we don't know the peer server system we currently just
|
|
||||||
translate the URL syntax into plain letters. It is still better and with
|
|
||||||
the solaris 2.6-supplied ftp server it works with spaces in the file names.
|
|
||||||
|
|
||||||
Daniel (27 December 1999):
|
|
||||||
- When curl parsed cookies straight off a remote site, it corrupted the input
|
|
||||||
data, which, if the downloaded headers were stored made very odd characters
|
|
||||||
in the saved data. Correctly identified and reported by Paul Harrington.
|
|
||||||
|
|
||||||
Daniel (13 December 1999):
|
|
||||||
- General cleanups in the library interface. There had been some bad kludges
|
|
||||||
added during times of stress and I did my best to clean them off. It was
|
|
||||||
both regarding the lib API as well as include file confusions.
|
|
||||||
|
|
||||||
Daniel (3 December 1999):
|
|
||||||
- A small --stderr bug was reported by Eetu Ojanen...
|
|
||||||
|
|
||||||
- who also brought the suggestion of extending the -X flag to ftp list as
|
|
||||||
well. So, now it is and the long option is now --request instead. It is
|
|
||||||
only for ftp list for now (and the former http stuff too of course).
|
|
||||||
|
|
||||||
Lars J. Aas (24 November 1999):
|
|
||||||
- Patched curl to compile and build under BeOS. Doesn't work yet though!
|
|
||||||
|
|
||||||
- Corrected the Makefile.am files to allow putting object files in
|
|
||||||
different directories than the sources.
|
|
||||||
|
|
||||||
Version 6.3.1
|
|
||||||
|
|
||||||
Daniel (23 November 1999):
|
|
||||||
- I've had this major disk crash. My good old trust-worthy source disk died
|
|
||||||
along with the machine that hosted it. Thank goodness most of all the
|
|
||||||
things I've done are either backed up elsewhere or stored in this CVS
|
|
||||||
server!
|
|
||||||
|
|
||||||
- Michael S. Steuer pointed out a bug in the -F handling
|
|
||||||
that made curl hang if you posted an empty variable such as '-F name='. It
|
|
||||||
was one of those old bugs that never have worked properly...
|
|
||||||
|
|
||||||
- Jason Baietto pointed out a general flaw in the HTTP
|
|
||||||
download. Curl didn't complain if it was prematurely aborted before the
|
|
||||||
entire download was completed. It does now.
|
|
||||||
|
|
||||||
Daniel (19 November 1999):
|
|
||||||
- Chris Maltby very accurately criticized the lack of
|
|
||||||
return code checks on the fwrite() calls. I did a thorough check for all
|
|
||||||
occurrences and corrected this.
|
|
||||||
|
|
||||||
Daniel (17 November 1999):
|
|
||||||
- Paul Harrington pointed out that the -m/--max-time option
|
|
||||||
doesn't work for the slow system calls like gethostbyname()... I don't have
|
|
||||||
any good fix yet, just a slightly less bad one that makes curl exit hard
|
|
||||||
when the timeout is reached.
|
|
||||||
|
|
||||||
- Bjorn Reese helped me point out a possible problem that might be the reason
|
|
||||||
why Thomas Hurst experience problems in his Amiga version.
|
|
||||||
|
|
||||||
Daniel (12 November 1999):
|
|
||||||
- I found a crash in the new cookie file parser. It crashed when you gave
|
|
||||||
a plain http header file as input...
|
|
||||||
|
|
||||||
Version 6.3
|
|
||||||
|
|
||||||
Daniel (10 November 1999):
|
|
||||||
- I kind of found out that the HTTP time-conditional GETs (-z) aren't always
|
|
||||||
respected by the web server and the document is therefore sent in whole
|
|
||||||
again, even though it doesn't match the requested condition. After reading
|
|
||||||
section 13.3.4 of RFC 2616, I think I'm doing the right thing now when I do
|
|
||||||
my own check as well. If curl thinks the condition isn't met, the transfer
|
|
||||||
is aborted prematurely (after all the headers have been received).
|
|
||||||
|
|
||||||
- After comments from Robert Linden I also rewrote some parts of the man page
|
|
||||||
to better describe how the -F works.
|
|
||||||
|
|
||||||
- Michael Anti put up a new curl download mirror in
|
|
||||||
China: http://www.pshowing.com/curl/
|
|
||||||
|
|
||||||
- I added the list of download mirrors to the README file
|
|
||||||
|
|
||||||
- I did add more explanations to the man page
|
|
||||||
|
|
||||||
Daniel (8 November 1999):
|
|
||||||
- I made the -b/--cookie option capable of reading netscape formatted cookie
|
|
||||||
files as well as normal http-header files. It should be able to
|
|
||||||
transparently figure out what kind of file it got as input.
|
|
||||||
|
|
||||||
Daniel (29 October 1999):
|
|
||||||
- Another one of Sebastiaan van Erk's ideas (that has been requested before
|
|
||||||
but I seem to have forgotten who it was), is to add support for ranges in
|
|
||||||
FTP downloads. As usual, one request is just a request, when they're two
|
|
||||||
it is a demand. I've added simple support for X-Y style fetches. X has to
|
|
||||||
be the lower number, though you may omit one of the numbers. Use the -r/
|
|
||||||
--range switch (previously HTTP-only).
|
|
||||||
|
|
||||||
- Sebastiaan van Erk suggested that curl should be
|
|
||||||
able to show the file size of a specified file. I think this is a splendid
|
|
||||||
idea and the -I flag is now working for FTP. It displays the file size in
|
|
||||||
this manner:
|
|
||||||
Content-Length: XXXX
|
|
||||||
As it resembles normal headers, and leaves us the opportunity to add more
|
|
||||||
info in that display if we can come up with more in the future! It also
|
|
||||||
makes sense since if you access ftp through a HTTP proxy, you'd get the
|
|
||||||
file size the same way.
|
|
||||||
|
|
||||||
I changed the order of the QUOTE command executions. They're now executed
|
|
||||||
just after the login and before any other command. I made this to enable
|
|
||||||
quote commands to run before the -I stuff is done too.
|
|
||||||
|
|
||||||
- I found out that -D/--dump-header and -V/--version weren't documented in
|
|
||||||
the man page.
|
|
||||||
|
|
||||||
- Many HTTP/1.1 servers do not support ranges. Don't ask me why. I did add
|
|
||||||
some text about this in the man page for the range option. The thread in
|
|
||||||
the mailing list that started this was initiated by Michael Anti.
|
|
||||||
|
|
||||||
- I get reports about nroff crashes on solaris 2.6+ when displaying the curl
|
|
||||||
man page. Switch to gnroff instead, it is reported to work(!). Adam Barclay
|
|
||||||
reported and brought the suggestion.
|
|
||||||
|
|
||||||
- In a dialogue with Johannes G. Kristinsson we came
|
|
||||||
up with the idea to let -H/--header specified headers replace the
|
|
||||||
internally generated headers, if you happened to select to add a header
|
|
||||||
that curl normally uses by itself. The advantage with this is not entirely
|
|
||||||
obvious, but in Johannes' case it means that he can use another Host: than
|
|
||||||
the one curl would set.
|
|
||||||
|
|
||||||
Daniel (27 October 1999):
|
|
||||||
- Jongki Suwandi brought a nice patch for (yet another) crash when following
|
|
||||||
a location:. This time you had to follow a https:// server's redirect to
|
|
||||||
get the core.
|
|
||||||
|
|
||||||
Version 6.2
|
|
||||||
|
|
||||||
Daniel (21 October 1999):
|
|
||||||
- I think I managed to remove the suspicious (nil) that has been seen just
|
|
||||||
before the "Host:" in HTTP requests when -v was used.
|
|
||||||
- I found out that if you followed a location: when using a proxy, without
|
|
||||||
having specified http:// in the URL, the protocol part was added once again
|
|
||||||
when moving to the next URL! (The protocol part has to be added to the
|
|
||||||
URL when going through a proxy since it has no protocol-guessing system
|
|
||||||
such as curl has.)
|
|
||||||
- Benjamin Ritcey reported a core dump under solaris 2.6
|
|
||||||
with OpenSSL 0.9.4. It turned out this was due to a bad free() in main.c
|
|
||||||
that occurred after the download was done and completed.
|
|
||||||
- Benjamin found ftp downloads to show the first line of the download meter
|
|
||||||
to get written twice, and I removed that problem. It was introduced with
|
|
||||||
the multiple URL support.
|
|
||||||
- Dan Zitter correctly pointed out that curl 6.1 and earlier versions didn't
|
|
||||||
honor RFC 2616 chapter 4 section 2, "Message Headers": "...Field names are
|
|
||||||
case-insensitive..." HTTP header parsing assumed a certain casing. Dan
|
|
||||||
also provided me with a patch that corrected this, which I took the liberty
|
|
||||||
of editing slightly.
|
|
||||||
- Dan Zitter also provided a nice patch for config.guess to better recognize
|
|
||||||
the Mac OS X
|
|
||||||
- Dan also corrected a minor problem in the lib/Makefile that caused linking
|
|
||||||
to fail on OS X.
|
|
||||||
|
|
||||||
Daniel (19 October 1999):
|
|
||||||
- Len Marinaccio came up with some problems with curl. Since Windows has a
|
|
||||||
crippled shell, it can't redirect stderr and that causes trouble. I added
|
|
||||||
--stderr today which allows the user to redirect the stderr stream to a
|
|
||||||
file or stdout.
|
|
||||||
|
|
||||||
Daniel (18 October 1999):
|
|
||||||
- The configure script now understands the '--without-ssl' flag, which now
|
|
||||||
totally disable SSL/https support. Previously it wasn't possible to force
|
|
||||||
the configure script to leave SSL alone. The previous functionality has
|
|
||||||
been retained. Troy Engel helped test this new one.
|
|
||||||
|
|
||||||
Version 6.1
|
|
||||||
|
|
||||||
Daniel (17 October 1999):
|
|
||||||
- I ifdef'ed or commented all the zlib stuff in the sources and configure
|
|
||||||
script. It turned out we needed to mock more with zlib than I initially
|
|
||||||
thought, to make it capable of downloading compressed HTTP documents and
|
|
||||||
uncompress them on the fly. I didn't mean the zlib parts of curl to become
|
|
||||||
more than minor so this means I halt the zlib expedition for now and wait
|
|
||||||
until someone either writes the code or zlib gets updated and better
|
|
||||||
adjusted for this kind of usage. I won't get into details here, but a
|
|
||||||
short a summary is suitable:
|
|
||||||
- zlib can't automatically detect whether to use zlib or gzip
|
|
||||||
decompression methods.
|
|
||||||
- zlib is very neat for reading gzipped files from a file descriptor,
|
|
||||||
although not as nice for reading buffer-based data such as we would
|
|
||||||
want it.
|
|
||||||
- there are still some problems with the win32 version when reading from
|
|
||||||
a file descriptor if that is a socket
|
|
||||||
|
|
||||||
Daniel (14 October 1999):
|
|
||||||
- Moved the (external) include files for libcurl into a subdirectory named
|
|
||||||
curl and adjusted all #include lines to use <curl/XXXX> to maintain a
|
|
||||||
better name space and control of the headers. This has been requested.
|
|
||||||
|
|
||||||
Daniel (12 October 1999):
|
|
||||||
- I modified the 'maketgz' script to perform a 'make' too before a release
|
|
||||||
archive is put together in an attempt to make the time stamps better and
|
|
||||||
hopefully avoid the double configure-running that use to occur.
|
|
||||||
|
|
||||||
Daniel (11 October 1999):
|
|
||||||
- Applied J<>rn's patches that fixes zlib for mingw32 compiles as well as
|
|
||||||
some other missing zlib #ifdef and more text on the multiple URL docs in
|
|
||||||
the man page.
|
|
||||||
|
|
||||||
Version 6.1beta
|
|
||||||
|
|
||||||
Daniel (6 October 1999):
|
|
||||||
- Douglas E. Wegscheid sent me a patch that made the exact same thing as I
|
|
||||||
just made: the -d switch is now capable of reading post data from a named
|
|
||||||
file or stdin. Use it similarly to the -F. To read the post data from a
|
|
||||||
given file:
|
|
||||||
|
|
||||||
curl -d @path/to/filename www.postsite.com
|
|
||||||
|
|
||||||
or let curl read it out from stdin:
|
|
||||||
|
|
||||||
curl -d @- www.postit.com
|
|
||||||
|
|
||||||
J<>rn Hartroth (3 October 1999):
|
|
||||||
- Brought some more patches for multiple URL functionality. The MIME
|
|
||||||
separation ideas are almost scrapped now, and a custom separator is being
|
|
||||||
used instead. This is still compile-time "flagged".
|
|
||||||
|
|
||||||
Daniel
|
|
||||||
- Updated curl.1 with multiple URL info.
|
|
||||||
|
|
||||||
Daniel (30 September 1999):
|
|
||||||
- Felix von Leitner brought openssl-check fixes for configure.in to work
|
|
||||||
out-of-the-box when the openssl files are installed in the system default
|
|
||||||
dirs.
|
|
||||||
|
|
||||||
Daniel (28 September 1999)
|
|
||||||
- Added libz functionality. This should enable decompressing gzip, compress
|
|
||||||
or deflate encoding HTTP documents. It also makes curl send an accept that
|
|
||||||
it accepts that kind of encoding. Compressed contents usually shortens
|
|
||||||
download time. I *need* someone to tell me a site that uses compressed HTTP
|
|
||||||
documents so that I can test this out properly.
|
|
||||||
|
|
||||||
- As a result of the adding of zlib awareness, I changed the version string
|
|
||||||
a little. I plan to add openldap version reporting in there too.
|
|
||||||
|
|
||||||
Daniel (17 September 1999)
|
|
||||||
- Made the -F option allow stdin when specifying files. By using '-' instead
|
|
||||||
of file name, the data will be read from stdin.
|
|
||||||
|
|
||||||
Version 6.0
|
|
||||||
|
|
||||||
Daniel (13 September 1999)
|
|
||||||
- Added -X/--http-request <request> to enable any HTTP command to be sent.
|
|
||||||
Do not that your server has to support the exact string you enter. This
|
|
||||||
should possibly a string like DELETE or TRACE.
|
|
||||||
|
|
||||||
- Applied Douglas' mingw32-fixes for the makefiles.
|
|
||||||
|
|
||||||
Daniel (10 September 1999)
|
|
||||||
- Douglas E. Wegscheid pointed out a problem. Curl didn't check the FTP
|
|
||||||
servers return code properly after the --quote commands were issued. It
|
|
||||||
took anything non 200 as an error, when all 2XX codes should be accepted as
|
|
||||||
OK.
|
|
||||||
|
|
||||||
- Sending cookies to the same site in multiple lines like curl used to do
|
|
||||||
turned out to be bad and breaking the cookie specs. Curl now sends all
|
|
||||||
cookies on a single Cookie: line. Curl is not yet RFC 2109 compliant, but I
|
|
||||||
doubt that many servers do use that syntax (yet).
|
|
||||||
|
|
||||||
Daniel (8 September 1999)
|
|
||||||
- J<>rn helped me make sure it still compiles nicely with mingw32 under win32.
|
|
||||||
|
|
||||||
Daniel (7 September 1999)
|
|
||||||
- FTP upload through proxy is now turned into a HTTP PUT. Requested by
|
|
||||||
Stefan Kanthak.
|
|
||||||
|
|
||||||
- Added the ldap files to the .m32 makefile.
|
|
||||||
|
|
||||||
Daniel (3 September 1999)
|
|
||||||
- Made cookie matching work while using HTTP proxy.
|
|
||||||
|
|
||||||
Bjorn Reese (31 August 1999)
|
|
||||||
- Passed his ldap:// patch. Note that this requires the openldap shared
|
|
||||||
library to be installed and that LD_LIBRARY_PATH points to the
|
|
||||||
directory where the lib will be found when curl is run with a
|
|
||||||
ldap:// URL.
|
|
||||||
|
|
||||||
J<>rn Hartroth (31 August 1999)
|
|
||||||
- Made the Mingw32 makefiles into single files.
|
|
||||||
- Made file:// work for Win32. The same code is now used for unix as well for
|
|
||||||
performance reasons.
|
|
||||||
|
|
||||||
Douglas E. Wegscheid (30 August 1999)
|
|
||||||
- Patched the Mingw32 makefiles for SSL builds.
|
|
||||||
|
|
||||||
Matthew Clarke (30 August 1999)
|
|
||||||
- Made a cool patch for configure.in to allow --with-ssl to specify the
|
|
||||||
root dir of the openssl installation, as in
|
|
||||||
|
|
||||||
./configure --with-ssl=/usr/ssl_here
|
|
||||||
|
|
||||||
- Corrected the 'reconf' script to work better with some shells.
|
|
||||||
|
|
||||||
J<>rn Hartroth (26 August 1999)
|
|
||||||
- Fixed the Mingw32 makefiles in lib/ and corrected the file.c for win32
|
|
||||||
compiles.
|
|
||||||
|
|
||||||
Version 5.11
|
|
||||||
|
|
||||||
Daniel (25 August 1999)
|
|
||||||
- John Weismiller pointed out a bug in the header-line
|
|
||||||
realloc() system in download.c.
|
|
||||||
|
|
||||||
- I added lib/file.[ch] to offer a first, simple, file:// support. It
|
|
||||||
probably won't do much good on win32 system at this point, but I see it
|
|
||||||
as a start.
|
|
||||||
|
|
||||||
- Made the release archives get a Makefile in the root dir, which can be
|
|
||||||
used to start the compiling/building process easier. I haven't really
|
|
||||||
changed any INSTALL text yet, I wanted to get some feed-back on this
|
|
||||||
first.
|
|
||||||
|
|
||||||
Daniel (17 August 1999)
|
|
||||||
- Another Location: bug. Curl didn't do proper relative locations if the
|
|
||||||
original URL had cgi-parameters that contained a slash. Nusu's page
|
|
||||||
again.
|
|
||||||
|
|
||||||
- Corrected the NO_PROXY usage. It is a list of substrings that if one of
|
|
||||||
them matches the tail of the host name it should connect to, curl should
|
|
||||||
not use a proxy to connect there. Pointed out to me by Douglas
|
|
||||||
E. Wegscheid. I also changed the README text a little regarding this.
|
|
||||||
|
|
||||||
Daniel (16 August 1999)
|
|
||||||
- Fixed a memory bug with http-servers that sent Location: to a Location:
|
|
||||||
page. Nusu's page showed this too.
|
|
||||||
|
|
||||||
- Made cookies work a lot better. Setting the same cookie name several times
|
|
||||||
used to add more cookies instead of replacing the former one which it
|
|
||||||
should've. Nusu <nus at intergorj.ro> brought me an URL that made this
|
|
||||||
painfully visible...
|
|
||||||
|
|
||||||
Troy (15 August 1999)
|
|
||||||
- Brought new .spec files as well as a patch for configure.in that lets the
|
|
||||||
configure script find the openssl files better, even when the include
|
|
||||||
files are in /usr/include/openssl
|
|
||||||
|
|
||||||
Version 5.10
|
|
||||||
|
|
||||||
Daniel (13 August 1999)
|
|
||||||
- SSL_CTX_set_default_passwd_cb() has been modified in the 0.9.4 version of
|
|
||||||
OpenSSL. Now why couldn't they simply add a *new* function instead of
|
|
||||||
modifying the parameters of an already existing function? This way, we get
|
|
||||||
a compiler warning if compiling with 0.9.4 but not with earlier. So, I had
|
|
||||||
to come up with a #if construction that deals with this...
|
|
||||||
|
|
||||||
- Made curl output the SSL version number get displayed properly with 0.9.4.
|
|
||||||
|
|
||||||
Troy (12 August 1999)
|
|
||||||
- Added MingW32 (GCC-2.95) support under Win32. The INSTALL file was also
|
|
||||||
a bit rearranged.
|
|
||||||
|
|
||||||
Daniel (12 August 1999)
|
|
||||||
- I had to copy a good <arpa/telnet.h> include file into the curl source
|
|
||||||
tree to enable the silly win32 systems to compile. The distribution rights
|
|
||||||
allows us to do that as long as the file remains unmodified.
|
|
||||||
|
|
||||||
- I corrected a few minor things that made the compiler complain when
|
|
||||||
-Wall -pedantic was used.
|
|
||||||
|
|
||||||
- I'm moving the official curl web page to http://curl.haxx.nu. I think it
|
|
||||||
will make it easier to remember as it is a lot shorter and less cryptic.
|
|
||||||
The old one still works and shows the same info.
|
|
||||||
|
|
||||||
Daniel (11 August 1999)
|
|
||||||
- Albert Chin-A-Young mailed me another correction for NROFF in the
|
|
||||||
configure.in that is supposed to be better for IRIX users.
|
|
||||||
|
|
||||||
Daniel (10 August 1999)
|
|
||||||
- Albert Chin-A-Young helped me with some stupid Makefile things, as well as
|
|
||||||
some fiddling with the getdate.c stuff that he had problems with under
|
|
||||||
HP-UX v10. getdate.y will now be compiled into getdate.c if the appropriate
|
|
||||||
yacc or bison is found by the configure script. Since this is slightly new,
|
|
||||||
we need to test the output getdate.c with win32 systems to make sure it
|
|
||||||
still compiles there.
|
|
||||||
|
|
||||||
Daniel (5 August 1999)
|
|
||||||
- I've just setup a new mailing list with the intention to keep discussions
|
|
||||||
around libcurl development in it. I mainly expect it to be for thoughts and
|
|
||||||
brainstorming around a "next generation" library, rather than nitpicking
|
|
||||||
about the current implementation or details in the current libcurl.
|
|
||||||
|
|
||||||
To join our happy bunch of future-looking geeks, enter 'subscribe
|
|
||||||
<address>' in the body of a mail and send it to
|
|
||||||
libcurl-request@listserv.fts.frontec.se. Curl bug reports, the usual curl
|
|
||||||
talk and everything else should still be kept in this mailing list. I've
|
|
||||||
started to archive this mailing list and have put the libcurl web page at
|
|
||||||
www.fts.frontec.se/~dast/libcurl/.
|
|
||||||
|
|
||||||
- Stefan Kanthak contacted me regarding a few problems in the configure
|
|
||||||
script which he discovered when trying to make curl compile and build under
|
|
||||||
Siemens SINIX-Z V5.42B2004!
|
|
||||||
|
|
||||||
- Marcus Klein very accurately informed me that src/version.h was not present
|
|
||||||
in the CVS repository. Oh, how silly...
|
|
||||||
|
|
||||||
- Linus Nielsen rewrote the telnet:// part and now curl offers limited telnet
|
|
||||||
support. If you run curl like 'curl telnet://host' you'll get all output on
|
|
||||||
the screen and curl will read input from stdin. You'll be able to login and
|
|
||||||
run commands etc, but since the output is buffered, expect to get a little
|
|
||||||
weird output.
|
|
||||||
|
|
||||||
This is still in its infancy and it might get changed. We need your
|
|
||||||
feed-back and input in how this is best done.
|
|
||||||
|
|
||||||
WIN32 NOTE: I bet we'll get problems when trying to compile the current
|
|
||||||
lib/telnet.c on win32, but I think we can sort them out in time.
|
|
||||||
|
|
||||||
- David Sanderson reported that FORCE_ALLOCA_H or HAVE_ALLOCA_H must be
|
|
||||||
defined for getdate.c to compile properly on HP-UX 11.0. I updated the
|
|
||||||
configure script to check for alloca.h which should make it.
|
|
||||||
|
|
||||||
Daniel (4 August 1999)
|
|
||||||
- I finally got to understand Marcus Klein's ftp download resume problem,
|
|
||||||
which turns out to be due to different outputs from different ftp
|
|
||||||
servers. It makes ftp download resuming a little trickier, but I've made
|
|
||||||
some modifications I really believe will work for most ftp servers and I do
|
|
||||||
hope you report if you have problems with this!
|
|
||||||
|
|
||||||
- Added text about file transfer resuming to README.curl.
|
|
||||||
|
|
||||||
Daniel (2 August 1999)
|
|
||||||
- Applied a progress-bar patch from Lars J. Aas. It offers
|
|
||||||
a new styled progress bar enabled with -#/--progress-bar.
|
|
||||||
|
|
||||||
T. Yamada <tai at imasy.or.jp> (30 July 1999)
|
|
||||||
- It breaks with segfault when 1) curl is using .netrc to obtain
|
|
||||||
username/password (option '-n'), and 2) is automatically redirected to
|
|
||||||
another location (option '-L').
|
|
||||||
|
|
||||||
There is a small bug in lib/url.c (block starting from line 641), which
|
|
||||||
tries to take out username/password from user- supplied command-line
|
|
||||||
argument ('-u' option). This block is never executed on first attempt since
|
|
||||||
CONF_USERPWD bit isn't set at first, but curl later turns it on when it
|
|
||||||
checks for CONF_NETRC bit. So when curl tries to redo everything due to
|
|
||||||
redirection, it segfaults trying to access *data->userpwd.
|
|
||||||
|
|
||||||
Version 5.9.1
|
|
||||||
|
|
||||||
Daniel (30 July 1999)
|
|
||||||
- Steve Walch pointed out that there is a memory leak in the formdata
|
|
||||||
functions. I added a FormFree() function that is now used and supposed to
|
|
||||||
correct this flaw.
|
|
||||||
|
|
||||||
- Mark Wotton reported:
|
|
||||||
'curl -L https://www.cwa.com.au/' core dumps. I managed to cure this by
|
|
||||||
correcting the cleanup procedure. The bug seems to be gone with my OpenSSL
|
|
||||||
0.9.2b, although still occurs when I run the ~100 years old SSLeay 0.8.0. I
|
|
||||||
don't know whether it is curl or SSLeay that is to blame for that.
|
|
||||||
|
|
||||||
- Marcus Klein:
|
|
||||||
Reported an FTP upload resume bug that I really can't repeat nor understand.
|
|
||||||
I leave it here so that it won't be forgotten.
|
|
||||||
|
|
||||||
Daniel (29 July 1999)
|
|
||||||
- Costya Shulyupin suggested support for longer URLs when following Location:
|
|
||||||
and I could only agree and fix it!
|
|
||||||
|
|
||||||
- Leigh Purdie found a problem in the upload/POST department. It turned out
|
|
||||||
that http.c accidentaly cleared the pointer instead of the byte counter
|
|
||||||
when supposed to.
|
|
||||||
|
|
||||||
- Costya Shulyupin pointed out a problem with port numbers and Location:. If
|
|
||||||
you had a server at a non-standard port that redirected to an URL using a
|
|
||||||
standard port number, curl still used that first port number.
|
|
||||||
|
|
||||||
- Ralph Beckmann pointed out a problem when using both CONF_FOLLOWLOCATION
|
|
||||||
and CONF_FAILONERROR simultaneously. Since the CONF_FAILONERROR exits on
|
|
||||||
the 302-code that the follow location header outputs it will never show any
|
|
||||||
html on location: pages. I have now made it look for >=400 codes if
|
|
||||||
CONF_FOLLOWLOCATION is set.
|
|
||||||
|
|
||||||
- 'struct slist' is now renamed to 'struct curl_slist' (as suggested by Ralph
|
|
||||||
Beckmann).
|
|
||||||
|
|
||||||
- Joshua Swink and Rick Welykochy were the first to point out to me that the
|
|
||||||
latest OpenSSL package now have moved the standard include path. It is now
|
|
||||||
in /usr/local/ssl/include/openssl and I have now modified the --enable-ssl
|
|
||||||
option for the configure script to use that as the primary path, and I
|
|
||||||
leave the former path too to work with older packages of OpenSSL too.
|
|
||||||
|
|
||||||
Daniel (9 June 1999)
|
|
||||||
- I finally understood the IRIX problem and now it seem to compile on it!
|
|
||||||
I am gonna remove those #define strcasecmp() things once and for all now.
|
|
||||||
|
|
||||||
Daniel (4 June 1999)
|
|
||||||
- I adjusted the FTP reply 227 parser to make the PASV command work better
|
|
||||||
with more ftp servers. Appearantly the Roxen Challanger server replied
|
|
||||||
something curl 5.9 could deal with! :-( Reported by Ashley Reid-Montanaro
|
|
||||||
and Mark Butler brought a solution for it.
|
|
||||||
|
|
||||||
Daniel (26 May 1999)
|
|
||||||
- Rearranged. README is new, the old one is now README.curl and I added a
|
|
||||||
README.libcurl with text I got from Ralph Beckmann.
|
|
||||||
|
|
||||||
- I also updated the INSTALL text.
|
|
||||||
|
|
||||||
Daniel (25 May 1999)
|
|
||||||
- David Jonathan Lowsky correctly pointed out that curl didn't properly deal
|
|
||||||
with form posting where the variable shouldn't have any content, as in curl
|
|
||||||
-F "form=" www.site.com. It was now fixed.
|
|
||||||
|
|
||||||
Version 5.9
|
|
||||||
|
|
||||||
Daniel (22 May 1999)
|
|
||||||
- I've got a bug report from Aaron Scarisbrick in which he states he has some
|
|
||||||
problems with -L under FreeBSD 3.0. I have previously got another bug
|
|
||||||
report from Stefan Grether which points at an error with similar sympthoms
|
|
||||||
when using win32. I made the allocation of the new url string a bit faster
|
|
||||||
and different, don't know if it actually improves anything though...
|
|
||||||
|
|
||||||
Daniel (20 May 1999)
|
|
||||||
- Made the cookie parser deal with CRLF newlines too.
|
|
||||||
|
|
||||||
Daniel (19 May 1999)
|
|
||||||
- Download() didn't properly deal with failing return codes from the sread()
|
|
||||||
function. Adam Coyne found the problem in the win32 version, and Troy Engel
|
|
||||||
helped me out isolating it.
|
|
||||||
|
|
||||||
Daniel (16 May 1999)
|
|
||||||
- Richard Adams pointed out a bug I introduced in 5.8. --dump-header doesn't
|
|
||||||
work anymore! :-/ I fixed it now.
|
|
||||||
|
|
||||||
- After a suggestion by Joshua Swink I added -S / --show-error to force curl
|
|
||||||
to display the error message in case of an error, even if -s/--silent was
|
|
||||||
used.
|
|
||||||
|
|
||||||
Daniel (10 May 1999)
|
|
||||||
- I moved the stuff concerning HTTP, DICT and TELNET it their own source
|
|
||||||
files now. It is a beginning on my clean-up of the sources to make them
|
|
||||||
layer all those protocols better to enable more to be added easier in the
|
|
||||||
future!
|
|
||||||
|
|
||||||
- Leon Breedt sent me some files I've not put into the main curl
|
|
||||||
archive. They're for creating the Debian package thingie. He also sent me a
|
|
||||||
debian package that I've made available for download at the web page
|
|
||||||
|
|
||||||
Daniel (9 May 1999)
|
|
||||||
- Made it compile on cygwin too.
|
|
||||||
|
|
||||||
Troy Engel (7 May 1999)
|
|
||||||
- Brought a series of patches to allow curl to compile smoothly on MSVC++ 6
|
|
||||||
again!
|
|
||||||
|
|
||||||
Daniel (6 May 1999)
|
|
||||||
- I changed the #ifdef HAVE_STRFTIME placement for the -z code so that it
|
|
||||||
will be easier to discover systems that don't have that function and thus
|
|
||||||
can't use -z successfully. Made the strftime() get used if WIN32 is defined
|
|
||||||
too.
|
|
||||||
|
|
||||||
Version 5.8
|
|
||||||
|
|
||||||
Daniel (5 May 1999)
|
|
||||||
- I've had it with this autoconf/automake mess. It seems to work allright
|
|
||||||
for most people who don't have automake installed, but for those who have
|
|
||||||
there are problems all over.
|
|
||||||
|
|
||||||
I've got like five different bug reports on this only the last
|
|
||||||
week... Claudio Neves and Federico Bianchi and root <duggerj001 at
|
|
||||||
hawaii.rr.com> are some of them reporting this.
|
|
||||||
|
|
||||||
Currently, I have no really good fix since I want to use automake myself to
|
|
||||||
generate the Makefile.in files. I've found out that the @SHELL@-problems
|
|
||||||
can often be fixed by manually invoking 'automake' in the archive root
|
|
||||||
before you run ./configure... I've hacked my maketgz script now to fiddle
|
|
||||||
a bit with this and my tests seem to work better than before at least!
|
|
||||||
|
|
||||||
Daniel (4 May 1999)
|
|
||||||
- mkhelp.pl has been doing badly lately. I corrected a case problem in
|
|
||||||
the regexes.
|
|
||||||
|
|
||||||
- I've now remade the -o option to not touch the file unless it needs to.
|
|
||||||
I had to do this to make -z option really fine, since now you can make a
|
|
||||||
curl fetch and use a local copy's time when downloading to that file, as
|
|
||||||
in:
|
|
||||||
|
|
||||||
curl -z dump -o dump remote.site.com/file.html
|
|
||||||
|
|
||||||
This will only get the file if the remote one is newer than the local.
|
|
||||||
I'm aware that this alters previous behaviour a little. Some scripts out
|
|
||||||
there may depend on that the file is always touched...
|
|
||||||
|
|
||||||
- Corrected a bug in the SSLv2/v3 selection.
|
|
||||||
|
|
||||||
- Felix von Leitner requested that curl should be able to send
|
|
||||||
"If-Modified-Since" headers, which indeed is a fair idea. I implemented it
|
|
||||||
right away! Try -z <expression> where expression is a full GNU date
|
|
||||||
expression or a file name to get the date from!
|
|
||||||
|
|
||||||
Stephan Lagerholm (30 Apr 1999)
|
|
||||||
- Pointed out a problem with the src/Makefile for FreeBSD. The RM variable
|
|
||||||
isn't set and causes the make to fail.
|
|
||||||
|
|
||||||
Daniel (26 April 1999)
|
|
||||||
- Am I silly or what? Irving Wolfe pointed out to me that the curl version
|
|
||||||
number was not set properly. Hasn't been since 5.6. This was due to a bug
|
|
||||||
in my maketgz script!
|
|
||||||
|
|
||||||
David Eriksson (25 Apr 1999)
|
|
||||||
- Found a bug in cookies.c that made it crash at times.
|
|
||||||
|
|
||||||
Version 5.7.1
|
|
||||||
|
|
||||||
Doug Kaufman (23 Apr 1999)
|
|
||||||
- Brought two sunos 4 fixes. One of them being the hostip.c fix mentioned
|
|
||||||
below and the other one a correction in include/stdcheaders.h
|
|
||||||
|
|
||||||
- Added a paragraph about compiling with the US-version of openssl to the
|
|
||||||
INSTALL file.
|
|
||||||
|
|
||||||
Daniel
|
|
||||||
- New mailing list address. Info updated on the web page as well as in the
|
|
||||||
README file
|
|
||||||
|
|
||||||
Greg Onufer (20 Apr 1999)
|
|
||||||
- hostip.c didn't compile properly on SunOS 5.5.1.
|
|
||||||
It needs an #include <sys/types.h>
|
|
||||||
|
|
||||||
Version 5.7
|
|
||||||
|
|
||||||
Daniel (Apr 20 1999)
|
|
||||||
- Decided to upload a non-beta version right now!
|
|
||||||
|
|
||||||
- Made curl support any-length HTTP headers. The destination buffer is now
|
|
||||||
simply enlarged every time it turns out to be too small!
|
|
||||||
|
|
||||||
- Added the FAQ file to the archive. Still a bit smallish, but it is a
|
|
||||||
start.
|
|
||||||
|
|
||||||
Eric Thelin (15 Apr 1999)
|
|
||||||
- Made -D accept '-' instead of filename to write to stdout.
|
|
||||||
|
|
||||||
Version 5.6.3beta
|
|
||||||
|
|
||||||
Daniel (Apr 12 1999)
|
|
||||||
|
|
||||||
- Changed two #ifdef WIN32 to better #ifdef <errorcode> when connect()ing
|
|
||||||
in url.c and ftp.c. Makes cygwin32 deal with them better too. We should
|
|
||||||
try to get some decent win32-replacement there. Anyone?
|
|
||||||
|
|
||||||
- The old -3/--crlf option is now ONLY --crlf!
|
|
||||||
|
|
||||||
- I changed the "SSL fix" to a more lame one, but that doesn't remove as
|
|
||||||
much functionality. Now I've enabled the lib to select what SSL version it
|
|
||||||
should try first. Appearantly some older SSL-servers don't like when you
|
|
||||||
talk v3 with them so you need to be able to force curl to talk v2 from the
|
|
||||||
start. The fix dated April 6 and posted on the mailing list forced curl to
|
|
||||||
use v2 at all times using a modern OpenSSL version, but we don't really
|
|
||||||
want such a crippled solution.
|
|
||||||
|
|
||||||
- Marc Boucher sent me a patch that corrected a math error for the
|
|
||||||
"Curr.Speed" progress meter.
|
|
||||||
|
|
||||||
- Eric Thelin sent me a patch that enables '-K -' to read a config file from
|
|
||||||
stdin.
|
|
||||||
|
|
||||||
- I found out we didn't close the file properly before so I added it!
|
|
||||||
|
|
||||||
Daniel (Apr 9 1999)
|
|
||||||
- Yu Xin pointed out a problem with ftp download resume. It didn't work at
|
|
||||||
all! ;-O
|
|
||||||
|
|
||||||
Daniel (Apr 6 1999)
|
|
||||||
- Corrected the version string part generated for the SSL version.
|
|
||||||
|
|
||||||
- I found a way to make some other SSL page work with openssl 0.9.1+ that
|
|
||||||
previously didn't (ssleay 0.8.0 works with it though!). Trying to get
|
|
||||||
some real info from the OpenSSL guys to see how I should do to behave the
|
|
||||||
best way. SSLeay 0.8.0 shouldn't be that much in use anyway these days!
|
|
||||||
|
|
||||||
Version 5.6.2beta
|
|
||||||
|
|
||||||
Daniel (Apr 4 1999)
|
|
||||||
- Finally have curl more cookie "aware". Now read carefully. This is how
|
|
||||||
it works.
|
|
||||||
To make curl read cookies from an already existing file, in plain header-
|
|
||||||
format (like from the headers of a previous fetch) invoke curl with the
|
|
||||||
-b flag like:
|
|
||||||
|
|
||||||
curl -b file http://site/foo.html
|
|
||||||
|
|
||||||
Curl will then use all cookies it finds matching. The old style that sets
|
|
||||||
a single cookie with -b is still supported and is used if the string
|
|
||||||
following -b includes a '=' letter, as in "-b name=daniel".
|
|
||||||
|
|
||||||
To make curl read the cookies sent in combination with a location: (which
|
|
||||||
sites often do) point curl to read a non-existing file at first (i.e
|
|
||||||
to start with no existing cookies), like:
|
|
||||||
|
|
||||||
curl -b nowhere http://site/setcookieandrelocate.html
|
|
||||||
|
|
||||||
- Added a paragraph in the TODO file about the SSL problems recently
|
|
||||||
reported. Evidently, some kind of SSL-problem curl may need to address.
|
|
||||||
|
|
||||||
- Better "Location:" following.
|
|
||||||
|
|
||||||
Douglas E. Wegscheid (Tue, 30 Mar 1999)
|
|
||||||
- A subsecond display patch.
|
|
||||||
|
|
||||||
Daniel (Mar 14 1999)
|
|
||||||
- I've separated the version number of libcurl and curl now. To make
|
|
||||||
things a little easier, I decided to start the curl numbering from
|
|
||||||
5.6 and the former version number known as "curl" is now the one
|
|
||||||
set for libcurl.
|
|
||||||
|
|
||||||
- Removed the 'enable-no-pass' from configure, I doubt anyone wanted
|
|
||||||
that.
|
|
||||||
|
|
||||||
- Made lots of tiny adjustments to compile smoothly with cygwin under
|
|
||||||
win32. It's a killer for porting this to win32, bye bye VC++! ;-)
|
|
||||||
Compiles and builds out-of-the-box now. See the new wordings in
|
|
||||||
INSTALL for details.
|
|
||||||
|
|
||||||
- Beginning experiments with downloading multiple document from a http
|
|
||||||
server while remaining connected.
|
|
||||||
|
|
||||||
Version 5.6beta
|
|
||||||
|
|
||||||
Daniel (Mar 13 1999)
|
|
||||||
- Since I've changed so much, I thought I'd just go ahead and implement the
|
|
||||||
suggestion from Douglas E. Wegscheid. -D or --dump-header is now storing
|
|
||||||
HTTP headers separately in the specified file.
|
|
||||||
|
|
||||||
- Added new text to INSTALL on what to do to build this on win32 now.
|
|
||||||
|
|
||||||
- Aaargh. I had to take a step back and prefix the shared #include files
|
|
||||||
in the sources with "../include/" to please VC++...
|
|
||||||
|
|
||||||
Daniel (Mar 12 1999)
|
|
||||||
- Split the url.c source into many tiny sources for better readability
|
|
||||||
and smaller size.
|
|
||||||
|
|
||||||
Daniel (Mar 11 1999)
|
|
||||||
- Started to change stuff for a move to make libcurl and a more separate
|
|
||||||
curl application that uses the libcurl. Made the libcurl sources into
|
|
||||||
the new lib directory while the curl application will remain in src as
|
|
||||||
before. New makefiles, adjusted configure script and so.
|
|
||||||
|
|
||||||
libcurl.a built quickly and easily. I better make a better interface to
|
|
||||||
the lib functions though.
|
|
||||||
|
|
||||||
The new root dir include/ is supposed to contain the public information
|
|
||||||
about the new libcurl. It is a little ugly so far :-)
|
|
||||||
|
|
||||||
|
|
||||||
Daniel (Mar 1 1999)
|
|
||||||
- Todd Kaufmann sent me a good link to Netscape's cookie spec as well as the
|
|
||||||
info that RFC 2109 specifies how to use them. The link is now in the
|
|
||||||
README and the RFC in the RESOURCES.
|
|
||||||
|
|
||||||
Daniel (Feb 23 1999)
|
|
||||||
- Finally made configure accept --with-ssl to look for SSL libs and includes
|
|
||||||
in the "standard" place /usr/local/ssl...
|
|
||||||
|
|
||||||
Daniel (Feb 22 1999)
|
|
||||||
- Verified that curl linked fine with OpenSSL 0.9.1c which seems to be
|
|
||||||
the most recent.
|
|
||||||
|
|
||||||
Henri Gomez (Fri Feb 5 1999)
|
|
||||||
- Sent in an updated curl-ssl.spec. I still miss the script that builds an
|
|
||||||
RPM automatically...
|
|
||||||
|
|
||||||
Version 5.5.1
|
|
||||||
|
|
||||||
Mark Butler (27 Jan 1999)
|
|
||||||
- Corrected problems in Download().
|
|
||||||
|
|
||||||
Danitel Stenberg (25 Jan 1999)
|
|
||||||
- Jeremie Petit pointed out a few flaws in the source that prevented it from
|
|
||||||
compile warning free with the native compiler under Digital Unix v4.0d.
|
|
||||||
|
|
||||||
Version 5.5
|
|
||||||
|
|
||||||
Daniel Stenberg (15 Jan 1999)
|
|
||||||
- Added Bjorns small text to the README about the DICT protocol.
|
|
||||||
|
|
||||||
Daniel Stenberg (11 Jan 1999)
|
|
||||||
- <jswink at softcom.net> reported about the win32-versioin: "Doesn't use
|
|
||||||
ALL_PROXY environment variable". Turned out to be because of the static-
|
|
||||||
buffer nature of the win32 environment variable calls!
|
|
||||||
|
|
||||||
Bjorn Reese (10 Jan 1999)
|
|
||||||
- I have attached a simple addition for the DICT protocol (RFC 2229).
|
|
||||||
It performs dictionary lookups. The output still needs to be better
|
|
||||||
formatted.
|
|
||||||
|
|
||||||
To test it try (the exact format, and more examples are described in
|
|
||||||
the RFC)
|
|
||||||
|
|
||||||
dict://dict.org/m:hello
|
|
||||||
dict://dict.org/m:hello::soundex
|
|
||||||
|
|
||||||
|
|
||||||
Vicente Garcia (10 Jan 1999)
|
|
||||||
- Corrected the progress meter for files larger than 20MB.
|
|
||||||
|
|
||||||
Daniel Stenberg (7 Jan 1999)
|
|
||||||
- Corrected the -t and -T help texts. They claimed to be FTP only.
|
|
||||||
|
|
||||||
Version 5.4
|
|
||||||
|
|
||||||
Daniel Stenberg
|
|
||||||
(7 Jan 1999)
|
|
||||||
- Irving Wolfe reported that curl -s didn't always supress the progress
|
|
||||||
reporting. It was the form post that autoamtically always switched it on
|
|
||||||
again. This is now corrected!
|
|
||||||
|
|
||||||
(4 Jan 1999)
|
|
||||||
- Andreas Kostyrka suggested I'd add PUT and he helped me out to test it. If
|
|
||||||
you use -t or -T now on a http or https server, PUT will be used for file
|
|
||||||
upload.
|
|
||||||
|
|
||||||
I removed the former use of -T with HTTP. I doubt anyone ever really used
|
|
||||||
that.
|
|
||||||
|
|
||||||
(4 Jan 1999)
|
|
||||||
- Erik Jacobsen found a width bug in the mprintf() function. I corrected it
|
|
||||||
now.
|
|
||||||
|
|
||||||
(4 Jan 1999)
|
|
||||||
- As John V. Chow pointed out to me, curl accepted very limited URL sizes. It
|
|
||||||
should now accept path parts that are up to at least 4096 bytes.
|
|
||||||
|
|
||||||
- Somehow I screwed up when applying the AIX fix from Gilbert Ramirez, so
|
|
||||||
I redid that now.
|
|
||||||
|
|
||||||
1381
CHANGES.2000
1381
CHANGES.2000
File diff suppressed because it is too large
Load Diff
1957
CHANGES.2001
1957
CHANGES.2001
File diff suppressed because it is too large
Load Diff
2
CMake/CMakeConfigurableFile.in
Normal file
2
CMake/CMakeConfigurableFile.in
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
@CMAKE_CONFIGURABLE_FILE_CONTENT@
|
||||||
|
|
||||||
44
CMake/CheckTypeSize.c.in
Normal file
44
CMake/CheckTypeSize.c.in
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
#cmakedefine CHECK_TYPE_SIZE_TYPE @CHECK_TYPE_SIZE_TYPE@
|
||||||
|
#ifdef CHECK_TYPE_SIZE_TYPE
|
||||||
|
|
||||||
|
@CHECK_TYPE_SIZE_PREINCLUDE@
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif /* HAVE_SYS_TYPES_H */
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
# include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
# include <winsock2.h>
|
||||||
|
# include <ws2tcpip.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_STDINT_H
|
||||||
|
# include <stdint.h>
|
||||||
|
#endif /* HAVE_STDINT_H */
|
||||||
|
|
||||||
|
#ifdef HAVE_STDDEF_H
|
||||||
|
# include <stddef.h>
|
||||||
|
#endif /* HAVE_STDDEF_H */
|
||||||
|
|
||||||
|
@CHECK_TYPE_SIZE_PREMAIN@
|
||||||
|
|
||||||
|
#ifdef __CLASSIC_C__
|
||||||
|
int main(){
|
||||||
|
int ac;
|
||||||
|
char*av[];
|
||||||
|
#else
|
||||||
|
int main(int ac, char*av[]){
|
||||||
|
#endif
|
||||||
|
if(ac > 1000){return *av[0];}
|
||||||
|
return sizeof(CHECK_TYPE_SIZE_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* CHECK_TYPE_SIZE_TYPE */
|
||||||
|
|
||||||
|
# error "CHECK_TYPE_SIZE_TYPE has to specify the type"
|
||||||
|
|
||||||
|
#endif /* CHECK_TYPE_SIZE_TYPE */
|
||||||
57
CMake/CheckTypeSize.cmake
Normal file
57
CMake/CheckTypeSize.cmake
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
# - Check sizeof a type
|
||||||
|
# CHECK_TYPE_SIZE(TYPE VARIABLE)
|
||||||
|
# Check if the type exists and determine size of type. if the type
|
||||||
|
# exists, the size will be stored to the variable.
|
||||||
|
#
|
||||||
|
# VARIABLE - variable to store size if the type exists.
|
||||||
|
# HAVE_${VARIABLE} - does the variable exists or not
|
||||||
|
|
||||||
|
macro(CHECK_TYPE_SIZE TYPE VARIABLE)
|
||||||
|
set(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS 1)
|
||||||
|
if(NOT DEFINED ${VARIABLE})
|
||||||
|
if("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
|
||||||
|
set(CHECK_TYPE_SIZE_TYPE "${TYPE}")
|
||||||
|
set(MACRO_CHECK_TYPE_SIZE_FLAGS
|
||||||
|
"${CMAKE_REQUIRED_FLAGS}")
|
||||||
|
foreach(def HAVE_SYS_TYPES_H
|
||||||
|
HAVE_STDINT_H HAVE_STDDEF_H HAVE_SYS_SOCKET_H)
|
||||||
|
if("${def}")
|
||||||
|
set(MACRO_CHECK_TYPE_SIZE_FLAGS
|
||||||
|
"${MACRO_CHECK_TYPE_SIZE_FLAGS} -D${def}")
|
||||||
|
endif("${def}")
|
||||||
|
endforeach(def)
|
||||||
|
set(CHECK_TYPE_SIZE_PREMAIN)
|
||||||
|
foreach(def ${CMAKE_EXTRA_INCLUDE_FILES})
|
||||||
|
set(CHECK_TYPE_SIZE_PREMAIN "${CHECK_TYPE_SIZE_PREMAIN}#include \"${def}\"\n")
|
||||||
|
endforeach(def)
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/CMake/CheckTypeSize.c.in"
|
||||||
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSize.c"
|
||||||
|
IMMEDIATE @ONLY)
|
||||||
|
file(READ
|
||||||
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSize.c"
|
||||||
|
CHECK_TYPE_SIZE_FILE_CONTENT)
|
||||||
|
message(STATUS "Check size of ${TYPE}")
|
||||||
|
if(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CHECK_TYPE_SIZE_ADD_LIBRARIES
|
||||||
|
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
|
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
try_run(${VARIABLE} HAVE_${VARIABLE}
|
||||||
|
${CMAKE_BINARY_DIR}
|
||||||
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckTypeSize.c"
|
||||||
|
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_TYPE_SIZE_FLAGS}
|
||||||
|
"${CHECK_TYPE_SIZE_ADD_LIBRARIES}"
|
||||||
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
if(HAVE_${VARIABLE})
|
||||||
|
message(STATUS "Check size of ${TYPE} - done")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
|
"Determining size of ${TYPE} passed with the following output:\n${OUTPUT}\n\n")
|
||||||
|
else(HAVE_${VARIABLE})
|
||||||
|
message(STATUS "Check size of ${TYPE} - failed")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
|
"Determining size of ${TYPE} failed with the following output:\n${OUTPUT}\nCheckTypeSize.c:\n${CHECK_TYPE_SIZE_FILE_CONTENT}\n\n")
|
||||||
|
endif(HAVE_${VARIABLE})
|
||||||
|
endif("HAVE_${VARIABLE}" MATCHES "^HAVE_${VARIABLE}$")
|
||||||
|
endif(NOT DEFINED ${VARIABLE})
|
||||||
|
set(CMAKE_ALLOW_UNKNOWN_VARIABLE_READ_ACCESS )
|
||||||
|
endmacro(CHECK_TYPE_SIZE)
|
||||||
75
CMake/CurlCheckCSourceCompiles.cmake
Normal file
75
CMake/CurlCheckCSourceCompiles.cmake
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
# - Check if the source code provided in the SOURCE argument compiles.
|
||||||
|
# CURL_CHECK_C_SOURCE_COMPILES(SOURCE VAR)
|
||||||
|
# - macro which checks if the source code compiles
|
||||||
|
# SOURCE - source code to try to compile
|
||||||
|
# VAR - variable to store whether the source code compiled
|
||||||
|
#
|
||||||
|
# The following variables may be set before calling this macro to
|
||||||
|
# modify the way the check is run:
|
||||||
|
#
|
||||||
|
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
|
||||||
|
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
|
||||||
|
# CMAKE_REQUIRED_INCLUDES = list of include directories
|
||||||
|
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
|
||||||
|
|
||||||
|
macro(CURL_CHECK_C_SOURCE_COMPILES SOURCE VAR)
|
||||||
|
if("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
|
||||||
|
set(message "${VAR}")
|
||||||
|
# If the number of arguments is greater than 2 (SOURCE VAR)
|
||||||
|
if(${ARGC} GREATER 2)
|
||||||
|
# then add the third argument as a message
|
||||||
|
set(message "${ARGV2} (${VAR})")
|
||||||
|
endif(${ARGC} GREATER 2)
|
||||||
|
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||||
|
"-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
|
||||||
|
if(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
|
||||||
|
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
|
else(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
|
||||||
|
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
if(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
|
||||||
|
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
|
||||||
|
else(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
|
||||||
|
endif(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
set(src "")
|
||||||
|
foreach(def ${EXTRA_DEFINES})
|
||||||
|
set(src "${src}#define ${def} 1\n")
|
||||||
|
endforeach(def)
|
||||||
|
foreach(inc ${HEADER_INCLUDES})
|
||||||
|
set(src "${src}#include <${inc}>\n")
|
||||||
|
endforeach(inc)
|
||||||
|
|
||||||
|
set(src "${src}\nint main() { ${SOURCE} ; return 0; }")
|
||||||
|
set(CMAKE_CONFIGURABLE_FILE_CONTENT "${src}")
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CMakeConfigurableFile.in
|
||||||
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
|
||||||
|
IMMEDIATE)
|
||||||
|
message(STATUS "Performing Test ${message}")
|
||||||
|
try_compile(${VAR}
|
||||||
|
${CMAKE_BINARY_DIR}
|
||||||
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
|
||||||
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
||||||
|
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
|
||||||
|
"${CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
|
||||||
|
"${CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
|
||||||
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
if(${VAR})
|
||||||
|
set(${VAR} 1 CACHE INTERNAL "Test ${message}")
|
||||||
|
message(STATUS "Performing Test ${message} - Success")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
|
"Performing C SOURCE FILE Test ${message} succeded with the following output:\n"
|
||||||
|
"${OUTPUT}\n"
|
||||||
|
"Source file was:\n${src}\n")
|
||||||
|
else(${VAR})
|
||||||
|
message(STATUS "Performing Test ${message} - Failed")
|
||||||
|
set(${VAR} "" CACHE INTERNAL "Test ${message}")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
|
"Performing C SOURCE FILE Test ${message} failed with the following output:\n"
|
||||||
|
"${OUTPUT}\n"
|
||||||
|
"Source file was:\n${src}\n")
|
||||||
|
endif(${VAR})
|
||||||
|
endif("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
|
||||||
|
endmacro(CURL_CHECK_C_SOURCE_COMPILES)
|
||||||
83
CMake/CurlCheckCSourceRuns.cmake
Normal file
83
CMake/CurlCheckCSourceRuns.cmake
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
# - Check if the source code provided in the SOURCE argument compiles and runs.
|
||||||
|
# CURL_CHECK_C_SOURCE_RUNS(SOURCE VAR)
|
||||||
|
# - macro which checks if the source code runs
|
||||||
|
# SOURCE - source code to try to compile
|
||||||
|
# VAR - variable to store size if the type exists.
|
||||||
|
#
|
||||||
|
# The following variables may be set before calling this macro to
|
||||||
|
# modify the way the check is run:
|
||||||
|
#
|
||||||
|
# CMAKE_REQUIRED_FLAGS = string of compile command line flags
|
||||||
|
# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
|
||||||
|
# CMAKE_REQUIRED_INCLUDES = list of include directories
|
||||||
|
# CMAKE_REQUIRED_LIBRARIES = list of libraries to link
|
||||||
|
|
||||||
|
macro(CURL_CHECK_C_SOURCE_RUNS SOURCE VAR)
|
||||||
|
if("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
|
||||||
|
set(message "${VAR}")
|
||||||
|
# If the number of arguments is greater than 2 (SOURCE VAR)
|
||||||
|
if(${ARGC} GREATER 2)
|
||||||
|
# then add the third argument as a message
|
||||||
|
set(message "${ARGV2} (${VAR})")
|
||||||
|
endif(${ARGC} GREATER 2)
|
||||||
|
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||||
|
"-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
|
||||||
|
if(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES
|
||||||
|
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
|
else(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES)
|
||||||
|
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
if(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES
|
||||||
|
"-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
|
||||||
|
else(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
set(CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES)
|
||||||
|
endif(CMAKE_REQUIRED_INCLUDES)
|
||||||
|
set(src "")
|
||||||
|
foreach(def ${EXTRA_DEFINES})
|
||||||
|
set(src "${src}#define ${def} 1\n")
|
||||||
|
endforeach(def)
|
||||||
|
foreach(inc ${HEADER_INCLUDES})
|
||||||
|
set(src "${src}#include <${inc}>\n")
|
||||||
|
endforeach(inc)
|
||||||
|
|
||||||
|
set(src "${src}\nint main() { ${SOURCE} ; return 0; }")
|
||||||
|
set(CMAKE_CONFIGURABLE_FILE_CONTENT "${src}")
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CMakeConfigurableFile.in
|
||||||
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c"
|
||||||
|
IMMEDIATE)
|
||||||
|
message(STATUS "Performing Test ${message}")
|
||||||
|
try_run(${VAR} ${VAR}_COMPILED
|
||||||
|
${CMAKE_BINARY_DIR}
|
||||||
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.c
|
||||||
|
COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
|
||||||
|
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
|
||||||
|
"${CURL_CHECK_C_SOURCE_COMPILES_ADD_LIBRARIES}"
|
||||||
|
"${CURL_CHECK_C_SOURCE_COMPILES_ADD_INCLUDES}"
|
||||||
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
# if it did not compile make the return value fail code of 1
|
||||||
|
if(NOT ${VAR}_COMPILED)
|
||||||
|
set(${VAR} 1)
|
||||||
|
endif(NOT ${VAR}_COMPILED)
|
||||||
|
# if the return value was 0 then it worked
|
||||||
|
set(result_var ${${VAR}})
|
||||||
|
if("${result_var}" EQUAL 0)
|
||||||
|
set(${VAR} 1 CACHE INTERNAL "Test ${message}")
|
||||||
|
message(STATUS "Performing Test ${message} - Success")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
|
"Performing C SOURCE FILE Test ${message} succeded with the following output:\n"
|
||||||
|
"${OUTPUT}\n"
|
||||||
|
"Return value: ${${VAR}}\n"
|
||||||
|
"Source file was:\n${src}\n")
|
||||||
|
else("${result_var}" EQUAL 0)
|
||||||
|
message(STATUS "Performing Test ${message} - Failed")
|
||||||
|
set(${VAR} "" CACHE INTERNAL "Test ${message}")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
|
"Performing C SOURCE FILE Test ${message} failed with the following output:\n"
|
||||||
|
"${OUTPUT}\n"
|
||||||
|
"Return value: ${result_var}\n"
|
||||||
|
"Source file was:\n${src}\n")
|
||||||
|
endif("${result_var}" EQUAL 0)
|
||||||
|
endif("${VAR}" MATCHES "^${VAR}$" OR "${VAR}" MATCHES "UNKNOWN")
|
||||||
|
endmacro(CURL_CHECK_C_SOURCE_RUNS)
|
||||||
690
CMake/CurlTests.c
Normal file
690
CMake/CurlTests.c
Normal file
@@ -0,0 +1,690 @@
|
|||||||
|
#ifdef TIME_WITH_SYS_TIME
|
||||||
|
/* Time with sys/time test */
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
if ((struct tm *) 0)
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_FCNTL_O_NONBLOCK
|
||||||
|
|
||||||
|
/* headers for FCNTL_O_NONBLOCK test */
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
/* */
|
||||||
|
#if defined(sun) || defined(__sun__) || \
|
||||||
|
defined(__SUNPRO_C) || defined(__SUNPRO_CC)
|
||||||
|
# if defined(__SVR4) || defined(__srv4__)
|
||||||
|
# define PLATFORM_SOLARIS
|
||||||
|
# else
|
||||||
|
# define PLATFORM_SUNOS4
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
#if (defined(_AIX) || defined(__xlC__)) && !defined(_AIX41)
|
||||||
|
# define PLATFORM_AIX_V3
|
||||||
|
#endif
|
||||||
|
/* */
|
||||||
|
#if defined(PLATFORM_SUNOS4) || defined(PLATFORM_AIX_V3) || defined(__BEOS__)
|
||||||
|
#error "O_NONBLOCK does not work on this platform"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
/* O_NONBLOCK source test */
|
||||||
|
int flags = 0;
|
||||||
|
if(0 != fcntl(0, F_SETFL, flags | O_NONBLOCK))
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_GETHOSTBYADDR_R_5
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
char * address;
|
||||||
|
int length;
|
||||||
|
int type;
|
||||||
|
struct hostent h;
|
||||||
|
struct hostent_data hdata;
|
||||||
|
int rc;
|
||||||
|
#ifndef gethostbyaddr_r
|
||||||
|
(void)gethostbyaddr_r;
|
||||||
|
#endif
|
||||||
|
rc = gethostbyaddr_r(address, length, type, &h, &hdata);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYADDR_R_5_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
char * address;
|
||||||
|
int length;q
|
||||||
|
int type;
|
||||||
|
struct hostent h;
|
||||||
|
struct hostent_data hdata;
|
||||||
|
int rc;
|
||||||
|
#ifndef gethostbyaddr_r
|
||||||
|
(void)gethostbyaddr_r;
|
||||||
|
#endif
|
||||||
|
rc = gethostbyaddr_r(address, length, type, &h, &hdata);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYADDR_R_7
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
char * address;
|
||||||
|
int length;
|
||||||
|
int type;
|
||||||
|
struct hostent h;
|
||||||
|
char buffer[8192];
|
||||||
|
int h_errnop;
|
||||||
|
struct hostent * hp;
|
||||||
|
|
||||||
|
#ifndef gethostbyaddr_r
|
||||||
|
(void)gethostbyaddr_r;
|
||||||
|
#endif
|
||||||
|
hp = gethostbyaddr_r(address, length, type, &h,
|
||||||
|
buffer, 8192, &h_errnop);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYADDR_R_7_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
char * address;
|
||||||
|
int length;
|
||||||
|
int type;
|
||||||
|
struct hostent h;
|
||||||
|
char buffer[8192];
|
||||||
|
int h_errnop;
|
||||||
|
struct hostent * hp;
|
||||||
|
|
||||||
|
#ifndef gethostbyaddr_r
|
||||||
|
(void)gethostbyaddr_r;
|
||||||
|
#endif
|
||||||
|
hp = gethostbyaddr_r(address, length, type, &h,
|
||||||
|
buffer, 8192, &h_errnop);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYADDR_R_8
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
char * address;
|
||||||
|
int length;
|
||||||
|
int type;
|
||||||
|
struct hostent h;
|
||||||
|
char buffer[8192];
|
||||||
|
int h_errnop;
|
||||||
|
struct hostent * hp;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
#ifndef gethostbyaddr_r
|
||||||
|
(void)gethostbyaddr_r;
|
||||||
|
#endif
|
||||||
|
rc = gethostbyaddr_r(address, length, type, &h,
|
||||||
|
buffer, 8192, &hp, &h_errnop);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYADDR_R_8_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
char * address;
|
||||||
|
int length;
|
||||||
|
int type;
|
||||||
|
struct hostent h;
|
||||||
|
char buffer[8192];
|
||||||
|
int h_errnop;
|
||||||
|
struct hostent * hp;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
#ifndef gethostbyaddr_r
|
||||||
|
(void)gethostbyaddr_r;
|
||||||
|
#endif
|
||||||
|
rc = gethostbyaddr_r(address, length, type, &h,
|
||||||
|
buffer, 8192, &hp, &h_errnop);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME_R_3
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef NULL
|
||||||
|
#define NULL (void *)0
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
struct hostent_data data;
|
||||||
|
#ifndef gethostbyname_r
|
||||||
|
(void)gethostbyname_r;
|
||||||
|
#endif
|
||||||
|
gethostbyname_r(NULL, NULL, NULL);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME_R_3_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef NULL
|
||||||
|
#define NULL (void *)0
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
struct hostent_data data;
|
||||||
|
#ifndef gethostbyname_r
|
||||||
|
(void)gethostbyname_r;
|
||||||
|
#endif
|
||||||
|
gethostbyname_r(NULL, NULL, NULL);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME_R_5
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef NULL
|
||||||
|
#define NULL (void *)0
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
#ifndef gethostbyname_r
|
||||||
|
(void)gethostbyname_r;
|
||||||
|
#endif
|
||||||
|
gethostbyname_r(NULL, NULL, NULL, 0, NULL);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME_R_5_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef NULL
|
||||||
|
#define NULL (void *)0
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifndef gethostbyname_r
|
||||||
|
(void)gethostbyname_r;
|
||||||
|
#endif
|
||||||
|
gethostbyname_r(NULL, NULL, NULL, 0, NULL);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME_R_6
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef NULL
|
||||||
|
#define NULL (void *)0
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifndef gethostbyname_r
|
||||||
|
(void)gethostbyname_r;
|
||||||
|
#endif
|
||||||
|
gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETHOSTBYNAME_R_6_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#undef NULL
|
||||||
|
#define NULL (void *)0
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
#ifndef gethostbyname_r
|
||||||
|
(void)gethostbyname_r;
|
||||||
|
#endif
|
||||||
|
gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL);
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SOCKLEN_T
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <ws2tcpip.h>
|
||||||
|
#else
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
if ((socklen_t *) 0)
|
||||||
|
return 0;
|
||||||
|
if (sizeof (socklen_t))
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IN_ADDR_T
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
if ((in_addr_t *) 0)
|
||||||
|
return 0;
|
||||||
|
if (sizeof (in_addr_t))
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_BOOL_T
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_STDBOOL_H
|
||||||
|
#include <stdbool.h>
|
||||||
|
#endif
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
if (sizeof (bool *) )
|
||||||
|
return 0;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef STDC_HEADERS
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <float.h>
|
||||||
|
int main() { return 0; }
|
||||||
|
#endif
|
||||||
|
#ifdef RETSIGTYPE_TEST
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#ifdef signal
|
||||||
|
# undef signal
|
||||||
|
#endif
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" void (*signal (int, void (*)(int)))(int);
|
||||||
|
#else
|
||||||
|
void (*signal ()) ();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_INET_NTOA_R_DECL
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
typedef void (*func_type)();
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#ifndef inet_ntoa_r
|
||||||
|
func_type func;
|
||||||
|
func = (func_type)inet_ntoa_r;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_INET_NTOA_R_DECL_REENTRANT
|
||||||
|
#define _REENTRANT
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
typedef void (*func_type)();
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
#ifndef inet_ntoa_r
|
||||||
|
func_type func;
|
||||||
|
func = (func_type)&inet_ntoa_r;
|
||||||
|
#endif
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GETADDRINFO
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
struct addrinfo hints, *ai;
|
||||||
|
int error;
|
||||||
|
|
||||||
|
memset(&hints, 0, sizeof(hints));
|
||||||
|
hints.ai_family = AF_UNSPEC;
|
||||||
|
hints.ai_socktype = SOCK_STREAM;
|
||||||
|
#ifndef getaddrinfo
|
||||||
|
(void)getaddrinfo;
|
||||||
|
#endif
|
||||||
|
error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
|
||||||
|
if (error) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_FILE_OFFSET_BITS
|
||||||
|
#ifdef _FILE_OFFSET_BITS
|
||||||
|
#undef _FILE_OFFSET_BITS
|
||||||
|
#endif
|
||||||
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
#include <sys/types.h>
|
||||||
|
/* Check that off_t can represent 2**63 - 1 correctly.
|
||||||
|
We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
|
since some C++ compilers masquerading as C compilers
|
||||||
|
incorrectly reject 9223372036854775807. */
|
||||||
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
|
||||||
|
&& LARGE_OFF_T % 2147483647 == 1)
|
||||||
|
? 1 : -1];
|
||||||
|
int main () { ; return 0; }
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IOCTLSOCKET
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
# ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
# ifdef HAVE_WINSOCK2_H
|
||||||
|
# include <winsock2.h>
|
||||||
|
# else
|
||||||
|
# ifdef HAVE_WINSOCK_H
|
||||||
|
# include <winsock.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
/* ioctlsocket source code */
|
||||||
|
int socket;
|
||||||
|
unsigned long flags = ioctlsocket(socket, FIONBIO, &flags);
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IOCTLSOCKET_CAMEL
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
# ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
# ifdef HAVE_WINSOCK2_H
|
||||||
|
# include <winsock2.h>
|
||||||
|
# else
|
||||||
|
# ifdef HAVE_WINSOCK_H
|
||||||
|
# include <winsock.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
/* IoctlSocket source code */
|
||||||
|
if(0 != IoctlSocket(0, 0, 0))
|
||||||
|
return 1;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IOCTLSOCKET_CAMEL_FIONBIO
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
# ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
# ifdef HAVE_WINSOCK2_H
|
||||||
|
# include <winsock2.h>
|
||||||
|
# else
|
||||||
|
# ifdef HAVE_WINSOCK_H
|
||||||
|
# include <winsock.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
/* IoctlSocket source code */
|
||||||
|
long flags = 0;
|
||||||
|
if(0 != ioctlsocket(0, FIONBIO, &flags))
|
||||||
|
return 1;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IOCTLSOCKET_FIONBIO
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
# ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
# ifdef HAVE_WINSOCK2_H
|
||||||
|
# include <winsock2.h>
|
||||||
|
# else
|
||||||
|
# ifdef HAVE_WINSOCK_H
|
||||||
|
# include <winsock.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
int flags = 0;
|
||||||
|
if(0 != ioctlsocket(0, FIONBIO, &flags))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IOCTL_FIONBIO
|
||||||
|
/* headers for FIONBIO test */
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
# include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_IOCTL_H
|
||||||
|
# include <sys/ioctl.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_STROPTS_H
|
||||||
|
# include <stropts.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
int flags = 0;
|
||||||
|
if(0 != ioctl(0, FIONBIO, &flags))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_IOCTL_SIOCGIFADDR
|
||||||
|
/* headers for FIONBIO test */
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
# include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_IOCTL_H
|
||||||
|
# include <sys/ioctl.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_STROPTS_H
|
||||||
|
# include <stropts.h>
|
||||||
|
#endif
|
||||||
|
#include <net/if.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
struct ifreq ifr;
|
||||||
|
if(0 != ioctl(0, SIOCGIFADDR, &ifr))
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SETSOCKOPT_SO_NONBLOCK
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_WINDOWS_H
|
||||||
|
# ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# endif
|
||||||
|
# include <windows.h>
|
||||||
|
# ifdef HAVE_WINSOCK2_H
|
||||||
|
# include <winsock2.h>
|
||||||
|
# else
|
||||||
|
# ifdef HAVE_WINSOCK_H
|
||||||
|
# include <winsock.h>
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
/* includes start */
|
||||||
|
#ifdef HAVE_SYS_TYPES_H
|
||||||
|
# include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_SYS_SOCKET_H
|
||||||
|
# include <sys/socket.h>
|
||||||
|
#endif
|
||||||
|
/* includes end */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
if(0 != setsockopt(0, SOL_SOCKET, SO_NONBLOCK, 0, 0))
|
||||||
|
return 1;
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_GLIBC_STRERROR_R
|
||||||
|
#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;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef HAVE_POSIX_STRERROR_R
|
||||||
|
#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;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
42
CMake/FindCARES.cmake
Executable file
42
CMake/FindCARES.cmake
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
# - Find c-ares
|
||||||
|
# Find the c-ares includes and library
|
||||||
|
# This module defines
|
||||||
|
# CARES_INCLUDE_DIR, where to find ares.h, etc.
|
||||||
|
# CARES_LIBRARIES, the libraries needed to use c-ares.
|
||||||
|
# CARES_FOUND, If false, do not try to use c-ares.
|
||||||
|
# also defined, but not for general use are
|
||||||
|
# CARES_LIBRARY, where to find the c-ares library.
|
||||||
|
|
||||||
|
FIND_PATH(CARES_INCLUDE_DIR ares.h
|
||||||
|
/usr/local/include
|
||||||
|
/usr/include
|
||||||
|
)
|
||||||
|
|
||||||
|
SET(CARES_NAMES ${CARES_NAMES} cares)
|
||||||
|
FIND_LIBRARY(CARES_LIBRARY
|
||||||
|
NAMES ${CARES_NAMES}
|
||||||
|
PATHS /usr/lib /usr/local/lib
|
||||||
|
)
|
||||||
|
|
||||||
|
IF (CARES_LIBRARY AND CARES_INCLUDE_DIR)
|
||||||
|
SET(CARES_LIBRARIES ${CARES_LIBRARY})
|
||||||
|
SET(CARES_FOUND "YES")
|
||||||
|
ELSE (CARES_LIBRARY AND CARES_INCLUDE_DIR)
|
||||||
|
SET(CARES_FOUND "NO")
|
||||||
|
ENDIF (CARES_LIBRARY AND CARES_INCLUDE_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
IF (CARES_FOUND)
|
||||||
|
IF (NOT CARES_FIND_QUIETLY)
|
||||||
|
MESSAGE(STATUS "Found c-ares: ${CARES_LIBRARIES}")
|
||||||
|
ENDIF (NOT CARES_FIND_QUIETLY)
|
||||||
|
ELSE (CARES_FOUND)
|
||||||
|
IF (CARES_FIND_REQUIRED)
|
||||||
|
MESSAGE(FATAL_ERROR "Could not find c-ares library")
|
||||||
|
ENDIF (CARES_FIND_REQUIRED)
|
||||||
|
ENDIF (CARES_FOUND)
|
||||||
|
|
||||||
|
MARK_AS_ADVANCED(
|
||||||
|
CARES_LIBRARY
|
||||||
|
CARES_INCLUDE_DIR
|
||||||
|
)
|
||||||
19
CMake/FindOpenSSL.cmake
Normal file
19
CMake/FindOpenSSL.cmake
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# Extension of the standard FindOpenSSL.cmake
|
||||||
|
# Adds OPENSSL_INCLUDE_DIRS and libeay32
|
||||||
|
include("${CMAKE_ROOT}/Modules/FindOpenSSL.cmake")
|
||||||
|
|
||||||
|
# Bill Hoffman told that libeay32 is necessary for him:
|
||||||
|
find_library(SSL_LIBEAY NAMES libeay32)
|
||||||
|
|
||||||
|
if(OPENSSL_FOUND)
|
||||||
|
if(SSL_LIBEAY)
|
||||||
|
list(APPEND OPENSSL_LIBRARIES ${SSL_LIBEAY})
|
||||||
|
else()
|
||||||
|
set(OPENSSL_FOUND FALSE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if(OPENSSL_FOUND)
|
||||||
|
set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
8
CMake/FindZLIB.cmake
Normal file
8
CMake/FindZLIB.cmake
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Locate zlib
|
||||||
|
include("${CMAKE_ROOT}/Modules/FindZLIB.cmake")
|
||||||
|
|
||||||
|
find_library(ZLIB_LIBRARY_DEBUG NAMES zd zlibd zdlld zlib1d )
|
||||||
|
|
||||||
|
if(ZLIB_FOUND AND ZLIB_LIBRARY_DEBUG)
|
||||||
|
set( ZLIB_LIBRARIES optimized "${ZLIB_LIBRARY}" debug ${ZLIB_LIBRARY_DEBUG})
|
||||||
|
endif()
|
||||||
250
CMake/OtherTests.cmake
Normal file
250
CMake/OtherTests.cmake
Normal file
@@ -0,0 +1,250 @@
|
|||||||
|
include(CurlCheckCSourceCompiles)
|
||||||
|
set(EXTRA_DEFINES "__unused1\n#undef inline\n#define __unused2")
|
||||||
|
set(HEADER_INCLUDES)
|
||||||
|
set(headers_hack)
|
||||||
|
|
||||||
|
macro(add_header_include check header)
|
||||||
|
if(${check})
|
||||||
|
set(headers_hack
|
||||||
|
"${headers_hack}\n#include <${header}>")
|
||||||
|
#SET(HEADER_INCLUDES
|
||||||
|
# ${HEADER_INCLUDES}
|
||||||
|
# "${header}")
|
||||||
|
endif(${check})
|
||||||
|
endmacro(add_header_include)
|
||||||
|
|
||||||
|
set(signature_call_conv)
|
||||||
|
if(HAVE_WINDOWS_H)
|
||||||
|
add_header_include(HAVE_WINDOWS_H "windows.h")
|
||||||
|
add_header_include(HAVE_WINSOCK2_H "winsock2.h")
|
||||||
|
add_header_include(HAVE_WINSOCK_H "winsock.h")
|
||||||
|
set(EXTRA_DEFINES ${EXTRA_DEFINES}
|
||||||
|
"__unused7\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#define __unused3")
|
||||||
|
set(signature_call_conv "PASCAL")
|
||||||
|
else(HAVE_WINDOWS_H)
|
||||||
|
add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
|
||||||
|
add_header_include(HAVE_SYS_SOCKET_H "sys/socket.h")
|
||||||
|
endif(HAVE_WINDOWS_H)
|
||||||
|
|
||||||
|
set(EXTRA_DEFINES_BACKUP "${EXTRA_DEFINES}")
|
||||||
|
set(EXTRA_DEFINES "${EXTRA_DEFINES_BACKUP}\n${headers_hack}\n${extern_line}\n#define __unused5")
|
||||||
|
curl_check_c_source_compiles("recv(0, 0, 0, 0)" curl_cv_recv)
|
||||||
|
if(curl_cv_recv)
|
||||||
|
# AC_CACHE_CHECK([types of arguments and return type for recv],
|
||||||
|
#[curl_cv_func_recv_args], [
|
||||||
|
#SET(curl_cv_func_recv_args "unknown")
|
||||||
|
#for recv_retv in 'int' 'ssize_t'; do
|
||||||
|
if(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||||
|
foreach(recv_retv "int" "ssize_t" )
|
||||||
|
foreach(recv_arg1 "int" "ssize_t" "SOCKET")
|
||||||
|
foreach(recv_arg2 "void *" "char *")
|
||||||
|
foreach(recv_arg3 "size_t" "int" "socklen_t" "unsigned int")
|
||||||
|
foreach(recv_arg4 "int" "unsigned int")
|
||||||
|
if(NOT curl_cv_func_recv_done)
|
||||||
|
set(curl_cv_func_recv_test "UNKNOWN")
|
||||||
|
set(extern_line "extern ${recv_retv} ${signature_call_conv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})\;")
|
||||||
|
set(EXTRA_DEFINES "${EXTRA_DEFINES_BACKUP}\n${headers_hack}\n${extern_line}\n#define __unused5")
|
||||||
|
curl_check_c_source_compiles("
|
||||||
|
${recv_arg1} s=0;
|
||||||
|
${recv_arg2} buf=0;
|
||||||
|
${recv_arg3} len=0;
|
||||||
|
${recv_arg4} flags=0;
|
||||||
|
${recv_retv} res = recv(s, buf, len, flags)"
|
||||||
|
curl_cv_func_recv_test
|
||||||
|
"${recv_retv} recv(${recv_arg1}, ${recv_arg2}, ${recv_arg3}, ${recv_arg4})")
|
||||||
|
if(curl_cv_func_recv_test)
|
||||||
|
set(curl_cv_func_recv_args
|
||||||
|
"${recv_arg1},${recv_arg2},${recv_arg3},${recv_arg4},${recv_retv}")
|
||||||
|
set(RECV_TYPE_ARG1 "${recv_arg1}")
|
||||||
|
set(RECV_TYPE_ARG2 "${recv_arg2}")
|
||||||
|
set(RECV_TYPE_ARG3 "${recv_arg3}")
|
||||||
|
set(RECV_TYPE_ARG4 "${recv_arg4}")
|
||||||
|
set(RECV_TYPE_RETV "${recv_retv}")
|
||||||
|
set(HAVE_RECV 1)
|
||||||
|
set(curl_cv_func_recv_done 1)
|
||||||
|
endif(curl_cv_func_recv_test)
|
||||||
|
endif(NOT curl_cv_func_recv_done)
|
||||||
|
endforeach(recv_arg4)
|
||||||
|
endforeach(recv_arg3)
|
||||||
|
endforeach(recv_arg2)
|
||||||
|
endforeach(recv_arg1)
|
||||||
|
endforeach(recv_retv)
|
||||||
|
else(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||||
|
string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG1 "${curl_cv_func_recv_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG2 "${curl_cv_func_recv_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" RECV_TYPE_ARG3 "${curl_cv_func_recv_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" RECV_TYPE_ARG4 "${curl_cv_func_recv_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" RECV_TYPE_RETV "${curl_cv_func_recv_args}")
|
||||||
|
#MESSAGE("RECV_TYPE_ARG1 ${RECV_TYPE_ARG1}")
|
||||||
|
#MESSAGE("RECV_TYPE_ARG2 ${RECV_TYPE_ARG2}")
|
||||||
|
#MESSAGE("RECV_TYPE_ARG3 ${RECV_TYPE_ARG3}")
|
||||||
|
#MESSAGE("RECV_TYPE_ARG4 ${RECV_TYPE_ARG4}")
|
||||||
|
#MESSAGE("RECV_TYPE_RETV ${RECV_TYPE_RETV}")
|
||||||
|
endif(NOT DEFINED curl_cv_func_recv_args OR "${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||||
|
|
||||||
|
if("${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||||
|
message(FATAL_ERROR "Cannot find proper types to use for recv args")
|
||||||
|
endif("${curl_cv_func_recv_args}" STREQUAL "unknown")
|
||||||
|
else(curl_cv_recv)
|
||||||
|
message(FATAL_ERROR "Unable to link function recv")
|
||||||
|
endif(curl_cv_recv)
|
||||||
|
set(curl_cv_func_recv_args "${curl_cv_func_recv_args}" CACHE INTERNAL "Arguments for recv")
|
||||||
|
set(HAVE_RECV 1)
|
||||||
|
|
||||||
|
curl_check_c_source_compiles("send(0, 0, 0, 0)" curl_cv_send)
|
||||||
|
if(curl_cv_send)
|
||||||
|
# AC_CACHE_CHECK([types of arguments and return type for send],
|
||||||
|
#[curl_cv_func_send_args], [
|
||||||
|
#SET(curl_cv_func_send_args "unknown")
|
||||||
|
#for send_retv in 'int' 'ssize_t'; do
|
||||||
|
if(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||||
|
foreach(send_retv "int" "ssize_t" )
|
||||||
|
foreach(send_arg1 "int" "ssize_t" "SOCKET")
|
||||||
|
foreach(send_arg2 "const void *" "void *" "char *" "const char *")
|
||||||
|
foreach(send_arg3 "size_t" "int" "socklen_t" "unsigned int")
|
||||||
|
foreach(send_arg4 "int" "unsigned int")
|
||||||
|
if(NOT curl_cv_func_send_done)
|
||||||
|
set(curl_cv_func_send_test "UNKNOWN")
|
||||||
|
set(extern_line "extern ${send_retv} ${signature_call_conv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})\;")
|
||||||
|
set(EXTRA_DEFINES "${EXTRA_DEFINES_BACKUP}\n${headers_hack}\n${extern_line}\n#define __unused5")
|
||||||
|
curl_check_c_source_compiles("
|
||||||
|
${send_arg1} s=0;
|
||||||
|
${send_arg2} buf=0;
|
||||||
|
${send_arg3} len=0;
|
||||||
|
${send_arg4} flags=0;
|
||||||
|
${send_retv} res = send(s, buf, len, flags)"
|
||||||
|
curl_cv_func_send_test
|
||||||
|
"${send_retv} send(${send_arg1}, ${send_arg2}, ${send_arg3}, ${send_arg4})")
|
||||||
|
if(curl_cv_func_send_test)
|
||||||
|
#MESSAGE("Found arguments: ${curl_cv_func_send_test}")
|
||||||
|
string(REGEX REPLACE "(const) .*" "\\1" send_qual_arg2 "${send_arg2}")
|
||||||
|
string(REGEX REPLACE "const (.*)" "\\1" send_arg2 "${send_arg2}")
|
||||||
|
set(curl_cv_func_send_args
|
||||||
|
"${send_arg1},${send_arg2},${send_arg3},${send_arg4},${send_retv},${send_qual_arg2}")
|
||||||
|
set(SEND_TYPE_ARG1 "${send_arg1}")
|
||||||
|
set(SEND_TYPE_ARG2 "${send_arg2}")
|
||||||
|
set(SEND_TYPE_ARG3 "${send_arg3}")
|
||||||
|
set(SEND_TYPE_ARG4 "${send_arg4}")
|
||||||
|
set(SEND_TYPE_RETV "${send_retv}")
|
||||||
|
set(HAVE_SEND 1)
|
||||||
|
set(curl_cv_func_send_done 1)
|
||||||
|
endif(curl_cv_func_send_test)
|
||||||
|
endif(NOT curl_cv_func_send_done)
|
||||||
|
endforeach(send_arg4)
|
||||||
|
endforeach(send_arg3)
|
||||||
|
endforeach(send_arg2)
|
||||||
|
endforeach(send_arg1)
|
||||||
|
endforeach(send_retv)
|
||||||
|
else(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||||
|
string(REGEX REPLACE "^([^,]*),[^,]*,[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG1 "${curl_cv_func_send_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,([^,]*),[^,]*,[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG2 "${curl_cv_func_send_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,([^,]*),[^,]*,[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG3 "${curl_cv_func_send_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,([^,]*),[^,]*,[^,]*$" "\\1" SEND_TYPE_ARG4 "${curl_cv_func_send_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,([^,]*),[^,]*$" "\\1" SEND_TYPE_RETV "${curl_cv_func_send_args}")
|
||||||
|
string(REGEX REPLACE "^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,([^,]*)$" "\\1" SEND_QUAL_ARG2 "${curl_cv_func_send_args}")
|
||||||
|
#MESSAGE("SEND_TYPE_ARG1 ${SEND_TYPE_ARG1}")
|
||||||
|
#MESSAGE("SEND_TYPE_ARG2 ${SEND_TYPE_ARG2}")
|
||||||
|
#MESSAGE("SEND_TYPE_ARG3 ${SEND_TYPE_ARG3}")
|
||||||
|
#MESSAGE("SEND_TYPE_ARG4 ${SEND_TYPE_ARG4}")
|
||||||
|
#MESSAGE("SEND_TYPE_RETV ${SEND_TYPE_RETV}")
|
||||||
|
#MESSAGE("SEND_QUAL_ARG2 ${SEND_QUAL_ARG2}")
|
||||||
|
endif(NOT DEFINED curl_cv_func_send_args OR "${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||||
|
|
||||||
|
if("${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||||
|
message(FATAL_ERROR "Cannot find proper types to use for send args")
|
||||||
|
endif("${curl_cv_func_send_args}" STREQUAL "unknown")
|
||||||
|
set(SEND_QUAL_ARG2 "const")
|
||||||
|
else(curl_cv_send)
|
||||||
|
message(FATAL_ERROR "Unable to link function send")
|
||||||
|
endif(curl_cv_send)
|
||||||
|
set(curl_cv_func_send_args "${curl_cv_func_send_args}" CACHE INTERNAL "Arguments for send")
|
||||||
|
set(HAVE_SEND 1)
|
||||||
|
|
||||||
|
set(EXTRA_DEFINES "${EXTRA_DEFINES}\n${headers_hack}\n#define __unused5")
|
||||||
|
curl_check_c_source_compiles("int flag = MSG_NOSIGNAL" HAVE_MSG_NOSIGNAL)
|
||||||
|
|
||||||
|
set(EXTRA_DEFINES "__unused1\n#undef inline\n#define __unused2")
|
||||||
|
set(HEADER_INCLUDES)
|
||||||
|
set(headers_hack)
|
||||||
|
|
||||||
|
macro(add_header_include check header)
|
||||||
|
if(${check})
|
||||||
|
set(headers_hack
|
||||||
|
"${headers_hack}\n#include <${header}>")
|
||||||
|
#SET(HEADER_INCLUDES
|
||||||
|
# ${HEADER_INCLUDES}
|
||||||
|
# "${header}")
|
||||||
|
endif(${check})
|
||||||
|
endmacro(add_header_include header)
|
||||||
|
|
||||||
|
if(HAVE_WINDOWS_H)
|
||||||
|
set(EXTRA_DEFINES ${EXTRA_DEFINES}
|
||||||
|
"__unused7\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif\n#define __unused3")
|
||||||
|
add_header_include(HAVE_WINDOWS_H "windows.h")
|
||||||
|
add_header_include(HAVE_WINSOCK2_H "winsock2.h")
|
||||||
|
add_header_include(HAVE_WINSOCK_H "winsock.h")
|
||||||
|
else(HAVE_WINDOWS_H)
|
||||||
|
add_header_include(HAVE_SYS_TYPES_H "sys/types.h")
|
||||||
|
add_header_include(HAVE_SYS_TIME_H "sys/time.h")
|
||||||
|
add_header_include(TIME_WITH_SYS_TIME "time.h")
|
||||||
|
add_header_include(HAVE_TIME_H "time.h")
|
||||||
|
endif(HAVE_WINDOWS_H)
|
||||||
|
set(EXTRA_DEFINES "${EXTRA_DEFINES}\n${headers_hack}\n#define __unused5")
|
||||||
|
curl_check_c_source_compiles("struct timeval ts;\nts.tv_sec = 0;\nts.tv_usec = 0" HAVE_STRUCT_TIMEVAL)
|
||||||
|
|
||||||
|
|
||||||
|
include(CurlCheckCSourceRuns)
|
||||||
|
set(EXTRA_DEFINES)
|
||||||
|
set(HEADER_INCLUDES)
|
||||||
|
if(HAVE_SYS_POLL_H)
|
||||||
|
set(HEADER_INCLUDES "sys/poll.h")
|
||||||
|
endif(HAVE_SYS_POLL_H)
|
||||||
|
curl_check_c_source_runs("return poll((void *)0, 0, 10 /*ms*/)" HAVE_POLL_FINE)
|
||||||
|
|
||||||
|
set(HAVE_SIG_ATOMIC_T 1)
|
||||||
|
set(EXTRA_DEFINES)
|
||||||
|
set(HEADER_INCLUDES)
|
||||||
|
if(HAVE_SIGNAL_H)
|
||||||
|
set(HEADER_INCLUDES "signal.h")
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES "signal.h")
|
||||||
|
endif(HAVE_SIGNAL_H)
|
||||||
|
check_type_size("sig_atomic_t" SIZEOF_SIG_ATOMIC_T)
|
||||||
|
if(HAVE_SIZEOF_SIG_ATOMIC_T)
|
||||||
|
curl_check_c_source_compiles("static volatile sig_atomic_t dummy = 0" HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
|
||||||
|
if(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
|
||||||
|
set(HAVE_SIG_ATOMIC_T_VOLATILE 1)
|
||||||
|
endif(NOT HAVE_SIG_ATOMIC_T_NOT_VOLATILE)
|
||||||
|
endif(HAVE_SIZEOF_SIG_ATOMIC_T)
|
||||||
|
|
||||||
|
set(CHECK_TYPE_SIZE_PREINCLUDE
|
||||||
|
"#undef inline")
|
||||||
|
|
||||||
|
if(HAVE_WINDOWS_H)
|
||||||
|
set(CHECK_TYPE_SIZE_PREINCLUDE "${CHECK_TYPE_SIZE_PREINCLUDE}
|
||||||
|
#ifndef WIN32_LEAN_AND_MEAN
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#endif
|
||||||
|
#include <windows.h>")
|
||||||
|
if(HAVE_WINSOCK2_H)
|
||||||
|
set(CHECK_TYPE_SIZE_PREINCLUDE "${CHECK_TYPE_SIZE_PREINCLUDE}\n#include <winsock2.h>")
|
||||||
|
endif(HAVE_WINSOCK2_H)
|
||||||
|
else(HAVE_WINDOWS_H)
|
||||||
|
if(HAVE_SYS_SOCKET_H)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES}
|
||||||
|
"sys/socket.h")
|
||||||
|
endif(HAVE_SYS_SOCKET_H)
|
||||||
|
if(HAVE_NETINET_IN_H)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES}
|
||||||
|
"netinet/in.h")
|
||||||
|
endif(HAVE_NETINET_IN_H)
|
||||||
|
if(HAVE_ARPA_INET_H)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES ${CMAKE_EXTRA_INCLUDE_FILES}
|
||||||
|
"arpa/inet.h")
|
||||||
|
endif(HAVE_ARPA_INET_H)
|
||||||
|
endif(HAVE_WINDOWS_H)
|
||||||
|
|
||||||
|
check_type_size("struct sockaddr_storage" SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||||
|
if(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||||
|
set(HAVE_STRUCT_SOCKADDR_STORAGE 1)
|
||||||
|
endif(HAVE_SIZEOF_STRUCT_SOCKADDR_STORAGE)
|
||||||
|
|
||||||
121
CMake/Platforms/WindowsCache.cmake
Normal file
121
CMake/Platforms/WindowsCache.cmake
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
if(NOT UNIX)
|
||||||
|
if(WIN32)
|
||||||
|
set(HAVE_LIBDL 0)
|
||||||
|
set(HAVE_LIBUCB 0)
|
||||||
|
set(HAVE_LIBSOCKET 0)
|
||||||
|
set(NOT_NEED_LIBNSL 0)
|
||||||
|
set(HAVE_LIBNSL 0)
|
||||||
|
set(HAVE_LIBZ 0)
|
||||||
|
set(HAVE_LIBCRYPTO 0)
|
||||||
|
|
||||||
|
set(HAVE_DLOPEN 0)
|
||||||
|
|
||||||
|
set(HAVE_ALLOCA_H 0)
|
||||||
|
set(HAVE_ARPA_INET_H 0)
|
||||||
|
set(HAVE_DLFCN_H 0)
|
||||||
|
set(HAVE_FCNTL_H 1)
|
||||||
|
set(HAVE_FEATURES_H 0)
|
||||||
|
set(HAVE_INTTYPES_H 0)
|
||||||
|
set(HAVE_IO_H 1)
|
||||||
|
set(HAVE_MALLOC_H 1)
|
||||||
|
set(HAVE_MEMORY_H 1)
|
||||||
|
set(HAVE_NETDB_H 0)
|
||||||
|
set(HAVE_NETINET_IF_ETHER_H 0)
|
||||||
|
set(HAVE_NETINET_IN_H 0)
|
||||||
|
set(HAVE_NET_IF_H 0)
|
||||||
|
set(HAVE_PROCESS_H 1)
|
||||||
|
set(HAVE_PWD_H 0)
|
||||||
|
set(HAVE_SETJMP_H 1)
|
||||||
|
set(HAVE_SGTTY_H 0)
|
||||||
|
set(HAVE_SIGNAL_H 1)
|
||||||
|
set(HAVE_SOCKIO_H 0)
|
||||||
|
set(HAVE_STDINT_H 0)
|
||||||
|
set(HAVE_STDLIB_H 1)
|
||||||
|
set(HAVE_STRINGS_H 0)
|
||||||
|
set(HAVE_STRING_H 1)
|
||||||
|
set(HAVE_SYS_PARAM_H 0)
|
||||||
|
set(HAVE_SYS_POLL_H 0)
|
||||||
|
set(HAVE_SYS_SELECT_H 0)
|
||||||
|
set(HAVE_SYS_SOCKET_H 0)
|
||||||
|
set(HAVE_SYS_SOCKIO_H 0)
|
||||||
|
set(HAVE_SYS_STAT_H 1)
|
||||||
|
set(HAVE_SYS_TIME_H 0)
|
||||||
|
set(HAVE_SYS_TYPES_H 1)
|
||||||
|
set(HAVE_SYS_UTIME_H 1)
|
||||||
|
set(HAVE_TERMIOS_H 0)
|
||||||
|
set(HAVE_TERMIO_H 0)
|
||||||
|
set(HAVE_TIME_H 1)
|
||||||
|
set(HAVE_UNISTD_H 0)
|
||||||
|
set(HAVE_UTIME_H 0)
|
||||||
|
set(HAVE_X509_H 0)
|
||||||
|
set(HAVE_ZLIB_H 0)
|
||||||
|
|
||||||
|
set(HAVE_SIZEOF_LONG_DOUBLE 1)
|
||||||
|
set(SIZEOF_LONG_DOUBLE 8)
|
||||||
|
|
||||||
|
set(HAVE_SOCKET 1)
|
||||||
|
set(HAVE_POLL 0)
|
||||||
|
set(HAVE_SELECT 1)
|
||||||
|
set(HAVE_STRDUP 1)
|
||||||
|
set(HAVE_STRSTR 1)
|
||||||
|
set(HAVE_STRTOK_R 0)
|
||||||
|
set(HAVE_STRFTIME 1)
|
||||||
|
set(HAVE_UNAME 0)
|
||||||
|
set(HAVE_STRCASECMP 0)
|
||||||
|
set(HAVE_STRICMP 1)
|
||||||
|
set(HAVE_STRCMPI 1)
|
||||||
|
set(HAVE_GETHOSTBYADDR 1)
|
||||||
|
set(HAVE_GETTIMEOFDAY 0)
|
||||||
|
set(HAVE_INET_ADDR 1)
|
||||||
|
set(HAVE_INET_NTOA 1)
|
||||||
|
set(HAVE_INET_NTOA_R 0)
|
||||||
|
set(HAVE_TCGETATTR 0)
|
||||||
|
set(HAVE_TCSETATTR 0)
|
||||||
|
set(HAVE_PERROR 1)
|
||||||
|
set(HAVE_CLOSESOCKET 1)
|
||||||
|
set(HAVE_SETVBUF 0)
|
||||||
|
set(HAVE_SIGSETJMP 0)
|
||||||
|
set(HAVE_GETPASS_R 0)
|
||||||
|
set(HAVE_STRLCAT 0)
|
||||||
|
set(HAVE_GETPWUID 0)
|
||||||
|
set(HAVE_GETEUID 0)
|
||||||
|
set(HAVE_UTIME 1)
|
||||||
|
set(HAVE_RAND_EGD 0)
|
||||||
|
set(HAVE_RAND_SCREEN 0)
|
||||||
|
set(HAVE_RAND_STATUS 0)
|
||||||
|
set(HAVE_GMTIME_R 0)
|
||||||
|
set(HAVE_LOCALTIME_R 0)
|
||||||
|
set(HAVE_GETHOSTBYADDR_R 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R 0)
|
||||||
|
set(HAVE_SIGNAL_FUNC 1)
|
||||||
|
set(HAVE_SIGNAL_MACRO 0)
|
||||||
|
|
||||||
|
set(HAVE_GETHOSTBYADDR_R_5 0)
|
||||||
|
set(HAVE_GETHOSTBYADDR_R_5_REENTRANT 0)
|
||||||
|
set(HAVE_GETHOSTBYADDR_R_7 0)
|
||||||
|
set(HAVE_GETHOSTBYADDR_R_7_REENTRANT 0)
|
||||||
|
set(HAVE_GETHOSTBYADDR_R_8 0)
|
||||||
|
set(HAVE_GETHOSTBYADDR_R_8_REENTRANT 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R_3 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R_3_REENTRANT 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R_5 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R_5_REENTRANT 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R_6 0)
|
||||||
|
set(HAVE_GETHOSTBYNAME_R_6_REENTRANT 0)
|
||||||
|
|
||||||
|
set(TIME_WITH_SYS_TIME 0)
|
||||||
|
set(HAVE_O_NONBLOCK 0)
|
||||||
|
set(HAVE_IN_ADDR_T 0)
|
||||||
|
set(HAVE_INET_NTOA_R_DECL 0)
|
||||||
|
set(HAVE_INET_NTOA_R_DECL_REENTRANT 0)
|
||||||
|
set(HAVE_GETADDRINFO 0)
|
||||||
|
set(STDC_HEADERS 1)
|
||||||
|
set(RETSIGTYPE_TEST 1)
|
||||||
|
|
||||||
|
set(HAVE_SIGACTION 0)
|
||||||
|
set(HAVE_MACRO_SIGSETJMP 0)
|
||||||
|
else(WIN32)
|
||||||
|
message("This file should be included on Windows platform only")
|
||||||
|
endif(WIN32)
|
||||||
|
endif(NOT UNIX)
|
||||||
|
|
||||||
31
CMake/Utilities.cmake
Normal file
31
CMake/Utilities.cmake
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# File containing various utilities
|
||||||
|
|
||||||
|
# Converts a CMake list to a string containing elements separated by spaces
|
||||||
|
function(TO_LIST_SPACES _LIST_NAME OUTPUT_VAR)
|
||||||
|
set(NEW_LIST_SPACE)
|
||||||
|
foreach(ITEM ${${_LIST_NAME}})
|
||||||
|
set(NEW_LIST_SPACE "${NEW_LIST_SPACE} ${ITEM}")
|
||||||
|
endforeach()
|
||||||
|
string(STRIP ${NEW_LIST_SPACE} NEW_LIST_SPACE)
|
||||||
|
set(${OUTPUT_VAR} "${NEW_LIST_SPACE}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Appends a lis of item to a string which is a space-separated list, if they don't already exist.
|
||||||
|
function(LIST_SPACES_APPEND_ONCE LIST_NAME)
|
||||||
|
string(REPLACE " " ";" _LIST ${${LIST_NAME}})
|
||||||
|
list(APPEND _LIST ${ARGN})
|
||||||
|
list(REMOVE_DUPLICATES _LIST)
|
||||||
|
to_list_spaces(_LIST NEW_LIST_SPACE)
|
||||||
|
set(${LIST_NAME} "${NEW_LIST_SPACE}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Convinience function that does the same as LIST(FIND ...) but with a TRUE/FALSE return value.
|
||||||
|
# Ex: IN_STR_LIST(MY_LIST "Searched item" WAS_FOUND)
|
||||||
|
function(IN_STR_LIST LIST_NAME ITEM_SEARCHED RETVAL)
|
||||||
|
list(FIND ${LIST_NAME} ${ITEM_SEARCHED} FIND_POS)
|
||||||
|
if(${FIND_POS} EQUAL -1)
|
||||||
|
set(${RETVAL} FALSE PARENT_SCOPE)
|
||||||
|
else()
|
||||||
|
set(${RETVAL} TRUE PARENT_SCOPE)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
854
CMakeLists.txt
Normal file
854
CMakeLists.txt
Normal file
@@ -0,0 +1,854 @@
|
|||||||
|
# cURL/libcurl CMake script
|
||||||
|
# by Tetetest and Sukender (Benoit Neil)
|
||||||
|
|
||||||
|
# TODO:
|
||||||
|
# The output .so file lacks the soname number which we currently have within the lib/Makefile.am file
|
||||||
|
# Add full (4 or 5 libs) SSL support
|
||||||
|
# Add INSTALL target (EXTRA_DIST variables in Makefile.am may be moved to Makefile.inc so that CMake/CPack is aware of what's to include).
|
||||||
|
# Add CTests(?)
|
||||||
|
# Check on all possible platforms
|
||||||
|
# Test with as many configurations possible (With or without any option)
|
||||||
|
# Create scripts that help keeping the CMake build system up to date (to reduce maintenance). According to Tetetest:
|
||||||
|
# - lists of headers that 'configure' checks for;
|
||||||
|
# - curl-specific tests (the ones that are in m4/curl-*.m4 files);
|
||||||
|
# - (most obvious thing:) curl version numbers.
|
||||||
|
# Add documentation subproject
|
||||||
|
#
|
||||||
|
# To check:
|
||||||
|
# (From Daniel Stenberg) The cmake build selected to run gcc with -fPIC on my box while the plain configure script did not.
|
||||||
|
# (From Daniel Stenberg) The gcc command line use neither -g nor any -O options. As a developer, I also treasure our configure scripts's --enable-debug option that sets a long range of "picky" compiler options.
|
||||||
|
cmake_minimum_required(VERSION 2.6.2 FATAL_ERROR)
|
||||||
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}")
|
||||||
|
include(Utilities)
|
||||||
|
|
||||||
|
project( CURL C )
|
||||||
|
|
||||||
|
|
||||||
|
file (READ ${CURL_SOURCE_DIR}/include/curl/curlver.h CURL_VERSION_H_CONTENTS)
|
||||||
|
string (REGEX MATCH "LIBCURL_VERSION_MAJOR[ \t]+([0-9]+)"
|
||||||
|
LIBCURL_VERSION_MJ ${CURL_VERSION_H_CONTENTS})
|
||||||
|
string (REGEX MATCH "([0-9]+)"
|
||||||
|
LIBCURL_VERSION_MJ ${LIBCURL_VERSION_MJ})
|
||||||
|
string (REGEX MATCH
|
||||||
|
"LIBCURL_VERSION_MINOR[ \t]+([0-9]+)"
|
||||||
|
LIBCURL_VERSION_MI ${CURL_VERSION_H_CONTENTS})
|
||||||
|
string (REGEX MATCH "([0-9]+)" LIBCURL_VERSION_MI ${LIBCURL_VERSION_MI})
|
||||||
|
string (REGEX MATCH
|
||||||
|
"LIBCURL_VERSION_PATCH[ \t]+([0-9]+)"
|
||||||
|
LIBCURL_VERSION_PT ${CURL_VERSION_H_CONTENTS})
|
||||||
|
string (REGEX MATCH "([0-9]+)" LIBCURL_VERSION_PT ${LIBCURL_VERSION_PT})
|
||||||
|
set (CURL_MAJOR_VERSION ${LIBCURL_VERSION_MJ})
|
||||||
|
set (CURL_MINOR_VERSION ${LIBCURL_VERSION_MI})
|
||||||
|
set (CURL_PATCH_VERSION ${LIBCURL_VERSION_PT})
|
||||||
|
|
||||||
|
include_regular_expression("^.*$") # Sukender: Is it necessary?
|
||||||
|
|
||||||
|
# Setup package meta-data
|
||||||
|
# SET(PACKAGE "curl")
|
||||||
|
set(CURL_VERSION ${CURL_MAJOR_VERSION}.${CURL_MINOR_VERSION}.${CURL_PATCH_VERSION})
|
||||||
|
message(STATUS "curl version=[${CURL_VERSION}]")
|
||||||
|
# SET(PACKAGE_TARNAME "curl")
|
||||||
|
# SET(PACKAGE_NAME "curl")
|
||||||
|
# SET(PACKAGE_VERSION "-")
|
||||||
|
# SET(PACKAGE_STRING "curl-")
|
||||||
|
# SET(PACKAGE_BUGREPORT "a suitable curl mailing list => http://curl.haxx.se/mail/")
|
||||||
|
set(OPERATING_SYSTEM "${CMAKE_SYSTEM_NAME}")
|
||||||
|
set(OS "\"${CMAKE_SYSTEM_NAME}\"")
|
||||||
|
|
||||||
|
include_directories(${PROJECT_BINARY_DIR}/include/curl)
|
||||||
|
include_directories( ${CURL_SOURCE_DIR}/include )
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
set(NATIVE_WINDOWS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_CURL_EXE "Set to ON to build cURL executable." ON)
|
||||||
|
option(BUILD_CURL_TESTS "Set to ON to build cURL tests." ON)
|
||||||
|
option(CURL_STATICLIB "Set to ON to build libcurl with static linking." OFF)
|
||||||
|
option(CURL_USE_ARES "Set to ON to enable c-ares support" OFF)
|
||||||
|
# initialize CURL_LIBS
|
||||||
|
set(CURL_LIBS "")
|
||||||
|
|
||||||
|
if(CURL_USE_ARES)
|
||||||
|
set(USE_ARES ${CURL_USE_ARES})
|
||||||
|
find_package(CARES REQUIRED)
|
||||||
|
list(APPEND CURL_LIBS ${CARES_LIBRARY} )
|
||||||
|
set(CURL_LIBS ${CURL_LIBS} ${CARES_LIBRARY})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_DASHBOARD_REPORTS "Set to ON to activate reporting of cURL builds here http://www.cdash.org/CDashPublic/index.php?project=CURL" OFF)
|
||||||
|
if(BUILD_DASHBOARD_REPORTS)
|
||||||
|
#INCLUDE(Dart)
|
||||||
|
include(CTest)
|
||||||
|
endif(BUILD_DASHBOARD_REPORTS)
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
option(BUILD_RELEASE_DEBUG_DIRS "Set OFF to build each configuration to a separate directory" OFF)
|
||||||
|
mark_as_advanced(BUILD_RELEASE_DEBUG_DIRS)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON)
|
||||||
|
mark_as_advanced(CURL_HIDDEN_SYMBOLS)
|
||||||
|
|
||||||
|
# IF(WIN32)
|
||||||
|
# OPTION(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON)
|
||||||
|
# MARK_AS_ADVANCED(CURL_WINDOWS_SSPI)
|
||||||
|
# ENDIF()
|
||||||
|
|
||||||
|
option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF)
|
||||||
|
mark_as_advanced(HTTP_ONLY)
|
||||||
|
option(CURL_DISABLE_FTP "disables FTP" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_FTP)
|
||||||
|
option(CURL_DISABLE_LDAP "disables LDAP" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_LDAP)
|
||||||
|
option(CURL_DISABLE_TELNET "disables Telnet" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_TELNET)
|
||||||
|
option(CURL_DISABLE_DICT "disables DICT" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_DICT)
|
||||||
|
option(CURL_DISABLE_FILE "disables FILE" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_FILE)
|
||||||
|
option(CURL_DISABLE_TFTP "disables TFTP" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_TFTP)
|
||||||
|
option(CURL_DISABLE_HTTP "disables HTTP" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_HTTP)
|
||||||
|
|
||||||
|
option(CURL_DISABLE_LDAPS "to disable LDAPS" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_LDAPS)
|
||||||
|
if(WIN32)
|
||||||
|
set(CURL_DEFAULT_DISABLE_LDAP OFF)
|
||||||
|
# some windows compilers do not have wldap32
|
||||||
|
if( NOT HAVE_WLDAP32)
|
||||||
|
set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
|
||||||
|
message(STATUS "wldap32 not found CURL_DISABLE_LDAP set ON")
|
||||||
|
option(CURL_LDAP_WIN "Use Windows LDAP implementation" OFF)
|
||||||
|
else()
|
||||||
|
option(CURL_LDAP_WIN "Use Windows LDAP implementation" ON)
|
||||||
|
endif()
|
||||||
|
mark_as_advanced(CURL_LDAP_WIN)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(HTTP_ONLY)
|
||||||
|
set(CURL_DISABLE_FTP ON)
|
||||||
|
set(CURL_DISABLE_LDAP ON)
|
||||||
|
set(CURL_DISABLE_TELNET ON)
|
||||||
|
set(CURL_DISABLE_DICT ON)
|
||||||
|
set(CURL_DISABLE_FILE ON)
|
||||||
|
set(CURL_DISABLE_TFTP ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(CURL_DISABLE_COOKIES "to disable cookies support" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_COOKIES)
|
||||||
|
|
||||||
|
option(CURL_DISABLE_CRYPTO_AUTH "to disable cryptographic authentication" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_CRYPTO_AUTH)
|
||||||
|
option(CURL_DISABLE_VERBOSE_STRINGS "to disable verbose strings" OFF)
|
||||||
|
mark_as_advanced(CURL_DISABLE_VERBOSE_STRINGS)
|
||||||
|
option(DISABLED_THREADSAFE "Set to explicitly specify we don't want to use thread-safe functions" OFF)
|
||||||
|
mark_as_advanced(DISABLED_THREADSAFE)
|
||||||
|
option(ENABLE_IPV6 "Define if you want to enable IPv6 support" OFF)
|
||||||
|
mark_as_advanced(ENABLE_IPV6)
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
list_spaces_append_once(CMAKE_C_STANDARD_LIBRARIES wsock32.lib ws2_32.lib) # bufferoverflowu.lib
|
||||||
|
if(CURL_DISABLE_LDAP)
|
||||||
|
# Remove wldap32.lib from space-separated list
|
||||||
|
string(REPLACE " " ";" _LIST ${CMAKE_C_STANDARD_LIBRARIES})
|
||||||
|
list(REMOVE_ITEM _LIST "wldap32.lib")
|
||||||
|
to_list_spaces(_LIST CMAKE_C_STANDARD_LIBRARIES)
|
||||||
|
else()
|
||||||
|
# Append wldap32.lib
|
||||||
|
list_spaces_append_once(CMAKE_C_STANDARD_LIBRARIES wldap32.lib)
|
||||||
|
endif()
|
||||||
|
set(CMAKE_C_STANDARD_LIBRARIES "${CMAKE_C_STANDARD_LIBRARIES}" CACHE STRING "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
# We need ansi c-flags, especially on HP
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}")
|
||||||
|
set(CMAKE_REQUIRED_FLAGS ${CMAKE_ANSI_CFLAGS})
|
||||||
|
|
||||||
|
# Disable warnings on Borland to avoid changing 3rd party code.
|
||||||
|
if(BORLAND)
|
||||||
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -w-")
|
||||||
|
endif(BORLAND)
|
||||||
|
|
||||||
|
# If we are on AIX, do the _ALL_SOURCE magic
|
||||||
|
if(${CMAKE_SYSTEM_NAME} MATCHES AIX)
|
||||||
|
set(_ALL_SOURCE 1)
|
||||||
|
endif(${CMAKE_SYSTEM_NAME} MATCHES AIX)
|
||||||
|
|
||||||
|
# Include all the necessary files for macros
|
||||||
|
include (CheckFunctionExists)
|
||||||
|
include (CheckIncludeFile)
|
||||||
|
include (CheckIncludeFiles)
|
||||||
|
include (CheckLibraryExists)
|
||||||
|
include (CheckSymbolExists)
|
||||||
|
# if crosscompiling is on, the CHECK_TYPE_SIZE macro coming with cmake uses
|
||||||
|
# TRY_COMPILE instead of TRY_RUN which makes crosscompiling easier, Alex
|
||||||
|
if(CMAKE_CROSSCOMPILING)
|
||||||
|
include ("${CMAKE_MODULE_PATH}/CheckTypeSize.cmake")
|
||||||
|
else(CMAKE_CROSSCOMPILING)
|
||||||
|
include (CheckTypeSize)
|
||||||
|
endif(CMAKE_CROSSCOMPILING)
|
||||||
|
|
||||||
|
# On windows preload settings
|
||||||
|
if(WIN32)
|
||||||
|
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/Platforms/WindowsCache.cmake)
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
|
# This macro checks if the symbol exists in the library and if it
|
||||||
|
# does, it appends library to the list.
|
||||||
|
macro(CHECK_LIBRARY_EXISTS_CONCAT LIBRARY SYMBOL VARIABLE)
|
||||||
|
check_library_exists("${LIBRARY};${CURL_LIBS}" ${SYMBOL} ""
|
||||||
|
${VARIABLE})
|
||||||
|
if(${VARIABLE})
|
||||||
|
set(CURL_LIBS ${CURL_LIBS} ${LIBRARY})
|
||||||
|
endif(${VARIABLE})
|
||||||
|
endmacro(CHECK_LIBRARY_EXISTS_CONCAT)
|
||||||
|
|
||||||
|
# Check for all needed libraries
|
||||||
|
check_library_exists_concat("dl" dlopen HAVE_LIBDL)
|
||||||
|
check_library_exists_concat("socket" connect HAVE_LIBSOCKET)
|
||||||
|
check_library_exists("c" gethostbyname "" NOT_NEED_LIBNSL)
|
||||||
|
|
||||||
|
# Yellowtab Zeta needs different libraries than BeOS 5.
|
||||||
|
if(BEOS)
|
||||||
|
set(NOT_NEED_LIBNSL 1)
|
||||||
|
check_library_exists_concat("bind" gethostbyname HAVE_LIBBIND)
|
||||||
|
check_library_exists_concat("bnetapi" closesocket HAVE_LIBBNETAPI)
|
||||||
|
endif(BEOS)
|
||||||
|
|
||||||
|
if(NOT NOT_NEED_LIBNSL)
|
||||||
|
check_library_exists_concat("nsl" gethostbyname HAVE_LIBNSL)
|
||||||
|
endif(NOT NOT_NEED_LIBNSL)
|
||||||
|
|
||||||
|
check_library_exists_concat("ws2_32" getch HAVE_LIBWS2_32)
|
||||||
|
check_library_exists_concat("winmm" getch HAVE_LIBWINMM)
|
||||||
|
check_library_exists("wldap32" cldap_open "" HAVE_WLDAP32)
|
||||||
|
|
||||||
|
# IF(NOT CURL_SPECIAL_LIBZ)
|
||||||
|
# CHECK_LIBRARY_EXISTS_CONCAT("z" inflateEnd HAVE_LIBZ)
|
||||||
|
# ENDIF(NOT CURL_SPECIAL_LIBZ)
|
||||||
|
|
||||||
|
option(CMAKE_USE_OPENSSL "Use OpenSSL code. Experimental" ON)
|
||||||
|
mark_as_advanced(CMAKE_USE_OPENSSL)
|
||||||
|
if(CMAKE_USE_OPENSSL)
|
||||||
|
if(WIN32)
|
||||||
|
find_package(OpenSSL)
|
||||||
|
if(OPENSSL_FOUND)
|
||||||
|
set(USE_SSLEAY TRUE)
|
||||||
|
set(USE_OPENSSL TRUE)
|
||||||
|
list(APPEND CURL_LIBS ${OPENSSL_LIBRARIES} )
|
||||||
|
else()
|
||||||
|
set(CMAKE_USE_OPENSSL FALSE)
|
||||||
|
message(STATUS "OpenSSL NOT Found, disabling CMAKE_USE_OPENSSL")
|
||||||
|
endif()
|
||||||
|
else(WIN32)
|
||||||
|
check_library_exists_concat("crypto" CRYPTO_lock HAVE_LIBCRYPTO)
|
||||||
|
check_library_exists_concat("ssl" SSL_connect HAVE_LIBSSL)
|
||||||
|
endif(WIN32)
|
||||||
|
endif(CMAKE_USE_OPENSSL)
|
||||||
|
|
||||||
|
# Check for idn
|
||||||
|
check_library_exists_concat("idn" idna_to_ascii_lz HAVE_LIBIDN)
|
||||||
|
|
||||||
|
# Check for LDAP
|
||||||
|
check_library_exists_concat("ldap" ldap_init HAVE_LIBLDAP)
|
||||||
|
# if(NOT HAVE_LIBLDAP)
|
||||||
|
# SET(CURL_DISABLE_LDAP ON)
|
||||||
|
# endif(NOT HAVE_LIBLDAP)
|
||||||
|
|
||||||
|
# Check for symbol dlopen (same as HAVE_LIBDL)
|
||||||
|
check_library_exists("${CURL_LIBS}" dlopen "" HAVE_DLOPEN)
|
||||||
|
|
||||||
|
# For other tests to use the same libraries
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES ${CURL_LIBS})
|
||||||
|
|
||||||
|
option(CURL_ZLIB "Set to ON to enable building cURL with zlib support." ON)
|
||||||
|
set(HAVE_LIBZ OFF)
|
||||||
|
set(HAVE_ZLIB_H OFF)
|
||||||
|
set(HAVE_ZLIB OFF)
|
||||||
|
if(CURL_ZLIB) # AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE
|
||||||
|
find_package(ZLIB QUIET)
|
||||||
|
if(ZLIB_FOUND)
|
||||||
|
set(HAVE_ZLIB_H ON)
|
||||||
|
set(HAVE_ZLIB ON)
|
||||||
|
set(HAVE_LIBZ ON)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# If we have features.h, then do the _BSD_SOURCE magic
|
||||||
|
check_include_file("features.h" HAVE_FEATURES_H)
|
||||||
|
|
||||||
|
# Check if header file exists and add it to the list.
|
||||||
|
macro(CHECK_INCLUDE_FILE_CONCAT FILE VARIABLE)
|
||||||
|
check_include_files("${CURL_INCLUDES};${FILE}" ${VARIABLE})
|
||||||
|
if(${VARIABLE})
|
||||||
|
set(CURL_INCLUDES ${CURL_INCLUDES} ${FILE})
|
||||||
|
set(CURL_TEST_DEFINES "${CURL_TEST_DEFINES} -D${VARIABLE}")
|
||||||
|
endif(${VARIABLE})
|
||||||
|
endmacro(CHECK_INCLUDE_FILE_CONCAT)
|
||||||
|
|
||||||
|
|
||||||
|
# Check for header files
|
||||||
|
if(NOT UNIX)
|
||||||
|
check_include_file_concat("ws2tcpip.h" HAVE_WS2TCPIP_H)
|
||||||
|
check_include_file_concat("winsock2.h" HAVE_WINSOCK2_H)
|
||||||
|
endif(NOT UNIX)
|
||||||
|
check_include_file_concat("stdio.h" HAVE_STDIO_H)
|
||||||
|
if(NOT UNIX)
|
||||||
|
check_include_file_concat("windows.h" HAVE_WINDOWS_H)
|
||||||
|
check_include_file_concat("winsock.h" HAVE_WINSOCK_H)
|
||||||
|
endif(NOT UNIX)
|
||||||
|
|
||||||
|
check_include_file_concat("inttypes.h" HAVE_INTTYPES_H)
|
||||||
|
check_include_file_concat("sys/filio.h" HAVE_SYS_FILIO_H)
|
||||||
|
check_include_file_concat("sys/ioctl.h" HAVE_SYS_IOCTL_H)
|
||||||
|
check_include_file_concat("sys/param.h" HAVE_SYS_PARAM_H)
|
||||||
|
check_include_file_concat("sys/poll.h" HAVE_SYS_POLL_H)
|
||||||
|
check_include_file_concat("sys/resource.h" HAVE_SYS_RESOURCE_H)
|
||||||
|
check_include_file_concat("sys/select.h" HAVE_SYS_SELECT_H)
|
||||||
|
check_include_file_concat("sys/socket.h" HAVE_SYS_SOCKET_H)
|
||||||
|
check_include_file_concat("sys/sockio.h" HAVE_SYS_SOCKIO_H)
|
||||||
|
check_include_file_concat("sys/stat.h" HAVE_SYS_STAT_H)
|
||||||
|
check_include_file_concat("sys/time.h" HAVE_SYS_TIME_H)
|
||||||
|
check_include_file_concat("sys/types.h" HAVE_SYS_TYPES_H)
|
||||||
|
check_include_file_concat("sys/uio.h" HAVE_SYS_UIO_H)
|
||||||
|
check_include_file_concat("sys/un.h" HAVE_SYS_UN_H)
|
||||||
|
check_include_file_concat("sys/utime.h" HAVE_SYS_UTIME_H)
|
||||||
|
check_include_file_concat("alloca.h" HAVE_ALLOCA_H)
|
||||||
|
check_include_file_concat("arpa/inet.h" HAVE_ARPA_INET_H)
|
||||||
|
check_include_file_concat("arpa/tftp.h" HAVE_ARPA_TFTP_H)
|
||||||
|
check_include_file_concat("assert.h" HAVE_ASSERT_H)
|
||||||
|
check_include_file_concat("crypto.h" HAVE_CRYPTO_H)
|
||||||
|
check_include_file_concat("des.h" HAVE_DES_H)
|
||||||
|
check_include_file_concat("err.h" HAVE_ERR_H)
|
||||||
|
check_include_file_concat("errno.h" HAVE_ERRNO_H)
|
||||||
|
check_include_file_concat("fcntl.h" HAVE_FCNTL_H)
|
||||||
|
check_include_file_concat("gssapi/gssapi.h" HAVE_GSSAPI_GSSAPI_H)
|
||||||
|
check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H)
|
||||||
|
check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H)
|
||||||
|
check_include_file_concat("idn-free.h" HAVE_IDN_FREE_H)
|
||||||
|
check_include_file_concat("ifaddrs.h" HAVE_IFADDRS_H)
|
||||||
|
check_include_file_concat("io.h" HAVE_IO_H)
|
||||||
|
check_include_file_concat("krb.h" HAVE_KRB_H)
|
||||||
|
check_include_file_concat("libgen.h" HAVE_LIBGEN_H)
|
||||||
|
check_include_file_concat("libssh2.h" HAVE_LIBSSH2_H)
|
||||||
|
check_include_file_concat("limits.h" HAVE_LIMITS_H)
|
||||||
|
check_include_file_concat("locale.h" HAVE_LOCALE_H)
|
||||||
|
check_include_file_concat("net/if.h" HAVE_NET_IF_H)
|
||||||
|
check_include_file_concat("netdb.h" HAVE_NETDB_H)
|
||||||
|
check_include_file_concat("netinet/in.h" HAVE_NETINET_IN_H)
|
||||||
|
check_include_file_concat("netinet/tcp.h" HAVE_NETINET_TCP_H)
|
||||||
|
check_include_file_concat("openssl/crypto.h" HAVE_OPENSSL_CRYPTO_H)
|
||||||
|
check_include_file_concat("openssl/engine.h" HAVE_OPENSSL_ENGINE_H)
|
||||||
|
check_include_file_concat("openssl/err.h" HAVE_OPENSSL_ERR_H)
|
||||||
|
check_include_file_concat("openssl/pem.h" HAVE_OPENSSL_PEM_H)
|
||||||
|
check_include_file_concat("openssl/pkcs12.h" HAVE_OPENSSL_PKCS12_H)
|
||||||
|
check_include_file_concat("openssl/rsa.h" HAVE_OPENSSL_RSA_H)
|
||||||
|
check_include_file_concat("openssl/ssl.h" HAVE_OPENSSL_SSL_H)
|
||||||
|
check_include_file_concat("openssl/x509.h" HAVE_OPENSSL_X509_H)
|
||||||
|
check_include_file_concat("pem.h" HAVE_PEM_H)
|
||||||
|
check_include_file_concat("poll.h" HAVE_POLL_H)
|
||||||
|
check_include_file_concat("pwd.h" HAVE_PWD_H)
|
||||||
|
check_include_file_concat("rsa.h" HAVE_RSA_H)
|
||||||
|
check_include_file_concat("setjmp.h" HAVE_SETJMP_H)
|
||||||
|
check_include_file_concat("sgtty.h" HAVE_SGTTY_H)
|
||||||
|
check_include_file_concat("signal.h" HAVE_SIGNAL_H)
|
||||||
|
check_include_file_concat("ssl.h" HAVE_SSL_H)
|
||||||
|
check_include_file_concat("stdbool.h" HAVE_STDBOOL_H)
|
||||||
|
check_include_file_concat("stdint.h" HAVE_STDINT_H)
|
||||||
|
check_include_file_concat("stdio.h" HAVE_STDIO_H)
|
||||||
|
check_include_file_concat("stdlib.h" HAVE_STDLIB_H)
|
||||||
|
check_include_file_concat("string.h" HAVE_STRING_H)
|
||||||
|
check_include_file_concat("strings.h" HAVE_STRINGS_H)
|
||||||
|
check_include_file_concat("stropts.h" HAVE_STROPTS_H)
|
||||||
|
check_include_file_concat("termio.h" HAVE_TERMIO_H)
|
||||||
|
check_include_file_concat("termios.h" HAVE_TERMIOS_H)
|
||||||
|
check_include_file_concat("time.h" HAVE_TIME_H)
|
||||||
|
check_include_file_concat("tld.h" HAVE_TLD_H)
|
||||||
|
check_include_file_concat("unistd.h" HAVE_UNISTD_H)
|
||||||
|
check_include_file_concat("utime.h" HAVE_UTIME_H)
|
||||||
|
check_include_file_concat("x509.h" HAVE_X509_H)
|
||||||
|
|
||||||
|
check_include_file_concat("process.h" HAVE_PROCESS_H)
|
||||||
|
check_include_file_concat("stddef.h" HAVE_STDDEF_H)
|
||||||
|
check_include_file_concat("dlfcn.h" HAVE_DLFCN_H)
|
||||||
|
check_include_file_concat("malloc.h" HAVE_MALLOC_H)
|
||||||
|
check_include_file_concat("memory.h" HAVE_MEMORY_H)
|
||||||
|
check_include_file_concat("ldap.h" HAVE_LDAP_H)
|
||||||
|
check_include_file_concat("netinet/if_ether.h" HAVE_NETINET_IF_ETHER_H)
|
||||||
|
check_include_file_concat("stdint.h" HAVE_STDINT_H)
|
||||||
|
check_include_file_concat("sockio.h" HAVE_SOCKIO_H)
|
||||||
|
check_include_file_concat("sys/utsname.h" HAVE_SYS_UTSNAME_H)
|
||||||
|
check_include_file_concat("idna.h" HAVE_IDNA_H)
|
||||||
|
|
||||||
|
if(CMAKE_USE_OPENSSL)
|
||||||
|
check_include_file_concat("openssl/rand.h" HAVE_OPENSSL_RAND_H)
|
||||||
|
endif(CMAKE_USE_OPENSSL)
|
||||||
|
|
||||||
|
if(NOT HAVE_LDAP_H)
|
||||||
|
message(STATUS "LDAP_H not found CURL_DISABLE_LDAP set ON")
|
||||||
|
set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
check_type_size(size_t SIZEOF_SIZE_T)
|
||||||
|
check_type_size(ssize_t SIZEOF_SSIZE_T)
|
||||||
|
check_type_size("long long" SIZEOF_LONG_LONG)
|
||||||
|
check_type_size("long" SIZEOF_LONG)
|
||||||
|
check_type_size("short" SIZEOF_SHORT)
|
||||||
|
check_type_size("int" SIZEOF_INT)
|
||||||
|
check_type_size("__int64" SIZEOF___INT64)
|
||||||
|
check_type_size("long double" SIZEOF_LONG_DOUBLE)
|
||||||
|
check_type_size("time_t" SIZEOF_TIME_T)
|
||||||
|
if(NOT HAVE_SIZEOF_SSIZE_T)
|
||||||
|
if(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
|
||||||
|
set(ssize_t long)
|
||||||
|
endif(SIZEOF_LONG EQUAL SIZEOF_SIZE_T)
|
||||||
|
if(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
|
||||||
|
set(ssize_t __int64)
|
||||||
|
endif(NOT ssize_t AND SIZEOF___INT64 EQUAL SIZEOF_SIZE_T)
|
||||||
|
endif(NOT HAVE_SIZEOF_SSIZE_T)
|
||||||
|
|
||||||
|
# Different sizeofs, etc.
|
||||||
|
|
||||||
|
# define CURL_SIZEOF_LONG 4
|
||||||
|
# define CURL_TYPEOF_CURL_OFF_T long long
|
||||||
|
# define CURL_FORMAT_CURL_OFF_T "lld"
|
||||||
|
# define CURL_FORMAT_CURL_OFF_TU "llu"
|
||||||
|
# define CURL_FORMAT_OFF_T "%lld"
|
||||||
|
# define CURL_SIZEOF_CURL_OFF_T 8
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_T LL
|
||||||
|
# define CURL_SUFFIX_CURL_OFF_TU ULL
|
||||||
|
|
||||||
|
set(CURL_SIZEOF_LONG ${SIZEOF_LONG})
|
||||||
|
|
||||||
|
if(SIZEOF_LONG EQUAL 8)
|
||||||
|
set(CURL_TYPEOF_CURL_OFF_T long)
|
||||||
|
set(CURL_SIZEOF_CURL_OFF_T 8)
|
||||||
|
set(CURL_FORMAT_CURL_OFF_T "ld")
|
||||||
|
set(CURL_FORMAT_CURL_OFF_TU "lu")
|
||||||
|
set(CURL_FORMAT_OFF_T "%ld")
|
||||||
|
set(CURL_SUFFIX_CURL_OFF_T L)
|
||||||
|
set(CURL_SUFFIX_CURL_OFF_TU LU)
|
||||||
|
endif(SIZEOF_LONG EQUAL 8)
|
||||||
|
|
||||||
|
if(SIZEOF_LONG_LONG EQUAL 8)
|
||||||
|
set(CURL_TYPEOF_CURL_OFF_T "long long")
|
||||||
|
set(CURL_SIZEOF_CURL_OFF_T 8)
|
||||||
|
set(CURL_FORMAT_CURL_OFF_T "lld")
|
||||||
|
set(CURL_FORMAT_CURL_OFF_TU "llu")
|
||||||
|
set(CURL_FORMAT_OFF_T "%lld")
|
||||||
|
set(CURL_SUFFIX_CURL_OFF_T LL)
|
||||||
|
set(CURL_SUFFIX_CURL_OFF_TU LLU)
|
||||||
|
endif(SIZEOF_LONG_LONG EQUAL 8)
|
||||||
|
|
||||||
|
if(NOT CURL_TYPEOF_CURL_OFF_T)
|
||||||
|
set(CURL_TYPEOF_CURL_OFF_T ${ssize_t})
|
||||||
|
set(CURL_SIZEOF_CURL_OFF_T ${SIZEOF_SSIZE_T})
|
||||||
|
# TODO: need adjustment here.
|
||||||
|
set(CURL_FORMAT_CURL_OFF_T "ld")
|
||||||
|
set(CURL_FORMAT_CURL_OFF_TU "lu")
|
||||||
|
set(CURL_FORMAT_OFF_T "%ld")
|
||||||
|
set(CURL_SUFFIX_CURL_OFF_T L)
|
||||||
|
set(CURL_SUFFIX_CURL_OFF_TU LU)
|
||||||
|
endif(NOT CURL_TYPEOF_CURL_OFF_T)
|
||||||
|
|
||||||
|
if(HAVE_SIZEOF_LONG_LONG)
|
||||||
|
set(HAVE_LONGLONG 1)
|
||||||
|
set(HAVE_LL 1)
|
||||||
|
endif(HAVE_SIZEOF_LONG_LONG)
|
||||||
|
|
||||||
|
find_file(RANDOM_FILE urandom /dev)
|
||||||
|
mark_as_advanced(RANDOM_FILE)
|
||||||
|
|
||||||
|
# Check for some functions that are used
|
||||||
|
check_symbol_exists(basename "${CURL_INCLUDES}" HAVE_BASENAME)
|
||||||
|
check_symbol_exists(socket "${CURL_INCLUDES}" HAVE_SOCKET)
|
||||||
|
check_symbol_exists(poll "${CURL_INCLUDES}" HAVE_POLL)
|
||||||
|
check_symbol_exists(select "${CURL_INCLUDES}" HAVE_SELECT)
|
||||||
|
check_symbol_exists(strdup "${CURL_INCLUDES}" HAVE_STRDUP)
|
||||||
|
check_symbol_exists(strstr "${CURL_INCLUDES}" HAVE_STRSTR)
|
||||||
|
check_symbol_exists(strtok_r "${CURL_INCLUDES}" HAVE_STRTOK_R)
|
||||||
|
check_symbol_exists(strftime "${CURL_INCLUDES}" HAVE_STRFTIME)
|
||||||
|
check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
|
||||||
|
check_symbol_exists(strcasecmp "${CURL_INCLUDES}" HAVE_STRCASECMP)
|
||||||
|
check_symbol_exists(stricmp "${CURL_INCLUDES}" HAVE_STRICMP)
|
||||||
|
check_symbol_exists(strcmpi "${CURL_INCLUDES}" HAVE_STRCMPI)
|
||||||
|
check_symbol_exists(strncmpi "${CURL_INCLUDES}" HAVE_STRNCMPI)
|
||||||
|
check_symbol_exists(alarm "${CURL_INCLUDES}" HAVE_ALARM)
|
||||||
|
if(NOT HAVE_STRNCMPI)
|
||||||
|
set(HAVE_STRCMPI)
|
||||||
|
endif(NOT HAVE_STRNCMPI)
|
||||||
|
check_symbol_exists(gethostbyaddr "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR)
|
||||||
|
check_symbol_exists(gethostbyaddr_r "${CURL_INCLUDES}" HAVE_GETHOSTBYADDR_R)
|
||||||
|
check_symbol_exists(gettimeofday "${CURL_INCLUDES}" HAVE_GETTIMEOFDAY)
|
||||||
|
check_symbol_exists(inet_addr "${CURL_INCLUDES}" HAVE_INET_ADDR)
|
||||||
|
check_symbol_exists(inet_ntoa "${CURL_INCLUDES}" HAVE_INET_NTOA)
|
||||||
|
check_symbol_exists(inet_ntoa_r "${CURL_INCLUDES}" HAVE_INET_NTOA_R)
|
||||||
|
check_symbol_exists(tcsetattr "${CURL_INCLUDES}" HAVE_TCSETATTR)
|
||||||
|
check_symbol_exists(tcgetattr "${CURL_INCLUDES}" HAVE_TCGETATTR)
|
||||||
|
check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR)
|
||||||
|
check_symbol_exists(closesocket "${CURL_INCLUDES}" HAVE_CLOSESOCKET)
|
||||||
|
check_symbol_exists(setvbuf "${CURL_INCLUDES}" HAVE_SETVBUF)
|
||||||
|
check_symbol_exists(sigsetjmp "${CURL_INCLUDES}" HAVE_SIGSETJMP)
|
||||||
|
check_symbol_exists(getpass_r "${CURL_INCLUDES}" HAVE_GETPASS_R)
|
||||||
|
check_symbol_exists(strlcat "${CURL_INCLUDES}" HAVE_STRLCAT)
|
||||||
|
check_symbol_exists(getpwuid "${CURL_INCLUDES}" HAVE_GETPWUID)
|
||||||
|
check_symbol_exists(geteuid "${CURL_INCLUDES}" HAVE_GETEUID)
|
||||||
|
check_symbol_exists(utime "${CURL_INCLUDES}" HAVE_UTIME)
|
||||||
|
if(CMAKE_USE_OPENSSL)
|
||||||
|
check_symbol_exists(RAND_status "${CURL_INCLUDES}" HAVE_RAND_STATUS)
|
||||||
|
check_symbol_exists(RAND_screen "${CURL_INCLUDES}" HAVE_RAND_SCREEN)
|
||||||
|
check_symbol_exists(RAND_egd "${CURL_INCLUDES}" HAVE_RAND_EGD)
|
||||||
|
check_symbol_exists(CRYPTO_cleanup_all_ex_data "${CURL_INCLUDES}"
|
||||||
|
HAVE_CRYPTO_CLEANUP_ALL_EX_DATA)
|
||||||
|
if(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
|
||||||
|
set(USE_OPENSSL 1)
|
||||||
|
set(USE_SSLEAY 1)
|
||||||
|
endif(HAVE_LIBCRYPTO AND HAVE_LIBSSL)
|
||||||
|
endif(CMAKE_USE_OPENSSL)
|
||||||
|
check_symbol_exists(gmtime_r "${CURL_INCLUDES}" HAVE_GMTIME_R)
|
||||||
|
check_symbol_exists(localtime_r "${CURL_INCLUDES}" HAVE_LOCALTIME_R)
|
||||||
|
|
||||||
|
check_symbol_exists(gethostbyname "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME)
|
||||||
|
check_symbol_exists(gethostbyname_r "${CURL_INCLUDES}" HAVE_GETHOSTBYNAME_R)
|
||||||
|
|
||||||
|
check_symbol_exists(signal "${CURL_INCLUDES}" HAVE_SIGNAL_FUNC)
|
||||||
|
check_symbol_exists(SIGALRM "${CURL_INCLUDES}" HAVE_SIGNAL_MACRO)
|
||||||
|
if(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
|
||||||
|
set(HAVE_SIGNAL 1)
|
||||||
|
endif(HAVE_SIGNAL_FUNC AND HAVE_SIGNAL_MACRO)
|
||||||
|
check_symbol_exists(uname "${CURL_INCLUDES}" HAVE_UNAME)
|
||||||
|
check_symbol_exists(strtoll "${CURL_INCLUDES}" HAVE_STRTOLL)
|
||||||
|
check_symbol_exists(_strtoi64 "${CURL_INCLUDES}" HAVE__STRTOI64)
|
||||||
|
check_symbol_exists(strerror_r "${CURL_INCLUDES}" HAVE_STRERROR_R)
|
||||||
|
check_symbol_exists(siginterrupt "${CURL_INCLUDES}" HAVE_SIGINTERRUPT)
|
||||||
|
check_symbol_exists(perror "${CURL_INCLUDES}" HAVE_PERROR)
|
||||||
|
check_symbol_exists(fork "${CURL_INCLUDES}" HAVE_FORK)
|
||||||
|
check_symbol_exists(freeaddrinfo "${CURL_INCLUDES}" HAVE_FREEADDRINFO)
|
||||||
|
check_symbol_exists(freeifaddrs "${CURL_INCLUDES}" HAVE_FREEIFADDRS)
|
||||||
|
check_symbol_exists(pipe "${CURL_INCLUDES}" HAVE_PIPE)
|
||||||
|
check_symbol_exists(ftruncate "${CURL_INCLUDES}" HAVE_FTRUNCATE)
|
||||||
|
check_symbol_exists(getprotobyname "${CURL_INCLUDES}" HAVE_GETPROTOBYNAME)
|
||||||
|
check_symbol_exists(getrlimit "${CURL_INCLUDES}" HAVE_GETRLIMIT)
|
||||||
|
check_symbol_exists(idn_free "${CURL_INCLUDES}" HAVE_IDN_FREE)
|
||||||
|
check_symbol_exists(idna_strerror "${CURL_INCLUDES}" HAVE_IDNA_STRERROR)
|
||||||
|
check_symbol_exists(tld_strerror "${CURL_INCLUDES}" HAVE_TLD_STRERROR)
|
||||||
|
check_symbol_exists(setlocale "${CURL_INCLUDES}" HAVE_SETLOCALE)
|
||||||
|
check_symbol_exists(setrlimit "${CURL_INCLUDES}" HAVE_SETRLIMIT)
|
||||||
|
check_symbol_exists(fcntl "${CURL_INCLUDES}" HAVE_FCNTL)
|
||||||
|
check_symbol_exists(ioctl "${CURL_INCLUDES}" HAVE_IOCTL)
|
||||||
|
check_symbol_exists(setsockopt "${CURL_INCLUDES}" HAVE_SETSOCKOPT)
|
||||||
|
|
||||||
|
# symbol exists in win32, but function does not.
|
||||||
|
check_function_exists(inet_pton HAVE_INET_PTON)
|
||||||
|
|
||||||
|
# sigaction and sigsetjmp are special. Use special mechanism for
|
||||||
|
# detecting those, but only if previous attempt failed.
|
||||||
|
if(HAVE_SIGNAL_H)
|
||||||
|
check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION)
|
||||||
|
endif(HAVE_SIGNAL_H)
|
||||||
|
|
||||||
|
if(NOT HAVE_SIGSETJMP)
|
||||||
|
if(HAVE_SETJMP_H)
|
||||||
|
check_symbol_exists(sigsetjmp "setjmp.h" HAVE_MACRO_SIGSETJMP)
|
||||||
|
if(HAVE_MACRO_SIGSETJMP)
|
||||||
|
set(HAVE_SIGSETJMP 1)
|
||||||
|
endif(HAVE_MACRO_SIGSETJMP)
|
||||||
|
endif(HAVE_SETJMP_H)
|
||||||
|
endif(NOT HAVE_SIGSETJMP)
|
||||||
|
|
||||||
|
# If there is no stricmp(), do not allow LDAP to parse URLs
|
||||||
|
if(NOT HAVE_STRICMP)
|
||||||
|
set(HAVE_LDAP_URL_PARSE 1)
|
||||||
|
endif(NOT HAVE_STRICMP)
|
||||||
|
|
||||||
|
# For other curl specific tests, use this macro.
|
||||||
|
macro(CURL_INTERNAL_TEST CURL_TEST)
|
||||||
|
if("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
|
||||||
|
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||||
|
"-D${CURL_TEST} ${CURL_TEST_DEFINES} ${CMAKE_REQUIRED_FLAGS}")
|
||||||
|
if(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CURL_TEST_ADD_LIBRARIES
|
||||||
|
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
|
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
|
||||||
|
message(STATUS "Performing Curl Test ${CURL_TEST}")
|
||||||
|
try_compile(${CURL_TEST}
|
||||||
|
${CMAKE_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
|
||||||
|
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
|
||||||
|
"${CURL_TEST_ADD_LIBRARIES}"
|
||||||
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
if(${CURL_TEST})
|
||||||
|
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||||
|
message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
|
"Performing Curl Test ${CURL_TEST} passed with the following output:\n"
|
||||||
|
"${OUTPUT}\n")
|
||||||
|
else(${CURL_TEST})
|
||||||
|
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
|
||||||
|
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||||
|
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
|
||||||
|
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
|
||||||
|
"${OUTPUT}\n")
|
||||||
|
endif(${CURL_TEST})
|
||||||
|
endif("${CURL_TEST}" MATCHES "^${CURL_TEST}$")
|
||||||
|
endmacro(CURL_INTERNAL_TEST)
|
||||||
|
|
||||||
|
macro(CURL_INTERNAL_TEST_RUN CURL_TEST)
|
||||||
|
if("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
|
||||||
|
set(MACRO_CHECK_FUNCTION_DEFINITIONS
|
||||||
|
"-D${CURL_TEST} ${CMAKE_REQUIRED_FLAGS}")
|
||||||
|
if(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
set(CURL_TEST_ADD_LIBRARIES
|
||||||
|
"-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
|
endif(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
|
||||||
|
message(STATUS "Performing Curl Test ${CURL_TEST}")
|
||||||
|
try_run(${CURL_TEST} ${CURL_TEST}_COMPILE
|
||||||
|
${CMAKE_BINARY_DIR}
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/CMake/CurlTests.c
|
||||||
|
CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
|
||||||
|
"${CURL_TEST_ADD_LIBRARIES}"
|
||||||
|
OUTPUT_VARIABLE OUTPUT)
|
||||||
|
if(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||||
|
set(${CURL_TEST} 1 CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||||
|
message(STATUS "Performing Curl Test ${CURL_TEST} - Success")
|
||||||
|
else(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||||
|
message(STATUS "Performing Curl Test ${CURL_TEST} - Failed")
|
||||||
|
set(${CURL_TEST} "" CACHE INTERNAL "Curl test ${FUNCTION}")
|
||||||
|
file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
|
||||||
|
"Performing Curl Test ${CURL_TEST} failed with the following output:\n"
|
||||||
|
"${OUTPUT}")
|
||||||
|
if(${CURL_TEST}_COMPILE)
|
||||||
|
file(APPEND
|
||||||
|
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
|
||||||
|
"There was a problem running this test\n")
|
||||||
|
endif(${CURL_TEST}_COMPILE)
|
||||||
|
file(APPEND "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log"
|
||||||
|
"\n\n")
|
||||||
|
endif(${CURL_TEST}_COMPILE AND NOT ${CURL_TEST})
|
||||||
|
endif("${CURL_TEST}_COMPILE" MATCHES "^${CURL_TEST}_COMPILE$")
|
||||||
|
endmacro(CURL_INTERNAL_TEST_RUN)
|
||||||
|
|
||||||
|
# Do curl specific tests
|
||||||
|
foreach(CURL_TEST
|
||||||
|
HAVE_FCNTL_O_NONBLOCK
|
||||||
|
HAVE_IOCTLSOCKET
|
||||||
|
HAVE_IOCTLSOCKET_CAMEL
|
||||||
|
HAVE_IOCTLSOCKET_CAMEL_FIONBIO
|
||||||
|
HAVE_IOCTLSOCKET_FIONBIO
|
||||||
|
HAVE_IOCTL_FIONBIO
|
||||||
|
HAVE_IOCTL_SIOCGIFADDR
|
||||||
|
HAVE_SETSOCKOPT_SO_NONBLOCK
|
||||||
|
HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID
|
||||||
|
TIME_WITH_SYS_TIME
|
||||||
|
HAVE_O_NONBLOCK
|
||||||
|
HAVE_GETHOSTBYADDR_R_5
|
||||||
|
HAVE_GETHOSTBYADDR_R_7
|
||||||
|
HAVE_GETHOSTBYADDR_R_8
|
||||||
|
HAVE_GETHOSTBYADDR_R_5_REENTRANT
|
||||||
|
HAVE_GETHOSTBYADDR_R_7_REENTRANT
|
||||||
|
HAVE_GETHOSTBYADDR_R_8_REENTRANT
|
||||||
|
HAVE_GETHOSTBYNAME_R_3
|
||||||
|
HAVE_GETHOSTBYNAME_R_5
|
||||||
|
HAVE_GETHOSTBYNAME_R_6
|
||||||
|
HAVE_GETHOSTBYNAME_R_3_REENTRANT
|
||||||
|
HAVE_GETHOSTBYNAME_R_5_REENTRANT
|
||||||
|
HAVE_GETHOSTBYNAME_R_6_REENTRANT
|
||||||
|
HAVE_SOCKLEN_T
|
||||||
|
HAVE_IN_ADDR_T
|
||||||
|
HAVE_BOOL_T
|
||||||
|
STDC_HEADERS
|
||||||
|
RETSIGTYPE_TEST
|
||||||
|
HAVE_INET_NTOA_R_DECL
|
||||||
|
HAVE_INET_NTOA_R_DECL_REENTRANT
|
||||||
|
HAVE_GETADDRINFO
|
||||||
|
HAVE_FILE_OFFSET_BITS
|
||||||
|
)
|
||||||
|
curl_internal_test(${CURL_TEST})
|
||||||
|
endforeach(CURL_TEST)
|
||||||
|
if(HAVE_FILE_OFFSET_BITS)
|
||||||
|
set(_FILE_OFFSET_BITS 64)
|
||||||
|
endif(HAVE_FILE_OFFSET_BITS)
|
||||||
|
foreach(CURL_TEST
|
||||||
|
HAVE_GLIBC_STRERROR_R
|
||||||
|
HAVE_POSIX_STRERROR_R
|
||||||
|
)
|
||||||
|
curl_internal_test_run(${CURL_TEST})
|
||||||
|
endforeach(CURL_TEST)
|
||||||
|
|
||||||
|
# Check for reentrant
|
||||||
|
foreach(CURL_TEST
|
||||||
|
HAVE_GETHOSTBYADDR_R_5
|
||||||
|
HAVE_GETHOSTBYADDR_R_7
|
||||||
|
HAVE_GETHOSTBYADDR_R_8
|
||||||
|
HAVE_GETHOSTBYNAME_R_3
|
||||||
|
HAVE_GETHOSTBYNAME_R_5
|
||||||
|
HAVE_GETHOSTBYNAME_R_6
|
||||||
|
HAVE_INET_NTOA_R_DECL_REENTRANT)
|
||||||
|
if(NOT ${CURL_TEST})
|
||||||
|
if(${CURL_TEST}_REENTRANT)
|
||||||
|
set(NEED_REENTRANT 1)
|
||||||
|
endif(${CURL_TEST}_REENTRANT)
|
||||||
|
endif(NOT ${CURL_TEST})
|
||||||
|
endforeach(CURL_TEST)
|
||||||
|
|
||||||
|
if(NEED_REENTRANT)
|
||||||
|
foreach(CURL_TEST
|
||||||
|
HAVE_GETHOSTBYADDR_R_5
|
||||||
|
HAVE_GETHOSTBYADDR_R_7
|
||||||
|
HAVE_GETHOSTBYADDR_R_8
|
||||||
|
HAVE_GETHOSTBYNAME_R_3
|
||||||
|
HAVE_GETHOSTBYNAME_R_5
|
||||||
|
HAVE_GETHOSTBYNAME_R_6)
|
||||||
|
set(${CURL_TEST} 0)
|
||||||
|
if(${CURL_TEST}_REENTRANT)
|
||||||
|
set(${CURL_TEST} 1)
|
||||||
|
endif(${CURL_TEST}_REENTRANT)
|
||||||
|
endforeach(CURL_TEST)
|
||||||
|
endif(NEED_REENTRANT)
|
||||||
|
|
||||||
|
if(HAVE_INET_NTOA_R_DECL_REENTRANT)
|
||||||
|
set(HAVE_INET_NTOA_R_DECL 1)
|
||||||
|
set(NEED_REENTRANT 1)
|
||||||
|
endif(HAVE_INET_NTOA_R_DECL_REENTRANT)
|
||||||
|
|
||||||
|
# Some other minor tests
|
||||||
|
|
||||||
|
if(NOT HAVE_IN_ADDR_T)
|
||||||
|
set(in_addr_t "unsigned long")
|
||||||
|
endif(NOT HAVE_IN_ADDR_T)
|
||||||
|
|
||||||
|
# Fix libz / zlib.h
|
||||||
|
|
||||||
|
if(NOT CURL_SPECIAL_LIBZ)
|
||||||
|
if(NOT HAVE_LIBZ)
|
||||||
|
set(HAVE_ZLIB_H 0)
|
||||||
|
endif(NOT HAVE_LIBZ)
|
||||||
|
|
||||||
|
if(NOT HAVE_ZLIB_H)
|
||||||
|
set(HAVE_LIBZ 0)
|
||||||
|
endif(NOT HAVE_ZLIB_H)
|
||||||
|
endif(NOT CURL_SPECIAL_LIBZ)
|
||||||
|
|
||||||
|
if(_FILE_OFFSET_BITS)
|
||||||
|
set(_FILE_OFFSET_BITS 64)
|
||||||
|
endif(_FILE_OFFSET_BITS)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS "-D_FILE_OFFSET_BITS=64")
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/curl/curl.h")
|
||||||
|
check_type_size("curl_off_t" SIZEOF_CURL_OFF_T)
|
||||||
|
set(CMAKE_EXTRA_INCLUDE_FILES)
|
||||||
|
set(CMAKE_REQUIRED_FLAGS)
|
||||||
|
|
||||||
|
|
||||||
|
# Check for nonblocking
|
||||||
|
set(HAVE_DISABLED_NONBLOCKING 1)
|
||||||
|
if(HAVE_FIONBIO OR
|
||||||
|
HAVE_IOCTLSOCKET OR
|
||||||
|
HAVE_IOCTLSOCKET_CASE OR
|
||||||
|
HAVE_O_NONBLOCK)
|
||||||
|
set(HAVE_DISABLED_NONBLOCKING)
|
||||||
|
endif(HAVE_FIONBIO OR
|
||||||
|
HAVE_IOCTLSOCKET OR
|
||||||
|
HAVE_IOCTLSOCKET_CASE OR
|
||||||
|
HAVE_O_NONBLOCK)
|
||||||
|
|
||||||
|
if(RETSIGTYPE_TEST)
|
||||||
|
set(RETSIGTYPE void)
|
||||||
|
else(RETSIGTYPE_TEST)
|
||||||
|
set(RETSIGTYPE int)
|
||||||
|
endif(RETSIGTYPE_TEST)
|
||||||
|
|
||||||
|
if(CMAKE_COMPILER_IS_GNUCC AND APPLE)
|
||||||
|
include(CheckCCompilerFlag)
|
||||||
|
check_c_compiler_flag(-Wno-long-double HAVE_C_FLAG_Wno_long_double)
|
||||||
|
if(HAVE_C_FLAG_Wno_long_double)
|
||||||
|
# The Mac version of GCC warns about use of long double. Disable it.
|
||||||
|
get_source_file_property(MPRINTF_COMPILE_FLAGS mprintf.c COMPILE_FLAGS)
|
||||||
|
if(MPRINTF_COMPILE_FLAGS)
|
||||||
|
set(MPRINTF_COMPILE_FLAGS "${MPRINTF_COMPILE_FLAGS} -Wno-long-double")
|
||||||
|
else(MPRINTF_COMPILE_FLAGS)
|
||||||
|
set(MPRINTF_COMPILE_FLAGS "-Wno-long-double")
|
||||||
|
endif(MPRINTF_COMPILE_FLAGS)
|
||||||
|
set_source_files_properties(mprintf.c PROPERTIES
|
||||||
|
COMPILE_FLAGS ${MPRINTF_COMPILE_FLAGS})
|
||||||
|
endif(HAVE_C_FLAG_Wno_long_double)
|
||||||
|
endif(CMAKE_COMPILER_IS_GNUCC AND APPLE)
|
||||||
|
|
||||||
|
if(HAVE_SOCKLEN_T)
|
||||||
|
set(CURL_TYPEOF_CURL_SOCKLEN_T "socklen_t")
|
||||||
|
check_type_size("socklen_t" CURL_SIZEOF_CURL_SOCKLEN_T)
|
||||||
|
if(NOT HAVE_CURL_SIZEOF_CURL_SOCKLEN_T)
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Check for sizeof socklen_t failed, see CMakeFiles/CMakerror.log")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(CURL_TYPEOF_CURL_SOCKLEN_T int)
|
||||||
|
set(CURL_SIZEOF_CURL_SOCKLEN_T ${SIZEOF_INT})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include(CMake/OtherTests.cmake)
|
||||||
|
|
||||||
|
add_definitions(-DHAVE_CONFIG_H)
|
||||||
|
|
||||||
|
# For windows, do not allow the compiler to use default target (Vista).
|
||||||
|
if(WIN32)
|
||||||
|
add_definitions(-D_WIN32_WINNT=0x0501)
|
||||||
|
endif(WIN32)
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
|
||||||
|
endif(MSVC)
|
||||||
|
|
||||||
|
# Sets up the dependencies (zlib, OpenSSL, etc.) of a cURL subproject according to options.
|
||||||
|
# TODO This is far to be complete!
|
||||||
|
function(SETUP_CURL_DEPENDENCIES TARGET_NAME)
|
||||||
|
if(CURL_ZLIB AND ZLIB_FOUND)
|
||||||
|
include_directories(${ZLIB_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
|
if(CURL_ZLIB AND ZLIB_FOUND)
|
||||||
|
target_link_libraries(${TARGET_NAME} ${ZLIB_LIBRARIES})
|
||||||
|
#ADD_DEFINITIONS( -DHAVE_ZLIB_H -DHAVE_ZLIB -DHAVE_LIBZ )
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_USE_OPENSSL AND OPENSSL_FOUND)
|
||||||
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||||
|
endif()
|
||||||
|
if(CMAKE_USE_OPENSSL AND CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
|
||||||
|
target_link_libraries(${TARGET_NAME} ${OPENSSL_LIBRARIES})
|
||||||
|
#ADD_DEFINITIONS( -DUSE_SSLEAY )
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Ugly (but functional) way to include "Makefile.inc" by transforming it (= regenerate it).
|
||||||
|
function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE)
|
||||||
|
file(READ ${INPUT_FILE} MAKEFILE_INC_TEXT)
|
||||||
|
string(REPLACE "$(top_srcdir)" "\${CURL_SOURCE_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
|
||||||
|
string(REPLACE "$(top_builddir)" "\${CURL_BINARY_DIR}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
|
||||||
|
|
||||||
|
string(REGEX REPLACE "\\\\\n" "<22>!<21>" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
|
||||||
|
string(REGEX REPLACE "([a-zA-Z_][a-zA-Z0-9_]*)[\t ]*=[\t ]*([^\n]*\n)" "SET(\\1 \\2)\n" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
|
||||||
|
string(REPLACE "<22>!<21>" "\n" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT})
|
||||||
|
|
||||||
|
string(REGEX REPLACE "\\$\\(([a-zA-Z_][a-zA-Z0-9_]*)\\)" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace $() with ${}
|
||||||
|
string(REGEX REPLACE "@([a-zA-Z_][a-zA-Z0-9_]*)@" "\${\\1}" MAKEFILE_INC_TEXT ${MAKEFILE_INC_TEXT}) # Replace @@ with ${}, even if that may not be read by CMake scripts.
|
||||||
|
file(WRITE ${OUTPUT_FILE} ${MAKEFILE_INC_TEXT})
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
add_subdirectory(lib)
|
||||||
|
if(BUILD_CURL_EXE)
|
||||||
|
add_subdirectory(src)
|
||||||
|
endif()
|
||||||
|
if(BUILD_CURL_TESTS)
|
||||||
|
add_subdirectory(tests)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# This needs to be run very last so other parts of the scripts can take advantage of this.
|
||||||
|
if(NOT CURL_CONFIG_HAS_BEEN_RUN_BEFORE)
|
||||||
|
set(CURL_CONFIG_HAS_BEEN_RUN_BEFORE 1 CACHE INTERNAL "Flag to track whether this is the first time running CMake or if CMake has been configured before")
|
||||||
|
endif()
|
||||||
21
COPYING
Normal file
21
COPYING
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
COPYRIGHT AND PERMISSION NOTICE
|
||||||
|
|
||||||
|
Copyright (c) 1996 - 2010, Daniel Stenberg, <daniel@haxx.se>.
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and distribute this software for any purpose
|
||||||
|
with or without fee is hereby granted, provided that the above copyright
|
||||||
|
notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
|
||||||
|
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||||
|
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||||
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||||
|
OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
Except as contained in this notice, the name of a copyright holder shall not
|
||||||
|
be used in advertising or otherwise to promote the sale, use or other dealings
|
||||||
|
in this Software without prior written authorization of the copyright holder.
|
||||||
13
CTestConfig.cmake
Normal file
13
CTestConfig.cmake
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
## This file should be placed in the root directory of your project.
|
||||||
|
## Then modify the CMakeLists.txt file in the root directory of your
|
||||||
|
## project to incorporate the testing dashboard.
|
||||||
|
## # The following are required to uses Dart and the Cdash dashboard
|
||||||
|
## ENABLE_TESTING()
|
||||||
|
## INCLUDE(Dart)
|
||||||
|
set(CTEST_PROJECT_NAME "CURL")
|
||||||
|
set(CTEST_NIGHTLY_START_TIME "00:00:00 EST")
|
||||||
|
|
||||||
|
set(CTEST_DROP_METHOD "http")
|
||||||
|
set(CTEST_DROP_SITE "my.cdash.org")
|
||||||
|
set(CTEST_DROP_LOCATION "/submit.php?project=CURL")
|
||||||
|
set(CTEST_DROP_SITE_CDASH TRUE)
|
||||||
59
CVS-INFO
59
CVS-INFO
@@ -1,59 +0,0 @@
|
|||||||
_ _ ____ _
|
|
||||||
___| | | | _ \| |
|
|
||||||
/ __| | | | |_) | |
|
|
||||||
| (__| |_| | _ <| |___
|
|
||||||
\___|\___/|_| \_\_____|
|
|
||||||
|
|
||||||
CVS-INFO
|
|
||||||
|
|
||||||
This file is only present in the CVS - never in release archives. It contains
|
|
||||||
information about other files and things that the CVS repository keeps in its
|
|
||||||
inner sanctum.
|
|
||||||
|
|
||||||
Compile and build instructions follow below.
|
|
||||||
|
|
||||||
CHANGES.0 contains ancient changes.
|
|
||||||
CHANGES.$year contains changes for the particular year.
|
|
||||||
|
|
||||||
memanalyze.pl is for analyzing the output generated by curl if -DMALLOCDEBUG
|
|
||||||
is used when compiling
|
|
||||||
|
|
||||||
buildconf builds the makefiles and configure stuff
|
|
||||||
|
|
||||||
Makefile.dist is included as the root Makefile in distribution archives
|
|
||||||
|
|
||||||
perl/ is a subdirectory with various perl scripts
|
|
||||||
|
|
||||||
To build after having extracted everything from CVS, do this:
|
|
||||||
|
|
||||||
./buildconf
|
|
||||||
./configure
|
|
||||||
make
|
|
||||||
|
|
||||||
REQUIREMENTS
|
|
||||||
|
|
||||||
You need the following software installed:
|
|
||||||
|
|
||||||
o autoconf 2.50 (or later)
|
|
||||||
o automake 1.5 (or later)
|
|
||||||
o libtool 1.4 (or later)
|
|
||||||
o GNU m4 (required by autoconf)
|
|
||||||
|
|
||||||
o nroff + perl (if you don't have nroff and perl and you for some reason
|
|
||||||
don't want to install them, you can rename the source file
|
|
||||||
src/hugehelp.c.cvs to src/hugehelp.c and avoid having to generate this
|
|
||||||
file. This will of course give you an older version of the file that isn't
|
|
||||||
up-to-date. That file was checked in once and won't be updated very
|
|
||||||
regularly.)
|
|
||||||
|
|
||||||
MAC OS X
|
|
||||||
|
|
||||||
For Mac OS X users, Guido Neitzer write down the following step-by-step guide:
|
|
||||||
|
|
||||||
1. Install fink (http://fink.sourceforge.net)
|
|
||||||
2. Update fink to the newest version (with the installed fink)
|
|
||||||
3. Install the latest version of autoconf, automake and m4 with fink
|
|
||||||
4. Install version 1.4.1 of libtool - you find it in the "unstable" section
|
|
||||||
(read the manual to see how to get unstable versions)
|
|
||||||
5. Get cURL from the cvs
|
|
||||||
6. Build cURL with "./buildconf", "./configure", "make", "sudo make install"
|
|
||||||
67
GIT-INFO
Normal file
67
GIT-INFO
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
GIT-INFO
|
||||||
|
|
||||||
|
This file is only present in git - never in release archives. It contains
|
||||||
|
information about other files and things that the git repository keeps in its
|
||||||
|
inner sanctum.
|
||||||
|
|
||||||
|
Compile and build instructions follow below.
|
||||||
|
|
||||||
|
CHANGES.0 contains ancient changes
|
||||||
|
CHANGES contains the most recent changes
|
||||||
|
|
||||||
|
Makefile.dist is included as the root Makefile in distribution archives
|
||||||
|
|
||||||
|
perl/ is a subdirectory with various perl scripts
|
||||||
|
|
||||||
|
To build in environments that support configure, after having extracted
|
||||||
|
everything from git, do this:
|
||||||
|
|
||||||
|
./buildconf
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
|
||||||
|
Daniel uses a ./configure line similar to this for easier development:
|
||||||
|
|
||||||
|
./configure --disable-shared --enable-debug --enable-maintainer-mode
|
||||||
|
|
||||||
|
In environments that don't support configure (i.e. Microsoft), do this:
|
||||||
|
|
||||||
|
buildconf.bat
|
||||||
|
|
||||||
|
|
||||||
|
REQUIREMENTS
|
||||||
|
|
||||||
|
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)
|
||||||
|
o libtool 1.4.2 (or later)
|
||||||
|
o GNU m4 (required by autoconf)
|
||||||
|
|
||||||
|
o nroff + perl
|
||||||
|
|
||||||
|
If you don't have nroff and perl and you for some reason don't want to
|
||||||
|
install them, you can rename the source file src/hugehelp.c.cvs to
|
||||||
|
src/hugehelp.c and avoid having to generate this file. This will give you
|
||||||
|
a stubbed version of the file that doesn't contain actual content.
|
||||||
|
|
||||||
|
MAC OS X
|
||||||
|
|
||||||
|
With Mac OS X 10.2 and the associated Developer Tools, the installed versions
|
||||||
|
of the build tools are adequate. For Mac OS X 10.1 users, Guido Neitzer
|
||||||
|
wrote the following step-by-step guide:
|
||||||
|
|
||||||
|
1. Install fink (http://fink.sourceforge.net)
|
||||||
|
2. Update fink to the newest version (with the installed fink)
|
||||||
|
3. Install the latest version of autoconf, automake and m4 with fink
|
||||||
|
4. Install version 1.4.1 of libtool - you find it in the "unstable" section
|
||||||
|
(read the manual to see how to get unstable versions)
|
||||||
|
5. Get cURL from git
|
||||||
|
6. Build cURL with "./buildconf", "./configure", "make", "sudo make install"
|
||||||
25
LEGAL
25
LEGAL
@@ -1,25 +0,0 @@
|
|||||||
Copyright (C) 1998-2001, Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
||||||
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies of this license
|
|
||||||
document, but changing it is not allowed.
|
|
||||||
|
|
||||||
In order to be useful for every potential user, the curl and libcurl are
|
|
||||||
dual-licensed under the MPL and the MIT/X-derivate licenses.
|
|
||||||
|
|
||||||
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. The files MITX.txt and MPL-1.1.txt contain the
|
|
||||||
license texts.
|
|
||||||
|
|
||||||
As a courtesy to the open-source and free software community, we ask you to
|
|
||||||
dual-license any modifications that you make as well, under the terms of this
|
|
||||||
document.
|
|
||||||
|
|
||||||
Please remember to always keep the licensing information included in
|
|
||||||
individual source files up-to-date, so as to avoid misleading anyone as to
|
|
||||||
the status of these files.
|
|
||||||
|
|
||||||
I will use a submission policy according to which I will only enter
|
|
||||||
contributions into the CVS tree if the contributor agrees to both licenses
|
|
||||||
and this dual-license approach.
|
|
||||||
27
MITX.txt
27
MITX.txt
@@ -1,27 +0,0 @@
|
|||||||
COPYRIGHT AND PERMISSION NOTICE
|
|
||||||
|
|
||||||
Copyright (c) 1996 - 2001, Daniel Stenberg, <daniel@haxx.se>.
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, and/or sell copies of the
|
|
||||||
Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
provided that the above copyright notice(s) and this permission notice appear
|
|
||||||
in all copies of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
|
|
||||||
NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
|
|
||||||
LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
|
|
||||||
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
||||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
|
|
||||||
Except as contained in this notice, the name of a copyright holder shall not
|
|
||||||
be used in advertising or otherwise to promote the sale, use or other dealings
|
|
||||||
in this Software without prior written authorization of the copyright holder.
|
|
||||||
|
|
||||||
470
MPL-1.1.txt
470
MPL-1.1.txt
@@ -1,470 +0,0 @@
|
|||||||
MOZILLA PUBLIC LICENSE
|
|
||||||
Version 1.1
|
|
||||||
|
|
||||||
---------------
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
1.0.1. "Commercial Use" means distribution or otherwise making the
|
|
||||||
Covered Code available to a third party.
|
|
||||||
|
|
||||||
1.1. "Contributor" means each entity that creates or contributes to
|
|
||||||
the creation of Modifications.
|
|
||||||
|
|
||||||
1.2. "Contributor Version" means the combination of the Original
|
|
||||||
Code, prior Modifications used by a Contributor, and the Modifications
|
|
||||||
made by that particular Contributor.
|
|
||||||
|
|
||||||
1.3. "Covered Code" means the Original Code or Modifications or the
|
|
||||||
combination of the Original Code and Modifications, in each case
|
|
||||||
including portions thereof.
|
|
||||||
|
|
||||||
1.4. "Electronic Distribution Mechanism" means a mechanism generally
|
|
||||||
accepted in the software development community for the electronic
|
|
||||||
transfer of data.
|
|
||||||
|
|
||||||
1.5. "Executable" means Covered Code in any form other than Source
|
|
||||||
Code.
|
|
||||||
|
|
||||||
1.6. "Initial Developer" means the individual or entity identified
|
|
||||||
as the Initial Developer in the Source Code notice required by Exhibit
|
|
||||||
A.
|
|
||||||
|
|
||||||
1.7. "Larger Work" means a work which combines Covered Code or
|
|
||||||
portions thereof with code not governed by the terms of this License.
|
|
||||||
|
|
||||||
1.8. "License" means this document.
|
|
||||||
|
|
||||||
1.8.1. "Licensable" means having the right to grant, to the maximum
|
|
||||||
extent possible, whether at the time of the initial grant or
|
|
||||||
subsequently acquired, any and all of the rights conveyed herein.
|
|
||||||
|
|
||||||
1.9. "Modifications" means any addition to or deletion from the
|
|
||||||
substance or structure of either the Original Code or any previous
|
|
||||||
Modifications. When Covered Code is released as a series of files, a
|
|
||||||
Modification is:
|
|
||||||
A. Any addition to or deletion from the contents of a file
|
|
||||||
containing Original Code or previous Modifications.
|
|
||||||
|
|
||||||
B. Any new file that contains any part of the Original Code or
|
|
||||||
previous Modifications.
|
|
||||||
|
|
||||||
1.10. "Original Code" means Source Code of computer software code
|
|
||||||
which is described in the Source Code notice required by Exhibit A as
|
|
||||||
Original Code, and which, at the time of its release under this
|
|
||||||
License is not already Covered Code governed by this License.
|
|
||||||
|
|
||||||
1.10.1. "Patent Claims" means any patent claim(s), now owned or
|
|
||||||
hereafter acquired, including without limitation, method, process,
|
|
||||||
and apparatus claims, in any patent Licensable by grantor.
|
|
||||||
|
|
||||||
1.11. "Source Code" means the preferred form of the Covered Code for
|
|
||||||
making modifications to it, including all modules it contains, plus
|
|
||||||
any associated interface definition files, scripts used to control
|
|
||||||
compilation and installation of an Executable, or source code
|
|
||||||
differential comparisons against either the Original Code or another
|
|
||||||
well known, available Covered Code of the Contributor's choice. The
|
|
||||||
Source Code can be in a compressed or archival form, provided the
|
|
||||||
appropriate decompression or de-archiving software is widely available
|
|
||||||
for no charge.
|
|
||||||
|
|
||||||
1.12. "You" (or "Your") means an individual or a legal entity
|
|
||||||
exercising rights under, and complying with all of the terms of, this
|
|
||||||
License or a future version of this License issued under Section 6.1.
|
|
||||||
For legal entities, "You" includes any entity which controls, is
|
|
||||||
controlled by, or is under common control with You. For purposes of
|
|
||||||
this definition, "control" means (a) the power, direct or indirect,
|
|
||||||
to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or (b) ownership of more than fifty percent
|
|
||||||
(50%) of the outstanding shares or beneficial ownership of such
|
|
||||||
entity.
|
|
||||||
|
|
||||||
2. Source Code License.
|
|
||||||
|
|
||||||
2.1. The Initial Developer Grant.
|
|
||||||
The Initial Developer hereby grants You a world-wide, royalty-free,
|
|
||||||
non-exclusive license, subject to third party intellectual property
|
|
||||||
claims:
|
|
||||||
(a) under intellectual property rights (other than patent or
|
|
||||||
trademark) Licensable by Initial Developer to use, reproduce,
|
|
||||||
modify, display, perform, sublicense and distribute the Original
|
|
||||||
Code (or portions thereof) with or without Modifications, and/or
|
|
||||||
as part of a Larger Work; and
|
|
||||||
|
|
||||||
(b) under Patents Claims infringed by the making, using or
|
|
||||||
selling of Original Code, to make, have made, use, practice,
|
|
||||||
sell, and offer for sale, and/or otherwise dispose of the
|
|
||||||
Original Code (or portions thereof).
|
|
||||||
|
|
||||||
(c) the licenses granted in this Section 2.1(a) and (b) are
|
|
||||||
effective on the date Initial Developer first distributes
|
|
||||||
Original Code under the terms of this License.
|
|
||||||
|
|
||||||
(d) Notwithstanding Section 2.1(b) above, no patent license is
|
|
||||||
granted: 1) for code that You delete from the Original Code; 2)
|
|
||||||
separate from the Original Code; or 3) for infringements caused
|
|
||||||
by: i) the modification of the Original Code or ii) the
|
|
||||||
combination of the Original Code with other software or devices.
|
|
||||||
|
|
||||||
2.2. Contributor Grant.
|
|
||||||
Subject to third party intellectual property claims, each Contributor
|
|
||||||
hereby grants You a world-wide, royalty-free, non-exclusive license
|
|
||||||
|
|
||||||
(a) under intellectual property rights (other than patent or
|
|
||||||
trademark) Licensable by Contributor, to use, reproduce, modify,
|
|
||||||
display, perform, sublicense and distribute the Modifications
|
|
||||||
created by such Contributor (or portions thereof) either on an
|
|
||||||
unmodified basis, with other Modifications, as Covered Code
|
|
||||||
and/or as part of a Larger Work; and
|
|
||||||
|
|
||||||
(b) under Patent Claims infringed by the making, using, or
|
|
||||||
selling of Modifications made by that Contributor either alone
|
|
||||||
and/or in combination with its Contributor Version (or portions
|
|
||||||
of such combination), to make, use, sell, offer for sale, have
|
|
||||||
made, and/or otherwise dispose of: 1) Modifications made by that
|
|
||||||
Contributor (or portions thereof); and 2) the combination of
|
|
||||||
Modifications made by that Contributor with its Contributor
|
|
||||||
Version (or portions of such combination).
|
|
||||||
|
|
||||||
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
|
|
||||||
effective on the date Contributor first makes Commercial Use of
|
|
||||||
the Covered Code.
|
|
||||||
|
|
||||||
(d) Notwithstanding Section 2.2(b) above, no patent license is
|
|
||||||
granted: 1) for any code that Contributor has deleted from the
|
|
||||||
Contributor Version; 2) separate from the Contributor Version;
|
|
||||||
3) for infringements caused by: i) third party modifications of
|
|
||||||
Contributor Version or ii) the combination of Modifications made
|
|
||||||
by that Contributor with other software (except as part of the
|
|
||||||
Contributor Version) or other devices; or 4) under Patent Claims
|
|
||||||
infringed by Covered Code in the absence of Modifications made by
|
|
||||||
that Contributor.
|
|
||||||
|
|
||||||
3. Distribution Obligations.
|
|
||||||
|
|
||||||
3.1. Application of License.
|
|
||||||
The Modifications which You create or to which You contribute are
|
|
||||||
governed by the terms of this License, including without limitation
|
|
||||||
Section 2.2. The Source Code version of Covered Code may be
|
|
||||||
distributed only under the terms of this License or a future version
|
|
||||||
of this License released under Section 6.1, and You must include a
|
|
||||||
copy of this License with every copy of the Source Code You
|
|
||||||
distribute. You may not offer or impose any terms on any Source Code
|
|
||||||
version that alters or restricts the applicable version of this
|
|
||||||
License or the recipients' rights hereunder. However, You may include
|
|
||||||
an additional document offering the additional rights described in
|
|
||||||
Section 3.5.
|
|
||||||
|
|
||||||
3.2. Availability of Source Code.
|
|
||||||
Any Modification which You create or to which You contribute must be
|
|
||||||
made available in Source Code form under the terms of this License
|
|
||||||
either on the same media as an Executable version or via an accepted
|
|
||||||
Electronic Distribution Mechanism to anyone to whom you made an
|
|
||||||
Executable version available; and if made available via Electronic
|
|
||||||
Distribution Mechanism, must remain available for at least twelve (12)
|
|
||||||
months after the date it initially became available, or at least six
|
|
||||||
(6) months after a subsequent version of that particular Modification
|
|
||||||
has been made available to such recipients. You are responsible for
|
|
||||||
ensuring that the Source Code version remains available even if the
|
|
||||||
Electronic Distribution Mechanism is maintained by a third party.
|
|
||||||
|
|
||||||
3.3. Description of Modifications.
|
|
||||||
You must cause all Covered Code to which You contribute to contain a
|
|
||||||
file documenting the changes You made to create that Covered Code and
|
|
||||||
the date of any change. You must include a prominent statement that
|
|
||||||
the Modification is derived, directly or indirectly, from Original
|
|
||||||
Code provided by the Initial Developer and including the name of the
|
|
||||||
Initial Developer in (a) the Source Code, and (b) in any notice in an
|
|
||||||
Executable version or related documentation in which You describe the
|
|
||||||
origin or ownership of the Covered Code.
|
|
||||||
|
|
||||||
3.4. Intellectual Property Matters
|
|
||||||
(a) Third Party Claims.
|
|
||||||
If Contributor has knowledge that a license under a third party's
|
|
||||||
intellectual property rights is required to exercise the rights
|
|
||||||
granted by such Contributor under Sections 2.1 or 2.2,
|
|
||||||
Contributor must include a text file with the Source Code
|
|
||||||
distribution titled "LEGAL" which describes the claim and the
|
|
||||||
party making the claim in sufficient detail that a recipient will
|
|
||||||
know whom to contact. If Contributor obtains such knowledge after
|
|
||||||
the Modification is made available as described in Section 3.2,
|
|
||||||
Contributor shall promptly modify the LEGAL file in all copies
|
|
||||||
Contributor makes available thereafter and shall take other steps
|
|
||||||
(such as notifying appropriate mailing lists or newsgroups)
|
|
||||||
reasonably calculated to inform those who received the Covered
|
|
||||||
Code that new knowledge has been obtained.
|
|
||||||
|
|
||||||
(b) Contributor APIs.
|
|
||||||
If Contributor's Modifications include an application programming
|
|
||||||
interface and Contributor has knowledge of patent licenses which
|
|
||||||
are reasonably necessary to implement that API, Contributor must
|
|
||||||
also include this information in the LEGAL file.
|
|
||||||
|
|
||||||
(c) Representations.
|
|
||||||
Contributor represents that, except as disclosed pursuant to
|
|
||||||
Section 3.4(a) above, Contributor believes that Contributor's
|
|
||||||
Modifications are Contributor's original creation(s) and/or
|
|
||||||
Contributor has sufficient rights to grant the rights conveyed by
|
|
||||||
this License.
|
|
||||||
|
|
||||||
3.5. Required Notices.
|
|
||||||
You must duplicate the notice in Exhibit A in each file of the Source
|
|
||||||
Code. If it is not possible to put such notice in a particular Source
|
|
||||||
Code file due to its structure, then You must include such notice in a
|
|
||||||
location (such as a relevant directory) where a user would be likely
|
|
||||||
to look for such a notice. If You created one or more Modification(s)
|
|
||||||
You may add your name as a Contributor to the notice described in
|
|
||||||
Exhibit A. You must also duplicate this License in any documentation
|
|
||||||
for the Source Code where You describe recipients' rights or ownership
|
|
||||||
rights relating to Covered Code. You may choose to offer, and to
|
|
||||||
charge a fee for, warranty, support, indemnity or liability
|
|
||||||
obligations to one or more recipients of Covered Code. However, You
|
|
||||||
may do so only on Your own behalf, and not on behalf of the Initial
|
|
||||||
Developer or any Contributor. You must make it absolutely clear than
|
|
||||||
any such warranty, support, indemnity or liability obligation is
|
|
||||||
offered by You alone, and You hereby agree to indemnify the Initial
|
|
||||||
Developer and every Contributor for any liability incurred by the
|
|
||||||
Initial Developer or such Contributor as a result of warranty,
|
|
||||||
support, indemnity or liability terms You offer.
|
|
||||||
|
|
||||||
3.6. Distribution of Executable Versions.
|
|
||||||
You may distribute Covered Code in Executable form only if the
|
|
||||||
requirements of Section 3.1-3.5 have been met for that Covered Code,
|
|
||||||
and if You include a notice stating that the Source Code version of
|
|
||||||
the Covered Code is available under the terms of this License,
|
|
||||||
including a description of how and where You have fulfilled the
|
|
||||||
obligations of Section 3.2. The notice must be conspicuously included
|
|
||||||
in any notice in an Executable version, related documentation or
|
|
||||||
collateral in which You describe recipients' rights relating to the
|
|
||||||
Covered Code. You may distribute the Executable version of Covered
|
|
||||||
Code or ownership rights under a license of Your choice, which may
|
|
||||||
contain terms different from this License, provided that You are in
|
|
||||||
compliance with the terms of this License and that the license for the
|
|
||||||
Executable version does not attempt to limit or alter the recipient's
|
|
||||||
rights in the Source Code version from the rights set forth in this
|
|
||||||
License. If You distribute the Executable version under a different
|
|
||||||
license You must make it absolutely clear that any terms which differ
|
|
||||||
from this License are offered by You alone, not by the Initial
|
|
||||||
Developer or any Contributor. You hereby agree to indemnify the
|
|
||||||
Initial Developer and every Contributor for any liability incurred by
|
|
||||||
the Initial Developer or such Contributor as a result of any such
|
|
||||||
terms You offer.
|
|
||||||
|
|
||||||
3.7. Larger Works.
|
|
||||||
You may create a Larger Work by combining Covered Code with other code
|
|
||||||
not governed by the terms of this License and distribute the Larger
|
|
||||||
Work as a single product. In such a case, You must make sure the
|
|
||||||
requirements of this License are fulfilled for the Covered Code.
|
|
||||||
|
|
||||||
4. Inability to Comply Due to Statute or Regulation.
|
|
||||||
|
|
||||||
If it is impossible for You to comply with any of the terms of this
|
|
||||||
License with respect to some or all of the Covered Code due to
|
|
||||||
statute, judicial order, or regulation then You must: (a) comply with
|
|
||||||
the terms of this License to the maximum extent possible; and (b)
|
|
||||||
describe the limitations and the code they affect. Such description
|
|
||||||
must be included in the LEGAL file described in Section 3.4 and must
|
|
||||||
be included with all distributions of the Source Code. Except to the
|
|
||||||
extent prohibited by statute or regulation, such description must be
|
|
||||||
sufficiently detailed for a recipient of ordinary skill to be able to
|
|
||||||
understand it.
|
|
||||||
|
|
||||||
5. Application of this License.
|
|
||||||
|
|
||||||
This License applies to code to which the Initial Developer has
|
|
||||||
attached the notice in Exhibit A and to related Covered Code.
|
|
||||||
|
|
||||||
6. Versions of the License.
|
|
||||||
|
|
||||||
6.1. New Versions.
|
|
||||||
Netscape Communications Corporation ("Netscape") may publish revised
|
|
||||||
and/or new versions of the License from time to time. Each version
|
|
||||||
will be given a distinguishing version number.
|
|
||||||
|
|
||||||
6.2. Effect of New Versions.
|
|
||||||
Once Covered Code has been published under a particular version of the
|
|
||||||
License, You may always continue to use it under the terms of that
|
|
||||||
version. You may also choose to use such Covered Code under the terms
|
|
||||||
of any subsequent version of the License published by Netscape. No one
|
|
||||||
other than Netscape has the right to modify the terms applicable to
|
|
||||||
Covered Code created under this License.
|
|
||||||
|
|
||||||
6.3. Derivative Works.
|
|
||||||
If You create or use a modified version of this License (which you may
|
|
||||||
only do in order to apply it to code which is not already Covered Code
|
|
||||||
governed by this License), You must (a) rename Your license so that
|
|
||||||
the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
|
|
||||||
"MPL", "NPL" or any confusingly similar phrase do not appear in your
|
|
||||||
license (except to note that your license differs from this License)
|
|
||||||
and (b) otherwise make it clear that Your version of the license
|
|
||||||
contains terms which differ from the Mozilla Public License and
|
|
||||||
Netscape Public License. (Filling in the name of the Initial
|
|
||||||
Developer, Original Code or Contributor in the notice described in
|
|
||||||
Exhibit A shall not of themselves be deemed to be modifications of
|
|
||||||
this License.)
|
|
||||||
|
|
||||||
7. DISCLAIMER OF WARRANTY.
|
|
||||||
|
|
||||||
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
|
||||||
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
|
|
||||||
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
|
|
||||||
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
|
|
||||||
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
|
|
||||||
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
|
|
||||||
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
|
|
||||||
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
|
|
||||||
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
|
|
||||||
|
|
||||||
8. TERMINATION.
|
|
||||||
|
|
||||||
8.1. This License and the rights granted hereunder will terminate
|
|
||||||
automatically if You fail to comply with terms herein and fail to cure
|
|
||||||
such breach within 30 days of becoming aware of the breach. All
|
|
||||||
sublicenses to the Covered Code which are properly granted shall
|
|
||||||
survive any termination of this License. Provisions which, by their
|
|
||||||
nature, must remain in effect beyond the termination of this License
|
|
||||||
shall survive.
|
|
||||||
|
|
||||||
8.2. If You initiate litigation by asserting a patent infringement
|
|
||||||
claim (excluding declatory judgment actions) against Initial Developer
|
|
||||||
or a Contributor (the Initial Developer or Contributor against whom
|
|
||||||
You file such action is referred to as "Participant") alleging that:
|
|
||||||
|
|
||||||
(a) such Participant's Contributor Version directly or indirectly
|
|
||||||
infringes any patent, then any and all rights granted by such
|
|
||||||
Participant to You under Sections 2.1 and/or 2.2 of this License
|
|
||||||
shall, upon 60 days notice from Participant terminate prospectively,
|
|
||||||
unless if within 60 days after receipt of notice You either: (i)
|
|
||||||
agree in writing to pay Participant a mutually agreeable reasonable
|
|
||||||
royalty for Your past and future use of Modifications made by such
|
|
||||||
Participant, or (ii) withdraw Your litigation claim with respect to
|
|
||||||
the Contributor Version against such Participant. If within 60 days
|
|
||||||
of notice, a reasonable royalty and payment arrangement are not
|
|
||||||
mutually agreed upon in writing by the parties or the litigation claim
|
|
||||||
is not withdrawn, the rights granted by Participant to You under
|
|
||||||
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
|
|
||||||
the 60 day notice period specified above.
|
|
||||||
|
|
||||||
(b) any software, hardware, or device, other than such Participant's
|
|
||||||
Contributor Version, directly or indirectly infringes any patent, then
|
|
||||||
any rights granted to You by such Participant under Sections 2.1(b)
|
|
||||||
and 2.2(b) are revoked effective as of the date You first made, used,
|
|
||||||
sold, distributed, or had made, Modifications made by that
|
|
||||||
Participant.
|
|
||||||
|
|
||||||
8.3. If You assert a patent infringement claim against Participant
|
|
||||||
alleging that such Participant's Contributor Version directly or
|
|
||||||
indirectly infringes any patent where such claim is resolved (such as
|
|
||||||
by license or settlement) prior to the initiation of patent
|
|
||||||
infringement litigation, then the reasonable value of the licenses
|
|
||||||
granted by such Participant under Sections 2.1 or 2.2 shall be taken
|
|
||||||
into account in determining the amount or value of any payment or
|
|
||||||
license.
|
|
||||||
|
|
||||||
8.4. In the event of termination under Sections 8.1 or 8.2 above,
|
|
||||||
all end user license agreements (excluding distributors and resellers)
|
|
||||||
which have been validly granted by You or any distributor hereunder
|
|
||||||
prior to termination shall survive termination.
|
|
||||||
|
|
||||||
9. LIMITATION OF LIABILITY.
|
|
||||||
|
|
||||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
|
|
||||||
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
|
|
||||||
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
|
|
||||||
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
|
|
||||||
ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
|
|
||||||
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
|
|
||||||
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
|
|
||||||
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
|
|
||||||
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
|
|
||||||
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
|
|
||||||
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
|
|
||||||
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
|
|
||||||
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
|
|
||||||
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
10. U.S. GOVERNMENT END USERS.
|
|
||||||
|
|
||||||
The Covered Code is a "commercial item," as that term is defined in
|
|
||||||
48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
|
|
||||||
software" and "commercial computer software documentation," as such
|
|
||||||
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
|
|
||||||
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
|
|
||||||
all U.S. Government End Users acquire Covered Code with only those
|
|
||||||
rights set forth herein.
|
|
||||||
|
|
||||||
11. MISCELLANEOUS.
|
|
||||||
|
|
||||||
This License represents the complete agreement concerning subject
|
|
||||||
matter hereof. If any provision of this License is held to be
|
|
||||||
unenforceable, such provision shall be reformed only to the extent
|
|
||||||
necessary to make it enforceable. This License shall be governed by
|
|
||||||
California law provisions (except to the extent applicable law, if
|
|
||||||
any, provides otherwise), excluding its conflict-of-law provisions.
|
|
||||||
With respect to disputes in which at least one party is a citizen of,
|
|
||||||
or an entity chartered or registered to do business in the United
|
|
||||||
States of America, any litigation relating to this License shall be
|
|
||||||
subject to the jurisdiction of the Federal Courts of the Northern
|
|
||||||
District of California, with venue lying in Santa Clara County,
|
|
||||||
California, with the losing party responsible for costs, including
|
|
||||||
without limitation, court costs and reasonable attorneys' fees and
|
|
||||||
expenses. The application of the United Nations Convention on
|
|
||||||
Contracts for the International Sale of Goods is expressly excluded.
|
|
||||||
Any law or regulation which provides that the language of a contract
|
|
||||||
shall be construed against the drafter shall not apply to this
|
|
||||||
License.
|
|
||||||
|
|
||||||
12. RESPONSIBILITY FOR CLAIMS.
|
|
||||||
|
|
||||||
As between Initial Developer and the Contributors, each party is
|
|
||||||
responsible for claims and damages arising, directly or indirectly,
|
|
||||||
out of its utilization of rights under this License and You agree to
|
|
||||||
work with Initial Developer and Contributors to distribute such
|
|
||||||
responsibility on an equitable basis. Nothing herein is intended or
|
|
||||||
shall be deemed to constitute any admission of liability.
|
|
||||||
|
|
||||||
13. MULTIPLE-LICENSED CODE.
|
|
||||||
|
|
||||||
Initial Developer may designate portions of the Covered Code as
|
|
||||||
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
|
|
||||||
Developer permits you to utilize portions of the Covered Code under
|
|
||||||
Your choice of the NPL or the alternative licenses, if any, specified
|
|
||||||
by the Initial Developer in the file described in Exhibit A.
|
|
||||||
|
|
||||||
EXHIBIT A -Mozilla Public License.
|
|
||||||
|
|
||||||
``The contents of this file are subject to the Mozilla Public License
|
|
||||||
Version 1.1 (the "License"); you may not use this file except in
|
|
||||||
compliance with the License. You may obtain a copy of the License at
|
|
||||||
http://www.mozilla.org/MPL/
|
|
||||||
|
|
||||||
Software distributed under the License is distributed on an "AS IS"
|
|
||||||
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
|
||||||
License for the specific language governing rights and limitations
|
|
||||||
under the License.
|
|
||||||
|
|
||||||
The Original Code is ______________________________________.
|
|
||||||
|
|
||||||
The Initial Developer of the Original Code is ________________________.
|
|
||||||
Portions created by ______________________ are Copyright (C) ______
|
|
||||||
_______________________. All Rights Reserved.
|
|
||||||
|
|
||||||
Contributor(s): ______________________________________.
|
|
||||||
|
|
||||||
Alternatively, the contents of this file may be used under the terms
|
|
||||||
of the _____ license (the "[___] License"), in which case the
|
|
||||||
provisions of [______] License are applicable instead of those
|
|
||||||
above. If you wish to allow use of your version of this file only
|
|
||||||
under the terms of the [____] License and not to allow others to use
|
|
||||||
your version of this file under the MPL, indicate your decision by
|
|
||||||
deleting the provisions above and replace them with the notice and
|
|
||||||
other provisions required by the [___] License. If you do not delete
|
|
||||||
the provisions above, a recipient may use your version of this file
|
|
||||||
under either the MPL or the [___] License."
|
|
||||||
|
|
||||||
[NOTE: The text of this Exhibit A may differ slightly from the text of
|
|
||||||
the notices in the Source Code files of the Original Code. You should
|
|
||||||
use the text of this Exhibit A rather than the text found in the
|
|
||||||
Original Code Source Code for Your Modifications.]
|
|
||||||
|
|
||||||
78
MacOSX-Framework
Executable file
78
MacOSX-Framework
Executable file
@@ -0,0 +1,78 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# This script performs all of the steps needed to build a
|
||||||
|
# universal binary libcurl.framework for Mac OS X 10.4 or greater.
|
||||||
|
|
||||||
|
VERSION=`/usr/bin/sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' include/curl/curlver.h`
|
||||||
|
|
||||||
|
SDK32='/Developer/SDKs/MacOSX10.4u.sdk'
|
||||||
|
|
||||||
|
MINVER32='-mmacosx-version-min=10.4'
|
||||||
|
|
||||||
|
ARCHES32='-arch ppc -arch i386'
|
||||||
|
|
||||||
|
SDK64='/Developer/SDKs/MacOSX10.5.sdk'
|
||||||
|
|
||||||
|
MINVER64='-mmacosx-version-min=10.5'
|
||||||
|
|
||||||
|
ARCHES64='-arch ppc64 -arch x86_64'
|
||||||
|
|
||||||
|
if test -d $SDK32; then
|
||||||
|
echo "----Configuring libcurl for 32 bit universal framework..."
|
||||||
|
./configure --disable-dependency-tracking --disable-static --with-gssapi \
|
||||||
|
CFLAGS="-Os -isysroot $SDK32 $ARCHES32 $MINVER32" \
|
||||||
|
LDFLAGS="-Wl,-syslibroot,$SDK32 $ARCHES32 $MINVER32 -Wl,-headerpad_max_install_names" \
|
||||||
|
CC=$CC
|
||||||
|
|
||||||
|
echo "----Building 32 bit libcurl..."
|
||||||
|
make
|
||||||
|
|
||||||
|
echo "----Creating 32 bit framework..."
|
||||||
|
rm -r libcurl.framework
|
||||||
|
mkdir -p libcurl.framework/Versions/A/Resources
|
||||||
|
cp lib/.libs/libcurl.dylib libcurl.framework/Versions/A/libcurl
|
||||||
|
install_name_tool -id @executable_path/../Frameworks/libcurl.framework/Versions/A/libcurl libcurl.framework/Versions/A/libcurl
|
||||||
|
/usr/bin/sed -e "s/7\.12\.3/$VERSION/" lib/libcurl.plist >libcurl.framework/Versions/A/Resources/Info.plist
|
||||||
|
mkdir -p libcurl.framework/Versions/A/Headers/curl
|
||||||
|
cp include/curl/*.h libcurl.framework/Versions/A/Headers/curl
|
||||||
|
pushd libcurl.framework
|
||||||
|
ln -fs Versions/A/libcurl libcurl
|
||||||
|
ln -fs Versions/A/Resources Resources
|
||||||
|
ln -fs Versions/A/Headers Headers
|
||||||
|
cd Versions
|
||||||
|
ln -fs A Current
|
||||||
|
|
||||||
|
if test -d $SDK64; then
|
||||||
|
popd
|
||||||
|
make clean
|
||||||
|
echo "----Configuring libcurl for 64 bit universal framework..."
|
||||||
|
./configure --disable-dependency-tracking --disable-static --with-gssapi \
|
||||||
|
CFLAGS="-Os -isysroot $SDK64 $ARCHES64 $MINVER64" \
|
||||||
|
LDFLAGS="-Wl,-syslibroot,$SDK64 $ARCHES64 $MINVER64 -Wl,-headerpad_max_install_names" \
|
||||||
|
CC=$CC
|
||||||
|
|
||||||
|
echo "----Building 64 bit libcurl..."
|
||||||
|
make
|
||||||
|
|
||||||
|
echo "----Appending 64 bit framework to 32 bit framework..."
|
||||||
|
cp lib/.libs/libcurl.dylib libcurl.framework/Versions/A/libcurl64
|
||||||
|
install_name_tool -id @executable_path/../Frameworks/libcurl.framework/Versions/A/libcurl libcurl.framework/Versions/A/libcurl64
|
||||||
|
cp libcurl.framework/Versions/A/libcurl libcurl.framework/Versions/A/libcurl32
|
||||||
|
lipo libcurl.framework/Versions/A/libcurl32 libcurl.framework/Versions/A/libcurl64 -create -output libcurl.framework/Versions/A/libcurl
|
||||||
|
rm libcurl.framework/Versions/A/libcurl32 libcurl.framework/Versions/A/libcurl64
|
||||||
|
cp libcurl.framework/Versions/A/Headers/curl/curlbuild.h libcurl.framework/Versions/A/Headers/curl/curlbuild32.h
|
||||||
|
cp include/curl/curlbuild.h libcurl.framework/Versions/A/Headers/curl/curlbuild64.h
|
||||||
|
cat >libcurl.framework/Versions/A/Headers/curl/curlbuild.h <<EOF
|
||||||
|
#ifdef __LP64__
|
||||||
|
#include "curl/curlbuild64.h"
|
||||||
|
#else
|
||||||
|
#include "curl/curlbuild32.h"
|
||||||
|
#endif
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
lipo -info libcurl.framework/Versions/A/libcurl
|
||||||
|
echo "libcurl.framework is built and can now be included in other projects."
|
||||||
|
echo "Copy libcurl.framework to your bundle's Contents/Frameworks folder, ~/Library/Frameworks or /Library/Frameworks."
|
||||||
|
else
|
||||||
|
echo "Building libcurl.framework requires Mac OS X 10.4 or later with the MacOSX10.4u SDK installed."
|
||||||
|
fi
|
||||||
102
Makefile.am
102
Makefile.am
@@ -1,28 +1,90 @@
|
|||||||
|
#***************************************************************************
|
||||||
|
# _ _ ____ _
|
||||||
|
# Project ___| | | | _ \| |
|
||||||
|
# / __| | | | |_) | |
|
||||||
|
# | (__| |_| | _ <| |___
|
||||||
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# $Id$
|
# Copyright (C) 1998 - 2009, 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.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign
|
AUTOMAKE_OPTIONS = foreign
|
||||||
|
|
||||||
EXTRA_DIST = \
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
CHANGES LEGAL maketgz MITX.txt MPL-1.1.txt \
|
|
||||||
reconf Makefile.dist curl-config.in build_vms.com curl-mode.el
|
CMAKE_DIST = CMakeLists.txt CMake/CheckTypeSize.c.in CMake/CheckTypeSize.cmake \
|
||||||
|
CMake/CMakeConfigurableFile.in CMake/CurlCheckCSourceCompiles.cmake \
|
||||||
|
CMake/CurlCheckCSourceRuns.cmake CMake/CurlTests.c CMake/FindOpenSSL.cmake \
|
||||||
|
CMake/FindZLIB.cmake CMake/OtherTests.cmake CMake/Platforms/WindowsCache.cmake \
|
||||||
|
CMake/Utilities.cmake include/curl/curlbuild.h.cmake
|
||||||
|
|
||||||
|
EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in \
|
||||||
|
curl-style.el sample.emacs RELEASE-NOTES buildconf \
|
||||||
|
libcurl.pc.in vc6curl.dsw MacOSX-Framework Android.mk $(CMAKE_DIST)
|
||||||
|
|
||||||
bin_SCRIPTS = curl-config
|
bin_SCRIPTS = curl-config
|
||||||
|
|
||||||
SUBDIRS = docs lib src include tests packages
|
SUBDIRS = lib src
|
||||||
|
DIST_SUBDIRS = $(SUBDIRS) tests include packages docs
|
||||||
|
|
||||||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||||||
|
pkgconfig_DATA = libcurl.pc
|
||||||
|
|
||||||
# create a root makefile in the distribution:
|
|
||||||
dist-hook:
|
dist-hook:
|
||||||
cp $(srcdir)/Makefile.dist $(distdir)/Makefile
|
rm -rf $(top_builddir)/tests/log
|
||||||
|
find $(distdir) -name "*.dist" -exec rm {} \;
|
||||||
|
(distit=`find $(srcdir) -name "*.dist" | grep -v ./ares/`; \
|
||||||
|
for file in $$distit; do \
|
||||||
|
strip=`echo $$file | sed -e s/^$(srcdir)// -e s/\.dist//`; \
|
||||||
|
cp $$file $(distdir)$$strip; \
|
||||||
|
done)
|
||||||
|
|
||||||
html:
|
html:
|
||||||
cd docs; make html
|
cd docs; make html
|
||||||
|
|
||||||
check: test
|
pdf:
|
||||||
|
cd docs; make pdf
|
||||||
|
|
||||||
|
check: test examples
|
||||||
|
|
||||||
|
if CROSSCOMPILING
|
||||||
|
test-full: test
|
||||||
|
test-torture: test
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@(cd tests; $(MAKE) quiet-test)
|
@echo "NOTICE: we can't run the tests when cross-compiling!"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
test:
|
||||||
|
@(cd tests; $(MAKE) all quiet-test)
|
||||||
|
|
||||||
|
test-full:
|
||||||
|
@(cd tests; $(MAKE) all full-test)
|
||||||
|
|
||||||
|
test-torture:
|
||||||
|
@(cd tests; $(MAKE) all torture-test)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
examples:
|
||||||
|
@(cd docs/examples; $(MAKE) check)
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
@(cd tests; $(MAKE) clean)
|
||||||
|
@(cd docs; $(MAKE) clean)
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
# Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros
|
||||||
@@ -52,7 +114,7 @@ rpm:
|
|||||||
mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
|
mv $$RPM_TOPDIR/SRPMS/$(RPMDIST)-*.src.rpm .
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build a Solaris pkkgadd format file
|
# Build a Solaris pkgadd format file
|
||||||
# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
|
# run 'make pkgadd' once you've done './configure' and 'make' to make a Solaris pkgadd format
|
||||||
# file (which ends up back in this directory).
|
# file (which ends up back in this directory).
|
||||||
# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
|
# The pkgadd file is in 'pkgtrans' format, so to install on Solaris, do
|
||||||
@@ -63,7 +125,7 @@ rpm:
|
|||||||
pkgadd:
|
pkgadd:
|
||||||
umask 022 ; \
|
umask 022 ; \
|
||||||
make install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
|
make install DESTDIR=`/bin/pwd`/packages/Solaris/root ; \
|
||||||
cat LEGAL MITX.txt MPL-1.1.txt > $(srcdir)/packages/Solaris/copyright ; \
|
cat COPYING > $(srcdir)/packages/Solaris/copyright ; \
|
||||||
cd $(srcdir)/packages/Solaris && $(MAKE) package
|
cd $(srcdir)/packages/Solaris && $(MAKE) package
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -71,3 +133,21 @@ pkgadd:
|
|||||||
# resulting .tar.bz2 file will end up at packages/Win32/cygwin
|
# resulting .tar.bz2 file will end up at packages/Win32/cygwin
|
||||||
cygwinbin:
|
cygwinbin:
|
||||||
$(MAKE) -C packages/Win32/cygwin cygwinbin
|
$(MAKE) -C packages/Win32/cygwin cygwinbin
|
||||||
|
|
||||||
|
# We extend the standard install with a custom hook:
|
||||||
|
install-data-hook:
|
||||||
|
cd include && $(MAKE) install
|
||||||
|
cd docs && $(MAKE) install
|
||||||
|
|
||||||
|
# We extend the standard uninstall with a custom hook:
|
||||||
|
uninstall-hook:
|
||||||
|
cd include && $(MAKE) uninstall
|
||||||
|
cd docs && $(MAKE) uninstall
|
||||||
|
|
||||||
|
ca-bundle: lib/mk-ca-bundle.pl
|
||||||
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
|
@perl $< -b -l -u lib/ca-bundle.crt
|
||||||
|
|
||||||
|
ca-firefox: lib/firefox-db2pem.sh
|
||||||
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
|
./lib/firefox-db2pem.sh lib/ca-bundle.crt
|
||||||
|
|||||||
272
Makefile.dist
272
Makefile.dist
@@ -1,25 +1,26 @@
|
|||||||
#############################################################################
|
#***************************************************************************
|
||||||
# _ _ ____ _
|
# _ _ ____ _
|
||||||
# Project ___| | | | _ \| |
|
# Project ___| | | | _ \| |
|
||||||
# / __| | | | |_) | |
|
# / __| | | | |_) | |
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# Copyright (C) 2002, Daniel Stenberg, <daniel@haxx.se>, et al.
|
# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
#
|
#
|
||||||
# In order to be useful for every potential user, curl and libcurl are
|
# This software is licensed as described in the file COPYING, which
|
||||||
# dual-licensed under the MPL and the MIT/X-derivate licenses.
|
# 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
|
# 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
|
# 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
|
# furnished to do so, under the terms of the COPYING file.
|
||||||
# licenses. You may pick one of these licenses.
|
|
||||||
#
|
#
|
||||||
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||||
# KIND, either express or implied.
|
# KIND, either express or implied.
|
||||||
#
|
#
|
||||||
# $Id$
|
###########################################################################
|
||||||
#############################################################################
|
|
||||||
|
VC=vc6
|
||||||
|
|
||||||
all:
|
all:
|
||||||
./configure
|
./configure
|
||||||
@@ -30,34 +31,189 @@ ssl:
|
|||||||
make
|
make
|
||||||
|
|
||||||
borland:
|
borland:
|
||||||
cd lib & make -f Makefile.b32
|
cd lib
|
||||||
cd src & make -f Makefile.b32
|
make -f Makefile.b32
|
||||||
|
cd ..\src
|
||||||
|
make -f Makefile.b32
|
||||||
|
|
||||||
|
borland-ssl:
|
||||||
|
cd lib
|
||||||
|
make -f Makefile.b32 WITH_SSL=1
|
||||||
|
cd ..\src
|
||||||
|
make -f Makefile.b32 WITH_SSL=1
|
||||||
|
|
||||||
|
borland-ssl-zlib:
|
||||||
|
cd lib
|
||||||
|
make -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
|
||||||
|
cd ..\src
|
||||||
|
make -f Makefile.b32 WITH_SSL=1 WITH_ZLIB=1
|
||||||
|
|
||||||
|
borland-clean:
|
||||||
|
cd lib
|
||||||
|
make -f Makefile.b32 clean
|
||||||
|
cd ..\src
|
||||||
|
make -f Makefile.b32 clean
|
||||||
|
|
||||||
|
watcom: .SYMBOLIC
|
||||||
|
cd lib
|
||||||
|
wmake -u -f Makefile.Watcom
|
||||||
|
cd ..\src
|
||||||
|
wmake -u -f Makefile.Watcom
|
||||||
|
|
||||||
|
watcom-clean: .SYMBOLIC
|
||||||
|
cd lib
|
||||||
|
wmake -u -f Makefile.Watcom clean
|
||||||
|
cd ..\src
|
||||||
|
wmake -u -f Makefile.Watcom clean
|
||||||
|
|
||||||
|
watcom-vclean: .SYMBOLIC
|
||||||
|
cd lib
|
||||||
|
wmake -u -f Makefile.Watcom vclean
|
||||||
|
cd ..\src
|
||||||
|
wmake -u -f Makefile.Watcom vclean
|
||||||
|
|
||||||
mingw32:
|
mingw32:
|
||||||
cd lib & make -f Makefile.m32
|
$(MAKE) -C lib -f Makefile.m32
|
||||||
cd src & make -f Makefile.m32
|
$(MAKE) -C src -f Makefile.m32
|
||||||
|
|
||||||
mingw32-ssl:
|
mingw32-zlib:
|
||||||
cd lib & make -f Makefile.m32 SSL=1
|
$(MAKE) -C lib -f Makefile.m32 ZLIB=1
|
||||||
cd src & make -f Makefile.m32 SSL=1
|
$(MAKE) -C src -f Makefile.m32 ZLIB=1
|
||||||
|
|
||||||
|
mingw32-ssl-zlib:
|
||||||
|
$(MAKE) -C lib -f Makefile.m32 SSL=1 ZLIB=1
|
||||||
|
$(MAKE) -C src -f Makefile.m32 SSL=1 ZLIB=1
|
||||||
|
|
||||||
|
mingw32-ssh2-ssl-zlib:
|
||||||
|
$(MAKE) -C lib -f Makefile.m32 SSH2=1 SSL=1 ZLIB=1
|
||||||
|
$(MAKE) -C src -f Makefile.m32 SSH2=1 SSL=1 ZLIB=1
|
||||||
|
|
||||||
|
mingw32-ssh2-ssl-sspi-zlib:
|
||||||
|
$(MAKE) -C lib -f Makefile.m32 SSH2=1 SSL=1 SSPI=1 ZLIB=1
|
||||||
|
$(MAKE) -C src -f Makefile.m32 SSH2=1 SSL=1 SSPI=1 ZLIB=1
|
||||||
|
|
||||||
|
mingw32-clean:
|
||||||
|
$(MAKE) -C lib -f Makefile.m32 clean
|
||||||
|
$(MAKE) -C src -f Makefile.m32 clean
|
||||||
|
|
||||||
|
vc-clean:
|
||||||
|
cd lib
|
||||||
|
nmake -f Makefile.$(VC) clean
|
||||||
|
cd ..\src
|
||||||
|
nmake -f Makefile.$(VC) clean
|
||||||
|
|
||||||
|
vc-all:
|
||||||
|
cd lib
|
||||||
|
nmake -f Makefile.$(VC) cfg=release
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-ssl
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-zlib
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-ssl-zlib
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-ssl-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-dll-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-ssl
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-zlib
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-ssl-zlib
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-ssl-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-ssl-dll-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-dll-zlib-dll
|
||||||
|
nmake -f Makefile.$(VC) cfg=debug-dll-ssl-dll-zlib-dll
|
||||||
|
|
||||||
vc:
|
vc:
|
||||||
cd lib
|
cd lib
|
||||||
nmake -f Makefile.vc6 cfg=release
|
nmake /f Makefile.$(VC) cfg=release
|
||||||
cd ..\src
|
cd ..\src
|
||||||
nmake -f Makefile.vc6
|
nmake /f Makefile.$(VC)
|
||||||
|
|
||||||
|
vc-x64:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release
|
||||||
|
|
||||||
|
vc-zlib:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-zlib
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-zlib
|
||||||
|
|
||||||
vc-ssl:
|
vc-ssl:
|
||||||
cd lib
|
cd lib
|
||||||
nmake -f Makefile.vc6 cfg=release-ssl
|
nmake /f Makefile.$(VC) cfg=release-ssl
|
||||||
cd ..\src
|
cd ..\src
|
||||||
nmake -f Makefile.vc6 cfg=release-ssl
|
nmake /f Makefile.$(VC) cfg=release-ssl
|
||||||
|
|
||||||
|
vc-ssl-zlib:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-ssl-zlib
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-ssl-zlib
|
||||||
|
|
||||||
|
vc-x64-ssl-zlib:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) MACHINE=x64 cfg=release-ssl-zlib
|
||||||
|
|
||||||
vc-ssl-dll:
|
vc-ssl-dll:
|
||||||
cd lib
|
cd lib
|
||||||
nmake -f Makefile.vc6 cfg=release-ssl-dll
|
nmake /f Makefile.$(VC) cfg=release-ssl-dll
|
||||||
cd ..\src
|
cd ..\src
|
||||||
nmake -f Makefile.vc6
|
nmake /f Makefile.$(VC) cfg=release-ssl-dll
|
||||||
|
|
||||||
|
vc-dll-ssl-dll:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll
|
||||||
|
|
||||||
|
vc-dll:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll
|
||||||
|
|
||||||
|
vc-dll-zlib-dll:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll-zlib-dll
|
||||||
|
|
||||||
|
vc-dll-ssl-dll-zlib-dll:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-dll-ssl-dll-zlib-dll
|
||||||
|
|
||||||
|
vc-ssl-dll-zlib-dll:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-ssl-dll-zlib-dll
|
||||||
|
|
||||||
|
vc-zlib-dll:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-zlib-dll
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release-zlib-dll
|
||||||
|
|
||||||
|
vc-sspi:
|
||||||
|
cd lib
|
||||||
|
nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
|
||||||
|
cd ..\src
|
||||||
|
nmake /f Makefile.$(VC) cfg=release WINDOWS_SSPI=1
|
||||||
|
|
||||||
|
djgpp:
|
||||||
|
$(MAKE) -C lib -f Makefile.dj
|
||||||
|
$(MAKE) -C src -f Makefile.dj
|
||||||
|
|
||||||
cygwin:
|
cygwin:
|
||||||
./configure
|
./configure
|
||||||
@@ -67,6 +223,42 @@ cygwin-ssl:
|
|||||||
./configure --with-ssl
|
./configure --with-ssl
|
||||||
make
|
make
|
||||||
|
|
||||||
|
amiga:
|
||||||
|
cd ./lib && make -f makefile.amiga
|
||||||
|
cd ./src && make -f makefile.amiga
|
||||||
|
|
||||||
|
netware:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware
|
||||||
|
$(MAKE) -C src -f Makefile.netware
|
||||||
|
|
||||||
|
netware-ares:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware WITH_ARES=1
|
||||||
|
$(MAKE) -C src -f Makefile.netware WITH_ARES=1
|
||||||
|
|
||||||
|
netware-ssl:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware WITH_SSL=1
|
||||||
|
$(MAKE) -C src -f Makefile.netware WITH_SSL=1
|
||||||
|
|
||||||
|
netware-ssl-zlib:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware WITH_SSL=1 WITH_ZLIB=1
|
||||||
|
$(MAKE) -C src -f Makefile.netware WITH_SSL=1 WITH_ZLIB=1
|
||||||
|
|
||||||
|
netware-ssh2-ssl-zlib:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware WITH_SSH2=1 WITH_SSL=1 WITH_ZLIB=1
|
||||||
|
$(MAKE) -C src -f Makefile.netware WITH_SSH2=1 WITH_SSL=1 WITH_ZLIB=1
|
||||||
|
|
||||||
|
netware-zlib:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware WITH_ZLIB=1
|
||||||
|
$(MAKE) -C src -f Makefile.netware WITH_ZLIB=1
|
||||||
|
|
||||||
|
netware-clean:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware clean
|
||||||
|
$(MAKE) -C src -f Makefile.netware clean
|
||||||
|
|
||||||
|
netware-install:
|
||||||
|
$(MAKE) -C lib -f Makefile.netware install
|
||||||
|
$(MAKE) -C src -f Makefile.netware install
|
||||||
|
|
||||||
unix: all
|
unix: all
|
||||||
|
|
||||||
unix-ssl: ssl
|
unix-ssl: ssl
|
||||||
@@ -74,3 +266,33 @@ unix-ssl: ssl
|
|||||||
linux: all
|
linux: all
|
||||||
|
|
||||||
linux-ssl: ssl
|
linux-ssl: ssl
|
||||||
|
|
||||||
|
|
||||||
|
vc8: lib/Makefile.vc8 src/Makefile.vc8
|
||||||
|
|
||||||
|
lib/Makefile.vc8: lib/Makefile.vc6
|
||||||
|
@echo "generate $@"
|
||||||
|
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" lib/Makefile.vc6 > lib/Makefile.vc8
|
||||||
|
|
||||||
|
src/Makefile.vc8: src/Makefile.vc6
|
||||||
|
@echo "generate $@"
|
||||||
|
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib bufferoverflowu.lib/g" -e "s/VC6/VC8/g" src/Makefile.vc6 > src/Makefile.vc8
|
||||||
|
|
||||||
|
# VC9 makefiles are for use with VS2008
|
||||||
|
vc9: lib/Makefile.vc9 src/Makefile.vc9
|
||||||
|
|
||||||
|
lib/Makefile.vc9: lib/Makefile.vc6
|
||||||
|
@echo "generate $@"
|
||||||
|
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" lib/Makefile.vc6 > lib/Makefile.vc9
|
||||||
|
|
||||||
|
src/Makefile.vc9: src/Makefile.vc6
|
||||||
|
@echo "generate $@"
|
||||||
|
@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc9/g" -e "s/VC6/VC9/g" src/Makefile.vc6 > src/Makefile.vc9
|
||||||
|
|
||||||
|
ca-bundle: lib/mk-ca-bundle.pl
|
||||||
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
|
@perl $< -b -l -u lib/ca-bundle.crt
|
||||||
|
|
||||||
|
ca-firefox: lib/firefox-db2pem.sh
|
||||||
|
@echo "generate a fresh ca-bundle.crt"
|
||||||
|
./lib/firefox-db2pem.sh lib/ca-bundle.crt
|
||||||
|
|||||||
45
README
45
README
@@ -1,47 +1,48 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
README
|
README
|
||||||
|
|
||||||
Curl is a command line tool for transfering data specified with URL
|
Curl is a command line tool for transferring data specified with URL
|
||||||
syntax. Find out how to use Curl by reading the curl.1 man page or the
|
syntax. Find out how to use curl by reading the curl.1 man page or the
|
||||||
MANUAL document. Find out how to install Curl by reading the INSTALL
|
MANUAL document. Find out how to install Curl by reading the INSTALL
|
||||||
document.
|
document.
|
||||||
|
|
||||||
libcurl is a library that Curl is using to do its job. It is readily
|
libcurl is the library curl is using to do its job. It is readily
|
||||||
available to be used by your software. Read the libcurl.3 man page to
|
available to be used by your software. Read the libcurl.3 man page to
|
||||||
find out how!
|
learn how!
|
||||||
|
|
||||||
You find answers to the most frequent questions we get in the FAQ document.
|
You find answers to the most frequent questions we get in the FAQ document.
|
||||||
|
|
||||||
Study the LEGAL file for distribution terms and similar.
|
Study the COPYING file for distribution terms and similar. If you distribute
|
||||||
|
curl binaries or other binaries that involve libcurl, you might enjoy the
|
||||||
|
LICENSE-MIXING document.
|
||||||
|
|
||||||
Always try the Curl web site for the latest news:
|
CONTACT
|
||||||
|
|
||||||
http://curl.haxx.se
|
If you have problems, questions, ideas or suggestions, please contact us
|
||||||
|
by posting to a suitable mailing list. See http://curl.haxx.se/mail/
|
||||||
|
|
||||||
The official download mirror sites are:
|
All contributors to the project are listed in the THANKS document.
|
||||||
|
|
||||||
Sweden -- ftp://ftp.sunet.se/pub/www/utilities/curl/
|
WEB SITE
|
||||||
Sweden -- http://cool.haxx.se/curl/
|
|
||||||
Germany -- ftp://ftp.fu-berlin.de/pub/unix/network/curl/
|
|
||||||
|
|
||||||
To download the very latest source off the CVS server do this:
|
Visit the curl web site for the latest news and downloads:
|
||||||
|
|
||||||
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl login
|
http://curl.haxx.se/
|
||||||
|
|
||||||
(just press enter when asked for password)
|
GIT
|
||||||
|
|
||||||
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl co curl
|
To download the very latest source off the GIT server do this:
|
||||||
|
|
||||||
|
git clone git://github.com/bagder/curl.git
|
||||||
|
|
||||||
(you'll get a directory named curl created, filled with the source code)
|
(you'll get a directory named curl created, filled with the source code)
|
||||||
|
|
||||||
cvs -d :pserver:anonymous@cvs.curl.sourceforge.net:/cvsroot/curl logout
|
NOTICE
|
||||||
|
|
||||||
(you're off the hook!)
|
|
||||||
|
|
||||||
Curl contains pieces of source code that is Copyright (c) 1998, 1999
|
Curl contains pieces of source code that is Copyright (c) 1998, 1999
|
||||||
Kungliga Tekniska H<>gskolan. This notice is included here to comply with the
|
Kungliga Tekniska H<>gskolan. This notice is included here to comply with the
|
||||||
|
|||||||
71
RELEASE-NOTES
Normal file
71
RELEASE-NOTES
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
Curl and libcurl 7.21.1
|
||||||
|
|
||||||
|
Public curl releases: 117
|
||||||
|
Command line options: 138
|
||||||
|
curl_easy_setopt() options: 180
|
||||||
|
Public functions in libcurl: 58
|
||||||
|
Known libcurl bindings: 39
|
||||||
|
Contributors: 808
|
||||||
|
|
||||||
|
This release includes the following changes:
|
||||||
|
|
||||||
|
o maketgz: produce CHANGES automatically
|
||||||
|
o added support for NTLM authentication when compiled with NSS
|
||||||
|
o build: Enable configure --enable-werror
|
||||||
|
o curl-config: --built-shared returns shared info
|
||||||
|
|
||||||
|
This release includes the following bugfixes:
|
||||||
|
|
||||||
|
o configure: spell --disable-threaded-resolver correctly
|
||||||
|
o multi: call the progress callback in all states
|
||||||
|
o multi: unmark handle as used when no longer head of pipeline
|
||||||
|
o sendrecv: treat all negative values from send/recv as errors
|
||||||
|
o ftp-wildcard: avoid tight loop when used without any pattern
|
||||||
|
o multi_socket: re-use of same socket without notifying app
|
||||||
|
o ftp wildcard: FTP LIST parser FIX
|
||||||
|
o urlglobbing backslash escaping bug
|
||||||
|
o build: add enable IPV6 option for the VC makefiles
|
||||||
|
o multi: CURLINFO_LASTSOCKET doesn't work after remove_handle
|
||||||
|
o --libcurl: use *_LARGE options with typecasted constants
|
||||||
|
o --libcurl: hide setopt() calls setting default options
|
||||||
|
o curl: avoid setting libcurl options to its default
|
||||||
|
o --libcurl: list the tricky options instead of using [REMARK]
|
||||||
|
o http: don't enable chunked during authentication negotiations
|
||||||
|
o upload: warn users trying to upload from stdin with anyauth
|
||||||
|
o configure: allow environments variable to override internals
|
||||||
|
o threaded resolver: fix timeout issue
|
||||||
|
o multi: fix condition that remove timers before trigger
|
||||||
|
o examples: add curl_multi_timeout
|
||||||
|
o --retry: access violation with URL part sets continued
|
||||||
|
o ssh: Fix compile error on 64-bit systems.
|
||||||
|
o remote-header-name: chop filename at next semicolon
|
||||||
|
o ftp: response timeout bug in "quote" sending
|
||||||
|
o CUSTOMREQUEST: shouldn't be disabled when HTTP is disabled
|
||||||
|
o Watcom makefiles overhaul.
|
||||||
|
o NTLM tests: boost coverage by forcing the hostname
|
||||||
|
o multi: fix FTPS connecting the data connection with OpenSSL
|
||||||
|
o retry: consider retrying even if -f is used
|
||||||
|
o fix SOCKS problem when using multi interface
|
||||||
|
o typecheck-gcc: add checks for recently added options
|
||||||
|
o SCP: send large files properly with new enough libssh2
|
||||||
|
o multi_socket: set timeout for 100-continue
|
||||||
|
o ";type=" URL suffix over HTTP proxy
|
||||||
|
o acknowledge progress callback error returns during connect
|
||||||
|
o Watcom makefile fixes
|
||||||
|
o runtests: clear old setenv remainders before test
|
||||||
|
|
||||||
|
This release includes the following known bugs:
|
||||||
|
|
||||||
|
o see docs/KNOWN_BUGS (http://curl.haxx.se/docs/knownbugs.html)
|
||||||
|
|
||||||
|
This release would not have looked like this without help, code, reports and
|
||||||
|
advice from friends like these:
|
||||||
|
|
||||||
|
Dan Fandrich, Kamil Dudka, Krister Johansen, Pavel Raiskup, Jon Sargeant,
|
||||||
|
Pierre Joye, Tor Arntsen, Constantine Sapuntzakis, Sidney San Martin,
|
||||||
|
Jeff Pohlmeyer, Jan Van Boghout, Ben Greear, Guenter Knauf, Adam Light,
|
||||||
|
Georg Lippitsch, Mike Power, Robin Cornelius, Mikael Johansson,
|
||||||
|
Yang Tse, Ben Darnell
|
||||||
|
|
||||||
|
|
||||||
|
Thanks! (and sorry if I forgot to mention someone)
|
||||||
4
TODO-RELEASE
Normal file
4
TODO-RELEASE
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
To be addressed in 7.XX.X
|
||||||
|
=========================
|
||||||
|
|
||||||
|
261 -
|
||||||
66
acconfig.h
66
acconfig.h
@@ -1,66 +0,0 @@
|
|||||||
/* Name of this package! */
|
|
||||||
#undef PACKAGE
|
|
||||||
|
|
||||||
/* Version number of this archive. */
|
|
||||||
#undef VERSION
|
|
||||||
|
|
||||||
/* Define if you have the getpass function. */
|
|
||||||
#undef HAVE_GETPASS
|
|
||||||
|
|
||||||
/* Define cpu-machine-OS */
|
|
||||||
#undef OS
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyaddr_r() function with 5 arguments */
|
|
||||||
#undef HAVE_GETHOSTBYADDR_R_5
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyaddr_r() function with 7 arguments */
|
|
||||||
#undef HAVE_GETHOSTBYADDR_R_7
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyaddr_r() function with 8 arguments */
|
|
||||||
#undef HAVE_GETHOSTBYADDR_R_8
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname_r() function with 3 arguments */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R_3
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname_r() function with 5 arguments */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R_5
|
|
||||||
|
|
||||||
/* Define if you have the gethostbyname_r() function with 6 arguments */
|
|
||||||
#undef HAVE_GETHOSTBYNAME_R_6
|
|
||||||
|
|
||||||
/* Define if you have the inet_ntoa_r function declared. */
|
|
||||||
#undef HAVE_INET_NTOA_R_DECL
|
|
||||||
|
|
||||||
/* Define if you need the _REENTRANT define for some functions */
|
|
||||||
#undef NEED_REENTRANT
|
|
||||||
|
|
||||||
/* Define if you have the Kerberos4 libraries (including -ldes) */
|
|
||||||
#undef KRB4
|
|
||||||
|
|
||||||
/* Define if you want to enable IPv6 support */
|
|
||||||
#undef ENABLE_IPV6
|
|
||||||
|
|
||||||
/* Define this to 'int' if ssize_t is not an available typedefed type */
|
|
||||||
#undef ssize_t
|
|
||||||
|
|
||||||
/* Define this to 'int' if socklen_t is not an available typedefed type */
|
|
||||||
#undef socklen_t
|
|
||||||
|
|
||||||
/* Define this as a suitable file to read random data from */
|
|
||||||
#undef RANDOM_FILE
|
|
||||||
|
|
||||||
/* Define this to your Entropy Gathering Daemon socket pathname */
|
|
||||||
#undef EGD_SOCKET
|
|
||||||
|
|
||||||
/* Define if you have a working OpenSSL installation */
|
|
||||||
#undef OPENSSL_ENABLED
|
|
||||||
|
|
||||||
/* Define the one correct non-blocking socket method below */
|
|
||||||
#undef HAVE_FIONBIO
|
|
||||||
#undef HAVE_IOCTLSOCKET
|
|
||||||
#undef HAVE_IOCTLSOCKET_CASE
|
|
||||||
#undef HAVE_O_NONBLOCK
|
|
||||||
#undef HAVE_DISABLED_NONBLOCKING
|
|
||||||
|
|
||||||
/* Define this to 'int' if in_addr_t is not an available typedefed type */
|
|
||||||
#undef in_addr_t
|
|
||||||
3670
acinclude.m4
3670
acinclude.m4
File diff suppressed because it is too large
Load Diff
@@ -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_6c/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_6c.axp.exe.ssl]libssl/lib, -
|
|
||||||
[-.openssl-0_9_6c.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
|
|
||||||
404
buildconf
404
buildconf
@@ -1,11 +1,407 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
#***************************************************************************
|
||||||
|
# _ _ ____ _
|
||||||
|
# Project ___| | | | _ \| |
|
||||||
|
# / __| | | | |_) | |
|
||||||
|
# | (__| |_| | _ <| |___
|
||||||
|
# \___|\___/|_| \_\_____|
|
||||||
|
#
|
||||||
|
# Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
#
|
||||||
|
# This software is licensed as described in the file COPYING, which
|
||||||
|
# you should have received as part of this distribution. The terms
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
die(){
|
die(){
|
||||||
echo "$@"
|
echo "$@"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
aclocal || die "The command 'aclocal' failed"
|
#--------------------------------------------------------------------------
|
||||||
autoheader || die "The command 'autoheader' failed"
|
# findtool works as 'which' but we use a different name to make it more
|
||||||
autoconf || die "The command 'autoconf' failed"
|
# obvious we aren't using 'which'! ;-)
|
||||||
automake || die "The command 'automake $MAKEFILES' failed"
|
#
|
||||||
|
findtool(){
|
||||||
|
file="$1"
|
||||||
|
|
||||||
|
if { echo $file | grep "/" >/dev/null 2>&1; } then
|
||||||
|
# we only check for the explicit file name if the file is given
|
||||||
|
# including a slash. Use ./ for current dir. Previously this would
|
||||||
|
# otherwise always cause findtool to search the local dir first, which
|
||||||
|
# is wrong.
|
||||||
|
if test -f "$file"; then
|
||||||
|
echo "$file"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
old_IFS=$IFS; IFS=':'
|
||||||
|
for path in $PATH
|
||||||
|
do
|
||||||
|
IFS=$old_IFS
|
||||||
|
# echo "checks for $file in $path" >&2
|
||||||
|
if test -f "$path/$file"; then
|
||||||
|
echo "$path/$file"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS=$old_IFS
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# removethis() removes all files and subdirectories with the given name,
|
||||||
|
# inside and below the current subdirectory at invocation time.
|
||||||
|
#
|
||||||
|
removethis(){
|
||||||
|
if test "$#" = "1"; then
|
||||||
|
find . -depth -name $1 -print > buildconf.tmp.$$
|
||||||
|
while read fdname
|
||||||
|
do
|
||||||
|
if test -f "$fdname"; then
|
||||||
|
rm -f "$fdname"
|
||||||
|
elif test -d "$fdname"; then
|
||||||
|
rm -f -r "$fdname"
|
||||||
|
fi
|
||||||
|
done < buildconf.tmp.$$
|
||||||
|
rm -f buildconf.tmp.$$
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Ensure that buildconf runs from the subdirectory where configure.ac lives
|
||||||
|
#
|
||||||
|
if test ! -f configure.ac ||
|
||||||
|
test ! -f src/main.c ||
|
||||||
|
test ! -f lib/urldata.h ||
|
||||||
|
test ! -f include/curl/curl.h; then
|
||||||
|
echo "Can not run buildconf from outside of curl's source subdirectory!"
|
||||||
|
echo "Change to the subdirectory where buildconf is found, and try again."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# autoconf 2.57 or newer
|
||||||
|
#
|
||||||
|
need_autoconf="2.57"
|
||||||
|
ac_version=`${AUTOCONF:-autoconf} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
|
||||||
|
if test -z "$ac_version"; then
|
||||||
|
echo "buildconf: autoconf not found."
|
||||||
|
echo " You need autoconf version $need_autoconf or newer installed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
old_IFS=$IFS; IFS='.'; set $ac_version; IFS=$old_IFS
|
||||||
|
if test "$1" = "2" -a "$2" -lt "57" || test "$1" -lt "2"; then
|
||||||
|
echo "buildconf: autoconf version $ac_version found."
|
||||||
|
echo " You need autoconf version $need_autoconf or newer installed."
|
||||||
|
echo " If you have a sufficient autoconf installed, but it"
|
||||||
|
echo " is not named 'autoconf', then try setting the"
|
||||||
|
echo " AUTOCONF environment variable."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "buildconf: autoconf version $ac_version (ok)"
|
||||||
|
|
||||||
|
am4te_version=`${AUTOM4TE:-autom4te} --version 2>/dev/null|head -n 1| sed -e 's/autom4te\(.*\)/\1/' -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
|
||||||
|
if test -z "$am4te_version"; then
|
||||||
|
echo "buildconf: autom4te not found. Weird autoconf installation!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if test "$am4te_version" = "$ac_version"; then
|
||||||
|
echo "buildconf: autom4te version $am4te_version (ok)"
|
||||||
|
else
|
||||||
|
echo "buildconf: autom4te version $am4te_version (ERROR: does not match autoconf version)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# autoheader 2.50 or newer
|
||||||
|
#
|
||||||
|
ah_version=`${AUTOHEADER:-autoheader} --version 2>/dev/null|head -n 1| sed -e 's/^[^0-9]*//' -e 's/[a-z]* *$//'`
|
||||||
|
if test -z "$ah_version"; then
|
||||||
|
echo "buildconf: autoheader not found."
|
||||||
|
echo " You need autoheader version 2.50 or newer installed."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
old_IFS=$IFS; IFS='.'; set $ah_version; IFS=$old_IFS
|
||||||
|
if test "$1" = "2" -a "$2" -lt "50" || test "$1" -lt "2"; then
|
||||||
|
echo "buildconf: autoheader version $ah_version found."
|
||||||
|
echo " You need autoheader version 2.50 or newer installed."
|
||||||
|
echo " If you have a sufficient autoheader installed, but it"
|
||||||
|
echo " is not named 'autoheader', then try setting the"
|
||||||
|
echo " AUTOHEADER environment variable."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
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 -n 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."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
old_IFS=$IFS; IFS='.'; set $am_version; IFS=$old_IFS
|
||||||
|
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 'automake', then try setting the"
|
||||||
|
echo " AUTOMAKE environment variable."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "buildconf: automake version $am_version (ok)"
|
||||||
|
|
||||||
|
acloc_version=`${ACLOCAL:-aclocal} --version 2>/dev/null|head -n 1| sed -e 's/^.* \([0-9]\)/\1/' -e 's/[a-z]* *$//' -e 's/\(.*\)\(-p.*\)/\1/'`
|
||||||
|
if test -z "$acloc_version"; then
|
||||||
|
echo "buildconf: aclocal not found. Weird automake installation!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if test "$acloc_version" = "$am_version"; then
|
||||||
|
echo "buildconf: aclocal version $acloc_version (ok)"
|
||||||
|
else
|
||||||
|
echo "buildconf: aclocal version $acloc_version (ERROR: does not match automake version)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# libtool check
|
||||||
|
#
|
||||||
|
LIBTOOL_WANTED_MAJOR=1
|
||||||
|
LIBTOOL_WANTED_MINOR=4
|
||||||
|
LIBTOOL_WANTED_PATCH=2
|
||||||
|
LIBTOOL_WANTED_VERSION=1.4.2
|
||||||
|
|
||||||
|
# this approach that tries 'glibtool' first is some kind of work-around for
|
||||||
|
# some BSD-systems I believe that use to provide the GNU libtool named
|
||||||
|
# glibtool, with 'libtool' being something completely different.
|
||||||
|
libtool=`findtool glibtool 2>/dev/null`
|
||||||
|
if test ! -x "$libtool"; then
|
||||||
|
libtool=`findtool ${LIBTOOL:-libtool}`
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$LIBTOOLIZE"; then
|
||||||
|
# set the LIBTOOLIZE here so that glibtoolize is used if glibtool was found
|
||||||
|
# $libtool is already the full path
|
||||||
|
libtoolize="${libtool}ize"
|
||||||
|
else
|
||||||
|
libtoolize=`findtool $LIBTOOLIZE`
|
||||||
|
fi
|
||||||
|
|
||||||
|
lt_pver=`$libtool --version 2>/dev/null|head -n 1`
|
||||||
|
lt_qver=`echo $lt_pver|sed -e "s/([^)]*)//g" -e "s/^[^0-9]*//g"`
|
||||||
|
lt_version=`echo $lt_qver|sed -e "s/[- ].*//" -e "s/\([a-z]*\)$//"`
|
||||||
|
if test -z "$lt_version"; then
|
||||||
|
echo "buildconf: libtool not found."
|
||||||
|
echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
old_IFS=$IFS; IFS='.'; set $lt_version; IFS=$old_IFS
|
||||||
|
lt_major=$1
|
||||||
|
lt_minor=$2
|
||||||
|
lt_patch=$3
|
||||||
|
lt_status="good"
|
||||||
|
|
||||||
|
if test "$lt_major" = "$LIBTOOL_WANTED_MAJOR"; then
|
||||||
|
if test "$lt_minor" -lt "$LIBTOOL_WANTED_MINOR"; then
|
||||||
|
lt_status="bad"
|
||||||
|
elif test -n "$LIBTOOL_WANTED_PATCH"; then
|
||||||
|
if test "$lt_minor" -gt "$LIBTOOL_WANTED_MINOR"; then
|
||||||
|
lt_status="good"
|
||||||
|
elif test -n "$lt_patch"; then
|
||||||
|
if test "$lt_patch" -lt "$LIBTOOL_WANTED_PATCH"; then
|
||||||
|
lt_status="bad"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
lt_status="bad"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test $lt_status != "good"; then
|
||||||
|
echo "buildconf: libtool version $lt_version found."
|
||||||
|
echo " You need libtool version $LIBTOOL_WANTED_VERSION or newer installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "buildconf: libtool version $lt_version (ok)"
|
||||||
|
|
||||||
|
if test -f "$libtoolize"; then
|
||||||
|
echo "buildconf: libtoolize found"
|
||||||
|
else
|
||||||
|
echo "buildconf: libtoolize not found. Weird libtool installation!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# m4 check
|
||||||
|
#
|
||||||
|
m4=`${M4:-m4} --version 2>/dev/null|head -n 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
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# perl check
|
||||||
|
#
|
||||||
|
PERL=`findtool ${PERL:-perl}`
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Remove files generated on previous buildconf/configure run.
|
||||||
|
#
|
||||||
|
for fname in .deps \
|
||||||
|
.libs \
|
||||||
|
*.la \
|
||||||
|
*.lo \
|
||||||
|
*.a \
|
||||||
|
*.o \
|
||||||
|
Makefile \
|
||||||
|
Makefile.in \
|
||||||
|
aclocal.m4 \
|
||||||
|
aclocal.m4.bak \
|
||||||
|
ares_build.h \
|
||||||
|
ares_config.h \
|
||||||
|
ares_config.h.in \
|
||||||
|
autom4te.cache \
|
||||||
|
compile \
|
||||||
|
config.guess \
|
||||||
|
curl_config.h \
|
||||||
|
curl_config.h.in \
|
||||||
|
config.log \
|
||||||
|
config.lt \
|
||||||
|
config.status \
|
||||||
|
config.sub \
|
||||||
|
configure \
|
||||||
|
curl-config \
|
||||||
|
curlbuild.h \
|
||||||
|
depcomp \
|
||||||
|
libcares.pc \
|
||||||
|
libcurl.pc \
|
||||||
|
libtool \
|
||||||
|
libtool.m4 \
|
||||||
|
ltmain.sh \
|
||||||
|
ltoptions.m4 \
|
||||||
|
ltsugar.m4 \
|
||||||
|
ltversion.m4 \
|
||||||
|
lt~obsolete.m4 \
|
||||||
|
stamp-h1 \
|
||||||
|
stamp-h2 \
|
||||||
|
stamp-h3 ; do
|
||||||
|
removethis "$fname"
|
||||||
|
done
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# run the correct scripts now
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "buildconf: running libtoolize"
|
||||||
|
$libtoolize --copy --automake --force || die "The libtoolize command failed"
|
||||||
|
|
||||||
|
if test ! -f m4/curl-functions.m4; then
|
||||||
|
echo "buildconf: cURL m4 macros not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "buildconf: running aclocal"
|
||||||
|
${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "The aclocal command line failed"
|
||||||
|
|
||||||
|
if test -n "$PERL"; then
|
||||||
|
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
|
||||||
|
else
|
||||||
|
echo "buildconf: perl not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "buildconf: running autoheader"
|
||||||
|
${AUTOHEADER:-autoheader} || die "The autoheader command failed"
|
||||||
|
|
||||||
|
echo "buildconf: cp lib/curl_config.h.in src/curl_config.h.in"
|
||||||
|
cp lib/curl_config.h.in src/curl_config.h.in
|
||||||
|
|
||||||
|
echo "buildconf: running autoconf"
|
||||||
|
${AUTOCONF:-autoconf} || die "The autoconf command failed"
|
||||||
|
|
||||||
|
if test -d ares; then
|
||||||
|
cd ares
|
||||||
|
echo "buildconf: running in ares"
|
||||||
|
./buildconf
|
||||||
|
cd ..
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "buildconf: running automake"
|
||||||
|
${AUTOMAKE:-automake} -a -c || die "The automake command failed"
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Depending on the libtool and automake versions being used, config.guess
|
||||||
|
# might not be installed in the subdirectory until automake has finished.
|
||||||
|
# So we can not attempt to use it until this very last buildconf stage.
|
||||||
|
#
|
||||||
|
|
||||||
|
if test ! -f ./config.guess; then
|
||||||
|
echo "buildconf: config.guess not found"
|
||||||
|
else
|
||||||
|
buildhost=`./config.guess 2>/dev/null|head -n 1`
|
||||||
|
case $buildhost in
|
||||||
|
*-*-hpux*)
|
||||||
|
need_lt_major=1
|
||||||
|
need_lt_minor=5
|
||||||
|
need_lt_patch=24
|
||||||
|
need_lt_check="yes"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if test ! -z "$need_lt_check"; then
|
||||||
|
if test -z "$lt_major"; then
|
||||||
|
lt_status="bad"
|
||||||
|
elif test "$lt_major" -gt "$need_lt_major"; then
|
||||||
|
lt_status="good"
|
||||||
|
elif test "$lt_major" -lt "$need_lt_major"; then
|
||||||
|
lt_status="bad"
|
||||||
|
elif test -z "$lt_minor"; then
|
||||||
|
lt_status="bad"
|
||||||
|
elif test "$lt_minor" -gt "$need_lt_minor"; then
|
||||||
|
lt_status="good"
|
||||||
|
elif test "$lt_minor" -lt "$need_lt_minor"; then
|
||||||
|
lt_status="bad"
|
||||||
|
elif test -z "$lt_patch"; then
|
||||||
|
lt_status="bad"
|
||||||
|
elif test "$lt_patch" -gt "$need_lt_patch"; then
|
||||||
|
lt_status="good"
|
||||||
|
elif test "$lt_patch" -lt "$need_lt_patch"; then
|
||||||
|
lt_status="bad"
|
||||||
|
else
|
||||||
|
lt_status="good"
|
||||||
|
fi
|
||||||
|
if test "$lt_status" != "good"; then
|
||||||
|
need_lt_version="$need_lt_major.$need_lt_minor.$need_lt_patch"
|
||||||
|
echo "buildconf: libtool version $lt_version found."
|
||||||
|
echo " $buildhost requires libtool $need_lt_version or newer installed."
|
||||||
|
rm -f configure
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Finished succesfully.
|
||||||
|
#
|
||||||
|
|
||||||
|
echo "buildconf: OK"
|
||||||
|
exit 0
|
||||||
|
|||||||
38
buildconf.bat
Normal file
38
buildconf.bat
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
@echo off
|
||||||
|
REM
|
||||||
|
REM
|
||||||
|
REM This batch file must be used to set up a git tree to build on
|
||||||
|
REM systems where there is no autotools support (i.e. Microsoft).
|
||||||
|
REM
|
||||||
|
REM This file is not included nor needed for curl's release
|
||||||
|
REM archives, neither for curl's daily snapshot archives.
|
||||||
|
|
||||||
|
if exist GIT-INFO goto start_doing
|
||||||
|
ECHO ERROR: This file shall only be used with a curl git tree checkout.
|
||||||
|
goto end_all
|
||||||
|
:start_doing
|
||||||
|
|
||||||
|
REM create hugehelp.c
|
||||||
|
if not exist src\hugehelp.c.cvs goto end_hugehelp_c
|
||||||
|
copy /Y src\hugehelp.c.cvs src\hugehelp.c
|
||||||
|
:end_hugehelp_c
|
||||||
|
|
||||||
|
REM create Makefile
|
||||||
|
if not exist Makefile.dist goto end_makefile
|
||||||
|
copy /Y Makefile.dist Makefile
|
||||||
|
:end_makefile
|
||||||
|
|
||||||
|
REM create curlbuild.h
|
||||||
|
if not exist include\curl\curlbuild.h.dist goto end_curlbuild_h
|
||||||
|
copy /Y include\curl\curlbuild.h.dist include\curl\curlbuild.h
|
||||||
|
:end_curlbuild_h
|
||||||
|
|
||||||
|
REM setup c-ares git tree
|
||||||
|
if not exist ares\buildconf.bat goto end_c_ares
|
||||||
|
cd ares
|
||||||
|
call buildconf.bat
|
||||||
|
cd ..
|
||||||
|
:end_c_ares
|
||||||
|
|
||||||
|
:end_all
|
||||||
|
|
||||||
1317
config.guess
vendored
1317
config.guess
vendored
File diff suppressed because it is too large
Load Diff
1411
config.sub
vendored
1411
config.sub
vendored
File diff suppressed because it is too large
Load Diff
2866
configure.ac
Normal file
2866
configure.ac
Normal file
File diff suppressed because it is too large
Load Diff
618
configure.in
618
configure.in
@@ -1,618 +0,0 @@
|
|||||||
dnl $Id$
|
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
dnl Ensure that this file is processed with autoconf 2.50 or newer
|
|
||||||
dnl Don't even think about removing this check!
|
|
||||||
AC_PREREQ(2.50)
|
|
||||||
|
|
||||||
dnl First some basic init macros
|
|
||||||
AC_INIT
|
|
||||||
AC_CONFIG_SRCDIR([lib/urldata.h])
|
|
||||||
AM_CONFIG_HEADER(lib/config.h src/config.h tests/server/config.h)
|
|
||||||
|
|
||||||
dnl figure out the libcurl version
|
|
||||||
VERSION=`sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curl.h`
|
|
||||||
AM_INIT_AUTOMAKE(curl,$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`
|
|
||||||
AC_SUBST(VERSIONNUM)
|
|
||||||
|
|
||||||
dnl Solaris pkgadd support definitions
|
|
||||||
PKGADD_PKG="HAXXcurl"
|
|
||||||
PKGADD_NAME="cURL - a client that groks URLs"
|
|
||||||
PKGADD_VENDOR="curl.haxx.se"
|
|
||||||
AC_SUBST(PKGADD_PKG)
|
|
||||||
AC_SUBST(PKGADD_NAME)
|
|
||||||
AC_SUBST(PKGADD_VENDOR)
|
|
||||||
|
|
||||||
|
|
||||||
dnl
|
|
||||||
dnl Detect the canonical host and target build environment
|
|
||||||
dnl
|
|
||||||
|
|
||||||
AC_CANONICAL_HOST
|
|
||||||
dnl Get system canonical name
|
|
||||||
AC_DEFINE_UNQUOTED(OS, "${host}")
|
|
||||||
|
|
||||||
dnl Check for AIX weirdos
|
|
||||||
AC_AIX
|
|
||||||
|
|
||||||
dnl Checks for programs.
|
|
||||||
AC_PROG_CC
|
|
||||||
|
|
||||||
dnl check for how to do large files
|
|
||||||
AC_SYS_LARGEFILE
|
|
||||||
|
|
||||||
dnl check for cygwin stuff
|
|
||||||
AC_LIBTOOL_WIN32_DLL
|
|
||||||
|
|
||||||
dnl libtool setup
|
|
||||||
AM_PROG_LIBTOOL
|
|
||||||
|
|
||||||
dnl The install stuff has already been taken care of by the automake stuff
|
|
||||||
dnl AC_PROG_INSTALL
|
|
||||||
AC_PROG_MAKE_SET
|
|
||||||
|
|
||||||
dnl ************************************************************
|
|
||||||
dnl lame option to switch on debug options
|
|
||||||
dnl
|
|
||||||
AC_MSG_CHECKING([whether to enable debug options])
|
|
||||||
AC_ARG_ENABLE(debug,
|
|
||||||
[ --enable-debug Enable pedantic debug options
|
|
||||||
--disable-debug Disable debug options],
|
|
||||||
[ case "$enableval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
;;
|
|
||||||
*) AC_MSG_RESULT(yes)
|
|
||||||
|
|
||||||
CPPFLAGS="$CPPFLAGS -DMALLOCDEBUG"
|
|
||||||
CFLAGS="-W -Wall -Wwrite-strings -pedantic -Wundef -Wpointer-arith -Wcast-align -Wnested-externs -g"
|
|
||||||
;;
|
|
||||||
esac ],
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Checks for IPv6
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to enable ipv6])
|
|
||||||
AC_ARG_ENABLE(ipv6,
|
|
||||||
[ --enable-ipv6 Enable ipv6 (with ipv4) support
|
|
||||||
--disable-ipv6 Disable ipv6 support],
|
|
||||||
[ case "$enableval" in
|
|
||||||
no)
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
ipv6=no
|
|
||||||
;;
|
|
||||||
*) AC_MSG_RESULT(yes)
|
|
||||||
ipv6=yes
|
|
||||||
;;
|
|
||||||
esac ],
|
|
||||||
|
|
||||||
AC_TRY_RUN([ /* is AF_INET6 available? */
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
main()
|
|
||||||
{
|
|
||||||
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
|
|
||||||
exit(1);
|
|
||||||
else
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
],
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
ipv6=yes,
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
ipv6=no,
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
ipv6=no
|
|
||||||
))
|
|
||||||
|
|
||||||
if test "$ipv6" = "yes"; then
|
|
||||||
CURL_CHECK_WORKING_GETADDRINFO
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Checks for libraries.
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
dnl gethostbyname in the nsl lib?
|
|
||||||
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname))
|
|
||||||
|
|
||||||
if test "$ac_cv_lib_nsl_gethostbyname" != "yes" -a "$ac_cv_func_gethostbyname" != "yes"; then
|
|
||||||
dnl gethostbyname in the socket lib?
|
|
||||||
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(socket, gethostbyname))
|
|
||||||
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" = "$ac_cv_func_gethostbyname"; then
|
|
||||||
AC_MSG_CHECKING([trying 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 )
|
|
||||||
|
|
||||||
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
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl resolve lib?
|
|
||||||
AC_CHECK_FUNC(strcasecmp, , AC_CHECK_LIB(resolve, strcasecmp))
|
|
||||||
|
|
||||||
if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
|
|
||||||
AC_CHECK_LIB(resolve, strcasecmp,
|
|
||||||
[LIBS="-lresolve $LIBS"],
|
|
||||||
,
|
|
||||||
-lnsl)
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl socket lib?
|
|
||||||
AC_CHECK_FUNC(connect, , AC_CHECK_LIB(socket, connect))
|
|
||||||
|
|
||||||
dnl ucb lib?
|
|
||||||
AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(ucb, gethostname))
|
|
||||||
|
|
||||||
dnl dl lib?
|
|
||||||
AC_CHECK_FUNC(dlclose, , AC_CHECK_LIB(dl, dlopen))
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Check how non-blocking sockets are set
|
|
||||||
dnl **********************************************************************
|
|
||||||
AC_ARG_ENABLE(nonblocking,
|
|
||||||
[ --enable-nonblocking Makes the script detect how to do it
|
|
||||||
--disable-nonblocking Makes the script disable non-blocking sockets],
|
|
||||||
[
|
|
||||||
if test "$enableval" = "no" ; then
|
|
||||||
AC_MSG_WARN([non-blocking sockets disabled])
|
|
||||||
AC_DEFINE(HAVE_DISABLED_NONBLOCKING)
|
|
||||||
else
|
|
||||||
CURL_CHECK_NONBLOCKING_SOCKET
|
|
||||||
fi
|
|
||||||
],
|
|
||||||
[
|
|
||||||
CURL_CHECK_NONBLOCKING_SOCKET
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Check for the random seed preferences
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
AC_ARG_WITH(egd-socket,
|
|
||||||
[ --with-egd-socket=FILE Entropy Gathering Daemon socket pathname],
|
|
||||||
[ EGD_SOCKET="$withval" ]
|
|
||||||
)
|
|
||||||
if test -n "$EGD_SOCKET" ; then
|
|
||||||
AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET")
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Check for user-specified random device
|
|
||||||
AC_ARG_WITH(random,
|
|
||||||
[ --with-random=FILE read randomness from FILE (default=/dev/urandom)],
|
|
||||||
[ RANDOM_FILE="$withval" ],
|
|
||||||
[
|
|
||||||
dnl Check for random device
|
|
||||||
AC_CHECK_FILE("/dev/urandom",
|
|
||||||
[
|
|
||||||
RANDOM_FILE="/dev/urandom";
|
|
||||||
]
|
|
||||||
)
|
|
||||||
]
|
|
||||||
)
|
|
||||||
if test -n "$RANDOM_FILE" ; then
|
|
||||||
AC_SUBST(RANDOM_FILE)
|
|
||||||
AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE")
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Check for the presence of Kerberos4 libraries and headers
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
AC_ARG_WITH(krb4-includes,
|
|
||||||
[ --with-krb4-includes[=DIR] Specify location of kerberos4 headers],[
|
|
||||||
CPPFLAGS="$CPPFLAGS -I$withval"
|
|
||||||
KRB4INC="$withval"
|
|
||||||
want_krb4=yes
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_ARG_WITH(krb4-libs,
|
|
||||||
[ --with-krb4-libs[=DIR] Specify location of kerberos4 libs],[
|
|
||||||
LDFLAGS="$LDFLAGS -L$withval"
|
|
||||||
KRB4LIB="$withval"
|
|
||||||
want_krb4=yes
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
OPT_KRB4=off
|
|
||||||
AC_ARG_WITH(krb4,dnl
|
|
||||||
[ --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"
|
|
||||||
CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
|
|
||||||
KRB4INC="$OPT_KRB4/include"
|
|
||||||
fi
|
|
||||||
want_krb4="yes"
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([if Kerberos4 support is requested])
|
|
||||||
|
|
||||||
if test "$want_krb4" = yes
|
|
||||||
then
|
|
||||||
if test "$ipv6" = "yes"; then
|
|
||||||
echo krb4 is not compatible with IPv6
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
|
|
||||||
dnl Check for & handle argument to --with-krb4
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(where to look for Kerberos4)
|
|
||||||
if test X"$OPT_KRB4" = Xyes
|
|
||||||
then
|
|
||||||
AC_MSG_RESULT([defaults])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Check for DES library
|
|
||||||
AC_CHECK_LIB(des, des_pcbc_encrypt,
|
|
||||||
[
|
|
||||||
AC_CHECK_HEADERS(des.h)
|
|
||||||
|
|
||||||
dnl resolv lib?
|
|
||||||
AC_CHECK_FUNC(res_search, , AC_CHECK_LIB(resolv, res_search))
|
|
||||||
|
|
||||||
dnl Check for the Kerberos4 library
|
|
||||||
AC_CHECK_LIB(krb, krb_net_read,
|
|
||||||
[
|
|
||||||
dnl Check for header files
|
|
||||||
AC_CHECK_HEADERS(krb.h)
|
|
||||||
|
|
||||||
dnl we found the required libraries, add to LIBS
|
|
||||||
LIBS="-lkrb -ldes $LIBS"
|
|
||||||
|
|
||||||
dnl Check for function krb_get_our_ip_for_realm
|
|
||||||
dnl this is needed for NAT networks
|
|
||||||
AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
|
|
||||||
|
|
||||||
dnl add define KRB4
|
|
||||||
AC_DEFINE(KRB4)
|
|
||||||
|
|
||||||
dnl substitute it too!
|
|
||||||
KRB4_ENABLED=1
|
|
||||||
AC_SUBST(KRB4_ENABLED)
|
|
||||||
|
|
||||||
dnl the krb4 stuff needs a strlcpy()
|
|
||||||
AC_CHECK_FUNCS(strlcpy)
|
|
||||||
|
|
||||||
])
|
|
||||||
])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Check for the presence of SSL libraries and headers
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
dnl Default to compiler & linker defaults for SSL files & libraries.
|
|
||||||
OPT_SSL=off
|
|
||||||
AC_ARG_WITH(ssl,dnl
|
|
||||||
[ --with-ssl[=DIR] where to look for SSL [compiler/linker default paths]
|
|
||||||
DIR points to the SSL installation [/usr/local/ssl]],
|
|
||||||
OPT_SSL=$withval
|
|
||||||
)
|
|
||||||
|
|
||||||
if test X"$OPT_SSL" = Xno
|
|
||||||
then
|
|
||||||
AC_MSG_WARN(SSL/https support disabled)
|
|
||||||
else
|
|
||||||
|
|
||||||
dnl Check for and handle argument to --with-ssl.
|
|
||||||
|
|
||||||
dnl save the pre-ssl check flags for a while
|
|
||||||
CLEANLDFLAGS="$LDFLAGS"
|
|
||||||
CLEANCPPFLAGS="$CPPFLAGS"
|
|
||||||
|
|
||||||
case "$OPT_SSL" in
|
|
||||||
yes)
|
|
||||||
EXTRA_SSL=/usr/local/ssl ;;
|
|
||||||
off)
|
|
||||||
EXTRA_SSL= ;;
|
|
||||||
*)
|
|
||||||
dnl check the given spot right away!
|
|
||||||
EXTRA_SSL=$OPT_SSL
|
|
||||||
LDFLAGS="$LDFLAGS -L$EXTRA_SSL/lib"
|
|
||||||
CPPFLAGS="$CPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AC_CHECK_LIB(crypto, CRYPTO_lock,[
|
|
||||||
HAVECRYPTO="yes"
|
|
||||||
],[
|
|
||||||
OLDLDFLAGS="$LDFLAGS"
|
|
||||||
OLDCPPFLAGS="$CPPFLAGS"
|
|
||||||
LDFLAGS="$CLEANLDFLAGS -L$EXTRA_SSL/lib"
|
|
||||||
CPPFLAGS="$CLEANCPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
|
|
||||||
AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
|
|
||||||
HAVECRYPTO="yes" ], [
|
|
||||||
LDFLAGS="$OLDLDFLAGS"
|
|
||||||
CPPFLAGS="$OLDCPPFLAGS"
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
if test "$HAVECRYPTO" = "yes"; then
|
|
||||||
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
|
|
||||||
|
|
||||||
AC_CHECK_LIB(crypto, CRYPTO_add_lock)
|
|
||||||
AC_CHECK_LIB(ssl, SSL_connect)
|
|
||||||
|
|
||||||
if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
|
|
||||||
dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
|
|
||||||
AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
|
|
||||||
OLIBS=$LIBS
|
|
||||||
LIBS="$LIBS -lRSAglue -lrsaref"
|
|
||||||
AC_CHECK_LIB(ssl, SSL_connect)
|
|
||||||
if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
|
|
||||||
dnl still no SSL_connect
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
LIBS=$OLIBS
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl Check for SSLeay headers
|
|
||||||
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
|
|
||||||
openssl/pem.h openssl/ssl.h openssl/err.h,
|
|
||||||
OPENSSL_ENABLED=1)
|
|
||||||
|
|
||||||
if test $ac_cv_header_openssl_x509_h = no; then
|
|
||||||
AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h,
|
|
||||||
OPENSSL_ENABLED=1)
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl Check for the OpenSSL engine header, it is kind of "separated"
|
|
||||||
dnl from the main SSL check
|
|
||||||
AC_CHECK_HEADERS(openssl/engine.h)
|
|
||||||
|
|
||||||
AC_SUBST(OPENSSL_ENABLED)
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test X"$OPT_SSL" != Xoff &&
|
|
||||||
test "$OPENSSL_ENABLED" != "1"; then
|
|
||||||
AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
dnl these can only exist if openssl exists
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS( RAND_status \
|
|
||||||
RAND_screen \
|
|
||||||
RAND_egd )
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Check for the presence of ZLIB libraries and headers
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
dnl Default to compiler & linker defaults for files & libraries.
|
|
||||||
dnl OPT_ZLIB=no
|
|
||||||
dnl AC_ARG_WITH(zlib,dnl
|
|
||||||
dnl [ --with-zlib[=DIR] where to look for ZLIB [compiler/linker default paths]
|
|
||||||
dnl DIR points to the ZLIB installation prefix [/usr/local]],
|
|
||||||
dnl OPT_ZLIB=$withval,
|
|
||||||
dnl )
|
|
||||||
|
|
||||||
dnl Check for & handle argument to --with-zlib.
|
|
||||||
dnl
|
|
||||||
dnl NOTE: We *always* look for ZLIB headers & libraries, all this option
|
|
||||||
dnl does is change where we look (by adjusting LIBS and CPPFLAGS.)
|
|
||||||
dnl
|
|
||||||
|
|
||||||
dnl AC_MSG_CHECKING(where to look for ZLIB)
|
|
||||||
dnl if test X"$OPT_ZLIB" = Xno
|
|
||||||
dnl then
|
|
||||||
dnl AC_MSG_RESULT([defaults (or given in environment)])
|
|
||||||
dnl else
|
|
||||||
dnl test X"$OPT_ZLIB" = Xyes && OPT_ZLIB=/usr/local
|
|
||||||
dnl LIBS="$LIBS -L$OPT_ZLIB/lib"
|
|
||||||
dnl CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
|
|
||||||
dnl AC_MSG_RESULT([$OPT_ZLIB])
|
|
||||||
dnl fi
|
|
||||||
|
|
||||||
dnl z lib?
|
|
||||||
dnl AC_CHECK_FUNC(gzread, , AC_CHECK_LIB(z, gzread))
|
|
||||||
|
|
||||||
|
|
||||||
dnl Default is to try the thread-safe versions of a few functions
|
|
||||||
OPT_THREAD=on
|
|
||||||
AC_ARG_ENABLE(thread,dnl
|
|
||||||
[ --disable-thread tell configure to not look for thread-safe functions],
|
|
||||||
OPT_THREAD=off
|
|
||||||
)
|
|
||||||
|
|
||||||
if test X"$OPT_THREAD" = Xoff
|
|
||||||
then
|
|
||||||
AC_MSG_WARN(libcurl will not get built using thread-safe functions)
|
|
||||||
AC_DEFINE(DISABLED_THREADSAFE, 1, \
|
|
||||||
Set to explicitly specify we don't want to use thread-safe functions)
|
|
||||||
else
|
|
||||||
|
|
||||||
dnl dig around for gethostbyname_r()
|
|
||||||
CURL_CHECK_GETHOSTBYNAME_R()
|
|
||||||
|
|
||||||
dnl dig around for gethostbyaddr_r()
|
|
||||||
CURL_CHECK_GETHOSTBYADDR_R()
|
|
||||||
|
|
||||||
dnl poke around for inet_ntoa_r()
|
|
||||||
CURL_CHECK_INET_NTOA_R()
|
|
||||||
|
|
||||||
dnl is there a localtime_r()
|
|
||||||
CURL_CHECK_LOCALTIME_R()
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS( gmtime_r )
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl **********************************************************************
|
|
||||||
dnl Back to "normal" configuring
|
|
||||||
dnl **********************************************************************
|
|
||||||
|
|
||||||
dnl Checks for header files.
|
|
||||||
AC_HEADER_STDC
|
|
||||||
AC_CHECK_HEADERS( \
|
|
||||||
unistd.h \
|
|
||||||
malloc.h \
|
|
||||||
stdlib.h \
|
|
||||||
arpa/inet.h \
|
|
||||||
net/if.h \
|
|
||||||
netinet/in.h \
|
|
||||||
netinet/if_ether.h \
|
|
||||||
netdb.h \
|
|
||||||
sys/select.h \
|
|
||||||
sys/socket.h \
|
|
||||||
sys/sockio.h \
|
|
||||||
sys/stat.h \
|
|
||||||
sys/types.h \
|
|
||||||
sys/time.h \
|
|
||||||
sys/param.h \
|
|
||||||
termios.h \
|
|
||||||
termio.h \
|
|
||||||
sgtty.h \
|
|
||||||
fcntl.h \
|
|
||||||
dlfcn.h \
|
|
||||||
alloca.h \
|
|
||||||
winsock.h \
|
|
||||||
time.h \
|
|
||||||
io.h \
|
|
||||||
pwd.h \
|
|
||||||
utime.h \
|
|
||||||
sys/utime.h
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl Check for libz header
|
|
||||||
dnl AC_CHECK_HEADERS(zlib.h)
|
|
||||||
|
|
||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
AC_C_CONST
|
|
||||||
AC_TYPE_SIZE_T
|
|
||||||
AC_HEADER_TIME
|
|
||||||
|
|
||||||
# mprintf() checks:
|
|
||||||
|
|
||||||
# check for 'long double'
|
|
||||||
# AC_CHECK_SIZEOF(long double, 8)
|
|
||||||
# check for 'long long'
|
|
||||||
# AC_CHECK_SIZEOF(long long, 4)
|
|
||||||
|
|
||||||
# check for ssize_t
|
|
||||||
AC_CHECK_TYPE(ssize_t, int)
|
|
||||||
|
|
||||||
TYPE_SOCKLEN_T
|
|
||||||
TYPE_IN_ADDR_T
|
|
||||||
|
|
||||||
dnl Checks for library functions.
|
|
||||||
dnl AC_PROG_GCC_TRADITIONAL
|
|
||||||
AC_TYPE_SIGNAL
|
|
||||||
dnl AC_FUNC_VPRINTF
|
|
||||||
AC_CHECK_FUNCS( socket \
|
|
||||||
select \
|
|
||||||
strdup \
|
|
||||||
strstr \
|
|
||||||
strtok_r \
|
|
||||||
strftime \
|
|
||||||
uname \
|
|
||||||
strcasecmp \
|
|
||||||
stricmp \
|
|
||||||
strcmpi \
|
|
||||||
gethostname \
|
|
||||||
gethostbyaddr \
|
|
||||||
gettimeofday \
|
|
||||||
inet_addr \
|
|
||||||
inet_ntoa \
|
|
||||||
tcsetattr \
|
|
||||||
tcgetattr \
|
|
||||||
perror \
|
|
||||||
closesocket \
|
|
||||||
setvbuf \
|
|
||||||
sigaction \
|
|
||||||
signal \
|
|
||||||
getpass_r \
|
|
||||||
strlcat \
|
|
||||||
getpwuid \
|
|
||||||
geteuid \
|
|
||||||
dlopen \
|
|
||||||
utime
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl removed 'getpass' check on October 26, 2000
|
|
||||||
|
|
||||||
if test "$ac_cv_func_select" != "yes"; then
|
|
||||||
AC_MSG_ERROR(Can't work without an existing select() function)
|
|
||||||
fi
|
|
||||||
if test "$ac_cv_func_socket" != "yes"; then
|
|
||||||
AC_MSG_ERROR(Can't work without an existing socket() function)
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_PATH_PROG( PERL, perl, ,
|
|
||||||
$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
|
|
||||||
AC_SUBST(PERL)
|
|
||||||
|
|
||||||
AC_PATH_PROGS( NROFF, gnroff nroff, ,
|
|
||||||
$PATH:/usr/bin/:/usr/local/bin )
|
|
||||||
AC_SUBST(NROFF)
|
|
||||||
|
|
||||||
AC_PROG_YACC
|
|
||||||
|
|
||||||
dnl AC_PATH_PROG( RANLIB, ranlib, /usr/bin/ranlib,
|
|
||||||
dnl $PATH:/usr/bin/:/usr/local/bin )
|
|
||||||
dnl AC_SUBST(RANLIB)
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([Makefile \
|
|
||||||
docs/Makefile \
|
|
||||||
docs/examples/Makefile \
|
|
||||||
docs/libcurl/Makefile \
|
|
||||||
include/Makefile \
|
|
||||||
include/curl/Makefile \
|
|
||||||
src/Makefile \
|
|
||||||
lib/Makefile \
|
|
||||||
tests/Makefile \
|
|
||||||
tests/data/Makefile \
|
|
||||||
tests/server/Makefile \
|
|
||||||
packages/Makefile \
|
|
||||||
packages/Win32/Makefile \
|
|
||||||
packages/Win32/cygwin/Makefile \
|
|
||||||
packages/Linux/Makefile \
|
|
||||||
packages/Linux/RPM/Makefile \
|
|
||||||
packages/Linux/RPM/curl.spec \
|
|
||||||
packages/Linux/RPM/curl-ssl.spec \
|
|
||||||
packages/Solaris/Makefile \
|
|
||||||
packages/EPM/curl.list \
|
|
||||||
packages/EPM/Makefile \
|
|
||||||
curl-config
|
|
||||||
])
|
|
||||||
AC_OUTPUT
|
|
||||||
|
|
||||||
112
curl-config.in
112
curl-config.in
@@ -1,10 +1,26 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
|
#***************************************************************************
|
||||||
|
# _ _ ____ _
|
||||||
|
# Project ___| | | | _ \| |
|
||||||
|
# / __| | | | |_) | |
|
||||||
|
# | (__| |_| | _ <| |___
|
||||||
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# The idea to this kind of setup info script was stolen from numerous
|
# Copyright (C) 2001 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
# other packages, such as neon, libxml and gnome.
|
|
||||||
#
|
#
|
||||||
# $Id$
|
# 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.
|
||||||
|
#
|
||||||
|
###########################################################################
|
||||||
|
|
||||||
prefix=@prefix@
|
prefix=@prefix@
|
||||||
exec_prefix=@exec_prefix@
|
exec_prefix=@exec_prefix@
|
||||||
includedir=@includedir@
|
includedir=@includedir@
|
||||||
@@ -16,12 +32,18 @@ Usage: curl-config [OPTION]
|
|||||||
|
|
||||||
Available values for OPTION include:
|
Available values for OPTION include:
|
||||||
|
|
||||||
|
--built-shared says 'yes' if libcurl was built shared
|
||||||
|
--ca ca bundle install path
|
||||||
--cc compiler
|
--cc compiler
|
||||||
--cflags pre-processor and compiler flags
|
--cflags pre-processor and compiler flags
|
||||||
--feature newline separated list of enabled features
|
--checkfor [version] check for (lib)curl of the specified version
|
||||||
|
--configure the arguments given to configure when building curl
|
||||||
|
--features newline separated list of enabled features
|
||||||
--help display this help and exit
|
--help display this help and exit
|
||||||
--libs library linking information
|
--libs library linking information
|
||||||
--prefix curl install prefix
|
--prefix curl install prefix
|
||||||
|
--protocols newline separated list of enabled protocols
|
||||||
|
--static-libs static libcurl library linking information
|
||||||
--version output version information
|
--version output version information
|
||||||
--vernum output the version information as a number (hexadecimal)
|
--vernum output the version information as a number (hexadecimal)
|
||||||
EOF
|
EOF
|
||||||
@@ -43,24 +65,32 @@ while test $# -gt 0; do
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
--built-shared)
|
||||||
|
echo @ENABLE_SHARED@
|
||||||
|
;;
|
||||||
|
|
||||||
|
--ca)
|
||||||
|
echo "@CURL_CA_BUNDLE@"
|
||||||
|
;;
|
||||||
|
|
||||||
--cc)
|
--cc)
|
||||||
echo @CC@
|
echo "@CC@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--prefix)
|
--prefix)
|
||||||
echo $prefix
|
echo "$prefix"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--feature)
|
--feature|--features)
|
||||||
if test "@OPENSSL_ENABLED@" = "1"; then
|
for feature in @SUPPORT_FEATURES@ ""; do
|
||||||
echo "SSL"
|
test -n "$feature" && echo "$feature"
|
||||||
fi
|
done
|
||||||
if test "@KRB4_ENABLED@" = "1"; then
|
;;
|
||||||
echo "KRB4"
|
|
||||||
fi
|
--protocols)
|
||||||
if test "@IPV6_ENABLED@" = "1"; then
|
for protocol in @SUPPORT_PROTOCOLS@; do
|
||||||
echo "IPv6"
|
echo "$protocol"
|
||||||
fi
|
done
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--version)
|
--version)
|
||||||
@@ -68,6 +98,26 @@ while test $# -gt 0; do
|
|||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
--checkfor)
|
||||||
|
checkfor=$2
|
||||||
|
cmajor=`echo $checkfor | cut -d. -f1`
|
||||||
|
cminor=`echo $checkfor | cut -d. -f2`
|
||||||
|
# when extracting the patch part we strip off everything after a
|
||||||
|
# dash as that's used for things like version 1.2.3-CVS
|
||||||
|
cpatch=`echo $checkfor | cut -d. -f3 | cut -d- -f1`
|
||||||
|
checknum=`echo "$cmajor*256*256 + $cminor*256 + ${cpatch:-0}" | bc`
|
||||||
|
numuppercase=`echo @VERSIONNUM@ | tr 'a-f' 'A-F'`
|
||||||
|
nownum=`echo "obase=10; ibase=16; $numuppercase" | bc`
|
||||||
|
|
||||||
|
if test "$nownum" -ge "$checknum"; then
|
||||||
|
# silent success
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "requested version $checkfor is newer than existing @VERSION@"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
--vernum)
|
--vernum)
|
||||||
echo @VERSIONNUM@
|
echo @VERSIONNUM@
|
||||||
exit 0
|
exit 0
|
||||||
@@ -78,17 +128,37 @@ while test $# -gt 0; do
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
--cflags)
|
--cflags)
|
||||||
echo -I@includedir@
|
if test "X@includedir@" = "X/usr/include"; then
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
echo "-I@includedir@"
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
--libs)
|
--libs)
|
||||||
echo -L@libdir@ -lcurl @LDFLAGS@ @LIBS@
|
if test "X@libdir@" != "X/usr/lib" -a "X@libdir@" != "X/usr/lib64"; then
|
||||||
;;
|
CURLLIBDIR="-L@libdir@ "
|
||||||
|
else
|
||||||
|
CURLLIBDIR=""
|
||||||
|
fi
|
||||||
|
if test "X@REQUIRE_LIB_DEPS@" = "Xyes"; then
|
||||||
|
echo ${CURLLIBDIR}-lcurl @LDFLAGS@ @LIBCURL_LIBS@ @LIBS@
|
||||||
|
else
|
||||||
|
echo ${CURLLIBDIR}-lcurl @LDFLAGS@ @LIBS@
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
--static-libs)
|
||||||
|
echo @libdir@/libcurl.@libext@ @LDFLAGS@ @LIBCURL_LIBS@ @LIBS@
|
||||||
|
;;
|
||||||
|
|
||||||
|
--configure)
|
||||||
|
echo @CONFIGURE_OPTIONS@
|
||||||
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo "unknown option: $1"
|
echo "unknown option: $1"
|
||||||
usage
|
usage 1
|
||||||
exit 1
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
shift
|
shift
|
||||||
|
|||||||
21
curl-mode.el
21
curl-mode.el
@@ -1,21 +0,0 @@
|
|||||||
;;;; Emacs Lisp help for writing curl code. ;;;;
|
|
||||||
|
|
||||||
;;; In C files, put something like this to load this file automatically:
|
|
||||||
;;
|
|
||||||
;; /* -----------------------------------------------------------------
|
|
||||||
;; * local variables:
|
|
||||||
;; * eval: (load-file "../curl-mode.el")
|
|
||||||
;; * end:
|
|
||||||
;; */
|
|
||||||
;;
|
|
||||||
;; (note: make sure to get the path right in the argument to load-file).
|
|
||||||
|
|
||||||
|
|
||||||
;;; The curl hacker's C conventions
|
|
||||||
|
|
||||||
;;; we use intent-level 2
|
|
||||||
(setq c-basic-offset 2)
|
|
||||||
;;; never ever use tabs to indent!
|
|
||||||
(setq indent-tabs-mode nil)
|
|
||||||
;;; I like this, stolen from Subversion! ;-)
|
|
||||||
(setq angry-mob-with-torches-and-pitchforks t)
|
|
||||||
50
curl-style.el
Normal file
50
curl-style.el
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
;;;; Emacs Lisp help for writing curl code. ;;;;
|
||||||
|
|
||||||
|
;;; The curl hacker's C conventions.
|
||||||
|
;;; 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)
|
||||||
|
(c-comment-only-line-offset . 0)
|
||||||
|
(c-hanging-braces-alist . ((substatement-open before after)))
|
||||||
|
(c-offsets-alist . ((topmost-intro . 0)
|
||||||
|
(topmost-intro-cont . 0)
|
||||||
|
(substatement . +)
|
||||||
|
(substatement-open . 0)
|
||||||
|
(statement-case-intro . +)
|
||||||
|
(statement-case-open . 0)
|
||||||
|
(case-label . 0)
|
||||||
|
))
|
||||||
|
)
|
||||||
|
"Curl C Programming Style")
|
||||||
|
|
||||||
|
(defun curl-code-cleanup ()
|
||||||
|
"no docs"
|
||||||
|
(interactive)
|
||||||
|
(untabify (point-min) (point-max))
|
||||||
|
(delete-trailing-whitespace)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Customizations for all of c-mode, c++-mode, and objc-mode
|
||||||
|
(defun curl-c-mode-common-hook ()
|
||||||
|
"Curl C mode hook"
|
||||||
|
;; add curl style and set it for the current buffer
|
||||||
|
(c-add-style "curl" curl-c-style t)
|
||||||
|
(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" "curl_socklen_t" "fd_set" "time_t" "curl_off_t" "curl_socket_t" "in_addr_t" "CURLSHcode" "CURLMcode" "Curl_addrinfo"))
|
||||||
|
)
|
||||||
|
;; keybindings for C, C++, and Objective-C. We can put these in
|
||||||
|
;; c-mode-base-map because of inheritance ...
|
||||||
|
(define-key c-mode-base-map "\M-q" 'c-fill-paragraph)
|
||||||
|
(define-key c-mode-base-map "\M-m" 'curl-code-cleanup)
|
||||||
|
(setq c-recognize-knr-p nil)
|
||||||
|
;;; (add-hook 'write-file-hooks 'delete-trailing-whitespace t)
|
||||||
|
(setq show-trailing-whitespace t)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Set this is in your .emacs if you want to use the c-mode-hook as
|
||||||
|
;; defined here right out of the box.
|
||||||
|
; (add-hook 'c-mode-common-hook 'curl-c-mode-common-hook)
|
||||||
2
docs/.gitignore
vendored
Normal file
2
docs/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*.html
|
||||||
|
*.pdf
|
||||||
228
docs/BINDINGS
Normal file
228
docs/BINDINGS
Normal file
@@ -0,0 +1,228 @@
|
|||||||
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
libcurl bindings
|
||||||
|
|
||||||
|
Creative people have written bindings or interfaces for various environments
|
||||||
|
and programming languages. Using one of these allows you to take advantage of
|
||||||
|
curl powers from within your favourite language or system.
|
||||||
|
|
||||||
|
This is a list of all known interfaces as of this writing.
|
||||||
|
|
||||||
|
The bindings listed below are not part of the curl/libcurl distribution
|
||||||
|
archives, but must be downloaded and installed separately.
|
||||||
|
|
||||||
|
Ada95
|
||||||
|
|
||||||
|
Writtten by Andreas Almroth
|
||||||
|
http://www.almroth.com/adacurl/index.html
|
||||||
|
|
||||||
|
Basic
|
||||||
|
|
||||||
|
ScriptBasic bindings to libcurl. Writtten by Peter Verhas
|
||||||
|
http://scriptbasic.com/
|
||||||
|
|
||||||
|
C
|
||||||
|
libcurl is a C library in itself!
|
||||||
|
http://curl.haxx.se/libcurl/
|
||||||
|
|
||||||
|
C++
|
||||||
|
|
||||||
|
Written by Jean-Philippe Barrette-LaPierre
|
||||||
|
http://curlpp.org/
|
||||||
|
|
||||||
|
Ch
|
||||||
|
|
||||||
|
Written by Stephen Nestinger and Jonathan Rogado
|
||||||
|
http://chcurl.sourceforge.net/
|
||||||
|
|
||||||
|
Cocoa
|
||||||
|
|
||||||
|
Written by Dan Wood
|
||||||
|
http://curlhandle.sourceforge.net/
|
||||||
|
|
||||||
|
D
|
||||||
|
|
||||||
|
Written by Kenneth Bogert
|
||||||
|
http://curl.haxx.se/libcurl/d/
|
||||||
|
|
||||||
|
Dylan
|
||||||
|
|
||||||
|
Written by Chris Double
|
||||||
|
http://dylanlibs.sourceforge.net/
|
||||||
|
|
||||||
|
Eiffel
|
||||||
|
Written by Eiffel Software
|
||||||
|
http://curl.haxx.se/libcurl/eiffel/
|
||||||
|
|
||||||
|
Euphoria
|
||||||
|
|
||||||
|
Written by Ray Smith
|
||||||
|
http://rays-web.com/eulibcurl.htm
|
||||||
|
|
||||||
|
Falcon
|
||||||
|
|
||||||
|
http://www.falconpl.org/index.ftd?page_id=prjs&prj_id=curl
|
||||||
|
|
||||||
|
Ferite
|
||||||
|
|
||||||
|
Written by Paul Querna
|
||||||
|
http://www.ferite.org/
|
||||||
|
|
||||||
|
Gambas
|
||||||
|
|
||||||
|
http://gambas.sourceforge.net
|
||||||
|
|
||||||
|
glib/GTK+
|
||||||
|
|
||||||
|
Written by Richard Atterer
|
||||||
|
http://atterer.net/glibcurl/
|
||||||
|
|
||||||
|
Haskell
|
||||||
|
|
||||||
|
Written by Galois, Inc
|
||||||
|
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl
|
||||||
|
|
||||||
|
Java
|
||||||
|
|
||||||
|
Maintained by [blank]
|
||||||
|
http://curl.haxx.se/libcurl/java/
|
||||||
|
|
||||||
|
Lisp
|
||||||
|
|
||||||
|
Written by Liam Healy
|
||||||
|
http://common-lisp.net/project/cl-curl/
|
||||||
|
|
||||||
|
Lua
|
||||||
|
|
||||||
|
luacurl by Alexander Marinov
|
||||||
|
http://luacurl.luaforge.net/
|
||||||
|
|
||||||
|
Lua-cURL by J<>rgen H<>tzel
|
||||||
|
http://luaforge.net/projects/lua-curl/
|
||||||
|
|
||||||
|
Mono
|
||||||
|
|
||||||
|
Written by Jeffrey Phillips
|
||||||
|
http://forge.novell.com/modules/xfmod/project/?libcurl-mono
|
||||||
|
|
||||||
|
.NET
|
||||||
|
|
||||||
|
libcurl-net by Jeffrey Phillips
|
||||||
|
http://sourceforge.net/projects/libcurl-net/
|
||||||
|
|
||||||
|
Object-Pascal
|
||||||
|
|
||||||
|
Free Pascal, Delphi and Kylix binding written by Christophe Espern.
|
||||||
|
http://www.tekool.com/opcurl
|
||||||
|
|
||||||
|
O'Caml
|
||||||
|
|
||||||
|
Written by Lars Nilsson
|
||||||
|
http://sourceforge.net/projects/ocurl/
|
||||||
|
|
||||||
|
Pascal
|
||||||
|
|
||||||
|
Free Pascal, Delphi and Kylix binding written by Jeffrey Pohlmeyer.
|
||||||
|
http://houston.quik.com/jkp/curlpas/
|
||||||
|
|
||||||
|
Perl
|
||||||
|
|
||||||
|
Maintained by Cris Bailiff
|
||||||
|
http://curl.haxx.se/libcurl/perl/
|
||||||
|
|
||||||
|
PHP
|
||||||
|
|
||||||
|
Written by Sterling Hughes
|
||||||
|
http://curl.haxx.se/libcurl/php/
|
||||||
|
|
||||||
|
PostgreSQL
|
||||||
|
|
||||||
|
Written by Gian Paolo Ciceri
|
||||||
|
http://gborg.postgresql.org/project/pgcurl/projdisplay.php
|
||||||
|
|
||||||
|
Python
|
||||||
|
|
||||||
|
PycURL by Kjetil Jacobsen
|
||||||
|
http://pycurl.sourceforge.net/
|
||||||
|
|
||||||
|
R
|
||||||
|
|
||||||
|
RCurl by Duncan Temple Lang
|
||||||
|
http://www.omegahat.org/RCurl/
|
||||||
|
|
||||||
|
Rexx
|
||||||
|
|
||||||
|
Written Mark Hessling
|
||||||
|
http://rexxcurl.sourceforge.net/
|
||||||
|
|
||||||
|
RPG
|
||||||
|
|
||||||
|
Support for ILE/RPG on OS/400 is included in source distribution
|
||||||
|
http://curl.haxx.se/libcurl/
|
||||||
|
See packages/OS400/README.OS400 and packages/OS400/curl.inc.in
|
||||||
|
|
||||||
|
Ruby
|
||||||
|
|
||||||
|
curb - written by Ross Bamford
|
||||||
|
http://curb.rubyforge.org/
|
||||||
|
|
||||||
|
ruby-curl-multi - written by Kristjan Petursson and Keith Rarick
|
||||||
|
http://curl-multi.rubyforge.org/
|
||||||
|
|
||||||
|
Scheme
|
||||||
|
|
||||||
|
Bigloo binding by Kirill Lisovsky
|
||||||
|
http://curl.haxx.se/libcurl/scheme/
|
||||||
|
|
||||||
|
S-Lang
|
||||||
|
|
||||||
|
S-Lang binding by John E Davis
|
||||||
|
http://www.jedsoft.org/slang/modules/curl.html
|
||||||
|
|
||||||
|
Smalltalk
|
||||||
|
|
||||||
|
Smalltalk binding by Danil Osipchuk
|
||||||
|
http://www.squeaksource.com/CurlPlugin/
|
||||||
|
|
||||||
|
SP-Forth
|
||||||
|
|
||||||
|
SP-Forth binding by ygrek
|
||||||
|
http://www.forth.org.ru/~ac/lib/lin/curl/
|
||||||
|
|
||||||
|
SPL
|
||||||
|
|
||||||
|
SPL binding by Clifford Wolf
|
||||||
|
http://www.clifford.at/spl/
|
||||||
|
|
||||||
|
Tcl
|
||||||
|
|
||||||
|
Tclcurl by Andr<64>s Garc<72>a
|
||||||
|
http://personal1.iddeo.es/andresgarci/tclcurl/english/docs.html
|
||||||
|
|
||||||
|
Visual Basic
|
||||||
|
|
||||||
|
libcurl-vb by Jeffrey Phillips
|
||||||
|
http://sourceforge.net/projects/libcurl-vb/
|
||||||
|
|
||||||
|
Visual Foxpro
|
||||||
|
|
||||||
|
by Carlos Alloatti
|
||||||
|
http://www.ctl32.com.ar/libcurl.asp
|
||||||
|
|
||||||
|
Q
|
||||||
|
The libcurl module is part of the default install
|
||||||
|
http://q-lang.sourceforge.net/
|
||||||
|
|
||||||
|
wxWidgets
|
||||||
|
|
||||||
|
Written by Casey O'Donnell
|
||||||
|
http://wxcode.sourceforge.net/components/wxcurl/
|
||||||
|
|
||||||
|
XBLite
|
||||||
|
|
||||||
|
Written by David Szafranski
|
||||||
|
http://perso.wanadoo.fr/xblite/libraries.html
|
||||||
66
docs/BUGS
66
docs/BUGS
@@ -1,44 +1,62 @@
|
|||||||
$Id$
|
_ _ ____ _
|
||||||
_ _ ____ _
|
___| | | | _ \| |
|
||||||
___| | | | _ \| |
|
/ __| | | | |_) | |
|
||||||
/ __| | | | |_) | |
|
| (__| |_| | _ <| |___
|
||||||
| (__| |_| | _ <| |___
|
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
BUGS
|
BUGS
|
||||||
|
|
||||||
Curl and libcurl have grown substantially since the beginning. At the time
|
Curl and libcurl have grown substantially since the beginning. At the time
|
||||||
of writing (mid March 2001), there are 23000 lines of source code, and by
|
of writing (July 2007), there are about 47000 lines of source code, and by
|
||||||
the time you read this it has probably grown even more.
|
the time you read this it has probably grown even more.
|
||||||
|
|
||||||
Of course there are lots of bugs left. And lots of misfeatures.
|
Of course there are lots of bugs left. And lots of misfeatures.
|
||||||
|
|
||||||
To help us make curl the stable and solid product we want it to be, we need
|
To help us make curl the stable and solid product we want it to be, we need
|
||||||
bug reports and bug fixes. If you can't fix a bug yourself and submit a fix
|
bug reports and bug fixes.
|
||||||
for it, try to report an as detailed report as possible to the curl mailing
|
|
||||||
list to allow one of us to have a go at a solution. You should also post
|
WHERE TO REPORT
|
||||||
your bug/problem at curl's bug tracking system over at
|
|
||||||
|
If you can't fix a bug yourself and submit a fix for it, try to report an as
|
||||||
|
detailed report as possible to a curl mailing list to allow one of us to
|
||||||
|
have a go at a solution. You should also post your bug/problem at curl's bug
|
||||||
|
tracking system over at
|
||||||
|
|
||||||
http://sourceforge.net/bugs/?group_id=976
|
http://sourceforge.net/bugs/?group_id=976
|
||||||
|
|
||||||
When reporting a bug, you should include information that will help us
|
(but please read the sections below first before doing that)
|
||||||
understand what's wrong, what you expected to happen and how to repeat the
|
|
||||||
bad behavior. You therefore need to supply your operating system's name and
|
|
||||||
version number (uname -a under a unix is fine), what version of curl you're
|
|
||||||
using (curl -V is fine), what URL you were working with and anything else
|
|
||||||
you think matters.
|
|
||||||
|
|
||||||
Since curl deals with networks, it often helps us a lot if you include a
|
If you feel you need to ask around first, find a suitable mailing list and
|
||||||
protocol debug dump with your bug report. The output you get by using the -v
|
post there. The lists are available on http://curl.haxx.se/mail/
|
||||||
flag. Usually, you also get more info by using -i so that is likely to be
|
|
||||||
useful when reporting bugs as well.
|
WHAT TO REPORT
|
||||||
|
|
||||||
|
When reporting a bug, you should include all information that will help us
|
||||||
|
understand what's wrong, what you expected to happen and how to repeat the
|
||||||
|
bad behavior. You therefore need to tell us:
|
||||||
|
|
||||||
|
- your operating system's name and version number (uname -a under a unix
|
||||||
|
is fine)
|
||||||
|
- what version of curl you're using (curl -V is fine)
|
||||||
|
- versions of the used libraries that libcurl is built to use
|
||||||
|
- what URL you were working with (if possible), at least which protocol
|
||||||
|
|
||||||
|
and anything and everything else you think matters. Tell us what you
|
||||||
|
expected to happen, tell use what did happen, tell us how you could make it
|
||||||
|
work another way. Dig around, try out, test. Then include all the tiny bits
|
||||||
|
and pieces in your report. You will benefit from this yourself, as it will
|
||||||
|
enable us to help you quicker and more accurately.
|
||||||
|
|
||||||
|
Since curl deals with networks, it often helps us if you include a protocol
|
||||||
|
debug dump with your bug report. The output you get by using the -v or
|
||||||
|
--trace options.
|
||||||
|
|
||||||
If curl crashed, causing a core dump (in unix), there is hardly any use to
|
If curl crashed, causing a core dump (in unix), there is hardly any use to
|
||||||
send that huge file to anyone of us. Unless we have an exact same system
|
send that huge file to anyone of us. Unless we have an exact same system
|
||||||
setup as you, we can't do much with it. What we instead ask of you is to get
|
setup as you, we can't do much with it. Instead we ask you to get a stack
|
||||||
a stack trace and send that (much smaller) output to us instead!
|
trace and send that (much smaller) output to us instead!
|
||||||
|
|
||||||
The address and how to subscribe to the mailing list is detailed in the
|
The address and how to subscribe to the mailing lists are detailed in the
|
||||||
MANUAL file.
|
MANUAL file.
|
||||||
|
|
||||||
HOW TO GET A STACK TRACE
|
HOW TO GET A STACK TRACE
|
||||||
@@ -47,7 +65,7 @@ HOW TO GET A STACK TRACE
|
|||||||
don't 'strip' the final executable. Try to avoid optimizing the code as
|
don't 'strip' the final executable. Try to avoid optimizing the code as
|
||||||
well, remove -O, -O2 etc from the compiler options.
|
well, remove -O, -O2 etc from the compiler options.
|
||||||
|
|
||||||
Run the program until it dumps core.
|
Run the program until it cores.
|
||||||
|
|
||||||
Run your debugger on the core file, like '<debugger> curl core'. <debugger>
|
Run your debugger on the core file, like '<debugger> curl core'. <debugger>
|
||||||
should be replaced with the name of your debugger, in most cases that will
|
should be replaced with the name of your debugger, in most cases that will
|
||||||
|
|||||||
254
docs/CONTRIBUTE
254
docs/CONTRIBUTE
@@ -1,66 +1,129 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
To Think About When Contributing Source Code
|
When Contributing Source Code
|
||||||
|
|
||||||
This document is intended to offer some guidelines that can be useful to keep
|
This document is intended to offer guidelines that can be useful to keep in
|
||||||
in mind when you decide to write a contribution to the project. This concerns
|
mind when you decide to contribute to the project. This concerns new features
|
||||||
new features as well as corrections to existing flaws or bugs.
|
as well as corrections to existing flaws or bugs.
|
||||||
|
|
||||||
Join the Community
|
1. Learning cURL
|
||||||
|
1.1 Join the Community
|
||||||
|
1.2 License
|
||||||
|
1.3 What To Read
|
||||||
|
|
||||||
|
2. cURL Coding Standards
|
||||||
|
2.1 Naming
|
||||||
|
2.2 Indenting
|
||||||
|
2.3 Commenting
|
||||||
|
2.4 Line Lengths
|
||||||
|
2.5 General Style
|
||||||
|
2.6 Non-clobbering All Over
|
||||||
|
2.7 Platform Dependent Code
|
||||||
|
2.8 Write Separate Patches
|
||||||
|
2.9 Patch Against Recent Sources
|
||||||
|
2.10 Document
|
||||||
|
2.11 Test Cases
|
||||||
|
|
||||||
|
3. Pushing Out Your Changes
|
||||||
|
3.1 Write Access to git Repository
|
||||||
|
3.2 How To Make a Patch with git
|
||||||
|
3.3 How To Make a Patch without git
|
||||||
|
3.4 How to get your changes into the main sources
|
||||||
|
3.5 Write good commit messages
|
||||||
|
|
||||||
|
==============================================================================
|
||||||
|
|
||||||
|
1. Learning cURL
|
||||||
|
|
||||||
|
1.1 Join the Community
|
||||||
|
|
||||||
Skip over to http://curl.haxx.se/mail/ and join the appropriate mailing
|
Skip over to http://curl.haxx.se/mail/ and join the appropriate mailing
|
||||||
list(s). Read up on details before you post questions. Read this file before
|
list(s). Read up on details before you post questions. Read this file before
|
||||||
you start sending patches!
|
you start sending patches! We prefer patches and discussions being held on
|
||||||
|
the mailing list(s), not sent to individuals.
|
||||||
|
|
||||||
The License Issue
|
Before posting to one of the curl mailing lists, please read up on the mailing
|
||||||
|
list etiquette: http://curl.haxx.se/mail/etiquette.html
|
||||||
|
|
||||||
|
We also hang out on IRC in #curl on irc.freenode.net
|
||||||
|
|
||||||
|
1.2. License
|
||||||
|
|
||||||
When contributing with code, you agree to put your changes and new code under
|
When contributing with code, you agree to put your changes and new code under
|
||||||
the same license curl and libcurl is already using unless stated otherwise.
|
the same license curl and libcurl is already using unless stated and agreed
|
||||||
|
otherwise.
|
||||||
|
|
||||||
If you add a larger piece of code, you can opt to make that file or set of
|
If you add a larger piece of code, you can opt to make that file or set of
|
||||||
files to use a different license as long as they don't enforce any changes to
|
files to use a different license as long as they don't enforce any changes to
|
||||||
the rest of the package and they make sense. Such "separate parts" can not be
|
the rest of the package and they make sense. Such "separate parts" can not be
|
||||||
GPL (as we don't want the GPL virus to attack users of libcurl) but they must
|
GPL licensed (as we don't want copyleft to affect users of libcurl) but they
|
||||||
use "GPL compatible" licenses.
|
must use "GPL compatible" licenses (as we want to allow users to use libcurl
|
||||||
|
properly in GPL licensed environments).
|
||||||
|
|
||||||
What To Read
|
When changing existing source code, you do not alter the copyright of the
|
||||||
|
original file(s). The copyright will still be owned by the original
|
||||||
|
creator(s) or those who have been assigned copyright by the original
|
||||||
|
author(s).
|
||||||
|
|
||||||
Source code, the man pages, the INTERALS document, the TODO, the most recent
|
By submitting a patch to the curl project, you are assumed to have the right
|
||||||
CHANGES. Just lurking on the libcurl mailing list is gonna give you a lot of
|
to the code and to be allowed by your employer or whatever to hand over that
|
||||||
insights on what's going on right now.
|
patch/code to us. We will credit you for your changes as far as possible, to
|
||||||
|
give credit but also to keep a trace back to who made what changes. Please
|
||||||
|
always provide us with your full real name when contributing!
|
||||||
|
|
||||||
Naming
|
1.3 What To Read
|
||||||
|
|
||||||
|
Source code, the man pages, the INTERNALS document, TODO, KNOWN_BUGS, the
|
||||||
|
most recent CHANGES. Just lurking on the libcurl mailing list is gonna give
|
||||||
|
you a lot of insights on what's going on right now. Asking there is a good
|
||||||
|
idea too.
|
||||||
|
|
||||||
|
2. cURL Coding Standards
|
||||||
|
|
||||||
|
2.1 Naming
|
||||||
|
|
||||||
Try using a non-confusing naming scheme for your new functions and variable
|
Try using a non-confusing naming scheme for your new functions and variable
|
||||||
names. It doesn't necessarily have to mean that you should use the same as in
|
names. It doesn't necessarily have to mean that you should use the same as in
|
||||||
other places of the code, just that the names should be logical,
|
other places of the code, just that the names should be logical,
|
||||||
understandable and be named according to what they're used for. File-local
|
understandable and be named according to what they're used for. File-local
|
||||||
functions should be made static.
|
functions should be made static. We like lower case names.
|
||||||
|
|
||||||
Indenting
|
See the INTERNALS document on how we name non-exported library-global
|
||||||
|
symbols.
|
||||||
|
|
||||||
|
2.2 Indenting
|
||||||
|
|
||||||
Please try using the same indenting levels and bracing method as all the
|
Please try using the same indenting levels and bracing method as all the
|
||||||
other code already does. It makes the source code a lot easier to follow if
|
other code already does. It makes the source code a lot easier to follow if
|
||||||
all of it is written using the same style. We don't ask you to like it, we
|
all of it is written using the same style. We don't ask you to like it, we
|
||||||
just ask you to follow the tradition! ;-)
|
just ask you to follow the tradition! ;-) This mainly means: 2-level indents,
|
||||||
|
using spaces only (no tabs) and having the opening brace ({) on the same line
|
||||||
|
as the if() or while().
|
||||||
|
|
||||||
Commenting
|
Also note that we use if() and while() with no space before the parenthesis.
|
||||||
|
|
||||||
Comment your source code extensively. Commented code is quality code and
|
2.3 Commenting
|
||||||
enables future modifications much more. Uncommented code much more risk being
|
|
||||||
completely replaced when someone wants to extend things, since other persons'
|
|
||||||
source code can get quite hard to read.
|
|
||||||
|
|
||||||
General Style
|
Comment your source code extensively using C comments (/* comment */), DO NOT
|
||||||
|
use C++ comments (// this style). Commented code is quality code and enables
|
||||||
|
future modifications much more. Uncommented code risk having to be completely
|
||||||
|
replaced when someone wants to extend things, since other persons' source
|
||||||
|
code can get quite hard to read.
|
||||||
|
|
||||||
|
2.4 Line Lengths
|
||||||
|
|
||||||
|
We write source lines shorter than 80 columns.
|
||||||
|
|
||||||
|
2.5 General Style
|
||||||
|
|
||||||
Keep your functions small. If they're small you avoid a lot of mistakes and
|
Keep your functions small. If they're small you avoid a lot of mistakes and
|
||||||
you don't accidentally mix up variables.
|
you don't accidentally mix up variables etc.
|
||||||
|
|
||||||
Non-clobbering All Over
|
2.6 Non-clobbering All Over
|
||||||
|
|
||||||
When you write new functionality or fix bugs, it is important that you don't
|
When you write new functionality or fix bugs, it is important that you don't
|
||||||
fiddle all over the source files and functions. Remember that it is likely
|
fiddle all over the source files and functions. Remember that it is likely
|
||||||
@@ -69,7 +132,14 @@ Non-clobbering All Over
|
|||||||
functionality, try writing it in a new source file. If you fix bugs, try to
|
functionality, try writing it in a new source file. If you fix bugs, try to
|
||||||
fix one bug at a time and send them as separate patches.
|
fix one bug at a time and send them as separate patches.
|
||||||
|
|
||||||
Separate Patches Doing Different Things
|
2.7 Platform Dependent Code
|
||||||
|
|
||||||
|
Use #ifdef HAVE_FEATURE to do conditional code. We avoid checking for
|
||||||
|
particular operating systems or hardware in the #ifdef lines. The
|
||||||
|
HAVE_FEATURE shall be generated by the configure script for unix-like systems
|
||||||
|
and they are hard-coded in the config-[system].h files for the others.
|
||||||
|
|
||||||
|
2.8 Write Separate Patches
|
||||||
|
|
||||||
It is annoying when you get a huge patch from someone that is said to fix 511
|
It is annoying when you get a huge patch from someone that is said to fix 511
|
||||||
odd problems, but discussions and opinions don't agree with 510 of them - or
|
odd problems, but discussions and opinions don't agree with 510 of them - or
|
||||||
@@ -80,34 +150,130 @@ Separate Patches Doing Different Things
|
|||||||
description exactly what they correct so that all patches can be selectively
|
description exactly what they correct so that all patches can be selectively
|
||||||
applied by the maintainer or other interested parties.
|
applied by the maintainer or other interested parties.
|
||||||
|
|
||||||
Patch Against Recent Sources
|
2.9 Patch Against Recent Sources
|
||||||
|
|
||||||
Please try to get the latest available sources to make your patches
|
Please try to get the latest available sources to make your patches
|
||||||
against. It makes the life of the developers so much easier. The very best is
|
against. It makes the life of the developers so much easier. The very best is
|
||||||
if you get the most up-to-date sources from the CVS repository, but the
|
if you get the most up-to-date sources from the git repository, but the
|
||||||
latest release archive is quite OK as well!
|
latest release archive is quite OK as well!
|
||||||
|
|
||||||
Document
|
2.10 Document
|
||||||
|
|
||||||
Writing docs is dead boring and one of the big problems with many open source
|
Writing docs is dead boring and one of the big problems with many open source
|
||||||
projects. Someone's gotta do it. It makes it a lot easier if you submit a
|
projects. Someone's gotta do it. It makes it a lot easier if you submit a
|
||||||
small description of your fix or your new features with every contribution so
|
small description of your fix or your new features with every contribution so
|
||||||
that it can be swiftly added to the package documentation.
|
that it can be swiftly added to the package documentation.
|
||||||
|
|
||||||
Write Access to CVS Repository
|
The documentation is always made in man pages (nroff formatted) or plain
|
||||||
|
ASCII files. All HTML files on the web site and in the release archives are
|
||||||
|
generated from the nroff/ASCII versions.
|
||||||
|
|
||||||
If you are a frequent contributor, or have another good reason, you can of
|
2.11 Test Cases
|
||||||
course get write access to the CVS repository and then you'll be able to
|
|
||||||
check-in all your changes straight into the CVS tree instead of sending all
|
|
||||||
changes by mail as patches. Just ask if this is what you'd want. You will be
|
|
||||||
required to have posted a few quality patches first, before you can be
|
|
||||||
granted write access.
|
|
||||||
|
|
||||||
Test Cases
|
|
||||||
|
|
||||||
Since the introduction of the test suite, we can quickly verify that the main
|
Since the introduction of the test suite, we can quickly verify that the main
|
||||||
features are working as they're supposed to. To maintain this situation and
|
features are working as they're supposed to. To maintain this situation and
|
||||||
improve it, all new features and functions that are added need to be tested
|
improve it, all new features and functions that are added need to be tested
|
||||||
in the test suite. Every feature that is added should get at least one valid
|
in the test suite. Every feature that is added should get at least one valid
|
||||||
test case that verifies that it works as documented. If every submitter also
|
test case that verifies that it works as documented. If every submitter also
|
||||||
post a few test cases, it won't end up as a heavy burden on a single person!
|
posts a few test cases, it won't end up as a heavy burden on a single person!
|
||||||
|
|
||||||
|
3. Pushing Out Your Changes
|
||||||
|
|
||||||
|
3.1 Write Access to git Repository
|
||||||
|
|
||||||
|
If you are a frequent contributor, or have another good reason, you can of
|
||||||
|
course get write access to the git repository and then you'll be able to push
|
||||||
|
your changes straight into the git repo instead of sending changes by mail as
|
||||||
|
patches. Just ask if this is what you'd want. You will be required to have
|
||||||
|
posted a few quality patches first, before you can be granted push access.
|
||||||
|
|
||||||
|
3.2 How To Make a Patch with git
|
||||||
|
|
||||||
|
You need to first checkout the respository:
|
||||||
|
|
||||||
|
git clone git://github.com/bagder/curl.git
|
||||||
|
|
||||||
|
You then proceed and edit all the files you like and you commit them to your
|
||||||
|
local repository:
|
||||||
|
|
||||||
|
git commit [file]
|
||||||
|
|
||||||
|
As usual, group your commits so that you commit all changes that at once that
|
||||||
|
constitutes a logical change. See also section "3.5 Write good commit
|
||||||
|
messages".
|
||||||
|
|
||||||
|
Once you have done all your commits and you're happy with what you see, you
|
||||||
|
can make patches out of your changes that are suitable for mailing:
|
||||||
|
|
||||||
|
git format-patch remotes/origin/master
|
||||||
|
|
||||||
|
This creates files in your local directory named NNNN-[name].patch for each
|
||||||
|
commit.
|
||||||
|
|
||||||
|
Now send those patches off to the curl-library list. You can of course opt to
|
||||||
|
do that with the 'get send-email' command.
|
||||||
|
|
||||||
|
3.3 How To Make a Patch without git
|
||||||
|
|
||||||
|
Keep a copy of the unmodified curl sources. Make your changes in a separate
|
||||||
|
source tree. When you think you have something that you want to offer the
|
||||||
|
curl community, use GNU diff to generate patches.
|
||||||
|
|
||||||
|
If you have modified a single file, try something like:
|
||||||
|
|
||||||
|
diff -u unmodified-file.c my-changed-one.c > my-fixes.diff
|
||||||
|
|
||||||
|
If you have modified several files, possibly in different directories, you
|
||||||
|
can use diff recursively:
|
||||||
|
|
||||||
|
diff -ur curl-original-dir curl-modified-sources-dir > my-fixes.diff
|
||||||
|
|
||||||
|
The GNU diff and GNU patch tools exist for virtually all platforms, including
|
||||||
|
all kinds of Unixes and Windows:
|
||||||
|
|
||||||
|
For unix-like operating systems:
|
||||||
|
|
||||||
|
http://www.gnu.org/software/patch/patch.html
|
||||||
|
http://www.gnu.org/directory/diffutils.html
|
||||||
|
|
||||||
|
For Windows:
|
||||||
|
|
||||||
|
http://gnuwin32.sourceforge.net/packages/patch.htm
|
||||||
|
http://gnuwin32.sourceforge.net/packages/diffutils.htm
|
||||||
|
|
||||||
|
3.4 How to get your changes into the main sources
|
||||||
|
|
||||||
|
1. Submit your patch to the curl-library mailing list
|
||||||
|
|
||||||
|
2. Make the patch against as recent sources as possible.
|
||||||
|
|
||||||
|
3. Make sure your patch adheres to the source indent and coding style of
|
||||||
|
already existing source code. Failing to do so just adds more work for me.
|
||||||
|
|
||||||
|
4. Respond to replies on the list about the patch and answer questions and/or
|
||||||
|
fix nits/flaws. This is very important. I will take lack of replies as a
|
||||||
|
sign that you're not very anxious to get your patch accepted and I tend to
|
||||||
|
simply drop such patches from my TODO list.
|
||||||
|
|
||||||
|
5. If you've followed the above mentioned paragraphs and your patch still
|
||||||
|
hasn't been incorporated after some weeks, consider resubmitting it to the
|
||||||
|
list.
|
||||||
|
|
||||||
|
3.5 Write good commit messages
|
||||||
|
|
||||||
|
A short guide to how to do fine commit messages in the curl project.
|
||||||
|
|
||||||
|
---- start ----
|
||||||
|
[area]: [short line describing the main effect]
|
||||||
|
|
||||||
|
[separate the above single line from the rest with an empty line]
|
||||||
|
|
||||||
|
[full description, no wider than 72 columns that describe as much as
|
||||||
|
possible as to why this change is made, and possibly what things
|
||||||
|
it fixes and everything else that is related]
|
||||||
|
---- stop ----
|
||||||
|
|
||||||
|
Don't forget to use commit --author="" if you commit someone else's work,
|
||||||
|
and make sure that you have your own user and email setup correctly in git
|
||||||
|
before you commit
|
||||||
|
|
||||||
|
|||||||
176
docs/DISTRO-DILEMMA
Normal file
176
docs/DISTRO-DILEMMA
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
Date: February 11, 2007
|
||||||
|
Author: Daniel Stenberg <daniel@haxx.se>
|
||||||
|
URL: http://curl.haxx.se/legal/distro-dilemma.html
|
||||||
|
|
||||||
|
Condition
|
||||||
|
|
||||||
|
This document is written to describe the situation as it is right now.
|
||||||
|
libcurl 7.16.1 is currently the latest version available. Things may of
|
||||||
|
course change in the future.
|
||||||
|
|
||||||
|
This document reflects my view and understanding of these things. Please tell
|
||||||
|
me where and how you think I'm wrong, and I'll try to correct my mistakes.
|
||||||
|
|
||||||
|
Background
|
||||||
|
|
||||||
|
The Free Software Foundation has deemed the Original BSD license[1] to be
|
||||||
|
"incompatible"[2] with GPL[3]. I'd rather say it is the other way around, but
|
||||||
|
the point is the same: if you distribute a binary version of a GPL program,
|
||||||
|
it MUST NOT be linked with any Original BSD-licensed parts or libraries.
|
||||||
|
Doing so will violate the GPL license. For a long time, very many GPL
|
||||||
|
licensed programs have avoided this license mess by adding an exception[8] to
|
||||||
|
their license. And many others have just closed their eyes for this problem.
|
||||||
|
|
||||||
|
libcurl is MIT-style[4] licensed - how on earth did this dilemma fall onto
|
||||||
|
our plates?
|
||||||
|
|
||||||
|
libcurl is only a little library. libcurl can be built to use OpenSSL for its
|
||||||
|
SSL/TLS capabilities. OpenSSL is basically Original BSD licensed[5].
|
||||||
|
|
||||||
|
If libcurl built to use OpenSSL is used by a GPL-licensed application and you
|
||||||
|
decide to distribute a binary version of it (Linux distros - for example -
|
||||||
|
tend to), you have a clash. GPL vs Original BSD.
|
||||||
|
|
||||||
|
This dilemma is not libcurl-specific nor is it specific to any particular
|
||||||
|
Linux distro. (This article mentions and refers to Debian several times, but
|
||||||
|
only because Debian seems to be the only Linux distro to have faced this
|
||||||
|
issue yet since no other distro is shipping libcurl built with two SSL
|
||||||
|
libraries.)
|
||||||
|
|
||||||
|
Part of the Operating System
|
||||||
|
|
||||||
|
This would not be a problem if the used lib would be considered part of the
|
||||||
|
underlying operating system, as then the GPL license has an exception
|
||||||
|
clause[6] that allows applications to use such libs without having to be
|
||||||
|
allowed to distribute it or its sources. Possibly some distros will claim
|
||||||
|
that OpenSSL is part of their operating system.
|
||||||
|
|
||||||
|
Debian does however not take this stance and has officially(?) claimed that
|
||||||
|
OpenSSL is not a required part of the Debian operating system
|
||||||
|
|
||||||
|
Some people claim that this paragraph cannot be exploited this way by a Linux
|
||||||
|
distro, but I am not a lawyer and that is a discussion left outside of this
|
||||||
|
document.
|
||||||
|
|
||||||
|
GnuTLS
|
||||||
|
|
||||||
|
Since May 2005 libcurl can get built to use GnuTLS instead of OpenSSL. GnuTLS
|
||||||
|
is an LGPL[7] licensed library that offers a matching set of features as
|
||||||
|
OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl
|
||||||
|
without including any Original BSD licensed code.
|
||||||
|
|
||||||
|
I believe Debian is the first (only?) distro that provides libcurl/GnutTLS
|
||||||
|
packages.
|
||||||
|
|
||||||
|
yassl
|
||||||
|
|
||||||
|
libcurl can get also get built to use yassl for the TLS/SSL layer. yassl is a
|
||||||
|
GPL[3] licensed library.
|
||||||
|
|
||||||
|
|
||||||
|
GnuTLS vs OpenSSL vs yassl
|
||||||
|
|
||||||
|
While these three libraries offer similar features, they are not equal.
|
||||||
|
libcurl does not (yet) offer a standardized stable ABI if you decide to
|
||||||
|
switch from using libcurl-openssl to libcurl-gnutls or vice versa. The GnuTLS
|
||||||
|
and yassl support is very recent in libcurl and it has not been tested nor
|
||||||
|
used very extensively, while the OpenSSL equivalent code has been used and
|
||||||
|
thus matured since 1999.
|
||||||
|
|
||||||
|
GnuTLS
|
||||||
|
- LGPL licensened
|
||||||
|
- supports SRP
|
||||||
|
- lacks SSLv2 support
|
||||||
|
- lacks MD2 support (used by at least some CA certs)
|
||||||
|
- lacks the crypto functions libcurl uses for NTLM
|
||||||
|
|
||||||
|
OpenSSL
|
||||||
|
- Original BSD licensened
|
||||||
|
- lacks SRP
|
||||||
|
- supports SSLv2
|
||||||
|
- older and more widely used
|
||||||
|
- provides crypto functions libcurl uses for NTLM
|
||||||
|
- libcurl can do non-blocking connects with it in 7.15.4 and later
|
||||||
|
|
||||||
|
yassl
|
||||||
|
- GPL licensed
|
||||||
|
- much untested and unproven in the real work by (lib)curl users so we don't
|
||||||
|
know a lot about restrictions or benefits from using this
|
||||||
|
|
||||||
|
The Better License, Original BSD, GPL or LGPL?
|
||||||
|
|
||||||
|
It isn't obvious or without debate to any objective interested party that
|
||||||
|
either of these licenses are the "better" or even the "preferred" one in a
|
||||||
|
generic situation.
|
||||||
|
|
||||||
|
Instead, I think we should accept the fact that the SSL/TLS libraries and
|
||||||
|
their different licenses will fit different applications and their authors
|
||||||
|
differently depending on the applications' licenses and their general usage
|
||||||
|
pattern (considering how GPL and LGPL libraries for example can be burdensome
|
||||||
|
for embedded systems usage).
|
||||||
|
|
||||||
|
In Debian land, there seems to be a common opinion that LGPL is "maximally
|
||||||
|
compatible" with apps while Original BSD is not. Like this:
|
||||||
|
|
||||||
|
http://lists.debian.org/debian-devel/2005/09/msg01417.html
|
||||||
|
|
||||||
|
More SSL Libraries
|
||||||
|
|
||||||
|
In libcurl, there's no stopping us here. There are more Open Source/Free
|
||||||
|
SSL/TLS libraries out there and we would very much like to support them as
|
||||||
|
well, to offer application authors an even wider scope of choice.
|
||||||
|
|
||||||
|
Application Angle of this Problem
|
||||||
|
|
||||||
|
libcurl is built to use one SSL/TLS library. It uses a single fixed name (by
|
||||||
|
default) on the built/created lib file, and applications are built/linked to
|
||||||
|
use that single lib. Replacing one libcurl instance with another one that
|
||||||
|
uses the other SSL/TLS library might break one or more applications (due to
|
||||||
|
ABI differences and/or different feature set). You want your application to
|
||||||
|
use the libcurl it was built for.
|
||||||
|
|
||||||
|
Project cURL Angle of this Problem
|
||||||
|
|
||||||
|
We distribute libcurl and everyone may build libcurl with either library at
|
||||||
|
their choice. This problem is not directly a problem of ours. It merely
|
||||||
|
affects users - GPL application authors only - of our lib as it comes
|
||||||
|
included and delivered on some distros.
|
||||||
|
|
||||||
|
libcurl has different ABI when built with different SSL/TLS libraries due to
|
||||||
|
these reasons:
|
||||||
|
|
||||||
|
1. No one has worked on fixing this. The mutex/lock callbacks should be set
|
||||||
|
with a generic libcurl function that should use the proper underlying
|
||||||
|
functions.
|
||||||
|
|
||||||
|
2. The CURLOPT_SSL_CTX_FUNCTION option is not possible to "emulate" on GnuTLS
|
||||||
|
but simply requires OpenSSL.
|
||||||
|
|
||||||
|
3. There might be some other subtle differences just because nobody has yet
|
||||||
|
tried to make a fixed ABI like this.
|
||||||
|
|
||||||
|
Distro Angle of this Problem
|
||||||
|
|
||||||
|
To my knowledge there is only one distro that ships libcurl built with either
|
||||||
|
OpenSSL or GnuTLS.
|
||||||
|
|
||||||
|
Debian Linux is now (since mid September 2005) providing two different
|
||||||
|
libcurl packages, one for libcurl built with OpenSSL and one built with
|
||||||
|
GnuTLS. They use different .so names and can this both be installed in a
|
||||||
|
single system simultaneously. This has been said to be a transitional system
|
||||||
|
not desired to keep in the long run.
|
||||||
|
|
||||||
|
Footnotes
|
||||||
|
|
||||||
|
[1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6
|
||||||
|
[2] = http://www.fsf.org/licensing/essays/bsd.html
|
||||||
|
[3] = http://www.fsf.org/licensing/licenses/gpl.html
|
||||||
|
[4] = http://curl.haxx.se/docs/copyright.html
|
||||||
|
[5] = http://www.openssl.org/source/license.html
|
||||||
|
[6] = http://www.fsf.org/licensing/licenses/gpl.html end of section 3
|
||||||
|
[7] = http://www.fsf.org/licensing/licenses/lgpl.html
|
||||||
|
[8] = http://en.wikipedia.org/wiki/OpenSSL_exception
|
||||||
|
|
||||||
|
Feedback/Updates provided by
|
||||||
|
|
||||||
|
Eric Cooper
|
||||||
@@ -1,43 +1,57 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
FEATURES
|
FEATURES
|
||||||
|
|
||||||
Misc
|
curl tool
|
||||||
- full URL syntax
|
- config file support
|
||||||
|
- multiple URLs in a single command line
|
||||||
|
- range "globbing" support: [0-13], {one,two,three}
|
||||||
|
- multiple file upload on a single command line
|
||||||
|
- custom maximum transfer rate
|
||||||
|
- redirectable stderr
|
||||||
|
|
||||||
|
libcurl supports
|
||||||
|
- full URL syntax with no length limit
|
||||||
- custom maximum download time
|
- custom maximum download time
|
||||||
- custom least download speed acceptable
|
- custom least download speed acceptable
|
||||||
- custom output result after completion
|
- custom output result after completion
|
||||||
- multiple URLs
|
|
||||||
- guesses protocol from host name unless specified
|
- guesses protocol from host name unless specified
|
||||||
- uses .netrc
|
- uses .netrc
|
||||||
- progress bar/time specs while downloading
|
- progress bar/time specs while downloading
|
||||||
- "standard" proxy environment variables support
|
- "standard" proxy environment variables support
|
||||||
- config file support
|
- compiles on win32 (reported builds on 40+ operating systems)
|
||||||
- compiles on win32 (reported built on 29 operating systems)
|
- selectable network interface for outgoing traffic
|
||||||
- redirectable stderr
|
- IPv6 support on unix and Windows
|
||||||
- use selected network interface for outgoing traffic
|
|
||||||
- IPv6 support
|
|
||||||
- persistant connections
|
- persistant connections
|
||||||
|
- socks5 support
|
||||||
|
- supports user name + password in proxy environment variables
|
||||||
|
- operations through proxy "tunnel" (using CONNECT)
|
||||||
|
- supports large files (>2GB and >4GB) both upload/download
|
||||||
|
- replacable memory functions (malloc, free, realloc, etc)
|
||||||
|
- asynchronous name resolving (*6)
|
||||||
|
- both a push and a pull style interface
|
||||||
|
|
||||||
HTTP
|
HTTP
|
||||||
- HTTP/1.1 compliant
|
- HTTP/1.1 compliant (optionally uses 1.0)
|
||||||
- GET
|
- GET
|
||||||
- PUT
|
- PUT
|
||||||
- HEAD
|
- HEAD
|
||||||
- POST
|
- POST
|
||||||
- multipart POST
|
- Pipelining
|
||||||
- authentication
|
- multipart formpost (RFC1867-style)
|
||||||
|
- authentication: Basic, Digest, NTLM(*9), GSS-Negotiate/Negotiate(*3) and
|
||||||
|
SPNEGO (*4) to server and proxy
|
||||||
- resume (both GET and PUT)
|
- resume (both GET and PUT)
|
||||||
- follow redirects
|
- follow redirects
|
||||||
- maximum amount of redirects to follow
|
- maximum amount of redirects to follow
|
||||||
- custom HTTP request
|
- custom HTTP request
|
||||||
- cookie get/send fully parsed
|
- cookie get/send fully parsed
|
||||||
- understands the netscape cookie file format
|
- reads/writes the netscape cookie file format
|
||||||
- custom headers (that can replace/remove internally generated headers)
|
- custom headers (replace/remove internally generated headers)
|
||||||
- custom user-agent string
|
- custom user-agent string
|
||||||
- custom referer string
|
- custom referer string
|
||||||
- range
|
- range
|
||||||
@@ -45,17 +59,21 @@ HTTP
|
|||||||
- time conditions
|
- time conditions
|
||||||
- via http-proxy
|
- via http-proxy
|
||||||
- retrieve file modification date
|
- retrieve file modification date
|
||||||
|
- Content-Encoding support for deflate and gzip
|
||||||
|
- "Transfer-Encoding: chunked" support for "uploads"
|
||||||
|
|
||||||
HTTPS (*1)
|
HTTPS (*1)
|
||||||
- (all the HTTP features)
|
- (all the HTTP features)
|
||||||
- using certificates
|
- using client certificates
|
||||||
- verify server certificate
|
- verify server certificate
|
||||||
- via http-proxy
|
- via http-proxy
|
||||||
|
- select desired encryption
|
||||||
|
- force usage of a specific SSL version (SSLv2(*7), SSLv3 or TLSv1)
|
||||||
|
|
||||||
FTP
|
FTP
|
||||||
- download
|
- download
|
||||||
- authentication
|
- authentication
|
||||||
- kerberos security
|
- kerberos4 (*5), kerberos5 (*3)
|
||||||
- active/passive using PORT, EPRT, PASV or EPSV
|
- active/passive using PORT, EPRT, PASV or EPSV
|
||||||
- single file size information (compare to HTTP HEAD)
|
- single file size information (compare to HTTP HEAD)
|
||||||
- 'type=' URL support
|
- 'type=' URL support
|
||||||
@@ -71,6 +89,22 @@ FTP
|
|||||||
- via http-proxy
|
- via http-proxy
|
||||||
- all operations can be tunneled through a http-proxy
|
- all operations can be tunneled through a http-proxy
|
||||||
- customizable to retrieve file modification date
|
- customizable to retrieve file modification date
|
||||||
|
- no dir depth limit
|
||||||
|
|
||||||
|
FTPS (*1)
|
||||||
|
- implicit ftps:// support that use SSL on both connections
|
||||||
|
- explicit "AUTH TSL" and "AUTH SSL" usage to "upgrade" plain ftp://
|
||||||
|
connection to use SSL for both or one of the connections
|
||||||
|
|
||||||
|
SCP (*8)
|
||||||
|
- both password and public key auth
|
||||||
|
|
||||||
|
SFTP (*8)
|
||||||
|
- both password and public key auth
|
||||||
|
- with custom commands sent before/after the transfer
|
||||||
|
|
||||||
|
TFTP
|
||||||
|
- download / upload
|
||||||
|
|
||||||
TELNET
|
TELNET
|
||||||
- connection negotiation
|
- connection negotiation
|
||||||
@@ -83,12 +117,20 @@ LDAP (*2)
|
|||||||
DICT
|
DICT
|
||||||
- extended DICT URL support
|
- extended DICT URL support
|
||||||
|
|
||||||
GOPHER
|
|
||||||
- GET
|
|
||||||
- via http-proxy
|
|
||||||
|
|
||||||
FILE
|
FILE
|
||||||
- URL support
|
- URL support
|
||||||
|
- "uploads"
|
||||||
|
- resume
|
||||||
|
|
||||||
*1 = requires OpenSSL
|
FOOTNOTES
|
||||||
*2 = requires OpenLDAP
|
=========
|
||||||
|
|
||||||
|
*1 = requires OpenSSL, GnuTLS, NSS, yassl or PolarSSL
|
||||||
|
*2 = requires OpenLDAP
|
||||||
|
*3 = requires a GSSAPI-compliant library, such as Heimdal or similar.
|
||||||
|
*4 = requires FBopenssl
|
||||||
|
*5 = requires a krb4 library, such as the MIT one or similar.
|
||||||
|
*6 = requires c-ares
|
||||||
|
*7 = requires OpenSSL or NSS, as GnuTLS only supports SSLv3 and TLSv1
|
||||||
|
*8 = requires libssh2
|
||||||
|
*9 = requires OpenSSL, GnuTLS, NSS or yassl
|
||||||
|
|||||||
237
docs/HISTORY
Normal file
237
docs/HISTORY
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
How cURL Became Like This
|
||||||
|
|
||||||
|
|
||||||
|
In the second half of 1997, Daniel Stenberg came up with the idea to make
|
||||||
|
currency-exchange calculations available to Internet Relay Chat (IRC)
|
||||||
|
users. All the necessary data are published on the Web; he just needed to
|
||||||
|
automate their retrieval.
|
||||||
|
|
||||||
|
Daniel simply adopted an existing command-line open-source tool, httpget, that
|
||||||
|
Brazilian Rafael Sagula had written. After a few minor adjustments, it did
|
||||||
|
just what he needed.
|
||||||
|
|
||||||
|
Soon, he found currencies on a GOPHER site, so support for that had to go in,
|
||||||
|
and not before long FTP download support was added as well. The name of the
|
||||||
|
project was changed to urlget to better fit what it actually did now, since
|
||||||
|
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 was
|
||||||
|
kept.)
|
||||||
|
|
||||||
|
(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 revealed to us much later.)
|
||||||
|
|
||||||
|
SSL support was added, powered by the SSLeay library.
|
||||||
|
|
||||||
|
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
|
||||||
|
lines of code, we switched over to the MPL license to restrict the effects of
|
||||||
|
"copyleft".
|
||||||
|
|
||||||
|
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. 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.
|
||||||
|
|
||||||
|
January 1999, DICT support added.
|
||||||
|
|
||||||
|
OpenSSL took over where SSLeay was abandoned.
|
||||||
|
|
||||||
|
May 1999, first Debian package.
|
||||||
|
|
||||||
|
August 1999, LDAP:// and FILE:// support added. The curl web site gets 1300
|
||||||
|
visits weekly.
|
||||||
|
|
||||||
|
Released curl 6.0 in September. 15000 lines of code.
|
||||||
|
|
||||||
|
December 28 1999, added the project on Sourceforge and started using its
|
||||||
|
services for managing the project.
|
||||||
|
|
||||||
|
Spring 2000, major internal overhaul to provide a suitable library interface.
|
||||||
|
The first non-beta release was named 7.1 and arrived in August. This offered
|
||||||
|
the easy interface and turned out to be the beginning of actually getting
|
||||||
|
other software and programs to get based on and powered by libcurl. Almost
|
||||||
|
20000 lines of code.
|
||||||
|
|
||||||
|
August 2000, the curl web site gets 4000 visits weekly.
|
||||||
|
|
||||||
|
The PHP guys adopted libcurl already the same month, when the first ever third
|
||||||
|
party libcurl binding showed up. CURL has been a supported module in PHP since
|
||||||
|
the release of PHP 4.0.2. This would soon get followers. More than 16
|
||||||
|
different bindings exist at the time of this writing.
|
||||||
|
|
||||||
|
September 2000, kerberos4 support was added.
|
||||||
|
|
||||||
|
In November 2000 started the work on a test suite for curl. It was later
|
||||||
|
re-written from scratch again. The libcurl major SONAME number was set to 1.
|
||||||
|
|
||||||
|
January 2001, Daniel released curl 7.5.2 under a new license again: MIT (or
|
||||||
|
MPL). The MIT license is extremely liberal and can be used combined with GPL
|
||||||
|
in other projects. This would finally put an end to the "complaints" from
|
||||||
|
people involved in GPLed projects that previously were prohibited from using
|
||||||
|
libcurl while it was released under MPL only. (Due to the fact that MPL is
|
||||||
|
deemed "GPL incompatible".)
|
||||||
|
|
||||||
|
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 libcurl major SONAME number was bumped to 2 due to this overhaul.
|
||||||
|
|
||||||
|
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
|
||||||
|
contacted Daniel to discuss "the name issue". After Daniel's reply, they have
|
||||||
|
never since got in touch again.
|
||||||
|
|
||||||
|
September 2001, libcurl 7.9 introduces cookie jar and curl_formadd(). During
|
||||||
|
the forthcoming 7.9.x releases, we introduced the multi interface slowly and
|
||||||
|
without much whistles.
|
||||||
|
|
||||||
|
June 2002, the curl web site gets 13000 visits weekly. curl and libcurl is
|
||||||
|
35000 lines of code. Reported successful compiles on more than 40 combinations
|
||||||
|
of CPUs and operating systems.
|
||||||
|
|
||||||
|
To estimate number of users of the curl tool or libcurl library is next to
|
||||||
|
impossible. Around 5000 downloaded packages each week from the main site gives
|
||||||
|
a hint, but the packages are mirrored extensively, bundled with numerous OS
|
||||||
|
distributions and otherwise retrieved as part of other software.
|
||||||
|
|
||||||
|
September 2002, with the release of curl 7.10 it is released under the MIT
|
||||||
|
license only.
|
||||||
|
|
||||||
|
January 2003. Started working on the distributed curl tests. The autobuilds.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
June 2004:
|
||||||
|
|
||||||
|
curl 7.12.0 introduced IDN support. 10 official web mirrors.
|
||||||
|
|
||||||
|
This release bumped the major SONAME to 3 due to the removal of the
|
||||||
|
curl_formparse() function
|
||||||
|
|
||||||
|
August 2004:
|
||||||
|
Curl and libcurl 7.12.1
|
||||||
|
|
||||||
|
Public curl release number: 82
|
||||||
|
Releases counted from the very beginning: 109
|
||||||
|
Available command line options: 96
|
||||||
|
Available curl_easy_setopt() options: 120
|
||||||
|
Number of public functions in libcurl: 36
|
||||||
|
Amount of public web site mirrors: 12
|
||||||
|
Number of known libcurl bindings: 26
|
||||||
|
|
||||||
|
April 2005:
|
||||||
|
|
||||||
|
GnuTLS can now optionally be used for the secure layer when curl is built.
|
||||||
|
|
||||||
|
September 2005:
|
||||||
|
|
||||||
|
TFTP support was added.
|
||||||
|
|
||||||
|
More than 100,000 unique visitors of the curl web site. 25 mirrors.
|
||||||
|
|
||||||
|
December 2005:
|
||||||
|
|
||||||
|
security vulnerability: libcurl URL Buffer Overflow
|
||||||
|
|
||||||
|
March 2006:
|
||||||
|
|
||||||
|
security vulnerability: libcurl TFTP Packet Buffer Overflow
|
||||||
|
|
||||||
|
April 2006:
|
||||||
|
|
||||||
|
Added the multi_socket() API
|
||||||
|
|
||||||
|
September 2006:
|
||||||
|
|
||||||
|
The major SONAME number for libcurl was bumped to 4 due to the removal of
|
||||||
|
ftp third party transfer support.
|
||||||
|
|
||||||
|
November 2006:
|
||||||
|
|
||||||
|
Added SCP and SFTP support
|
||||||
|
|
||||||
|
February 2007:
|
||||||
|
|
||||||
|
Added support for the Mozilla NSS library to do the SSL/TLS stuff
|
||||||
|
|
||||||
|
July 2007:
|
||||||
|
|
||||||
|
security vulnerability: libcurl GnuTLS insufficient cert verification
|
||||||
|
|
||||||
|
November 2008:
|
||||||
|
|
||||||
|
Command line options: 128
|
||||||
|
curl_easy_setopt() options: 158
|
||||||
|
Public functions in libcurl: 58
|
||||||
|
Known libcurl bindings: 37
|
||||||
|
Contributors: 683
|
||||||
|
|
||||||
|
145,000 unique visitors. >100 GB downloaded.
|
||||||
|
|
||||||
|
March 2009:
|
||||||
|
|
||||||
|
security vulnerability: libcurl Arbitrary File Access
|
||||||
|
|
||||||
|
August 2009:
|
||||||
|
|
||||||
|
security vulnerability: libcurl embedded zero in cert name
|
||||||
|
|
||||||
|
December 2009:
|
||||||
|
|
||||||
|
Added support for IMAP, POP3 and SMTP
|
||||||
|
|
||||||
|
January 2010:
|
||||||
|
|
||||||
|
Added support for RTSP
|
||||||
|
|
||||||
|
February 2010:
|
||||||
|
|
||||||
|
security vulnerability: libcurl data callback excessive length
|
||||||
|
|
||||||
|
March 2010:
|
||||||
|
|
||||||
|
The project switched over to use git instead of CVS for source code control
|
||||||
|
|
||||||
|
May 2010:
|
||||||
|
|
||||||
|
Added support for RTMP
|
||||||
|
|
||||||
|
Added support for PolarSSL to do the SSL/TLS stuff
|
||||||
|
|
||||||
|
August 2010:
|
||||||
|
|
||||||
|
Public curl releases: 117
|
||||||
|
Command line options: 138
|
||||||
|
curl_easy_setopt() options: 180
|
||||||
|
Public functions in libcurl: 58
|
||||||
|
Known libcurl bindings: 39
|
||||||
|
Contributors: 808
|
||||||
|
|
||||||
901
docs/INSTALL
901
docs/INSTALL
File diff suppressed because it is too large
Load Diff
65
docs/INSTALL.cmake
Executable file
65
docs/INSTALL.cmake
Executable file
@@ -0,0 +1,65 @@
|
|||||||
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
How To Compile with CMake
|
||||||
|
|
||||||
|
Building with CMake
|
||||||
|
==========================
|
||||||
|
This document describes how to compile, build and install curl and libcurl
|
||||||
|
from source code using the CMake build tool. To build with CMake, you will
|
||||||
|
of course have to first install CMake. The minimum required version of
|
||||||
|
CMake is specifed in the file CMakeLists.txt found in the top of the curl
|
||||||
|
source tree. Once the correct version of CMake is installed you can follow
|
||||||
|
the instructions below for the platform you are building on.
|
||||||
|
|
||||||
|
CMake builds can be configured either from the command line, or from one
|
||||||
|
of CMake's GUI's.
|
||||||
|
|
||||||
|
Command Line CMake
|
||||||
|
==================
|
||||||
|
A command line build of Curl is similar to the autotools build of Curl. It
|
||||||
|
consists of the following steps after you have unpacked the source.
|
||||||
|
# 1st create an out of source build tree parallel to the curl source
|
||||||
|
# tree and change into that directory
|
||||||
|
mkdir curl-build
|
||||||
|
cd curl-build
|
||||||
|
# now run CMake from the build tree, giving it the path to the top of
|
||||||
|
# the Curl source tree. CMake will pick a compiler for you. If you
|
||||||
|
# want to specifiy the compile, you can set the CC environment
|
||||||
|
# variable prior to running CMake.
|
||||||
|
cmake ../curl
|
||||||
|
make
|
||||||
|
# currently make test and make install are not implemented
|
||||||
|
#make test
|
||||||
|
#make install
|
||||||
|
|
||||||
|
ccmake
|
||||||
|
=========
|
||||||
|
CMake comes with a curses based interface called ccmake. To run ccmake on
|
||||||
|
a curl use the instructions for the command line cmake, but substitue
|
||||||
|
ccmake ../curl for cmake ../curl. This will bring up a curses interface
|
||||||
|
with instructions on the bottom of the screen. You can press the "c" key
|
||||||
|
to configure the project, and the "g" key to generate the project. After
|
||||||
|
the project is generated, you can run make.
|
||||||
|
|
||||||
|
cmake-gui
|
||||||
|
=========
|
||||||
|
CMake also comes with a Qt based GUI called cmake-gui. To configure with
|
||||||
|
cmake-gui, you run cmake-gui and follow these steps:
|
||||||
|
1. Fill in the "Where is the source code" combo box with the path to
|
||||||
|
the curl source tree.
|
||||||
|
2. Fill in the "Where to build the binaries" combo box with the path
|
||||||
|
to the directory for your build tree, ideally this should not be the
|
||||||
|
same as the source tree, but a parallel diretory called curl-build or
|
||||||
|
something similar.
|
||||||
|
3. Once the source and binary directories are specified, press the
|
||||||
|
"Configure" button.
|
||||||
|
4. Select the native build tool that you want to use.
|
||||||
|
5. At this point you can change any of the options presented in the
|
||||||
|
GUI. Once you have selected all the options you want, click the
|
||||||
|
"Generate" button.
|
||||||
|
6. Run the native build tool that you used CMake to genratate.
|
||||||
|
|
||||||
302
docs/INSTALL.devcpp
Normal file
302
docs/INSTALL.devcpp
Normal file
@@ -0,0 +1,302 @@
|
|||||||
|
DevCpp-Mingw Install & Compilation Sept 2005
|
||||||
|
==================================
|
||||||
|
|
||||||
|
Reference Emails available at curl@haxx.se:
|
||||||
|
|
||||||
|
Libcurl Install and Use Issues
|
||||||
|
Awaiting an Answer for Win 32 Install
|
||||||
|
res = curl_easy_perform(curl); Error
|
||||||
|
Makefile Issues
|
||||||
|
|
||||||
|
|
||||||
|
Having previously done a thorough review of what was available that met my
|
||||||
|
requirements under GPL, I settled for Libcurl as the software of choice for
|
||||||
|
many reasons not the least of which was the support.
|
||||||
|
|
||||||
|
Background
|
||||||
|
----------
|
||||||
|
|
||||||
|
This quest started when I innocently tried to incorporate the libcurl library
|
||||||
|
into my simple source code. I figured that a few easy steps would accomplish
|
||||||
|
this without major headaches. I had no idea that I would be facing an almost
|
||||||
|
insurmountable challenge.
|
||||||
|
|
||||||
|
The main problem lies in two areas. First the bulk of support for libcurl
|
||||||
|
exists for a Unix/linux command line environments. This is of little help when
|
||||||
|
it comes to Windows O/S.
|
||||||
|
|
||||||
|
Secondly the help that does exist for the Windows O/S focused around mingw
|
||||||
|
thru a command line argument environment.
|
||||||
|
|
||||||
|
You may ask "Why is this a problem?"
|
||||||
|
|
||||||
|
I'm using a Windows O/S with DevCpp. For those of you who are unfamiliar with
|
||||||
|
DevCpp, it is a window shell GUI that replaces the command line environment
|
||||||
|
for gcc. A definite improvement that I am unwilling to give up. However using
|
||||||
|
DevCpp presented its own set of issues. Inadvertently I also made some
|
||||||
|
careless errors such as compiling the 7.14 version of Makefile with an older
|
||||||
|
version of source code. Thanks to Dan Fandrich for picking this up.
|
||||||
|
|
||||||
|
I did eventually with the help of Daniel, Phillipe and others manage to
|
||||||
|
implement successfully (the only mingw available version)
|
||||||
|
curl-7.13.0-win32-ssl-devel-mingw32 into the DevCpp environment. Only the
|
||||||
|
dynamic libcurl.dll libcurldll.a libraries worked. The static library which I
|
||||||
|
was interested in did not. Furthermore when I tried to implement one of the
|
||||||
|
examples included with the curl package (get info.c) it caused the executable
|
||||||
|
to crash. Tracing the bug I found it in the code and function res =
|
||||||
|
curl_easy_perform(curl);.
|
||||||
|
|
||||||
|
At this point I had to make a choice as to whether invest my limited
|
||||||
|
time-energy resource to fixing the bug or to compile the new version
|
||||||
|
available. After searching the archives I found a very similar or the same bug
|
||||||
|
reported from version 7.12x on. Daniel did inform me that he thought that this
|
||||||
|
bug had been fixed with the latest version. So I proceeded to compile the
|
||||||
|
latest SSL version where I faced other challenges.
|
||||||
|
|
||||||
|
In order to make this process unremarkable for others using the same
|
||||||
|
environment I decided to document the process so that others will find it
|
||||||
|
routine. It would be a shame if newbies could not implement this excellent
|
||||||
|
package for their use.
|
||||||
|
|
||||||
|
I would like to thank the many others in this forum and in the DevCpp forum
|
||||||
|
for their help. Without your help I may either have given up or it would have
|
||||||
|
taken me many times longer to achieve success.
|
||||||
|
|
||||||
|
The Cookbook Approach
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
This discussion will be confined to a SSL static library compilation and
|
||||||
|
installation. Limited mention and comments will be inserted where appropriate
|
||||||
|
to help with non-SSL, dynamic libraries and executables.
|
||||||
|
|
||||||
|
|
||||||
|
Using Makefile from DevCpp to compile Libcurl libraries
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
--------
|
||||||
|
|
||||||
|
Using the latest version release - curl-7.14.0.tar.gz. Curl source code is
|
||||||
|
platform independent. This simply means that the source code can be compiled
|
||||||
|
for any Operating System (Linux/Unix Windows etc. and variations of thereof).
|
||||||
|
|
||||||
|
The first thing to note is that inside curl-7.14.0 you will find two folders
|
||||||
|
lib and src. Both contain Makefile.m32 (required for win mingw library or exe
|
||||||
|
compilation) files which are different. The main difference between these two
|
||||||
|
folders and the makefiles is that the src folder contents are used to compile
|
||||||
|
an executable file(curl.exe) while the lib folder contents are used to compile
|
||||||
|
a static (libcurl.a) and dynamic (libcurl.dll & libcurldll.a) file that can be
|
||||||
|
used to compile libcurl with your own source code so that one can use and
|
||||||
|
access all libcurl functions.
|
||||||
|
|
||||||
|
Before we start please make sure that DevCpp is installed properly. In
|
||||||
|
particular make sure you have no spaces in the name of any of the directories
|
||||||
|
and subdirectories where DevCpp is installed. Failure to comply with the
|
||||||
|
install instructions may produce erratic behaviour in DevCpp. For further info
|
||||||
|
check the following sites
|
||||||
|
|
||||||
|
http://aditsu.freeunixhost.com/dev-cpp-faq.html
|
||||||
|
http://sourceforge.net/forum/message.php?msg_id=3252213
|
||||||
|
|
||||||
|
As I have mentioned before I will confine this to the SSL Library compilations
|
||||||
|
but the process is very similar for compilation of the executable - curl.exe;
|
||||||
|
just substitute the src folder makefile in its stead.
|
||||||
|
|
||||||
|
First use a text processor Notepad, or your own favourite text processor. To
|
||||||
|
engage your favourite text processor, select Makefile.m32 click once with your
|
||||||
|
mouse on file icon; icon turns blue, press the shift key and right-click on
|
||||||
|
mouse, menu appears select "Open with", select your favourite text processor.
|
||||||
|
|
||||||
|
Next read the contents of Makefile.m32. It includes instructions on its use.
|
||||||
|
|
||||||
|
Method I - DOS Command Line
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Note - The only reason I have included this method is that Method II which is
|
||||||
|
the preferred method for compiling does not allow for the setting of option
|
||||||
|
switches (e.g. SSL = 1 or SSL =0). At least that's what they tell me at the
|
||||||
|
Dev-Cpp forum.
|
||||||
|
|
||||||
|
1 - Make a copy of (D:\Dev-Cpp\bin) bin folder and name it "bin Original"
|
||||||
|
place it in the Dev-Cpp installed directory (D:\Dev-Cpp\ for this example)
|
||||||
|
|
||||||
|
2 - Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
|
||||||
|
version into the bin folder above (D:\Dev-Cpp\bin). The reason being is that
|
||||||
|
the make.exe file resides in this folder. Make.exe will use - Makefile.m32,
|
||||||
|
Makefile.inc, and the source code included in the lib folder to compile the
|
||||||
|
source code. There is a PATH issue with make.exe that remains unresolved at
|
||||||
|
least for me. Unless the entire source code to be compiled is placed entirely
|
||||||
|
within the directory of make.exe an error message will be generated - "file
|
||||||
|
xxxx.yyy not available".
|
||||||
|
|
||||||
|
3- Go to Dev-Cpp\bin and double click on make .exe. You will see a DOS window
|
||||||
|
quickly pop up and close very quickly. Not to worry! Please do not skip this
|
||||||
|
step.
|
||||||
|
|
||||||
|
4- Click on the start button\Programs\MS-DOS Prompt.Once the DOS Window is up
|
||||||
|
Type the disk drive letter (e.g. E: ) engage the enter button. The path should
|
||||||
|
automatically take you to the directory of the make.exe file.
|
||||||
|
|
||||||
|
5- To compile the source code simply type at the DOS prompt make -f
|
||||||
|
Makefile.m32 as per instructions contained in the Makefile.m32 file (use any
|
||||||
|
text processor to read instructions). I don't believe that this makefile
|
||||||
|
allows for the option of non SSL. Ignore any warnings.
|
||||||
|
|
||||||
|
6- Collect and make copies of libcurl.a, libcurl.dll, libcurldll.a and any *.o
|
||||||
|
compilations you might need in another directory outside of the bin directory
|
||||||
|
as you will need this files shortly to set up libcurl for use with
|
||||||
|
Dev-cpp. For most apps *.o is not required. Later on we will show what to do
|
||||||
|
with these files.
|
||||||
|
|
||||||
|
7- You are finished but before closing we need to do cleanup - erase the bin
|
||||||
|
folder and rename the "bin Original" folder created in step 1 to bin.
|
||||||
|
|
||||||
|
Note to compile a curl executable the process is probably similar but instead
|
||||||
|
of using the LIB folder contents use the SRC folder contents and Makefiles in
|
||||||
|
curl-7.14.0.tar.gz. File directories relative placements must be respected for
|
||||||
|
compiling to take place successfully. This may not be possible with the PATH
|
||||||
|
problem that make.exe experiences. If anyone has solved this PATH issue and
|
||||||
|
please make sure it actually works on Win 9x/2000/XP before letting me
|
||||||
|
know. Then please let me or Daniel in on the solution so that it can be
|
||||||
|
included with these instructions. Thanks.
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
Method II - Dev-Cpp GUI
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
1- Copy the entire contents of the LIB folder of curl-7.14.0.tar.gz or zip
|
||||||
|
version into any folder outside of (Dev-Cpp\bin).
|
||||||
|
|
||||||
|
2- Drop the File/New/click on Project.
|
||||||
|
|
||||||
|
3- New Project Dialogue box appears. Double click on the Static Library.
|
||||||
|
|
||||||
|
4- Create Project Dialogue box appears. Select the LIB folder location to
|
||||||
|
place and locate your Project File Name. Placing the Project File Name
|
||||||
|
elsewhere may cause problems (PATH issue problem again).
|
||||||
|
|
||||||
|
5- Drop down the Project/Project Options. Project Options Dialogue box
|
||||||
|
appears.
|
||||||
|
|
||||||
|
6- Select the Makefile tab in the Project Options Dialogue Box. Check Box -
|
||||||
|
Use Custom Makefile. Click on the Folder icon at the extreme right of the
|
||||||
|
Check Box. Select Makefile.m32 in the folder wherever you have placed the
|
||||||
|
contents of the LIB Folder. Press OK and close the Dialogue Box.
|
||||||
|
|
||||||
|
7- Drop the Menu Project/Click on Add to Project. Open File Dialogue Box
|
||||||
|
appears. The Dialogue Box should open in the folder wherever you have placed
|
||||||
|
the contents of the LIB Folder. If not go there.
|
||||||
|
|
||||||
|
8- Select Crtl-A to select all files in the LIB folder. Click on open to add
|
||||||
|
files and close box. Wait till all files are added. This may take 30 seconds
|
||||||
|
or longer.
|
||||||
|
|
||||||
|
9- Drop the Menu Execute/Click on Compile.
|
||||||
|
|
||||||
|
10- That's it.
|
||||||
|
|
||||||
|
|
||||||
|
The following steps must be completed if Curl is to work properly
|
||||||
|
=================================================================
|
||||||
|
|
||||||
|
LIB folder inclusions (*.a placement)
|
||||||
|
-------------------------------------
|
||||||
|
|
||||||
|
1- Refer to Method I - DOS Command Line point # 6 Take libcurl.a, libcurldll.a
|
||||||
|
and install it in the directory C( or whichever drive Dev is installed)
|
||||||
|
:\Dev-Cpp\lib.
|
||||||
|
|
||||||
|
|
||||||
|
Include Folder
|
||||||
|
--------------
|
||||||
|
|
||||||
|
1- Create a new folder by the name of curl (do not change the name curl to
|
||||||
|
some other name as it will cause major issues) in the directory
|
||||||
|
C:\Dev-Cpp\include.
|
||||||
|
|
||||||
|
2- Copy the entire contents of the curl folder of curl-7.14.0.tar.gz or zip
|
||||||
|
version into the newly created curl directory - C:\Dev-Cpp\include\curl.
|
||||||
|
|
||||||
|
Links To Include And Lib Folder
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
1- Drop the Menu - Tools\Compiler Options\Directories\Libraries. Make sure
|
||||||
|
that C( or whichever drive Dev is installed):\DEV-CPP\lib is included.
|
||||||
|
|
||||||
|
2- Next select the Menu - Tools\Compiler Options\Directories\C Includes. Make
|
||||||
|
sure that C:\DEV-CPP\include and C:\Dev-Cpp\include\curl are included.
|
||||||
|
|
||||||
|
3- Next select the Menu - Tools\Compiler Options\Directories\C++
|
||||||
|
Includes. Make sure that C:\DEV-CPP\include and C:\Dev-Cpp\include\curl are
|
||||||
|
included.
|
||||||
|
|
||||||
|
Linker Links
|
||||||
|
------------
|
||||||
|
|
||||||
|
1- Drop the Menu - Tools\Compiler Options\Directories\Compiler.
|
||||||
|
|
||||||
|
2- Make sure that the box "Add these commands to the linker command line" is
|
||||||
|
checked.
|
||||||
|
|
||||||
|
3- Include in the white space immediately below the box referred in 2 -lcurl
|
||||||
|
-lws2_32.
|
||||||
|
|
||||||
|
SSL Files
|
||||||
|
---------
|
||||||
|
|
||||||
|
1- Get the latest openSSL (as of time of this writing)
|
||||||
|
openssl-0.9.7e-win32-bin.zip for the minimalist package of the openssl-0.9.7e
|
||||||
|
binaries ported to MS Windows 95/98/NT/XP using the MingW32/GCC-3.1
|
||||||
|
development environment. The file may be downloaded at
|
||||||
|
http://curl.haxx.se/download/.
|
||||||
|
|
||||||
|
2- Open the above zip file. You will find two files - SDL.dll,
|
||||||
|
SDL_mixer.dll. Install them in the directory C:\WINDOWS\SYSTEM32 for Win 9x
|
||||||
|
users and c:\winnt\system32 for NT-family users.
|
||||||
|
|
||||||
|
Multithreading Files
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
To be completed
|
||||||
|
|
||||||
|
#define
|
||||||
|
-------
|
||||||
|
|
||||||
|
1- Make sure that your program includes the following - #define CURL_STATICLIB
|
||||||
|
must be declared FIRST before any other define functions may be
|
||||||
|
added. Otherwise you may experience link errors.
|
||||||
|
|
||||||
|
2- Don't forget to include #include "curl/curl.h".
|
||||||
|
|
||||||
|
e.g.
|
||||||
|
#define CURL_STATICLIB
|
||||||
|
#include <windows.h>
|
||||||
|
#include "curl/curl.h"
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <vector>
|
||||||
|
etc...
|
||||||
|
|
||||||
|
|
||||||
|
Static or Dynamic Library
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The above steps apply for the use by a static library. Should you choose to
|
||||||
|
use a dynamic library you will be required to perform these additional steps.
|
||||||
|
|
||||||
|
1- Refer to Method I - DOS Command Line point # 6. Install libcurl.dll in the
|
||||||
|
directory C:\WINDOWS\SYSTEM32 for Win 9x users and c:\winnt\system32 for
|
||||||
|
NT-family users.
|
||||||
|
|
||||||
|
2- Refer to Linker Links point 3 - Replace -lcurl with -lcurldll.
|
||||||
|
|
||||||
|
Voila you're done.
|
||||||
|
|
||||||
|
The non-SSL static Library build may not be possible to use at least as of the
|
||||||
|
time of this writing - v7.14. Check reference emails - Phillipe and I found it
|
||||||
|
impossible to fully compile as certain files were missing for linking. No big
|
||||||
|
loss as SSL is a major plus.
|
||||||
|
|
||||||
|
Hope this Helps
|
||||||
|
|
||||||
|
Tom
|
||||||
187
docs/INTERNALS
187
docs/INTERNALS
@@ -1,8 +1,7 @@
|
|||||||
Updated for curl 7.9.1 on November 2, 2001
|
_ _ ____ _
|
||||||
_ _ ____ _
|
___| | | | _ \| |
|
||||||
___| | | | _ \| |
|
/ __| | | | |_) | |
|
||||||
/ __| | | | |_) | |
|
| (__| |_| | _ <| |___
|
||||||
| (__| |_| | _ <| |___
|
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
INTERNALS
|
INTERNALS
|
||||||
@@ -13,9 +12,9 @@ INTERNALS
|
|||||||
|
|
||||||
The largest amount of code and complexity is in the library part.
|
The largest amount of code and complexity is in the library part.
|
||||||
|
|
||||||
CVS
|
GIT
|
||||||
===
|
===
|
||||||
All changes to the sources are committed to the CVS repository as soon as
|
All changes to the sources are committed to the git repository as soon as
|
||||||
they're somewhat verified to work. Changes shall be commited as independently
|
they're somewhat verified to work. Changes shall be commited as independently
|
||||||
as possible so that individual changes can be easier spotted and tracked
|
as possible so that individual changes can be easier spotted and tracked
|
||||||
afterwards.
|
afterwards.
|
||||||
@@ -23,6 +22,56 @@ CVS
|
|||||||
Tagging shall be used extensively, and by the time we release new archives we
|
Tagging shall be used extensively, and by the time we release new archives we
|
||||||
should tag the sources with a name similar to the released version number.
|
should tag the sources with a name similar to the released version number.
|
||||||
|
|
||||||
|
Portability
|
||||||
|
===========
|
||||||
|
|
||||||
|
We write curl and libcurl to compile with C89 compilers. On 32bit and up
|
||||||
|
machines. Most of libcurl assumes more or less POSIX compliance but that's
|
||||||
|
not a requirement.
|
||||||
|
|
||||||
|
We write libcurl to build and work with lots of third party tools, and we
|
||||||
|
want it to remain functional and buildable with these and later versions
|
||||||
|
(older versions may still work but is not what we work hard to maintain):
|
||||||
|
|
||||||
|
OpenSSL 0.9.6
|
||||||
|
GnuTLS 1.2
|
||||||
|
zlib 1.1.4
|
||||||
|
libssh2 0.16
|
||||||
|
c-ares 1.5.0
|
||||||
|
libidn 0.4.1
|
||||||
|
*yassl 1.4.0 (http://curl.haxx.se/mail/lib-2008-02/0093.html)
|
||||||
|
openldap 2.0
|
||||||
|
MIT krb5 lib 1.2.4
|
||||||
|
qsossl V5R2M0
|
||||||
|
NSS 3.11.x
|
||||||
|
Heimdal ?
|
||||||
|
|
||||||
|
* = only partly functional, but that's due to bugs in the third party lib, not
|
||||||
|
because of libcurl code
|
||||||
|
|
||||||
|
On systems where configure runs, we aim at working on them all - if they have
|
||||||
|
a suitable C compiler. On systems that don't run configure, we strive to keep
|
||||||
|
curl running fine on:
|
||||||
|
|
||||||
|
Windows 98
|
||||||
|
AS/400 V5R2M0
|
||||||
|
Symbian 9.1
|
||||||
|
Windows CE ?
|
||||||
|
TPF ?
|
||||||
|
|
||||||
|
When writing code (mostly for generating stuff included in release tarballs)
|
||||||
|
we use a few "build tools" and we make sure that we remain functional with
|
||||||
|
these versions:
|
||||||
|
|
||||||
|
GNU Libtool 1.4.2
|
||||||
|
GNU Autoconf 2.57
|
||||||
|
GNU Automake 1.7 (we currently avoid 1.10 due to Solaris-related bugs)
|
||||||
|
GNU M4 1.4
|
||||||
|
perl 4
|
||||||
|
roffit 0.5
|
||||||
|
groff ? (any version that supports "groff -Tps -man [in] [out]")
|
||||||
|
ps2pdf (gs) ?
|
||||||
|
|
||||||
Windows vs Unix
|
Windows vs Unix
|
||||||
===============
|
===============
|
||||||
|
|
||||||
@@ -37,8 +86,8 @@ Windows vs Unix
|
|||||||
|
|
||||||
2. Windows requires a couple of init calls for the socket stuff.
|
2. Windows requires a couple of init calls for the socket stuff.
|
||||||
|
|
||||||
Those must be made by the application that uses libcurl, in curl that means
|
That's taken care of by the curl_global_init() call, but if other libs also
|
||||||
src/main.c has some code #ifdef'ed to do just that.
|
do it etc there might be reasons for applications to alter that behaviour.
|
||||||
|
|
||||||
3. The file descriptors for network communication and file operations are
|
3. The file descriptors for network communication and file operations are
|
||||||
not easily interchangable as in unix.
|
not easily interchangable as in unix.
|
||||||
@@ -54,9 +103,9 @@ Windows vs Unix
|
|||||||
Inside the source code, We make an effort to avoid '#ifdef [Your OS]'. All
|
Inside the source code, We make an effort to avoid '#ifdef [Your OS]'. All
|
||||||
conditionals that deal with features *should* instead be in the format
|
conditionals that deal with features *should* instead be in the format
|
||||||
'#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts,
|
'#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts,
|
||||||
we maintain two config-win32.h files (one in lib/ and one in src/) that are
|
we maintain two curl_config-win32.h files (one in lib/ and one in src/) that
|
||||||
supposed to look exactly as a config.h file would have looked like on a
|
are supposed to look exactly as a curl_config.h file would have looked like on
|
||||||
Windows machine!
|
a Windows machine!
|
||||||
|
|
||||||
Generally speaking: always remember that this will be compiled on dozens of
|
Generally speaking: always remember that this will be compiled on dozens of
|
||||||
operating systems. Don't walk on the edge.
|
operating systems. Don't walk on the edge.
|
||||||
@@ -98,7 +147,9 @@ Library
|
|||||||
|
|
||||||
... analyzes the URL, it separates the different components and connects to
|
... analyzes the URL, it separates the different components and connects to
|
||||||
the remote host. This may involve using a proxy and/or using SSL. The
|
the remote host. This may involve using a proxy and/or using SSL. The
|
||||||
Curl_gethost() function in lib/hostip.c is used for looking up host names.
|
Curl_resolv() function in lib/hostip.c is used for looking up host names
|
||||||
|
(it does then use the proper underlying method, which may vary between
|
||||||
|
platforms and builds).
|
||||||
|
|
||||||
When Curl_connect is done, we are connected to the remote site. Then it is
|
When Curl_connect is done, we are connected to the remote site. Then it is
|
||||||
time to tell the server to get a document/file. Curl_do() arranges this.
|
time to tell the server to get a document/file. Curl_do() arranges this.
|
||||||
@@ -123,17 +174,20 @@ Library
|
|||||||
Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
|
Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
|
||||||
returns.
|
returns.
|
||||||
|
|
||||||
Starting in 7.9.1, if this DO function fails and the connection is being
|
If this DO function fails and the connection is being re-used, libcurl will
|
||||||
re-used, libcurl will then close this connection, setup a new connection
|
then close this connection, setup a new connection and re-issue the DO
|
||||||
and re-issue the DO request on that. This is because there is no way to be
|
request on that. This is because there is no way to be perfectly sure that
|
||||||
perfectly sure that we have discovered a dead connection before the DO
|
we have discovered a dead connection before the DO function and thus we
|
||||||
function and thus we might wrongly be re-using a connection that was closed
|
might wrongly be re-using a connection that was closed by the remote peer.
|
||||||
by the remote peer.
|
|
||||||
|
Some time during the DO function, the Curl_setup_transfer() function must
|
||||||
|
be called with some basic info about the upcoming transfer: what socket(s)
|
||||||
|
to read/write and the expected file tranfer sizes (if known).
|
||||||
|
|
||||||
o Transfer()
|
o Transfer()
|
||||||
|
|
||||||
Curl_perform() then calls Transfer() in lib/transfer.c that performs
|
Curl_perform() then calls Transfer() in lib/transfer.c that performs the
|
||||||
the entire file transfer.
|
entire file transfer.
|
||||||
|
|
||||||
During transfer, the progress functions in lib/progress.c are called at a
|
During transfer, the progress functions in lib/progress.c are called at a
|
||||||
frequent interval (or at the user's choice, a specified callback might get
|
frequent interval (or at the user's choice, a specified callback might get
|
||||||
@@ -237,9 +291,8 @@ Library
|
|||||||
URL encoding and decoding, called escaping and unescaping in the source code,
|
URL encoding and decoding, called escaping and unescaping in the source code,
|
||||||
is found in lib/escape.c.
|
is found in lib/escape.c.
|
||||||
|
|
||||||
While transfering data in Transfer() a few functions might get
|
While transfering data in Transfer() a few functions might get used.
|
||||||
used. curl_getdate() in lib/getdate.c is for HTTP date comparisons (and
|
curl_getdate() in lib/parsedate.c is for HTTP date comparisons (and more).
|
||||||
more).
|
|
||||||
|
|
||||||
lib/getenv.c offers curl_getenv() which is for reading environment variables
|
lib/getenv.c offers curl_getenv() which is for reading environment variables
|
||||||
in a neat platform independent way. That's used in the client, but also in
|
in a neat platform independent way. That's used in the client, but also in
|
||||||
@@ -251,14 +304,10 @@ Library
|
|||||||
|
|
||||||
lib/timeval.c features replacement functions for systems that don't have
|
lib/timeval.c features replacement functions for systems that don't have
|
||||||
gettimeofday() and a few support functions for timeval convertions.
|
gettimeofday() and a few support functions for timeval convertions.
|
||||||
|
|
||||||
A function named curl_version() that returns the full curl version string is
|
A function named curl_version() that returns the full curl version string is
|
||||||
found in lib/version.c.
|
found in lib/version.c.
|
||||||
|
|
||||||
If authentication is requested but no password is given, a getpass_r() clone
|
|
||||||
exists in lib/getpass.c. libcurl offers a custom callback that can be used
|
|
||||||
instead of this, but it doesn't change much to us.
|
|
||||||
|
|
||||||
Persistent Connections
|
Persistent Connections
|
||||||
======================
|
======================
|
||||||
|
|
||||||
@@ -270,9 +319,11 @@ Persistent Connections
|
|||||||
all the options etc that the library-user may choose.
|
all the options etc that the library-user may choose.
|
||||||
o The 'SessionHandle' struct holds the "connection cache" (an array of
|
o The 'SessionHandle' struct holds the "connection cache" (an array of
|
||||||
pointers to 'connectdata' structs). There's one connectdata struct
|
pointers to 'connectdata' structs). There's one connectdata struct
|
||||||
allocated for each connection that libcurl knows about.
|
allocated for each connection that libcurl knows about. Note that when you
|
||||||
o This also enables the 'curl handle' to be reused on subsequent transfers,
|
use the multi interface, the multi handle will hold the connection cache
|
||||||
something that was illegal before libcurl 7.7.
|
and not the particular easy handle. This of course to allow all easy handles
|
||||||
|
in a multi stack to be able to share and re-use connections.
|
||||||
|
o This enables the 'curl handle' to be reused on subsequent transfers.
|
||||||
o When we are about to perform a transfer with curl_easy_perform(), we first
|
o When we are about to perform a transfer with curl_easy_perform(), we first
|
||||||
check for an already existing connection in the cache that we can use,
|
check for an already existing connection in the cache that we can use,
|
||||||
otherwise we create a new one and add to the cache. If the cache is full
|
otherwise we create a new one and add to the cache. If the cache is full
|
||||||
@@ -282,14 +333,49 @@ Persistent Connections
|
|||||||
o When the transfer operation is complete, we try to leave the connection
|
o When the transfer operation is complete, we try to leave the connection
|
||||||
open. Particular options may tell us not to, and protocols may signal
|
open. Particular options may tell us not to, and protocols may signal
|
||||||
closure on connections and then we don't keep it open of course.
|
closure on connections and then we don't keep it open of course.
|
||||||
o When curl_easy_cleanup() is called, we close all still opened connections.
|
o When curl_easy_cleanup() is called, we close all still opened connections,
|
||||||
|
unless of course the multi interface "owns" the connections.
|
||||||
|
|
||||||
You do realize that the curl handle must be re-used in order for the
|
You do realize that the curl handle must be re-used in order for the
|
||||||
persistent connections to work.
|
persistent connections to work.
|
||||||
|
|
||||||
|
multi interface/non-blocking
|
||||||
|
============================
|
||||||
|
|
||||||
|
We make an effort to provide a non-blocking interface to the library, the
|
||||||
|
multi interface. To make that interface work as good as possible, no
|
||||||
|
low-level functions within libcurl must be written to work in a blocking
|
||||||
|
manner.
|
||||||
|
|
||||||
|
One of the primary reasons we introduced c-ares support was to allow the name
|
||||||
|
resolve phase to be perfectly non-blocking as well.
|
||||||
|
|
||||||
|
The ultimate goal is to provide the easy interface simply by wrapping the
|
||||||
|
multi interface functions and thus treat everything internally as the multi
|
||||||
|
interface is the single interface we have.
|
||||||
|
|
||||||
|
The FTP and the SFTP/SCP protocols are thus perfect examples of how we adapt
|
||||||
|
and adjust the code to allow non-blocking operations even on multi-stage
|
||||||
|
protocols. The DICT, LDAP and TELNET are crappy examples and they are subject
|
||||||
|
for rewrite in the future to better fit the libcurl protocol family.
|
||||||
|
|
||||||
|
SSL libraries
|
||||||
|
=============
|
||||||
|
|
||||||
|
Originally libcurl supported SSLeay for SSL/TLS transports, but that was then
|
||||||
|
extended to its successor OpenSSL but has since also been extended to several
|
||||||
|
other SSL/TLS libraries and we expect and hope to further extend the support
|
||||||
|
in future libcurl versions.
|
||||||
|
|
||||||
|
To deal with this internally in the best way possible, we have a generic SSL
|
||||||
|
function API as provided by the sslgen.[ch] system, and they are the only SSL
|
||||||
|
functions we must use from within libcurl. sslgen is then crafted to use the
|
||||||
|
appropriate lower-level function calls to whatever SSL library that is in
|
||||||
|
use.
|
||||||
|
|
||||||
Library Symbols
|
Library Symbols
|
||||||
===============
|
===============
|
||||||
|
|
||||||
All symbols used internally in libcurl must use a 'Curl_' prefix if they're
|
All symbols used internally in libcurl must use a 'Curl_' prefix if they're
|
||||||
used in more than a single file. Single-file symbols must be made static.
|
used in more than a single file. Single-file symbols must be made static.
|
||||||
Public ("exported") symbols must use a 'curl_' prefix. (There are exceptions,
|
Public ("exported") symbols must use a 'curl_' prefix. (There are exceptions,
|
||||||
@@ -310,6 +396,13 @@ Return Codes and Informationals
|
|||||||
them. They are best used when revealing information that isn't otherwise
|
them. They are best used when revealing information that isn't otherwise
|
||||||
obvious.
|
obvious.
|
||||||
|
|
||||||
|
API/ABI
|
||||||
|
=======
|
||||||
|
|
||||||
|
We make an effort to not export or show internals or how internals work, as
|
||||||
|
that makes it easier to keep a solid API/ABI over time. See docs/libcurl/ABI
|
||||||
|
for our promise to users.
|
||||||
|
|
||||||
Client
|
Client
|
||||||
======
|
======
|
||||||
|
|
||||||
@@ -343,13 +436,24 @@ Memory Debugging
|
|||||||
information about what they just did. The logged data can then be analyzed
|
information about what they just did. The logged data can then be analyzed
|
||||||
after a complete session,
|
after a complete session,
|
||||||
|
|
||||||
memanalyze.pl is the perl script present only present in CVS (not part of the
|
memanalyze.pl is the perl script present in tests/ that analyzes a log file
|
||||||
release archives) that analyzes a log file generated by the memdebug
|
generated by the memory tracking system. It detects if resources are
|
||||||
system. It detects if resources are allocated but never freed and other kinds
|
allocated but never freed and other kinds of errors related to resource
|
||||||
of errors related to resource management.
|
management.
|
||||||
|
|
||||||
Use -DMALLOCDEBUG when compiling to enable memory debugging, this is also
|
Internally, definition of preprocessor symbol DEBUGBUILD restricts code which
|
||||||
switched on by running configure with --enable-debug.
|
is only compiled for debug enabled builds. And symbol CURLDEBUG is used to
|
||||||
|
differentiate code which is _only_ used for memory tracking/debugging.
|
||||||
|
|
||||||
|
Use -DCURLDEBUG when compiling to enable memory debugging, this is also
|
||||||
|
switched on by running configure with --enable-curldebug. Use -DDEBUGBUILD
|
||||||
|
when compiling to enable a debug build or run configure with --enable-debug.
|
||||||
|
|
||||||
|
curl --version will list 'Debug' feature for debug enabled builds, and
|
||||||
|
will list 'TrackMemory' feature for curl debug memory tracking capable
|
||||||
|
builds. These features are independent and can be controlled when running
|
||||||
|
the configure script. When --enable-debug is given both features will be
|
||||||
|
enabled, unless some restriction prevents memory tracking from being used.
|
||||||
|
|
||||||
Test Suite
|
Test Suite
|
||||||
==========
|
==========
|
||||||
@@ -379,3 +483,6 @@ Building Releases
|
|||||||
need to fill in the Makefile.am files properly for which files that should
|
need to fill in the Makefile.am files properly for which files that should
|
||||||
be included in the release archives.
|
be included in the release archives.
|
||||||
|
|
||||||
|
NOTE: you need to have curl checked out from git to be able to do a proper
|
||||||
|
release build. The release tarballs do not have everything setup in order to
|
||||||
|
do releases properly.
|
||||||
|
|||||||
237
docs/KNOWN_BUGS
237
docs/KNOWN_BUGS
@@ -3,12 +3,235 @@ join in and help us correct one or more of these! Also be sure to check the
|
|||||||
changelog of the current development status, as one or more of these problems
|
changelog of the current development status, as one or more of these problems
|
||||||
may have been fixed since this was written!
|
may have been fixed since this was written!
|
||||||
|
|
||||||
* curl_formadd() fails on OSF1. Why? Fix! Need help from OSF1 dudes.
|
76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on
|
||||||
https://sourceforge.net/tracker/index.php?func=detail&aid=524433&group_id=976&atid=100976
|
that platform), and long is only 32 bits. It makes it impossible for
|
||||||
|
curl_easy_getinfo() to return a socket properly with the CURLINFO_LASTSOCKET
|
||||||
|
option as for all other operating systems.
|
||||||
|
|
||||||
* Running 'make test' on Mac OS X gives 4 errors. This seems to be related
|
75. NTLM authentication involving unicode user name or password.
|
||||||
to some kind of libtool problem:
|
http://curl.haxx.se/mail/lib-2009-10/0024.html
|
||||||
http://curl.haxx.se/mail/archive-2002-03/0029.html and
|
http://curl.haxx.se/bug/view.cgi?id=2944325
|
||||||
http://curl.haxx.se/mail/archive-2002-03/0033.html
|
|
||||||
|
|
||||||
* libcurl does not deal nicely with files larger than 2GB
|
74. The HTTP spec allows headers to be merged and become comma-separated
|
||||||
|
instead of being repeated several times. This also include Authenticate: and
|
||||||
|
Proxy-Authenticate: headers and while this hardly every happens in real life
|
||||||
|
it will confuse libcurl which does not properly support it for all headers -
|
||||||
|
like those Authenticate headers.
|
||||||
|
|
||||||
|
73. if a connection is made to a FTP server but the server then just never
|
||||||
|
sends the 220 response or otherwise is dead slow, libcurl will not
|
||||||
|
acknowledge the connection timeout during that phase but only the "real"
|
||||||
|
timeout - which may surprise users as it is probably considered to be the
|
||||||
|
connect phase to most people. Brought up (and is being misunderstood) in:
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2844077
|
||||||
|
|
||||||
|
72. "Pausing pipeline problems."
|
||||||
|
http://curl.haxx.se/mail/lib-2009-07/0214.html
|
||||||
|
|
||||||
|
70. Problem re-using easy handle after call to curl_multi_remove_handle
|
||||||
|
http://curl.haxx.se/mail/lib-2009-07/0249.html
|
||||||
|
|
||||||
|
68. "More questions about ares behavior".
|
||||||
|
http://curl.haxx.se/mail/lib-2009-08/0012.html
|
||||||
|
|
||||||
|
67. When creating multipart formposts. The file name part can be encoded with
|
||||||
|
something beyond ascii but currently libcurl will only pass in the verbatim
|
||||||
|
string the app provides. There are several browsers that already do this
|
||||||
|
encoding. The key seems to be the updated draft to RFC2231:
|
||||||
|
http://tools.ietf.org/html/draft-reschke-rfc2231-in-http-02
|
||||||
|
|
||||||
|
66. When using telnet, the time limitation options don't work.
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2818950
|
||||||
|
|
||||||
|
65. When doing FTP over a socks proxy or CONNECT through HTTP proxy and the
|
||||||
|
multi interface is used, libcurl will fail if the (passive) TCP connection
|
||||||
|
for the data transfer isn't more or less instant as the code does not
|
||||||
|
properly wait for the connect to be confirmed. See test case 564 for a first
|
||||||
|
shot at a test case.
|
||||||
|
|
||||||
|
63. When CURLOPT_CONNECT_ONLY is used, the handle cannot reliably be re-used
|
||||||
|
for any further requests or transfers. The work-around is then to close that
|
||||||
|
handle with curl_easy_cleanup() and create a new. Some more details:
|
||||||
|
http://curl.haxx.se/mail/lib-2009-04/0300.html
|
||||||
|
|
||||||
|
62. CURLOPT_TIMEOUT does not work properly with the regular multi and
|
||||||
|
multi_socket interfaces. The work-around for apps is to simply remove the
|
||||||
|
easy handle once the time is up. See also:
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2501457
|
||||||
|
|
||||||
|
61. If an upload using Expect: 100-continue receives an HTTP 417 response,
|
||||||
|
it ought to be automatically resent without the Expect:. A workaround is
|
||||||
|
for the client application to redo the transfer after disabling Expect:.
|
||||||
|
http://curl.haxx.se/mail/archive-2008-02/0043.html
|
||||||
|
|
||||||
|
60. libcurl closes the connection if an HTTP 401 reply is received while it
|
||||||
|
is waiting for the the 100-continue response.
|
||||||
|
http://curl.haxx.se/mail/lib-2008-08/0462.html
|
||||||
|
|
||||||
|
58. It seems sensible to be able to use CURLOPT_NOBODY and
|
||||||
|
CURLOPT_FAILONERROR with FTP to detect if a file exists or not, but it is
|
||||||
|
not working: http://curl.haxx.se/mail/lib-2008-07/0295.html
|
||||||
|
|
||||||
|
57. On VMS-Alpha: When using an http-file-upload the file is not sent to the
|
||||||
|
Server with the correct content-length. Sending a file with 511 or less
|
||||||
|
bytes, content-length 512 is used. Sending a file with 513 - 1023 bytes,
|
||||||
|
content-length 1024 is used. Files with a length of a multiple of 512 Bytes
|
||||||
|
show the correct content-length. Only these files work for upload.
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2057858
|
||||||
|
|
||||||
|
56. When libcurl sends CURLOPT_POSTQUOTE commands when connected to a SFTP
|
||||||
|
server using the multi interface, the commands are not being sent correctly
|
||||||
|
and instead the connection is "cancelled" (the operation is considered done)
|
||||||
|
prematurely. There is a half-baked (busy-looping) patch provided in the bug
|
||||||
|
report but it cannot be accepted as-is. See
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=2006544
|
||||||
|
|
||||||
|
55. libcurl fails to build with MIT Kerberos for Windows (KfW) due to KfW's
|
||||||
|
library header files exporting symbols/macros that should be kept private
|
||||||
|
to the KfW library. See ticket #5601 at http://krbdev.mit.edu/rt/
|
||||||
|
|
||||||
|
52. Gautam Kachroo's issue that identifies a problem with the multi interface
|
||||||
|
where a connection can be re-used without actually being properly
|
||||||
|
SSL-negotiated:
|
||||||
|
http://curl.haxx.se/mail/lib-2008-01/0277.html
|
||||||
|
|
||||||
|
49. If using --retry and the transfer timeouts (possibly due to using -m or
|
||||||
|
-y/-Y) the next attempt doesn't resume the transfer properly from what was
|
||||||
|
downloaded in the previous attempt but will truncate and restart at the
|
||||||
|
original position where it was at before the previous failed attempt. See
|
||||||
|
http://curl.haxx.se/mail/lib-2008-01/0080.html and Mandriva bug report
|
||||||
|
https://qa.mandriva.com/show_bug.cgi?id=22565
|
||||||
|
|
||||||
|
48. If a CONNECT response-headers are larger than BUFSIZE (16KB) when the
|
||||||
|
connection is meant to be kept alive (like for NTLM proxy auth), the
|
||||||
|
function will return prematurely and will confuse the rest of the HTTP
|
||||||
|
protocol code. This should be very rare.
|
||||||
|
|
||||||
|
43. There seems to be a problem when connecting to the Microsoft telnet server.
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=1720605
|
||||||
|
|
||||||
|
41. When doing an operation over FTP that requires the ACCT command (but not
|
||||||
|
when logging in), the operation will fail since libcurl doesn't detect this
|
||||||
|
and thus fails to issue the correct command:
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=1693337
|
||||||
|
|
||||||
|
39. Steffen Rumler's Race Condition in Curl_proxyCONNECT:
|
||||||
|
http://curl.haxx.se/mail/lib-2007-01/0045.html
|
||||||
|
|
||||||
|
38. Kumar Swamy Bhatt's problem in ftp/ssl "LIST" operation:
|
||||||
|
http://curl.haxx.se/mail/lib-2007-01/0103.html
|
||||||
|
|
||||||
|
37. Having more than one connection to the same host when doing NTLM
|
||||||
|
authentication (with performs multiple "passes" and authenticates a
|
||||||
|
connection rather than a HTTP request), and particularly when using the
|
||||||
|
multi interface, there's a risk that libcurl will re-use a wrong connection
|
||||||
|
when doing the different passes in the NTLM negotiation and thus fail to
|
||||||
|
negotiate (in seemingly mysterious ways).
|
||||||
|
|
||||||
|
35. Both SOCKS5 and SOCKS4 proxy connections are done blocking, which is very
|
||||||
|
bad when used with the multi interface.
|
||||||
|
|
||||||
|
34. The SOCKS4 connection codes don't properly acknowledge (connect) timeouts.
|
||||||
|
Also see #12. According to bug #1556528, even the SOCKS5 connect code does
|
||||||
|
not do it right: http://curl.haxx.se/bug/view.cgi?id=1556528,
|
||||||
|
|
||||||
|
31. "curl-config --libs" will include details set in LDFLAGS when configure is
|
||||||
|
run that might be needed only for building libcurl. Further, curl-config
|
||||||
|
--cflags suffers from the same effects with CFLAGS/CPPFLAGS.
|
||||||
|
|
||||||
|
30. You need to use -g to the command line tool in order to use RFC2732-style
|
||||||
|
IPv6 numerical addresses in URLs.
|
||||||
|
|
||||||
|
29. IPv6 URLs with zone ID is not nicely supported.
|
||||||
|
http://www.ietf.org/internet-drafts/draft-fenner-literal-zone-02.txt (expired)
|
||||||
|
specifies the use of a plus sign instead of a percent when specifying zone
|
||||||
|
IDs in URLs to get around the problem of percent signs being
|
||||||
|
special. According to the reporter, Firefox deals with the URL _with_ a
|
||||||
|
percent letter (which seems like a blatant URL spec violation).
|
||||||
|
libcurl supports zone IDs where the percent sign is URL-escaped (i.e. %25).
|
||||||
|
|
||||||
|
See http://curl.haxx.se/bug/view.cgi?id=1371118
|
||||||
|
|
||||||
|
26. NTLM authentication using SSPI (on Windows) when (lib)curl is running in
|
||||||
|
"system context" will make it use wrong(?) user name - at least when compared
|
||||||
|
to what winhttp does. See http://curl.haxx.se/bug/view.cgi?id=1281867
|
||||||
|
|
||||||
|
23. SOCKS-related problems:
|
||||||
|
A) libcurl doesn't support SOCKS for IPv6.
|
||||||
|
B) libcurl doesn't support FTPS over a SOCKS proxy.
|
||||||
|
E) libcurl doesn't support active FTP over a SOCKS proxy
|
||||||
|
|
||||||
|
We probably have even more bugs and lack of features when a SOCKS proxy is
|
||||||
|
used.
|
||||||
|
|
||||||
|
22. Sending files to a FTP server using curl on VMS, might lead to curl
|
||||||
|
complaining on "unaligned file size" on completion. The problem is related
|
||||||
|
to VMS file structures and the perceived file sizes stat() returns. A
|
||||||
|
possible fix would involve sending a "STRU VMS" command.
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=1156287
|
||||||
|
|
||||||
|
21. FTP ASCII transfers do not follow RFC959. They don't convert the data
|
||||||
|
accordingly (not for sending nor for receiving). RFC 959 section 3.1.1.1
|
||||||
|
clearly describes how this should be done:
|
||||||
|
|
||||||
|
The sender converts the data from an internal character representation to
|
||||||
|
the standard 8-bit NVT-ASCII representation (see the Telnet
|
||||||
|
specification). The receiver will convert the data from the standard
|
||||||
|
form to his own internal form.
|
||||||
|
|
||||||
|
Since 7.15.4 at least line endings are converted.
|
||||||
|
|
||||||
|
16. FTP URLs passed to curl may contain NUL (0x00) in the RFC 1738 <user>,
|
||||||
|
<password>, and <fpath> components, encoded as "%00". The problem is that
|
||||||
|
curl_unescape does not detect this, but instead returns a shortened C
|
||||||
|
string. From a strict FTP protocol standpoint, NUL is a valid character
|
||||||
|
within RFC 959 <string>, so the way to handle this correctly in curl would
|
||||||
|
be to use a data structure other than a plain C string, one that can handle
|
||||||
|
embedded NUL characters. From a practical standpoint, most FTP servers
|
||||||
|
would not meaningfully support NUL characters within RFC 959 <string>,
|
||||||
|
anyway (e.g., UNIX pathnames may not contain NUL).
|
||||||
|
|
||||||
|
14. Test case 165 might fail on a system which has libidn present, but with an
|
||||||
|
old iconv version (2.1.3 is a known bad version), since it doesn't recognize
|
||||||
|
the charset when named ISO8859-1. Changing the name to ISO-8859-1 makes the
|
||||||
|
test pass, but instead makes it fail on Solaris hosts that use its native
|
||||||
|
iconv.
|
||||||
|
|
||||||
|
13. curl version 7.12.2 fails on AIX if compiled with --enable-ares.
|
||||||
|
The workaround is to combine --enable-ares with --disable-shared
|
||||||
|
|
||||||
|
12. When connecting to a SOCKS proxy, the (connect) timeout is not properly
|
||||||
|
acknowledged after the actual TCP connect (during the SOCKS "negotiate"
|
||||||
|
phase).
|
||||||
|
|
||||||
|
10. To get HTTP Negotiate authentication to work fine, you need to provide a
|
||||||
|
(fake) user name (this concerns both curl and the lib) because the code
|
||||||
|
wrongly only considers authentication if there's a user name provided.
|
||||||
|
http://curl.haxx.se/bug/view.cgi?id=1004841. How?
|
||||||
|
http://curl.haxx.se/mail/lib-2004-08/0182.html
|
||||||
|
|
||||||
|
8. 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]'.
|
||||||
|
|
||||||
|
6. libcurl ignores empty path parts in FTP URLs, whereas RFC1738 states that
|
||||||
|
such parts should be sent to the server as 'CWD ' (without an argument).
|
||||||
|
The only exception to this rule, is that we knowingly break this if the
|
||||||
|
empty part is first in the path, as then we use the double slashes to
|
||||||
|
indicate that the user wants to reach the root dir (this exception SHALL
|
||||||
|
remain even when this bug is fixed).
|
||||||
|
|
||||||
|
5. 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* length. Some explanations are here:
|
||||||
|
http://curl.haxx.se/mail/lib-2003-06/0146.html
|
||||||
|
|
||||||
|
2. 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
|
||||||
|
immediately made to the same server again, the connection will be re-used
|
||||||
|
fine of course, and the second request will be sent off but when the
|
||||||
|
response is to get read, the previous response-body is what curl will read
|
||||||
|
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
|
||||||
|
|||||||
126
docs/LICENSE-MIXING
Normal file
126
docs/LICENSE-MIXING
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
License Mixing with apps, libcurl and Third Party Libraries
|
||||||
|
===========================================================
|
||||||
|
|
||||||
|
libcurl can be built to use a fair amount of various third party libraries,
|
||||||
|
libraries that are written and provided by other parties that are distributed
|
||||||
|
using their own licenses. Even libcurl itself contains code that may cause
|
||||||
|
problems to some. This document attempts to describe what licenses libcurl and
|
||||||
|
the other libraries use and what possible dilemmas linking and mixing them all
|
||||||
|
can lead to for end users.
|
||||||
|
|
||||||
|
I am not a lawyer and this is not legal advice!
|
||||||
|
|
||||||
|
One common dilemma is that GPL[1]-licensed code is not allowed to be linked
|
||||||
|
with code licensed under the Original BSD license (with the announcement
|
||||||
|
clause). You may still build your own copies that use them all, but
|
||||||
|
distributing them as binaries would be to violate the GPL license - unless you
|
||||||
|
accompany your license with an exception[2]. This particular problem was
|
||||||
|
addressed when the Modified BSD license was created, which does not have the
|
||||||
|
announcement clause that collides with GPL.
|
||||||
|
|
||||||
|
libcurl http://curl.haxx.se/docs/copyright.html
|
||||||
|
|
||||||
|
Uses an MIT (or Modified BSD)-style license that is as liberal as
|
||||||
|
possible. Some of the source files that deal with KRB4 have Original
|
||||||
|
BSD-style announce-clause licenses. You may not distribute binaries
|
||||||
|
with krb4-enabled libcurl that also link with GPL-licensed code!
|
||||||
|
|
||||||
|
OpenSSL http://www.openssl.org/source/license.html
|
||||||
|
|
||||||
|
(May be used for SSL/TLS support) Uses an Original BSD-style license
|
||||||
|
with an announcement clause that makes it "incompatible" with GPL. You
|
||||||
|
are not allowed to ship binaries that link with OpenSSL that includes
|
||||||
|
GPL code (unless that specific GPL code includes an exception for
|
||||||
|
OpenSSL - a habit that is growing more and more common). If OpenSSL's
|
||||||
|
licensing is a problem for you, consider using GnuTLS or yassl
|
||||||
|
instead.
|
||||||
|
|
||||||
|
GnuTLS http://www.gnutls.org/
|
||||||
|
|
||||||
|
(May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
|
||||||
|
a problem for you, consider using OpenSSL instead. Also note that
|
||||||
|
GnuTLS itself depends on and uses other libs (libgcrypt and
|
||||||
|
libgpg-error) and they too are LGPL- or GPL-licensed.
|
||||||
|
|
||||||
|
yassl http://www.yassl.com/
|
||||||
|
|
||||||
|
(May be used for SSL/TLS support) Uses the GPL[1] license. If this is
|
||||||
|
a problem for you, consider using OpenSSL or GnuTLS instead.
|
||||||
|
|
||||||
|
NSS http://www.mozilla.org/projects/security/pki/nss/
|
||||||
|
|
||||||
|
(May be used for SSL/TLS support) Is covered by the MPL[4] license,
|
||||||
|
the GPL[1] license and the LGPL[3] license. You may choose to license
|
||||||
|
the code under MPL terms, GPL terms, or LGPL terms. These licenses
|
||||||
|
grant you different permissions and impose different obligations. You
|
||||||
|
should select the license that best meets your needs.
|
||||||
|
|
||||||
|
c-ares http://daniel.haxx.se/projects/c-ares/license.html
|
||||||
|
|
||||||
|
(Used for asynchronous name resolves) Uses an MIT license that is very
|
||||||
|
liberal and imposes no restrictions on any other library or part you
|
||||||
|
may link with.
|
||||||
|
|
||||||
|
zlib http://www.gzip.org/zlib/zlib_license.html
|
||||||
|
|
||||||
|
(Used for compressed Transfer-Encoding support) Uses an MIT-style
|
||||||
|
license that shouldn't collide with any other library.
|
||||||
|
|
||||||
|
krb4
|
||||||
|
|
||||||
|
While nothing in particular says that a Kerberos4 library must use any
|
||||||
|
particular license, the one I've tried and used successfully so far
|
||||||
|
(kth-krb4) is partly Original BSD-licensed with the announcement
|
||||||
|
clause. Some of the code in libcurl that is written to deal with
|
||||||
|
Kerberos4 is Modified BSD-licensed.
|
||||||
|
|
||||||
|
MIT Kerberos http://web.mit.edu/kerberos/www/dist/
|
||||||
|
|
||||||
|
(May be used for GSS support) MIT licensed, that shouldn't collide
|
||||||
|
with any other parts.
|
||||||
|
|
||||||
|
Heimdal http://www.pdc.kth.se/heimdal/
|
||||||
|
|
||||||
|
(May be used for GSS support) Heimdal is Original BSD licensed with
|
||||||
|
the announcement clause.
|
||||||
|
|
||||||
|
GNU GSS http://www.gnu.org/software/gss/
|
||||||
|
|
||||||
|
(May be used for GSS support) GNU GSS is GPL licensed. Note that you
|
||||||
|
may not distribute binary curl packages that uses this if you build
|
||||||
|
curl to also link and use any Original BSD licensed libraries!
|
||||||
|
|
||||||
|
fbopenssl
|
||||||
|
|
||||||
|
(Used for SPNEGO support) Unclear license. Based on its name, I assume
|
||||||
|
that it uses the OpenSSL license and thus shares the same issues as
|
||||||
|
described for OpenSSL above.
|
||||||
|
|
||||||
|
libidn http://josefsson.org/libidn/
|
||||||
|
|
||||||
|
(Used for IDNA support) Uses the GNU Lesser General Public
|
||||||
|
License [3]. LGPL is a variation of GPL with slightly less aggressive
|
||||||
|
"copyleft". This license requires more requirements to be met when
|
||||||
|
distributing binaries, see the license for details. Also note that if
|
||||||
|
you distribute a binary that includes this library, you must also
|
||||||
|
include the full LGPL license text. Please properly point out what
|
||||||
|
parts of the distributed package that the license addresses.
|
||||||
|
|
||||||
|
OpenLDAP http://www.openldap.org/software/release/license.html
|
||||||
|
|
||||||
|
(Used for LDAP support) Uses a Modified BSD-style license. Since
|
||||||
|
libcurl uses OpenLDAP as a shared library only, I have not heard of
|
||||||
|
anyone that ships OpenLDAP linked with libcurl in an app.
|
||||||
|
|
||||||
|
libssh2 http://www.libssh2.org/
|
||||||
|
|
||||||
|
(Used for scp and sftp support) libssh2 uses a Modified BSD-style
|
||||||
|
license.
|
||||||
|
|
||||||
|
[1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
|
||||||
|
[2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
|
||||||
|
how to write such an exception to the GPL
|
||||||
|
[3] = LGPL - GNU Lesser General Public License:
|
||||||
|
http://www.gnu.org/licenses/lgpl.html
|
||||||
|
[4] = MPL - Mozilla Public License:
|
||||||
|
http://www.mozilla.org/MPL/
|
||||||
323
docs/MANUAL
323
docs/MANUAL
@@ -7,11 +7,11 @@ LATEST VERSION
|
|||||||
|
|
||||||
SIMPLE USAGE
|
SIMPLE USAGE
|
||||||
|
|
||||||
Get the main page from netscape's web-server:
|
Get the main page from Netscape's web-server:
|
||||||
|
|
||||||
curl http://www.netscape.com/
|
curl http://www.netscape.com/
|
||||||
|
|
||||||
Get the root README file from funet's ftp-server:
|
Get the README file the user's home directory at funet's ftp-server:
|
||||||
|
|
||||||
curl ftp://ftp.funet.fi/README
|
curl ftp://ftp.funet.fi/README
|
||||||
|
|
||||||
@@ -19,14 +19,10 @@ SIMPLE USAGE
|
|||||||
|
|
||||||
curl http://www.weirdserver.com:8000/
|
curl http://www.weirdserver.com:8000/
|
||||||
|
|
||||||
Get a list of the root directory of an FTP site:
|
Get a list of a directory of an FTP site:
|
||||||
|
|
||||||
curl ftp://cool.haxx.se/
|
curl ftp://cool.haxx.se/
|
||||||
|
|
||||||
Get a gopher document from funet's gopher server:
|
|
||||||
|
|
||||||
curl gopher://gopher.funet.fi
|
|
||||||
|
|
||||||
Get the definition of curl from a dictionary:
|
Get the definition of curl from a dictionary:
|
||||||
|
|
||||||
curl dict://dict.org/m:curl
|
curl dict://dict.org/m:curl
|
||||||
@@ -35,6 +31,27 @@ SIMPLE USAGE
|
|||||||
|
|
||||||
curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
|
curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
|
||||||
|
|
||||||
|
Get a file off an FTPS server:
|
||||||
|
|
||||||
|
curl ftps://files.are.secure.com/secrets.txt
|
||||||
|
|
||||||
|
or use the more appropriate FTPS way to get the same file:
|
||||||
|
|
||||||
|
curl --ftp-ssl ftp://files.are.secure.com/secrets.txt
|
||||||
|
|
||||||
|
Get a file from an SSH server using SFTP:
|
||||||
|
|
||||||
|
curl -u username sftp://shell.example.com/etc/issue
|
||||||
|
|
||||||
|
Get a file from an SSH server using SCP using a private key to authenticate:
|
||||||
|
|
||||||
|
curl -u username: --key ~/.ssh/id_dsa --pubkey ~/.ssh/id_dsa.pub \
|
||||||
|
scp://shell.example.com/~/personal.txt
|
||||||
|
|
||||||
|
Get the main page from an IPv6 web server:
|
||||||
|
|
||||||
|
curl -g "http://[2001:1890:1112:1::20]/"
|
||||||
|
|
||||||
DOWNLOAD TO A FILE
|
DOWNLOAD TO A FILE
|
||||||
|
|
||||||
Get a web page and store in a local file:
|
Get a web page and store in a local file:
|
||||||
@@ -63,11 +80,26 @@ USING PASSWORDS
|
|||||||
|
|
||||||
curl -u name:passwd ftp://machine.domain:port/full/path/to/file
|
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.
|
||||||
|
|
||||||
|
Note that using FTPS:// as prefix is the "implicit" way as described in the
|
||||||
|
standards while the recommended "explicit" way is done by using FTP:// and
|
||||||
|
the --ftp-ssl option.
|
||||||
|
|
||||||
|
SFTP / SCP
|
||||||
|
|
||||||
|
This is similar to FTP, but you can specify a private key to use instead of
|
||||||
|
a password. Note that the private key may itself be protected by a password
|
||||||
|
that is unrelated to the login password of the remote system. If you
|
||||||
|
provide a private key file you must also provide a public key file.
|
||||||
|
|
||||||
HTTP
|
HTTP
|
||||||
|
|
||||||
The HTTP URL doesn't support user and password in the URL string. Curl
|
Curl also supports user and password in HTTP URLs, thus you can pick a file
|
||||||
does support that anyway to provide a ftp-style interface and thus you can
|
like:
|
||||||
pick a file like:
|
|
||||||
|
|
||||||
curl http://name:passwd@machine.domain/full/path/to/file
|
curl http://name:passwd@machine.domain/full/path/to/file
|
||||||
|
|
||||||
@@ -75,6 +107,12 @@ USING PASSWORDS
|
|||||||
|
|
||||||
curl -u name:passwd http://machine.domain/full/path/to/file
|
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
|
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
|
style when using Curl via a proxy. You _must_ use the -u style fetch
|
||||||
during such circumstances.
|
during such circumstances.
|
||||||
@@ -83,10 +121,6 @@ USING PASSWORDS
|
|||||||
|
|
||||||
Probably most commonly used with private certificates, as explained below.
|
Probably most commonly used with private certificates, as explained below.
|
||||||
|
|
||||||
GOPHER
|
|
||||||
|
|
||||||
Curl features no password support for gopher.
|
|
||||||
|
|
||||||
PROXY
|
PROXY
|
||||||
|
|
||||||
Get an ftp file using a proxy named my-proxy that uses port 888:
|
Get an ftp file using a proxy named my-proxy that uses port 888:
|
||||||
@@ -102,6 +136,16 @@ PROXY
|
|||||||
|
|
||||||
curl -U user:passwd -x my-proxy:888 http://www.get.this/
|
curl -U user:passwd -x my-proxy:888 http://www.get.this/
|
||||||
|
|
||||||
|
A comma-separated list of hosts and domains which do not use the proxy can
|
||||||
|
be specified as:
|
||||||
|
|
||||||
|
curl --noproxy localhost,get.this -x my-proxy:888 http://www.get.this/
|
||||||
|
|
||||||
|
If the proxy is specified with --proxy1.0 instead of --proxy or -x, then
|
||||||
|
curl will use HTTP/1.0 instead of HTTP/1.1 for any CONNECT attempts.
|
||||||
|
|
||||||
|
curl also supports SOCKS4 and SOCKS5 proxies with --socks4 and --socks5.
|
||||||
|
|
||||||
See also the environment variables Curl support that offer further proxy
|
See also the environment variables Curl support that offer further proxy
|
||||||
control.
|
control.
|
||||||
|
|
||||||
@@ -124,13 +168,13 @@ RANGES
|
|||||||
|
|
||||||
Get the first 100 bytes of a document using FTP:
|
Get the first 100 bytes of a document using FTP:
|
||||||
|
|
||||||
curl -r 0-99 ftp://www.get.this/README
|
curl -r 0-99 ftp://www.get.this/README
|
||||||
|
|
||||||
UPLOADING
|
UPLOADING
|
||||||
|
|
||||||
FTP
|
FTP / FTPS / SFTP / SCP
|
||||||
|
|
||||||
Upload all data on stdin to a specified ftp site:
|
Upload all data on stdin to a specified server:
|
||||||
|
|
||||||
curl -T - ftp://ftp.upload.com/myfile
|
curl -T - ftp://ftp.upload.com/myfile
|
||||||
|
|
||||||
@@ -140,10 +184,10 @@ UPLOADING
|
|||||||
|
|
||||||
Upload a local file to the remote site, and use the local file name remote
|
Upload a local file to the remote site, and use the local file name remote
|
||||||
too:
|
too:
|
||||||
|
|
||||||
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
|
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
|
||||||
|
|
||||||
Upload a local file to get appended to the remote file using ftp:
|
Upload a local file to get appended to the remote file:
|
||||||
|
|
||||||
curl -T localfile -a ftp://ftp.upload.com/remotefile
|
curl -T localfile -a ftp://ftp.upload.com/remotefile
|
||||||
|
|
||||||
@@ -159,20 +203,28 @@ UPLOADING
|
|||||||
|
|
||||||
curl -T - http://www.upload.com/myfile
|
curl -T - http://www.upload.com/myfile
|
||||||
|
|
||||||
Note that the http server must've been configured to accept PUT before this
|
Note that the http server must have been configured to accept PUT before
|
||||||
can be done successfully.
|
this can be done successfully.
|
||||||
|
|
||||||
For other ways to do http data upload, see the POST section below.
|
For other ways to do http data upload, see the POST section below.
|
||||||
|
|
||||||
VERBOSE / DEBUG
|
VERBOSE / DEBUG
|
||||||
|
|
||||||
If curl fails where it isn't supposed to, if the servers don't let you
|
If curl fails where it isn't supposed to, if the servers don't let you in,
|
||||||
in, if you can't understand the responses: use the -v flag to get VERBOSE
|
if you can't understand the responses: use the -v flag to get verbose
|
||||||
fetching. Curl will output lots of info and all data it sends and
|
fetching. Curl will output lots of info and what it sends and receives in
|
||||||
receives in order to let the user see all client-server interaction.
|
order to let the user see all client-server interaction (but it won't show
|
||||||
|
you the actual data).
|
||||||
|
|
||||||
curl -v ftp://ftp.upload.com/
|
curl -v ftp://ftp.upload.com/
|
||||||
|
|
||||||
|
To get even more details and information on what curl does, try using the
|
||||||
|
--trace or --trace-ascii options with a given file name to log to, like
|
||||||
|
this:
|
||||||
|
|
||||||
|
curl --trace trace.txt www.haxx.se
|
||||||
|
|
||||||
|
|
||||||
DETAILED INFORMATION
|
DETAILED INFORMATION
|
||||||
|
|
||||||
Different protocols provide different ways of getting detailed information
|
Different protocols provide different ways of getting detailed information
|
||||||
@@ -235,7 +287,7 @@ POST (HTTP)
|
|||||||
|
|
||||||
To post to this, you enter a curl command line like:
|
To post to this, you enter a curl command line like:
|
||||||
|
|
||||||
curl -d "user=foobar&pass=12345&id=blablabla&dig=submit" (continues)
|
curl -d "user=foobar&pass=12345&id=blablabla&ding=submit" (continues)
|
||||||
http://www.formpost.com/getthis/post.cgi
|
http://www.formpost.com/getthis/post.cgi
|
||||||
|
|
||||||
|
|
||||||
@@ -273,12 +325,19 @@ POST (HTTP)
|
|||||||
To send two files in one post you can do it in two ways:
|
To send two files in one post you can do it in two ways:
|
||||||
|
|
||||||
1. Send multiple files in a single "field" with a single field name:
|
1. Send multiple files in a single "field" with a single field name:
|
||||||
|
|
||||||
curl -F "pictures=@dog.gif,cat.gif"
|
|
||||||
|
|
||||||
2. Send two fields with two field names:
|
|
||||||
|
|
||||||
curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif"
|
curl -F "pictures=@dog.gif,cat.gif"
|
||||||
|
|
||||||
|
2. Send two fields with two field names:
|
||||||
|
|
||||||
|
curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif"
|
||||||
|
|
||||||
|
To send a field value literally without interpreting a leading '@'
|
||||||
|
or '<', or an embedded ';type=', use --form-string instead of
|
||||||
|
-F. This is recommended when the value is obtained from a user or
|
||||||
|
some other unpredictable source. Under these circumstances, using
|
||||||
|
-F instead of --form-string would allow a user to trick curl into
|
||||||
|
uploading a file.
|
||||||
|
|
||||||
REFERRER
|
REFERRER
|
||||||
|
|
||||||
@@ -290,7 +349,7 @@ REFERRER
|
|||||||
|
|
||||||
curl -e www.coolsite.com http://www.showme.com/
|
curl -e www.coolsite.com http://www.showme.com/
|
||||||
|
|
||||||
NOTE: The referer field is defined in the HTTP spec to be a full URL.
|
NOTE: The Referer: [sic] field is defined in the HTTP spec to be a full URL.
|
||||||
|
|
||||||
USER AGENT
|
USER AGENT
|
||||||
|
|
||||||
@@ -350,6 +409,13 @@ COOKIES
|
|||||||
|
|
||||||
curl -b headers www.example.com
|
curl -b headers www.example.com
|
||||||
|
|
||||||
|
While saving headers to a file is a working way to store cookies, it is
|
||||||
|
however error-prone and not the preferred way to do this. Instead, make curl
|
||||||
|
save the incoming cookies using the well-known netscape cookie format like
|
||||||
|
this:
|
||||||
|
|
||||||
|
curl -c cookies.txt www.example.com
|
||||||
|
|
||||||
Note that by specifying -b you enable the "cookie awareness" and with -L
|
Note that by specifying -b you enable the "cookie awareness" and with -L
|
||||||
you can make curl follow a location: (which often is used in combination
|
you can make curl follow a location: (which often is used in combination
|
||||||
with cookies). So that if a site sends cookies and a location, you can
|
with cookies). So that if a site sends cookies and a location, you can
|
||||||
@@ -362,8 +428,12 @@ COOKIES
|
|||||||
file contents. In the above command, curl will parse the header and store
|
file contents. In the above command, curl will parse the header and store
|
||||||
the cookies received from www.example.com. curl will send to the server the
|
the cookies received from www.example.com. curl will send to the server the
|
||||||
stored cookies which match the request as it follows the location. The
|
stored cookies which match the request as it follows the location. The
|
||||||
file "empty.txt" may be a non-existant file.
|
file "empty.txt" may be a nonexistent file.
|
||||||
|
|
||||||
|
Alas, to both read and write cookies from a netscape cookie file, you can
|
||||||
|
set both -b and -c to use the same file:
|
||||||
|
|
||||||
|
curl -b cookies.txt -c cookies.txt www.example.com
|
||||||
|
|
||||||
PROGRESS METER
|
PROGRESS METER
|
||||||
|
|
||||||
@@ -387,7 +457,7 @@ PROGRESS METER
|
|||||||
Upload - the average transfer speed of the upload
|
Upload - the average transfer speed of the upload
|
||||||
Time Total - expected time to complete the operation
|
Time Total - expected time to complete the operation
|
||||||
Time Current - time passed since the invoke
|
Time Current - time passed since the invoke
|
||||||
Time Left - expected time left to completetion
|
Time Left - expected time left to completion
|
||||||
Curr.Speed - the average transfer speed the last 5 seconds (the first
|
Curr.Speed - the average transfer speed the last 5 seconds (the first
|
||||||
5 seconds of a transfer is based on less time of course.)
|
5 seconds of a transfer is based on less time of course.)
|
||||||
|
|
||||||
@@ -404,12 +474,34 @@ SPEED LIMIT
|
|||||||
To have curl abort the download if the speed is slower than 3000 bytes per
|
To have curl abort the download if the speed is slower than 3000 bytes per
|
||||||
second for 1 minute, run:
|
second for 1 minute, run:
|
||||||
|
|
||||||
curl -y 3000 -Y 60 www.far-away-site.com
|
curl -Y 3000 -y 60 www.far-away-site.com
|
||||||
|
|
||||||
This can very well be used in combination with the overall time limit, so
|
This can very well be used in combination with the overall time limit, so
|
||||||
that the above operatioin must be completed in whole within 30 minutes:
|
that the above operation must be completed in whole within 30 minutes:
|
||||||
|
|
||||||
curl -m 1800 -y 3000 -Y 60 www.far-away-site.com
|
curl -m 1800 -Y 3000 -y 60 www.far-away-site.com
|
||||||
|
|
||||||
|
Forcing curl not to transfer data faster than a given rate is also possible,
|
||||||
|
which might be useful if you're using a limited bandwidth connection and you
|
||||||
|
don't want your transfer to use all of it (sometimes referred to as
|
||||||
|
"bandwidth throttle").
|
||||||
|
|
||||||
|
Make curl transfer data no faster than 10 kilobytes per second:
|
||||||
|
|
||||||
|
curl --limit-rate 10K www.far-away-site.com
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
curl --limit-rate 10240 www.far-away-site.com
|
||||||
|
|
||||||
|
Or prevent curl from uploading data faster than 1 megabyte per second:
|
||||||
|
|
||||||
|
curl -T upload --limit-rate 1M ftp://uploadshereplease.com
|
||||||
|
|
||||||
|
When using the --limit-rate option, the transfer rate is regulated on a
|
||||||
|
per-second basis, which will cause the total transfer speed to become lower
|
||||||
|
than the given number. Sometimes of course substantially lower, if your
|
||||||
|
transfer stalls during periods.
|
||||||
|
|
||||||
CONFIG FILE
|
CONFIG FILE
|
||||||
|
|
||||||
@@ -420,9 +512,9 @@ CONFIG FILE
|
|||||||
can also specify the long options without the dashes to make it more
|
can also specify the long options without the dashes to make it more
|
||||||
readable. You can separate the options and the parameter with spaces, or
|
readable. You can separate the options and the parameter with spaces, or
|
||||||
with = or :. Comments can be used within the file. If the first letter on a
|
with = or :. Comments can be used within the file. If the first letter on a
|
||||||
line is a '#'-letter the rest of the line is treated as a comment.
|
line is a '#'-symbol the rest of the line is treated as a comment.
|
||||||
|
|
||||||
If you want the parameter to contain spaces, you must inclose the entire
|
If you want the parameter to contain spaces, you must enclose the entire
|
||||||
parameter within double quotes ("). Within those quotes, you specify a
|
parameter within double quotes ("). Within those quotes, you specify a
|
||||||
quote as \".
|
quote as \".
|
||||||
|
|
||||||
@@ -490,10 +582,18 @@ FTP and PATH NAMES
|
|||||||
|
|
||||||
(I.e with an extra slash in front of the file name.)
|
(I.e with an extra slash in front of the file name.)
|
||||||
|
|
||||||
|
SFTP and SCP and PATH NAMES
|
||||||
|
|
||||||
|
With sftp: and scp: URLs, the path name given is the absolute name on the
|
||||||
|
server. To access a file relative to the remote user's home directory,
|
||||||
|
prefix the file with /~/ , such as:
|
||||||
|
|
||||||
|
curl -u $USER sftp://home.example.com/~/.bashrc
|
||||||
|
|
||||||
FTP and firewalls
|
FTP and firewalls
|
||||||
|
|
||||||
The FTP protocol requires one of the involved parties to open a second
|
The FTP protocol requires one of the involved parties to open a second
|
||||||
connction as soon as data is about to get transfered. There are two ways to
|
connection as soon as data is about to get transfered. There are two ways to
|
||||||
do this.
|
do this.
|
||||||
|
|
||||||
The default way for curl is to issue the PASV command which causes the
|
The default way for curl is to issue the PASV command which causes the
|
||||||
@@ -528,17 +628,17 @@ NETWORK INTERFACE
|
|||||||
|
|
||||||
Get a web page from a server using a specified port for the interface:
|
Get a web page from a server using a specified port for the interface:
|
||||||
|
|
||||||
curl --interface eth0:1 http://www.netscape.com/
|
curl --interface eth0:1 http://www.netscape.com/
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
curl --interface 192.168.1.10 http://www.netscape.com/
|
curl --interface 192.168.1.10 http://www.netscape.com/
|
||||||
|
|
||||||
HTTPS
|
HTTPS
|
||||||
|
|
||||||
Secure HTTP requires SSL libraries to be installed and used when curl is
|
Secure HTTP requires SSL libraries to be installed and used when curl is
|
||||||
built. If that is done, curl is capable of retrieving and posting documents
|
built. If that is done, curl is capable of retrieving and posting documents
|
||||||
using the HTTPS procotol.
|
using the HTTPS protocol.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@@ -548,7 +648,7 @@ HTTPS
|
|||||||
from sites that require valid certificates. The only drawback is that the
|
from sites that require valid certificates. The only drawback is that the
|
||||||
certificate needs to be in PEM-format. PEM is a standard and open format to
|
certificate needs to be in PEM-format. PEM is a standard and open format to
|
||||||
store certificates with, but it is not used by the most commonly used
|
store certificates with, but it is not used by the most commonly used
|
||||||
browsers (Netscape and MSEI both use the so called PKCS#12 format). If you
|
browsers (Netscape and MSIE both use the so called PKCS#12 format). If you
|
||||||
want curl to use the certificates you use with your (favourite) browser, you
|
want curl to use the certificates you use with your (favourite) browser, you
|
||||||
may need to download/compile a converter that can convert your browser's
|
may need to download/compile a converter that can convert your browser's
|
||||||
formatted certificates to PEM formatted ones. This kind of converter is
|
formatted certificates to PEM formatted ones. This kind of converter is
|
||||||
@@ -567,8 +667,8 @@ HTTPS
|
|||||||
|
|
||||||
Many older SSL-servers have problems with SSLv3 or TLS, that newer versions
|
Many older SSL-servers have problems with SSLv3 or TLS, that newer versions
|
||||||
of OpenSSL etc is using, therefore it is sometimes useful to specify what
|
of OpenSSL etc is using, therefore it is sometimes useful to specify what
|
||||||
SSL-version curl should use. Use -3 or -2 to specify that exact SSL version
|
SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL
|
||||||
to use:
|
version to use (for SSLv3, SSLv2 or TLSv1 respectively):
|
||||||
|
|
||||||
curl -2 https://secure.site.com/
|
curl -2 https://secure.site.com/
|
||||||
|
|
||||||
@@ -578,15 +678,15 @@ HTTPS
|
|||||||
formatted one that curl can use, do something like this (assuming netscape,
|
formatted one that curl can use, do something like this (assuming netscape,
|
||||||
but IE is likely to work similarly):
|
but IE is likely to work similarly):
|
||||||
|
|
||||||
You start with hitting the 'security' menu button in netscape.
|
You start with hitting the 'security' menu button in netscape.
|
||||||
|
|
||||||
Select 'certificates->yours' and then pick a certificate in the list
|
Select 'certificates->yours' and then pick a certificate in the list
|
||||||
|
|
||||||
Press the 'export' button
|
Press the 'export' button
|
||||||
|
|
||||||
enter your PIN code for the certs
|
enter your PIN code for the certs
|
||||||
|
|
||||||
select a proper place to save it
|
select a proper place to save it
|
||||||
|
|
||||||
Run the 'openssl' application to convert the certificate. If you cd to the
|
Run the 'openssl' application to convert the certificate. If you cd to the
|
||||||
openssl installation, you can do it like:
|
openssl installation, you can do it like:
|
||||||
@@ -634,9 +734,9 @@ TIME CONDITIONS
|
|||||||
curl -z -local.html http://remote.server.com/remote.html
|
curl -z -local.html http://remote.server.com/remote.html
|
||||||
|
|
||||||
You can specify a "free text" date as condition. Tell curl to only download
|
You can specify a "free text" date as condition. Tell curl to only download
|
||||||
the file if it was updated since yesterday:
|
the file if it was updated since January 12, 2012:
|
||||||
|
|
||||||
curl -z yesterday http://remote.server.com/remote.html
|
curl -z "Jan 12 2012" http://remote.server.com/remote.html
|
||||||
|
|
||||||
Curl will then accept a wide range of date formats. You always make the date
|
Curl will then accept a wide range of date formats. You always make the date
|
||||||
check the other way around by prepending it with a dash '-'.
|
check the other way around by prepending it with a dash '-'.
|
||||||
@@ -675,7 +775,7 @@ LDAP
|
|||||||
Working with LDAP URLs":
|
Working with LDAP URLs":
|
||||||
http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm
|
http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm
|
||||||
|
|
||||||
RFC 2255, "The LDAP URL Format" http://www.rfc-editor.org/rfc/rfc2255.txt
|
RFC 2255, "The LDAP URL Format" http://curl.haxx.se/rfc/rfc2255.txt
|
||||||
|
|
||||||
To show you an example, this is now I can get all people from my local LDAP
|
To show you an example, this is now I can get all people from my local LDAP
|
||||||
server that has a certain sub-domain in their email address:
|
server that has a certain sub-domain in their email address:
|
||||||
@@ -689,11 +789,11 @@ ENVIRONMENT VARIABLES
|
|||||||
|
|
||||||
Curl reads and understands the following environment variables:
|
Curl reads and understands the following environment variables:
|
||||||
|
|
||||||
HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
|
http_proxy, HTTPS_PROXY, FTP_PROXY
|
||||||
|
|
||||||
They should be set for protocol-specific proxies. General proxy should be
|
They should be set for protocol-specific proxies. General proxy should be
|
||||||
set with
|
set with
|
||||||
|
|
||||||
ALL_PROXY
|
ALL_PROXY
|
||||||
|
|
||||||
A comma-separated list of host names that shouldn't go through any proxy is
|
A comma-separated list of host names that shouldn't go through any proxy is
|
||||||
@@ -701,8 +801,9 @@ ENVIRONMENT VARIABLES
|
|||||||
|
|
||||||
NO_PROXY
|
NO_PROXY
|
||||||
|
|
||||||
If a tail substring of the domain-path for a host matches one of these
|
If the host name matches one of these strings, or the host is within the
|
||||||
strings, transactions with that node will not be proxied.
|
domain of one of these strings, transactions with that node will not be
|
||||||
|
proxied.
|
||||||
|
|
||||||
|
|
||||||
The usage of the -x/--proxy flag overrides the environment variables.
|
The usage of the -x/--proxy flag overrides the environment variables.
|
||||||
@@ -713,12 +814,12 @@ NETRC
|
|||||||
to specify name and password for commonly visited ftp sites in a file so
|
to specify name and password for commonly visited ftp sites in a file so
|
||||||
that you don't have to type them in each time you visit those sites. You
|
that you don't have to type them in each time you visit those sites. You
|
||||||
realize this is a big security risk if someone else gets hold of your
|
realize this is a big security risk if someone else gets hold of your
|
||||||
passwords, so therefor most unix programs won't read this file unless it is
|
passwords, so therefore most unix programs won't read this file unless it is
|
||||||
only readable by yourself (curl doesn't care though).
|
only readable by yourself (curl doesn't care though).
|
||||||
|
|
||||||
Curl supports .netrc files if told so (using the -n/--netrc option). This is
|
Curl supports .netrc files if told so (using the -n/--netrc and
|
||||||
not restricted to only ftp, but curl can use it for all protocols where
|
--netrc-optional options). This is not restricted to only ftp,
|
||||||
authentication is used.
|
but curl can use it for all protocols where authentication is used.
|
||||||
|
|
||||||
A very simple .netrc file could look something like:
|
A very simple .netrc file could look something like:
|
||||||
|
|
||||||
@@ -735,18 +836,19 @@ CUSTOM OUTPUT
|
|||||||
|
|
||||||
curl -w 'We downloaded %{size_download} bytes\n' www.download.com
|
curl -w 'We downloaded %{size_download} bytes\n' www.download.com
|
||||||
|
|
||||||
KERBEROS4 FTP TRANSFER
|
KERBEROS FTP TRANSFER
|
||||||
|
|
||||||
Curl supports kerberos4 for FTP transfers. You need the kerberos package
|
Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need
|
||||||
installed and used at curl build time for it to be used.
|
the kerberos package installed and used at curl build time for it to be
|
||||||
|
used.
|
||||||
|
|
||||||
First, get the krb-ticket the normal way, like with the kauth tool. Then use
|
First, get the krb-ticket the normal way, like with the kinit/kauth tool.
|
||||||
curl in way similar to:
|
Then use curl in way similar to:
|
||||||
|
|
||||||
curl --krb4 private ftp://krb4site.com -u username:fakepwd
|
curl --krb private ftp://krb4site.com -u username:fakepwd
|
||||||
|
|
||||||
There's no use for a password on the -u switch, but a blank one will make
|
There's no use for a password on the -u switch, but a blank one will make
|
||||||
curl ask for one and you already entered the real password to kauth.
|
curl ask for one and you already entered the real password to kinit/kauth.
|
||||||
|
|
||||||
TELNET
|
TELNET
|
||||||
|
|
||||||
@@ -778,41 +880,92 @@ TELNET
|
|||||||
to track when the login prompt is received and send the username and
|
to track when the login prompt is received and send the username and
|
||||||
password accordingly.
|
password accordingly.
|
||||||
|
|
||||||
PERSISTANT CONNECTIONS
|
PERSISTENT CONNECTIONS
|
||||||
|
|
||||||
Specifying multiple files on a single command line will make curl transfer
|
Specifying multiple files on a single command line will make curl transfer
|
||||||
all of them, one after the other in the specified order.
|
all of them, one after the other in the specified order.
|
||||||
|
|
||||||
libcurl will attempt to use persistant connections for the transfers so that
|
libcurl will attempt to use persistent connections for the transfers so that
|
||||||
the second transfer to the same host can use the same connection that was
|
the second transfer to the same host can use the same connection that was
|
||||||
already initiated and was left open in the previous transfer. This greatly
|
already initiated and was left open in the previous transfer. This greatly
|
||||||
decreases connection time for all but the first transfer and it makes a far
|
decreases connection time for all but the first transfer and it makes a far
|
||||||
better use of the network.
|
better use of the network.
|
||||||
|
|
||||||
Note that curl cannot use persistant connections for transfers that are used
|
Note that curl cannot use persistent connections for transfers that are used
|
||||||
in subsequence curl invokes. Try to stuff as many URLs as possible on the
|
in subsequence curl invokes. Try to stuff as many URLs as possible on the
|
||||||
same command line if they are using the same host, as that'll make the
|
same command line if they are using the same host, as that'll make the
|
||||||
transfers faster. If you use a http proxy for file transfers, practicly
|
transfers faster. If you use a http proxy for file transfers, practically
|
||||||
all transfers will be persistant.
|
all transfers will be persistent.
|
||||||
|
|
||||||
|
MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE
|
||||||
|
|
||||||
|
As is mentioned above, you can download multiple files with one command line
|
||||||
|
by simply adding more URLs. If you want those to get saved to a local file
|
||||||
|
instead of just printed to stdout, you need to add one save option for each
|
||||||
|
URL you specify. Note that this also goes for the -O option (but not
|
||||||
|
--remote-name-all).
|
||||||
|
|
||||||
|
For example: get two files and use -O for the first and a custom file
|
||||||
|
name for the second:
|
||||||
|
|
||||||
|
curl -O http://url.com/file.txt ftp://ftp.com/moo.exe -o moo.jpg
|
||||||
|
|
||||||
|
You can also upload multiple files in a similar fashion:
|
||||||
|
|
||||||
|
curl -T local1 ftp://ftp.com/moo.exe -T local2 ftp://ftp.com/moo2.txt
|
||||||
|
|
||||||
|
IPv6
|
||||||
|
|
||||||
|
curl will connect to a server with IPv6 when a host lookup returns an IPv6
|
||||||
|
address and fall back to IPv4 if the connection fails. The --ipv4 and --ipv6
|
||||||
|
options can specify which address to use when both are available. IPv6
|
||||||
|
addresses can also be specified directly in URLs using the syntax:
|
||||||
|
|
||||||
|
http://[2001:1890:1112:1::20]/overview.html
|
||||||
|
|
||||||
|
When this style is used, the -g option must be given to stop curl from
|
||||||
|
interpreting the square brackets as special globbing characters. Link local
|
||||||
|
and site local addresses including a scope identifier, such as fe80::1234%1,
|
||||||
|
may also be used, but the scope portion must be numeric and the percent
|
||||||
|
character must be URL escaped. The previous example in an SFTP URL might
|
||||||
|
look like:
|
||||||
|
|
||||||
|
sftp://[fe80::1234%251]/
|
||||||
|
|
||||||
|
IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface
|
||||||
|
or --ftp-port options) should not be URL encoded.
|
||||||
|
|
||||||
Persistant connections were introduced in curl 7.7.
|
|
||||||
|
|
||||||
MAILING LISTS
|
MAILING LISTS
|
||||||
|
|
||||||
For your convenience, we have several open mailing lists to discuss curl,
|
For your convenience, we have several open mailing lists to discuss curl,
|
||||||
its development and things relevant to this.
|
its development and things relevant to this. Get all info at
|
||||||
|
http://curl.haxx.se/mail/. Some of the lists available are:
|
||||||
|
|
||||||
To subscribe to the main curl list, mail curl-request@contactor.se with
|
curl-users
|
||||||
"subscribe <fill in your email address>" in the body.
|
|
||||||
|
|
||||||
To subscribe to the curl-library users/deverlopers list, follow the
|
Users of the command line tool. How to use it, what doesn't work, new
|
||||||
instructions at http://curl.haxx.se/mail/
|
features, related tools, questions, news, installations, compilations,
|
||||||
|
running, porting etc.
|
||||||
|
|
||||||
To subscribe to the curl-announce list, to only get information about new
|
curl-library
|
||||||
releases, follow the instructions at http://curl.haxx.se/mail/
|
|
||||||
|
|
||||||
To subscribe to the curl-and-PHP list in which curl using with PHP is
|
Developers using or developing libcurl. Bugs, extensions, improvements.
|
||||||
discussed, follow the instructions at http://curl.haxx.se/mail/
|
|
||||||
|
curl-announce
|
||||||
|
|
||||||
|
Low-traffic. Only receives announcements of new public versions. At worst,
|
||||||
|
that makes something like one or two mails per month, but usually only one
|
||||||
|
mail every second month.
|
||||||
|
|
||||||
|
curl-and-php
|
||||||
|
|
||||||
|
Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP
|
||||||
|
with a curl angle.
|
||||||
|
|
||||||
|
curl-and-python
|
||||||
|
|
||||||
|
Python hackers using curl with or without the python binding pycurl.
|
||||||
|
|
||||||
Please direct curl questions, feature requests and trouble reports to one of
|
Please direct curl questions, feature requests and trouble reports to one of
|
||||||
these mailing lists instead of mailing any individual.
|
these mailing lists instead of mailing any individual.
|
||||||
|
|||||||
@@ -1,32 +1,40 @@
|
|||||||
#
|
#
|
||||||
# $Id$
|
|
||||||
#
|
#
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
AUTOMAKE_OPTIONS = foreign no-dependencies
|
||||||
|
|
||||||
man_MANS = \
|
man_MANS = curl.1 curl-config.1
|
||||||
curl.1 \
|
GENHTMLPAGES = curl.html curl-config.html
|
||||||
curl-config.1
|
PDFPAGES = curl.pdf curl-config.pdf
|
||||||
|
|
||||||
HTMLPAGES = \
|
HTMLPAGES = $(GENHTMLPAGES) index.html
|
||||||
curl.html \
|
|
||||||
curl-config.html
|
|
||||||
|
|
||||||
SUBDIRS = examples libcurl
|
SUBDIRS = examples libcurl
|
||||||
|
|
||||||
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS \
|
CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES)
|
||||||
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS \
|
|
||||||
VERSIONS KNOWN_BUGS $(man_MANS) $(HTMLPAGES)
|
|
||||||
|
|
||||||
MAN2HTML= gnroff -man $< | man2html >$@
|
EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS \
|
||||||
|
README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS \
|
||||||
|
KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL \
|
||||||
|
$(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp
|
||||||
|
|
||||||
SUFFIXES = .1 .3 .html
|
MAN2HTML= roffit < $< >$@
|
||||||
|
|
||||||
|
SUFFIXES = .1 .html .pdf
|
||||||
|
|
||||||
html: $(HTMLPAGES)
|
html: $(HTMLPAGES)
|
||||||
cd libcurl; make html
|
cd libcurl; make html
|
||||||
|
|
||||||
.3.html:
|
pdf: $(PDFPAGES)
|
||||||
$(MAN2HTML)
|
cd libcurl; make pdf
|
||||||
|
|
||||||
.1.html:
|
.1.html:
|
||||||
$(MAN2HTML)
|
$(MAN2HTML)
|
||||||
|
|
||||||
|
.1.pdf:
|
||||||
|
@(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \
|
||||||
|
groff -Tps -man $< >$$foo.ps; \
|
||||||
|
ps2pdf $$foo.ps $@; \
|
||||||
|
rm $$foo.ps; \
|
||||||
|
echo "converted $< to $@")
|
||||||
|
|
||||||
|
|||||||
16
docs/README.cmake
Executable file
16
docs/README.cmake
Executable file
@@ -0,0 +1,16 @@
|
|||||||
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
README.cmake
|
||||||
|
Read the README file first.
|
||||||
|
|
||||||
|
Curl contains CMake build files that provide a way to build Curl with the
|
||||||
|
CMake build tool (www.cmake.org). CMake is a cross platform meta build tool
|
||||||
|
that generates native makefiles and IDE project files. The CMake build
|
||||||
|
system can be used to build Curl on any of its supported platforms.
|
||||||
|
|
||||||
|
Read the INSTALL.cmake file for instructions on how to compile curl with
|
||||||
|
CMake.
|
||||||
27
docs/README.netware
Normal file
27
docs/README.netware
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
README.netware
|
||||||
|
|
||||||
|
Read the README file first.
|
||||||
|
|
||||||
|
Curl has been successfully compiled with gcc / nlmconv on different flavours
|
||||||
|
of Linux as well as with the official Metrowerks CodeWarrior compiler.
|
||||||
|
While not being the main development target, a continously growing share of
|
||||||
|
curl users are NetWare-based, specially also consuming the lib from PHP.
|
||||||
|
|
||||||
|
The unix-style man pages are tricky to read on windows, so therefore are all
|
||||||
|
those pages converted to HTML as well as pdf, and included in the release
|
||||||
|
archives.
|
||||||
|
|
||||||
|
The main curl.1 man page is also "built-in" in the command line tool. Use a
|
||||||
|
command line similar to this in order to extract a separate text file:
|
||||||
|
|
||||||
|
curl -M >manual.txt
|
||||||
|
|
||||||
|
Read the INSTALL file for instructions how to compile curl self.
|
||||||
|
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
README.win32
|
README.win32
|
||||||
@@ -13,10 +13,14 @@ README.win32
|
|||||||
are win32-based.
|
are win32-based.
|
||||||
|
|
||||||
The unix-style man pages are tricky to read on windows, so therefore are all
|
The unix-style man pages are tricky to read on windows, so therefore are all
|
||||||
those pages also converted to HTML and those are also included in the
|
those pages converted to HTML as well as pdf, and included in the release
|
||||||
release archives.
|
archives.
|
||||||
|
|
||||||
The main curl.1 man page is also "built-in" in the command line tool. Use a
|
The main curl.1 man page is also "built-in" in the command line tool. Use a
|
||||||
command line similar to this in order to extract a separate text file:
|
command line similar to this in order to extract a separate text file:
|
||||||
|
|
||||||
curl -M >manual.txt
|
curl -M >manual.txt
|
||||||
|
|
||||||
|
Read the INSTALL file for instructions how to compile curl self.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,13 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
Project ___| | | | _ \| |
|
Project ___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
|
|
||||||
This document has been introduced in order to let you find documents that
|
This document lists documents and standards used by curl.
|
||||||
specify standards used by curl, software that extends curl, web pages with
|
|
||||||
"competing" utilities and information pages that describe some of the tools
|
|
||||||
that we use to build/compile/develop curl.
|
|
||||||
|
|
||||||
Standards
|
RFC 959 - The FTP protocol
|
||||||
---------
|
|
||||||
|
|
||||||
RFC 959 - Defines how FTP works
|
|
||||||
|
|
||||||
RFC 1635 - How to Use Anonymous FTP
|
RFC 1635 - How to Use Anonymous FTP
|
||||||
|
|
||||||
@@ -38,12 +32,16 @@ Standards
|
|||||||
|
|
||||||
RFC 2068 - HTTP 1.1 (obsoleted by RFC 2616)
|
RFC 2068 - HTTP 1.1 (obsoleted by RFC 2616)
|
||||||
|
|
||||||
|
RFC 2104 - Keyed-Hashing for Message Authentication
|
||||||
|
|
||||||
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
|
RFC 2109 - HTTP State Management Mechanism (cookie stuff)
|
||||||
- Also, read Netscape's specification at
|
- Also, read Netscape's specification at
|
||||||
http://curl.haxx.se/rfc/cookie_spec.html
|
http://curl.haxx.se/rfc/cookie_spec.html
|
||||||
|
|
||||||
RFC 2183 - The Content-Disposition Header Field
|
RFC 2183 - The Content-Disposition Header Field
|
||||||
|
|
||||||
|
RFC 2195 - CRAM-MD5 authentication
|
||||||
|
|
||||||
RFC 2229 - A Dictionary Server Protocol
|
RFC 2229 - A Dictionary Server Protocol
|
||||||
|
|
||||||
RFC 2255 - Newer LDAP URL syntax document.
|
RFC 2255 - Newer LDAP URL syntax document.
|
||||||
@@ -52,7 +50,7 @@ Standards
|
|||||||
Character Sets, Languages, and Continuations
|
Character Sets, Languages, and Continuations
|
||||||
|
|
||||||
RFC 2388 - "Returning Values from Forms: multipart/form-data"
|
RFC 2388 - "Returning Values from Forms: multipart/form-data"
|
||||||
Use this as an addition to the RFC1867
|
Use this as an addition to the RFC1867
|
||||||
|
|
||||||
RFC 2396 - "Uniform Resource Identifiers: Generic Syntax and Semantics" This
|
RFC 2396 - "Uniform Resource Identifiers: Generic Syntax and Semantics" This
|
||||||
one obsoletes RFC 1738, but since RFC 1738 is often mentioned
|
one obsoletes RFC 1738, but since RFC 1738 is often mentioned
|
||||||
@@ -67,59 +65,19 @@ Standards
|
|||||||
RFC 2617 - HTTP Authentication
|
RFC 2617 - HTTP Authentication
|
||||||
|
|
||||||
RFC 2718 - Guidelines for new URL Schemes
|
RFC 2718 - Guidelines for new URL Schemes
|
||||||
|
|
||||||
RFC 2732 - Format for Literal IPv6 Addresses in URL's
|
RFC 2732 - Format for Literal IPv6 Addresses in URL's
|
||||||
|
|
||||||
RFC 2818 - HTTP Over TLS (TLS is the successor to SSL)
|
RFC 2818 - HTTP Over TLS (TLS is the successor to SSL)
|
||||||
|
|
||||||
|
RFC 2821 - SMTP protocol
|
||||||
|
|
||||||
RFC 2964 - Use of HTTP State Management
|
RFC 2964 - Use of HTTP State Management
|
||||||
|
|
||||||
RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109
|
RFC 2965 - HTTP State Management Mechanism. Cookies. Obsoletes RFC2109
|
||||||
|
|
||||||
Compilers
|
RFC 3207 - SMTP over TLS
|
||||||
---------
|
|
||||||
MingW32 - http://www.mingw.org/
|
|
||||||
|
|
||||||
gcc - http://www.gnu.org/software/gcc/gcc.html
|
RFC 4616 - PLAIN authentication
|
||||||
|
|
||||||
Software
|
RFC 4954 - SMTP Authentication
|
||||||
--------
|
|
||||||
OpenSSL - http://www.openssl.org/
|
|
||||||
|
|
||||||
OpenLDAP - http://www.openldap.org/
|
|
||||||
|
|
||||||
zlib - http://www.cdrom.com/pub/infozip/zlib/
|
|
||||||
|
|
||||||
Similar Tools
|
|
||||||
-------------
|
|
||||||
wget - http://sunsite.dk/wget/
|
|
||||||
|
|
||||||
snarf - http://www.xach.com/snarf/
|
|
||||||
|
|
||||||
lynx - http://lynx.browser.org/ (well at least when -dump is used)
|
|
||||||
|
|
||||||
swebget - http://www.uni-hildesheim.de/~smol0075/swebget/
|
|
||||||
|
|
||||||
Kermit - http://www.columbia.edu/kermit/ftpclient
|
|
||||||
|
|
||||||
Pavuk - http://www.idata.sk/~ondrej/pavuk/
|
|
||||||
|
|
||||||
httpr - http://zwolak.dhs.org/httpr/
|
|
||||||
|
|
||||||
puf - http://www.inf.tu-dresden.de/~ob6/sw/puf.html
|
|
||||||
|
|
||||||
Related Software
|
|
||||||
----------------
|
|
||||||
ftpparse - http://cr.yp.to/ftpparse.html parses FTP LIST responses
|
|
||||||
|
|
||||||
autoconf - http://www.gnu.org/software/autoconf/autoconf.html
|
|
||||||
|
|
||||||
automake - http://www.gnu.org/software/automake/automake.html
|
|
||||||
|
|
||||||
bison - http://www.gnu.org/software/bison/bison.html
|
|
||||||
|
|
||||||
gzip - http://www.gnu.org/software/gzip/gzip.html
|
|
||||||
|
|
||||||
tar - http://www.gnu.org/software/tar/tar.html
|
|
||||||
|
|
||||||
libtool - http://www.gnu.org/software/libtool/libtool.html
|
|
||||||
|
|||||||
116
docs/SSLCERTS
Normal file
116
docs/SSLCERTS
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
Peer SSL Certificate Verification
|
||||||
|
=================================
|
||||||
|
|
||||||
|
libcurl performs peer SSL certificate verification by default. This is done
|
||||||
|
by using CA cert bundle that the SSL library can use to make sure the peer's
|
||||||
|
server certificate is valid.
|
||||||
|
|
||||||
|
If you communicate with HTTPS or FTPS servers using certificates that are
|
||||||
|
signed by CAs present in the bundle, you can be sure that the remote server
|
||||||
|
really is the one it claims to be.
|
||||||
|
|
||||||
|
Until 7.18.0, curl bundled a severely outdated ca bundle file that was
|
||||||
|
installed by default. These days, the curl archives include no ca certs at
|
||||||
|
all. You need to get them elsewhere. See below for example.
|
||||||
|
|
||||||
|
If the remote server uses a self-signed certificate, if you don't install a CA
|
||||||
|
cert bundle, if the server uses a certificate signed by a CA that isn't
|
||||||
|
included in the bundle you use or if the remote host is an impostor
|
||||||
|
impersonating your favorite 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 this with
|
||||||
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||||
|
|
||||||
|
With the curl command line tool, you disable this with -k/--insecure.
|
||||||
|
|
||||||
|
2. Get a CA certificate that can verify the remote server and use the proper
|
||||||
|
option to point out this CA cert for verification when connecting. For
|
||||||
|
libcurl hackers: curl_easy_setopt(curl, CURLOPT_CAPATH, capath);
|
||||||
|
|
||||||
|
With the curl command line 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 used can be changed by running configure
|
||||||
|
with the --with-ca-bundle option pointing out the path of your choice.
|
||||||
|
|
||||||
|
To do this, you need to get the CA cert for your server in PEM format and
|
||||||
|
then append that to your CA cert bundle.
|
||||||
|
|
||||||
|
If you use Internet Explorer, this is one way to get extract the CA cert
|
||||||
|
for a particular server:
|
||||||
|
|
||||||
|
o View the certificate by double-clicking the padlock
|
||||||
|
o Find out where the CA certificate is kept (Certificate>
|
||||||
|
Authority Information Access>URL)
|
||||||
|
o Get a copy of the crt file using curl
|
||||||
|
o Convert it from crt to PEM using the openssl tool:
|
||||||
|
openssl x509 -inform DES -in yourdownloaded.crt \
|
||||||
|
-out outcert.pem -text
|
||||||
|
o Append the 'outcert.pem' to the CA cert bundle or use it stand-alone
|
||||||
|
as described below.
|
||||||
|
|
||||||
|
If you use the 'openssl' tool, this is one way to get extract the CA cert
|
||||||
|
for a particular server:
|
||||||
|
|
||||||
|
o openssl s_client -connect xxxxx.com:443 |tee logfile
|
||||||
|
o type "QUIT", followed by the "ENTER" key
|
||||||
|
o The certificate will have "BEGIN CERTIFICATE" and "END CERTIFICATE"
|
||||||
|
markers.
|
||||||
|
o If you want to see the data in the certificate, you can do: "openssl
|
||||||
|
x509 -inform PEM -in certfile -text -out certdata" where certfile is
|
||||||
|
the cert you extracted from logfile. Look in certdata.
|
||||||
|
o If you want to trust the certificate, you can append it to your
|
||||||
|
cert_bundle or use it stand-alone as described. Just remember that the
|
||||||
|
security is no better than the way you obtained the certificate.
|
||||||
|
|
||||||
|
4. If you're using the curl command line tool, you can specify your own CA
|
||||||
|
cert path by setting the environment variable CURL_CA_BUNDLE to the path
|
||||||
|
of your choice.
|
||||||
|
|
||||||
|
If you're using the curl command line tool on Windows, curl will search
|
||||||
|
for a CA cert file named "curl-ca-bundle.crt" in these directories and in
|
||||||
|
this order:
|
||||||
|
1. application's directory
|
||||||
|
2. current working directory
|
||||||
|
3. Windows System directory (e.g. C:\windows\system32)
|
||||||
|
4. Windows Directory (e.g. C:\windows)
|
||||||
|
5. all directories along %PATH%
|
||||||
|
|
||||||
|
5. Get a better/different/newer CA cert bundle! One option is to extract the
|
||||||
|
one a recent Firefox browser uses by running 'make ca-bundle' in the curl
|
||||||
|
build tree root, or possibly download a version that was generated this
|
||||||
|
way for you:
|
||||||
|
|
||||||
|
http://curl.haxx.se/docs/caextract.html
|
||||||
|
|
||||||
|
Neglecting to use one of the above methods when dealing with a server using a
|
||||||
|
certificate that isn't signed by one of the certificates in the installed CA
|
||||||
|
cert bundle, will cause SSL to report an error ("certificate verify failed")
|
||||||
|
during the handshake and SSL will then refuse further communication with that
|
||||||
|
server.
|
||||||
|
|
||||||
|
Peer SSL Certificate Verification with NSS
|
||||||
|
==========================================
|
||||||
|
|
||||||
|
If libcurl is build with NSS support then depending on the OS distribution it
|
||||||
|
is probably required to take some additional steps to use the system-wide CA
|
||||||
|
cert db. RedHat ships with an additional module libnsspem.so which enables NSS
|
||||||
|
to read the OpenSSL PEM CA bundle. With OpenSuSE this lib is missing, and NSS
|
||||||
|
can only work with its own internal formats. Also NSS got a new database
|
||||||
|
format:
|
||||||
|
https://wiki.mozilla.org/NSS_Shared_DB
|
||||||
|
Starting with version 7.19.7 libcurl will check for the NSS version it runs,
|
||||||
|
and add automatically the 'sql:' prefix to the certdb directory (either the
|
||||||
|
hardcoded default /etc/pki/nssdb or the directory configured with SSL_DIR
|
||||||
|
environment variable) if a version 3.12.0 or later is detected.
|
||||||
|
To check which certdb format your distribution provides examine the default
|
||||||
|
certdb location /etc/pki/nssdb; the new certdb format can be identified by
|
||||||
|
the filenames cert9.db, key4.db, pkcs11.txt; filenames of older versions are
|
||||||
|
cert8.db, key3.db, modsec.db.
|
||||||
|
Usually these cert databases are empty; but NSS also has built-in CAs which are
|
||||||
|
provided through a shared library libnssckbi.so; if you want to use these
|
||||||
|
built-in CAs then create a symlink to libnssckbi.so in /etc/pki/nssdb:
|
||||||
|
ln -s /usr/lib[64]/libnssckbi.so /etc/pki/nssdb/libnssckbi.so
|
||||||
|
|
||||||
|
|
||||||
893
docs/THANKS
893
docs/THANKS
@@ -1,81 +1,814 @@
|
|||||||
This project has been alive for several years. Countless people have provided
|
This project has been alive for many years. Countless people have provided
|
||||||
feedback that have improved curl. Here follows a (incomplete) list of people
|
feedback that have improved curl. Here follows a list of people that have
|
||||||
that have contributed with non-trivial parts:
|
contributed (a-z order).
|
||||||
|
|
||||||
- Daniel Stenberg <daniel@haxx.se>
|
If you have contributed but are missing here, please let us know!
|
||||||
- Rafael Sagula <sagula@inf.ufrgs.br>
|
|
||||||
- Sampo Kellomaki <sampo@iki.fi>
|
Aaron Oneal
|
||||||
- Linas Vepstas <linas@linas.org>
|
Adam D. Moss
|
||||||
- Bjorn Reese <breese@mail1.stofanet.dk>
|
Adam Piggott
|
||||||
- Johan Anderson <johan@homemail.com>
|
Adrian Schuur
|
||||||
- Kjell Ericson <Kjell.Ericson@haxx.se>
|
Akos Pasztory
|
||||||
- Troy Engel <tengel@sonic.net>
|
Alan Pinstein
|
||||||
- Ryan Nelson <ryan@inch.com>
|
Albert Chin-A-Young
|
||||||
- Bj<42>rn Stenberg <bjorn@haxx.se>
|
Albert Choy
|
||||||
- Angus Mackay <amackay@gus.ml.org>
|
Ale Vesely
|
||||||
- Eric Young <eay@cryptsoft.com>
|
Aleksandar Milivojevic
|
||||||
- Simon Dick <simond@totally.irrelevant.org>
|
Alessandro Vesely
|
||||||
- Oren Tirosh <oren@monty.hishome.net>
|
Alex Bligh
|
||||||
- Steven G. Johnson <stevenj@alum.mit.edu>
|
Alex Fishman
|
||||||
- Gilbert Ramirez Jr. <gram@verdict.uthscsa.edu>
|
Alex Neblett
|
||||||
- Andr<64>s Garc<72>a <ornalux@redestb.es>
|
Alex Suykov
|
||||||
- Douglas E. Wegscheid <wegscd@whirlpool.com>
|
Alex aka WindEagle
|
||||||
- Mark Butler <butlerm@xmission.com>
|
Alexander Beedie
|
||||||
- Eric Thelin <eric@generation-i.com>
|
Alexander Kourakos
|
||||||
- Marc Boucher <marc@mbsi.ca>
|
Alexander Krasnostavsky
|
||||||
- Greg Onufer <Greg.Onufer@Eng.Sun.COM>
|
Alexander Lazic
|
||||||
- Doug Kaufman <dkaufman@rahul.net>
|
Alexander Zhuravlev
|
||||||
- David Eriksson <david@2good.com>
|
Alexey Borzov
|
||||||
- Ralph Beckmann <rabe@uni-paderborn.de>
|
Alexey Pesternikov
|
||||||
- T. Yamada <tai@imasy.or.jp>
|
Alexey Simak
|
||||||
- Lars J. Aas <larsa@sim.no>
|
Alexis Carvalho
|
||||||
- J<>rn Hartroth <Joern.Hartroth@computer.org>
|
Allen Pulsifer
|
||||||
- Matthew Clarke <clamat@van.maves.ca>
|
Amol Pattekar
|
||||||
- Linus Nielsen Feltzing <linus@haxx.se>
|
Anatoli Tubman
|
||||||
- Felix von Leitner <felix@convergence.de>
|
Anders Gustafsson
|
||||||
- Dan Zitter <dzitter@zitter.net>
|
Andi Jahja
|
||||||
- Jongki Suwandi <Jongki.Suwandi@eng.sun.com>
|
Andre Guibert de Bruet
|
||||||
- Chris Maltby <chris@aurema.com>
|
Andreas Damm
|
||||||
- Ron Zapp <rzapper@yahoo.com>
|
Andreas Faerber
|
||||||
- Paul Marquis <pmarquis@iname.com>
|
Andreas Farber
|
||||||
- Ellis Pritchard <ellis@citria.com>
|
Andreas Ntaflos
|
||||||
- Damien Adant <dams@usa.net>
|
Andreas Olsson
|
||||||
- Chris <cbayliss@csc.come>
|
Andreas Rieke
|
||||||
- Marco G. Salvagno <mgs@whiz.cjb.net>
|
Andreas Schuldei
|
||||||
- Paul Marquis <pmarquis@iname.com>
|
Andreas Wurf
|
||||||
- David LeBlanc <dleblanc@qnx.com>
|
Andrei Benea
|
||||||
- Rich Gray at Plus Technologies
|
Andres Garcia
|
||||||
- Luong Dinh Dung <u8luong@lhsystems.hu>
|
Andrew Benham
|
||||||
- Torsten Foertsch <torsten.foertsch@gmx.net>
|
Andrew Biggs
|
||||||
- Kristian K<>hntopp <kris@koehntopp.de>
|
Andrew Bushnell
|
||||||
- Fred Noz <FNoz@siac.com>
|
Andrew Francis
|
||||||
- Caolan McNamara <caolan@csn.ul.ie>
|
Andrew Fuller
|
||||||
- Albert Chin-A-Young <china@thewrittenword.com>
|
Andrew Moise
|
||||||
- Stephen Kick <skick@epicrealm.com>
|
Andrew Wansink
|
||||||
- Martin Hedenfalk <mhe@stacken.kth.se>
|
Andrew de los Reyes
|
||||||
- Richard Prescott <rip at step.polymtl.ca>
|
Andr<EFBFBD>s Garc<72>a
|
||||||
- Jason S. Priebe <priebe@wral-tv.com>
|
Andy Cedilnik
|
||||||
- T. Bharath <TBharath@responsenetworks.com>
|
Andy Serpa
|
||||||
- Alexander Kourakos <awk@users.sourceforge.net>
|
Andy Tsouladze
|
||||||
- James Griffiths <griffiths_james@yahoo.com>
|
Angus Mackay
|
||||||
- Loic Dachary <loic@senga.org>
|
Anthony Bryan
|
||||||
- Robert Weaver <robert.weaver@sabre.com>
|
Antoine Calando
|
||||||
- Ingo Ralf Blum <ingoralfblum@ingoralfblum.com>
|
Anton Kalmykov
|
||||||
- Jun-ichiro itojun Hagino <itojun@iijlab.net>
|
Arkadiusz Miskiewicz
|
||||||
- Frederic Lepied <flepied@mandrakesoft.com>
|
Armel Asselin
|
||||||
- Georg Horn <horn@koblenz-net.de>
|
Arnaud Ebalard
|
||||||
- Cris Bailiff <c.bailiff@awayweb.com>
|
Arve Knudsen
|
||||||
- Sterling Hughes <sterling@designmultimedia.com>
|
Ates Goral
|
||||||
- S. Moonesamy
|
Augustus Saunders
|
||||||
- Ingo Wilken <iw@WWW.Ecce-Terram.DE>
|
Avery Fay
|
||||||
- Pawel A. Gajda <mis@k2.net.pl>
|
Axel Tillequin
|
||||||
- Patrick Bihan-Faou
|
Balint Szilakszi
|
||||||
- Nico Baggus <Nico.Baggus@mail.ing.nl>
|
Bart Whiteley
|
||||||
- Sergio Ballestrero
|
Bas Mevissen
|
||||||
- Andrew Francis <locust@familyhealth.com.au>
|
Ben Greear
|
||||||
- Tomasz Lacki <Tomasz.Lacki@primark.pl>
|
Ben Madsen
|
||||||
- Georg Huettenegger <georg@ist.org>
|
Ben Van Hof
|
||||||
- John Lask <johnlask@hotmail.com>
|
Benbuck Nason
|
||||||
- Eric Lavigne <erlavigne@wanadoo.fr>
|
Benjamin Gerard
|
||||||
- Marcus Webster <marcus.webster@phocis.com>
|
Bernard Leak
|
||||||
- G<>tz Babin-Ebell <babin<69>ebell@trustcenter.de>
|
Bertrand Demiddelaer
|
||||||
|
Bill Egert
|
||||||
|
Bill Hoffman
|
||||||
|
Bjorn Augustsson
|
||||||
|
Bjorn Reese
|
||||||
|
Bj<EFBFBD>rn Stenberg
|
||||||
|
Bob Richmond
|
||||||
|
Bob Schader
|
||||||
|
Bogdan Nicula
|
||||||
|
Brad Burdick
|
||||||
|
Bradford Bruce
|
||||||
|
Brendan Jurd
|
||||||
|
Brent Beardsley
|
||||||
|
Brian Akins
|
||||||
|
Brian Dessent
|
||||||
|
Brian J. Murrell
|
||||||
|
Brian R Duffy
|
||||||
|
Brian Ulm
|
||||||
|
Brock Noland
|
||||||
|
Bruce Mitchener
|
||||||
|
Bryan Henderson
|
||||||
|
Bryan Kemp
|
||||||
|
Camille Moncelier
|
||||||
|
Caolan McNamara
|
||||||
|
Carsten Lange
|
||||||
|
Casey O'Donnell
|
||||||
|
Chad Monroe
|
||||||
|
Charles Kerr
|
||||||
|
Chih-Chung Chang
|
||||||
|
Chris "Bob Bob"
|
||||||
|
Chris Combes
|
||||||
|
Chris Conroy
|
||||||
|
Chris Deidun
|
||||||
|
Chris Flerackers
|
||||||
|
Chris Gaukroger
|
||||||
|
Chris Maltby
|
||||||
|
Chris Mumford
|
||||||
|
Christian Krause
|
||||||
|
Christian Kurz
|
||||||
|
Christian Robottom Reis
|
||||||
|
Christian Schmitz
|
||||||
|
Christian Vogt
|
||||||
|
Christophe Demory
|
||||||
|
Christophe Legry
|
||||||
|
Christopher Conroy
|
||||||
|
Christopher Palow
|
||||||
|
Christopher R. Palmer
|
||||||
|
Ciprian Badescu
|
||||||
|
Claes Jakobsson
|
||||||
|
Clarence Gardner
|
||||||
|
Clifford Wolf
|
||||||
|
Cody Jones
|
||||||
|
Colin Hogben
|
||||||
|
Colin Watson
|
||||||
|
Colm Buckley
|
||||||
|
Constantine Sapuntzakis
|
||||||
|
Cory Nelson
|
||||||
|
Craig A West
|
||||||
|
Craig Davison
|
||||||
|
Craig Markwardt
|
||||||
|
Cris Bailiff
|
||||||
|
Curt Bogmine
|
||||||
|
Cyrill Osterwalder
|
||||||
|
Damien Adant
|
||||||
|
Dan Becker
|
||||||
|
Dan C
|
||||||
|
Dan Fandrich
|
||||||
|
Dan Nelson
|
||||||
|
Dan Petitt
|
||||||
|
Dan Torop
|
||||||
|
Dan Zitter
|
||||||
|
Daniel Black
|
||||||
|
Daniel Cater
|
||||||
|
Daniel Egger
|
||||||
|
Daniel Fandrich
|
||||||
|
Daniel Johnson
|
||||||
|
Daniel Steinberg
|
||||||
|
Daniel Stenberg
|
||||||
|
Daniel at touchtunes
|
||||||
|
Darryl House
|
||||||
|
Dave Dribin
|
||||||
|
Dave Halbakken
|
||||||
|
Dave Hamilton
|
||||||
|
Dave May
|
||||||
|
Dave Vasilevsky
|
||||||
|
David Bau
|
||||||
|
David Binderman
|
||||||
|
David Byron
|
||||||
|
David Cohen
|
||||||
|
David Eriksson
|
||||||
|
David Houlder
|
||||||
|
David Hull
|
||||||
|
David J Meyer
|
||||||
|
David James
|
||||||
|
David Kierznowski
|
||||||
|
David Kimdon
|
||||||
|
David Lang
|
||||||
|
David LeBlanc
|
||||||
|
David McCreedy
|
||||||
|
David Odin
|
||||||
|
David Phillips
|
||||||
|
David Rosenstrauch
|
||||||
|
David Shaw
|
||||||
|
David Tarendash
|
||||||
|
David Thiel
|
||||||
|
David Wright
|
||||||
|
David Yan
|
||||||
|
Dengminwen
|
||||||
|
Detlef Schmier
|
||||||
|
Didier Brisebourg
|
||||||
|
Diego Casorran
|
||||||
|
Dima Barsky
|
||||||
|
Dimitris Sarris
|
||||||
|
Dinar
|
||||||
|
Dirk Eddelbuettel
|
||||||
|
Dirk Manske
|
||||||
|
Dmitriy Sergeyev
|
||||||
|
Dmitry Bartsevich
|
||||||
|
Dmitry Kurochkin
|
||||||
|
Dmitry Popov
|
||||||
|
Dmitry Rechkin
|
||||||
|
Dolbneff A.V
|
||||||
|
Domenico Andreoli
|
||||||
|
Dominick Meglio
|
||||||
|
Doug Kaufman
|
||||||
|
Doug Porter
|
||||||
|
Douglas E. Wegscheid
|
||||||
|
Douglas Kilpatrick
|
||||||
|
Douglas R. Horner
|
||||||
|
Douglas Steinwand
|
||||||
|
Dov Murik
|
||||||
|
Duane Cathey
|
||||||
|
Duncan Mac-Vicar Prett
|
||||||
|
Dustin Boswell
|
||||||
|
Dylan Ellicott
|
||||||
|
Dylan Salisbury
|
||||||
|
Early Ehlinger
|
||||||
|
Ebenezer Ikonne
|
||||||
|
Edin Kadribasic
|
||||||
|
Eduard Bloch
|
||||||
|
Eetu Ojanen
|
||||||
|
Ellis Pritchard
|
||||||
|
Emanuele Bovisio
|
||||||
|
Emil Romanus
|
||||||
|
Emiliano Ida
|
||||||
|
Enrico Scholz
|
||||||
|
Enrik Berkhan
|
||||||
|
Eric Cooper
|
||||||
|
Eric Landes
|
||||||
|
Eric Lavigne
|
||||||
|
Eric Melville
|
||||||
|
Eric Mertens
|
||||||
|
Eric Rautman
|
||||||
|
Eric Thelin
|
||||||
|
Eric Vergnaud
|
||||||
|
Eric Wong
|
||||||
|
Eric Young
|
||||||
|
Erick Nuwendam
|
||||||
|
Erwan Legrand
|
||||||
|
Erwin Authried
|
||||||
|
Eugene Kotlyarov
|
||||||
|
Evan Jordan
|
||||||
|
Eygene Ryabinkin
|
||||||
|
Fabian Keil
|
||||||
|
Fabrizio Ammollo
|
||||||
|
Fedor Karpelevitch
|
||||||
|
Felix von Leitner
|
||||||
|
Feng Tu
|
||||||
|
Florian Schoppmann
|
||||||
|
Forrest Cahoon
|
||||||
|
Frank Hempel
|
||||||
|
Frank Keeney
|
||||||
|
Frank McGeough
|
||||||
|
Frank Meier
|
||||||
|
Frank Ticheler
|
||||||
|
Fred Machado
|
||||||
|
Fred New
|
||||||
|
Fred Noz
|
||||||
|
Frederic Lepied
|
||||||
|
Gabriel Kuri
|
||||||
|
Gary Maxwell
|
||||||
|
Gautam Kachroo
|
||||||
|
Gautam Mani
|
||||||
|
Gavrie Philipson
|
||||||
|
Gaz Iqbal
|
||||||
|
Georg Horn
|
||||||
|
Georg Huettenegger
|
||||||
|
Georg Lippitsch
|
||||||
|
Georg Wicherski
|
||||||
|
Gerd v. Egidy
|
||||||
|
Gerhard Herre
|
||||||
|
Gerrit Bruchh<68>user
|
||||||
|
Giancarlo Formicuccia
|
||||||
|
Giaslas Georgios
|
||||||
|
Gil Weber
|
||||||
|
Gilad
|
||||||
|
Gilbert Ramirez Jr.
|
||||||
|
Gilles Blanc
|
||||||
|
Gisle Vanem
|
||||||
|
Giuseppe Attardi
|
||||||
|
Giuseppe D'Ambrosio
|
||||||
|
Glen Nakamura
|
||||||
|
Glen Scott
|
||||||
|
Grant Erickson
|
||||||
|
Greg Hewgill
|
||||||
|
Greg Morse
|
||||||
|
Greg Onufer
|
||||||
|
Greg Zavertnik
|
||||||
|
Grigory Entin
|
||||||
|
Guenole Bescon
|
||||||
|
Guenter Knauf
|
||||||
|
Guillaume Arluison
|
||||||
|
Gustaf Hui
|
||||||
|
Gwenole Beauchesne
|
||||||
|
G<EFBFBD>tz Babin-Ebell
|
||||||
|
Hamish Mackenzie
|
||||||
|
Hang Kin Lau
|
||||||
|
Hanno Kranzhoff
|
||||||
|
Hans Steegers
|
||||||
|
Hans-Jurgen May
|
||||||
|
Hardeep Singh
|
||||||
|
Harshal Pradhan
|
||||||
|
Hauke Duden
|
||||||
|
Heikki Korpela
|
||||||
|
Henrik Storner
|
||||||
|
Hidemoto Nakada
|
||||||
|
Hoi-Ho Chan
|
||||||
|
Howard Chu
|
||||||
|
Hzhijun
|
||||||
|
Ian Ford
|
||||||
|
Ian Gulliver
|
||||||
|
Ian Lynagh
|
||||||
|
Ian Turner
|
||||||
|
Ian Wilkes
|
||||||
|
Ignacio Vazquez-Abrams
|
||||||
|
Igor Franchuk
|
||||||
|
Igor Novoseltsev
|
||||||
|
Igor Polyakov
|
||||||
|
Ilguiz Latypov
|
||||||
|
Ilja van Sprundel
|
||||||
|
Immanuel Gregoire
|
||||||
|
Ingmar Runge
|
||||||
|
Ingo Ralf Blum
|
||||||
|
Ingo Wilken
|
||||||
|
Jack Zhang
|
||||||
|
Jacky Lam
|
||||||
|
Jacob Meuser
|
||||||
|
Jacob Moshenko
|
||||||
|
Jad Chamcham
|
||||||
|
James Bursa
|
||||||
|
James Cheng
|
||||||
|
James Clancy
|
||||||
|
James Cone
|
||||||
|
James Gallagher
|
||||||
|
James Griffiths
|
||||||
|
James Housley
|
||||||
|
James MacMillan
|
||||||
|
Jamie Lokier
|
||||||
|
Jamie Newton
|
||||||
|
Jamie Wilkinson
|
||||||
|
Jan Kunder
|
||||||
|
Jared Lundell
|
||||||
|
Jari Sundell
|
||||||
|
Jason McDonald
|
||||||
|
Jason S. Priebe
|
||||||
|
Jay Austin
|
||||||
|
Jayesh A Shah
|
||||||
|
Jaz Fresh
|
||||||
|
Jean Jacques Drouin
|
||||||
|
Jean-Claude Chauve
|
||||||
|
Jean-Francois Bertrand
|
||||||
|
Jean-Louis Lemaire
|
||||||
|
Jean-Marc Ranger
|
||||||
|
Jean-Philippe Barrette-LaPierre
|
||||||
|
Jeff Johnson
|
||||||
|
Jeff Lawson
|
||||||
|
Jeff Phillips
|
||||||
|
Jeff Pohlmeyer
|
||||||
|
Jeff Weber
|
||||||
|
Jeffrey Pohlmeyer
|
||||||
|
Jeremy Friesner
|
||||||
|
Jerome Muffat-Meridol
|
||||||
|
Jerome Vouillon
|
||||||
|
Jes Badwal
|
||||||
|
Jesper Jensen
|
||||||
|
Jesse Noller
|
||||||
|
Jim Drash
|
||||||
|
Jim Freeman
|
||||||
|
Jim Meyering
|
||||||
|
Jocelyn Jaubert
|
||||||
|
Joe Halpin
|
||||||
|
Joe Malicki
|
||||||
|
Joel Chen
|
||||||
|
Jofell Gallardo
|
||||||
|
Johan Anderson
|
||||||
|
Johan Nilsson
|
||||||
|
Johan van Selst
|
||||||
|
John Crow
|
||||||
|
John Dennis
|
||||||
|
John E. Malmberg
|
||||||
|
John Janssen
|
||||||
|
John Kelly
|
||||||
|
John Lask
|
||||||
|
John Lightsey
|
||||||
|
John McGowan
|
||||||
|
John P. McCaskey
|
||||||
|
John Wilkinson
|
||||||
|
John-Mark Bell
|
||||||
|
Johnny Luong
|
||||||
|
Jon Grubbs
|
||||||
|
Jon Nelson
|
||||||
|
Jon Travis
|
||||||
|
Jon Turner
|
||||||
|
Jonas Forsman
|
||||||
|
Jonatan Lander
|
||||||
|
Jonathan Hseu
|
||||||
|
Jongki Suwandi
|
||||||
|
Jose Kahan
|
||||||
|
Josef Wolf
|
||||||
|
Josh Kapell
|
||||||
|
Joshua Kwan
|
||||||
|
Juan F. Codagnone
|
||||||
|
Juan Ignacio Herv<72>s
|
||||||
|
Judson Bishop
|
||||||
|
Juergen Wilke
|
||||||
|
Jukka Pihl
|
||||||
|
Julian Noble
|
||||||
|
Julien Chaffraix
|
||||||
|
Jun-ichiro itojun Hagino
|
||||||
|
Jurij Smakov
|
||||||
|
Justin Fletcher
|
||||||
|
J<EFBFBD>rg Mueller-Tolk
|
||||||
|
J<EFBFBD>rn Hartroth
|
||||||
|
Kai Sommerfeld
|
||||||
|
Kai-Uwe Rommel
|
||||||
|
Kalle Vahlman
|
||||||
|
Kamil Dudka
|
||||||
|
Kang-Jin Lee
|
||||||
|
Karl Moerder
|
||||||
|
Karol Pietrzak
|
||||||
|
Kaspar Brand
|
||||||
|
Katie Wang
|
||||||
|
Kees Cook
|
||||||
|
Keith MacDonald
|
||||||
|
Keith McGuigan
|
||||||
|
Keith Mok
|
||||||
|
Ken Hirsch
|
||||||
|
Ken Rastatter
|
||||||
|
Kenny To
|
||||||
|
Kent Boortz
|
||||||
|
Keshav Krity
|
||||||
|
Kevin Baughman
|
||||||
|
Kevin Fisk
|
||||||
|
Kevin Lussier
|
||||||
|
Kevin Reed
|
||||||
|
Kevin Roth
|
||||||
|
Kim Rinnewitz
|
||||||
|
Kimmo Kinnunen
|
||||||
|
Kjell Ericson
|
||||||
|
Kjetil Jacobsen
|
||||||
|
Klevtsov Vadim
|
||||||
|
Kris Kennaway
|
||||||
|
Krishnendu Majumdar
|
||||||
|
Krister Johansen
|
||||||
|
Kristian Gunstone
|
||||||
|
Kristian K<>hntopp
|
||||||
|
Kyle Sallee
|
||||||
|
Lachlan O'Dea
|
||||||
|
Larry Campbell
|
||||||
|
Larry Fahnoe
|
||||||
|
Lars Gustafsson
|
||||||
|
Lars J. Aas
|
||||||
|
Lars Nilsson
|
||||||
|
Lars Torben Wilson
|
||||||
|
Lau Hang Kin
|
||||||
|
Laurent Rabret
|
||||||
|
Legoff Vincent
|
||||||
|
Lehel Bernadt
|
||||||
|
Len Krause
|
||||||
|
Lenaic Lefever
|
||||||
|
Lenny Rachitsky
|
||||||
|
Liam Healy
|
||||||
|
Linas Vepstas
|
||||||
|
Ling Thio
|
||||||
|
Linus Nielsen Feltzing
|
||||||
|
Lisa Xu
|
||||||
|
Liza Alenchery
|
||||||
|
Loic Dachary
|
||||||
|
Loren Kirkby
|
||||||
|
Luca Altea
|
||||||
|
Luca Alteas
|
||||||
|
Lucas Adamski
|
||||||
|
Lukasz Czekierda
|
||||||
|
Luke Call
|
||||||
|
Luong Dinh Dung
|
||||||
|
Maciej Karpiuk
|
||||||
|
Maciej W. Rozycki
|
||||||
|
Manfred Schwarb
|
||||||
|
Marc Boucher
|
||||||
|
Marc Kleine-Budde
|
||||||
|
Marcelo Juchem
|
||||||
|
Marcin Konicki
|
||||||
|
Marco G. Salvagno
|
||||||
|
Marco Maggi
|
||||||
|
Marcus Webster
|
||||||
|
Mario Schroeder
|
||||||
|
Mark Butler
|
||||||
|
Mark Davies
|
||||||
|
Mark Eichin
|
||||||
|
Mark Incley
|
||||||
|
Mark Karpeles
|
||||||
|
Mark Lentczner
|
||||||
|
Markus Duft
|
||||||
|
Markus Koetter
|
||||||
|
Markus Moeller
|
||||||
|
Markus Oberhumer
|
||||||
|
Martijn Koster
|
||||||
|
Martin C. Martin
|
||||||
|
Martin Drasar
|
||||||
|
Martin Hager
|
||||||
|
Martin Hedenfalk
|
||||||
|
Martin Skinner
|
||||||
|
Martin Storsjo
|
||||||
|
Marty Kuhrt
|
||||||
|
Maruko
|
||||||
|
Massimiliano Ziccardi
|
||||||
|
Massimo Callegari
|
||||||
|
Mateusz Loskot
|
||||||
|
Mathias Axelsson
|
||||||
|
Mats Lidell
|
||||||
|
Matt Kraai
|
||||||
|
Matt Veenstra
|
||||||
|
Matt Witherspoon
|
||||||
|
Matt Wixson
|
||||||
|
Matthew Blain
|
||||||
|
Matthew Clarke
|
||||||
|
Maurice Barnum
|
||||||
|
Max Katsev
|
||||||
|
Maxim Ivanov
|
||||||
|
Maxim Perenesenko
|
||||||
|
Mekonikum
|
||||||
|
Mettgut Jamalla
|
||||||
|
Michael Benedict
|
||||||
|
Michael Calmer
|
||||||
|
Michael Cronenworth
|
||||||
|
Michael Curtis
|
||||||
|
Michael Goffioul
|
||||||
|
Michael Jahn
|
||||||
|
Michael Jerris
|
||||||
|
Michael Mealling
|
||||||
|
Michael Smith
|
||||||
|
Michael Stillwell
|
||||||
|
Michael Wallner
|
||||||
|
Michal Bonino
|
||||||
|
Michal Marek
|
||||||
|
Michele Bini
|
||||||
|
Mihai Ionescu
|
||||||
|
Mikael Sennerholm
|
||||||
|
Mike Bytnar
|
||||||
|
Mike Crowe
|
||||||
|
Mike Dobbs
|
||||||
|
Mike Hommey
|
||||||
|
Mike Protts
|
||||||
|
Mike Revi
|
||||||
|
Miklos Nemeth
|
||||||
|
Mitz Wark
|
||||||
|
Mohamed Lrhazi
|
||||||
|
Mohun Biswas
|
||||||
|
Moonesamy
|
||||||
|
Nathan Coulter
|
||||||
|
Nathan O'Sullivan
|
||||||
|
Nathanael Nerode
|
||||||
|
Naveen Noel
|
||||||
|
Neil Dunbar
|
||||||
|
Neil Spring
|
||||||
|
Nic Roets
|
||||||
|
Nick Gimbrone
|
||||||
|
Nick Humfrey
|
||||||
|
Nick Zitzmann
|
||||||
|
Nico Baggus
|
||||||
|
Nicolas Berloquin
|
||||||
|
Nicolas Croiset
|
||||||
|
Nicolas Fran<61>ois
|
||||||
|
Niels van Tongeren
|
||||||
|
Nikita Schmidt
|
||||||
|
Nikitinskit Dmitriy
|
||||||
|
Niklas Angebrand
|
||||||
|
Nikolai Kondrashov
|
||||||
|
Nir Soffer
|
||||||
|
Nis Jorgensen
|
||||||
|
Nodak Sodak
|
||||||
|
Norbert Frese
|
||||||
|
Norbert Novotny
|
||||||
|
Ofer
|
||||||
|
Olaf Stueben
|
||||||
|
Olaf St<53>ben
|
||||||
|
Oren Tirosh
|
||||||
|
P R Schaffner
|
||||||
|
Pascal Terjan
|
||||||
|
Pat Ray
|
||||||
|
Patrick Bihan-Faou
|
||||||
|
Patrick Monnerat
|
||||||
|
Patrick Scott
|
||||||
|
Patrick Smith
|
||||||
|
Patrik Thunstrom
|
||||||
|
Paul Harrington
|
||||||
|
Paul Howarth
|
||||||
|
Paul Marquis
|
||||||
|
Paul Moore
|
||||||
|
Paul Nolan
|
||||||
|
Paul Querna
|
||||||
|
Pavel Cenek
|
||||||
|
Pavel Orehov
|
||||||
|
Pavel Raiskup
|
||||||
|
Pawel A. Gajda
|
||||||
|
Pawel Kierski
|
||||||
|
Pedro Neves
|
||||||
|
Pete Su
|
||||||
|
Peter Bray
|
||||||
|
Peter Forret
|
||||||
|
Peter Heuchert
|
||||||
|
Peter Korsgaard
|
||||||
|
Peter Lamberg
|
||||||
|
Peter O'Gorman
|
||||||
|
Peter Pentchev
|
||||||
|
Peter Silva
|
||||||
|
Peter Su
|
||||||
|
Peter Sylvester
|
||||||
|
Peter Todd
|
||||||
|
Peter Verhas
|
||||||
|
Peter Wullinger
|
||||||
|
Peteris Krumins
|
||||||
|
Phil Blundell
|
||||||
|
Phil Karn
|
||||||
|
Phil Lisiecki
|
||||||
|
Phil Pellouchoud
|
||||||
|
Philip Gladstone
|
||||||
|
Philip Langdale
|
||||||
|
Philippe Hameau
|
||||||
|
Philippe Raoult
|
||||||
|
Philippe Vaucher
|
||||||
|
Pierre
|
||||||
|
Pierre Brico
|
||||||
|
Pooyan McSporran
|
||||||
|
Pramod Sharma
|
||||||
|
Puneet Pawaia
|
||||||
|
Quagmire
|
||||||
|
Rafa Muyo
|
||||||
|
Rafael Sagula
|
||||||
|
Rainer Canavan
|
||||||
|
Rainer Koenig
|
||||||
|
Ralf S. Engelschall
|
||||||
|
Ralph Beckmann
|
||||||
|
Ralph Mitchell
|
||||||
|
Ramana Mokkapati
|
||||||
|
Randy McMurchy
|
||||||
|
Ravi Pratap
|
||||||
|
Ray Dassen
|
||||||
|
Ray Pekowski
|
||||||
|
Reinout van Schouwen
|
||||||
|
Renato Botelho
|
||||||
|
Renaud Chaillat
|
||||||
|
Renaud Duhaut
|
||||||
|
Rene Bernhardt
|
||||||
|
Rene Rebe
|
||||||
|
Reuven Wachtfogel
|
||||||
|
Ricardo Cadime
|
||||||
|
Rich Gray
|
||||||
|
Rich Rauenzahn
|
||||||
|
Richard Archer
|
||||||
|
Richard Atterer
|
||||||
|
Richard Bramante
|
||||||
|
Richard Clayton
|
||||||
|
Richard Cooper
|
||||||
|
Richard Gorton
|
||||||
|
Richard Prescott
|
||||||
|
Rick Jones
|
||||||
|
Rick Richardson
|
||||||
|
Rob Crittenden
|
||||||
|
Rob Jones
|
||||||
|
Rob Stanzel
|
||||||
|
Robert A. Monat
|
||||||
|
Robert D. Young
|
||||||
|
Robert Foreman
|
||||||
|
Robert Iakobashvili
|
||||||
|
Robert Olson
|
||||||
|
Robert Weaver
|
||||||
|
Robin Johnson
|
||||||
|
Robin Kay
|
||||||
|
Robson Braga Araujo
|
||||||
|
Rodney Simmons
|
||||||
|
Roland Blom
|
||||||
|
Roland Krikava
|
||||||
|
Roland Zimmermann
|
||||||
|
Rolland Dudemaine
|
||||||
|
Roman Koifman
|
||||||
|
Ron Zapp
|
||||||
|
Rosimildo da Silva
|
||||||
|
Roy Shan
|
||||||
|
Rune Kleveland
|
||||||
|
Ruslan Gazizov
|
||||||
|
Ryan Chan
|
||||||
|
Ryan Nelson
|
||||||
|
S. Moonesamy
|
||||||
|
Salvador D<>vila
|
||||||
|
Salvatore Sorrentino
|
||||||
|
Sam Listopad
|
||||||
|
Sampo Kellomaki
|
||||||
|
Samuel D<>az Garc<72>a
|
||||||
|
Samuel Listopad
|
||||||
|
Sander Gates
|
||||||
|
Sandor Feldi
|
||||||
|
Saul good
|
||||||
|
Scott Barrett
|
||||||
|
Scott Cantor
|
||||||
|
Scott Davis
|
||||||
|
Scott McCreary
|
||||||
|
Sebastien Willemijns
|
||||||
|
Senthil Raja Velu
|
||||||
|
Sergio Ballestrero
|
||||||
|
Seshubabu Pasam
|
||||||
|
Sh Diao
|
||||||
|
Sharad Gupta
|
||||||
|
Shard
|
||||||
|
Shawn Poulson
|
||||||
|
Shmulik Regev
|
||||||
|
Siddhartha Prakash Jain
|
||||||
|
Siegfried Gyuricsko
|
||||||
|
Simon Dick
|
||||||
|
Simon Josefsson
|
||||||
|
Simon Liu
|
||||||
|
Song Ma
|
||||||
|
Sonia Subramanian
|
||||||
|
Spacen Jasset
|
||||||
|
Spiridonoff A.V
|
||||||
|
Stadler Stephan
|
||||||
|
Stan van de Burgt
|
||||||
|
Stefan Esser
|
||||||
|
Stefan Krause
|
||||||
|
Stefan Teleman
|
||||||
|
Stefan Ulrich
|
||||||
|
Stephan Bergmann
|
||||||
|
Stephen Collyer
|
||||||
|
Stephen Kick
|
||||||
|
Stephen More
|
||||||
|
Sterling Hughes
|
||||||
|
Steve Green
|
||||||
|
Steve Lhomme
|
||||||
|
Steve Little
|
||||||
|
Steve Marx
|
||||||
|
Steve Oliphant
|
||||||
|
Steve Roskowski
|
||||||
|
Steven Bazyl
|
||||||
|
Steven G. Johnson
|
||||||
|
Steven M. Schweda
|
||||||
|
Stoned Elipot
|
||||||
|
Sven Anders
|
||||||
|
Sven Neuhaus
|
||||||
|
Sven Wegener
|
||||||
|
S<EFBFBD>bastien Willemijns
|
||||||
|
T. Bharath
|
||||||
|
T. Yamada
|
||||||
|
Tanguy Fautre
|
||||||
|
Temprimus
|
||||||
|
Thomas J. Moore
|
||||||
|
Thomas Klausner
|
||||||
|
Thomas Lopatic
|
||||||
|
Thomas Schwinge
|
||||||
|
Thomas Tonino
|
||||||
|
Tim Ansell
|
||||||
|
Tim Baker
|
||||||
|
Tim Bartley
|
||||||
|
Tim Chen
|
||||||
|
Tim Costello
|
||||||
|
Tim Sneddon
|
||||||
|
Tobias Rundstr<74>m
|
||||||
|
Toby Peterson
|
||||||
|
Todd Kulesza
|
||||||
|
Todd Vierling
|
||||||
|
Tom Benoist
|
||||||
|
Tom Donovan
|
||||||
|
Tom Lee
|
||||||
|
Tom Mattison
|
||||||
|
Tom Moers
|
||||||
|
Tom Mueller
|
||||||
|
Tom Regner
|
||||||
|
Tom Zerucha
|
||||||
|
Tomas Pospisek
|
||||||
|
Tomas Szepe
|
||||||
|
Tomasz Lacki
|
||||||
|
Tommy Tam
|
||||||
|
Ton Voon
|
||||||
|
Toon Verwaest
|
||||||
|
Tor Arntsen
|
||||||
|
Torsten Foertsch
|
||||||
|
Toshio Kuratomi
|
||||||
|
Toshiyuki Maezawa
|
||||||
|
Traian Nicolescu
|
||||||
|
Troels Walsted Hansen
|
||||||
|
Troy Engel
|
||||||
|
Tupone Alfredo
|
||||||
|
Ulf H<>rnhammar
|
||||||
|
Ulrich Zadow
|
||||||
|
Venkat Akella
|
||||||
|
Victor Snezhko
|
||||||
|
Vikram Saxena
|
||||||
|
Vilmos Nebehaj
|
||||||
|
Vincent Bronner
|
||||||
|
Vincent Le Normand
|
||||||
|
Vincent Penquerc'h
|
||||||
|
Vincent Sanders
|
||||||
|
Vlad Grachov
|
||||||
|
Vladimir Lazarenko
|
||||||
|
Vojtech Janota
|
||||||
|
Vojtech Minarik
|
||||||
|
Walter J. Mack
|
||||||
|
Wayne Haigh
|
||||||
|
Werner Koch
|
||||||
|
Wesley Laxton
|
||||||
|
Wesley Miaw
|
||||||
|
Wez Furlong
|
||||||
|
Wilfredo Sanchez
|
||||||
|
Wojciech Zwiefka
|
||||||
|
Xavier Bouchoux
|
||||||
|
Yang Tse
|
||||||
|
Yarram Sunil
|
||||||
|
Yehoshua Hershberg
|
||||||
|
Yuriy Sosov
|
||||||
|
Yves Lejeune
|
||||||
|
Zmey Petroff
|
||||||
|
Zvi Har'El
|
||||||
|
nk
|
||||||
|
swalkaus at yahoo.com
|
||||||
|
tommink[at]post.pl
|
||||||
|
|||||||
671
docs/TODO
671
docs/TODO
@@ -1,204 +1,571 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
TODO
|
Things that could be nice to do in the future
|
||||||
|
|
||||||
Things to do in project cURL. Please tell me what you think, contribute and
|
Things to do in project cURL. Please tell us what you think, contribute and
|
||||||
send me patches that improve things! Also check the http://curl.haxx.se/dev
|
send us patches that improve things!
|
||||||
web section for various development notes.
|
|
||||||
|
|
||||||
LIBCURL
|
All bugs documented in the KNOWN_BUGS document are subject for fixing!
|
||||||
|
|
||||||
* Consider an interface to libcurl that allows applications to easier get to
|
1. libcurl
|
||||||
know what cookies that are sent back in the response headers.
|
1.1 Zero-copy interface
|
||||||
|
1.2 More data sharing
|
||||||
|
1.3 struct lifreq
|
||||||
|
1.4 signal-based resolver timeouts
|
||||||
|
|
||||||
* Make content encoding/decoding internally be made using a filter system.
|
2. libcurl - multi interface
|
||||||
|
2.1 More non-blocking
|
||||||
|
2.2 Remove easy interface internally
|
||||||
|
2.3 Avoid having to remove/readd handles
|
||||||
|
2.4 Fix HTTP Pipelining for PUT
|
||||||
|
2.5 Make curl_multi_info_read faster
|
||||||
|
|
||||||
* The new 'multi' interface is being designed. Work out the details, start
|
3. Documentation
|
||||||
implementing and write test applications!
|
3.1 More and better
|
||||||
[http://curl.haxx.se/lxr/source/lib/multi.h]
|
|
||||||
|
|
||||||
* Introduce another callback interface for upload/download that makes one
|
4. FTP
|
||||||
less copy of data and thus a faster operation.
|
4.1 HOST
|
||||||
[http://curl.haxx.se/dev/no_copy_callbacks.txt]
|
4.2 Alter passive/active on failure and retry
|
||||||
|
4.3 Earlier bad letter detection
|
||||||
|
4.4 REST for large files
|
||||||
|
4.5 FTP proxy support
|
||||||
|
4.6 ASCII support
|
||||||
|
|
||||||
* Add configure options that disables certain protocols in libcurl to
|
5. HTTP
|
||||||
decrease footprint. '--disable-[protocol]' where protocol is http, ftp,
|
5.1 Better persistency for HTTP 1.0
|
||||||
telnet, ldap, dict or file.
|
5.2 support FF3 sqlite cookie files
|
||||||
|
5.3 Rearrange request header order
|
||||||
|
|
||||||
* Add asynchronous name resolving. http://curl.haxx.se/dev/async-resolver.txt
|
6. TELNET
|
||||||
This should be made to work on most of the supported platforms, or
|
6.1 ditch stdin
|
||||||
otherwise it isn't really interesting.
|
6.2 ditch telnet-specific select
|
||||||
|
6.3 feature negotiation debug data
|
||||||
|
6.4 send data in chunks
|
||||||
|
|
||||||
* Data sharing. Tell which easy handles within a multi handle that should
|
7. SSL
|
||||||
share cookies, connection cache, dns cache, ssl session cache.
|
7.1 Disable specific versions
|
||||||
|
7.2 Provide mutex locking API
|
||||||
|
7.3 Evaluate SSL patches
|
||||||
|
7.4 Cache OpenSSL contexts
|
||||||
|
7.5 Export session ids
|
||||||
|
7.6 Provide callback for cert verification
|
||||||
|
7.7 Support other SSL libraries
|
||||||
|
7.8 Support SRP on the TLS layer
|
||||||
|
7.9 improve configure --with-ssl
|
||||||
|
7.10 Make NTLM work with other crypto functions
|
||||||
|
|
||||||
* Mutexes. By adding mutex callback support, the 'data sharing' mentioned
|
8. GnuTLS
|
||||||
above can be made between several easy handles running in different threads
|
8.1 SSL engine stuff
|
||||||
too. The actual mutex implementations will be left for the application to
|
8.2 SRP
|
||||||
implement, libcurl will merely call 'getmutex' and 'leavemutex' callbacks.
|
8.3 check connection
|
||||||
|
|
||||||
* No-faster-then-this transfers. Many people have limited bandwidth and they
|
9. Other protocols
|
||||||
want the ability to make sure their transfers never use more bandwith than
|
|
||||||
they think is good.
|
|
||||||
|
|
||||||
* Set the SO_KEEPALIVE socket option to make libcurl notice and disconnect
|
10. New protocols
|
||||||
very long time idle connections.
|
10.1 RSYNC
|
||||||
|
10.2 RTMP
|
||||||
|
|
||||||
* Make sure we don't ever loop because of non-blocking sockets return
|
11. Client
|
||||||
EWOULDBLOCK or similar. This concerns the HTTP request sending (and
|
11.1 sync
|
||||||
especially regular HTTP POST), the FTP command sending etc.
|
11.2 glob posts
|
||||||
|
11.3 prevent file overwriting
|
||||||
|
11.4 simultaneous parallel transfers
|
||||||
|
11.5 provide formpost headers
|
||||||
|
11.6 url-specific options
|
||||||
|
11.7 metalink support
|
||||||
|
11.8 warning when setting an option
|
||||||
|
|
||||||
* Go through the code and verify that libcurl deals with big files >2GB and
|
12. Build
|
||||||
>4GB all over. Bug reports indicate that it doesn't currently work
|
12.1 roffit
|
||||||
properly.
|
|
||||||
|
|
||||||
DOCUMENTATION
|
13. Test suite
|
||||||
|
13.1 SSL tunnel
|
||||||
|
13.2 nicer lacking perl message
|
||||||
|
13.3 more protocols supported
|
||||||
|
13.4 more platforms supported
|
||||||
|
|
||||||
* Document all CURLcode error codes, why they happen and what most likely
|
14. Next SONAME bump
|
||||||
will make them not happen again. In a libcurl point of view.
|
14.1 http-style HEAD output for ftp
|
||||||
|
14.2 combine error codes
|
||||||
|
14.3 extend CURLOPT_SOCKOPTFUNCTION prototype
|
||||||
|
|
||||||
FTP
|
15. Next major release
|
||||||
|
15.1 cleanup return codes
|
||||||
|
15.2 remove obsolete defines
|
||||||
|
15.3 size_t
|
||||||
|
15.4 remove several functions
|
||||||
|
15.5 remove CURLOPT_FAILONERROR
|
||||||
|
15.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
|
||||||
|
15.7 remove progress meter from libcurl
|
||||||
|
|
||||||
* FTP ASCII upload does not follow RFC959 section 3.1.1.1: "The sender
|
==============================================================================
|
||||||
converts the data from an internal character representation to the standard
|
|
||||||
8-bit NVT-ASCII representation (see the Telnet specification). The
|
|
||||||
receiver will convert the data from the standard form to his own internal
|
|
||||||
form."
|
|
||||||
|
|
||||||
* An option to only download remote FTP files if they're newer than the local
|
1. libcurl
|
||||||
one is a good idea, and it would fit right into the same syntax as the
|
|
||||||
already working http dito works. It of course requires that 'MDTM' works,
|
|
||||||
and it isn't a standard FTP command.
|
|
||||||
|
|
||||||
* Add FTPS support with SSL for the data connection too.
|
1.1 Zero-copy interface
|
||||||
|
|
||||||
HTTP
|
Introduce another callback interface for upload/download that makes one less
|
||||||
|
copy of data and thus a faster operation.
|
||||||
|
[http://curl.haxx.se/dev/no_copy_callbacks.txt]
|
||||||
|
|
||||||
* Make it possible to supply normal POST data through the ordinary read data
|
1.2 More data sharing
|
||||||
callback.
|
|
||||||
|
|
||||||
* HTTP PUT for files passed on stdin *OR* when the --crlf option is
|
curl_share_* functions already exist and work, and they can be extended to
|
||||||
used. Requires libcurl to send the file with chunked content
|
share more. For example, enable sharing of the ares channel and the
|
||||||
encoding. [http://curl.haxx.se/dev/HTTP-PUT-stdin.txt] When the filter
|
connection cache.
|
||||||
system mentioned above gets real, it'll be a piece of cake to add.
|
|
||||||
|
|
||||||
* Pass a list of host name to libcurl to which we allow the user name and
|
1.3 struct lifreq
|
||||||
password to get sent to. Currently, it only get sent to the host name that
|
|
||||||
the first URL uses (to prevent others from being able to read it), but this
|
|
||||||
also prevents the authentication info from getting sent when following
|
|
||||||
locations to legitimate other host names.
|
|
||||||
|
|
||||||
* "Content-Encoding: compress/gzip/zlib" HTTP 1.1 clearly defines how to get
|
Use 'struct lifreq' and SIOCGLIFADDR instead of 'struct ifreq' and
|
||||||
and decode compressed documents. There is the zlib that is pretty good at
|
SIOCGIFADDR on newer Solaris versions as they claim the latter is obsolete.
|
||||||
decompressing stuff. This work was started in October 1999 but halted again
|
To support ipv6 interface addresses for network interfaces properly.
|
||||||
since it proved more work than we thought. It is still a good idea to
|
|
||||||
implement though. This requires the filter system mentioned above.
|
|
||||||
|
|
||||||
* Authentication: NTLM. Support for that MS crap called NTLM
|
1.4 signal-based resolver timeouts
|
||||||
authentication. MS proxies and servers sometime require that. Since that
|
|
||||||
protocol is a proprietary one, it involves reverse engineering and network
|
|
||||||
sniffing. This should however be a library-based functionality. There are a
|
|
||||||
few different efforts "out there" to make open source HTTP clients support
|
|
||||||
this and it should be possible to take advantage of other people's hard
|
|
||||||
work. http://modntlm.sourceforge.net/ is one. There's a web page at
|
|
||||||
http://www.innovation.ch/java/ntlm.html that contains detailed reverse-
|
|
||||||
engineered info.
|
|
||||||
|
|
||||||
* RFC2617 compliance, "Digest Access Authentication" A valid test page seem
|
libcurl built without an asynchronous resolver library uses alarm() to time
|
||||||
to exist at: http://hopf.math.nwu.edu/testpage/digest/ And some friendly
|
out DNS lookups. When a timeout occurs, this causes libcurl to jump from the
|
||||||
person's server source code is available at
|
signal handler back into the library with a sigsetjmp, which effectively
|
||||||
http://hopf.math.nwu.edu/digestauth/index.html Then there's the Apache
|
causes libcurl to continue running within the signal handler. This is
|
||||||
mod_digest source code too of course. It seems as if Netscape doesn't
|
non-portable and could cause problems on some platforms. A discussion on the
|
||||||
support this, and not many servers do. Although this is a lot better
|
problem is available at http://curl.haxx.se/mail/lib-2008-09/0197.html
|
||||||
authentication method than the more common "Basic". Basic sends the
|
|
||||||
password in cleartext over the network, this "Digest" method uses a
|
|
||||||
challange-response protocol which increases security quite a lot.
|
|
||||||
|
|
||||||
* Pipelining. Sending multiple requests before the previous one(s) are done.
|
Also, alarm() provides timeout resolution only to the nearest second. alarm
|
||||||
This could possibly be implemented using the multi interface to queue
|
ought to be replaced by setitimer on systems that support it.
|
||||||
requests and the response data.
|
|
||||||
|
|
||||||
TELNET
|
2. libcurl - multi interface
|
||||||
|
|
||||||
* Make TELNET work on windows98!
|
2.1 More non-blocking
|
||||||
|
|
||||||
* Reading input (to send to the remote server) on stdin is a crappy solution
|
Make sure we don't ever loop because of non-blocking sockets returning
|
||||||
for library purposes. We need to invent a good way for the application to
|
EWOULDBLOCK or similar. Blocking cases include:
|
||||||
be able to provide the data to send.
|
|
||||||
|
|
||||||
* Move the telnet support's network select() loop go away and merge the code
|
- Name resolves on non-windows unless c-ares is used
|
||||||
into the main transfer loop. Until this is done, the multi interface won't
|
- NSS SSL connections
|
||||||
work for telnet.
|
- Active FTP connections
|
||||||
|
- HTTP proxy CONNECT operations
|
||||||
|
- SOCKS proxy handshakes
|
||||||
|
- file:// transfers
|
||||||
|
- TELNET transfers
|
||||||
|
- The "DONE" operation (post transfer protocol-specific actions) for the
|
||||||
|
protocols SFTP, SMTP, FTP. Fixing Curl_done() for this is a worthy task.
|
||||||
|
|
||||||
SSL
|
2.2 Remove easy interface internally
|
||||||
|
|
||||||
* If you really want to improve the SSL situation, you should probably have a
|
Make curl_easy_perform() a wrapper-function that simply creates a multi
|
||||||
look at SSL cafile loading as well - quick traces look to me like these are
|
handle, adds the easy handle to it, runs curl_multi_perform() until the
|
||||||
done on every request as well, when they should only be necessary once per
|
transfer is done, then detach the easy handle, destroy the multi handle and
|
||||||
ssl context (or once per handle). Even better would be to support the SSL
|
return the easy handle's return code. This will thus make everything
|
||||||
CAdir option - instead of loading all of the root CA certs for every
|
internally use and assume the multi interface. The select()-loop should use
|
||||||
request, this option allows you to only read the CA chain that is actually
|
curl_multi_socket().
|
||||||
required (into the cache)...
|
|
||||||
|
|
||||||
* Add an interface to libcurl that enables "session IDs" to get
|
2.3 Avoid having to remove/readd handles
|
||||||
exported/imported. Cris Bailiff said: "OpenSSL has functions which can
|
|
||||||
serialise the current SSL state to a buffer of your choice, and
|
|
||||||
recover/reset the state from such a buffer at a later date - this is used
|
|
||||||
by mod_ssl for apache to implement and SSL session ID cache". This whole
|
|
||||||
idea might become moot if we enable the 'data sharing' as mentioned in the
|
|
||||||
LIBCURL label above.
|
|
||||||
|
|
||||||
* OpenSSL supports a callback for customised verification of the peer
|
curl_multi_handle_control() - this can control the easy handle (while) added
|
||||||
certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
|
to a multi handle in various ways:
|
||||||
it be? There's so much that could be done if it were! (brought by Chris
|
|
||||||
Clark)
|
|
||||||
|
|
||||||
* Make curl's SSL layer option capable of using other free SSL libraries.
|
o RESTART, unconditionally restart this easy handle's transfer from the
|
||||||
Such as the Mozilla Security Services
|
start, re-init the state
|
||||||
(http://www.mozilla.org/projects/security/pki/nss/) and GNUTLS
|
|
||||||
(http://gnutls.hellug.gr/)
|
|
||||||
|
|
||||||
LDAP
|
o RESTART_COMPLETED, restart this easy handle's transfer but only if the
|
||||||
|
existing transfer has already completed and it is in a "finished state".
|
||||||
|
|
||||||
* Look over the implementation. The looping will have to "go away" from the
|
o STOP, just stop this transfer and consider it completed
|
||||||
lib/ldap.c source file and get moved to the main network code so that the
|
|
||||||
multi interface and friends will work for LDAP as well.
|
|
||||||
|
|
||||||
CLIENT
|
o PAUSE?
|
||||||
|
|
||||||
* "curl ftp://site.com/*.txt"
|
o RESUME?
|
||||||
|
|
||||||
* Several URLs can be specified to get downloaded. We should be able to use
|
2.4 Fix HTTP Pipelining for PUT
|
||||||
the same syntax to specify several files to get uploaded (using the same
|
|
||||||
persistant connection), using -T.
|
|
||||||
|
|
||||||
* When the multi interface has been implemented and proved to work, the
|
HTTP Pipelining can be a way to greatly enhance performance for multiple
|
||||||
client could be told to use maximum N simultaneous transfers and then just
|
serial requests and currently libcurl only supports that for HEAD and GET
|
||||||
make sure that happens. It should of course not make more than one
|
requests but it should also be possible for PUT.
|
||||||
connection to the same remote host.
|
|
||||||
|
|
||||||
* Extending the capabilities of the multipart formposting. How about leaving
|
2.5 Make curl_multi_info_read faster
|
||||||
the ';type=foo' syntax as it is and adding an extra tag (headers) which
|
|
||||||
works like this: curl -F "coolfiles=@fil1.txt;headers=@fil1.hdr" where
|
|
||||||
fil1.hdr contains extra headers like
|
|
||||||
|
|
||||||
Content-Type: text/plain; charset=KOI8-R"
|
When checking if there's info to return, this function scans over ALL added
|
||||||
Content-Transfer-Encoding: base64
|
easy handles every time. That makes this function unnecessary heavy and slow.
|
||||||
X-User-Comment: Please don't use browser specific HTML code
|
|
||||||
|
|
||||||
which should overwrite the program reasonable defaults (plain/text,
|
3. Documentation
|
||||||
8bit...) (Idea brough to us by kromJx)
|
|
||||||
|
|
||||||
TEST SUITE
|
3.1 More and better
|
||||||
|
|
||||||
* Extend the test suite to include more protocols. The telnet could just do
|
Exactly
|
||||||
ftp or http operations (for which we have test servers).
|
|
||||||
|
|
||||||
* Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
|
4. FTP
|
||||||
fork()s and it should become even more portable.
|
|
||||||
|
|
||||||
* Introduce a test suite that tests libcurl better and more explicitly.
|
4.1 HOST
|
||||||
|
|
||||||
|
HOST is a suggested command in the works for a client to tell which host name
|
||||||
|
to use, to offer FTP servers named-based virtual hosting:
|
||||||
|
|
||||||
|
http://tools.ietf.org/html/draft-hethmon-mcmurray-ftp-hosts-11
|
||||||
|
|
||||||
|
4.2 Alter passive/active on failure and retry
|
||||||
|
|
||||||
|
When trying to connect passively to a server which only supports active
|
||||||
|
connections, libcurl returns CURLE_FTP_WEIRD_PASV_REPLY and closes the
|
||||||
|
connection. There could be a way to fallback to an active connection (and
|
||||||
|
vice versa). http://curl.haxx.se/bug/feature.cgi?id=1754793
|
||||||
|
|
||||||
|
4.3 Earlier bad letter detection
|
||||||
|
|
||||||
|
Make the detection of (bad) %0d and %0a codes in FTP url parts earlier in the
|
||||||
|
process to avoid doing a resolve and connect in vain.
|
||||||
|
|
||||||
|
4.4 REST for large files
|
||||||
|
|
||||||
|
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
|
||||||
|
(impossible?) part is to figure out if the server did the right thing or not.
|
||||||
|
|
||||||
|
4.5 FTP proxy support
|
||||||
|
|
||||||
|
Support the most common FTP proxies, Philip Newton provided a list allegedly
|
||||||
|
from ncftp. This is not a subject without debate, and is probably not really
|
||||||
|
suitable for libcurl. http://curl.haxx.se/mail/archive-2003-04/0126.html
|
||||||
|
|
||||||
|
4.6 ASCII support
|
||||||
|
|
||||||
|
FTP ASCII transfers do not follow RFC959. They don't convert the data
|
||||||
|
accordingly.
|
||||||
|
|
||||||
|
5. HTTP
|
||||||
|
|
||||||
|
5.1 Better persistency for HTTP 1.0
|
||||||
|
|
||||||
|
"Better" support for persistent connections over HTTP 1.0
|
||||||
|
http://curl.haxx.se/bug/feature.cgi?id=1089001
|
||||||
|
|
||||||
|
5.2 support FF3 sqlite cookie files
|
||||||
|
|
||||||
|
Firefox 3 is changing from its former format to a a sqlite database instead.
|
||||||
|
We should consider how (lib)curl can/should support this.
|
||||||
|
http://curl.haxx.se/bug/feature.cgi?id=1871388
|
||||||
|
|
||||||
|
5.3 Rearrange request header order
|
||||||
|
|
||||||
|
Server implementors often make an effort to detect browser and to reject
|
||||||
|
clients it can detect to not match. One of the last details we cannot yet
|
||||||
|
control in libcurl's HTTP requests, which also can be exploited to detect
|
||||||
|
that libcurl is in fact used even when it tries to impersonate a browser, is
|
||||||
|
the order of the request headers. I propose that we introduce a new option in
|
||||||
|
which you give headers a value, and then when the HTTP request is built it
|
||||||
|
sorts the headers based on that number. We could then have internally created
|
||||||
|
headers use a default value so only headers that need to be moved have to be
|
||||||
|
specified.
|
||||||
|
|
||||||
|
|
||||||
|
6. TELNET
|
||||||
|
|
||||||
|
6.1 ditch stdin
|
||||||
|
|
||||||
|
Reading input (to send to the remote server) on stdin is a crappy solution for
|
||||||
|
library purposes. We need to invent a good way for the application to be able
|
||||||
|
to provide the data to send.
|
||||||
|
|
||||||
|
6.2 ditch telnet-specific select
|
||||||
|
|
||||||
|
Move the telnet support's network select() loop go away and merge the code
|
||||||
|
into the main transfer loop. Until this is done, the multi interface won't
|
||||||
|
work for telnet.
|
||||||
|
|
||||||
|
6.3 feature negotiation debug data
|
||||||
|
|
||||||
|
Add telnet feature negotiation data to the debug callback as header data.
|
||||||
|
|
||||||
|
6.4 send data in chunks
|
||||||
|
|
||||||
|
Currently, telnet sends data one byte at a time. This is fine for interactive
|
||||||
|
use, but inefficient for any other. Sent data should be sent in larger
|
||||||
|
chunks.
|
||||||
|
|
||||||
|
7. SSL
|
||||||
|
|
||||||
|
7.1 Disable specific versions
|
||||||
|
|
||||||
|
Provide an option that allows for disabling specific SSL versions, such as
|
||||||
|
SSLv2 http://curl.haxx.se/bug/feature.cgi?id=1767276
|
||||||
|
|
||||||
|
7.2 Provide mutex locking API
|
||||||
|
|
||||||
|
Provide a libcurl API for setting mutex callbacks in the underlying SSL
|
||||||
|
library, so that the same application code can use mutex-locking
|
||||||
|
independently of OpenSSL or GnutTLS being used.
|
||||||
|
|
||||||
|
7.3 Evaluate SSL patches
|
||||||
|
|
||||||
|
Evaluate/apply Gertjan van Wingerde's SSL patches:
|
||||||
|
http://curl.haxx.se/mail/lib-2004-03/0087.html
|
||||||
|
|
||||||
|
7.4 Cache OpenSSL contexts
|
||||||
|
|
||||||
|
"Look at SSL cafile - quick traces look to me like these are done on every
|
||||||
|
request as well, when they should only be necessary once per ssl context (or
|
||||||
|
once per handle)". The major improvement we can rather easily do is to make
|
||||||
|
sure we don't create and kill a new SSL "context" for every request, but
|
||||||
|
instead make one for every connection and re-use that SSL context in the same
|
||||||
|
style connections are re-used. It will make us use slightly more memory but
|
||||||
|
it will libcurl do less creations and deletions of SSL contexts.
|
||||||
|
|
||||||
|
7.5 Export session ids
|
||||||
|
|
||||||
|
Add an interface to libcurl that enables "session IDs" to get
|
||||||
|
exported/imported. Cris Bailiff said: "OpenSSL has functions which can
|
||||||
|
serialise the current SSL state to a buffer of your choice, and recover/reset
|
||||||
|
the state from such a buffer at a later date - this is used by mod_ssl for
|
||||||
|
apache to implement and SSL session ID cache".
|
||||||
|
|
||||||
|
7.6 Provide callback for cert verification
|
||||||
|
|
||||||
|
OpenSSL supports a callback for customised verification of the peer
|
||||||
|
certificate, but this doesn't seem to be exposed in the libcurl APIs. Could
|
||||||
|
it be? There's so much that could be done if it were!
|
||||||
|
|
||||||
|
7.7 Support other SSL libraries
|
||||||
|
|
||||||
|
Make curl's SSL layer capable of using other free SSL libraries. Such as
|
||||||
|
MatrixSSL (http://www.matrixssl.org/).
|
||||||
|
|
||||||
|
7.8 Support SRP on the TLS layer
|
||||||
|
|
||||||
|
Peter Sylvester's patch for SRP on the TLS layer. Awaits OpenSSL support for
|
||||||
|
this, no need to support this in libcurl before there's an OpenSSL release
|
||||||
|
that does it.
|
||||||
|
|
||||||
|
7.9 improve configure --with-ssl
|
||||||
|
|
||||||
|
make the configure --with-ssl option first check for OpenSSL, then GnuTLS,
|
||||||
|
then NSS...
|
||||||
|
|
||||||
|
7.10 Make NTLM work with other crypto functions
|
||||||
|
|
||||||
|
Get NTLM working using the functions provided by NSS etc. Not strictly
|
||||||
|
SSL/TLS related, but hey... Another option is to get available DES and MD4
|
||||||
|
source code from the cryptopp library. They are fine license-wise, but are
|
||||||
|
C++. NTLM currenly only works when libcurl is built with OpenSSL or GnuTLS
|
||||||
|
support.
|
||||||
|
|
||||||
|
8. GnuTLS
|
||||||
|
|
||||||
|
8.1 SSL engine stuff
|
||||||
|
|
||||||
|
Is this even possible?
|
||||||
|
|
||||||
|
8.2 SRP
|
||||||
|
|
||||||
|
Work out a common method with Peter Sylvester's OpenSSL-patch for SRP on the
|
||||||
|
TLS to provide name and password. GnuTLS already supports it...
|
||||||
|
|
||||||
|
8.3 check connection
|
||||||
|
|
||||||
|
Add a way to check if the connection seems to be alive, to correspond to the
|
||||||
|
SSL_peak() way we use with OpenSSL.
|
||||||
|
|
||||||
|
9. Other protocols
|
||||||
|
|
||||||
|
10. New protocols
|
||||||
|
|
||||||
|
10.1 RSYNC
|
||||||
|
|
||||||
|
There's no RFC for protocol nor URI/URL format. An implementation should
|
||||||
|
most probably use an existing rsync library, such as librsync.
|
||||||
|
|
||||||
|
10.2 RTMP
|
||||||
|
|
||||||
|
There exists a patch that claims to introduce this protocol:
|
||||||
|
http://osdir.com/ml/gnu.gnash.devel2/2006-11/msg00278.html, further details
|
||||||
|
in the feature-request: http://curl.haxx.se/bug/feature.cgi?id=1843469
|
||||||
|
|
||||||
|
11. Client
|
||||||
|
|
||||||
|
11.1 sync
|
||||||
|
|
||||||
|
"curl --sync http://example.com/feed[1-100].rss" or
|
||||||
|
"curl --sync http://example.net/{index,calendar,history}.html"
|
||||||
|
|
||||||
|
Downloads a range or set of URLs using the remote name, but only if the
|
||||||
|
remote file is newer than the local file. A Last-Modified HTTP date header
|
||||||
|
should also be used to set the mod date on the downloaded file.
|
||||||
|
|
||||||
|
11.2 glob posts
|
||||||
|
|
||||||
|
Globbing support for -d and -F, as in 'curl -d "name=foo[0-9]" URL'.
|
||||||
|
This is easily scripted though.
|
||||||
|
|
||||||
|
11.3 prevent file overwriting
|
||||||
|
|
||||||
|
Add an option that prevents cURL from overwriting existing local files. When
|
||||||
|
used, and there already is an existing file with the target file name
|
||||||
|
(either -O or -o), a number should be appended (and increased if already
|
||||||
|
existing). So that index.html becomes first index.html.1 and then
|
||||||
|
index.html.2 etc.
|
||||||
|
|
||||||
|
11.4 simultaneous parallel transfers
|
||||||
|
|
||||||
|
The client could be told to use maximum N simultaneous parallel transfers and
|
||||||
|
then just make sure that happens. It should of course not make more than one
|
||||||
|
connection to the same remote host. This would require the client to use the
|
||||||
|
multi interface. http://curl.haxx.se/bug/feature.cgi?id=1558595
|
||||||
|
|
||||||
|
11.5 provide formpost headers
|
||||||
|
|
||||||
|
Extending the capabilities of the multipart formposting. How about leaving
|
||||||
|
the ';type=foo' syntax as it is and adding an extra tag (headers) which
|
||||||
|
works like this: curl -F "coolfiles=@fil1.txt;headers=@fil1.hdr" where
|
||||||
|
fil1.hdr contains extra headers like
|
||||||
|
|
||||||
|
Content-Type: text/plain; charset=KOI8-R"
|
||||||
|
Content-Transfer-Encoding: base64
|
||||||
|
X-User-Comment: Please don't use browser specific HTML code
|
||||||
|
|
||||||
|
which should overwrite the program reasonable defaults (plain/text,
|
||||||
|
8bit...)
|
||||||
|
|
||||||
|
11.6 url-specific options
|
||||||
|
|
||||||
|
Provide a way to make options bound to a specific URL among several on the
|
||||||
|
command line. Possibly by letting ':' separate options between URLs,
|
||||||
|
similar to this:
|
||||||
|
|
||||||
|
curl --data foo --url url.com : \
|
||||||
|
--url url2.com : \
|
||||||
|
--url url3.com --data foo3
|
||||||
|
|
||||||
|
(More details: http://curl.haxx.se/mail/archive-2004-07/0133.html)
|
||||||
|
|
||||||
|
The example would do a POST-GET-POST combination on a single command line.
|
||||||
|
|
||||||
|
11.7 metalink support
|
||||||
|
|
||||||
|
Add metalink support to curl (http://www.metalinker.org/). This is most useful
|
||||||
|
with simultaneous parallel transfers (11.6) but not necessary.
|
||||||
|
|
||||||
|
11.8 warning when setting an option
|
||||||
|
|
||||||
|
Display a warning when libcurl returns an error when setting an option.
|
||||||
|
This can be useful to tell when support for a particular feature hasn't been
|
||||||
|
compiled into the library.
|
||||||
|
|
||||||
|
12. Build
|
||||||
|
|
||||||
|
12.1 roffit
|
||||||
|
|
||||||
|
Consider extending 'roffit' to produce decent ASCII output, and use that
|
||||||
|
instead of (g)nroff when building src/hugehelp.c
|
||||||
|
|
||||||
|
13. Test suite
|
||||||
|
|
||||||
|
13.1 SSL tunnel
|
||||||
|
|
||||||
|
Make our own version of stunnel for simple port forwarding to enable HTTPS
|
||||||
|
and FTP-SSL tests without the stunnel dependency, and it could allow us to
|
||||||
|
provide test tools built with either OpenSSL or GnuTLS
|
||||||
|
|
||||||
|
13.2 nicer lacking perl message
|
||||||
|
|
||||||
|
If perl wasn't found by the configure script, don't attempt to run the tests
|
||||||
|
but explain something nice why it doesn't.
|
||||||
|
|
||||||
|
13.3 more protocols supported
|
||||||
|
|
||||||
|
Extend the test suite to include more protocols. The telnet could just do ftp
|
||||||
|
or http operations (for which we have test servers).
|
||||||
|
|
||||||
|
13.4 more platforms supported
|
||||||
|
|
||||||
|
Make the test suite work on more platforms. OpenBSD and Mac OS. Remove
|
||||||
|
fork()s and it should become even more portable.
|
||||||
|
|
||||||
|
14. Next SONAME bump
|
||||||
|
|
||||||
|
14.1 http-style HEAD output for ftp
|
||||||
|
|
||||||
|
#undef CURL_FTP_HTTPSTYLE_HEAD in lib/ftp.c to remove the HTTP-style headers
|
||||||
|
from being output in NOBODY requests over ftp
|
||||||
|
|
||||||
|
14.2 combine error codes
|
||||||
|
|
||||||
|
Combine some of the error codes to remove duplicates. The original
|
||||||
|
numbering should not be changed, and the old identifiers would be
|
||||||
|
macroed to the new ones in an CURL_NO_OLDIES section to help with
|
||||||
|
backward compatibility.
|
||||||
|
|
||||||
|
Candidates for removal and their replacements:
|
||||||
|
|
||||||
|
CURLE_FILE_COULDNT_READ_FILE => CURLE_REMOTE_FILE_NOT_FOUND
|
||||||
|
CURLE_FTP_COULDNT_RETR_FILE => CURLE_REMOTE_FILE_NOT_FOUND
|
||||||
|
CURLE_FTP_COULDNT_USE_REST => CURLE_RANGE_ERROR
|
||||||
|
CURLE_FUNCTION_NOT_FOUND => CURLE_FAILED_INIT
|
||||||
|
CURLE_LDAP_INVALID_URL => CURLE_URL_MALFORMAT
|
||||||
|
CURLE_TFTP_NOSUCHUSER => CURLE_TFTP_ILLEGAL
|
||||||
|
CURLE_TFTP_NOTFOUND => CURLE_REMOTE_FILE_NOT_FOUND
|
||||||
|
CURLE_TFTP_PERM => CURLE_REMOTE_ACCESS_DENIED
|
||||||
|
|
||||||
|
14.3 extend CURLOPT_SOCKOPTFUNCTION prototype
|
||||||
|
|
||||||
|
The current prototype only provides 'purpose' that tells what the
|
||||||
|
connection/socket is for, but not any protocol or similar. It makes it hard
|
||||||
|
for applications to differentiate on TCP vs UDP and even HTTP vs FTP and
|
||||||
|
similar.
|
||||||
|
|
||||||
|
15. Next major release
|
||||||
|
|
||||||
|
15.1 cleanup return codes
|
||||||
|
|
||||||
|
curl_easy_cleanup() returns void, but curl_multi_cleanup() returns a
|
||||||
|
CURLMcode. These should be changed to be the same.
|
||||||
|
|
||||||
|
15.2 remove obsolete defines
|
||||||
|
|
||||||
|
remove obsolete defines from curl/curl.h
|
||||||
|
|
||||||
|
15.3 size_t
|
||||||
|
|
||||||
|
make several functions use size_t instead of int in their APIs
|
||||||
|
|
||||||
|
15.4 remove several functions
|
||||||
|
|
||||||
|
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 using them, by building with them from source.
|
||||||
|
|
||||||
|
These functions have no purpose anymore:
|
||||||
|
|
||||||
|
curl_multi_socket
|
||||||
|
|
||||||
|
curl_multi_socket_all
|
||||||
|
|
||||||
|
15.5 remove CURLOPT_FAILONERROR
|
||||||
|
|
||||||
|
Remove support for CURLOPT_FAILONERROR, it has gotten too kludgy and weird
|
||||||
|
internally. Let the app judge success or not for itself.
|
||||||
|
|
||||||
|
15.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE
|
||||||
|
|
||||||
|
Remove support for a global DNS cache. Anything global is silly, and we
|
||||||
|
already offer the share interface for the same functionality but done
|
||||||
|
"right".
|
||||||
|
|
||||||
|
15.7 remove progress meter from libcurl
|
||||||
|
|
||||||
|
The internally provided progress meter output doesn't belong in the library.
|
||||||
|
Basically no application wants it (apart from curl) but instead applications
|
||||||
|
can and should do their own progress meters using the progress callback.
|
||||||
|
|
||||||
|
The progress callback should then be bumped as well to get proper 64bit
|
||||||
|
variable types passed to it instead of doubles so that big files work
|
||||||
|
correctly.
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
Online: http://curl.haxx.se/docs/httpscripting.shtml
|
Online: http://curl.haxx.se/docs/httpscripting.html
|
||||||
Author: Daniel Stenberg <daniel@haxx.se>
|
Date: May 28, 2008
|
||||||
Date: October 31, 2001
|
|
||||||
Version: 0.5
|
|
||||||
|
|
||||||
The Art Of Scripting HTTP Requests Using Curl
|
The Art Of Scripting HTTP Requests Using Curl
|
||||||
=============================================
|
=============================================
|
||||||
@@ -65,7 +63,8 @@ Version: 0.5
|
|||||||
|
|
||||||
All HTTP replies contain a set of headers that are normally hidden, use
|
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
|
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
|
4. Forms
|
||||||
|
|
||||||
@@ -122,22 +121,31 @@ Version: 0.5
|
|||||||
|
|
||||||
<form method="POST" action="junk.cgi">
|
<form method="POST" action="junk.cgi">
|
||||||
<input type=text name="birthyear">
|
<input type=text name="birthyear">
|
||||||
<input type=submit name=press value="OK">
|
<input type=submit name=press value=" OK ">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
And to use curl to post this form with the same data filled in as before, we
|
And to use curl to post this form with the same data filled in as before, we
|
||||||
could do it like:
|
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
|
This kind of POST will use the Content-Type
|
||||||
application/x-www-form-urlencoded and is the most widely used POST kind.
|
application/x-www-form-urlencoded and is the most widely used POST kind.
|
||||||
|
|
||||||
4.3 FILE UPLOAD POST
|
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.
|
||||||
|
|
||||||
Back in late 1995 they defined a new way to post data over HTTP. It was
|
Recent curl versions can in fact url-encode POST data for you, like this:
|
||||||
documented in the RFC 1867, why this method sometimes is referred to as
|
|
||||||
a RFC1867-posting.
|
curl --data-urlencode "name=I am Daniel" www.example.com
|
||||||
|
|
||||||
|
4.3 File Upload POST
|
||||||
|
|
||||||
|
Back in late 1995 they defined an additional way to post data over HTTP. It
|
||||||
|
is documented in the RFC 1867, why this method sometimes is referred to as
|
||||||
|
RFC1867-posting.
|
||||||
|
|
||||||
This method is mainly designed to better support file uploads. A form that
|
This method is mainly designed to better support file uploads. A form that
|
||||||
allows a user to upload a file could be written like this in HTML:
|
allows a user to upload a file could be written like this in HTML:
|
||||||
@@ -154,7 +162,7 @@ Version: 0.5
|
|||||||
|
|
||||||
curl -F upload=@localfilename -F press=OK [URL]
|
curl -F upload=@localfilename -F press=OK [URL]
|
||||||
|
|
||||||
4.4 HIDDEN FIELDS
|
4.4 Hidden Fields
|
||||||
|
|
||||||
A very common way for HTML based application to pass state information
|
A very common way for HTML based application to pass state information
|
||||||
between pages is to add hidden fields to the forms. Hidden fields are
|
between pages is to add hidden fields to the forms. Hidden fields are
|
||||||
@@ -175,7 +183,7 @@ Version: 0.5
|
|||||||
|
|
||||||
curl -d "birthyear=1905&press=OK&person=daniel" [URL]
|
curl -d "birthyear=1905&press=OK&person=daniel" [URL]
|
||||||
|
|
||||||
4.5 FIGURE OUT WHAT A POST LOOKS LIKE
|
4.5 Figure Out What A POST Looks Like
|
||||||
|
|
||||||
When you're about fill in a form and send to a server by using curl instead
|
When you're about fill in a form and send to a server by using curl instead
|
||||||
of a browser, you're of course very interested in sending a POST exactly the
|
of a browser, you're of course very interested in sending a POST exactly the
|
||||||
@@ -198,19 +206,23 @@ Version: 0.5
|
|||||||
|
|
||||||
curl -T uploadfile www.uploadhttp.com/receive.cgi
|
curl -T uploadfile www.uploadhttp.com/receive.cgi
|
||||||
|
|
||||||
6. AUTHENTICATION
|
6. HTTP Authentication
|
||||||
|
|
||||||
Authentication is the ability to tell the server your username and password
|
HTTP Authentication is the ability to tell the server your username and
|
||||||
so that it can verify that you're allowed to do the request you're doing. The
|
password so that it can verify that you're allowed to do the request you're
|
||||||
basic authentication used in HTTP is *plain* *text* based, which means it
|
doing. The Basic authentication used in HTTP (which is the type curl uses by
|
||||||
sends username and password only slightly obfuscated, but still fully
|
default) is *plain* *text* based, which means it sends username and password
|
||||||
readable by anyone that sniffs on the network between you and the remote
|
only slightly obfuscated, but still fully readable by anyone that sniffs on
|
||||||
server.
|
the network between you and the remote server.
|
||||||
|
|
||||||
To tell curl to use a user and password for authentication:
|
To tell curl to use a user and password for authentication:
|
||||||
|
|
||||||
curl -u name:password www.secrets.com
|
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
|
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
|
proxy. This seems to be especially common at various companies. A HTTP proxy
|
||||||
may require its own user and password to allow the client to get through to
|
may require its own user and password to allow the client to get through to
|
||||||
@@ -218,29 +230,36 @@ Version: 0.5
|
|||||||
|
|
||||||
curl -U proxyuser:proxypassword curl.haxx.se
|
curl -U proxyuser:proxypassword curl.haxx.se
|
||||||
|
|
||||||
|
If your proxy requires the authentication to be done using the NTLM method,
|
||||||
|
use --proxy-ntlm, if it requires Digest use --proxy-digest.
|
||||||
|
|
||||||
If you use any one these user+password options but leave out the password
|
If you use any one these user+password options but leave out the password
|
||||||
part, curl will prompt for the password interactively.
|
part, curl will prompt for the password interactively.
|
||||||
|
|
||||||
Do note that when a program is run, its parameters are possible to see when
|
Do note that when a program is run, its parameters might be possible to see
|
||||||
listing the running processes of the system. Thus, other users may be able to
|
when listing the running processes of the system. Thus, other users may be
|
||||||
watch your passwords if you pass them as plain command line options. There
|
able to watch your passwords if you pass them as plain command line
|
||||||
are ways to circumvent this.
|
options. There are ways to circumvent this.
|
||||||
|
|
||||||
7. REFERER
|
It is worth noting that while this is how HTTP Authentication works, very
|
||||||
|
many web sites will not use this concept when they provide logins etc. See
|
||||||
|
the Web Login chapter further below for more details on that.
|
||||||
|
|
||||||
A HTTP request may include a 'referer' field, which can be used to tell from
|
7. Referer
|
||||||
which URL the client got to this particular resource. Some programs/scripts
|
|
||||||
check the referer field of requests to verify that this wasn't arriving from
|
A HTTP request may include a 'referer' field (yes it is misspelled), which
|
||||||
an external site or an unknown page. While this is a stupid way to check
|
can be used to tell from which URL the client got to this particular
|
||||||
something so easily forged, many scripts still do it. Using curl, you can put
|
resource. Some programs/scripts check the referer field of requests to verify
|
||||||
anything you want in the referer-field and thus more easily be able to fool
|
that this wasn't arriving from an external site or an unknown page. While
|
||||||
the server into serving your request.
|
this is a stupid way to check something so easily forged, many scripts still
|
||||||
|
do it. Using curl, you can put anything you want in the referer-field and
|
||||||
|
thus more easily be able to fool the server into serving your request.
|
||||||
|
|
||||||
Use curl to set the referer field with:
|
Use curl to set the referer field with:
|
||||||
|
|
||||||
curl -e http://curl.haxx.se daniel.haxx.se
|
curl -e http://curl.haxx.se daniel.haxx.se
|
||||||
|
|
||||||
8. USER AGENT
|
8. User Agent
|
||||||
|
|
||||||
Very similar to the referer field, all HTTP requests may set the User-Agent
|
Very similar to the referer field, all HTTP requests may set the User-Agent
|
||||||
field. It names what user agent (client) that is being used. Many
|
field. It names what user agent (client) that is being used. Many
|
||||||
@@ -262,7 +281,7 @@ Version: 0.5
|
|||||||
|
|
||||||
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
|
curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]
|
||||||
|
|
||||||
9. REDIRECTS
|
9. Redirects
|
||||||
|
|
||||||
When a resource is requested from a server, the reply from the server may
|
When a resource is requested from a server, the reply from the server may
|
||||||
include a hint about where the browser should go next to find this page, or a
|
include a hint about where the browser should go next to find this page, or a
|
||||||
@@ -273,15 +292,15 @@ Version: 0.5
|
|||||||
such pages in the same manner it display all HTTP replies. It does however
|
such pages in the same manner it display all HTTP replies. It does however
|
||||||
feature an option that will make it attempt to follow the Location: pointers.
|
feature an option that will make it attempt to follow the Location: pointers.
|
||||||
|
|
||||||
To tell curl to follow a Location:
|
To tell curl to follow a Location:
|
||||||
|
|
||||||
curl -L www.sitethatredirects.com
|
curl -L www.sitethatredirects.com
|
||||||
|
|
||||||
If you use curl to POST to a site that immediately redirects you to another
|
If you use curl to POST to a site that immediately redirects you to another
|
||||||
page, you can safely use -L and -d/-F together. Curl will only use POST in
|
page, you can safely use -L and -d/-F together. Curl will only use POST in
|
||||||
the first request, and then revert to GET in the following operations.
|
the first request, and then revert to GET in the following operations.
|
||||||
|
|
||||||
10. COOKIES
|
10. Cookies
|
||||||
|
|
||||||
The way the web browsers do "client side state control" is by using
|
The way the web browsers do "client side state control" is by using
|
||||||
cookies. Cookies are just names with associated contents. The cookies are
|
cookies. Cookies are just names with associated contents. The cookies are
|
||||||
@@ -309,6 +328,9 @@ Version: 0.5
|
|||||||
|
|
||||||
curl -D headers_and_cookies www.cookiesite.com
|
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
|
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
|
want to reconnect to a server and use cookies that were stored from a
|
||||||
previous connection (or handicrafted manually to fool the server into
|
previous connection (or handicrafted manually to fool the server into
|
||||||
@@ -350,19 +372,109 @@ Version: 0.5
|
|||||||
|
|
||||||
curl https://that.secure.server.com
|
curl https://that.secure.server.com
|
||||||
|
|
||||||
11.1 CERTIFICATES
|
11.1 Certificates
|
||||||
|
|
||||||
In the HTTPS world, you use certificates to validate that you are the one
|
In the HTTPS world, you use certificates to validate that you are the one
|
||||||
you you claim to be, as an addition to normal passwords. Curl supports
|
you claim to be, as an addition to normal passwords. Curl supports client-
|
||||||
client-side certificates. All certificates are locked with a PIN-code, why
|
side certificates. All certificates are locked with a pass phrase, which you
|
||||||
you need to enter the unlock-code before the certificate can be used by
|
need to enter before the certificate can be used by curl. The pass phrase
|
||||||
curl. The PIN-code can be specified on the command line or if not, entered
|
can be specified on the command line or if not, entered interactively when
|
||||||
interactively when curl queries for it. Use a certificate with curl on a
|
curl queries for it. Use a certificate with curl on a HTTPS server like:
|
||||||
HTTPS server like:
|
|
||||||
|
|
||||||
curl -E mycert.pem https://that.secure.server.com
|
curl -E mycert.pem https://that.secure.server.com
|
||||||
|
|
||||||
12. REFERENCES
|
curl also tries to verify that the server is who it claims to be, by
|
||||||
|
verifying the server's certificate against a locally stored 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.
|
||||||
|
|
||||||
|
More about server certificate verification and ca cert bundles can be read
|
||||||
|
in the SSLCERTS document, available online here:
|
||||||
|
|
||||||
|
http://curl.haxx.se/docs/sslcerts.html
|
||||||
|
|
||||||
|
12. Custom Request Elements
|
||||||
|
|
||||||
|
Doing fancy stuff, you may need to add or change elements of a single curl
|
||||||
|
request.
|
||||||
|
|
||||||
|
For example, you can change the POST request to a PROPFIND and send the data
|
||||||
|
as "Content-Type: text/xml" (instead of the default Content-Type) like this:
|
||||||
|
|
||||||
|
curl -d "<xml>" -H "Content-Type: text/xml" -X PROPFIND url.com
|
||||||
|
|
||||||
|
You can delete a default header by providing one without content. Like you
|
||||||
|
can ruin the request by chopping off the Host: header:
|
||||||
|
|
||||||
|
curl -H "Host:" http://mysite.com
|
||||||
|
|
||||||
|
You can add headers the same way. Your server may want a "Destination:"
|
||||||
|
header, and you can add it:
|
||||||
|
|
||||||
|
curl -H "Destination: http://moo.com/nowhere" http://url.com
|
||||||
|
|
||||||
|
13. Web Login
|
||||||
|
|
||||||
|
While not strictly just HTTP related, it still cause a lot of people problems
|
||||||
|
so here's the executive run-down of how the vast majority of all login forms
|
||||||
|
work and how to login to them using curl.
|
||||||
|
|
||||||
|
It can also be noted that to do this properly in an automated fashion, you
|
||||||
|
will most certainly need to script things and do multiple curl invokes etc.
|
||||||
|
|
||||||
|
First, servers mostly use cookies to track the logged-in status of the
|
||||||
|
client, so you will need to capture the cookies you receive in the
|
||||||
|
responses. Then, many sites also set a special cookie on the login page (to
|
||||||
|
make sure you got there through their login page) so you should make a habit
|
||||||
|
of first getting the login-form page to capture the cookies set there.
|
||||||
|
|
||||||
|
Some web-based login systems features various amounts of javascript, and
|
||||||
|
sometimes they use such code to set or modify cookie contents. Possibly they
|
||||||
|
do that to prevent programmed logins, like this manual describes how to...
|
||||||
|
Anyway, if reading the code isn't enough to let you repeat the behavior
|
||||||
|
manually, capturing the HTTP requests done by your browers and analyzing the
|
||||||
|
sent cookies is usually a working method to work out how to shortcut the
|
||||||
|
javascript need.
|
||||||
|
|
||||||
|
In the actual <form> tag for the login, lots of sites fill-in random/session
|
||||||
|
or otherwise secretly generated hidden tags and you may need to first capture
|
||||||
|
the HTML code for the login form and extract all the hidden fields to be able
|
||||||
|
to do a proper login POST. Remember that the contents need to be URL encoded
|
||||||
|
when sent in a normal POST.
|
||||||
|
|
||||||
|
|
||||||
|
14. Debug
|
||||||
|
|
||||||
|
Many times when you run curl on a site, you'll notice that the site doesn't
|
||||||
|
seem to respond the same way to your curl requests as it does to your
|
||||||
|
browser's.
|
||||||
|
|
||||||
|
Then you need to start making your curl requests more similar to your
|
||||||
|
browser's requests:
|
||||||
|
|
||||||
|
* Use the --trace-ascii option to store fully detailed logs of the requests
|
||||||
|
for easier analyzing and better understanding
|
||||||
|
|
||||||
|
* Make sure you check for and use cookies when needed (both reading with -b
|
||||||
|
and writing with -c)
|
||||||
|
|
||||||
|
* Set user-agent to one like a recent popular browser does
|
||||||
|
|
||||||
|
* Set referer like it is set by the browser
|
||||||
|
|
||||||
|
* If you use POST, make sure you send all the fields and in the same order as
|
||||||
|
the browser does it. (See chapter 4.5 above)
|
||||||
|
|
||||||
|
A very good helper to make sure you do this right, is the LiveHTTPHeader tool
|
||||||
|
that lets you view all headers you send and receive with Mozilla/Firefox
|
||||||
|
(even when using HTTPS).
|
||||||
|
|
||||||
|
A more raw approach is to capture the HTTP traffic on the network with tools
|
||||||
|
such as ethereal or tcpdump and check what headers that were sent and
|
||||||
|
received by the browser. (HTTPS makes this technique inefficient.)
|
||||||
|
|
||||||
|
15. References
|
||||||
|
|
||||||
RFC 2616 is a must to read if you want in-depth understanding of the HTTP
|
RFC 2616 is a must to read if you want in-depth understanding of the HTTP
|
||||||
protocol.
|
protocol.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
_ _ ____ _
|
_ _ ____ _
|
||||||
___| | | | _ \| |
|
___| | | | _ \| |
|
||||||
/ __| | | | |_) | |
|
/ __| | | | |_) | |
|
||||||
| (__| |_| | _ <| |___
|
| (__| |_| | _ <| |___
|
||||||
\___|\___/|_| \_\_____|
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
Version Numbers and Releases
|
Version Numbers and Releases
|
||||||
@@ -20,7 +20,7 @@ Version Numbers and Releases
|
|||||||
N is pre-release number
|
N is pre-release number
|
||||||
|
|
||||||
One of these numbers will get bumped in each new release. The numbers to the
|
One of these numbers will get bumped in each new release. The numbers to the
|
||||||
right of a bumped number will be reset to zero. If Z is zero, it is not
|
right of a bumped number will be reset to zero. If Z is zero, it may not be
|
||||||
included in the version number. The pre release number is only included in
|
included in the version number. The pre release number is only included in
|
||||||
pre releases (they're never used in public, official, releases).
|
pre releases (they're never used in public, official, releases).
|
||||||
|
|
||||||
@@ -49,10 +49,10 @@ Version Numbers and Releases
|
|||||||
|
|
||||||
As a service to any application that might want to support new libcurl
|
As a service to any application that might want to support new libcurl
|
||||||
features while still being able to build with older versions, all releases
|
features while still being able to build with older versions, all releases
|
||||||
have the libcurl version stored in the curl/curl.h file using a static
|
have the libcurl version stored in the curl/curlver.h file using a static
|
||||||
numbering scheme that can be used for comparison. The version number is
|
numbering scheme that can be used for comparison. The version number is
|
||||||
defined as:
|
defined as:
|
||||||
|
|
||||||
#define LIBCURL_VERSION_NUM 0xXXYYZZ
|
#define LIBCURL_VERSION_NUM 0xXXYYZZ
|
||||||
|
|
||||||
Where XX, YY and ZZ are the main version, release and patch numbers in
|
Where XX, YY and ZZ are the main version, release and patch numbers in
|
||||||
@@ -62,3 +62,6 @@ Version Numbers and Releases
|
|||||||
This 6-digit hexadecimal number does not show pre-release number, and it is
|
This 6-digit hexadecimal number does not show pre-release number, and it is
|
||||||
always a greater number in a more recent release. It makes comparisons with
|
always a greater number in a more recent release. It makes comparisons with
|
||||||
greater than and less than work.
|
greater than and less than work.
|
||||||
|
|
||||||
|
This number is also available as three separate defines:
|
||||||
|
LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH.
|
||||||
|
|||||||
@@ -1,26 +1,53 @@
|
|||||||
.\" You can view this file with:
|
.\" **************************************************************************
|
||||||
.\" nroff -man curl-config.1
|
.\" * _ _ ____ _
|
||||||
.\" Written by Daniel Stenberg
|
.\" * Project ___| | | | _ \| |
|
||||||
|
.\" * / __| | | | |_) | |
|
||||||
|
.\" * | (__| |_| | _ <| |___
|
||||||
|
.\" * \___|\___/|_| \_\_____|
|
||||||
|
.\" *
|
||||||
|
.\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||||
|
.\" *
|
||||||
|
.\" * This software is licensed as described in the file COPYING, which
|
||||||
|
.\" * you should have received as part of this distribution. The terms
|
||||||
|
.\" * 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.
|
||||||
|
.\" *
|
||||||
|
.\" **************************************************************************
|
||||||
.\"
|
.\"
|
||||||
.TH curl-config 1 "21 January 2002" "Curl 7.9.3" "curl-config manual"
|
.TH curl-config 1 "25 Oct 2007" "Curl 7.17.1" "curl-config manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
curl-config \- Get information about a libcurl installation
|
curl-config \- Get information about a libcurl installation
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B curl-config [options]
|
.B curl-config [options]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B curl-config
|
.B curl-config
|
||||||
displays information about a previous curl and libcurl installation.
|
displays information about the curl and libcurl installation.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
|
.IP "--ca"
|
||||||
|
Displays the built-in path to the CA cert bundle this libcurl uses.
|
||||||
.IP "--cc"
|
.IP "--cc"
|
||||||
Displays the compiler used to build libcurl.
|
Displays the compiler used to build libcurl.
|
||||||
.IP "--cflags"
|
.IP "--cflags"
|
||||||
Set of compiler options (CFLAGS) to use when compiling files that use
|
Set of compiler options (CFLAGS) to use when compiling files that use
|
||||||
libcurl. Currently that is only thw include path to the curl include files.
|
libcurl. Currently that is only the include path to the curl include files.
|
||||||
|
.IP "--checkfor [version]"
|
||||||
|
Specify the oldest possible libcurl version string you want, and this
|
||||||
|
script will return 0 if the current installation is new enough or it
|
||||||
|
returns 1 and outputs a text saying that the current version is not new
|
||||||
|
enough. (Added in 7.15.4)
|
||||||
|
.IP "--configure"
|
||||||
|
Displays the arguments given to configure when building curl.
|
||||||
.IP "--feature"
|
.IP "--feature"
|
||||||
Lists what particular main features the installed libcurl was built with. At
|
Lists what particular main features the installed libcurl was built with. At
|
||||||
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
|
the time of writing, this list may include SSL, KRB4 or IPv6. Do not assume
|
||||||
any particular order. The keywords will be separated by newlines. There may be
|
any particular order. The keywords will be separated by newlines. There may be
|
||||||
none, one or several keywords in the list.
|
none, one, or several keywords in the list.
|
||||||
.IP "--help"
|
.IP "--help"
|
||||||
Displays the available options.
|
Displays the available options.
|
||||||
.IP "--libs"
|
.IP "--libs"
|
||||||
@@ -30,13 +57,23 @@ to link your application with libcurl.
|
|||||||
This is the prefix used when libcurl was installed. Libcurl is then installed
|
This is the prefix used when libcurl was installed. Libcurl is then installed
|
||||||
in $prefix/lib and its header files are installed in $prefix/include and so
|
in $prefix/lib and its header files are installed in $prefix/include and so
|
||||||
on. The prefix is set with "configure --prefix".
|
on. The prefix is set with "configure --prefix".
|
||||||
|
.IP "--protocols"
|
||||||
|
Lists what particular protocols the installed libcurl was built to support. At
|
||||||
|
the time of writing, this list may include HTTP, HTTPS, FTP, FTPS, FILE,
|
||||||
|
TELNET, LDAP, DICT. Do not assume any particular order. The protocols will
|
||||||
|
be listed using uppercase and are separated by newlines. There may be none,
|
||||||
|
one, or several protocols in the list. (Added in 7.13.0)
|
||||||
|
.IP "--static-libs"
|
||||||
|
Shows the complete set of libs and other linker options you will need in order
|
||||||
|
to link your application with libcurl statically. (Added in 7.17.1)
|
||||||
.IP "--version"
|
.IP "--version"
|
||||||
Outputs version information about the installed libcurl.
|
Outputs version information about the installed libcurl.
|
||||||
.IP "--vernum"
|
.IP "--vernum"
|
||||||
Outputs version information about the installed libcurl, in numerical mode.
|
Outputs version information about the installed libcurl, in numerical mode.
|
||||||
This outputs the version number, in hexadecimal, with 8 bits for each part;
|
This outputs the version number, in hexadecimal, with 8 bits for each part;
|
||||||
major, minor, patch. So that libcurl 7.7.4 would appear as 070704 and libcurl
|
major, minor, patch. So that libcurl 7.7.4 would appear as 070704 and libcurl
|
||||||
12.13.14 would appear as 0c0d0e...
|
12.13.14 would appear as 0c0d0e... Note that the initial zero might be
|
||||||
|
omitted. (This option was broken in the 7.15.0 release.)
|
||||||
.SH "EXAMPLES"
|
.SH "EXAMPLES"
|
||||||
What linker options do I need when I link with libcurl?
|
What linker options do I need when I link with libcurl?
|
||||||
|
|
||||||
|
|||||||
1662
docs/curl.1
1662
docs/curl.1
File diff suppressed because it is too large
Load Diff
32
docs/examples/.gitignore
vendored
Normal file
32
docs/examples/.gitignore
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
10-at-a-time
|
||||||
|
anyauthput
|
||||||
|
certinfo
|
||||||
|
chkspeed
|
||||||
|
cookie_interface
|
||||||
|
debug
|
||||||
|
fileupload
|
||||||
|
fopen
|
||||||
|
ftp-wildcard
|
||||||
|
ftpget
|
||||||
|
ftpgetinfo
|
||||||
|
ftpgetresp
|
||||||
|
ftpupload
|
||||||
|
getinfo
|
||||||
|
getinmemory
|
||||||
|
http-post
|
||||||
|
httpcustomheader
|
||||||
|
httpput
|
||||||
|
https
|
||||||
|
multi-app
|
||||||
|
multi-debugcallback
|
||||||
|
multi-double
|
||||||
|
multi-post
|
||||||
|
multi-single
|
||||||
|
persistant
|
||||||
|
post-callback
|
||||||
|
postit2
|
||||||
|
sendrecv
|
||||||
|
sepheaders
|
||||||
|
simple
|
||||||
|
simplepost
|
||||||
|
simplessl
|
||||||
184
docs/examples/10-at-a-time.c
Normal file
184
docs/examples/10-at-a-time.c
Normal file
@@ -0,0 +1,184 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Example application source code using the multi interface to download many
|
||||||
|
* files, but with a capped maximum amount of simultaneous transfers.
|
||||||
|
*
|
||||||
|
* Written by Michael Wallner
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#ifndef WIN32
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#include <curl/multi.h>
|
||||||
|
|
||||||
|
static const char *urls[] = {
|
||||||
|
"http://www.microsoft.com",
|
||||||
|
"http://www.opensource.org",
|
||||||
|
"http://www.google.com",
|
||||||
|
"http://www.yahoo.com",
|
||||||
|
"http://www.ibm.com",
|
||||||
|
"http://www.mysql.com",
|
||||||
|
"http://www.oracle.com",
|
||||||
|
"http://www.ripe.net",
|
||||||
|
"http://www.iana.org",
|
||||||
|
"http://www.amazon.com",
|
||||||
|
"http://www.netcraft.com",
|
||||||
|
"http://www.heise.de",
|
||||||
|
"http://www.chip.de",
|
||||||
|
"http://www.ca.com",
|
||||||
|
"http://www.cnet.com",
|
||||||
|
"http://www.news.com",
|
||||||
|
"http://www.cnn.com",
|
||||||
|
"http://www.wikipedia.org",
|
||||||
|
"http://www.dell.com",
|
||||||
|
"http://www.hp.com",
|
||||||
|
"http://www.cert.org",
|
||||||
|
"http://www.mit.edu",
|
||||||
|
"http://www.nist.gov",
|
||||||
|
"http://www.ebay.com",
|
||||||
|
"http://www.playstation.com",
|
||||||
|
"http://www.uefa.com",
|
||||||
|
"http://www.ieee.org",
|
||||||
|
"http://www.apple.com",
|
||||||
|
"http://www.sony.com",
|
||||||
|
"http://www.symantec.com",
|
||||||
|
"http://www.zdnet.com",
|
||||||
|
"http://www.fujitsu.com",
|
||||||
|
"http://www.supermicro.com",
|
||||||
|
"http://www.hotmail.com",
|
||||||
|
"http://www.ecma.com",
|
||||||
|
"http://www.bbc.co.uk",
|
||||||
|
"http://news.google.com",
|
||||||
|
"http://www.foxnews.com",
|
||||||
|
"http://www.msn.com",
|
||||||
|
"http://www.wired.com",
|
||||||
|
"http://www.sky.com",
|
||||||
|
"http://www.usatoday.com",
|
||||||
|
"http://www.cbs.com",
|
||||||
|
"http://www.nbc.com",
|
||||||
|
"http://slashdot.org",
|
||||||
|
"http://www.bloglines.com",
|
||||||
|
"http://www.techweb.com",
|
||||||
|
"http://www.newslink.org",
|
||||||
|
"http://www.un.org",
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MAX 10 /* number of simultaneous transfers */
|
||||||
|
#define CNT sizeof(urls)/sizeof(char*) /* total number of transfers to do */
|
||||||
|
|
||||||
|
static size_t cb(char *d, size_t n, size_t l, void *p)
|
||||||
|
{
|
||||||
|
/* take care of the data here, ignored in this example */
|
||||||
|
(void)d;
|
||||||
|
(void)p;
|
||||||
|
return n*l;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void init(CURLM *cm, int i)
|
||||||
|
{
|
||||||
|
CURL *eh = curl_easy_init();
|
||||||
|
|
||||||
|
curl_easy_setopt(eh, CURLOPT_WRITEFUNCTION, cb);
|
||||||
|
curl_easy_setopt(eh, CURLOPT_HEADER, 0L);
|
||||||
|
curl_easy_setopt(eh, CURLOPT_URL, urls[i]);
|
||||||
|
curl_easy_setopt(eh, CURLOPT_PRIVATE, urls[i]);
|
||||||
|
curl_easy_setopt(eh, CURLOPT_VERBOSE, 0L);
|
||||||
|
|
||||||
|
curl_multi_add_handle(cm, eh);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *cm;
|
||||||
|
CURLMsg *msg;
|
||||||
|
long L;
|
||||||
|
unsigned int C=0;
|
||||||
|
int M, Q, U = -1;
|
||||||
|
fd_set R, W, E;
|
||||||
|
struct timeval T;
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
|
cm = curl_multi_init();
|
||||||
|
|
||||||
|
/* we can optionally limit the total amount of connections this multi handle
|
||||||
|
uses */
|
||||||
|
curl_multi_setopt(cm, CURLMOPT_MAXCONNECTS, (long)MAX);
|
||||||
|
|
||||||
|
for (C = 0; C < MAX; ++C) {
|
||||||
|
init(cm, C);
|
||||||
|
}
|
||||||
|
|
||||||
|
while (U) {
|
||||||
|
while (CURLM_CALL_MULTI_PERFORM == curl_multi_perform(cm, &U));
|
||||||
|
|
||||||
|
if (U) {
|
||||||
|
FD_ZERO(&R);
|
||||||
|
FD_ZERO(&W);
|
||||||
|
FD_ZERO(&E);
|
||||||
|
|
||||||
|
if (curl_multi_fdset(cm, &R, &W, &E, &M)) {
|
||||||
|
fprintf(stderr, "E: curl_multi_fdset\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (curl_multi_timeout(cm, &L)) {
|
||||||
|
fprintf(stderr, "E: curl_multi_timeout\n");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
if (L == -1)
|
||||||
|
L = 100;
|
||||||
|
|
||||||
|
if (M == -1) {
|
||||||
|
#ifdef WIN32
|
||||||
|
Sleep(L);
|
||||||
|
#else
|
||||||
|
sleep(L / 1000);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
T.tv_sec = L/1000;
|
||||||
|
T.tv_usec = (L%1000)*1000;
|
||||||
|
|
||||||
|
if (0 > select(M+1, &R, &W, &E, &T)) {
|
||||||
|
fprintf(stderr, "E: select(%i,,,,%li): %i: %s\n",
|
||||||
|
M+1, L, errno, strerror(errno));
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while ((msg = curl_multi_info_read(cm, &Q))) {
|
||||||
|
if (msg->msg == CURLMSG_DONE) {
|
||||||
|
char *url;
|
||||||
|
CURL *e = msg->easy_handle;
|
||||||
|
curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, &url);
|
||||||
|
fprintf(stderr, "R: %d - %s <%s>\n",
|
||||||
|
msg->data.result, curl_easy_strerror(msg->data.result), url);
|
||||||
|
curl_multi_remove_handle(cm, e);
|
||||||
|
curl_easy_cleanup(e);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "E: CURLMsg (%d)\n", msg->msg);
|
||||||
|
}
|
||||||
|
if (C < CNT) {
|
||||||
|
init(cm, C++);
|
||||||
|
U++; /* just to prevent it from remaining at 0 if there are more
|
||||||
|
URLs to get */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_multi_cleanup(cm);
|
||||||
|
curl_global_cleanup();
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
@@ -1,13 +1,37 @@
|
|||||||
#
|
#
|
||||||
# $Id$
|
|
||||||
#
|
#
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign no-dependencies
|
AUTOMAKE_OPTIONS = foreign nostdinc
|
||||||
|
|
||||||
|
EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \
|
||||||
|
makefile.dj $(COMPLICATED_EXAMPLES)
|
||||||
|
|
||||||
|
# Specify our include paths here, and do it relative to $(top_srcdir) and
|
||||||
|
# $(top_builddir), to ensure that these paths which belong to the library
|
||||||
|
# being currently built and tested are searched before the library which
|
||||||
|
# might possibly already be installed in the system.
|
||||||
|
#
|
||||||
|
# $(top_builddir)/include/curl for generated curlbuild.h included from curl.h
|
||||||
|
# $(top_builddir)/include for generated curlbuild.h included from lib/setup.h
|
||||||
|
# $(top_srcdir)/include is for libcurl's external include files
|
||||||
|
|
||||||
|
INCLUDES = -I$(top_builddir)/include/curl \
|
||||||
|
-I$(top_builddir)/include \
|
||||||
|
-I$(top_srcdir)/include
|
||||||
|
|
||||||
|
LIBDIR = $(top_builddir)/lib
|
||||||
|
|
||||||
|
if STATICLIB
|
||||||
|
# we need this define when building with a static lib on Windows
|
||||||
|
STATICCPPFLAGS = -DCURL_STATICLIB
|
||||||
|
endif
|
||||||
|
|
||||||
|
CPPFLAGS = -DCURL_NO_OLDIES $(STATICCPPFLAGS)
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
LDADD = $(LIBDIR)/libcurl.la
|
||||||
|
|
||||||
|
# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
|
||||||
|
include Makefile.inc
|
||||||
|
|
||||||
EXTRA_DIST = README curlgtk.c sepheaders.c simple.c postit2.c \
|
|
||||||
win32sockets.c persistant.c ftpget.c Makefile.example \
|
|
||||||
multithread.c getinmemory.c ftpupload.c httpput.c \
|
|
||||||
simplessl.c ftpgetresp.c http-post.c
|
|
||||||
|
|
||||||
all:
|
|
||||||
@echo "done"
|
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
#############################################################################
|
#############################################################################
|
||||||
# _ _ ____ _
|
# _ _ ____ _
|
||||||
# Project ___| | | | _ \| |
|
# Project ___| | | | _ \| |
|
||||||
# / __| | | | |_) | |
|
# / __| | | | |_) | |
|
||||||
# | (__| |_| | _ <| |___
|
# | (__| |_| | _ <| |___
|
||||||
# \___|\___/|_| \_\_____|
|
# \___|\___/|_| \_\_____|
|
||||||
#
|
#
|
||||||
# $Id$
|
|
||||||
#
|
#
|
||||||
|
|
||||||
# What to call the final executable
|
# What to call the final executable
|
||||||
@@ -29,13 +28,12 @@ LDFLAGS = -L/home/dast/lib -L/usr/local/ssl/lib
|
|||||||
# We need -lcurl for the curl stuff
|
# We need -lcurl for the curl stuff
|
||||||
# We need -lsocket and -lnsl when on Solaris
|
# We need -lsocket and -lnsl when on Solaris
|
||||||
# We need -lssl and -lcrypto when using libcurl with SSL support
|
# We need -lssl and -lcrypto when using libcurl with SSL support
|
||||||
# We need -ldl for dlopen() if that is in libdl
|
|
||||||
# We need -lpthread for the pthread example
|
# We need -lpthread for the pthread example
|
||||||
LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto -dl
|
LIBS = -lcurl -lsocket -lnsl -lssl -lcrypto
|
||||||
|
|
||||||
# Link the target with all objects and libraries
|
# Link the target with all objects and libraries
|
||||||
$(TARGET) : $(OBJS)
|
$(TARGET) : $(OBJS)
|
||||||
$(CC) $(LDFLAGS) $(LIBS) -o $(TARGET) $(OBJS)
|
$(CC) -o $(TARGET) $(OBJS) $(LDFLAGS) $(LIBS)
|
||||||
|
|
||||||
# Compile the source files into object files
|
# Compile the source files into object files
|
||||||
ftpget.o : ftpget.c
|
ftpget.o : ftpget.c
|
||||||
|
|||||||
12
docs/examples/Makefile.inc
Normal file
12
docs/examples/Makefile.inc
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# These are all libcurl example programs to be test compiled
|
||||||
|
check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \
|
||||||
|
fopen ftpget ftpgetresp ftpupload getinfo getinmemory http-post httpput \
|
||||||
|
https multi-app multi-debugcallback multi-double multi-post multi-single \
|
||||||
|
persistant post-callback postit2 sepheaders simple simplepost simplessl \
|
||||||
|
sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard
|
||||||
|
|
||||||
|
# These examples require external dependencies that may not be commonly
|
||||||
|
# available on POSIX systems, so don't bother attempting to compile them here.
|
||||||
|
COMPLICATED_EXAMPLES = curlgtk.c curlx.c htmltitle.cc cacertinmem.c \
|
||||||
|
ftpuploadresume.c ghiper.c hiperfifo.c htmltidy.c multithread.c \
|
||||||
|
opensslthreadlock.c sampleconv.c synctime.c threaded-ssl.c evhiperfifo.c
|
||||||
133
docs/examples/Makefile.m32
Normal file
133
docs/examples/Makefile.m32
Normal file
@@ -0,0 +1,133 @@
|
|||||||
|
#########################################################################
|
||||||
|
#
|
||||||
|
## Makefile for building curl examples with MingW32
|
||||||
|
## and optionally OpenSSL (0.9.8), libssh2 (0.18), zlib (1.2.3)
|
||||||
|
##
|
||||||
|
## Usage:
|
||||||
|
## mingw32-make -f Makefile.m32 [SSL=1] [SSH2=1] [ZLIB=1] [SSPI=1] [IPV6=1] [DYN=1]
|
||||||
|
##
|
||||||
|
## Hint: you can also set environment vars to control the build, f.e.:
|
||||||
|
## set ZLIB_PATH=c:/zlib-1.2.3
|
||||||
|
## set ZLIB=1
|
||||||
|
##
|
||||||
|
#########################################################################
|
||||||
|
|
||||||
|
# Edit the path below to point to the base of your Zlib sources.
|
||||||
|
ifndef ZLIB_PATH
|
||||||
|
ZLIB_PATH = ../../zlib-1.2.3
|
||||||
|
endif
|
||||||
|
# Edit the path below to point to the base of your OpenSSL package.
|
||||||
|
ifndef OPENSSL_PATH
|
||||||
|
OPENSSL_PATH = ../../openssl-0.9.8k
|
||||||
|
endif
|
||||||
|
# Edit the path below to point to the base of your LibSSH2 package.
|
||||||
|
ifndef LIBSSH2_PATH
|
||||||
|
LIBSSH2_PATH = ../../libssh2-1.2
|
||||||
|
endif
|
||||||
|
# Edit the path below to point to the base of your Novell LDAP NDK.
|
||||||
|
ifndef LDAP_SDK
|
||||||
|
LDAP_SDK = c:/novell/ndk/cldapsdk/win32
|
||||||
|
endif
|
||||||
|
|
||||||
|
PROOT = ../..
|
||||||
|
ARES_LIB = $(PROOT)/ares
|
||||||
|
|
||||||
|
SSL = 1
|
||||||
|
ZLIB = 1
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -g -O2 -Wall
|
||||||
|
# comment LDFLAGS below to keep debug info
|
||||||
|
LDFLAGS = -s
|
||||||
|
RC = windres
|
||||||
|
RCFLAGS = --include-dir=$(PROOT)/include -O COFF -i
|
||||||
|
RM = del /q /f > NUL 2>&1
|
||||||
|
CP = copy
|
||||||
|
|
||||||
|
########################################################
|
||||||
|
## Nothing more to do below this line!
|
||||||
|
|
||||||
|
INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib
|
||||||
|
LINK = $(CC) $(LDFLAGS) -o $@
|
||||||
|
|
||||||
|
ifdef DYN
|
||||||
|
curl_DEPENDENCIES = $(PROOT)/lib/libcurldll.a $(PROOT)/lib/libcurl.dll
|
||||||
|
curl_LDADD = -L$(PROOT)/lib -lcurldll
|
||||||
|
else
|
||||||
|
curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a
|
||||||
|
curl_LDADD = -L$(PROOT)/lib -lcurl
|
||||||
|
CFLAGS += -DCURL_STATICLIB
|
||||||
|
endif
|
||||||
|
ifdef ARES
|
||||||
|
ifndef DYN
|
||||||
|
curl_DEPENDENCIES += $(ARES_LIB)/libcares.a
|
||||||
|
endif
|
||||||
|
CFLAGS += -DUSE_ARES
|
||||||
|
curl_LDADD += -L$(ARES_LIB) -lcares
|
||||||
|
endif
|
||||||
|
ifdef SSH2
|
||||||
|
CFLAGS += -DUSE_LIBSSH2 -DHAVE_LIBSSH2_H
|
||||||
|
curl_LDADD += -L$(LIBSSH2_PATH)/win32 -lssh2
|
||||||
|
endif
|
||||||
|
ifdef SSL
|
||||||
|
INCLUDES += -I"$(OPENSSL_PATH)/outinc"
|
||||||
|
CFLAGS += -DUSE_SSLEAY -DHAVE_OPENSSL_ENGINE_H
|
||||||
|
ifdef DYN
|
||||||
|
curl_LDADD += -L$(OPENSSL_PATH)/out -leay32 -lssl32
|
||||||
|
else
|
||||||
|
curl_LDADD += -L$(OPENSSL_PATH)/out -lssl -lcrypto -lgdi32
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifdef ZLIB
|
||||||
|
INCLUDES += -I"$(ZLIB_PATH)"
|
||||||
|
CFLAGS += -DHAVE_LIBZ -DHAVE_ZLIB_H
|
||||||
|
curl_LDADD += -L$(ZLIB_PATH) -lz
|
||||||
|
endif
|
||||||
|
ifdef SSPI
|
||||||
|
CFLAGS += -DUSE_WINDOWS_SSPI
|
||||||
|
endif
|
||||||
|
ifdef IPV6
|
||||||
|
CFLAGS += -DENABLE_IPV6
|
||||||
|
endif
|
||||||
|
ifdef LDAPS
|
||||||
|
CFLAGS += -DHAVE_LDAP_SSL
|
||||||
|
endif
|
||||||
|
ifdef USE_LDAP_NOVELL
|
||||||
|
CFLAGS += -DCURL_HAS_NOVELL_LDAPSDK
|
||||||
|
curl_LDADD += -L"$(LDAP_SDK)/lib/mscvc" -lldapsdk -lldapssl -lldapx
|
||||||
|
endif
|
||||||
|
ifdef USE_LDAP_OPENLDAP
|
||||||
|
CFLAGS += -DCURL_HAS_OPENLDAP_LDAPSDK
|
||||||
|
curl_LDADD += -L"$(LDAP_SDK)/lib" -lldap -llber
|
||||||
|
endif
|
||||||
|
ifndef USE_LDAP_NOVELL
|
||||||
|
ifndef USE_LDAP_OPENLDAP
|
||||||
|
curl_LDADD += -lwldap32
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
curl_LDADD += -lws2_32
|
||||||
|
COMPILE = $(CC) $(INCLUDES) $(CFLAGS)
|
||||||
|
|
||||||
|
# Makefile.inc provides the check_PROGRAMS and COMPLICATED_EXAMPLES defines
|
||||||
|
include Makefile.inc
|
||||||
|
|
||||||
|
example_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS)))
|
||||||
|
|
||||||
|
.SUFFIXES: .rc .res .o .exe
|
||||||
|
|
||||||
|
|
||||||
|
all: $(example_PROGRAMS)
|
||||||
|
|
||||||
|
.o.exe: $(curl_DEPENDENCIES)
|
||||||
|
$(LINK) $< $(curl_LDADD)
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(COMPILE) -c $<
|
||||||
|
|
||||||
|
.rc.res:
|
||||||
|
$(RC) $(RCFLAGS) $< -o $@
|
||||||
|
|
||||||
|
clean:
|
||||||
|
$(RM) $(example_PROGRAMS)
|
||||||
|
|
||||||
|
|
||||||
@@ -1,22 +1,76 @@
|
|||||||
EXAMPLES
|
_ _ ____ _
|
||||||
|
___| | | | _ \| |
|
||||||
|
/ __| | | | |_) | |
|
||||||
|
| (__| |_| | _ <| |___
|
||||||
|
\___|\___/|_| \_\_____|
|
||||||
|
|
||||||
This directory is for tiny libcurl programming examples. They are meant to
|
This directory is for libcurl programming examples. They are meant to show
|
||||||
show some simple steps on how you can build your own application to take full
|
some simple steps on how you can build your own application to take full
|
||||||
advantage of libcurl.
|
advantage of libcurl.
|
||||||
|
|
||||||
If you end up with other small but still useful example sources, please mail
|
If you end up with other small but still useful example sources, please mail
|
||||||
them for submission in future packages and on the web site.
|
them for submission in future packages and on the web site.
|
||||||
|
|
||||||
|
BUILDING
|
||||||
|
|
||||||
The Makefile.example is an example makefile that could be used to build these
|
The Makefile.example is an example makefile that could be used to build these
|
||||||
examples. Just edit the file according to your system and requirements first.
|
examples. Just edit the file according to your system and requirements first.
|
||||||
|
|
||||||
Most examples should build fine using a command line like this:
|
Most examples should build fine using a command line like this:
|
||||||
|
|
||||||
$ gcc `curl-config --cflags` `curl-config --libs` -o example example.c
|
$ `curl-config --cc --cflags --libs` -o example example.c
|
||||||
|
|
||||||
Try the php/examples/ directory for PHP programming snippets!
|
Some compilers don't like having the arguments in this order but instead
|
||||||
|
want you do reorganize them like:
|
||||||
|
|
||||||
*PLEASE* do not use the curl.haxx.se site as a test target for your libcurl
|
$ `curl-config --cc` -o example example.c `curl-config --cflags --libs`
|
||||||
applications/experiments. Even if the examples in this directory use that
|
|
||||||
site as an example URL at some places, it doesn't mean that the URLs work or
|
*PLEASE* do not use the curl.haxx.se site as a test target for your libcurl
|
||||||
that we expect you to actually torture our web site with your tests! Thanks.
|
applications/experiments. Even if some of the examples use that site as a URL
|
||||||
|
at some places, it doesn't mean that the URLs work or that we expect you to
|
||||||
|
actually torture our web site with your tests! Thanks.
|
||||||
|
|
||||||
|
EXAMPLES
|
||||||
|
|
||||||
|
anyauthput.c - HTTP PUT using "any" authentication method
|
||||||
|
cacertinmem.c - Use a built-in PEM certificate to retrieve a https page
|
||||||
|
cookie_interface.c - shows usage of simple cookie interface
|
||||||
|
curlgtk.c - download using a GTK progress bar
|
||||||
|
curlx.c - getting file info from the remote cert data
|
||||||
|
debug.c - showing how to use the debug callback
|
||||||
|
fileupload.c - uploading to a file:// URL
|
||||||
|
fopen.c - fopen() layer that supports opening URLs and files
|
||||||
|
ftpget.c - simple getting a file from FTP
|
||||||
|
ftpgetresp.c - get the response strings from the FTP server
|
||||||
|
ftpupload.c - upload a file to an FTP server
|
||||||
|
ftpuploadresume.c - resume an upload to an FTP server
|
||||||
|
getinfo.c - get the Content-Type from the recent transfer
|
||||||
|
getinmemory.c - download a file to memory only
|
||||||
|
ghiper.c - curl_multi_socket() using code with glib-2
|
||||||
|
hiperfifo.c - downloads all URLs written to the fifo, using
|
||||||
|
curl_multi_socket() and libevent
|
||||||
|
htmltidy.c - download a document and use libtidy to parse the HTML
|
||||||
|
htmltitle.cc - download a HTML file and extract the <title> tag from a HTML
|
||||||
|
page using libxml
|
||||||
|
http-post.c - HTTP POST
|
||||||
|
httpput.c - HTTP PUT a local file
|
||||||
|
https.c - simple HTTPS transfer
|
||||||
|
multi-app.c - a multi-interface app
|
||||||
|
multi-debugcallback.c - a multi-interface app using the debug callback
|
||||||
|
multi-double.c - a multi-interface app doing two simultaneous transfers
|
||||||
|
multi-post.c - a multi-interface app doing a multipart formpost
|
||||||
|
multi-single.c - a multi-interface app getting a single file
|
||||||
|
multithread.c - an example using multi-treading transferring multiple files
|
||||||
|
opensslthreadlock.c - show how to do locking when using OpenSSL multi-threaded
|
||||||
|
persistant.c - request two URLs with a persistent connection
|
||||||
|
post-callback.c - send a HTTP POST using a callback
|
||||||
|
postit2.c - send a HTTP multipart formpost
|
||||||
|
sampleconv.c - showing how a program on a non-ASCII platform would invoke
|
||||||
|
callbacks to do its own codeset conversions instead of using
|
||||||
|
the built-in iconv functions in libcurl
|
||||||
|
sepheaders.c - download headers to a separate file
|
||||||
|
simple.c - the most simple download a URL source
|
||||||
|
simplepost.c - HTTP POST
|
||||||
|
simplessl.c - HTTPS example with certificates many options set
|
||||||
|
synctime.c - Sync local time by extracting date from remote HTTP servers
|
||||||
|
10-at-a-time.c - Download many files simultaneously, 10 at a time.
|
||||||
|
|||||||
35
docs/examples/adddocsref.pl
Executable file
35
docs/examples/adddocsref.pl
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# pass files as argument(s)
|
||||||
|
|
||||||
|
my $docroot="http://curl.haxx.se/libcurl/c";
|
||||||
|
|
||||||
|
for $f (@ARGV) {
|
||||||
|
open(NEW, ">$f.new");
|
||||||
|
open(F, "<$f");
|
||||||
|
while(<F>) {
|
||||||
|
my $l = $_;
|
||||||
|
if($l =~ /\/* $docroot/) {
|
||||||
|
# just ignore preciously added refs
|
||||||
|
}
|
||||||
|
elsif($l =~ /^( *).*curl_easy_setopt\([^,]*, *([^ ,]*) *,/) {
|
||||||
|
my ($prefix, $anc) = ($1, $2);
|
||||||
|
$anc =~ s/_//g;
|
||||||
|
print NEW "$prefix/* $docroot/curl_easy_setopt.html#$anc */\n";
|
||||||
|
print NEW $l;
|
||||||
|
}
|
||||||
|
elsif($l =~ /^( *).*(curl_([^\(]*))\(/) {
|
||||||
|
my ($prefix, $func) = ($1, $2);
|
||||||
|
print NEW "$prefix/* $docroot/$func.html */\n";
|
||||||
|
print NEW $l;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print NEW $l;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
close(F);
|
||||||
|
close(NEW);
|
||||||
|
|
||||||
|
system("mv $f $f.org");
|
||||||
|
system("mv $f.new $f");
|
||||||
|
}
|
||||||
158
docs/examples/anyauthput.c
Normal file
158
docs/examples/anyauthput.c
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#ifdef WIN32
|
||||||
|
# include <io.h>
|
||||||
|
#else
|
||||||
|
# ifdef __VMS
|
||||||
|
typedef int intptr_t;
|
||||||
|
# else
|
||||||
|
# include <stdint.h>
|
||||||
|
# endif
|
||||||
|
# include <unistd.h>
|
||||||
|
#endif
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
# ifdef _WIN64
|
||||||
|
typedef __int64 intptr_t;
|
||||||
|
# else
|
||||||
|
typedef int intptr_t;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
#if LIBCURL_VERSION_NUM < 0x070c03
|
||||||
|
#error "upgrade your libcurl to no less than 7.12.3"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef TRUE
|
||||||
|
#define TRUE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This example shows a HTTP PUT operation with authentiction using "any"
|
||||||
|
* type. It PUTs a file given as a command line argument to the URL also given
|
||||||
|
* on the command line.
|
||||||
|
*
|
||||||
|
* Since libcurl 7.12.3, using "any" auth and POST/PUT requires a set ioctl
|
||||||
|
* function.
|
||||||
|
*
|
||||||
|
* This example also uses its own read callback.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* ioctl callback function */
|
||||||
|
static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp)
|
||||||
|
{
|
||||||
|
intptr_t fd = (intptr_t)userp;
|
||||||
|
|
||||||
|
(void)handle; /* not used in here */
|
||||||
|
|
||||||
|
switch(cmd) {
|
||||||
|
case CURLIOCMD_RESTARTREAD:
|
||||||
|
/* mr libcurl kindly asks as to rewind the read data stream to start */
|
||||||
|
if(-1 == lseek(fd, 0, SEEK_SET))
|
||||||
|
/* couldn't rewind */
|
||||||
|
return CURLIOE_FAILRESTART;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* ignore unknown commands */
|
||||||
|
return CURLIOE_UNKNOWNCMD;
|
||||||
|
}
|
||||||
|
return CURLIOE_OK; /* success! */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read callback function, fread() look alike */
|
||||||
|
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
size_t retcode;
|
||||||
|
|
||||||
|
intptr_t fd = (intptr_t)stream;
|
||||||
|
|
||||||
|
retcode = read(fd, ptr, size * nmemb);
|
||||||
|
|
||||||
|
fprintf(stderr, "*** We read %d bytes from file\n", retcode);
|
||||||
|
|
||||||
|
return retcode;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
intptr_t hd ;
|
||||||
|
struct stat file_info;
|
||||||
|
|
||||||
|
char *file;
|
||||||
|
char *url;
|
||||||
|
|
||||||
|
if(argc < 3)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
file= argv[1];
|
||||||
|
url = argv[2];
|
||||||
|
|
||||||
|
/* get the file size of the local file */
|
||||||
|
hd = open(file, O_RDONLY) ;
|
||||||
|
fstat(hd, &file_info);
|
||||||
|
|
||||||
|
/* In windows, this will init the winsock stuff */
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
|
/* get a curl handle */
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
/* we want to use our own read function */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
|
||||||
|
|
||||||
|
/* which file to upload */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_READDATA, (void*)hd);
|
||||||
|
|
||||||
|
/* set the ioctl function */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_IOCTLFUNCTION, my_ioctl);
|
||||||
|
|
||||||
|
/* pass the file descriptor to the ioctl callback as well */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_IOCTLDATA, (void*)hd);
|
||||||
|
|
||||||
|
/* enable "uploading" (which means PUT when doing HTTP) */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L) ;
|
||||||
|
|
||||||
|
/* specify target URL, and note that this URL should also include a file
|
||||||
|
name, not only a directory (as you can do with GTP uploads) */
|
||||||
|
curl_easy_setopt(curl,CURLOPT_URL, url);
|
||||||
|
|
||||||
|
/* and give the size of the upload, this supports large file sizes
|
||||||
|
on systems that have general support for it */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
|
||||||
|
(curl_off_t)file_info.st_size);
|
||||||
|
|
||||||
|
/* tell libcurl we can use "any" auth, which lets the lib pick one, but it
|
||||||
|
also costs one extra round-trip and possibly sending of all the PUT
|
||||||
|
data twice!!! */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, (long)CURLAUTH_ANY);
|
||||||
|
|
||||||
|
/* set user name and password for the authentication */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_USERPWD, "user:password");
|
||||||
|
|
||||||
|
/* Now run off and do what you've been told! */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
close(hd); /* close the local file */
|
||||||
|
|
||||||
|
curl_global_cleanup();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
138
docs/examples/cacertinmem.c
Normal file
138
docs/examples/cacertinmem.c
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Example using a "in core" PEM certificate to retrieve a https page.
|
||||||
|
* Written by Theo Borm
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* on a netBSD system with OPENSSL& LIBCURL installed from
|
||||||
|
* pkgsrc (using default paths) this program can be compiled using:
|
||||||
|
* gcc -I/usr/pkg/include -L/usr/pkg/lib -lcurl -Wl,-R/usr/pkg/lib -lssl
|
||||||
|
* -lcrypto -lz -o curlcacerttest curlcacerttest.c
|
||||||
|
* on other operating systems you may want to change paths to headers
|
||||||
|
* and libraries
|
||||||
|
*/
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
size_t writefunction( void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
fwrite(ptr,size,nmemb,stream);
|
||||||
|
return(nmemb*size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static CURLcode sslctx_function(CURL * curl, void * sslctx, void * parm)
|
||||||
|
{
|
||||||
|
X509_STORE * store;
|
||||||
|
X509 * cert=NULL;
|
||||||
|
BIO * bio;
|
||||||
|
char * mypem = /* www.cacert.org */
|
||||||
|
"-----BEGIN CERTIFICATE-----\n"\
|
||||||
|
"MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290\n"\
|
||||||
|
"IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB\n"\
|
||||||
|
"IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA\n"\
|
||||||
|
"Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO\n"\
|
||||||
|
"BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi\n"\
|
||||||
|
"MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ\n"\
|
||||||
|
"ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC\n"\
|
||||||
|
"CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ\n"\
|
||||||
|
"8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6\n"\
|
||||||
|
"zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y\n"\
|
||||||
|
"fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7\n"\
|
||||||
|
"w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc\n"\
|
||||||
|
"G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k\n"\
|
||||||
|
"epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q\n"\
|
||||||
|
"laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ\n"\
|
||||||
|
"QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU\n"\
|
||||||
|
"fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826\n"\
|
||||||
|
"YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w\n"\
|
||||||
|
"ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY\n"\
|
||||||
|
"gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe\n"\
|
||||||
|
"MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0\n"\
|
||||||
|
"IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy\n"\
|
||||||
|
"dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw\n"\
|
||||||
|
"czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0\n"\
|
||||||
|
"dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl\n"\
|
||||||
|
"aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC\n"\
|
||||||
|
"AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg\n"\
|
||||||
|
"b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB\n"\
|
||||||
|
"ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc\n"\
|
||||||
|
"nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg\n"\
|
||||||
|
"18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c\n"\
|
||||||
|
"gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl\n"\
|
||||||
|
"Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY\n"\
|
||||||
|
"sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T\n"\
|
||||||
|
"SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF\n"\
|
||||||
|
"CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum\n"\
|
||||||
|
"GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk\n"\
|
||||||
|
"zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW\n"\
|
||||||
|
"omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD\n"\
|
||||||
|
"-----END CERTIFICATE-----\n";
|
||||||
|
/* get a BIO */
|
||||||
|
bio=BIO_new_mem_buf(mypem, -1);
|
||||||
|
/* use it to read the PEM formatted certificate from memory into an X509
|
||||||
|
* structure that SSL can use
|
||||||
|
*/
|
||||||
|
PEM_read_bio_X509(bio, &cert, 0, NULL);
|
||||||
|
if (cert == NULL)
|
||||||
|
printf("PEM_read_bio_X509 failed...\n");
|
||||||
|
|
||||||
|
/* get a pointer to the X509 certificate store (which may be empty!) */
|
||||||
|
store=SSL_CTX_get_cert_store((SSL_CTX *)sslctx);
|
||||||
|
|
||||||
|
/* add our certificate to this store */
|
||||||
|
if (X509_STORE_add_cert(store, cert)==0)
|
||||||
|
printf("error adding certificate\n");
|
||||||
|
|
||||||
|
/* all set to go */
|
||||||
|
return CURLE_OK ;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL * ch;
|
||||||
|
CURLcode rv;
|
||||||
|
|
||||||
|
rv=curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
ch=curl_easy_init();
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_VERBOSE, 0L);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_HEADER, 0L);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_NOPROGRESS, 1L);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_NOSIGNAL, 1L);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_WRITEFUNCTION, *writefunction);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_WRITEDATA, stdout);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_HEADERFUNCTION, *writefunction);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_WRITEHEADER, stderr);
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_SSLCERTTYPE,"PEM");
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_SSL_VERIFYPEER,1L);
|
||||||
|
rv=curl_easy_setopt(ch, CURLOPT_URL, "https://www.cacert.org/");
|
||||||
|
|
||||||
|
/* first try: retrieve page without cacerts' certificate -> will fail
|
||||||
|
*/
|
||||||
|
rv=curl_easy_perform(ch);
|
||||||
|
if (rv==CURLE_OK)
|
||||||
|
printf("*** transfer succeeded ***\n");
|
||||||
|
else
|
||||||
|
printf("*** transfer failed ***\n");
|
||||||
|
|
||||||
|
/* second try: retrieve page using cacerts' certificate -> will succeed
|
||||||
|
* load the certificate by installing a function doing the nescessary
|
||||||
|
* "modifications" to the SSL CONTEXT just before link init
|
||||||
|
*/
|
||||||
|
rv=curl_easy_setopt(ch,CURLOPT_SSL_CTX_FUNCTION, *sslctx_function);
|
||||||
|
rv=curl_easy_perform(ch);
|
||||||
|
if (rv==CURLE_OK)
|
||||||
|
printf("*** transfer succeeded ***\n");
|
||||||
|
else
|
||||||
|
printf("*** transfer failed ***\n");
|
||||||
|
|
||||||
|
curl_easy_cleanup(ch);
|
||||||
|
curl_global_cleanup();
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
62
docs/examples/certinfo.c
Normal file
62
docs/examples/certinfo.c
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <curl/types.h>
|
||||||
|
#include <curl/easy.h>
|
||||||
|
|
||||||
|
static size_t wrfu(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
return size * nmemb;
|
||||||
|
}
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://www.networking4all.com/");
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wrfu);
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 0L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
struct curl_certinfo *ci = NULL;
|
||||||
|
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &ci);
|
||||||
|
|
||||||
|
if(!res && ci) {
|
||||||
|
int i;
|
||||||
|
printf("%d certs!\n", ci->num_of_certs);
|
||||||
|
|
||||||
|
for(i=0; i<ci->num_of_certs; i++) {
|
||||||
|
struct curl_slist *slist;
|
||||||
|
|
||||||
|
for(slist = ci->certinfo[i]; slist; slist = slist->next)
|
||||||
|
printf("%s\n", slist->data);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_global_cleanup();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
165
docs/examples/chkspeed.c
Normal file
165
docs/examples/chkspeed.c
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Example source code to show how the callback function can be used to
|
||||||
|
* download data into a chunk of memory instead of storing it in a file.
|
||||||
|
* After successful download we use curl_easy_getinfo() calls to get the
|
||||||
|
* amount of downloaded bytes, the time used for the whole download, and
|
||||||
|
* the average download speed.
|
||||||
|
* On Linux you can create the download test files with:
|
||||||
|
* dd if=/dev/urandom of=file_1M.bin bs=1M count=1
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <curl/types.h>
|
||||||
|
#include <curl/easy.h>
|
||||||
|
|
||||||
|
#define URL_BASE "http://speedtest.your.domain/"
|
||||||
|
#define URL_1M URL_BASE "file_1M.bin"
|
||||||
|
#define URL_2M URL_BASE "file_2M.bin"
|
||||||
|
#define URL_5M URL_BASE "file_5M.bin"
|
||||||
|
#define URL_10M URL_BASE "file_10M.bin"
|
||||||
|
#define URL_20M URL_BASE "file_20M.bin"
|
||||||
|
#define URL_50M URL_BASE "file_50M.bin"
|
||||||
|
#define URL_100M URL_BASE "file_100M.bin"
|
||||||
|
|
||||||
|
#define CHKSPEED_VERSION "1.0"
|
||||||
|
|
||||||
|
static size_t WriteCallback(void *ptr, size_t size, size_t nmemb, void *data)
|
||||||
|
{
|
||||||
|
/* we are not interested in the downloaded bytes itself,
|
||||||
|
so we only return the size we would have saved ... */
|
||||||
|
(void)ptr; /* unused */
|
||||||
|
(void)data; /* unused */
|
||||||
|
return (size_t)(size * nmemb);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
CURL *curl_handle;
|
||||||
|
CURLcode res;
|
||||||
|
int prtsep = 0, prttime = 0;
|
||||||
|
const char *url = URL_1M;
|
||||||
|
char *appname = argv[0];
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
/* parse input parameters */
|
||||||
|
for (argc--, argv++; *argv; argc--, argv++) {
|
||||||
|
if (strncasecmp(*argv, "-", 1) == 0) {
|
||||||
|
if (strncasecmp(*argv, "-H", 2) == 0) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\rUsage: %s [-m=1|2|5|10|20|50|100] [-t] [-x] [url]\n",
|
||||||
|
appname);
|
||||||
|
exit(1);
|
||||||
|
} else if (strncasecmp(*argv, "-V", 2) == 0) {
|
||||||
|
fprintf(stderr, "\r%s %s - %s\n",
|
||||||
|
appname, CHKSPEED_VERSION, curl_version());
|
||||||
|
exit(1);
|
||||||
|
} else if (strncasecmp(*argv, "-X", 2) == 0) {
|
||||||
|
prtsep = 1;
|
||||||
|
} else if (strncasecmp(*argv, "-T", 2) == 0) {
|
||||||
|
prttime = 1;
|
||||||
|
} else if (strncasecmp(*argv, "-M=", 3) == 0) {
|
||||||
|
int m = atoi(*argv + 3);
|
||||||
|
switch(m) {
|
||||||
|
case 1: url = URL_1M;
|
||||||
|
break;
|
||||||
|
case 2: url = URL_2M;
|
||||||
|
break;
|
||||||
|
case 5: url = URL_5M;
|
||||||
|
break;
|
||||||
|
case 10: url = URL_10M;
|
||||||
|
break;
|
||||||
|
case 20: url = URL_20M;
|
||||||
|
break;
|
||||||
|
case 50: url = URL_50M;
|
||||||
|
break;
|
||||||
|
case 100: url = URL_100M;
|
||||||
|
break;
|
||||||
|
default: fprintf(stderr, "\r%s: invalid parameter %s\n",
|
||||||
|
appname, *argv + 3);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "\r%s: invalid or unknown option %s\n",
|
||||||
|
appname, *argv);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
url = *argv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* print separator line */
|
||||||
|
if (prtsep) {
|
||||||
|
printf("-------------------------------------------------\n");
|
||||||
|
}
|
||||||
|
/* print localtime */
|
||||||
|
if (prttime) {
|
||||||
|
time_t t = time(NULL);
|
||||||
|
printf("Localtime: %s", ctime(&t));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* init libcurl */
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
|
/* init the curl session */
|
||||||
|
curl_handle = curl_easy_init();
|
||||||
|
|
||||||
|
/* specify URL to get */
|
||||||
|
curl_easy_setopt(curl_handle, CURLOPT_URL, url);
|
||||||
|
|
||||||
|
/* send all data to this function */
|
||||||
|
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteCallback);
|
||||||
|
|
||||||
|
/* some servers don't like requests that are made without a user-agent
|
||||||
|
field, so we provide one */
|
||||||
|
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT,
|
||||||
|
"libcurl-speedchecker/" CHKSPEED_VERSION);
|
||||||
|
|
||||||
|
/* get it! */
|
||||||
|
res = curl_easy_perform(curl_handle);
|
||||||
|
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
double val;
|
||||||
|
|
||||||
|
/* check for bytes downloaded */
|
||||||
|
res = curl_easy_getinfo(curl_handle, CURLINFO_SIZE_DOWNLOAD, &val);
|
||||||
|
if((CURLE_OK == res) && (val>0))
|
||||||
|
printf("Data downloaded: %0.0f bytes.\n", val);
|
||||||
|
|
||||||
|
/* check for total download time */
|
||||||
|
res = curl_easy_getinfo(curl_handle, CURLINFO_TOTAL_TIME, &val);
|
||||||
|
if((CURLE_OK == res) && (val>0))
|
||||||
|
printf("Total download time: %0.3f sec.\n", val);
|
||||||
|
|
||||||
|
/* check for average download speed */
|
||||||
|
res = curl_easy_getinfo(curl_handle, CURLINFO_SPEED_DOWNLOAD, &val);
|
||||||
|
if((CURLE_OK == res) && (val>0))
|
||||||
|
printf("Average download speed: %0.3f kbyte/sec.\n", val / 1024);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
fprintf(stderr, "Error while fetching '%s' : %s\n",
|
||||||
|
url, curl_easy_strerror(res));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cleanup curl stuff */
|
||||||
|
curl_easy_cleanup(curl_handle);
|
||||||
|
|
||||||
|
/* we're done with libcurl, so clean it up */
|
||||||
|
curl_global_cleanup();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
111
docs/examples/cookie_interface.c
Normal file
111
docs/examples/cookie_interface.c
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
* This example shows usage of simple cookie interface.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_cookies(CURL *curl)
|
||||||
|
{
|
||||||
|
CURLcode res;
|
||||||
|
struct curl_slist *cookies;
|
||||||
|
struct curl_slist *nc;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
printf("Cookies, curl knows:\n");
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
|
||||||
|
if (res != CURLE_OK) {
|
||||||
|
fprintf(stderr, "Curl curl_easy_getinfo failed: %s\n", curl_easy_strerror(res));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
nc = cookies, i = 1;
|
||||||
|
while (nc) {
|
||||||
|
printf("[%d]: %s\n", i, nc->data);
|
||||||
|
nc = nc->next;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (i == 1) {
|
||||||
|
printf("(none)\n");
|
||||||
|
}
|
||||||
|
curl_slist_free_all(cookies);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if (curl) {
|
||||||
|
char nline[256];
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/"); /* google.com sets "PREF" cookie */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, ""); /* just to start the cookie engine */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if (res != CURLE_OK) {
|
||||||
|
fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_cookies(curl);
|
||||||
|
|
||||||
|
printf("Erasing curl's knowledge of cookies!\n");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_COOKIELIST, "ALL");
|
||||||
|
|
||||||
|
print_cookies(curl);
|
||||||
|
|
||||||
|
printf("-----------------------------------------------\n"
|
||||||
|
"Setting a cookie \"PREF\" via cookie interface:\n");
|
||||||
|
#ifdef WIN32
|
||||||
|
#define snprintf _snprintf
|
||||||
|
#endif
|
||||||
|
/* Netscape format cookie */
|
||||||
|
snprintf(nline, sizeof(nline), "%s\t%s\t%s\t%s\t%lu\t%s\t%s",
|
||||||
|
".google.com", "TRUE", "/", "FALSE", time(NULL) + 31337, "PREF", "hello google, i like you very much!");
|
||||||
|
res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
|
||||||
|
if (res != CURLE_OK) {
|
||||||
|
fprintf(stderr, "Curl curl_easy_setopt failed: %s\n", curl_easy_strerror(res));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HTTP-header style cookie */
|
||||||
|
snprintf(nline, sizeof(nline),
|
||||||
|
"Set-Cookie: OLD_PREF=3d141414bf4209321; "
|
||||||
|
"expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com");
|
||||||
|
res = curl_easy_setopt(curl, CURLOPT_COOKIELIST, nline);
|
||||||
|
if (res != CURLE_OK) {
|
||||||
|
fprintf(stderr, "Curl curl_easy_setopt failed: %s\n", curl_easy_strerror(res));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
print_cookies(curl);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if (res != CURLE_OK) {
|
||||||
|
fprintf(stderr, "Curl perform failed: %s\n", curl_easy_strerror(res));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "Curl init failed!\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_global_cleanup();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
* / __| | | | |_) | |
|
* / __| | | | |_) | |
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* $Id$
|
|
||||||
*/
|
*/
|
||||||
/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
|
/* Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft */
|
||||||
/* an attempt to use the curl library in concert with a gtk-threaded application */
|
/* an attempt to use the curl library in concert with a gtk-threaded application */
|
||||||
@@ -17,48 +16,58 @@
|
|||||||
#include <curl/types.h> /* new for v7 */
|
#include <curl/types.h> /* new for v7 */
|
||||||
#include <curl/easy.h> /* new for v7 */
|
#include <curl/easy.h> /* new for v7 */
|
||||||
|
|
||||||
#include <pthread.h>
|
|
||||||
|
|
||||||
GtkWidget *Bar;
|
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)
|
size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
|
||||||
{
|
{
|
||||||
return fread(ptr, size, nmemb, stream);
|
return fread(ptr, size, nmemb, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
int my_progress_func(GtkWidget *Bar, int t, int d)
|
int my_progress_func(GtkWidget *bar,
|
||||||
|
double t, /* dltotal */
|
||||||
|
double d, /* dlnow */
|
||||||
|
double ultotal,
|
||||||
|
double ulnow)
|
||||||
{
|
{
|
||||||
/* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/
|
/* printf("%d / %d (%g %%)\n", d, t, d*100.0/t);*/
|
||||||
gdk_threads_enter();
|
gdk_threads_enter();
|
||||||
gtk_progress_set_value(GTK_PROGRESS(Bar), d*100.0/t);
|
gtk_progress_set_value(GTK_PROGRESS(bar), d*100.0/t);
|
||||||
gdk_threads_leave();
|
gdk_threads_leave();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *curl_thread(void *ptr)
|
void *my_thread(void *ptr)
|
||||||
{
|
{
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
FILE *outfile;
|
FILE *outfile;
|
||||||
gchar *url = ptr;
|
gchar *url = ptr;
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(curl)
|
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_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_READFUNCTION, my_read_func);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0L);
|
||||||
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);
|
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);
|
||||||
curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar);
|
curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, Bar);
|
||||||
|
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
fclose(outfile);
|
fclose(outfile);
|
||||||
/* always cleanup */
|
/* always cleanup */
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,11 +75,13 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
GtkWidget *Window, *Frame, *Frame2;
|
GtkWidget *Window, *Frame, *Frame2;
|
||||||
GtkAdjustment *adj;
|
GtkAdjustment *adj;
|
||||||
pthread_t curl_tid;
|
|
||||||
|
/* Must initialize libcurl before any threads are started */
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
/* Init thread */
|
/* Init thread */
|
||||||
g_thread_init(NULL);
|
g_thread_init(NULL);
|
||||||
|
|
||||||
gtk_init(&argc, &argv);
|
gtk_init(&argc, &argv);
|
||||||
Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
Frame = gtk_frame_new(NULL);
|
Frame = gtk_frame_new(NULL);
|
||||||
@@ -85,8 +96,10 @@ int main(int argc, char **argv)
|
|||||||
gtk_container_add(GTK_CONTAINER(Frame2), Bar);
|
gtk_container_add(GTK_CONTAINER(Frame2), Bar);
|
||||||
gtk_widget_show_all(Window);
|
gtk_widget_show_all(Window);
|
||||||
|
|
||||||
pthread_create(&curl_tid, NULL, curl_thread, argv[1]);
|
if (!g_thread_create(&my_thread, argv[1], FALSE, NULL) != 0)
|
||||||
|
g_warning("can't create the thread");
|
||||||
|
|
||||||
|
|
||||||
gdk_threads_enter();
|
gdk_threads_enter();
|
||||||
gtk_main();
|
gtk_main();
|
||||||
gdk_threads_leave();
|
gdk_threads_leave();
|
||||||
|
|||||||
514
docs/examples/curlx.c
Normal file
514
docs/examples/curlx.c
Normal file
@@ -0,0 +1,514 @@
|
|||||||
|
/*
|
||||||
|
curlx.c Authors: Peter Sylvester, Jean-Paul Merlin
|
||||||
|
|
||||||
|
This is a little program to demonstrate the usage of
|
||||||
|
|
||||||
|
- an ssl initialisation callback setting a user key and trustbases
|
||||||
|
coming from a pkcs12 file
|
||||||
|
- using an ssl application callback to find a URI in the
|
||||||
|
certificate presented during ssl session establishment.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2003 The OpenEvidence Project. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions, the following disclaimer,
|
||||||
|
* and the original OpenSSL and SSLeay Licences below.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions, the following disclaimer
|
||||||
|
* and the original OpenSSL and SSLeay Licences below in
|
||||||
|
* the documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* 3. All advertising materials mentioning features or use of this
|
||||||
|
* software must display the following acknowledgments:
|
||||||
|
* "This product includes software developed by the Openevidence Project
|
||||||
|
* for use in the OpenEvidence Toolkit. (http://www.openevidence.org/)"
|
||||||
|
* This product includes software developed by the OpenSSL Project
|
||||||
|
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||||||
|
* This product includes cryptographic software written by Eric Young
|
||||||
|
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||||
|
* Hudson (tjh@cryptsoft.com)."
|
||||||
|
*
|
||||||
|
* 4. The names "OpenEvidence Toolkit" and "OpenEvidence Project" must not be
|
||||||
|
* used to endorse or promote products derived from this software without
|
||||||
|
* prior written permission. For written permission, please contact
|
||||||
|
* openevidence-core@openevidence.org.
|
||||||
|
*
|
||||||
|
* 5. Products derived from this software may not be called "OpenEvidence"
|
||||||
|
* nor may "OpenEvidence" appear in their names without prior written
|
||||||
|
* permission of the OpenEvidence Project.
|
||||||
|
*
|
||||||
|
* 6. Redistributions of any form whatsoever must retain the following
|
||||||
|
* acknowledgments:
|
||||||
|
* "This product includes software developed by the OpenEvidence Project
|
||||||
|
* for use in the OpenEvidence Toolkit (http://www.openevidence.org/)
|
||||||
|
* This product includes software developed by the OpenSSL Project
|
||||||
|
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
||||||
|
* This product includes cryptographic software written by Eric Young
|
||||||
|
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||||
|
* Hudson (tjh@cryptsoft.com)."
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE OpenEvidence PROJECT ``AS IS'' AND ANY
|
||||||
|
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenEvidence PROJECT OR
|
||||||
|
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
|
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||||
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
* ====================================================================
|
||||||
|
*
|
||||||
|
* This product includes software developed by the OpenSSL Project
|
||||||
|
* for use in the OpenSSL Toolkit (http://www.openssl.org/)
|
||||||
|
* This product includes cryptographic software written by Eric Young
|
||||||
|
* (eay@cryptsoft.com). This product includes software written by Tim
|
||||||
|
* Hudson (tjh@cryptsoft.com).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <openssl/x509v3.h>
|
||||||
|
#include <openssl/x509_vfy.h>
|
||||||
|
#include <openssl/crypto.h>
|
||||||
|
#include <openssl/lhash.h>
|
||||||
|
#include <openssl/objects.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
#include <openssl/evp.h>
|
||||||
|
#include <openssl/x509.h>
|
||||||
|
#include <openssl/pkcs12.h>
|
||||||
|
#include <openssl/bio.h>
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
|
||||||
|
static const char *curlx_usage[]={
|
||||||
|
"usage: curlx args\n",
|
||||||
|
" -p12 arg - tia file ",
|
||||||
|
" -envpass arg - environement variable which content the tia private key password",
|
||||||
|
" -out arg - output file (response)- default stdout",
|
||||||
|
" -in arg - input file (request)- default stdin",
|
||||||
|
" -connect arg - URL of the server for the connection ex: www.openevidence.org",
|
||||||
|
" -mimetype arg - MIME type for data in ex : application/timestamp-query or application/dvcs -default application/timestamp-query",
|
||||||
|
" -acceptmime arg - MIME type acceptable for the response ex : application/timestamp-response or application/dvcs -default none",
|
||||||
|
" -accesstype arg - an Object identifier in an AIA/SIA method, e.g. AD_DVCS or ad_timestamping",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
./curlx -p12 psy.p12 -envpass XX -in request -verbose -accesstype AD_DVCS
|
||||||
|
-mimetype application/dvcs -acceptmime application/dvcs -out response
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We use this ZERO_NULL to avoid picky compiler warnings,
|
||||||
|
* when assigning a NULL pointer to a function pointer var.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define ZERO_NULL 0
|
||||||
|
|
||||||
|
/* This is a context that we pass to all callbacks */
|
||||||
|
|
||||||
|
typedef struct sslctxparm_st {
|
||||||
|
unsigned char * p12file ;
|
||||||
|
const char * pst ;
|
||||||
|
PKCS12 * p12 ;
|
||||||
|
EVP_PKEY * pkey ;
|
||||||
|
X509 * usercert ;
|
||||||
|
STACK_OF(X509) * ca ;
|
||||||
|
CURL * curl;
|
||||||
|
BIO * errorbio;
|
||||||
|
int accesstype ;
|
||||||
|
int verbose;
|
||||||
|
|
||||||
|
} sslctxparm;
|
||||||
|
|
||||||
|
/* some helper function. */
|
||||||
|
|
||||||
|
static char *i2s_ASN1_IA5STRING( ASN1_IA5STRING *ia5)
|
||||||
|
{
|
||||||
|
char *tmp;
|
||||||
|
if(!ia5 || !ia5->length)
|
||||||
|
return NULL;
|
||||||
|
tmp = OPENSSL_malloc(ia5->length + 1);
|
||||||
|
memcpy(tmp, ia5->data, ia5->length);
|
||||||
|
tmp[ia5->length] = 0;
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* A conveniance routine to get an access URI. */
|
||||||
|
|
||||||
|
static unsigned char *my_get_ext(X509 * cert, const int type, int extensiontype) {
|
||||||
|
|
||||||
|
int i;
|
||||||
|
STACK_OF(ACCESS_DESCRIPTION) * accessinfo ;
|
||||||
|
accessinfo = X509_get_ext_d2i(cert, extensiontype, NULL, NULL) ;
|
||||||
|
|
||||||
|
if (!sk_ACCESS_DESCRIPTION_num(accessinfo))
|
||||||
|
return NULL;
|
||||||
|
for (i = 0; i < sk_ACCESS_DESCRIPTION_num(accessinfo); i++) {
|
||||||
|
ACCESS_DESCRIPTION * ad = sk_ACCESS_DESCRIPTION_value(accessinfo, i);
|
||||||
|
if (OBJ_obj2nid(ad->method) == type) {
|
||||||
|
if (ad->location->type == GEN_URI) {
|
||||||
|
return i2s_ASN1_IA5STRING(ad->location->d.ia5);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is an application verification call back, it does not
|
||||||
|
perform any addition verification but tries to find a URL
|
||||||
|
in the presented certificat. If found, this will become
|
||||||
|
the URL to be used in the POST.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static int ssl_app_verify_callback(X509_STORE_CTX *ctx, void *arg)
|
||||||
|
{
|
||||||
|
sslctxparm * p = (sslctxparm *) arg;
|
||||||
|
int ok;
|
||||||
|
|
||||||
|
if (p->verbose > 2)
|
||||||
|
BIO_printf(p->errorbio,"entering ssl_app_verify_callback\n");
|
||||||
|
|
||||||
|
if ((ok= X509_verify_cert(ctx)) && ctx->cert) {
|
||||||
|
unsigned char * accessinfo ;
|
||||||
|
if (p->verbose > 1)
|
||||||
|
X509_print_ex(p->errorbio,ctx->cert,0,0);
|
||||||
|
|
||||||
|
if (accessinfo = my_get_ext(ctx->cert,p->accesstype ,NID_sinfo_access)) {
|
||||||
|
if (p->verbose)
|
||||||
|
BIO_printf(p->errorbio,"Setting URL from SIA to: %s\n", accessinfo);
|
||||||
|
|
||||||
|
curl_easy_setopt(p->curl, CURLOPT_URL,accessinfo);
|
||||||
|
}
|
||||||
|
else if (accessinfo = my_get_ext(ctx->cert,p->accesstype,
|
||||||
|
NID_info_access)) {
|
||||||
|
if (p->verbose)
|
||||||
|
BIO_printf(p->errorbio,"Setting URL from AIA to: %s\n", accessinfo);
|
||||||
|
|
||||||
|
curl_easy_setopt(p->curl, CURLOPT_URL,accessinfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (p->verbose > 2)
|
||||||
|
BIO_printf(p->errorbio,"leaving ssl_app_verify_callback with %d\n", ok);
|
||||||
|
return(ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* This is an example of an curl SSL initialisation call back. The callback sets:
|
||||||
|
- a private key and certificate
|
||||||
|
- a trusted ca certificate
|
||||||
|
- a preferred cipherlist
|
||||||
|
- an application verification callback (the function above)
|
||||||
|
*/
|
||||||
|
|
||||||
|
static CURLcode sslctxfun(CURL * curl, void * sslctx, void * parm) {
|
||||||
|
|
||||||
|
sslctxparm * p = (sslctxparm *) parm;
|
||||||
|
SSL_CTX * ctx = (SSL_CTX *) sslctx ;
|
||||||
|
|
||||||
|
if (!SSL_CTX_use_certificate(ctx,p->usercert)) {
|
||||||
|
BIO_printf(p->errorbio, "SSL_CTX_use_certificate problem\n"); goto err;
|
||||||
|
}
|
||||||
|
if (!SSL_CTX_use_PrivateKey(ctx,p->pkey)) {
|
||||||
|
BIO_printf(p->errorbio, "SSL_CTX_use_PrivateKey\n"); goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SSL_CTX_check_private_key(ctx)) {
|
||||||
|
BIO_printf(p->errorbio, "SSL_CTX_check_private_key\n"); goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
SSL_CTX_set_quiet_shutdown(ctx,1);
|
||||||
|
SSL_CTX_set_cipher_list(ctx,"RC4-MD5");
|
||||||
|
SSL_CTX_set_mode(ctx, SSL_MODE_AUTO_RETRY);
|
||||||
|
|
||||||
|
X509_STORE_add_cert(ctx->cert_store,sk_X509_value(p->ca,
|
||||||
|
sk_X509_num(p->ca)-1));
|
||||||
|
|
||||||
|
SSL_CTX_set_verify_depth(ctx,2);
|
||||||
|
|
||||||
|
SSL_CTX_set_verify(ctx,SSL_VERIFY_PEER,ZERO_NULL);
|
||||||
|
|
||||||
|
SSL_CTX_set_cert_verify_callback(ctx, ssl_app_verify_callback, parm);
|
||||||
|
|
||||||
|
|
||||||
|
return CURLE_OK ;
|
||||||
|
err:
|
||||||
|
ERR_print_errors(p->errorbio);
|
||||||
|
return CURLE_SSL_CERTPROBLEM;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv) {
|
||||||
|
|
||||||
|
BIO* in=NULL;
|
||||||
|
BIO* out=NULL;
|
||||||
|
|
||||||
|
char * outfile = NULL;
|
||||||
|
char * infile = NULL ;
|
||||||
|
|
||||||
|
int tabLength=100;
|
||||||
|
char *binaryptr;
|
||||||
|
char* mimetype;
|
||||||
|
char* mimetypeaccept=NULL;
|
||||||
|
char* contenttype;
|
||||||
|
const char** pp;
|
||||||
|
unsigned char* hostporturl = NULL;
|
||||||
|
BIO * p12bio ;
|
||||||
|
char **args = argv + 1;
|
||||||
|
unsigned char * serverurl;
|
||||||
|
sslctxparm p;
|
||||||
|
char *response;
|
||||||
|
|
||||||
|
CURLcode res;
|
||||||
|
struct curl_slist * headers=NULL;
|
||||||
|
int badarg=0;
|
||||||
|
|
||||||
|
binaryptr = malloc(tabLength);
|
||||||
|
|
||||||
|
p.verbose = 0;
|
||||||
|
p.errorbio = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
|
||||||
|
/* we need some more for the P12 decoding */
|
||||||
|
|
||||||
|
OpenSSL_add_all_ciphers();
|
||||||
|
OpenSSL_add_all_digests();
|
||||||
|
ERR_load_crypto_strings();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
while (*args && *args[0] == '-') {
|
||||||
|
if (!strcmp (*args, "-in")) {
|
||||||
|
if (args[1]) {
|
||||||
|
infile=*(++args);
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (!strcmp (*args, "-out")) {
|
||||||
|
if (args[1]) {
|
||||||
|
outfile=*(++args);
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (!strcmp (*args, "-p12")) {
|
||||||
|
if (args[1]) {
|
||||||
|
p.p12file = *(++args);
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (strcmp(*args,"-envpass") == 0) {
|
||||||
|
if (args[1]) {
|
||||||
|
p.pst = getenv(*(++args));
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (strcmp(*args,"-connect") == 0) {
|
||||||
|
if (args[1]) {
|
||||||
|
hostporturl = *(++args);
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (strcmp(*args,"-mimetype") == 0) {
|
||||||
|
if (args[1]) {
|
||||||
|
mimetype = *(++args);
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (strcmp(*args,"-acceptmime") == 0) {
|
||||||
|
if (args[1]) {
|
||||||
|
mimetypeaccept = *(++args);
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (strcmp(*args,"-accesstype") == 0) {
|
||||||
|
if (args[1]) {
|
||||||
|
if ((p.accesstype = OBJ_obj2nid(OBJ_txt2obj(*++args,0))) == 0) badarg=1;
|
||||||
|
} else badarg=1;
|
||||||
|
} else if (strcmp(*args,"-verbose") == 0) {
|
||||||
|
p.verbose++;
|
||||||
|
} else badarg=1;
|
||||||
|
args++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mimetype==NULL || mimetypeaccept == NULL) badarg = 1;
|
||||||
|
|
||||||
|
if (badarg) {
|
||||||
|
for (pp=curlx_usage; (*pp != NULL); pp++)
|
||||||
|
BIO_printf(p.errorbio,"%s\n",*pp);
|
||||||
|
BIO_printf(p.errorbio,"\n");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* set input */
|
||||||
|
|
||||||
|
if ((in=BIO_new(BIO_s_file())) == NULL) {
|
||||||
|
BIO_printf(p.errorbio, "Error setting input bio\n");
|
||||||
|
goto err;
|
||||||
|
} else if (infile == NULL)
|
||||||
|
BIO_set_fp(in,stdin,BIO_NOCLOSE|BIO_FP_TEXT);
|
||||||
|
else if (BIO_read_filename(in,infile) <= 0) {
|
||||||
|
BIO_printf(p.errorbio, "Error opening input file %s\n", infile);
|
||||||
|
BIO_free(in);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* set output */
|
||||||
|
|
||||||
|
if ((out=BIO_new(BIO_s_file())) == NULL) {
|
||||||
|
BIO_printf(p.errorbio, "Error setting output bio.\n");
|
||||||
|
goto err;
|
||||||
|
} else if (outfile == NULL)
|
||||||
|
BIO_set_fp(out,stdout,BIO_NOCLOSE|BIO_FP_TEXT);
|
||||||
|
else if (BIO_write_filename(out,outfile) <= 0) {
|
||||||
|
BIO_printf(p.errorbio, "Error opening output file %s\n", outfile);
|
||||||
|
BIO_free(out);
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p.errorbio = BIO_new_fp (stderr, BIO_NOCLOSE);
|
||||||
|
|
||||||
|
if (!(p.curl = curl_easy_init())) {
|
||||||
|
BIO_printf(p.errorbio, "Cannot init curl lib\n");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (!(p12bio = BIO_new_file(p.p12file , "rb"))) {
|
||||||
|
BIO_printf(p.errorbio, "Error opening P12 file %s\n", p.p12file); goto err;
|
||||||
|
}
|
||||||
|
if (!(p.p12 = d2i_PKCS12_bio (p12bio, NULL))) {
|
||||||
|
BIO_printf(p.errorbio, "Cannot decode P12 structure %s\n", p.p12file); goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
p.ca= NULL;
|
||||||
|
if (!(PKCS12_parse (p.p12, p.pst, &(p.pkey), &(p.usercert), &(p.ca) ) )) {
|
||||||
|
BIO_printf(p.errorbio,"Invalid P12 structure in %s\n", p.p12file); goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sk_X509_num(p.ca) <= 0) {
|
||||||
|
BIO_printf(p.errorbio,"No trustworthy CA given.%s\n", p.p12file); goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.verbose > 1)
|
||||||
|
X509_print_ex(p.errorbio,p.usercert,0,0);
|
||||||
|
|
||||||
|
/* determine URL to go */
|
||||||
|
|
||||||
|
if (hostporturl) {
|
||||||
|
serverurl = malloc(9+strlen(hostporturl));
|
||||||
|
sprintf(serverurl,"https://%s",hostporturl);
|
||||||
|
}
|
||||||
|
else if (p.accesstype != 0) { /* see whether we can find an AIA or SIA for a given access type */
|
||||||
|
if (!(serverurl = my_get_ext(p.usercert,p.accesstype,NID_info_access))) {
|
||||||
|
int j=0;
|
||||||
|
BIO_printf(p.errorbio,"no service URL in user cert "
|
||||||
|
"cherching in others certificats\n");
|
||||||
|
for (j=0;j<sk_X509_num(p.ca);j++) {
|
||||||
|
if ((serverurl = my_get_ext(sk_X509_value(p.ca,j),p.accesstype,
|
||||||
|
NID_info_access)))
|
||||||
|
break;
|
||||||
|
if ((serverurl = my_get_ext(sk_X509_value(p.ca,j),p.accesstype,
|
||||||
|
NID_sinfo_access)))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!serverurl) {
|
||||||
|
BIO_printf(p.errorbio, "no service URL in certificats,"
|
||||||
|
" check '-accesstype (AD_DVCS | ad_timestamping)'"
|
||||||
|
" or use '-connect'\n");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p.verbose)
|
||||||
|
BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
|
||||||
|
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_URL, serverurl);
|
||||||
|
|
||||||
|
/* Now specify the POST binary data */
|
||||||
|
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE,(long)tabLength);
|
||||||
|
|
||||||
|
/* pass our list of custom made headers */
|
||||||
|
|
||||||
|
contenttype = malloc(15+strlen(mimetype));
|
||||||
|
sprintf(contenttype,"Content-type: %s",mimetype);
|
||||||
|
headers = curl_slist_append(headers,contenttype);
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_HTTPHEADER, headers);
|
||||||
|
|
||||||
|
if (p.verbose)
|
||||||
|
BIO_printf(p.errorbio, "Service URL: <%s>\n", serverurl);
|
||||||
|
|
||||||
|
{
|
||||||
|
FILE *outfp;
|
||||||
|
BIO_get_fp(out,&outfp);
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_WRITEDATA, outfp);
|
||||||
|
}
|
||||||
|
|
||||||
|
res = curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_FUNCTION, sslctxfun) ;
|
||||||
|
|
||||||
|
if (res != CURLE_OK)
|
||||||
|
BIO_printf(p.errorbio,"%d %s=%d %d\n", __LINE__, "CURLOPT_SSL_CTX_FUNCTION",CURLOPT_SSL_CTX_FUNCTION,res);
|
||||||
|
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_SSL_CTX_DATA, &p);
|
||||||
|
|
||||||
|
{
|
||||||
|
int lu; int i=0;
|
||||||
|
while ((lu = BIO_read (in,&binaryptr[i],tabLength-i)) >0 ) {
|
||||||
|
i+=lu;
|
||||||
|
if (i== tabLength) {
|
||||||
|
tabLength+=100;
|
||||||
|
binaryptr=realloc(binaryptr,tabLength); /* should be more careful */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
tabLength = i;
|
||||||
|
}
|
||||||
|
/* Now specify the POST binary data */
|
||||||
|
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDS, binaryptr);
|
||||||
|
curl_easy_setopt(p.curl, CURLOPT_POSTFIELDSIZE,(long)tabLength);
|
||||||
|
|
||||||
|
|
||||||
|
/* Perform the request, res will get the return code */
|
||||||
|
|
||||||
|
BIO_printf(p.errorbio,"%d %s %d\n", __LINE__, "curl_easy_perform",
|
||||||
|
res = curl_easy_perform(p.curl));
|
||||||
|
{
|
||||||
|
int result =curl_easy_getinfo(p.curl,CURLINFO_CONTENT_TYPE,&response);
|
||||||
|
if( mimetypeaccept && p.verbose)
|
||||||
|
if(!strcmp(mimetypeaccept,response))
|
||||||
|
BIO_printf(p.errorbio,"the response has a correct mimetype : %s\n",
|
||||||
|
response);
|
||||||
|
else
|
||||||
|
BIO_printf(p.errorbio,"the reponse doesn\'t has an acceptable "
|
||||||
|
"mime type, it is %s instead of %s\n",
|
||||||
|
response,mimetypeaccept);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*** code d'erreur si accept mime ***, egalement code return HTTP != 200 ***/
|
||||||
|
|
||||||
|
/* free the header list*/
|
||||||
|
|
||||||
|
curl_slist_free_all(headers);
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(p.curl);
|
||||||
|
|
||||||
|
BIO_free(in);
|
||||||
|
BIO_free(out);
|
||||||
|
return (EXIT_SUCCESS);
|
||||||
|
|
||||||
|
err: BIO_printf(p.errorbio,"error");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
128
docs/examples/debug.c
Normal file
128
docs/examples/debug.c
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
struct data {
|
||||||
|
char trace_ascii; /* 1 or 0 */
|
||||||
|
};
|
||||||
|
|
||||||
|
static
|
||||||
|
void dump(const char *text,
|
||||||
|
FILE *stream, unsigned char *ptr, size_t size,
|
||||||
|
char nohex)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
size_t c;
|
||||||
|
|
||||||
|
unsigned int width=0x10;
|
||||||
|
|
||||||
|
if(nohex)
|
||||||
|
/* without the hex output, we can fit more on screen */
|
||||||
|
width = 0x40;
|
||||||
|
|
||||||
|
fprintf(stream, "%s, %010.10ld bytes (0x%08.8lx)\n",
|
||||||
|
text, (long)size, (long)size);
|
||||||
|
|
||||||
|
for(i=0; i<size; i+= width) {
|
||||||
|
|
||||||
|
fprintf(stream, "%04.4lx: ", (long)i);
|
||||||
|
|
||||||
|
if(!nohex) {
|
||||||
|
/* hex not disabled, show it */
|
||||||
|
for(c = 0; c < width; c++)
|
||||||
|
if(i+c < size)
|
||||||
|
fprintf(stream, "%02x ", ptr[i+c]);
|
||||||
|
else
|
||||||
|
fputs(" ", stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(c = 0; (c < width) && (i+c < size); c++) {
|
||||||
|
/* check for 0D0A; if found, skip past and start a new line of output */
|
||||||
|
if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) {
|
||||||
|
i+=(c+2-width);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
fprintf(stream, "%c",
|
||||||
|
(ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.');
|
||||||
|
/* check again for 0D0A, to avoid an extra \n if it's at width */
|
||||||
|
if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) {
|
||||||
|
i+=(c+3-width);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fputc('\n', stream); /* newline */
|
||||||
|
}
|
||||||
|
fflush(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
int my_trace(CURL *handle, curl_infotype type,
|
||||||
|
char *data, size_t size,
|
||||||
|
void *userp)
|
||||||
|
{
|
||||||
|
struct data *config = (struct data *)userp;
|
||||||
|
const char *text;
|
||||||
|
(void)handle; /* prevent compiler warning */
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case CURLINFO_TEXT:
|
||||||
|
fprintf(stderr, "== Info: %s", data);
|
||||||
|
default: /* in case a new one is introduced to shock us */
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case CURLINFO_HEADER_OUT:
|
||||||
|
text = "=> Send header";
|
||||||
|
break;
|
||||||
|
case CURLINFO_DATA_OUT:
|
||||||
|
text = "=> Send data";
|
||||||
|
break;
|
||||||
|
case CURLINFO_SSL_DATA_OUT:
|
||||||
|
text = "=> Send SSL data";
|
||||||
|
break;
|
||||||
|
case CURLINFO_HEADER_IN:
|
||||||
|
text = "<= Recv header";
|
||||||
|
break;
|
||||||
|
case CURLINFO_DATA_IN:
|
||||||
|
text = "<= Recv data";
|
||||||
|
break;
|
||||||
|
case CURLINFO_SSL_DATA_IN:
|
||||||
|
text = "<= Recv SSL data";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
dump(text, stderr, (unsigned char *)data, size, config->trace_ascii);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
struct data config;
|
||||||
|
|
||||||
|
config.trace_ascii = 1; /* enable ascii tracing */
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_DEBUGFUNCTION, my_trace);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_DEBUGDATA, &config);
|
||||||
|
|
||||||
|
/* the DEBUGFUNCTION has no effect until we enable VERBOSE */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
459
docs/examples/evhiperfifo.c
Normal file
459
docs/examples/evhiperfifo.c
Normal file
@@ -0,0 +1,459 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Example application source code using the multi socket interface to
|
||||||
|
* download many files at once.
|
||||||
|
*
|
||||||
|
* This example features the same basic functionality as hiperfifo.c does,
|
||||||
|
* but this uses libev instead of libevent.
|
||||||
|
*
|
||||||
|
* Written by Jeff Pohlmeyer, converted to use libev by Markus Koetter
|
||||||
|
|
||||||
|
Requires libev and a (POSIX?) system that has mkfifo().
|
||||||
|
|
||||||
|
This is an adaptation of libcurl's "hipev.c" and libevent's "event-test.c"
|
||||||
|
sample programs.
|
||||||
|
|
||||||
|
When running, the program creates the named pipe "hiper.fifo"
|
||||||
|
|
||||||
|
Whenever there is input into the fifo, the program reads the input as a list
|
||||||
|
of URL's and creates some new easy handles to fetch each URL via the
|
||||||
|
curl_multi "hiper" API.
|
||||||
|
|
||||||
|
|
||||||
|
Thus, you can try a single URL:
|
||||||
|
% echo http://www.yahoo.com > hiper.fifo
|
||||||
|
|
||||||
|
Or a whole bunch of them:
|
||||||
|
% cat my-url-list > hiper.fifo
|
||||||
|
|
||||||
|
The fifo buffer is handled almost instantly, so you can even add more URL's
|
||||||
|
while the previous requests are still being downloaded.
|
||||||
|
|
||||||
|
Note:
|
||||||
|
For the sake of simplicity, URL length is limited to 1023 char's !
|
||||||
|
|
||||||
|
This is purely a demo app, all retrieved data is simply discarded by the write
|
||||||
|
callback.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/poll.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <ev.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#define DPRINT(x...) printf(x)
|
||||||
|
|
||||||
|
#define MSG_OUT stdout /* Send info to stdout, change to stderr if you want */
|
||||||
|
|
||||||
|
|
||||||
|
/* Global information, common to all connections */
|
||||||
|
typedef struct _GlobalInfo
|
||||||
|
{
|
||||||
|
struct ev_loop *loop;
|
||||||
|
struct ev_io fifo_event;
|
||||||
|
struct ev_timer timer_event;
|
||||||
|
CURLM *multi;
|
||||||
|
int prev_running;
|
||||||
|
int still_running;
|
||||||
|
FILE* input;
|
||||||
|
} GlobalInfo;
|
||||||
|
|
||||||
|
|
||||||
|
/* Information associated with a specific easy handle */
|
||||||
|
typedef struct _ConnInfo
|
||||||
|
{
|
||||||
|
CURL *easy;
|
||||||
|
char *url;
|
||||||
|
GlobalInfo *global;
|
||||||
|
char error[CURL_ERROR_SIZE];
|
||||||
|
} ConnInfo;
|
||||||
|
|
||||||
|
|
||||||
|
/* Information associated with a specific socket */
|
||||||
|
typedef struct _SockInfo
|
||||||
|
{
|
||||||
|
curl_socket_t sockfd;
|
||||||
|
CURL *easy;
|
||||||
|
int action;
|
||||||
|
long timeout;
|
||||||
|
struct ev_io ev;
|
||||||
|
int evset;
|
||||||
|
GlobalInfo *global;
|
||||||
|
} SockInfo;
|
||||||
|
|
||||||
|
static void timer_cb(EV_P_ struct ev_timer *w, int revents);
|
||||||
|
|
||||||
|
/* Update the event timer after curl_multi library calls */
|
||||||
|
static int multi_timer_cb(CURLM *multi, long timeout_ms, GlobalInfo *g)
|
||||||
|
{
|
||||||
|
DPRINT("%s %li\n", __PRETTY_FUNCTION__, timeout_ms);
|
||||||
|
ev_timer_stop(g->loop, &g->timer_event);
|
||||||
|
if (timeout_ms > 0)
|
||||||
|
{
|
||||||
|
double t = timeout_ms / 1000;
|
||||||
|
ev_timer_init(&g->timer_event, timer_cb, t, 0.);
|
||||||
|
ev_timer_start(g->loop, &g->timer_event);
|
||||||
|
}else
|
||||||
|
timer_cb(g->loop, &g->timer_event, 0);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Die if we get a bad CURLMcode somewhere */
|
||||||
|
static void mcode_or_die(const char *where, CURLMcode code)
|
||||||
|
{
|
||||||
|
if ( CURLM_OK != code )
|
||||||
|
{
|
||||||
|
const char *s;
|
||||||
|
switch ( code )
|
||||||
|
{
|
||||||
|
case CURLM_CALL_MULTI_PERFORM: s="CURLM_CALL_MULTI_PERFORM"; break;
|
||||||
|
case CURLM_OK: s="CURLM_OK"; break;
|
||||||
|
case CURLM_BAD_HANDLE: s="CURLM_BAD_HANDLE"; break;
|
||||||
|
case CURLM_BAD_EASY_HANDLE: s="CURLM_BAD_EASY_HANDLE"; break;
|
||||||
|
case CURLM_OUT_OF_MEMORY: s="CURLM_OUT_OF_MEMORY"; break;
|
||||||
|
case CURLM_INTERNAL_ERROR: s="CURLM_INTERNAL_ERROR"; break;
|
||||||
|
case CURLM_UNKNOWN_OPTION: s="CURLM_UNKNOWN_OPTION"; break;
|
||||||
|
case CURLM_LAST: s="CURLM_LAST"; break;
|
||||||
|
default: s="CURLM_unknown";
|
||||||
|
break;
|
||||||
|
case CURLM_BAD_SOCKET: s="CURLM_BAD_SOCKET";
|
||||||
|
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
|
||||||
|
/* ignore this error */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fprintf(MSG_OUT, "ERROR: %s returns %s\n", where, s);
|
||||||
|
exit(code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Check for completed transfers, and remove their easy handles */
|
||||||
|
static void check_run_count(GlobalInfo *g)
|
||||||
|
{
|
||||||
|
DPRINT("%s prev %i still %i\n", __PRETTY_FUNCTION__,
|
||||||
|
g->prev_running, g->still_running);
|
||||||
|
if ( g->prev_running > g->still_running )
|
||||||
|
{
|
||||||
|
char *eff_url=NULL;
|
||||||
|
CURLMsg *msg;
|
||||||
|
int msgs_left;
|
||||||
|
ConnInfo *conn=NULL;
|
||||||
|
CURL*easy;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
fprintf(MSG_OUT, "REMAINING: %d\n", g->still_running);
|
||||||
|
/*
|
||||||
|
I am still uncertain whether it is safe to remove an easy
|
||||||
|
handle from inside the curl_multi_info_read loop, so here I
|
||||||
|
will search for completed transfers in the inner "while"
|
||||||
|
loop, and then remove them in the outer "do-while" loop...
|
||||||
|
*/
|
||||||
|
do
|
||||||
|
{
|
||||||
|
easy=NULL;
|
||||||
|
while ( (msg = curl_multi_info_read(g->multi, &msgs_left)) )
|
||||||
|
{
|
||||||
|
if ( msg->msg == CURLMSG_DONE )
|
||||||
|
{
|
||||||
|
easy=msg->easy_handle;
|
||||||
|
res=msg->data.result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( easy )
|
||||||
|
{
|
||||||
|
curl_easy_getinfo(easy, CURLINFO_PRIVATE, &conn);
|
||||||
|
curl_easy_getinfo(easy, CURLINFO_EFFECTIVE_URL, &eff_url);
|
||||||
|
fprintf(MSG_OUT, "DONE: %s => (%d) %s\n", eff_url, res, conn->error);
|
||||||
|
curl_multi_remove_handle(g->multi, easy);
|
||||||
|
free(conn->url);
|
||||||
|
curl_easy_cleanup(easy);
|
||||||
|
free(conn);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} while ( easy );
|
||||||
|
}
|
||||||
|
g->prev_running = g->still_running;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Called by libevent when we get action on a multi socket */
|
||||||
|
static void event_cb(EV_P_ struct ev_io *w, int revents)
|
||||||
|
{
|
||||||
|
DPRINT("%s w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
|
||||||
|
GlobalInfo *g = (GlobalInfo*) w->data;
|
||||||
|
CURLMcode rc;
|
||||||
|
|
||||||
|
int action = (revents&EV_READ?CURL_POLL_IN:0)|
|
||||||
|
(revents&EV_WRITE?CURL_POLL_OUT:0);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
rc = curl_multi_socket_action(g->multi, w->fd, action, &g->still_running);
|
||||||
|
} while ( rc == CURLM_CALL_MULTI_PERFORM );
|
||||||
|
mcode_or_die("event_cb: curl_multi_socket", rc);
|
||||||
|
check_run_count(g);
|
||||||
|
if ( g->still_running <= 0 )
|
||||||
|
{
|
||||||
|
fprintf(MSG_OUT, "last transfer done, kill timeout\n");
|
||||||
|
ev_timer_stop(g->loop, &g->timer_event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Called by libevent when our timeout expires */
|
||||||
|
static void timer_cb(EV_P_ struct ev_timer *w, int revents)
|
||||||
|
{
|
||||||
|
DPRINT("%s w %p revents %i\n", __PRETTY_FUNCTION__, w, revents);
|
||||||
|
|
||||||
|
GlobalInfo *g = (GlobalInfo *)w->data;
|
||||||
|
CURLMcode rc;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
rc = curl_multi_socket_action(g->multi, CURL_SOCKET_TIMEOUT, 0, &g->still_running);
|
||||||
|
} while ( rc == CURLM_CALL_MULTI_PERFORM );
|
||||||
|
mcode_or_die("timer_cb: curl_multi_socket", rc);
|
||||||
|
check_run_count(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clean up the SockInfo structure */
|
||||||
|
static void remsock(SockInfo *f, GlobalInfo *g)
|
||||||
|
{
|
||||||
|
printf("%s \n", __PRETTY_FUNCTION__);
|
||||||
|
if ( f )
|
||||||
|
{
|
||||||
|
if ( f->evset )
|
||||||
|
ev_io_stop(g->loop, &f->ev);
|
||||||
|
free(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Assign information to a SockInfo structure */
|
||||||
|
static void setsock(SockInfo*f, curl_socket_t s, CURL*e, int act, GlobalInfo*g)
|
||||||
|
{
|
||||||
|
printf("%s \n", __PRETTY_FUNCTION__);
|
||||||
|
|
||||||
|
int kind = (act&CURL_POLL_IN?EV_READ:0)|(act&CURL_POLL_OUT?EV_WRITE:0);
|
||||||
|
|
||||||
|
f->sockfd = s;
|
||||||
|
f->action = act;
|
||||||
|
f->easy = e;
|
||||||
|
if ( f->evset )
|
||||||
|
ev_io_stop(g->loop, &f->ev);
|
||||||
|
ev_io_init(&f->ev, event_cb, f->sockfd, kind);
|
||||||
|
f->ev.data = g;
|
||||||
|
f->evset=1;
|
||||||
|
ev_io_start(g->loop, &f->ev);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* Initialize a new SockInfo structure */
|
||||||
|
static void addsock(curl_socket_t s, CURL *easy, int action, GlobalInfo *g)
|
||||||
|
{
|
||||||
|
SockInfo *fdp = calloc(sizeof(SockInfo), 1);
|
||||||
|
|
||||||
|
fdp->global = g;
|
||||||
|
setsock(fdp, s, easy, action, g);
|
||||||
|
curl_multi_assign(g->multi, s, fdp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CURLMOPT_SOCKETFUNCTION */
|
||||||
|
static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
|
||||||
|
{
|
||||||
|
DPRINT("%s e %p s %i what %i cbp %p sockp %p\n",
|
||||||
|
__PRETTY_FUNCTION__, e, s, what, cbp, sockp);
|
||||||
|
|
||||||
|
GlobalInfo *g = (GlobalInfo*) cbp;
|
||||||
|
SockInfo *fdp = (SockInfo*) sockp;
|
||||||
|
const char *whatstr[]={ "none", "IN", "OUT", "INOUT", "REMOVE"};
|
||||||
|
|
||||||
|
fprintf(MSG_OUT,
|
||||||
|
"socket callback: s=%d e=%p what=%s ", s, e, whatstr[what]);
|
||||||
|
if ( what == CURL_POLL_REMOVE )
|
||||||
|
{
|
||||||
|
fprintf(MSG_OUT, "\n");
|
||||||
|
remsock(fdp, g);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
if ( !fdp )
|
||||||
|
{
|
||||||
|
fprintf(MSG_OUT, "Adding data: %s\n", whatstr[what]);
|
||||||
|
addsock(s, e, what, g);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
fprintf(MSG_OUT,
|
||||||
|
"Changing action from %s to %s\n",
|
||||||
|
whatstr[fdp->action], whatstr[what]);
|
||||||
|
setsock(fdp, s, e, what, g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* CURLOPT_WRITEFUNCTION */
|
||||||
|
static size_t write_cb(void *ptr, size_t size, size_t nmemb, void *data)
|
||||||
|
{
|
||||||
|
size_t realsize = size * nmemb;
|
||||||
|
ConnInfo *conn = (ConnInfo*) data;
|
||||||
|
(void)ptr;
|
||||||
|
(void)conn;
|
||||||
|
return realsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* CURLOPT_PROGRESSFUNCTION */
|
||||||
|
static int prog_cb (void *p, double dltotal, double dlnow, double ult,
|
||||||
|
double uln)
|
||||||
|
{
|
||||||
|
ConnInfo *conn = (ConnInfo *)p;
|
||||||
|
(void)ult;
|
||||||
|
(void)uln;
|
||||||
|
|
||||||
|
fprintf(MSG_OUT, "Progress: %s (%g/%g)\n", conn->url, dlnow, dltotal);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Create a new easy handle, and add it to the global curl_multi */
|
||||||
|
static void new_conn(char *url, GlobalInfo *g )
|
||||||
|
{
|
||||||
|
ConnInfo *conn;
|
||||||
|
CURLMcode rc;
|
||||||
|
|
||||||
|
conn = calloc(1, sizeof(ConnInfo));
|
||||||
|
memset(conn, 0, sizeof(ConnInfo));
|
||||||
|
conn->error[0]='\0';
|
||||||
|
|
||||||
|
conn->easy = curl_easy_init();
|
||||||
|
if ( !conn->easy )
|
||||||
|
{
|
||||||
|
fprintf(MSG_OUT, "curl_easy_init() failed, exiting!\n");
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
conn->global = g;
|
||||||
|
conn->url = strdup(url);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_URL, conn->url);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_WRITEFUNCTION, write_cb);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_WRITEDATA, &conn);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_VERBOSE, 1L);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_ERRORBUFFER, conn->error);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_PRIVATE, conn);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_NOPROGRESS, 0L);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_PROGRESSFUNCTION, prog_cb);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_PROGRESSDATA, conn);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_TIME, 3L);
|
||||||
|
curl_easy_setopt(conn->easy, CURLOPT_LOW_SPEED_LIMIT, 10L);
|
||||||
|
|
||||||
|
fprintf(MSG_OUT,
|
||||||
|
"Adding easy %p to multi %p (%s)\n", conn->easy, g->multi, url);
|
||||||
|
rc =curl_multi_add_handle(g->multi, conn->easy);
|
||||||
|
mcode_or_die("new_conn: curl_multi_add_handle", rc);
|
||||||
|
|
||||||
|
mcode_or_die("new_conn: curl_multi_socket_all", rc);
|
||||||
|
check_run_count(g);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This gets called whenever data is received from the fifo */
|
||||||
|
static void fifo_cb(EV_P_ struct ev_io *w, int revents)
|
||||||
|
{
|
||||||
|
char s[1024];
|
||||||
|
long int rv=0;
|
||||||
|
int n=0;
|
||||||
|
GlobalInfo *g = (GlobalInfo *)w->data;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
s[0]='\0';
|
||||||
|
rv=fscanf(g->input, "%1023s%n", s, &n);
|
||||||
|
s[n]='\0';
|
||||||
|
if ( n && s[0] )
|
||||||
|
{
|
||||||
|
new_conn(s,g); /* if we read a URL, go get it! */
|
||||||
|
} else break;
|
||||||
|
} while ( rv != EOF );
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Create a named pipe and tell libevent to monitor it */
|
||||||
|
static int init_fifo (GlobalInfo *g)
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
static const char *fifo = "hiper.fifo";
|
||||||
|
int sockfd;
|
||||||
|
|
||||||
|
fprintf(MSG_OUT, "Creating named pipe \"%s\"\n", fifo);
|
||||||
|
if ( lstat (fifo, &st) == 0 )
|
||||||
|
{
|
||||||
|
if ( (st.st_mode & S_IFMT) == S_IFREG )
|
||||||
|
{
|
||||||
|
errno = EEXIST;
|
||||||
|
perror("lstat");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
unlink(fifo);
|
||||||
|
if ( mkfifo (fifo, 0600) == -1 )
|
||||||
|
{
|
||||||
|
perror("mkfifo");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
sockfd = open(fifo, O_RDWR | O_NONBLOCK, 0);
|
||||||
|
if ( sockfd == -1 )
|
||||||
|
{
|
||||||
|
perror("open");
|
||||||
|
exit (1);
|
||||||
|
}
|
||||||
|
g->input = fdopen(sockfd, "r");
|
||||||
|
|
||||||
|
fprintf(MSG_OUT, "Now, pipe some URL's into > %s\n", fifo);
|
||||||
|
ev_io_init(&g->fifo_event, fifo_cb, sockfd, EV_READ);
|
||||||
|
ev_io_start(g->loop, &g->fifo_event);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
GlobalInfo g;
|
||||||
|
CURLMcode rc;
|
||||||
|
(void)argc;
|
||||||
|
(void)argv;
|
||||||
|
|
||||||
|
memset(&g, 0, sizeof(GlobalInfo));
|
||||||
|
g.loop = ev_default_loop(0);
|
||||||
|
|
||||||
|
init_fifo(&g);
|
||||||
|
g.multi = curl_multi_init();
|
||||||
|
|
||||||
|
ev_timer_init(&g.timer_event, timer_cb, 0., 0.);
|
||||||
|
g.timer_event.data = &g;
|
||||||
|
g.fifo_event.data = &g;
|
||||||
|
curl_multi_setopt(g.multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
|
||||||
|
curl_multi_setopt(g.multi, CURLMOPT_SOCKETDATA, &g);
|
||||||
|
curl_multi_setopt(g.multi, CURLMOPT_TIMERFUNCTION, multi_timer_cb);
|
||||||
|
curl_multi_setopt(g.multi, CURLMOPT_TIMERDATA, &g);
|
||||||
|
do
|
||||||
|
{
|
||||||
|
rc = curl_multi_socket_all(g.multi, &g.still_running);
|
||||||
|
} while ( CURLM_CALL_MULTI_PERFORM == rc );
|
||||||
|
|
||||||
|
ev_loop(g.loop, 0);
|
||||||
|
curl_multi_cleanup(g.multi);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
67
docs/examples/fileupload.c
Normal file
67
docs/examples/fileupload.c
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
struct stat file_info;
|
||||||
|
double speed_upload, total_time;
|
||||||
|
FILE *fd;
|
||||||
|
|
||||||
|
fd = fopen("debugit", "rb"); /* open file to upload */
|
||||||
|
if(!fd) {
|
||||||
|
|
||||||
|
return 1; /* can't continue */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* to get the file size */
|
||||||
|
if(fstat(fileno(fd), &file_info) != 0) {
|
||||||
|
|
||||||
|
return 1; /* can't continue */
|
||||||
|
}
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
/* upload to this place */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL,
|
||||||
|
"file:///home/dast/src/curl/debug/new");
|
||||||
|
|
||||||
|
/* tell it to "upload" to the URL */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
|
||||||
|
|
||||||
|
/* set where to read from (on Windows you need to use READFUNCTION too) */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_READDATA, fd);
|
||||||
|
|
||||||
|
/* and give the size of the upload (optional) */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
|
||||||
|
(curl_off_t)file_info.st_size);
|
||||||
|
|
||||||
|
/* enable verbose for easier tracing */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* now extract transfer info */
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed_upload);
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total_time);
|
||||||
|
|
||||||
|
fprintf(stderr, "Speed: %.3f bytes/sec during %.3f seconds\n",
|
||||||
|
speed_upload, total_time);
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
579
docs/examples/fopen.c
Normal file
579
docs/examples/fopen.c
Normal file
@@ -0,0 +1,579 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
*
|
||||||
|
* This example source code introduces a c library buffered I/O interface to
|
||||||
|
* URL reads it supports fopen(), fread(), fgets(), feof(), fclose(),
|
||||||
|
* rewind(). Supported functions have identical prototypes to their normal c
|
||||||
|
* lib namesakes and are preceaded by url_ .
|
||||||
|
*
|
||||||
|
* Using this code you can replace your program's fopen() with url_fopen()
|
||||||
|
* and fread() with url_fread() and it become possible to read remote streams
|
||||||
|
* instead of (only) local files. Local files (ie those that can be directly
|
||||||
|
* fopened) will drop back to using the underlying clib implementations
|
||||||
|
*
|
||||||
|
* See the main() function at the bottom that shows an app that retrives from a
|
||||||
|
* specified url using fgets() and fread() and saves as two output files.
|
||||||
|
*
|
||||||
|
* Copyright (c) 2003 Simtec Electronics
|
||||||
|
*
|
||||||
|
* Re-implemented by Vincent Sanders <vince@kyllikki.org> with extensive
|
||||||
|
* reference to original curl example code
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions
|
||||||
|
* are met:
|
||||||
|
* 1. Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* 3. The name of the author may not be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||||
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||||
|
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||||
|
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||||
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* This example requires libcurl 7.9.7 or later.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#ifndef WIN32
|
||||||
|
# include <sys/time.h>
|
||||||
|
#endif
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
enum fcurl_type_e { CFTYPE_NONE=0, CFTYPE_FILE=1, CFTYPE_CURL=2 };
|
||||||
|
|
||||||
|
struct fcurl_data
|
||||||
|
{
|
||||||
|
enum fcurl_type_e type; /* type of handle */
|
||||||
|
union {
|
||||||
|
CURL *curl;
|
||||||
|
FILE *file;
|
||||||
|
} handle; /* handle */
|
||||||
|
|
||||||
|
char *buffer; /* buffer to store cached data*/
|
||||||
|
int buffer_len; /* currently allocated buffers length */
|
||||||
|
int buffer_pos; /* end of data in buffer*/
|
||||||
|
int still_running; /* Is background url fetch still in progress */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct fcurl_data URL_FILE;
|
||||||
|
|
||||||
|
/* exported functions */
|
||||||
|
URL_FILE *url_fopen(const char *url,const char *operation);
|
||||||
|
int url_fclose(URL_FILE *file);
|
||||||
|
int url_feof(URL_FILE *file);
|
||||||
|
size_t url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file);
|
||||||
|
char * url_fgets(char *ptr, int size, URL_FILE *file);
|
||||||
|
void url_rewind(URL_FILE *file);
|
||||||
|
|
||||||
|
/* we use a global one for convenience */
|
||||||
|
CURLM *multi_handle;
|
||||||
|
|
||||||
|
/* curl calls this routine to get more data */
|
||||||
|
static size_t
|
||||||
|
write_callback(char *buffer,
|
||||||
|
size_t size,
|
||||||
|
size_t nitems,
|
||||||
|
void *userp)
|
||||||
|
{
|
||||||
|
char *newbuff;
|
||||||
|
int rembuff;
|
||||||
|
|
||||||
|
URL_FILE *url = (URL_FILE *)userp;
|
||||||
|
size *= nitems;
|
||||||
|
|
||||||
|
rembuff=url->buffer_len - url->buffer_pos; /* remaining space in buffer */
|
||||||
|
|
||||||
|
if(size > rembuff)
|
||||||
|
{
|
||||||
|
/* not enough space in buffer */
|
||||||
|
newbuff=realloc(url->buffer,url->buffer_len + (size - rembuff));
|
||||||
|
if(newbuff==NULL)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"callback buffer grow failed\n");
|
||||||
|
size=rembuff;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* realloc suceeded increase buffer size*/
|
||||||
|
url->buffer_len+=size - rembuff;
|
||||||
|
url->buffer=newbuff;
|
||||||
|
|
||||||
|
/*printf("Callback buffer grown to %d bytes\n",url->buffer_len);*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(&url->buffer[url->buffer_pos], buffer, size);
|
||||||
|
url->buffer_pos += size;
|
||||||
|
|
||||||
|
/*fprintf(stderr, "callback %d size bytes\n", size);*/
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* use to attempt to fill the read buffer up to requested number of bytes */
|
||||||
|
static int
|
||||||
|
fill_buffer(URL_FILE *file,int want,int waittime)
|
||||||
|
{
|
||||||
|
fd_set fdread;
|
||||||
|
fd_set fdwrite;
|
||||||
|
fd_set fdexcep;
|
||||||
|
struct timeval timeout;
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
/* only attempt to fill buffer if transactions still running and buffer
|
||||||
|
* doesnt exceed required size already
|
||||||
|
*/
|
||||||
|
if((!file->still_running) || (file->buffer_pos > want))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* attempt to fill buffer */
|
||||||
|
do
|
||||||
|
{
|
||||||
|
int maxfd = -1;
|
||||||
|
long curl_timeo = -1;
|
||||||
|
|
||||||
|
FD_ZERO(&fdread);
|
||||||
|
FD_ZERO(&fdwrite);
|
||||||
|
FD_ZERO(&fdexcep);
|
||||||
|
|
||||||
|
/* set a suitable timeout to fail on */
|
||||||
|
timeout.tv_sec = 60; /* 1 minute */
|
||||||
|
timeout.tv_usec = 0;
|
||||||
|
|
||||||
|
curl_multi_timeout(multi_handle, &curl_timeo);
|
||||||
|
if(curl_timeo >= 0) {
|
||||||
|
timeout.tv_sec = curl_timeo / 1000;
|
||||||
|
if(timeout.tv_sec > 1)
|
||||||
|
timeout.tv_sec = 1;
|
||||||
|
else
|
||||||
|
timeout.tv_usec = (curl_timeo % 1000) * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get file descriptors from the transfers */
|
||||||
|
curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);
|
||||||
|
|
||||||
|
/* In a real-world program you OF COURSE check the return code of the
|
||||||
|
function calls. On success, the value of maxfd is guaranteed to be
|
||||||
|
greater or equal than -1. We call select(maxfd + 1, ...), specially
|
||||||
|
in case of (maxfd == -1), we call select(0, ...), which is basically
|
||||||
|
equal to sleep. */
|
||||||
|
|
||||||
|
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);
|
||||||
|
|
||||||
|
switch(rc) {
|
||||||
|
case -1:
|
||||||
|
/* select error */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/* timeout or readable/writable sockets */
|
||||||
|
/* note we *could* be more efficient and not wait for
|
||||||
|
* CURLM_CALL_MULTI_PERFORM to clear here and check it on re-entry
|
||||||
|
* but that gets messy */
|
||||||
|
while(curl_multi_perform(multi_handle, &file->still_running) ==
|
||||||
|
CURLM_CALL_MULTI_PERFORM);
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} while(file->still_running && (file->buffer_pos < want));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* use to remove want bytes from the front of a files buffer */
|
||||||
|
static int
|
||||||
|
use_buffer(URL_FILE *file,int want)
|
||||||
|
{
|
||||||
|
/* sort out buffer */
|
||||||
|
if((file->buffer_pos - want) <=0)
|
||||||
|
{
|
||||||
|
/* ditch buffer - write will recreate */
|
||||||
|
if(file->buffer)
|
||||||
|
free(file->buffer);
|
||||||
|
|
||||||
|
file->buffer=NULL;
|
||||||
|
file->buffer_pos=0;
|
||||||
|
file->buffer_len=0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* move rest down make it available for later */
|
||||||
|
memmove(file->buffer,
|
||||||
|
&file->buffer[want],
|
||||||
|
(file->buffer_pos - want));
|
||||||
|
|
||||||
|
file->buffer_pos -= want;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
URL_FILE *
|
||||||
|
url_fopen(const char *url,const char *operation)
|
||||||
|
{
|
||||||
|
/* this code could check for URLs or types in the 'url' and
|
||||||
|
basicly use the real fopen() for standard files */
|
||||||
|
|
||||||
|
URL_FILE *file;
|
||||||
|
(void)operation;
|
||||||
|
|
||||||
|
file = malloc(sizeof(URL_FILE));
|
||||||
|
if(!file)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
memset(file, 0, sizeof(URL_FILE));
|
||||||
|
|
||||||
|
if((file->handle.file=fopen(url,operation)))
|
||||||
|
{
|
||||||
|
file->type = CFTYPE_FILE; /* marked as URL */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
file->type = CFTYPE_CURL; /* marked as URL */
|
||||||
|
file->handle.curl = curl_easy_init();
|
||||||
|
|
||||||
|
curl_easy_setopt(file->handle.curl, CURLOPT_URL, url);
|
||||||
|
curl_easy_setopt(file->handle.curl, CURLOPT_WRITEDATA, file);
|
||||||
|
curl_easy_setopt(file->handle.curl, CURLOPT_VERBOSE, 0L);
|
||||||
|
curl_easy_setopt(file->handle.curl, CURLOPT_WRITEFUNCTION, write_callback);
|
||||||
|
|
||||||
|
if(!multi_handle)
|
||||||
|
multi_handle = curl_multi_init();
|
||||||
|
|
||||||
|
curl_multi_add_handle(multi_handle, file->handle.curl);
|
||||||
|
|
||||||
|
/* lets start the fetch */
|
||||||
|
while(curl_multi_perform(multi_handle, &file->still_running) ==
|
||||||
|
CURLM_CALL_MULTI_PERFORM );
|
||||||
|
|
||||||
|
if((file->buffer_pos == 0) && (!file->still_running))
|
||||||
|
{
|
||||||
|
/* if still_running is 0 now, we should return NULL */
|
||||||
|
|
||||||
|
/* make sure the easy handle is not in the multi handle anymore */
|
||||||
|
curl_multi_remove_handle(multi_handle, file->handle.curl);
|
||||||
|
|
||||||
|
/* cleanup */
|
||||||
|
curl_easy_cleanup(file->handle.curl);
|
||||||
|
|
||||||
|
free(file);
|
||||||
|
|
||||||
|
file = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
url_fclose(URL_FILE *file)
|
||||||
|
{
|
||||||
|
int ret=0;/* default is good return */
|
||||||
|
|
||||||
|
switch(file->type)
|
||||||
|
{
|
||||||
|
case CFTYPE_FILE:
|
||||||
|
ret=fclose(file->handle.file); /* passthrough */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CFTYPE_CURL:
|
||||||
|
/* make sure the easy handle is not in the multi handle anymore */
|
||||||
|
curl_multi_remove_handle(multi_handle, file->handle.curl);
|
||||||
|
|
||||||
|
/* cleanup */
|
||||||
|
curl_easy_cleanup(file->handle.curl);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* unknown or supported type - oh dear */
|
||||||
|
ret=EOF;
|
||||||
|
errno=EBADF;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(file->buffer)
|
||||||
|
free(file->buffer);/* free any allocated buffer space */
|
||||||
|
|
||||||
|
free(file);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
url_feof(URL_FILE *file)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
|
||||||
|
switch(file->type)
|
||||||
|
{
|
||||||
|
case CFTYPE_FILE:
|
||||||
|
ret=feof(file->handle.file);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CFTYPE_CURL:
|
||||||
|
if((file->buffer_pos == 0) && (!file->still_running))
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
default: /* unknown or supported type - oh dear */
|
||||||
|
ret=-1;
|
||||||
|
errno=EBADF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
url_fread(void *ptr, size_t size, size_t nmemb, URL_FILE *file)
|
||||||
|
{
|
||||||
|
size_t want;
|
||||||
|
|
||||||
|
switch(file->type)
|
||||||
|
{
|
||||||
|
case CFTYPE_FILE:
|
||||||
|
want=fread(ptr,size,nmemb,file->handle.file);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CFTYPE_CURL:
|
||||||
|
want = nmemb * size;
|
||||||
|
|
||||||
|
fill_buffer(file,want,1);
|
||||||
|
|
||||||
|
/* check if theres data in the buffer - if not fill_buffer()
|
||||||
|
* either errored or EOF */
|
||||||
|
if(!file->buffer_pos)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* ensure only available data is considered */
|
||||||
|
if(file->buffer_pos < want)
|
||||||
|
want = file->buffer_pos;
|
||||||
|
|
||||||
|
/* xfer data to caller */
|
||||||
|
memcpy(ptr, file->buffer, want);
|
||||||
|
|
||||||
|
use_buffer(file,want);
|
||||||
|
|
||||||
|
want = want / size; /* number of items - nb correct op - checked
|
||||||
|
* with glibc code*/
|
||||||
|
|
||||||
|
/*printf("(fread) return %d bytes %d left\n", want,file->buffer_pos);*/
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* unknown or supported type - oh dear */
|
||||||
|
want=0;
|
||||||
|
errno=EBADF;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
return want;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
url_fgets(char *ptr, int size, URL_FILE *file)
|
||||||
|
{
|
||||||
|
int want = size - 1;/* always need to leave room for zero termination */
|
||||||
|
int loop;
|
||||||
|
|
||||||
|
switch(file->type)
|
||||||
|
{
|
||||||
|
case CFTYPE_FILE:
|
||||||
|
ptr = fgets(ptr,size,file->handle.file);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CFTYPE_CURL:
|
||||||
|
fill_buffer(file,want,1);
|
||||||
|
|
||||||
|
/* check if theres data in the buffer - if not fill either errored or
|
||||||
|
* EOF */
|
||||||
|
if(!file->buffer_pos)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* ensure only available data is considered */
|
||||||
|
if(file->buffer_pos < want)
|
||||||
|
want = file->buffer_pos;
|
||||||
|
|
||||||
|
/*buffer contains data */
|
||||||
|
/* look for newline or eof */
|
||||||
|
for(loop=0;loop < want;loop++)
|
||||||
|
{
|
||||||
|
if(file->buffer[loop] == '\n')
|
||||||
|
{
|
||||||
|
want=loop+1;/* include newline */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* xfer data to caller */
|
||||||
|
memcpy(ptr, file->buffer, want);
|
||||||
|
ptr[want]=0;/* allways null terminate */
|
||||||
|
|
||||||
|
use_buffer(file,want);
|
||||||
|
|
||||||
|
/*printf("(fgets) return %d bytes %d left\n", want,file->buffer_pos);*/
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* unknown or supported type - oh dear */
|
||||||
|
ptr=NULL;
|
||||||
|
errno=EBADF;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ptr;/*success */
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
url_rewind(URL_FILE *file)
|
||||||
|
{
|
||||||
|
switch(file->type)
|
||||||
|
{
|
||||||
|
case CFTYPE_FILE:
|
||||||
|
rewind(file->handle.file); /* passthrough */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case CFTYPE_CURL:
|
||||||
|
/* halt transaction */
|
||||||
|
curl_multi_remove_handle(multi_handle, file->handle.curl);
|
||||||
|
|
||||||
|
/* restart */
|
||||||
|
curl_multi_add_handle(multi_handle, file->handle.curl);
|
||||||
|
|
||||||
|
/* ditch buffer - write will recreate - resets stream pos*/
|
||||||
|
if(file->buffer)
|
||||||
|
free(file->buffer);
|
||||||
|
|
||||||
|
file->buffer=NULL;
|
||||||
|
file->buffer_pos=0;
|
||||||
|
file->buffer_len=0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: /* unknown or supported type - oh dear */
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Small main program to retrive from a url using fgets and fread saving the
|
||||||
|
* output to two test files (note the fgets method will corrupt binary files if
|
||||||
|
* they contain 0 chars */
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
URL_FILE *handle;
|
||||||
|
FILE *outf;
|
||||||
|
|
||||||
|
int nread;
|
||||||
|
char buffer[256];
|
||||||
|
const char *url;
|
||||||
|
|
||||||
|
if(argc < 2)
|
||||||
|
{
|
||||||
|
url="http://192.168.7.3/testfile";/* default to testurl */
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
url=argv[1];/* use passed url */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* copy from url line by line with fgets */
|
||||||
|
outf=fopen("fgets.test","w+");
|
||||||
|
if(!outf)
|
||||||
|
{
|
||||||
|
perror("couldn't open fgets output file\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle = url_fopen(url, "r");
|
||||||
|
if(!handle)
|
||||||
|
{
|
||||||
|
printf("couldn't url_fopen() %s\n", url);
|
||||||
|
fclose(outf);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
while(!url_feof(handle))
|
||||||
|
{
|
||||||
|
url_fgets(buffer,sizeof(buffer),handle);
|
||||||
|
fwrite(buffer,1,strlen(buffer),outf);
|
||||||
|
}
|
||||||
|
|
||||||
|
url_fclose(handle);
|
||||||
|
|
||||||
|
fclose(outf);
|
||||||
|
|
||||||
|
|
||||||
|
/* Copy from url with fread */
|
||||||
|
outf=fopen("fread.test","w+");
|
||||||
|
if(!outf)
|
||||||
|
{
|
||||||
|
perror("couldn't open fread output file\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle = url_fopen("testfile", "r");
|
||||||
|
if(!handle) {
|
||||||
|
printf("couldn't url_fopen() testfile\n");
|
||||||
|
fclose(outf);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
nread = url_fread(buffer, 1,sizeof(buffer), handle);
|
||||||
|
fwrite(buffer,1,nread,outf);
|
||||||
|
} while(nread);
|
||||||
|
|
||||||
|
url_fclose(handle);
|
||||||
|
|
||||||
|
fclose(outf);
|
||||||
|
|
||||||
|
|
||||||
|
/* Test rewind */
|
||||||
|
outf=fopen("rewind.test","w+");
|
||||||
|
if(!outf)
|
||||||
|
{
|
||||||
|
perror("couldn't open fread output file\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
handle = url_fopen("testfile", "r");
|
||||||
|
if(!handle) {
|
||||||
|
printf("couldn't url_fopen() testfile\n");
|
||||||
|
fclose(outf);
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
nread = url_fread(buffer, 1,sizeof(buffer), handle);
|
||||||
|
fwrite(buffer,1,nread,outf);
|
||||||
|
url_rewind(handle);
|
||||||
|
|
||||||
|
buffer[0]='\n';
|
||||||
|
fwrite(buffer,1,1,outf);
|
||||||
|
|
||||||
|
nread = url_fread(buffer, 1,sizeof(buffer), handle);
|
||||||
|
fwrite(buffer,1,nread,outf);
|
||||||
|
|
||||||
|
|
||||||
|
url_fclose(handle);
|
||||||
|
|
||||||
|
fclose(outf);
|
||||||
|
|
||||||
|
|
||||||
|
return 0;/* all done */
|
||||||
|
}
|
||||||
136
docs/examples/ftp-wildcard.c
Normal file
136
docs/examples/ftp-wildcard.c
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
struct callback_data {
|
||||||
|
FILE *output;
|
||||||
|
};
|
||||||
|
|
||||||
|
static long file_is_comming(struct curl_fileinfo *finfo,
|
||||||
|
struct callback_data *data,
|
||||||
|
int remains);
|
||||||
|
|
||||||
|
static long file_is_downloaded(struct callback_data *data);
|
||||||
|
|
||||||
|
static size_t write_it(char *buff, size_t size, size_t nmemb,
|
||||||
|
struct callback_data *data);
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int rc = CURLE_OK;
|
||||||
|
|
||||||
|
/* curl easy handle */
|
||||||
|
CURL *handle;
|
||||||
|
|
||||||
|
/* help data */
|
||||||
|
struct callback_data data = { 0 };
|
||||||
|
|
||||||
|
/* global initialization */
|
||||||
|
rc = curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
if(rc)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
/* initialization of easy handle */
|
||||||
|
handle = curl_easy_init();
|
||||||
|
if(!handle) {
|
||||||
|
curl_global_cleanup();
|
||||||
|
return CURLE_OUT_OF_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* turn on wildcard matching */
|
||||||
|
curl_easy_setopt(handle, CURLOPT_WILDCARDMATCH, 1L);
|
||||||
|
|
||||||
|
/* callback is called before download of concrete file started */
|
||||||
|
curl_easy_setopt(handle, CURLOPT_CHUNK_BGN_FUNCTION, file_is_comming);
|
||||||
|
|
||||||
|
/* callback is called after data from the file have been transferred */
|
||||||
|
curl_easy_setopt(handle, CURLOPT_CHUNK_END_FUNCTION, file_is_downloaded);
|
||||||
|
|
||||||
|
/* this callback will write contents into files */
|
||||||
|
curl_easy_setopt(handle, CURLOPT_WRITEFUNCTION, write_it);
|
||||||
|
|
||||||
|
/* put transfer data into callbacks */
|
||||||
|
curl_easy_setopt(handle, CURLOPT_CHUNK_DATA, &data);
|
||||||
|
curl_easy_setopt(handle, CURLOPT_WRITEDATA, &data);
|
||||||
|
|
||||||
|
/* curl_easy_setopt(handle, CURLOPT_VERBOSE, 1L); */
|
||||||
|
|
||||||
|
/* set an URL containing wildcard pattern (only in the last part) */
|
||||||
|
if(argc == 2)
|
||||||
|
curl_easy_setopt(handle, CURLOPT_URL, argv[1]);
|
||||||
|
else
|
||||||
|
curl_easy_setopt(handle, CURLOPT_URL,
|
||||||
|
"ftp://curltest.howto.cz:123456@curltest.howto.cz/test/*");
|
||||||
|
|
||||||
|
/* and start transfer! */
|
||||||
|
rc = curl_easy_perform(handle);
|
||||||
|
|
||||||
|
curl_easy_cleanup(handle);
|
||||||
|
curl_global_cleanup();
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long file_is_comming(struct curl_fileinfo *finfo,
|
||||||
|
struct callback_data *data,
|
||||||
|
int remains)
|
||||||
|
{
|
||||||
|
printf("%3d %40s %10luB ", remains, finfo->filename,
|
||||||
|
(unsigned long)finfo->size);
|
||||||
|
|
||||||
|
switch(finfo->filetype) {
|
||||||
|
case CURLFILETYPE_DIRECTORY:
|
||||||
|
printf(" DIR\n");
|
||||||
|
break;
|
||||||
|
case CURLFILETYPE_FILE:
|
||||||
|
printf("FILE ");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printf("OTHER\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(finfo->filetype == CURLFILETYPE_FILE) {
|
||||||
|
/* do not transfer files >= 50B */
|
||||||
|
if(finfo->size > 50) {
|
||||||
|
printf("SKIPPED\n");
|
||||||
|
return CURL_CHUNK_BGN_FUNC_SKIP;
|
||||||
|
}
|
||||||
|
|
||||||
|
data->output = fopen(finfo->filename, "w");
|
||||||
|
if(!data->output) {
|
||||||
|
return CURL_CHUNK_BGN_FUNC_FAIL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CURL_CHUNK_BGN_FUNC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long file_is_downloaded(struct callback_data *data)
|
||||||
|
{
|
||||||
|
if(data->output) {
|
||||||
|
printf("DOWNLOADED\n");
|
||||||
|
fclose(data->output);
|
||||||
|
data->output = 0x0;
|
||||||
|
}
|
||||||
|
return CURL_CHUNK_END_FUNC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static size_t write_it(char *buff, size_t size, size_t nmemb,
|
||||||
|
struct callback_data *data)
|
||||||
|
{
|
||||||
|
size_t written = 0;
|
||||||
|
if(data->output)
|
||||||
|
written = fwrite(buff, size, nmemb, data->output);
|
||||||
|
else
|
||||||
|
/* listing output */
|
||||||
|
written = fwrite(buff, size, nmemb, stdout);
|
||||||
|
return written;
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
* / __| | | | |_) | |
|
* / __| | | | |_) | |
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* $Id$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -22,11 +21,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
struct FtpFile {
|
struct FtpFile {
|
||||||
char *filename;
|
const char *filename;
|
||||||
FILE *stream;
|
FILE *stream;
|
||||||
};
|
};
|
||||||
|
|
||||||
int my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
|
static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)
|
||||||
{
|
{
|
||||||
struct FtpFile *out=(struct FtpFile *)stream;
|
struct FtpFile *out=(struct FtpFile *)stream;
|
||||||
if(out && !out->stream) {
|
if(out && !out->stream) {
|
||||||
@@ -49,19 +48,23 @@ int main(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
curl_global_init(CURL_GLOBAL_DEFAULT);
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
|
||||||
curl = curl_easy_init();
|
curl = curl_easy_init();
|
||||||
if(curl) {
|
if(curl) {
|
||||||
/* Get curl 7.9.2 from sunet.se's FTP site: */
|
/*
|
||||||
|
* Get curl 7.9.2 from sunet.se's FTP site. curl 7.9.2 is most likely not
|
||||||
|
* present there by the time you read this, so you'd better replace the
|
||||||
|
* URL with one that works!
|
||||||
|
*/
|
||||||
curl_easy_setopt(curl, CURLOPT_URL,
|
curl_easy_setopt(curl, CURLOPT_URL,
|
||||||
"ftp://ftp.sunet.se/pub/www/utilities/curl/curl-7.9.2.tar.gz");
|
"ftp://ftp.sunet.se/pub/www/utilities/curl/curl-7.9.2.tar.gz");
|
||||||
/* Define our callback to get called when there's data to be written */
|
/* Define our callback to get called when there's data to be written */
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
|
||||||
/* Set a pointer to our struct to pass to the callback */
|
/* 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 */
|
/* Switch on full protocol/debug output */
|
||||||
curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE);
|
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
|
||||||
|
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
|||||||
76
docs/examples/ftpgetinfo.c
Normal file
76
docs/examples/ftpgetinfo.c
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <curl/types.h>
|
||||||
|
#include <curl/easy.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This is an example showing how to check a single file's size and mtime
|
||||||
|
* from an FTP server.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static size_t throw_away(void *ptr, size_t size, size_t nmemb, void *data)
|
||||||
|
{
|
||||||
|
/* we are not interested in the headers itself,
|
||||||
|
so we only return the size we would have saved ... */
|
||||||
|
return (size_t)(size * nmemb);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
/* Check for binutils 2.19.1 from ftp.gnu.org's FTP site. */
|
||||||
|
char ftpurl[] = "ftp://ftp.gnu.org/gnu/binutils/binutils-2.19.1.tar.bz2";
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
const time_t filetime;
|
||||||
|
const double filesize;
|
||||||
|
const char *filename = strrchr(ftpurl, '/') + 1;
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, ftpurl);
|
||||||
|
/* No download if the file */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_NOBODY, 1L);
|
||||||
|
/* Ask for filetime */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
|
||||||
|
/* No header output: TODO 14.1 http-style HEAD output for ftp */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, throw_away);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_HEADER, 0L);
|
||||||
|
/* Switch on full protocol/debug output */
|
||||||
|
/* curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); */
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
/* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
|
||||||
|
if((CURLE_OK == res) && filetime)
|
||||||
|
printf("filetime %s: %s", filename, ctime(&filetime));
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &filesize);
|
||||||
|
if((CURLE_OK == res) && filesize)
|
||||||
|
printf("filesize %s: %0.0f bytes\n", filename, filesize);
|
||||||
|
} else {
|
||||||
|
/* we failed */
|
||||||
|
fprintf(stderr, "curl told us %d\n", res);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_global_cleanup();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
* / __| | | | |_) | |
|
* / __| | | | |_) | |
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* $Id$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -21,7 +20,7 @@
|
|||||||
* This functionality was introduced in libcurl 7.9.3.
|
* This functionality was introduced in libcurl 7.9.3.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
size_t
|
static size_t
|
||||||
write_response(void *ptr, size_t size, size_t nmemb, void *data)
|
write_response(void *ptr, size_t size, size_t nmemb, void *data)
|
||||||
{
|
{
|
||||||
FILE *writehere = (FILE *)data;
|
FILE *writehere = (FILE *)data;
|
||||||
@@ -34,7 +33,7 @@ int main(int argc, char **argv)
|
|||||||
CURLcode res;
|
CURLcode res;
|
||||||
FILE *ftpfile;
|
FILE *ftpfile;
|
||||||
FILE *respfile;
|
FILE *respfile;
|
||||||
|
|
||||||
/* local file name to store the file as */
|
/* local file name to store the file as */
|
||||||
ftpfile = fopen("ftp-list", "wb"); /* b is binary, needed on win32 */
|
ftpfile = fopen("ftp-list", "wb"); /* b is binary, needed on win32 */
|
||||||
|
|
||||||
@@ -45,7 +44,9 @@ int main(int argc, char **argv)
|
|||||||
if(curl) {
|
if(curl) {
|
||||||
/* Get a file listing from sunet */
|
/* Get a file listing from sunet */
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.sunet.se/");
|
curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.sunet.se/");
|
||||||
curl_easy_setopt(curl, CURLOPT_FILE, ftpfile);
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);
|
||||||
|
/* If you intend to use this on windows with a libcurl DLL, you must use
|
||||||
|
CURLOPT_WRITEFUNCTION as well */
|
||||||
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
|
curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response);
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile);
|
curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile);
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
|||||||
@@ -1,16 +1,25 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
* / __| | | | |_) | |
|
* / __| | | | |_) | |
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* $Id$
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#ifdef WIN32
|
||||||
|
#include <io.h>
|
||||||
|
#else
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This example shows an FTP upload, with a rename of the file just after
|
* This example shows an FTP upload, with a rename of the file just after
|
||||||
@@ -24,27 +33,43 @@
|
|||||||
#define REMOTE_URL "ftp://localhost/" UPLOAD_FILE_AS
|
#define REMOTE_URL "ftp://localhost/" UPLOAD_FILE_AS
|
||||||
#define RENAME_FILE_TO "renamed-and-fine.txt"
|
#define RENAME_FILE_TO "renamed-and-fine.txt"
|
||||||
|
|
||||||
|
/* NOTE: if you want this example to work on Windows with libcurl as a
|
||||||
|
DLL, you MUST also provide a read callback with CURLOPT_READFUNCTION.
|
||||||
|
Failing to do so will give you a crash since a DLL may not use the
|
||||||
|
variable's memory when passed in to it from an app like this. */
|
||||||
|
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
/* in real-world cases, this would probably get this data differently
|
||||||
|
as this fread() stuff is exactly what the library already would do
|
||||||
|
by default internally */
|
||||||
|
size_t retcode = fread(ptr, size, nmemb, stream);
|
||||||
|
|
||||||
|
fprintf(stderr, "*** We read %d bytes from file\n", retcode);
|
||||||
|
return retcode;
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
CURL *curl;
|
CURL *curl;
|
||||||
CURLcode res;
|
CURLcode res;
|
||||||
FILE *ftpfile;
|
FILE *hd_src;
|
||||||
FILE * hd_src ;
|
|
||||||
int hd ;
|
|
||||||
struct stat file_info;
|
struct stat file_info;
|
||||||
|
curl_off_t fsize;
|
||||||
|
|
||||||
struct curl_slist *headerlist=NULL;
|
struct curl_slist *headerlist=NULL;
|
||||||
char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
|
static const char buf_1 [] = "RNFR " UPLOAD_FILE_AS;
|
||||||
char buf_2 [] = "RNTO " RENAME_FILE_TO;
|
static const char buf_2 [] = "RNTO " RENAME_FILE_TO;
|
||||||
|
|
||||||
/* get the file size of the local file */
|
/* get the file size of the local file */
|
||||||
hd = open(LOCAL_FILE, O_RDONLY) ;
|
if(stat(LOCAL_FILE, &file_info)) {
|
||||||
fstat(hd, &file_info);
|
printf("Couldnt open '%s': %s\n", LOCAL_FILE, strerror(errno));
|
||||||
close(hd) ;
|
return 1;
|
||||||
|
}
|
||||||
|
fsize = (curl_off_t)file_info.st_size;
|
||||||
|
|
||||||
/* get a FILE * of the same file, could also be made with
|
printf("Local file size: %" CURL_FORMAT_CURL_OFF_T " bytes.\n", fsize);
|
||||||
fdopen() from the previous descriptor, but hey this is just
|
|
||||||
an example! */
|
/* get a FILE * of the same file */
|
||||||
hd_src = fopen(LOCAL_FILE, "rb");
|
hd_src = fopen(LOCAL_FILE, "rb");
|
||||||
|
|
||||||
/* In windows, this will init the winsock stuff */
|
/* In windows, this will init the winsock stuff */
|
||||||
@@ -57,8 +82,11 @@ int main(int argc, char **argv)
|
|||||||
headerlist = curl_slist_append(headerlist, buf_1);
|
headerlist = curl_slist_append(headerlist, buf_1);
|
||||||
headerlist = curl_slist_append(headerlist, buf_2);
|
headerlist = curl_slist_append(headerlist, buf_2);
|
||||||
|
|
||||||
|
/* we want to use our own read function */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
|
||||||
|
|
||||||
/* enable uploading */
|
/* enable uploading */
|
||||||
curl_easy_setopt(curl, CURLOPT_UPLOAD, TRUE) ;
|
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
|
||||||
|
|
||||||
/* specify target */
|
/* specify target */
|
||||||
curl_easy_setopt(curl,CURLOPT_URL, REMOTE_URL);
|
curl_easy_setopt(curl,CURLOPT_URL, REMOTE_URL);
|
||||||
@@ -67,10 +95,14 @@ int main(int argc, char **argv)
|
|||||||
curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
|
curl_easy_setopt(curl, CURLOPT_POSTQUOTE, headerlist);
|
||||||
|
|
||||||
/* now specify which file to upload */
|
/* 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) */
|
/* Set the size of the file to upload (optional). If you give a *_LARGE
|
||||||
curl_easy_setopt(curl, CURLOPT_INFILESIZE, file_info.st_size);
|
option you MUST make sure that the type of the passed-in argument is a
|
||||||
|
curl_off_t. If you use CURLOPT_INFILESIZE (without _LARGE) you must
|
||||||
|
make sure that to pass in a type 'long' argument. */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE,
|
||||||
|
(curl_off_t)fsize);
|
||||||
|
|
||||||
/* Now run off and do what you've been told! */
|
/* Now run off and do what you've been told! */
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
|
|||||||
158
docs/examples/ftpuploadresume.c
Normal file
158
docs/examples/ftpuploadresume.c
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Upload to FTP, resuming failed transfers
|
||||||
|
*
|
||||||
|
* Compile for MinGW like this:
|
||||||
|
* gcc -Wall -pedantic -std=c99 ftpuploadwithresume.c -o ftpuploadresume.exe
|
||||||
|
* -lcurl -lmsvcr70
|
||||||
|
*
|
||||||
|
* Written by Philip Bock
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
#if defined(_MSC_VER) && (_MSC_VER < 1300)
|
||||||
|
# error _snscanf requires MSVC 7.0 or later.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* The MinGW headers are missing a few Win32 function definitions,
|
||||||
|
you shouldn't need this if you use VC++ */
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
int __cdecl _snscanf(const char * input, size_t length, const char * format, ...);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* parse headers for Content-Length */
|
||||||
|
size_t getcontentlengthfunc(void *ptr, size_t size, size_t nmemb, void *stream) {
|
||||||
|
int r;
|
||||||
|
long len = 0;
|
||||||
|
|
||||||
|
/* _snscanf() is Win32 specific */
|
||||||
|
r = _snscanf(ptr, size * nmemb, "Content-Length: %ld\n", &len);
|
||||||
|
|
||||||
|
if (r) /* Microsoft: we don't read the specs */
|
||||||
|
*((long *) stream) = len;
|
||||||
|
|
||||||
|
return size * nmemb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* discard downloaded data */
|
||||||
|
size_t discardfunc(void *ptr, size_t size, size_t nmemb, void *stream) {
|
||||||
|
return size * nmemb;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* read data to upload */
|
||||||
|
size_t readfunc(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
FILE *f = stream;
|
||||||
|
size_t n;
|
||||||
|
|
||||||
|
if (ferror(f))
|
||||||
|
return CURL_READFUNC_ABORT;
|
||||||
|
|
||||||
|
n = fread(ptr, size, nmemb, f) * size;
|
||||||
|
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int upload(CURL *curlhandle, const char * remotepath, const char * localpath,
|
||||||
|
long timeout, long tries)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
long uploaded_len = 0;
|
||||||
|
CURLcode r = CURLE_GOT_NOTHING;
|
||||||
|
int c;
|
||||||
|
|
||||||
|
f = fopen(localpath, "rb");
|
||||||
|
if (f == NULL) {
|
||||||
|
perror(NULL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_UPLOAD, 1L);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_URL, remotepath);
|
||||||
|
|
||||||
|
if (timeout)
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_FTP_RESPONSE_TIMEOUT, timeout);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_HEADERFUNCTION, getcontentlengthfunc);
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_HEADERDATA, &uploaded_len);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_WRITEFUNCTION, discardfunc);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_READFUNCTION, readfunc);
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_READDATA, f);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_FTPPORT, "-"); /* disable passive mode */
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_FTP_CREATE_MISSING_DIRS, 1L);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_VERBOSE, 1L);
|
||||||
|
|
||||||
|
for (c = 0; (r != CURLE_OK) && (c < tries); c++) {
|
||||||
|
/* are we resuming? */
|
||||||
|
if (c) { /* yes */
|
||||||
|
/* determine the length of the file already written */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* With NOBODY and NOHEADER, libcurl will issue a SIZE
|
||||||
|
* command, but the only way to retrieve the result is
|
||||||
|
* to parse the returned Content-Length header. Thus,
|
||||||
|
* getcontentlengthfunc(). We need discardfunc() above
|
||||||
|
* because HEADER will dump the headers to stdout
|
||||||
|
* without it.
|
||||||
|
*/
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 1L);
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_HEADER, 1L);
|
||||||
|
|
||||||
|
r = curl_easy_perform(curlhandle);
|
||||||
|
if (r != CURLE_OK)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_NOBODY, 0L);
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_HEADER, 0L);
|
||||||
|
|
||||||
|
fseek(f, uploaded_len, SEEK_SET);
|
||||||
|
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_APPEND, 1L);
|
||||||
|
}
|
||||||
|
else { /* no */
|
||||||
|
curl_easy_setopt(curlhandle, CURLOPT_APPEND, 0L);
|
||||||
|
}
|
||||||
|
|
||||||
|
r = curl_easy_perform(curlhandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
if (r == CURLE_OK)
|
||||||
|
return 1;
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "%s\n", curl_easy_strerror(r));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int c, char **argv) {
|
||||||
|
CURL *curlhandle = NULL;
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
curlhandle = curl_easy_init();
|
||||||
|
|
||||||
|
upload(curlhandle, "ftp://user:pass@host/path/file", "C:\\file", 0, 3);
|
||||||
|
|
||||||
|
curl_easy_cleanup(curlhandle);
|
||||||
|
curl_global_cleanup();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
41
docs/examples/getinfo.c
Normal file
41
docs/examples/getinfo.c
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* _ _ ____ _
|
||||||
|
* Project ___| | | | _ \| |
|
||||||
|
* / __| | | | |_) | |
|
||||||
|
* | (__| |_| | _ <| |___
|
||||||
|
* \___|\___/|_| \_\_____|
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
/* http://curl.haxx.se/libcurl/c/curl_easy_init.html */
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
/* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTURL */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
|
||||||
|
/* http://curl.haxx.se/libcurl/c/curl_easy_perform.html */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
char *ct;
|
||||||
|
/* ask for the content-type */
|
||||||
|
/* http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html */
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
|
||||||
|
|
||||||
|
if((CURLE_OK == res) && ct)
|
||||||
|
printf("We received Content-Type: %s\n", ct);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
/* http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* _ _ ____ _
|
* _ _ ____ _
|
||||||
* Project ___| | | | _ \| |
|
* Project ___| | | | _ \| |
|
||||||
* / __| | | | |_) | |
|
* / __| | | | |_) | |
|
||||||
* | (__| |_| | _ <| |___
|
* | (__| |_| | _ <| |___
|
||||||
* \___|\___/|_| \_\_____|
|
* \___|\___/|_| \_\_____|
|
||||||
*
|
*
|
||||||
* $Id$
|
|
||||||
*
|
*
|
||||||
* Example source code to show how the callback function can be used to
|
* Example source code to show how the callback function can be used to
|
||||||
* download data into a chunk of memory instead of storing it in a file.
|
* download data into a chunk of memory instead of storing it in a file.
|
||||||
@@ -13,10 +12,9 @@
|
|||||||
* This exact source code has not been verified to work.
|
* 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 <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
#include <curl/types.h>
|
#include <curl/types.h>
|
||||||
@@ -27,13 +25,25 @@ struct MemoryStruct {
|
|||||||
size_t size;
|
size_t size;
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t
|
static void *myrealloc(void *ptr, size_t size);
|
||||||
|
|
||||||
|
static void *myrealloc(void *ptr, size_t size)
|
||||||
|
{
|
||||||
|
/* There might be a realloc() out there that doesn't like reallocing
|
||||||
|
NULL pointers, so we take care of it here */
|
||||||
|
if(ptr)
|
||||||
|
return realloc(ptr, size);
|
||||||
|
else
|
||||||
|
return malloc(size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static size_t
|
||||||
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
|
WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
|
||||||
{
|
{
|
||||||
register int realsize = size * nmemb;
|
size_t realsize = size * nmemb;
|
||||||
struct MemoryStruct *mem = (struct MemoryStruct *)data;
|
struct MemoryStruct *mem = (struct MemoryStruct *)data;
|
||||||
|
|
||||||
mem->memory = (char *)realloc(mem->memory, mem->size + realsize + 1);
|
mem->memory = myrealloc(mem->memory, mem->size + realsize + 1);
|
||||||
if (mem->memory) {
|
if (mem->memory) {
|
||||||
memcpy(&(mem->memory[mem->size]), ptr, realsize);
|
memcpy(&(mem->memory[mem->size]), ptr, realsize);
|
||||||
mem->size += realsize;
|
mem->size += realsize;
|
||||||
@@ -51,6 +61,8 @@ int main(int argc, char **argv)
|
|||||||
chunk.memory=NULL; /* we expect realloc(NULL, size) to work */
|
chunk.memory=NULL; /* we expect realloc(NULL, size) to work */
|
||||||
chunk.size = 0; /* no data at this point */
|
chunk.size = 0; /* no data at this point */
|
||||||
|
|
||||||
|
curl_global_init(CURL_GLOBAL_ALL);
|
||||||
|
|
||||||
/* init the curl session */
|
/* init the curl session */
|
||||||
curl_handle = curl_easy_init();
|
curl_handle = curl_easy_init();
|
||||||
|
|
||||||
@@ -61,7 +73,11 @@ int main(int argc, char **argv)
|
|||||||
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
|
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
|
||||||
|
|
||||||
/* we pass our 'chunk' struct to the callback function */
|
/* 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);
|
||||||
|
|
||||||
|
/* some servers don't like requests that are made without a user-agent
|
||||||
|
field, so we provide one */
|
||||||
|
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
|
||||||
|
|
||||||
/* get it! */
|
/* get it! */
|
||||||
curl_easy_perform(curl_handle);
|
curl_easy_perform(curl_handle);
|
||||||
@@ -74,7 +90,17 @@ int main(int argc, char **argv)
|
|||||||
* bytes big and contains the remote file.
|
* bytes big and contains the remote file.
|
||||||
*
|
*
|
||||||
* Do something nice with it!
|
* Do something nice with it!
|
||||||
|
*
|
||||||
|
* You should be aware of the fact that at this point we might have an
|
||||||
|
* allocated data block, and nothing has yet deallocated that data. So when
|
||||||
|
* you're done with it, you should free() it as a nice application.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
if(chunk.memory)
|
||||||
|
free(chunk.memory);
|
||||||
|
|
||||||
|
/* we're done with libcurl, so clean it up */
|
||||||
|
curl_global_cleanup();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user