Compare commits
	
		
			749 Commits
		
	
	
		
			curl-7_25_
			...
			curl-7_28_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | b9fdb721f2 | ||
|   | c830115c48 | ||
|   | 52af6e69f0 | ||
|   | 32be348af2 | ||
|   | 7e87499213 | ||
|   | 7719333f55 | ||
|   | 276452ca10 | ||
|   | 1b10dd7aae | ||
|   | 7aebb3cc42 | ||
|   | 6f444b2761 | ||
|   | 81d96c4421 | ||
|   | 10296ac665 | ||
|   | ab0fa55780 | ||
|   | 409f2a041f | ||
|   | dd75cba3ef | ||
|   | ee588fe088 | ||
|   | db4215f14a | ||
|   | 32afaaef93 | ||
|   | 0ac827848d | ||
|   | c277bd6ce7 | ||
|   | 6d8443a245 | ||
|   | 53c83ee3ed | ||
|   | fa1ae0abcd | ||
|   | 38ed72cd37 | ||
|   | 1099f3a071 | ||
|   | 6a4bdb027b | ||
|   | 7c0cbcf2f6 | ||
|   | 076e1fa348 | ||
|   | cd5261ea6d | ||
|   | 4b994e14fb | ||
|   | e62ee60c7a | ||
|   | e237402c47 | ||
|   | 1c23d2b392 | ||
|   | 7ecd874bce | ||
|   | 49c37e6c1c | ||
|   | dca8ae5f02 | ||
|   | cf75a64651 | ||
|   | 0af1a9d270 | ||
|   | 1394cad30f | ||
|   | 18c0e9bd71 | ||
|   | c70c1a22d2 | ||
|   | 5a4f6413d1 | ||
|   | 6d1b493f3d | ||
|   | 7840c4c70c | ||
|   | 9096f4f451 | ||
|   | 487538e87a | ||
|   | e1fa945e7e | ||
|   | cda6d891ab | ||
|   | 473003fbdf | ||
|   | 3f20303702 | ||
|   | a1be8e7f9b | ||
|   | 8d97bed806 | ||
|   | 13ce9031cc | ||
|   | 95326a40ff | ||
|   | 8e329bb759 | ||
|   | da82f59b69 | ||
|   | ab1f80200a | ||
|   | 41eec4efa2 | ||
|   | 2045d83dd3 | ||
|   | 0da6c113ce | ||
|   | fa6d78829f | ||
|   | 550e403f00 | ||
|   | f99430d89e | ||
|   | 09a491378a | ||
|   | 9019a0a86c | ||
|   | b2954e66e8 | ||
|   | 7c0f201075 | ||
|   | 0ecb57056f | ||
|   | 3be96564a8 | ||
|   | 0cb5650386 | ||
|   | 8f61e5cea7 | ||
|   | 34ff881ece | ||
|   | af121ccad8 | ||
|   | c81eb7e226 | ||
|   | 74fe1b95fb | ||
|   | d1c769877a | ||
|   | 94891ff296 | ||
|   | 12a40e17a9 | ||
|   | 8ffc971138 | ||
|   | f1d2e18508 | ||
|   | 1a02e84589 | ||
|   | c79c0909d9 | ||
|   | 3fc5779b91 | ||
|   | ff32546d81 | ||
|   | 99b036c9b2 | ||
|   | 33c02d4771 | ||
|   | 8373ca3641 | ||
|   | 3644a35027 | ||
|   | 542802af23 | ||
|   | 9547be37c2 | ||
|   | 974d5d5921 | ||
|   | 211605f0c5 | ||
|   | a5b6f91e8d | ||
|   | fbf3560886 | ||
|   | 07593b2422 | ||
|   | cd423348d9 | ||
|   | 90821c6202 | ||
|   | dee2ef8083 | ||
|   | 50a7d32af0 | ||
|   | a5c6ecba8d | ||
|   | 7a53474f43 | ||
|   | 6b18f18b4c | ||
|   | 971f5bcedd | ||
|   | 42bbc5ce10 | ||
|   | c01b6f4d09 | ||
|   | 9da2c96039 | ||
|   | e8ab9a0d27 | ||
|   | 628c4e7af1 | ||
|   | 4ea7a65af7 | ||
|   | d89861f651 | ||
|   | 0c8ccf7207 | ||
|   | 39dff07a27 | ||
|   | 84e6c7a9e5 | ||
|   | c1400f6f12 | ||
|   | 889038f668 | ||
|   | 907a9d25e8 | ||
|   | b3d72a95be | ||
|   | b78944146a | ||
|   | 9b25b00fa3 | ||
|   | ba41ecfa17 | ||
|   | 1ab6c35363 | ||
|   | 5162cb8ad6 | ||
|   | 8a2be299f4 | ||
|   | f73a27cadc | ||
|   | f332f14102 | ||
|   | 775cc1be66 | ||
|   | f05e51362f | ||
|   | ce515e993f | ||
|   | a34197ef77 | ||
|   | 7f7e2ea72f | ||
|   | 4d384a8714 | ||
|   | c44e6741ce | ||
|   | 94c3e0f702 | ||
|   | c8846c0907 | ||
|   | f9da9a0edb | ||
|   | 6372144be0 | ||
|   | ef753b710b | ||
|   | e6ba048701 | ||
|   | 71813f5e46 | ||
|   | a6df3550cf | ||
|   | 8a57b3c972 | ||
|   | f665e5d130 | ||
|   | fa4b4d2033 | ||
|   | a492632022 | ||
|   | 6c6f1f64c2 | ||
|   | 160312d945 | ||
|   | badb81769a | ||
|   | 8b5d050267 | ||
|   | 2e7d2c8f74 | ||
|   | 3a0b64489f | ||
|   | ee3551e45e | ||
|   | 1b0477a5a9 | ||
|   | 4ae2f77ba1 | ||
|   | 0a0f3c63a6 | ||
|   | da0d15733c | ||
|   | cb2feb9def | ||
|   | abb0da9193 | ||
|   | b6a141ea8a | ||
|   | ca84361e4b | ||
|   | 09d9dd8873 | ||
|   | 925707c0f8 | ||
|   | de24d7bd4c | ||
|   | 2f6e1a8cc3 | ||
|   | 40153716a3 | ||
|   | 7735141e73 | ||
|   | 5ede86ae51 | ||
|   | 3b7d31c1ed | ||
|   | d4af0bb8f6 | ||
|   | 4eec66e479 | ||
|   | 4c070de4fb | ||
|   | 54faab69cb | ||
|   | 8136649e9d | ||
|   | 71358ddffd | ||
|   | be5fbf7372 | ||
|   | ba569a27cc | ||
|   | 0f76e492ae | ||
|   | a90492a083 | ||
|   | f4b4365c19 | ||
|   | d792e75f2c | ||
|   | 41a3bff3da | ||
|   | 82b0aebef3 | ||
|   | 23ef5e4ba2 | ||
|   | 44154e0733 | ||
|   | d22186bbbc | ||
|   | b8983aa309 | ||
|   | 4dcde5aa3d | ||
|   | 99f0e45b61 | ||
|   | 7520f9f1c3 | ||
|   | f208bf5a2d | ||
|   | 52b6eda4f2 | ||
|   | 73342f0ee0 | ||
|   | 0774386b23 | ||
|   | e351972bc8 | ||
|   | 021e89b8c6 | ||
|   | 4dd44d9c20 | ||
|   | 31f39120b7 | ||
|   | b9fb9c2380 | ||
|   | 14afbf361a | ||
|   | bf6dc61967 | ||
|   | 1de496cf0f | ||
|   | 154fc29f58 | ||
|   | 52db6e370d | ||
|   | 672f24b1dc | ||
|   | 2f02d825f1 | ||
|   | 15108d6308 | ||
|   | c771968ab6 | ||
|   | b61e8b81f5 | ||
|   | 77f72aa6c3 | ||
|   | b4a558041f | ||
|   | 8bad5f2a61 | ||
|   | f0d611df9e | ||
|   | 013d043d22 | ||
|   | 382429e760 | ||
|   | 0b08491f83 | ||
|   | 5fbf4e348c | ||
|   | 73b1a965f7 | ||
|   | 42e4c34ff3 | ||
|   | 0df14c8393 | ||
|   | 60a2ee88a5 | ||
|   | 66a77a9b49 | ||
|   | 3b9103e4a6 | ||
|   | 77c66e0247 | ||
|   | 9f304291bd | ||
|   | 986c7949c0 | ||
|   | 69f5fe070d | ||
|   | 5dedda1448 | ||
|   | 24c43e9d34 | ||
|   | 50b87c4e68 | ||
|   | ce8311c7e4 | ||
|   | 674da8ae07 | ||
|   | 84490052d4 | ||
|   | 19035292d0 | ||
|   | 81656a8466 | ||
|   | 76ba591957 | ||
|   | 1f8518c5d9 | ||
|   | a52857cb02 | ||
|   | 9e01625779 | ||
|   | 6e1f867523 | ||
|   | cd350e3829 | ||
|   | 0bededd7c5 | ||
|   | a797e9efdf | ||
|   | 27893c64f3 | ||
|   | dd4699c111 | ||
|   | 11a7ac0d6a | ||
|   | b13106339e | ||
|   | 1b1c43a9fe | ||
|   | 7b5c411f5c | ||
|   | 7f9f94a1df | ||
|   | 3b4d430cd8 | ||
|   | 33b815e894 | ||
|   | f92779198d | ||
|   | 9ac5cdfc2f | ||
|   | 8a279d2275 | ||
|   | c0f8340c7c | ||
|   | d317ca50ae | ||
|   | 487406c3c0 | ||
|   | 2c7cfd2926 | ||
|   | c66f6e60fc | ||
|   | b0735f3165 | ||
|   | 1fc5a41447 | ||
|   | cb787b70bf | ||
|   | 0f15ed1617 | ||
|   | 5d80017fd6 | ||
|   | e1711b0e9a | ||
|   | c27cc4cfe0 | ||
|   | dc470723b1 | ||
|   | da2bde9d62 | ||
|   | 13abfd997e | ||
|   | 8276791749 | ||
|   | 9d11716933 | ||
|   | ff318a6302 | ||
|   | 0e24c1e921 | ||
|   | 9ca3137987 | ||
|   | 20ff8a0988 | ||
|   | 771e91374b | ||
|   | 1a74e54e8b | ||
|   | 6e3802a2cf | ||
|   | df5a47b819 | ||
|   | a39789c85c | ||
|   | b7298e49ae | ||
|   | be795f90da | ||
|   | 1c4663bc42 | ||
|   | d759a70db8 | ||
|   | 1dcf4418ba | ||
|   | 685366006c | ||
|   | 85ce195f75 | ||
|   | 18f8b7eb72 | ||
|   | 0dc1e1e92e | ||
|   | 0e1f107f83 | ||
|   | dfe405076e | ||
|   | dce2e1aa0f | ||
|   | d8ce83e73a | ||
|   | 33eac5f7fd | ||
|   | 0025770a99 | ||
|   | d4bade7a4e | ||
|   | f9dfd7e4b7 | ||
|   | c7106b3eb7 | ||
|   | f2b6ebed7b | ||
|   | e5843470e8 | ||
|   | 4ab2d26cb8 | ||
|   | 40cd996cc0 | ||
|   | 904346bf88 | ||
|   | c42ca3e73a | ||
|   | 329be28d69 | ||
|   | 9a158f1ef0 | ||
|   | 61c7af92f2 | ||
|   | 59c88da74d | ||
|   | bce8bc203f | ||
|   | 24af69a411 | ||
|   | d7c9f2f63a | ||
|   | d39bbcfa8d | ||
|   | 86871577d9 | ||
|   | aeca33f96c | ||
|   | 825fff880e | ||
|   | 68e6b56a2a | ||
|   | 5a99bce07d | ||
|   | 4ac56b9d9f | ||
|   | b1f64d3a2a | ||
|   | e77d867068 | ||
|   | 1b27bb446f | ||
|   | ed7bfeee7a | ||
|   | 176f7ea3bb | ||
|   | 6398c8bba8 | ||
|   | c5de48b56c | ||
|   | 28dc509dde | ||
|   | 897cf5d117 | ||
|   | a3dbbcfd2a | ||
|   | 6388ac7dc1 | ||
|   | 304e24e211 | ||
|   | 6fb0ed88d6 | ||
|   | 98ca62c2d6 | ||
|   | 1ba5712f88 | ||
|   | 1a97fd7b63 | ||
|   | 32b4896107 | ||
|   | c75ece4442 | ||
|   | 016dabcf04 | ||
|   | ae8f08ee59 | ||
|   | 33ee67112f | ||
|   | e0b9d3b2c9 | ||
|   | 33e19f881e | ||
|   | dd302206ad | ||
|   | b3ebfc2b74 | ||
|   | 069b280f63 | ||
|   | 89b431f60f | ||
|   | 4e3320a679 | ||
|   | 39a72bbcd1 | ||
|   | 696ddf6f0a | ||
|   | 60d5a16b99 | ||
|   | febd598597 | ||
|   | 7747136421 | ||
|   | dd707b746f | ||
|   | ac6111aeb0 | ||
|   | c0f2bfb2c7 | ||
|   | 74552acaea | ||
|   | 5600879a1d | ||
|   | bf4580d5fd | ||
|   | 5439849246 | ||
|   | 3bda1cef92 | ||
|   | e3014dcc01 | ||
|   | 57d2732ccb | ||
|   | e6b2eb78a2 | ||
|   | 6c09ffaf46 | ||
|   | 5ce9e7a0b7 | ||
|   | 3e6dfe138a | ||
|   | 7aa95afadd | ||
|   | dc7dc9786f | ||
|   | aed6db2cb9 | ||
|   | 3a4b28d473 | ||
|   | f1474db360 | ||
|   | a8478fc8d3 | ||
|   | 849179ba27 | ||
|   | 6d1ea388cb | ||
|   | 07e3ea7f26 | ||
|   | 4afc33db8d | ||
|   | d025af9bb5 | ||
|   | f99f02bb05 | ||
|   | 92c40ce190 | ||
|   | 1eb74f94c4 | ||
|   | a28cda3653 | ||
|   | 861e1ba604 | ||
|   | 7731c34d79 | ||
|   | 14dc361433 | ||
|   | 7f59577fdd | ||
|   | b193ba8a02 | ||
|   | 53423673ca | ||
|   | 2f738c7f40 | ||
|   | aefb9196cf | ||
|   | 7292486ec3 | ||
|   | 7561a0fc83 | ||
|   | 196c8242ca | ||
|   | 424bb35877 | ||
|   | 08e0ad7b39 | ||
|   | 2ebb87f047 | ||
|   | 006b83798e | ||
|   | 293c9288b3 | ||
|   | 8f92e8be12 | ||
|   | a3e3f8ffa0 | ||
|   | 07086c9487 | ||
|   | 066811592d | ||
|   | 72a5813192 | ||
|   | 99b13f2741 | ||
|   | a15378e073 | ||
|   | 7d2abe27dd | ||
|   | 64962b0218 | ||
|   | 75dd191bdf | ||
|   | e93e3bcb82 | ||
|   | feaf8f9590 | ||
|   | 8a8829499d | ||
|   | 1e4c57fa64 | ||
|   | 29dd7192e6 | ||
|   | 705330c750 | ||
|   | 599a2c1f1a | ||
|   | 5a8649863c | ||
|   | 05f6f2497a | ||
|   | d56e8bcc8a | ||
|   | 220776de6b | ||
|   | 3da2c0f6d2 | ||
|   | ac3e356c95 | ||
|   | a96fa00f38 | ||
|   | a5e0583cd3 | ||
|   | 46480bb9a1 | ||
|   | 16c725dbc7 | ||
|   | 0fd5dda99d | ||
|   | 9d8375c29b | ||
|   | 508dbb99aa | ||
|   | 42f0588ea8 | ||
|   | 6085ca2aed | ||
|   | a8259945c4 | ||
|   | 3af5023a20 | ||
|   | 2bac074f08 | ||
|   | d098cfd8c0 | ||
|   | b4b7f6828c | ||
|   | 0d0893f2b9 | ||
|   | 2bfa57bc32 | ||
|   | b276ac7691 | ||
|   | 32ce7f19b2 | ||
|   | 819afe46ee | ||
|   | c13af84372 | ||
|   | 47c1bf9e43 | ||
|   | d95b8e0627 | ||
|   | 1e8e6057ea | ||
|   | 38f05cea46 | ||
|   | 7bf910482e | ||
|   | b8edf5bbe9 | ||
|   | 5e7a0fe73b | ||
|   | 746b80a210 | ||
|   | 764a5e4a50 | ||
|   | af0888aaf6 | ||
|   | 9c18bb3702 | ||
|   | c7cc914961 | ||
|   | c45069bfbe | ||
|   | 9a51c11074 | ||
|   | cb142cf217 | ||
|   | 7da6a9128b | ||
|   | 61d152384e | ||
|   | 0c86ccc647 | ||
|   | a92df2e007 | ||
|   | 634f7cfee4 | ||
|   | 70d56bfe3c | ||
|   | bd38ebc697 | ||
|   | b15434e749 | ||
|   | 7047e2ed72 | ||
|   | c1311c2b8f | ||
|   | 0bb5ff5d1a | ||
|   | 64dc957a41 | ||
|   | 3d3a3f9e7c | ||
|   | 8d78848a39 | ||
|   | 90412c8613 | ||
|   | 78729e76da | ||
|   | f858bb0d1f | ||
|   | 15ca80c831 | ||
|   | ec9e9f38b1 | ||
|   | 46792af733 | ||
|   | 445245ca85 | ||
|   | f96f1f3165 | ||
|   | bead90a837 | ||
|   | aaa42aa0d5 | ||
|   | 1f635608bb | ||
|   | 9c94236e6c | ||
|   | 3f9ab7cf5d | ||
|   | 63e9685470 | ||
|   | 6cd084a3b5 | ||
|   | 72c7c1d64e | ||
|   | 6ea32b8b76 | ||
|   | 1aaf86a596 | ||
|   | 6188855b67 | ||
|   | a3660127a4 | ||
|   | c09c621af7 | ||
|   | 4e430a8a16 | ||
|   | 6478e1d7e5 | ||
|   | a884ffe430 | ||
|   | c29d1f4e3a | ||
|   | 674e53f40e | ||
|   | 68857e40d6 | ||
|   | dd576194ce | ||
|   | 870c99b7e7 | ||
|   | e3f5e04cf0 | ||
|   | 0cd8c287a4 | ||
|   | eeeba1496c | ||
|   | 186b101deb | ||
|   | d2fc8b4a5f | ||
|   | 04ca9aecd1 | ||
|   | 2e48139fbf | ||
|   | 0636af6131 | ||
|   | 7352ac408b | ||
|   | c41d959ee6 | ||
|   | 430791616b | ||
|   | 00fddba672 | ||
|   | eef4b3fcfc | ||
|   | aaa1e7f9d4 | ||
|   | 37550c16f9 | ||
|   | b1f2a680bd | ||
|   | 2b56e4c1bb | ||
|   | 62f374b19e | ||
|   | 89b5680d81 | ||
|   | 0f3c330ad8 | ||
|   | 7157363ab4 | ||
|   | c5b66836a5 | ||
|   | 57e6336794 | ||
|   | 64510fe917 | ||
|   | 38dfe52559 | ||
|   | 7759d10f36 | ||
|   | 32ab3276ee | ||
|   | 74a7ee9973 | ||
|   | 0c460e80ed | ||
|   | bf51b8c07a | ||
|   | 04a6f0a1a4 | ||
|   | 1fc89eb87f | ||
|   | e336bc7c42 | ||
|   | b511486fcd | ||
|   | 3bfff57e1f | ||
|   | 628e62a966 | ||
|   | f087211566 | ||
|   | 665e16899c | ||
|   | 58987556d5 | ||
|   | 79c2af3082 | ||
|   | 8c0bfd3e0c | ||
|   | 24f127027b | ||
|   | 2b9ca12edf | ||
|   | 3b8cf5bd14 | ||
|   | c12a414b21 | ||
|   | b5bb61ee69 | ||
|   | 69f01ec2d1 | ||
|   | 4cff10af69 | ||
|   | c4e3578e4b | ||
|   | 797315044d | ||
|   | 08c128bd93 | ||
|   | 530675a1ad | ||
|   | 273e9afcc8 | ||
|   | 9c7016f560 | ||
|   | 69ba0da827 | ||
|   | 1fa2af5136 | ||
|   | cfa81b8fb0 | ||
|   | 69f7156ad9 | ||
|   | 6f964e4f06 | ||
|   | d9ca9e9869 | ||
|   | 2df6e6d9f8 | ||
|   | 379efd62aa | ||
|   | 00dd45720e | ||
|   | 54d484e136 | ||
|   | cb3d0ce2cb | ||
|   | f86432b119 | ||
|   | 2c6d32b864 | ||
|   | 3c14c524c5 | ||
|   | 8e860c1662 | ||
|   | c90acaa77a | ||
|   | b420f60a06 | ||
|   | 7291c1f565 | ||
|   | 3fa0fbb816 | ||
|   | a9d798c4d5 | ||
|   | 72f4b534c4 | ||
|   | a03100c357 | ||
|   | a7731673d0 | ||
|   | 3124a8df93 | ||
|   | c267c53017 | ||
|   | dc454bd16b | ||
|   | c6495bccbf | ||
|   | f95f19e854 | ||
|   | ca8b4e9742 | ||
|   | cd4cf989bb | ||
|   | 6015b71c4e | ||
|   | 1bfd750f3f | ||
|   | 7bdb9fba95 | ||
|   | 6927153703 | ||
|   | 6a655ca192 | ||
|   | 9f7f7925da | ||
|   | c3ef63f167 | ||
|   | 94eb132896 | ||
|   | 383641d70a | ||
|   | 963bcde476 | ||
|   | dde279ed31 | ||
|   | 89747794fe | ||
|   | 462f10f824 | ||
|   | 8834448cc1 | ||
|   | ee483aeca2 | ||
|   | fd17cd4d9c | ||
|   | 53f2c02ac7 | ||
|   | 1919352a10 | ||
|   | 9f9f9ed1b2 | ||
|   | a0d7a26e32 | ||
|   | bb1ce6cc0b | ||
|   | b5fdbe848b | ||
|   | efb8471a69 | ||
|   | 25c1b29226 | ||
|   | 2839c059b1 | ||
|   | cb9e2e8466 | ||
|   | a379a4c163 | ||
|   | b061fed981 | ||
|   | 9c480490f7 | ||
|   | 978b808f7d | ||
|   | 74be993576 | ||
|   | 4f3ec68dc7 | ||
|   | d220834f80 | ||
|   | 244e966138 | ||
|   | c262c35676 | ||
|   | ef60fdbd73 | ||
|   | b1f081f6e6 | ||
|   | 6cc066a2c5 | ||
|   | 0fd7fa7daf | ||
|   | 9258b84673 | ||
|   | fdf2517bd9 | ||
|   | cc36756aa2 | ||
|   | 1c58f291cc | ||
|   | 8ae1e657e8 | ||
|   | 7ba07c80a1 | ||
|   | fec096f153 | ||
|   | 499ffe2f8c | ||
|   | cf41ee3ac9 | ||
|   | e315927a1a | ||
|   | 03c1bcf4bd | ||
|   | 92f841aef7 | ||
|   | 9fafa68533 | ||
|   | e7257dcf2e | ||
|   | 3ebcfdda36 | ||
|   | 77bac26587 | ||
|   | d6773834f2 | ||
|   | 6f998400d9 | ||
|   | 64f48e884e | ||
|   | e146a5f132 | ||
|   | 1beda0cbb7 | ||
|   | 72b72fe8ed | ||
|   | bd9eb30ffd | ||
|   | dd18e714ff | ||
|   | d6c449e3b4 | ||
|   | 071f8d4182 | ||
|   | d83233501f | ||
|   | 419a50f817 | ||
|   | 975d23480c | ||
|   | 13211705cd | ||
|   | 9ec0b7e0c4 | ||
|   | 412510f974 | ||
|   | 683bfa60ad | ||
|   | 77172a242f | ||
|   | 46cd5f1dad | ||
|   | 2976de4808 | ||
|   | 560cd62272 | ||
|   | 0f54880277 | ||
|   | 5cd524df18 | ||
|   | 94111bbbd4 | ||
|   | df4205c10a | ||
|   | 9421b06397 | ||
|   | 09690be8de | ||
|   | ce8a321dd0 | ||
|   | 3833765ba5 | ||
|   | 4d28a59fc2 | ||
|   | a498daa0e0 | ||
|   | bd12c44d35 | ||
|   | 4c385cf896 | ||
|   | 7d4ed0b10e | ||
|   | 48d13b44c6 | ||
|   | 8b63b48627 | ||
|   | b9ac64c2cb | ||
|   | 4d2c3f0a4d | ||
|   | c156b916a4 | ||
|   | 865893fb14 | ||
|   | a60edcc6d4 | ||
|   | 20cb12db8d | ||
|   | 42aa796150 | ||
|   | 2a902738fb | ||
|   | bb5d4234e3 | ||
|   | 930781e168 | ||
|   | 1c3a99b52c | ||
|   | 5f04843e5b | ||
|   | 8c29bf5640 | ||
|   | 82306ebfba | ||
|   | 03d4b9f078 | ||
|   | 51114f07f1 | ||
|   | e19917296f | ||
|   | 8ed40acac6 | ||
|   | 38ae6ec1a2 | ||
|   | 9e24b9c7af | ||
|   | a144bb8b76 | ||
|   | 4d3fb91fb4 | ||
|   | bbfe118209 | ||
|   | e5c14674f0 | ||
|   | 6dba7608bf | ||
|   | 21423497ef | ||
|   | 01b0f1061d | ||
|   | 3d8c093145 | ||
|   | 919c97fa65 | ||
|   | 376b4d48fe | ||
|   | 118e73306d | ||
|   | 1dd69921d3 | ||
|   | 29e68b200c | ||
|   | 0b516b7162 | ||
|   | a0b3535735 | ||
|   | 5e852ab9d1 | ||
|   | f9bb5d2984 | ||
|   | ad595c3ba9 | ||
|   | 7031ff23bb | ||
|   | 9753c6bec5 | ||
|   | b16e3da12a | ||
|   | e7661d198f | ||
|   | 13c7b91133 | ||
|   | 950b0b770e | ||
|   | 15e1227ed4 | ||
|   | ddfe821bcf | ||
|   | 54866b68cd | ||
|   | 05a443adf2 | ||
|   | ebf315e6f3 | ||
|   | c44d45db86 | ||
|   | 7a2647e162 | ||
|   | 9bae9ddad9 | ||
|   | 004d7251ab | ||
|   | 33d044a862 | ||
|   | a9086e8a4b | ||
|   | 761c3c5446 | ||
|   | 66c0e26e28 | ||
|   | 7d1b715605 | ||
|   | 9f494fe423 | ||
|   | 809c809281 | ||
|   | 0580b60622 | ||
|   | 4bdb664c33 | ||
|   | 459435dca1 | ||
|   | 3fdb7808ef | ||
|   | 97ff646fc1 | ||
|   | 9801596fb3 | ||
|   | 982315573c | ||
|   | 9f96e6da28 | ||
|   | 01690ed2bc | ||
|   | 2da89708ec | ||
|   | 5c62a551c4 | ||
|   | 602a8a565c | ||
|   | c4a8446c70 | ||
|   | 456d8db35e | ||
|   | e952a7e710 | ||
|   | 682f0840e7 | ||
|   | f85ec43f24 | ||
|   | b5713887ae | 
							
								
								
									
										4
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1,5 @@ | ||||
| *.dsw -crlf | ||||
| buildconf eol=lf | ||||
| configure.ac eol=lf | ||||
| *.m4 eol=lf | ||||
| *.in eol=lf | ||||
|   | ||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -42,3 +42,6 @@ TAGS | ||||
| *~ | ||||
| aclocal.m4.bak | ||||
| CHANGES.dist | ||||
| .project | ||||
| .cproject | ||||
| .settings | ||||
|   | ||||
| @@ -1,5 +1,10 @@ | ||||
| # Google Android makefile for curl and libcurl | ||||
| # | ||||
| # This file can be used when building curl using the full Android source | ||||
| # release or the NDK. Most users do not want or need to do this; please | ||||
| # instead read the Android section in docs/INSTALL for alternate | ||||
| # methods. | ||||
| # | ||||
| # 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 versions 1.5, 2.1-2.3 | ||||
|   | ||||
| @@ -2,6 +2,8 @@ | ||||
| # Adds OPENSSL_INCLUDE_DIRS and libeay32 | ||||
| include("${CMAKE_ROOT}/Modules/FindOpenSSL.cmake") | ||||
|  | ||||
| # starting 2.8 it is better to use standard modules | ||||
| if(CMAKE_MAJOR_VERSION EQUAL "2" AND CMAKE_MINOR_VERSION LESS "8") | ||||
|   # Bill Hoffman told that libeay32 is necessary for him: | ||||
|   find_library(SSL_LIBEAY NAMES libeay32) | ||||
|  | ||||
| @@ -12,7 +14,7 @@ if(OPENSSL_FOUND) | ||||
|       set(OPENSSL_FOUND FALSE) | ||||
|     endif() | ||||
|   endif() | ||||
|  | ||||
| endif() # if (CMAKE_MAJOR_VERSION EQUAL "2" AND CMAKE_MINOR_VERSION LESS "8") | ||||
|  | ||||
| if(OPENSSL_FOUND) | ||||
|   set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR}) | ||||
|   | ||||
| @@ -1,8 +1,10 @@ | ||||
| # Locate zlib | ||||
| include("${CMAKE_ROOT}/Modules/FindZLIB.cmake") | ||||
|  | ||||
| # starting 2.8 it is better to use standard modules | ||||
| if(CMAKE_MAJOR_VERSION EQUAL "2" AND CMAKE_MINOR_VERSION LESS "8") | ||||
|   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() | ||||
| endif() | ||||
|   | ||||
| @@ -57,10 +57,6 @@ 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) | ||||
| @@ -113,22 +109,11 @@ 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_LDAPS ON) | ||||
|   set(CURL_DISABLE_TELNET ON) | ||||
|   set(CURL_DISABLE_DICT ON) | ||||
|   set(CURL_DISABLE_FILE ON) | ||||
| @@ -221,6 +206,20 @@ 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(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(NOT CURL_SPECIAL_LIBZ) | ||||
| #  CHECK_LIBRARY_EXISTS_CONCAT("z"      inflateEnd   HAVE_LIBZ) | ||||
| # ENDIF(NOT CURL_SPECIAL_LIBZ) | ||||
| @@ -387,6 +386,13 @@ if(NOT HAVE_LDAP_H) | ||||
|   set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) | ||||
| endif() | ||||
|  | ||||
| # No ldap, no ldaps. | ||||
| if(CURL_DISABLE_LDAP) | ||||
|   if(NOT CURL_DISABLE_LDAPS) | ||||
|     message(STATUS "LDAP needs to be enabled to support LDAPS") | ||||
|     set(CURL_DISABLE_LDAPS ON CACHE BOOL "" FORCE) | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| check_type_size(size_t  SIZEOF_SIZE_T) | ||||
| check_type_size(ssize_t  SIZEOF_SSIZE_T) | ||||
| @@ -426,7 +432,7 @@ if(SIZEOF_LONG EQUAL 8) | ||||
|   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) | ||||
|   set(CURL_SUFFIX_CURL_OFF_TU UL) | ||||
| endif(SIZEOF_LONG EQUAL 8) | ||||
|  | ||||
| if(SIZEOF_LONG_LONG EQUAL 8) | ||||
| @@ -436,7 +442,7 @@ if(SIZEOF_LONG_LONG EQUAL 8) | ||||
|   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) | ||||
|   set(CURL_SUFFIX_CURL_OFF_TU ULL) | ||||
| endif(SIZEOF_LONG_LONG EQUAL 8) | ||||
|  | ||||
| if(NOT CURL_TYPEOF_CURL_OFF_T) | ||||
|   | ||||
							
								
								
									
										2
									
								
								COPYING
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								COPYING
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| COPYRIGHT AND PERMISSION NOTICE | ||||
|  | ||||
| Copyright (c) 1996 - 2011, Daniel Stenberg, <daniel@haxx.se>. | ||||
| Copyright (c) 1996 - 2012, Daniel Stenberg, <daniel@haxx.se>. | ||||
|  | ||||
| All rights reserved. | ||||
|  | ||||
|   | ||||
							
								
								
									
										10
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -86,9 +86,13 @@ endif | ||||
| examples: | ||||
| 	@(cd docs/examples; $(MAKE) check) | ||||
|  | ||||
| # This is a hook to have 'make clean' also clean up the dosc and the tests | ||||
| # dir. The extra check for the Makefiles being present is necessary because | ||||
| # 'make distcheck' will make clean first in these directories _before_ it runs | ||||
| # this hook. | ||||
| clean-local: | ||||
| 	@(cd tests; $(MAKE) clean) | ||||
| 	@(cd docs; $(MAKE) clean) | ||||
| 	@(if test -f tests/Makefile; then cd tests; $(MAKE) clean; fi) | ||||
| 	@(if test -f docs/Makefile; then cd docs; $(MAKE) clean; fi) | ||||
|  | ||||
| # | ||||
| # Build source and binary rpms. For rpm-3.0 and above, the ~/.rpmmacros | ||||
|   | ||||
							
								
								
									
										127
									
								
								RELEASE-NOTES
									
									
									
									
									
								
							
							
						
						
									
										127
									
								
								RELEASE-NOTES
									
									
									
									
									
								
							| @@ -1,49 +1,51 @@ | ||||
| Curl and libcurl 7.25.0 | ||||
| Curl and libcurl 7.28.1 | ||||
|  | ||||
|  Public curl releases:         127 | ||||
|  Command line options:         151 | ||||
|  Public curl releases:         130 | ||||
|  Command line options:         152 | ||||
|  curl_easy_setopt() options:   199 | ||||
|  Public functions in libcurl:  58 | ||||
|  Known libcurl bindings:       39 | ||||
|  Contributors:                 929 | ||||
|  Contributors:                 979 | ||||
|  | ||||
| This release includes the following changes: | ||||
|  | ||||
|  o configure: add option disable --libcurl output [1] | ||||
|  o --ssl-allow-beast and CURLOPT_SSL_OPTIONS added [2] | ||||
|  o Added CURLOPT_TCP_KEEPALIVE, CURLOPT_TCP_KEEPIDLE, CURLOPT_TCP_KEEPINTVL [4] | ||||
|  o curl: use new library-side TCP_KEEPALIVE options [5] | ||||
|  o Added a new CURLOPT_MAIL_AUTH option [13] | ||||
|  o Added support for --mail-auth [14] | ||||
|  o --libcurl now also works with -F and more! [15] | ||||
|  o metalink/md5: Use CommonCrypto on Apple operating systems | ||||
|  o href_extractor: new example code extracting href elements | ||||
|  o NSS can be used for metalink hashing [13] | ||||
|  | ||||
| This release includes the following bugfixes: | ||||
|  | ||||
|  o --max-redirs: allow negative numbers as option value [3] | ||||
|  o parse_proxy: bail out on zero-length proxy names [6] | ||||
|  o configure: don't modify LD_LIBRARY_PATH for cross compiles [7] | ||||
|  o curl_easy_reset: reset the referer string [8] | ||||
|  o curl tool: don't abort glob-loop due to failures [9] | ||||
|  o CONNECT: send correct Host: with IPv6 numerical address [10] | ||||
|  o Explicitly link to the nettle/gcrypt libraries [11] | ||||
|  o more resilient connection times among IP addresses [12] | ||||
|  o winbuild: fix IPV6 and IDN options | ||||
|  o SMTP: Fixed error when using CURLOPT_CONNECT_ONLY | ||||
|  o cyassl: update to CyaSSL 2.0.x API | ||||
|  o smtp: Fixed an issue with the EOB checking | ||||
|  o pop3: Fixed drop of final CRLF in EOB checking [16] | ||||
|  o smtp: Fixed an issue with writing postdata | ||||
|  o smtp: Added support for returning SMTP response codes | ||||
|  o CONNECT: fix ipv6 address in the Request-Line [17] | ||||
|  o curl-config: only provide libraries with --libs | ||||
|  o LWIP: don't consider HAVE_ERRNO_H to be winsock [19] | ||||
|  o ssh: tunnel through HTTP proxy if requested | ||||
|  o cookies: strip off [brackets] from numerical ipv6 host names [20] | ||||
|  o libcurl docs: version corrections [18] | ||||
|  o cmake: list_spaces_append_once failure [22] | ||||
|  o resolve with c-ares: don't resolve IPv6 when not working [21] | ||||
|  o smtp: changed error code for EHLO and HELO responses | ||||
|  o parsedate: fix a numeric overflow | ||||
|  o Fix broken libmetalink-aware OpenSSL build | ||||
|  o gnutls: fix the error is fatal logic [1] | ||||
|  o darwinssl: un-broke iOS build, fix error on server disconnect | ||||
|  o asyn-ares: restore functionality with c-ares < 1.6.1 [2] | ||||
|  o tlsauthtype: deal with the string case insensitively [3] | ||||
|  o Fixed MSVC libssh2 static build | ||||
|  o evhiperfifo: fix the pointer passed to WRITEDATA [6] | ||||
|  o BUGS: fix the bug tracker URL [4] | ||||
|  o winbuild: Use machine type of development environment | ||||
|  o FTP: prevent the multi interface from blocking [5] | ||||
|  o uniformly use AM_CPPFLAGS, avoid deprecated INCLUDES | ||||
|  o httpcustomheader.c: free the headers after use | ||||
|  o fix >2000 bytes POST over NTLM-using proxy [7] | ||||
|  o redirects to URLs with fragments [8] | ||||
|  o don't send '#' fragments when using proxy [9] | ||||
|  o OpenSSL: show full issuer string [10] | ||||
|  o fix HTTP auth regression [11] | ||||
|  o CURLOPT_SSL_VERIFYHOST: stop supporting the 1 value [12] | ||||
|  o ftp: EPSV-disable fix over SOCKS [14] | ||||
|  o Digest: Add microseconds into nounce calculation [15] | ||||
|  o SCP/SFTP: improve error code used for send failures | ||||
|  o SSL: Several SSL-backend related fixes | ||||
|  o removed the notorious "additional stuff not fine" debug output | ||||
|  o OpenSSL: Disable SSL/TLS compression - avoid the "CRIME" attack | ||||
|  o FILE: Make upload-writes unbuffered | ||||
|  o custom memory callbacks failure with HTTP proxy (and more) [16] | ||||
|  o TFTP: handle resends | ||||
|  o autoconf: don't force-disable compiler debug option | ||||
|  o winbuild: Fix PDB file output [17] | ||||
|  o test2032: spurious failure caused by premature termination [18] | ||||
|  o memory leak: CURLOPT_RESOLVE with multi interface [19] | ||||
|  | ||||
| This release includes the following known bugs: | ||||
|  | ||||
| @@ -52,35 +54,34 @@ This release includes the following known bugs: | ||||
| This release would not have looked like this without help, code, reports and | ||||
| advice from friends like these: | ||||
|  | ||||
|  Colin Hogben, Alessandro Ghedini, Kamil Dudka, Rob Ward, Dave Reisner, | ||||
|  Martin Storsjo, Pierre Ynard, Pierre Joye, Yang Tse, Dan Fandrich, | ||||
|  Michael Day, Juan Barreto, Chandrakant Bagul, Steve Holme, Todd Ouska, | ||||
|  Rich Gray, John Joseph Bachir, Armel Asselin, Andrei Cipu, | ||||
|  Maxim Prohorov | ||||
|  Guenter Knauf, Alessandro Ghedini, Nick Zitzmann, Michal Kowalczyk, | ||||
|  Jeff Connelly, Oscar Norlander, Guido Berhoerster, Marc Hoersken, | ||||
|  Dave Reisner, Jan Ehrhardt, John Suprock, Alessandro Ghedini, | ||||
|  Lars Buitinck, Anton Malov, Sergei Nikulov, Patrick Monnerat, | ||||
|  Gabriel Sjoberg, Oscar Koeroo, Fabian Keil, Johnny Luong, Cristian Rodríguez, | ||||
|  Sebastian Rasmussen, Mark Snelling, Christian Vogt, Marcin Adamski, | ||||
|  Ajit Dhumale, Alex Gruz | ||||
|  | ||||
|         Thanks! (and sorry if I forgot to mention someone) | ||||
|  | ||||
| References to bug reports and discussions on issues: | ||||
|  | ||||
|  [1] = http://curl.haxx.se/mail/lib-2012-02/0009.html | ||||
|  [2] = http://curl.haxx.se/mail/lib-2012-02/0001.html | ||||
|  [3] = http://curl.haxx.se/mail/lib-2012-02/0098.html | ||||
|  [4] = http://curl.haxx.se/mail/lib-2012-01/0264.html | ||||
|  [5] = http://curl.haxx.se/mail/lib-2012-01/0263.html | ||||
|  [6] = http://curl.haxx.se/mail/lib-2012-02/0000.html | ||||
|  [7] = http://curl.haxx.se/mail/lib-2012-02/0052.html | ||||
|  [8] = http://curl.haxx.se/bug/view.cgi?id=3481551 | ||||
|  [9] = http://curl.haxx.se/bug/view.cgi?id=3481223 | ||||
|  [10] = http://curl.haxx.se/bug/view.cgi?id=3482093 | ||||
|  [11] = http://curl.haxx.se/mail/lib-2012-01/0303.html | ||||
|  [12] = http://curl.haxx.se/mail/lib-2012-01/0190.html | ||||
|  [13] = http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTMAILAUTH | ||||
|  [14] = http://curl.haxx.se/docs/manpage.html#--mail-auth | ||||
|  [15] = http://curl.haxx.se/docs/manpage.html#--libcurl | ||||
|  [16] = http://curl.haxx.se/mail/lib-2012-02/0051.html | ||||
|  [17] = http://curl.haxx.se/bug/view.cgi?id=3493129 | ||||
|  [18] = http://curl.haxx.se/bug/view.cgi?id=3494091 | ||||
|  [19] = http://curl.haxx.se/mail/lib-2012-03/0046.html | ||||
|  [20] = http://curl.haxx.se/mail/lib-2012-03/0036.html | ||||
|  [21] = http://curl.haxx.se/mail/lib-2012-03/0045.html | ||||
|  [22] = http://curl.haxx.se/bug/view.cgi?id=3494968 | ||||
|  [1] = http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=690551 | ||||
|  [2] = http://curl.haxx.se/bug/view.cgi?id=3577710 | ||||
|  [3] = http://curl.haxx.se/bug/view.cgi?id=3578418 | ||||
|  [4] = http://curl.haxx.se/bug/view.cgi?id=3582408 | ||||
|  [5] = http://curl.haxx.se/bug/view.cgi?id=3579064 | ||||
|  [6] = http://curl.haxx.se/bug/view.cgi?id=3582407 | ||||
|  [7] = http://curl.haxx.se/bug/view.cgi?id=3582321 | ||||
|  [8] = http://curl.haxx.se/bug/view.cgi?id=3581898 | ||||
|  [9] = http://curl.haxx.se/bug/view.cgi?id=3579813 | ||||
|  [10] = http://curl.haxx.se/bug/view.cgi?id=3579286 | ||||
|  [11] = http://curl.haxx.se/bug/view.cgi?id=3582718 | ||||
|  [12] = http://daniel.haxx.se/blog/2012/10/25/libcurl-claimed-to-be-dangerous/ | ||||
|  [13] = http://curl.haxx.se/bug/view.cgi?id=3578163 | ||||
|  [14] = http://curl.haxx.se/bug/view.cgi?id=3586338 | ||||
|  [15] = https://github.com/bagder/curl/pull/50 | ||||
|  [16] = http://curl.haxx.se/mail/lib-2012-11/0125.html | ||||
|  [17] = http://curl.haxx.se/bug/view.cgi?id=3586741 | ||||
|  [18] = http://curl.haxx.se/mail/lib-2012-11/0095.html | ||||
|  [19] = http://curl.haxx.se/bug/view.cgi?id=3575448 | ||||
|   | ||||
							
								
								
									
										19
									
								
								TODO-RELEASE
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								TODO-RELEASE
									
									
									
									
									
								
							| @@ -1,15 +1,14 @@ | ||||
| To be addressed in 7.24.1 | ||||
| ========================= | ||||
| To be addressed in 7.29 | ||||
| ======================= | ||||
|  | ||||
| 295 - "RTSP Authentication (#22)" https://github.com/bagder/curl/pull/22 | ||||
| 310 - a new authentication callback | ||||
|  | ||||
| 296 - "OOM leak in multi code" (by Dan Fandrich) | ||||
| 312 - custom Content-Length appears in CONNECT, solve it by offering a | ||||
|       separate option to provide headers for the CONNECT request: | ||||
|       http://curl.haxx.se/mail/lib-2012-09/0059.html | ||||
|  | ||||
| 300 - "Polling on stray socket on sequential transfers." Andrew S | ||||
|       http://curl.haxx.se/mail/lib-2011-07/0053.html | ||||
| 317 - CURLINFO_SSL_TRUST to return SSL-specific data for a darwinssl build | ||||
|  | ||||
| 308 - Revisit option --enable-threaded-resolver at least allow selection among | ||||
|       pthreads and Windows threads when building a Windows target. | ||||
|       http://curl.haxx.se/mail/lib-2012-01/0291.html | ||||
| 322 - pipelining improvements | ||||
|  | ||||
| 309 -  | ||||
| 327 -  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -228,12 +228,7 @@ AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [ | ||||
|       ]) | ||||
|     fi | ||||
|   ]) | ||||
|   case "$ac_cv_native_windows" in | ||||
|     yes) | ||||
|       AC_DEFINE_UNQUOTED(NATIVE_WINDOWS, 1, | ||||
|         [Define to 1 if you are building a native Windows target.]) | ||||
|       ;; | ||||
|   esac | ||||
|   AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$ac_cv_native_windows" = xyes) | ||||
| ]) | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -384,9 +384,6 @@ $PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4 | ||||
| echo "buildconf: running autoheader" | ||||
| ${AUTOHEADER:-autoheader} || die "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 "autoconf command failed" | ||||
|  | ||||
|   | ||||
| @@ -27,11 +27,6 @@ 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 create src\config-win32.h | ||||
| if not exist lib\config-win32.h goto end_config_win32_h | ||||
| copy /Y lib\config-win32.h src\config-win32.h | ||||
| :end_config_win32_h | ||||
|  | ||||
| REM setup c-ares git tree | ||||
| if not exist ares\buildconf.bat goto end_c_ares | ||||
| cd ares | ||||
|   | ||||
							
								
								
									
										387
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										387
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -30,12 +30,12 @@ XC_OVR_ZZ50 | ||||
| CURL_OVERRIDE_AUTOCONF | ||||
|  | ||||
| dnl configure script copyright | ||||
| AC_COPYRIGHT([Copyright (c) 1998 - 2011 Daniel Stenberg, <daniel@haxx.se> | ||||
| AC_COPYRIGHT([Copyright (c) 1998 - 2012 Daniel Stenberg, <daniel@haxx.se> | ||||
| This configure script may be copied, distributed and modified under the | ||||
| terms of the curl license; see COPYING for more details]) | ||||
|  | ||||
| AC_CONFIG_SRCDIR([lib/urldata.h]) | ||||
| AM_CONFIG_HEADER(lib/curl_config.h src/curl_config.h include/curl/curlbuild.h) | ||||
| AM_CONFIG_HEADER(lib/curl_config.h include/curl/curlbuild.h) | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
| AM_MAINTAINER_MODE | ||||
|  | ||||
| @@ -44,6 +44,7 @@ CURL_CHECK_OPTION_OPTIMIZE | ||||
| CURL_CHECK_OPTION_WARNINGS | ||||
| CURL_CHECK_OPTION_WERROR | ||||
| CURL_CHECK_OPTION_CURLDEBUG | ||||
| CURL_CHECK_OPTION_SYMBOL_HIDING | ||||
| CURL_CHECK_OPTION_ARES | ||||
|  | ||||
| CURL_CHECK_PATH_SEPARATOR_REQUIRED | ||||
| @@ -144,7 +145,7 @@ AC_SUBST(PKGADD_VENDOR) | ||||
|  | ||||
| dnl | ||||
| dnl initialize all the info variables | ||||
|     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls} )" | ||||
|     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl} )" | ||||
|     curl_ssh_msg="no      (--with-libssh2)" | ||||
|    curl_zlib_msg="no      (--with-zlib)" | ||||
|    curl_krb4_msg="no      (--with-krb4*)" | ||||
| @@ -153,7 +154,7 @@ dnl initialize all the info variables | ||||
| curl_tls_srp_msg="no      (--enable-tls-srp)" | ||||
|     curl_res_msg="default (--enable-ares / --enable-threaded-resolver)" | ||||
|    curl_ipv6_msg="no      (--enable-ipv6)" | ||||
|     curl_idn_msg="no      (--with-libidn)" | ||||
|     curl_idn_msg="no      (--with-{libidn,winidn})" | ||||
|  curl_manual_msg="no      (--enable-manual)" | ||||
| curl_libcurl_msg="enabled (--disable-libcurl-option)" | ||||
| curl_verbose_msg="enabled (--disable-verbose)" | ||||
| @@ -162,6 +163,8 @@ curl_verbose_msg="enabled (--disable-verbose)" | ||||
|   curl_ldaps_msg="no      (--enable-ldaps)" | ||||
|    curl_rtsp_msg="no      (--enable-rtsp)" | ||||
|    curl_rtmp_msg="no      (--with-librtmp)" | ||||
|   curl_mtlnk_msg="no      (--with-libmetalink)" | ||||
|  | ||||
|     init_ssl_msg=${curl_ssl_msg} | ||||
|  | ||||
| dnl | ||||
| @@ -236,21 +239,20 @@ esac | ||||
| AC_MSG_RESULT($mimpure) | ||||
| AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes) | ||||
|  | ||||
| dnl 'STATICLIB' is, in spite of its name, not generic but only for static-only | ||||
| dnl builds on Windows | ||||
| AM_CONDITIONAL(STATICLIB, false) | ||||
|  | ||||
| AC_MSG_CHECKING([if we need BUILDING_LIBCURL]) | ||||
| use_cppflag_building_libcurl="no" | ||||
| use_cppflag_curl_staticlib="no" | ||||
| CPPFLAG_CURL_STATICLIB="" | ||||
| case $host in | ||||
|   *-*-mingw*) | ||||
|     AC_DEFINE(BUILDING_LIBCURL, 1, [when building libcurl itself]) | ||||
|     AC_MSG_RESULT(yes) | ||||
|     use_cppflag_building_libcurl="yes" | ||||
|     AC_MSG_CHECKING([if we need CURL_STATICLIB]) | ||||
|     if test "X$enable_shared" = "Xno" | ||||
|     then | ||||
|       AC_DEFINE(CURL_STATICLIB, 1, [when not building a shared library]) | ||||
|       AC_MSG_RESULT(yes) | ||||
|       AM_CONDITIONAL(STATICLIB, true) | ||||
|       use_cppflag_curl_staticlib="yes" | ||||
|       CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB" | ||||
|     else | ||||
|       AC_MSG_RESULT(no) | ||||
|     fi | ||||
| @@ -259,6 +261,9 @@ case $host in | ||||
|     AC_MSG_RESULT(no) | ||||
|     ;; | ||||
| esac | ||||
| AM_CONDITIONAL(USE_CPPFLAG_BUILDING_LIBCURL, test x$use_cppflag_building_libcurl = xyes) | ||||
| AM_CONDITIONAL(USE_CPPFLAG_CURL_STATICLIB, test x$use_cppflag_curl_staticlib = xyes) | ||||
| AC_SUBST(CPPFLAG_CURL_STATICLIB) | ||||
|  | ||||
| # Determine whether all dependent libraries must be specified when linking | ||||
| if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno" | ||||
| @@ -300,6 +305,7 @@ fi | ||||
|  | ||||
| CURL_CHECK_COMPILER_HALT_ON_ERROR | ||||
| CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE | ||||
| CURL_CHECK_COMPILER_SYMBOL_HIDING | ||||
|  | ||||
| CURL_CHECK_NO_UNDEFINED | ||||
| AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes) | ||||
| @@ -696,6 +702,17 @@ then | ||||
|                ]) | ||||
| fi | ||||
|  | ||||
| if test "$HAVE_GETHOSTBYNAME" != "1" | ||||
| then | ||||
|   dnl gethostbyname in the watt lib? | ||||
|   AC_CHECK_LIB(watt, gethostbyname, | ||||
|                [HAVE_GETHOSTBYNAME="1" | ||||
|                CPPFLAGS="-I/dev/env/WATT_ROOT/inc" | ||||
|                LDFLAGS="-L/dev/env/WATT_ROOT/lib" | ||||
|                LIBS="$LIBS -lwatt" | ||||
|                ]) | ||||
| fi | ||||
|  | ||||
| dnl At least one system has been identified to require BOTH nsl and socket | ||||
| dnl libs at the same time to link properly. | ||||
| if test "$HAVE_GETHOSTBYNAME" != "1" | ||||
| @@ -905,9 +922,9 @@ if test x$CURL_DISABLE_LDAP != x1 ; then | ||||
|     AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [ | ||||
|       AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled]) | ||||
|       AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) | ||||
|       AC_SUBST(CURL_DISABLE_LDAP, [1])]) | ||||
|       AC_SUBST(CURL_DISABLE_LDAP, [1]) | ||||
|       AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) | ||||
|       AC_SUBST(CURL_DISABLE_LDAPS, [1]) | ||||
|       AC_SUBST(CURL_DISABLE_LDAPS, [1])]) | ||||
|   else | ||||
|     dnl Try to find the right ldap libraries for this system | ||||
|     CURL_CHECK_LIBS_LDAP | ||||
| @@ -932,9 +949,9 @@ if test x$CURL_DISABLE_LDAP != x1 ; then | ||||
|       AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [ | ||||
|         AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled]) | ||||
|         AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) | ||||
|         AC_SUBST(CURL_DISABLE_LDAP, [1])]) | ||||
|         AC_SUBST(CURL_DISABLE_LDAP, [1]) | ||||
|         AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) | ||||
|         AC_SUBST(CURL_DISABLE_LDAPS, [1]) | ||||
|         AC_SUBST(CURL_DISABLE_LDAPS, [1])]) | ||||
|     fi | ||||
|   fi | ||||
| fi | ||||
| @@ -1324,6 +1341,59 @@ else | ||||
|   CPPFLAGS="$save_CPPFLAGS" | ||||
| fi | ||||
|  | ||||
| dnl ------------------------------------------------- | ||||
| dnl check winssl option before other SSL libraries | ||||
| dnl ------------------------------------------------- | ||||
|  | ||||
| OPT_WINSSL=no | ||||
| AC_ARG_WITH(winssl,dnl | ||||
| AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS]) | ||||
| AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]), | ||||
|   OPT_WINSSL=$withval) | ||||
|  | ||||
| AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)]) | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|   if test "x$OPT_WINSSL" != "xno"  && | ||||
|      test "x$ac_cv_native_windows" = "xyes"; then | ||||
|     AC_MSG_RESULT(yes) | ||||
|     AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support]) | ||||
|     AC_SUBST(USE_SCHANNEL, [1]) | ||||
|     curl_ssl_msg="enabled (Windows-native)" | ||||
|     WINSSL_ENABLED=1 | ||||
|     # --with-winssl implies --enable-sspi | ||||
|     AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) | ||||
|     AC_SUBST(USE_WINDOWS_SSPI, [1]) | ||||
|     curl_sspi_msg="enabled" | ||||
|   else | ||||
|     AC_MSG_RESULT(no) | ||||
|   fi | ||||
| else | ||||
|   AC_MSG_RESULT(no) | ||||
| fi | ||||
|  | ||||
| OPT_DARWINSSL=no | ||||
| AC_ARG_WITH(darwinssl,dnl | ||||
| AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS]) | ||||
| AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]), | ||||
|   OPT_DARWINSSL=$withval) | ||||
|  | ||||
| AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS]) | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|   if test "x$OPT_DARWINSSL" != "xno" && | ||||
|      test -d "/System/Library/Frameworks/Security.framework"; then | ||||
|     AC_MSG_RESULT(yes) | ||||
|     AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support]) | ||||
|     AC_SUBST(USE_DARWINSSL, [1]) | ||||
|     curl_ssl_msg="enabled (iOS/Mac OS X-native)" | ||||
|     DARWINSSL_ENABLED=1 | ||||
|     LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security" | ||||
|   else | ||||
|     AC_MSG_RESULT(no) | ||||
|   fi | ||||
| else | ||||
|   AC_MSG_RESULT(no) | ||||
| fi | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for the presence of SSL libraries and headers | ||||
| dnl ********************************************************************** | ||||
| @@ -1337,7 +1407,7 @@ AC_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the | ||||
| AC_HELP_STRING([--without-ssl], [disable OpenSSL]), | ||||
|   OPT_SSL=$withval) | ||||
|  | ||||
| if test X"$OPT_SSL" != Xno; then | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then | ||||
|   dnl backup the pre-ssl variables | ||||
|   CLEANLDFLAGS="$LDFLAGS" | ||||
|   CLEANCPPFLAGS="$CPPFLAGS" | ||||
| @@ -1724,7 +1794,7 @@ AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to th | ||||
| AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]), | ||||
|   OPT_GNUTLS=$withval) | ||||
|  | ||||
| if test "$OPENSSL_ENABLED" != "1"; then | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|  | ||||
|   if test X"$OPT_GNUTLS" != Xno; then | ||||
|  | ||||
| @@ -1820,7 +1890,7 @@ if test "$OPENSSL_ENABLED" != "1"; then | ||||
|  | ||||
|   fi dnl GNUTLS not disabled | ||||
|  | ||||
| fi dnl OPENSSL != 1 | ||||
| fi | ||||
|  | ||||
| dnl --- | ||||
| dnl Check which crypto backend GnuTLS uses | ||||
| @@ -1877,7 +1947,7 @@ AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points t | ||||
| AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]), | ||||
|   OPT_POLARSSL=$withval) | ||||
|  | ||||
| if test "$OPENSSL_ENABLED" != "1"; then | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|  | ||||
|   if test X"$OPT_POLARSSL" != Xno; then | ||||
|  | ||||
| @@ -1945,7 +2015,7 @@ if test "$OPENSSL_ENABLED" != "1"; then | ||||
|  | ||||
|   fi dnl PolarSSL not disabled | ||||
|  | ||||
| fi dnl OPENSSL != 1 | ||||
| fi | ||||
|  | ||||
| dnl ---------------------------------------------------- | ||||
| dnl check for CyaSSL | ||||
| @@ -1961,7 +2031,7 @@ AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to th | ||||
| AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]), | ||||
|   OPT_CYASSL=$withval) | ||||
|  | ||||
| if test "$OPENSSL_ENABLED" != "1"; then | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|  | ||||
|   if test X"$OPT_CYASSL" != Xno; then | ||||
|  | ||||
| @@ -2030,7 +2100,7 @@ if test "$OPENSSL_ENABLED" != "1"; then | ||||
|  | ||||
|   fi dnl CyaSSL not disabled | ||||
|  | ||||
| fi dnl OPENSSL != 1 | ||||
| fi | ||||
|  | ||||
| dnl ---------------------------------------------------- | ||||
| dnl NSS. Only check if GnuTLS and OpenSSL are not enabled | ||||
| @@ -2044,7 +2114,7 @@ AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the inst | ||||
| AC_HELP_STRING([--without-nss], [disable NSS detection]), | ||||
|   OPT_NSS=$withval) | ||||
|  | ||||
| if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|  | ||||
|   if test X"$OPT_NSS" != Xno; then | ||||
|     if test "x$OPT_NSS" = "xyes"; then | ||||
| @@ -2079,13 +2149,6 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then | ||||
|         nssprefix=$OPT_NSS | ||||
|     fi | ||||
|  | ||||
|     dnl Check for functionPK11_CreateGenericObject | ||||
|     dnl this is needed for using the PEM PKCS#11 module | ||||
|     AC_CHECK_LIB(nss3, PK11_CreateGenericObject, | ||||
|      [ | ||||
|      AC_DEFINE(HAVE_PK11_CREATEGENERICOBJECT, 1, [if you have the function PK11_CreateGenericObject]) | ||||
|      AC_SUBST(HAVE_PK11_CREATEGENERICOBJECT, [1]) | ||||
|      ]) | ||||
|     if test -n "$addlib"; then | ||||
|  | ||||
|       CLEANLIBS="$LIBS" | ||||
| @@ -2096,7 +2159,8 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then | ||||
|          CPPFLAGS="$CPPFLAGS $addcflags" | ||||
|       fi | ||||
|  | ||||
|       AC_CHECK_LIB(nss3, NSS_Initialize, | ||||
|       dnl The function PK11_CreateGenericObject is needed to load libnsspem.so | ||||
|       AC_CHECK_LIB(nss3, PK11_CreateGenericObject, | ||||
|        [ | ||||
|        AC_DEFINE(USE_NSS, 1, [if NSS is enabled]) | ||||
|        AC_SUBST(USE_NSS, [1]) | ||||
| @@ -2112,6 +2176,14 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then | ||||
|       if test "x$USE_NSS" = "xyes"; then | ||||
|         AC_MSG_NOTICE([detected NSS version $version]) | ||||
|  | ||||
|         dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent | ||||
|         dnl collisions on NSS initialization/shutdown with other libraries | ||||
|         AC_CHECK_FUNC(NSS_InitContext, | ||||
|         [ | ||||
|           AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function]) | ||||
|           AC_SUBST(HAVE_NSS_INITCONTEXT, [1]) | ||||
|         ]) | ||||
|  | ||||
|         dnl when shared libs were found in a path that the run-time | ||||
|         dnl linker doesn't search through, we need to add it to | ||||
|         dnl LD_LIBRARY_PATH to prevent further configure tests to fail | ||||
| @@ -2127,7 +2199,7 @@ if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then | ||||
|  | ||||
|   fi dnl NSS not disabled | ||||
|  | ||||
| fi dnl OPENSSL != 1 -a GNUTLS_ENABLED != 1 | ||||
| fi dnl curl_ssl_msg = init_ssl_msg | ||||
|  | ||||
| OPT_AXTLS=off | ||||
|  | ||||
| @@ -2184,9 +2256,9 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED" = "x"; then | ||||
| if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then | ||||
|   AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.]) | ||||
|   AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss or --with-axtls to address this.]) | ||||
|   AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.]) | ||||
| else | ||||
|   # SSL is enabled, genericly | ||||
|   AC_SUBST(SSL_ENABLED) | ||||
| @@ -2199,6 +2271,93 @@ dnl ********************************************************************** | ||||
|  | ||||
| CURL_CHECK_CA_BUNDLE | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for libmetalink | ||||
| dnl ********************************************************************** | ||||
|  | ||||
| OPT_LIBMETALINK=no | ||||
|  | ||||
| AC_ARG_WITH(libmetalink,dnl | ||||
| AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root]) | ||||
| AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]), | ||||
|   OPT_LIBMETALINK=$withval) | ||||
|  | ||||
| if test X"$OPT_LIBMETALINK" != Xno; then | ||||
|  | ||||
|   addlib="" | ||||
|   addld="" | ||||
|   addcflags="" | ||||
|   version="" | ||||
|   libmetalinklib="" | ||||
|   PKGTEST="no" | ||||
|   if test "x$OPT_LIBMETALINK" = "xyes"; then | ||||
|     dnl this is with no partiular path given | ||||
|     PKGTEST="yes" | ||||
|     CURL_CHECK_PKGCONFIG(libmetalink) | ||||
|   else | ||||
|     dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path. | ||||
|     LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig" | ||||
|     AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"]) | ||||
|     if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then | ||||
|       PKGTEST="yes" | ||||
|     fi | ||||
|     if test "$PKGTEST" = "yes"; then | ||||
|       CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR]) | ||||
|     fi | ||||
|   fi | ||||
|   if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then | ||||
|     addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl | ||||
|       $PKGCONFIG --libs-only-l libmetalink` | ||||
|     addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl | ||||
|       $PKGCONFIG --libs-only-L libmetalink` | ||||
|     addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl | ||||
|       $PKGCONFIG --cflags-only-I libmetalink` | ||||
|     version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl | ||||
|       $PKGCONFIG --modversion libmetalink` | ||||
|     libmetalinklib=`echo $addld | $SED -e 's/-L//'` | ||||
|   fi | ||||
|   if test -n "$addlib"; then | ||||
|  | ||||
|     clean_CPPFLAGS="$CPPFLAGS" | ||||
|     clean_LDFLAGS="$LDFLAGS" | ||||
|     clean_LIBS="$LIBS" | ||||
|     CPPFLAGS="$addcflags $clean_CPPFLAGS" | ||||
|     LDFLAGS="$addld $clean_LDFLAGS" | ||||
|     LIBS="$addlib $clean_LIBS" | ||||
|     AC_MSG_CHECKING([if libmetalink is recent enough]) | ||||
|     AC_LINK_IFELSE([ | ||||
|       AC_LANG_PROGRAM([[ | ||||
| #       include <metalink/metalink.h> | ||||
|       ]],[[ | ||||
|         if(0 != metalink_strerror(0)) /* added in 0.1.0 */ | ||||
|           return 1; | ||||
|       ]]) | ||||
|     ],[ | ||||
|       AC_MSG_RESULT([yes ($version)]) | ||||
|       want_metalink="yes" | ||||
|     ],[ | ||||
|       AC_MSG_RESULT([no ($version)]) | ||||
|       AC_MSG_NOTICE([libmetalink library defective or too old]) | ||||
|       want_metalink="no" | ||||
|     ]) | ||||
|     CPPFLAGS="$clean_CPPFLAGS" | ||||
|     LDFLAGS="$clean_LDFLAGS" | ||||
|     LIBS="$clean_LIBS" | ||||
|     if test "$want_metalink" = "yes"; then | ||||
|       dnl finally libmetalink will be used | ||||
|       AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support]) | ||||
|       LIBMETALINK_LIBS=$addlib | ||||
|       LIBMETALINK_LDFLAGS=$addld | ||||
|       LIBMETALINK_CFLAGS=$addcflags | ||||
|       AC_SUBST([LIBMETALINK_LIBS]) | ||||
|       AC_SUBST([LIBMETALINK_LDFLAGS]) | ||||
|       AC_SUBST([LIBMETALINK_CFLAGS]) | ||||
|       curl_mtlnk_msg="enabled" | ||||
|     fi | ||||
|  | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for the presence of LIBSSH2 libraries and headers | ||||
| dnl ********************************************************************** | ||||
| @@ -2373,25 +2532,20 @@ dnl ********************************************************************** | ||||
| dnl Check for linker switch for versioned symbols | ||||
| dnl ********************************************************************** | ||||
|  | ||||
| AC_MSG_CHECKING([if libraries can be versioned]) | ||||
| GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` | ||||
| if test -z "$GLD"; then | ||||
| versioned_symbols_flavour= | ||||
|     AC_MSG_RESULT(no) | ||||
|     AC_MSG_WARN(*** | ||||
| *** You need an ld version supporting the --version-script option. | ||||
| ) | ||||
| else | ||||
|     AC_MSG_RESULT(yes) | ||||
|  | ||||
| AC_MSG_CHECKING([whether versioned symbols are wanted]) | ||||
| versioned_symbols_flavour= | ||||
|  | ||||
| AC_ARG_ENABLE(versioned-symbols, | ||||
| AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library]) | ||||
| AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]), | ||||
| [ case "$enableval" in | ||||
|   yes) AC_MSG_RESULT(yes) | ||||
|     AC_MSG_CHECKING([if libraries can be versioned]) | ||||
|     GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` | ||||
|     if test -z "$GLD"; then | ||||
|         AC_MSG_RESULT(no) | ||||
|         AC_MSG_WARN([You need an ld version supporting the --version-script option]) | ||||
|     else | ||||
|         AC_MSG_RESULT(yes) | ||||
|         if test "x$OPENSSL_ENABLED" = "x1"; then | ||||
|           versioned_symbols_flavour="OPENSSL_" | ||||
|         elif test "x$GNUTLS_ENABLED" == "x1"; then | ||||
| @@ -2404,10 +2558,15 @@ AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shar | ||||
|           versioned_symbols_flavour="CYASSL_" | ||||
|         elif test "x$AXTLS_ENABLED" == "x1"; then | ||||
|           versioned_symbols_flavour="AXTLS_" | ||||
|         elif test "x$WINSSL_ENABLED" == "x1"; then | ||||
|           versioned_symbols_flavour="WINSSL_" | ||||
|         elif test "x$DARWINSSL_ENABLED" == "x1"; then | ||||
|           versioned_symbols_flavour="DARWINSSL_" | ||||
|         else | ||||
|           versioned_symbols_flavour="" | ||||
|         fi | ||||
|         versioned_symbols="yes" | ||||
|     fi | ||||
|     ;; | ||||
|  | ||||
|   *)   AC_MSG_RESULT(no) | ||||
| @@ -2417,11 +2576,82 @@ AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shar | ||||
| AC_MSG_RESULT(no) | ||||
| ] | ||||
| ) | ||||
| fi | ||||
|  | ||||
| AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"]) | ||||
| AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes") | ||||
|  | ||||
| dnl ------------------------------------------------- | ||||
| dnl check winidn option before other IDN libraries | ||||
| dnl ------------------------------------------------- | ||||
|  | ||||
| AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)]) | ||||
| OPT_WINIDN="default" | ||||
| AC_ARG_WITH(winidn, | ||||
| AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN]) | ||||
| AC_HELP_STRING([--without-winidn], [disable Windows native IDN]), | ||||
|   OPT_WINIDN=$withval) | ||||
| case "$OPT_WINIDN" in | ||||
|   no|default) | ||||
|     dnl --without-winidn option used or configure option not specified | ||||
|     want_winidn="no" | ||||
|     AC_MSG_RESULT([no]) | ||||
|     ;; | ||||
|   yes) | ||||
|     dnl --with-winidn option used without path | ||||
|     want_winidn="yes" | ||||
|     want_winidn_path="default" | ||||
|     AC_MSG_RESULT([yes]) | ||||
|     ;; | ||||
|   *) | ||||
|     dnl --with-winidn option used with path | ||||
|     want_winidn="yes" | ||||
|     want_winidn_path="$withval" | ||||
|     AC_MSG_RESULT([yes ($withval)]) | ||||
|     ;; | ||||
| esac | ||||
|  | ||||
| if test "$want_winidn" = "yes"; then | ||||
|   dnl winidn library support has been requested | ||||
|   clean_CPPFLAGS="$CPPFLAGS" | ||||
|   clean_LDFLAGS="$LDFLAGS" | ||||
|   clean_LIBS="$LIBS" | ||||
|   WINIDN_LIBS="-lnormaliz" | ||||
|   # | ||||
|   if test "$want_winidn_path" != "default"; then | ||||
|     dnl path has been specified | ||||
|     dnl pkg-config not available or provides no info | ||||
|     WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" | ||||
|     WINIDN_CPPFLAGS="-I$want_winidn_path/include" | ||||
|     WINIDN_DIR="$want_winidn_path/lib$libsuff" | ||||
|   fi | ||||
|   # | ||||
|   CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS" | ||||
|   LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS" | ||||
|   LIBS="$WINIDN_LIBS $LIBS" | ||||
|   # | ||||
|   AC_MSG_CHECKING([if IdnToUnicode can be linked]) | ||||
|   AC_LINK_IFELSE([ | ||||
|     AC_LANG_FUNC_LINK_TRY([IdnToUnicode]) | ||||
|   ],[ | ||||
|     AC_MSG_RESULT([yes]) | ||||
|     tst_links_winidn="yes" | ||||
|   ],[ | ||||
|     AC_MSG_RESULT([no]) | ||||
|     tst_links_winidn="no" | ||||
|   ]) | ||||
|   # | ||||
|   if test "$tst_links_winidn" = "yes"; then | ||||
|     AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).]) | ||||
|     AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.]) | ||||
|     AC_SUBST([IDN_ENABLED], [1]) | ||||
|     curl_idn_msg="enabled (Windows-native)" | ||||
|   else | ||||
|     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) | ||||
|     CPPFLAGS="$clean_CPPFLAGS" | ||||
|     LDFLAGS="$clean_LDFLAGS" | ||||
|     LIBS="$clean_LIBS" | ||||
|   fi | ||||
| fi | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for the presence of IDN libraries and headers | ||||
| @@ -2844,10 +3074,6 @@ if test "$ipv6" = "yes"; then | ||||
|   CURL_CHECK_NI_WITHSCOPEID | ||||
| fi | ||||
|  | ||||
| dnl ************************************************************ | ||||
| dnl enable non-blocking communications | ||||
| dnl | ||||
| CURL_CHECK_OPTION_NONBLOCKING | ||||
| CURL_CHECK_NONBLOCKING_SOCKET | ||||
|  | ||||
| dnl ************************************************************ | ||||
| @@ -2976,10 +3202,20 @@ AC_HELP_STRING([--disable-sspi],[Disable SSPI]), | ||||
|        fi | ||||
|        ;; | ||||
|   *) | ||||
|        if test "x$WINSSL_ENABLED" = "x1"; then | ||||
|          # --with-winssl implies --enable-sspi | ||||
|          AC_MSG_RESULT(yes) | ||||
|        else | ||||
|          AC_MSG_RESULT(no) | ||||
|        fi | ||||
|        ;; | ||||
|   esac ], | ||||
|        if test "x$WINSSL_ENABLED" = "x1"; then | ||||
|          # --with-winssl implies --enable-sspi | ||||
|          AC_MSG_RESULT(yes) | ||||
|        else | ||||
|          AC_MSG_RESULT(no) | ||||
|        fi | ||||
| ) | ||||
|  | ||||
| dnl ************************************************************ | ||||
| @@ -3050,48 +3286,9 @@ AC_HELP_STRING([--disable-cookies],[Disable cookies support]), | ||||
| ) | ||||
|  | ||||
| dnl ************************************************************ | ||||
| dnl Enable hiding of internal symbols in library to reduce its size and | ||||
| dnl speed dynamic linking of applications.  This currently is only supported | ||||
| dnl on gcc >= 4.0 and SunPro C. | ||||
| dnl hiding of library internal symbols | ||||
| dnl | ||||
| AC_MSG_CHECKING([whether to enable hidden symbols in the library]) | ||||
| AC_ARG_ENABLE(hidden-symbols, | ||||
| AC_HELP_STRING([--enable-hidden-symbols],[Hide internal symbols in library]) | ||||
| AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibility in library]), | ||||
| [ case "$enableval" in | ||||
|   no) | ||||
|        AC_MSG_RESULT(no) | ||||
|        ;; | ||||
|   *) | ||||
|        AC_MSG_CHECKING([whether $CC supports it]) | ||||
|        if test "$GCC" = yes ; then | ||||
|          if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null || | ||||
|            dnl clang always supports -fvisibility= but it doesn't show up | ||||
|            dnl under --help. | ||||
|            test "$compiler_id" = "CLANG"; then | ||||
|            AC_MSG_RESULT(yes) | ||||
|            AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols]) | ||||
|            AC_DEFINE(CURL_EXTERN_SYMBOL, [__attribute__ ((visibility ("default")))], [to make a symbol visible]) | ||||
|            CFLAGS="$CFLAGS -fvisibility=hidden" | ||||
|          else | ||||
|             AC_MSG_RESULT(no) | ||||
|           fi | ||||
|  | ||||
|        else | ||||
|          dnl Test for SunPro cc | ||||
|          if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then | ||||
|            AC_MSG_RESULT(yes) | ||||
|            AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols]) | ||||
|            AC_DEFINE(CURL_EXTERN_SYMBOL, [__global], [to make a symbol visible]) | ||||
|            CFLAGS="$CFLAGS -xldscope=hidden" | ||||
|          else | ||||
|            AC_MSG_RESULT(no) | ||||
|          fi | ||||
|        fi | ||||
|        ;; | ||||
|   esac ], | ||||
|        AC_MSG_RESULT(no) | ||||
| ) | ||||
| CURL_CONFIGURE_SYMBOL_HIDING | ||||
|  | ||||
| dnl ************************************************************ | ||||
| dnl enforce SONAME bump | ||||
| @@ -3149,7 +3346,7 @@ AC_SUBST(ENABLE_SHARED) | ||||
|  | ||||
| dnl | ||||
| dnl For keeping supported features and protocols also in pkg-config file | ||||
| dnl since it is more cross-compile frient than curl-config | ||||
| dnl since it is more cross-compile friendly than curl-config | ||||
| dnl | ||||
|  | ||||
| if test "x$USE_SSLEAY" = "x1"; then | ||||
| @@ -3177,7 +3374,8 @@ if test "x$USE_WINDOWS_SSPI" = "x1"; then | ||||
| fi | ||||
| if test "x$CURL_DISABLE_HTTP" != "x1"; then | ||||
|   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \ | ||||
|       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1"; then | ||||
|       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \ | ||||
|       -o "x$DARWINSSL_ENABLED" = "x1"; then | ||||
|     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" | ||||
|     if test "x$NTLM_WB_ENABLED" = "x1"; then | ||||
|       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB" | ||||
| @@ -3346,6 +3544,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl: | ||||
|   LDAPS support:    ${curl_ldaps_msg} | ||||
|   RTSP support:     ${curl_rtsp_msg} | ||||
|   RTMP support:     ${curl_rtmp_msg} | ||||
|   metalink support: ${curl_mtlnk_msg} | ||||
|   Protocols:        ${SUPPORT_PROTOCOLS} | ||||
| ]) | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 2001 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 2001 - 2012, 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 | ||||
| @@ -24,6 +24,7 @@ | ||||
| prefix=@prefix@ | ||||
| exec_prefix=@exec_prefix@ | ||||
| includedir=@includedir@ | ||||
| cppflag_curl_staticlib=@CPPFLAG_CURL_STATICLIB@ | ||||
|  | ||||
| usage() | ||||
| { | ||||
| @@ -128,10 +129,15 @@ while test $# -gt 0; do | ||||
| 	;; | ||||
|  | ||||
|     --cflags) | ||||
|        	if test "X@includedir@" = "X/usr/include"; then | ||||
|           echo "" | ||||
|         if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then | ||||
|           CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB " | ||||
|         else | ||||
|           echo "-I@includedir@" | ||||
|           CPPFLAG_CURL_STATICLIB="" | ||||
|         fi | ||||
|        	if test "X@includedir@" = "X/usr/include"; then | ||||
|           echo "$CPPFLAG_CURL_STATICLIB" | ||||
|         else | ||||
|           echo "${CPPFLAG_CURL_STATICLIB}-I@includedir@" | ||||
|         fi | ||||
|        	;; | ||||
|  | ||||
|   | ||||
| @@ -35,9 +35,11 @@ BUGS | ||||
|   have a go at a solution. You can optionally also post your bug/problem at | ||||
|   curl's bug tracking system over at | ||||
|  | ||||
|         http://sourceforge.net/bugs/?group_id=976 | ||||
|         http://sourceforge.net/tracker/?group_id=976&atid=100976 | ||||
|  | ||||
|   (but please read the sections below first before doing that) | ||||
|   Please read the rest of this document below first before doing that! Also, | ||||
|   you need to login to your sourceforge account before being able to submit a | ||||
|   bug report (necessary evil done to avoid spam). | ||||
|  | ||||
|   If you feel you need to ask around first, find a suitable mailing list and | ||||
|   post there. The lists are available on http://curl.haxx.se/mail/ | ||||
| @@ -91,7 +93,7 @@ BUGS | ||||
|   your problem and to work on a fix (if we agree it truly is a problem). | ||||
|  | ||||
|   Lots of problems that appear to be libcurl problems are actually just abuses | ||||
|   of the libcurl API or other malfunctions in your applications. It is adviced | ||||
|   of the libcurl API or other malfunctions in your applications. It is advised | ||||
|   that you run your problematic program using a memory debug tool like | ||||
|   valgrind or similar before you post memory-related or "crashing" problems to | ||||
|   us. | ||||
|   | ||||
| @@ -279,7 +279,7 @@ | ||||
|  | ||||
| 3.6 Please don't send pull requests | ||||
|  | ||||
|  With git (and expecially github) it is easy and tempting to send a pull | ||||
|  With git (and especially github) it is easy and tempting to send a pull | ||||
|  request to one or more people in the curl project to have changes merged this | ||||
|  way instead of mailing patches to the curl-library mailing list. | ||||
|  | ||||
| @@ -294,7 +294,7 @@ | ||||
|  | ||||
|  - Commit messages can be tweaked and changed if merged locally instead of | ||||
|    using github. Merges directly on github requires the changes to be perfect | ||||
|    already, which they seldomly are. | ||||
|    already, which they seldom are. | ||||
|  | ||||
|  - Merges on github prevents rebases and even enforces --no-ff which is a git | ||||
|    style we don't otherwise use in the project | ||||
|   | ||||
							
								
								
									
										59
									
								
								docs/FAQ
									
									
									
									
									
								
							
							
						
						
									
										59
									
								
								docs/FAQ
									
									
									
									
									
								
							| @@ -1,4 +1,3 @@ | ||||
| Updated: December 7, 2011 (http://curl.haxx.se/docs/faq.html) | ||||
|                                   _   _ ____  _ | ||||
|                               ___| | | |  _ \| | | ||||
|                              / __| | | | |_) | | | ||||
| @@ -97,6 +96,7 @@ FAQ | ||||
|   5.13 How do I stop an ongoing transfer? | ||||
|   5.14 Using C++ non-static functions for callbacks? | ||||
|   5.15 How do I get an FTP directory listing? | ||||
|   5.16 I want a different time-out! | ||||
|  | ||||
|  6. License Issues | ||||
|   6.1 I have a GPL program, can I use the libcurl library? | ||||
| @@ -138,7 +138,7 @@ FAQ | ||||
|  | ||||
|     libcurl is highly portable, it builds and works identically on numerous | ||||
|     platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, | ||||
|     IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac | ||||
|     IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOS, Mac | ||||
|     OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS, Symbian, OSF, | ||||
|     Android, Minix, IBM TPF and more... | ||||
|  | ||||
| @@ -306,41 +306,10 @@ FAQ | ||||
|   We don't know how many users that downloaded or installed curl and then | ||||
|   never use it. | ||||
|  | ||||
|   Some facts to use as input to the math: | ||||
|   In May 2012 Daniel did a counting game and came up with a number that may | ||||
|   be completely wrong or somewhat accurate. 300 million! | ||||
|  | ||||
|   curl packages are downloaded from the curl.haxx.se and mirrors over a | ||||
|   million times per year. curl is installed by default with most Linux | ||||
|   distributions. curl is installed by default with Mac OS X. curl and libcurl | ||||
|   as used by numerous applications that include libcurl binaries in their | ||||
|   distribution packages (like Adobe Acrobat Reader and Google Earth). | ||||
|  | ||||
|   More than a hundred known named companies use curl in commercial | ||||
|   environments and products and more than a hundred known named open source | ||||
|   projects depend on (lib)curl. | ||||
|  | ||||
|   In a poll on the curl web site mid-2005, more than 50% of the 300+ answers | ||||
|   estimated a user base of one million users or more. | ||||
|  | ||||
|   In March 2005, the "Linux Counter project" estimated a total Linux user base | ||||
|   of some 29 millions, while Netcraft detected some 4 million "active" Linux | ||||
|   based web servers. A guess is that a fair amount of these Linux | ||||
|   installations have curl installed. | ||||
|  | ||||
|   The Debian project maintains statistics on packages installed by people | ||||
|   who have voluntarily run their package counting application.  In mid-2010, | ||||
|   libcurl3 was installed on over 55000 such systems (62% of reporting systems) | ||||
|   and was one of the 320 most popular installed packages (out of about 107000 | ||||
|   possible packages). | ||||
|  | ||||
|   All this taken together, there is no doubt that there are millions of | ||||
|   (lib)curl users. | ||||
|  | ||||
|   http://curl.haxx.se/docs/companies.html | ||||
|   http://curl.haxx.se/docs/programs.html | ||||
|   http://curl.haxx.se/libcurl/using/apps.html | ||||
|   http://counter.li.org/estimates.php | ||||
|   http://news.netcraft.com/archives/2005/03/14/fedora_makes_rapid_progress.html | ||||
|   http://qa.debian.org/popcon.php?package=curl | ||||
|   See http://daniel.haxx.se/blog/2012/05/16/300m-users/ | ||||
|  | ||||
|   1.11 Why don't you update ca-bundle.crt | ||||
|  | ||||
| @@ -838,7 +807,7 @@ FAQ | ||||
|  | ||||
|     4.5.3 "403 Forbidden" | ||||
|  | ||||
|     The server understood the request, but is refusing to fulfill it. | ||||
|     The server understood the request, but is refusing to fulfil it. | ||||
|     Authorization will not help and the request SHOULD NOT be repeated. | ||||
|  | ||||
|     4.5.4 "404 Not Found" | ||||
| @@ -1325,6 +1294,22 @@ FAQ | ||||
|   libcurl since 7.21.0 also provide the ability to specify a wildcard to | ||||
|   download multiple files from one FTP directory. | ||||
|  | ||||
|   5.16 I want a different time-out! | ||||
|  | ||||
|   Time and time again users realize that CURLOPT_TIMEOUT and | ||||
|   CURLOPT_CONNECTIMEOUT are not sufficiently advanced or flexible to cover all | ||||
|   the various use cases and scenarios applications end up with. | ||||
|  | ||||
|   libcurl offers many more ways to time-out operations. A common alternative | ||||
|   is to use the CURLOPT_LOW_SPEED_LIMIT and CURLOPT_LOW_SPEED_TIME options to | ||||
|   specify the lowest possible speed to accept before to consider the transfer | ||||
|   timed out. | ||||
|  | ||||
|   The most flexible way is by writing your own time-out logic and using | ||||
|   CURLOPT_PROGRESSFUNCTION (perhaps in combination with other callbacks) and | ||||
|   use that to figure out exactly when the right condition is met when the | ||||
|   transfer should get stopped. | ||||
|  | ||||
|  | ||||
| 6. License Issues | ||||
|  | ||||
|   | ||||
| @@ -26,12 +26,12 @@ libcurl supports | ||||
|  - compiles on win32 (reported builds on 40+ operating systems) | ||||
|  - selectable network interface for outgoing traffic | ||||
|  - IPv6 support on unix and Windows | ||||
|  - persistant connections | ||||
|  - persistent 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) | ||||
|  - replaceable memory functions (malloc, free, realloc, etc) | ||||
|  - asynchronous name resolving (*6) | ||||
|  - both a push and a pull style interface | ||||
|  | ||||
| @@ -125,7 +125,7 @@ FILE | ||||
| FOOTNOTES | ||||
| ========= | ||||
|  | ||||
|   *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS or PolarSSL | ||||
|   *1 = requires OpenSSL, GnuTLS, NSS, yassl, axTLS, PolarSSL or schannel | ||||
|   *2 = requires OpenLDAP | ||||
|   *3 = requires a GSSAPI-compliant library, such as Heimdal or similar. | ||||
|   *4 = requires FBopenssl | ||||
|   | ||||
							
								
								
									
										123
									
								
								docs/HTTP-COOKIES
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										123
									
								
								docs/HTTP-COOKIES
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,123 @@ | ||||
| Updated: July 3, 2012 (http://curl.haxx.se/docs/http-cookies.html) | ||||
|                                   _   _ ____  _ | ||||
|                               ___| | | |  _ \| | | ||||
|                              / __| | | | |_) | | | ||||
|                             | (__| |_| |  _ <| |___ | ||||
|                              \___|\___/|_| \_\_____| | ||||
|  | ||||
|  | ||||
| HTTP Cookies | ||||
|  | ||||
|  1. HTTP Cookies | ||||
|  1.1 Cookie overview | ||||
|  1.2 Cookies saved to disk | ||||
|  1.3 Cookies with curl the command line tool | ||||
|  1.4 Cookies with libcurl | ||||
|  1.5 Cookies with javascript | ||||
|  | ||||
| ============================================================================== | ||||
|  | ||||
| 1. HTTP Cookies | ||||
|  | ||||
|   1.1 Cookie overview | ||||
|  | ||||
|   HTTP cookies are pieces of 'name=contents' snippets that a server tells the | ||||
|   client to hold and then the client sends back those the server on subsequent | ||||
|   requests to the same domains/paths for which the cookies were set. | ||||
|  | ||||
|   Cookies are either "session cookies" which typically are forgotten when the | ||||
|   session is over which is often translated to equal when browser quits, or | ||||
|   the cookies aren't session cookies they have expiration dates after which | ||||
|   the client will throw them away. | ||||
|  | ||||
|   Cookies are set to the client with the Set-Cookie: header and are sent to | ||||
|   servers with the Cookie: header. | ||||
|  | ||||
|   For a very long time, the only spec explaining how to use cookies was the | ||||
|   original Netscape spec from 1994: http://curl.haxx.se/rfc/cookie_spec.html | ||||
|  | ||||
|   In 2011, RFC6265 (http://www.ietf.org/rfc/rfc6265.txt) was finally published | ||||
|   and details how cookies work within HTTP. | ||||
|  | ||||
|   1.2 Cookies saved to disk | ||||
|  | ||||
|   Netscape once created a file format for storing cookies on disk so that they | ||||
|   would survive browser restarts. curl adopted that file format to allow | ||||
|   sharing the cookies with browsers, only to see browsers move away from that | ||||
|   format. Modern browsers no longer use it, while curl still does. | ||||
|  | ||||
|   The netscape cookie file format stores one cookie per physical line in the | ||||
|   file with a bunch of associated meta data, each field separated with | ||||
|   TAB. That file is called the cookiejar in curl terminology. | ||||
|  | ||||
|   When libcurl saves a cookiejar, it creates a file header of its own in which | ||||
|   there is a URL mention that will link to the web version of this document. | ||||
|  | ||||
|   1.3 Cookies with curl the command line tool | ||||
|  | ||||
|   curl has a full cookie "engine" built in. If you just activate it, you can | ||||
|   have curl receive and send cookies exactly as mandated in the specs. | ||||
|  | ||||
|   Command line options: | ||||
|  | ||||
|   -b, --cookie | ||||
|  | ||||
|     tell curl a file to read cookies from and start the cookie engine, or if | ||||
|     it isn't a file it will pass on the given string. -b name=var works and so | ||||
|     does -b cookiefile. | ||||
|  | ||||
|   -j, --junk-session-cookies | ||||
|  | ||||
|     when used in combination with -b, it will skip all "session cookies" on | ||||
|     load so as to appear to start a new cookie session. | ||||
|  | ||||
|   -c, --cookie-jar | ||||
|  | ||||
|     tell curl to start the cookie engine and write cookies to the given file | ||||
|     after the request(s) | ||||
|  | ||||
|   1.4 Cookies with libcurl | ||||
|  | ||||
|   libcurl offers several ways to enable and interface the cookie engine. These | ||||
|   options are the ones provided by the native API. libcurl bindings may offer | ||||
|   access to them using other means. | ||||
|  | ||||
|   CURLOPT_COOKIE | ||||
|  | ||||
|     Is used when you want to specify the exact contents of a cookie header to | ||||
|     send to the server. | ||||
|  | ||||
|   CURLOPT_COOKIEFILE | ||||
|  | ||||
|     Tell libcurl to activate the cookie engine, and to read the initial set of | ||||
|     cookies from the given file. Read-only. | ||||
|  | ||||
|   CURLOPT_COOKIEJAR | ||||
|  | ||||
|     Tell libcurl to activate the cookie engine, and when the easy handle is | ||||
|     closed save all known cookies to the given cookiejar file. Write-only. | ||||
|  | ||||
|   CURLOPT_COOKIELIST | ||||
|  | ||||
|     Provide detailed information about a single cookie to add to the internal | ||||
|     storage of cookies. Pass in the cookie as a HTTP header with all the | ||||
|     details set, or pass in a line from a netscape cookie file. This option | ||||
|     can also be used to flush the cookies etc. | ||||
|      | ||||
|   CURLINFO_COOKIELIST | ||||
|  | ||||
|     Extract cookie information from the internal cookie storage as a linked | ||||
|     list. | ||||
|  | ||||
|   1.5 Cookies with javascript | ||||
|  | ||||
|   These days a lot of the web is built up by javascript. The webbrowser loads | ||||
|   complete programs that render the page you see. These javascript programs | ||||
|   can also set and access cookies. | ||||
|  | ||||
|   Since curl and libcurl are plain HTTP clients without any knowledge of or | ||||
|   capability to handle javascript, such cookies will not be detected or used. | ||||
|  | ||||
|   Often, if you want to mimic what a browser does on such web sites, you can | ||||
|   record web browser HTTP traffic when using such a site and then repeat the | ||||
|   cookie operations using curl or libcurl. | ||||
							
								
								
									
										70
									
								
								docs/INSTALL
									
									
									
									
									
								
							
							
						
						
									
										70
									
								
								docs/INSTALL
									
									
									
									
									
								
							| @@ -157,6 +157,9 @@ UNIX | ||||
|      To get support for SCP and SFTP, build with --with-libssh2 and have | ||||
|      libssh2 0.16 or later installed. | ||||
|  | ||||
|      To get Metalink support, build with --with-libmetalink and have the | ||||
|      libmetalink packages installed. | ||||
|  | ||||
|    SPECIAL CASES | ||||
|    ------------- | ||||
|    Some versions of uClibc require configuring with CPPFLAGS=-D_GNU_SOURCE=1 | ||||
| @@ -197,6 +200,9 @@ Win32 | ||||
|    first to rebuild every single library your app uses as well as your | ||||
|    app using the debug multithreaded dynamic C runtime. | ||||
|  | ||||
|    If you get linkage errors read section 5.7 of the FAQ document. | ||||
|  | ||||
|  | ||||
|    MingW32 | ||||
|    ------- | ||||
|  | ||||
| @@ -217,9 +223,9 @@ Win32 | ||||
|    adjust as necessary. It is also possible to override these paths with | ||||
|    environment variables, for example: | ||||
|  | ||||
|      set ZLIB_PATH=c:\zlib-1.2.5 | ||||
|      set OPENSSL_PATH=c:\openssl-0.9.8r | ||||
|      set LIBSSH2_PATH=c:\libssh2-1.2.8 | ||||
|      set ZLIB_PATH=c:\zlib-1.2.7 | ||||
|      set OPENSSL_PATH=c:\openssl-0.9.8x | ||||
|      set LIBSSH2_PATH=c:\libssh2-1.4.2 | ||||
|  | ||||
|    ATTENTION: if you want to build with libssh2 support you have to use latest | ||||
|    version 0.17 - previous versions will NOT work with 7.17.0 and later! | ||||
| @@ -320,7 +326,7 @@ Win32 | ||||
|    documentation on how to compile zlib. Define the ZLIB_PATH environment | ||||
|    variable to the location of zlib.h and zlib.lib, for example: | ||||
|  | ||||
|      set ZLIB_PATH=c:\zlib-1.2.5 | ||||
|      set ZLIB_PATH=c:\zlib-1.2.7 | ||||
|  | ||||
|    Then run 'nmake vc-zlib' in curl's root directory. | ||||
|  | ||||
| @@ -334,7 +340,7 @@ Win32 | ||||
|    Before running nmake define the OPENSSL_PATH environment variable with | ||||
|    the root/base directory of OpenSSL, for example: | ||||
|  | ||||
|      set OPENSSL_PATH=c:\openssl-0.9.8q | ||||
|      set OPENSSL_PATH=c:\openssl-0.9.8x | ||||
|  | ||||
|    Then run 'nmake vc-ssl' or 'nmake vc-ssl-dll' in curl's root | ||||
|    directory.  'nmake vc-ssl' will create a libcurl static and dynamic | ||||
| @@ -540,7 +546,7 @@ VMS | ||||
|    Curl seems to work with FTP & HTTP other protocols are not tested.  (the | ||||
|    perl http/ftp testing server supplied as testing too cannot work on VMS | ||||
|    because vms has no concept of fork(). [ I tried to give it a whack, but | ||||
|    thats of no use. | ||||
|    that's of no use. | ||||
|  | ||||
|    SSL stuff has not been ported. | ||||
|  | ||||
| @@ -673,7 +679,7 @@ NetWare | ||||
|      you can find precompiled packages at: | ||||
|      http://www.gknw.net/development/ossl/netware/ | ||||
|      for CLIB-based builds OpenSSL 0.9.8h or later is required  - earlier versions | ||||
|      dont support buildunf with CLIB BSD sockets. | ||||
|      don't support building with CLIB BSD sockets. | ||||
|    - optional SSH2 sources (version 0.17 or later); | ||||
|  | ||||
|    Set a search path to your compiler, linker and tools; on Linux make | ||||
| @@ -840,7 +846,44 @@ VxWorks | ||||
|  | ||||
| Android | ||||
| ======= | ||||
|    See the build notes in the Android.mk file. | ||||
|    Method using the static makefile: | ||||
|       - see the build notes in the Android.mk file. | ||||
|  | ||||
|    Method using a configure cross-compile (tested with Android NDK r7c, r8): | ||||
|       - prepare the toolchain of the Android NDK for standalone use; this can | ||||
|         be done by invoking the script: | ||||
|         ./build/tools/make-standalone-toolchain.sh | ||||
|         which creates a usual cross-compile toolchain. Lets assume that you put | ||||
|         this toolchain below /opt then invoke configure with something like: | ||||
|         export PATH=/opt/arm-linux-androideabi-4.4.3/bin:$PATH | ||||
|         ./configure --host=arm-linux-androideabi [more configure options] | ||||
|         make | ||||
|       - if you want to compile directly from our GIT repo you might run into | ||||
|         this issue with older automake stuff: | ||||
|         checking host system type... | ||||
|         Invalid configuration `arm-linux-androideabi': | ||||
|         system `androideabi' not recognized | ||||
|         configure: error: /bin/sh ./config.sub arm-linux-androideabi failed | ||||
|         this issue can be fixed with using more recent versions of config.sub | ||||
|         and config.guess which can be obtained here: | ||||
|         http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree | ||||
|         you need to replace your system-own versions which usually can be | ||||
|         found in your automake folder: | ||||
|         find /usr -name config.sub | ||||
|  | ||||
|    Wrapper for pkg-config | ||||
|       - In order to make proper use of pkg-config so that configure is able to | ||||
|         find all dependencies you should create a wrapper script for pkg-config; | ||||
|         file /opt/arm-linux-androideabi-4.4.3/bin/arm-linux-androideabi-pkg-config: | ||||
|  | ||||
|         #!/bin/sh | ||||
|         SYSROOT=$(dirname ${0%/*})/sysroot | ||||
|         export PKG_CONFIG_DIR= | ||||
|         export PKG_CONFIG_LIBDIR=${SYSROOT}/usr/local/lib/pkgconfig:${SYSROOT}/usr/share/pkgconfig | ||||
|         export PKG_CONFIG_SYSROOT_DIR=${SYSROOT} | ||||
|         exec pkg-config "$@" | ||||
|  | ||||
|         also create a copy or symlink with name arm-unknown-linux-androideabi-pkg-config. | ||||
|  | ||||
|  | ||||
| CROSS COMPILE | ||||
| @@ -927,8 +970,9 @@ REDUCING SIZE | ||||
|    The GNU compiler and linker have a number of options that can reduce the | ||||
|    size of the libcurl dynamic libraries on some platforms even further. | ||||
|    Specify them by providing appropriate CFLAGS and LDFLAGS variables on the | ||||
|    configure command-line: | ||||
|      CFLAGS="-ffunction-sections -fdata-sections" \ | ||||
|    configure command-line, e.g. | ||||
|      CFLAGS="-Os -ffunction-sections -fdata-sections \ | ||||
|              -fno-unwind-tables -fno-asynchronous-unwind-tables" \ | ||||
|      LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections" | ||||
|  | ||||
|    Be sure also to strip debugging symbols from your binaries after | ||||
| @@ -938,9 +982,9 @@ REDUCING SIZE | ||||
|    .comment section). | ||||
|  | ||||
|    Using these techniques it is possible to create a basic HTTP-only shared | ||||
|    libcurl library for i386 Linux platforms that is only 101 KiB in size, and | ||||
|    an FTP-only library that is 105 KiB in size (as of libcurl version 7.21.5, | ||||
|    using gcc 4.4.3). | ||||
|    libcurl library for i386 Linux platforms that is only 106 KiB in size, and | ||||
|    an FTP-only library that is 108 KiB in size (as of libcurl version 7.27.0, | ||||
|    using gcc 4.6.3). | ||||
|  | ||||
|    You may find that statically linking libcurl to your application will | ||||
|    result in a lower total size than dynamically linking. | ||||
|   | ||||
| @@ -11,13 +11,32 @@ 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 | ||||
|    CMake is specified 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. | ||||
|  | ||||
| Current flaws in the curl CMake build | ||||
| ===================================== | ||||
|  | ||||
|    Missing features in the cmake build: | ||||
|  | ||||
|    - Builds libcurl without large file support | ||||
|    - It doesn't build src/hugehelp.c which creates the --manual output | ||||
|    - Can't select which SSL library to build with, only OpenSSL | ||||
|    - Doesn't build with SCP and SFTP support (libssh2) | ||||
|    - Doesn't allow different resolver backends (no c-ares build support) | ||||
|    - No RTMP support built | ||||
|    - Doesn't allow build curl and libcurl debug enabled | ||||
|    - Doesn't allow a custom CA bundle path | ||||
|    - Doesn't allow you to disable specific protocols from the build | ||||
|    - Doesn't properly enable IPv6 support by default | ||||
|    - Doesn't find or use krb4 or GSS | ||||
|    - Rebuilds test files too eagerly, but still can't run the tests | ||||
|  | ||||
|  | ||||
| Important notice | ||||
| ================== | ||||
|    If you got your curl sources from a distribution tarball, make sure to | ||||
| @@ -31,27 +50,33 @@ Important notice | ||||
|  | ||||
| Command Line CMake | ||||
| ================== | ||||
|    A command line build of Curl is similar to the autotools build of Curl. It | ||||
|    A CMake 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 is not implemented | ||||
|        #make test | ||||
|        # Install to default location: | ||||
|        make install | ||||
|  | ||||
|     1. Create an out of source build tree parallel to the curl source | ||||
|        tree and change into that directory | ||||
|  | ||||
|     $ mkdir curl-build | ||||
|     $ cd curl-build | ||||
|  | ||||
|     2. 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 specify the compile, you can set the CC environment | ||||
|        variable prior to running CMake. | ||||
|  | ||||
|     $ cmake ../curl | ||||
|     $ make | ||||
|  | ||||
|     3. Install to default location: | ||||
|  | ||||
|     $ make install | ||||
|  | ||||
|     (The teste suit does not work with the cmake build) | ||||
|  | ||||
| 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 | ||||
|      a curl use the instructions for the command line cmake, but substitute | ||||
|      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 | ||||
| @@ -65,7 +90,7 @@ cmake-gui | ||||
|         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 | ||||
|         same as the source tree, but a parallel directory called curl-build or | ||||
|         something similar. | ||||
|         3. Once the source and binary directories are specified, press the | ||||
|         "Configure" button. | ||||
| @@ -73,5 +98,5 @@ cmake-gui | ||||
|         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. | ||||
|         6. Run the native build tool that you used CMake to generate. | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,7 @@ 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. | ||||
| through a command line argument environment. | ||||
|  | ||||
| You may ask "Why is this a problem?" | ||||
|  | ||||
|   | ||||
| @@ -43,7 +43,7 @@ Portability | ||||
|  openldap     2.0 | ||||
|  MIT krb5 lib 1.2.4 | ||||
|  qsossl       V5R2M0 | ||||
|  NSS          3.11.x | ||||
|  NSS          3.12.x | ||||
|  axTLS        1.2.7 | ||||
|  Heimdal      ? | ||||
|  | ||||
| @@ -104,9 +104,9 @@ Windows vs Unix | ||||
|  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 | ||||
|  '#ifdef HAVE_THAT_WEIRD_FUNCTION'. Since Windows can't run configure scripts, | ||||
|  we maintain two curl_config-win32.h files (one in lib/ and one in src/) that | ||||
|  are supposed to look exactly as a curl_config.h file would have looked like on | ||||
|  a Windows machine! | ||||
|  we maintain a curl_config-win32.h file in lib directory that is supposed to | ||||
|  look exactly as a curl_config.h file would have looked like on a Windows | ||||
|  machine! | ||||
|  | ||||
|  Generally speaking: always remember that this will be compiled on dozens of | ||||
|  operating systems. Don't walk on the edge. | ||||
| @@ -220,7 +220,7 @@ Library | ||||
|  done" loop. It loops if there's a Location: to follow. | ||||
|  | ||||
|  When completed, the curl_easy_cleanup() should be called to free up used | ||||
|  resources. It runs Curl_disconnect() on all open connectons. | ||||
|  resources. It runs Curl_disconnect() on all open connections. | ||||
|  | ||||
|  A quick roundup on internal function sequences (many of these call | ||||
|  protocol-specific function-pointers): | ||||
|   | ||||
| @@ -3,13 +3,23 @@ join in and help us correct one or more of these! Also be sure to check the | ||||
| changelog of the current development status, as one or more of these problems | ||||
| may have been fixed since this was written! | ||||
|  | ||||
| 80. Curl doesn't recognize certificates in DER format in keychain, but it | ||||
|   works with PEM. | ||||
|   http://curl.haxx.se/bug/view.cgi?id=3439999 | ||||
|  | ||||
| 79. SMTP. When sending data to multiple recipients, curl will abort and return | ||||
|   failure if one of the recipients indicate failure (on the "RCPT TO" | ||||
|   command). Ordinary mail programs would proceed and still send to the ones | ||||
|   that can receive data. This is subject for change in the future. | ||||
|   http://curl.haxx.se/bug/view.cgi?id=3438362 | ||||
|  | ||||
| 78. curl and libcurl don't always signal the client properly when "sending" | ||||
|   zero bytes files - it makes for example the command line client not creating | ||||
|   any file at all. Like when using FTP. | ||||
|   http://curl.haxx.se/bug/view.cgi?id=3438362 | ||||
|  | ||||
| 77. CURLOPT_FORBID_REUSE on a handle prevents NTLM from working since it | ||||
|   "absuses" the underlying connection re-use system and if connections are | ||||
|   "abuses" the underlying connection re-use system and if connections are | ||||
|   forced to close they break the NTLM support. | ||||
|  | ||||
| 76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on | ||||
| @@ -17,10 +27,15 @@ may have been fixed since this was written! | ||||
|   curl_easy_getinfo() to return a socket properly with the CURLINFO_LASTSOCKET | ||||
|   option as for all other operating systems. | ||||
|  | ||||
| 75. NTLM authentication involving unicode user name or password. | ||||
| 75. NTLM authentication involving unicode user name or password only works | ||||
|   properly if built with UNICODE defined together with the schannel/winssl | ||||
|   backend. The original problem was mentioned in: | ||||
|   http://curl.haxx.se/mail/lib-2009-10/0024.html | ||||
|   http://curl.haxx.se/bug/view.cgi?id=2944325 | ||||
|  | ||||
|   The schannel version verified to work as mentioned in | ||||
|   http://curl.haxx.se/mail/lib-2012-07/0073.html | ||||
|  | ||||
| 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" | ||||
| @@ -119,13 +134,6 @@ may have been fixed since this was written! | ||||
| 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. | ||||
|  | ||||
| @@ -155,7 +163,6 @@ may have been fixed since this was written! | ||||
|   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 | ||||
|  | ||||
|   | ||||
| @@ -13,6 +13,7 @@ MAIL ETIQUETTE | ||||
|   1.4 Subscription Required | ||||
|   1.5 Moderation of new posters | ||||
|   1.6 Handling trolls and spam | ||||
|   1.7 How to unsubscribe | ||||
|  | ||||
|  2. Sending mail | ||||
|   2.1 Reply or New Mail | ||||
| @@ -58,7 +59,7 @@ MAIL ETIQUETTE | ||||
|   no way to read the reply, but to ask the one person the question. The one | ||||
|   person consequently gets overloaded with mail. | ||||
|  | ||||
|   If you really want to contact an individual and perhaps pay for his or her's | ||||
|   If you really want to contact an individual and perhaps pay for his or her | ||||
|   services, by all means go ahead, but if it's just another curl question, | ||||
|   take it to a suitable list instead. | ||||
|  | ||||
| @@ -91,7 +92,7 @@ MAIL ETIQUETTE | ||||
|  | ||||
|   1.6 Handling trolls and spam | ||||
|  | ||||
|   Despite our good intensions and hard work to keep spam off the lists and to | ||||
|   Despite our good intentions and hard work to keep spam off the lists and to | ||||
|   maintain a friendly and positive atmosphere, there will be times when spam | ||||
|   and or trolls get through. | ||||
|  | ||||
| @@ -110,6 +111,20 @@ MAIL ETIQUETTE | ||||
|  | ||||
|   Don't feed the trolls! | ||||
|  | ||||
|   1.7 How to unsubscribe | ||||
|  | ||||
|   You unsubscribe the same way you subscribed in the first place. You go to | ||||
|   the page for the particular mailing list you're subscribed to and you enter | ||||
|   your email address and password and press the unsubscribe button. | ||||
|  | ||||
|   Also, this information is included in the headers of every mail that is sent | ||||
|   out to all curl related mailing lists and there's footer in each mail that | ||||
|   links to the "admin" page on which you can unsubscribe and change other | ||||
|   options. | ||||
|  | ||||
|   You NEVER EVER email the mailing list requesting someone else to get you off | ||||
|   the list. | ||||
|  | ||||
|  | ||||
| 2. Sending mail | ||||
|  | ||||
| @@ -155,8 +170,8 @@ MAIL ETIQUETTE | ||||
|       Q: What is the most annoying thing in e-mail? | ||||
|  | ||||
|   Apart from the screwed up read order (especially when mixed together in a | ||||
|   thread when some responds doing the mandaded bottom-posting style), it also | ||||
|   makes it impossible to quote only parts of the original mail. | ||||
|   thread when someone responds using the mandated bottom-posting style), it | ||||
|   also makes it impossible to quote only parts of the original mail. | ||||
|  | ||||
|   When you reply to a mail. You let the mail client insert the previous mail | ||||
|   quoted. Then you put the cursor on the first line of the mail and you move | ||||
|   | ||||
							
								
								
									
										112
									
								
								docs/MANUAL
									
									
									
									
									
								
							
							
						
						
									
										112
									
								
								docs/MANUAL
									
									
									
									
									
								
							| @@ -19,7 +19,7 @@ SIMPLE USAGE | ||||
|  | ||||
|         curl http://www.weirdserver.com:8000/ | ||||
|  | ||||
|   Get a list of a directory of an FTP site: | ||||
|   Get a directory listing of an FTP site: | ||||
|  | ||||
|         curl ftp://cool.haxx.se/ | ||||
|  | ||||
| @@ -54,7 +54,7 @@ SIMPLE USAGE | ||||
|  | ||||
| DOWNLOAD TO A FILE | ||||
|  | ||||
|   Get a web page and store in a local file: | ||||
|   Get a web page and store in a local file with a specific name: | ||||
|  | ||||
|         curl -o thatpage.html http://www.netscape.com/ | ||||
|  | ||||
| @@ -113,9 +113,10 @@ USING PASSWORDS | ||||
|    ones out of the ones that the server accepts for the given URL, by using | ||||
|    --anyauth. | ||||
|  | ||||
|    NOTE! Since HTTP URLs don't support user and password, you can't use that | ||||
|    style when using Curl via a proxy. You _must_ use the -u style fetch | ||||
|    during such circumstances. | ||||
|    NOTE! According to the URL specification, HTTP URLs can not contain a user | ||||
|    and password, so that style will not work when using curl via a proxy, even | ||||
|    though curl allows it at other times. When using a proxy, you _must_ use | ||||
|    the -u style for user and password. | ||||
|  | ||||
|  HTTPS | ||||
|  | ||||
| @@ -133,7 +134,7 @@ PROXY | ||||
|  | ||||
|         curl -x my-proxy:888 ftp://ftp.leachsite.com/README | ||||
|  | ||||
|  Get a file from a HTTP server that requires user and password, using the | ||||
|  Get a file from an HTTP server that requires user and password, using the | ||||
|  same proxy as above: | ||||
|  | ||||
|         curl -u user:passwd -x my-proxy:888 http://www.get.this/ | ||||
| @@ -171,7 +172,7 @@ PROXY | ||||
|  | ||||
| RANGES | ||||
|  | ||||
|   With HTTP 1.1 byte-ranges were introduced. Using this, a client can request | ||||
|   HTTP 1.1 introduced byte-ranges. Using this, a client can request | ||||
|   to get only one or more subparts of a specified document. Curl supports | ||||
|   this with the -r flag. | ||||
|  | ||||
| @@ -202,8 +203,8 @@ UPLOADING | ||||
|  | ||||
|         curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile | ||||
|  | ||||
|   Upload a local file to the remote site, and use the local file name remote | ||||
|   too: | ||||
|   Upload a local file to the remote site, and use the local file name at the remote | ||||
|   site too: | ||||
|  | ||||
|         curl -T uploadfile -u user:passwd ftp://ftp.upload.com/ | ||||
|  | ||||
| @@ -219,14 +220,14 @@ UPLOADING | ||||
|  | ||||
|  HTTP | ||||
|  | ||||
|   Upload all data on stdin to a specified http site: | ||||
|   Upload all data on stdin to a specified HTTP site: | ||||
|  | ||||
|         curl -T - http://www.upload.com/myfile | ||||
|  | ||||
|   Note that the http server must have been configured to accept PUT before | ||||
|   Note that the HTTP server must have been configured to accept PUT before | ||||
|   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 | ||||
|  | ||||
| @@ -289,7 +290,7 @@ POST (HTTP) | ||||
|   The 'variable' names are the names set with "name=" in the <input> tags, and | ||||
|   the data is the contents you want to fill in for the inputs. The data *must* | ||||
|   be properly URL encoded. That means you replace space with + and that you | ||||
|   write weird letters with %XX where XX is the hexadecimal representation of | ||||
|   replace weird letters with %XX where XX is the hexadecimal representation of | ||||
|   the letter's ASCII code. | ||||
|  | ||||
|   Example: | ||||
| @@ -361,8 +362,8 @@ POST (HTTP) | ||||
|  | ||||
| REFERRER | ||||
|  | ||||
|   A HTTP request has the option to include information about which address | ||||
|   that referred to actual page.  Curl allows you to specify the | ||||
|   An HTTP request has the option to include information about which address | ||||
|   referred it to the actual page.  Curl allows you to specify the | ||||
|   referrer to be used on the command line. It is especially useful to | ||||
|   fool or trick stupid servers or CGI scripts that rely on that information | ||||
|   being available or contain certain data. | ||||
| @@ -373,7 +374,7 @@ REFERRER | ||||
|  | ||||
| USER AGENT | ||||
|  | ||||
|   A HTTP request has the option to include information about the browser | ||||
|   An HTTP request has the option to include information about the browser | ||||
|   that generated the request. Curl allows it to be specified on the command | ||||
|   line. It is especially useful to fool or trick stupid servers or CGI | ||||
|   scripts that only accept certain browsers. | ||||
| @@ -613,21 +614,21 @@ SFTP and SCP and PATH NAMES | ||||
| FTP and firewalls | ||||
|  | ||||
|   The FTP protocol requires one of the involved parties to open a second | ||||
|   connection as soon as data is about to get transfered. There are two ways to | ||||
|   connection as soon as data is about to get transferred. There are two ways to | ||||
|   do this. | ||||
|  | ||||
|   The default way for curl is to issue the PASV command which causes the | ||||
|   server to open another port and await another connection performed by the | ||||
|   client. This is good if the client is behind a firewall that don't allow | ||||
|   client. This is good if the client is behind a firewall that doesn't allow | ||||
|   incoming connections. | ||||
|  | ||||
|         curl ftp.download.com | ||||
|  | ||||
|   If the server for example, is behind a firewall that don't allow connections | ||||
|   on other ports than 21 (or if it just doesn't support the PASV command), the | ||||
|   If the server, for example, is behind a firewall that doesn't allow connections | ||||
|   on ports other than 21 (or if it just doesn't support the PASV command), the | ||||
|   other way to do it is to use the PORT command and instruct the server to | ||||
|   connect to the client on the given (as parameters to the PORT command) IP | ||||
|   number and port. | ||||
|   connect to the client on the given IP number and port (as parameters to the | ||||
|   PORT command). | ||||
|  | ||||
|   The -P flag to curl supports a few different options. Your machine may have | ||||
|   several IP-addresses and/or network interfaces and curl allows you to select | ||||
| @@ -685,8 +686,8 @@ HTTPS | ||||
|   If you neglect to specify the password on the command line, you will be | ||||
|   prompted for the correct password before any data can be received. | ||||
|  | ||||
|   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 | ||||
|   Many older SSL-servers have problems with SSLv3 or TLS, which newer versions | ||||
|   of OpenSSL etc use, therefore it is sometimes useful to specify what | ||||
|   SSL-version curl should use. Use -3, -2 or -1 to specify that exact SSL | ||||
|   version to use (for SSLv3, SSLv2 or TLSv1 respectively): | ||||
|  | ||||
| @@ -695,14 +696,13 @@ HTTPS | ||||
|   Otherwise, curl will first attempt to use v3 and then v2. | ||||
|  | ||||
|   To use OpenSSL to convert your favourite browser's certificate into a PEM | ||||
|   formatted one that curl can use, do something like this (assuming netscape, | ||||
|   but IE is likely to work similarly): | ||||
|   formatted one that curl can use, do something like this: | ||||
|  | ||||
|     You start with hitting the 'security' menu button in netscape. | ||||
|     In Netscape, you start with hitting the 'Security' menu button. | ||||
|  | ||||
|     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 | ||||
|  | ||||
| @@ -713,11 +713,21 @@ HTTPS | ||||
|  | ||||
|      # ./apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile] | ||||
|  | ||||
|     In Firefox, select Options, then Advanced, then the Encryption tab, | ||||
|     View Certificates. This opens the Certificate Manager, where you can | ||||
|     Export. Be sure to select PEM for the Save as type. | ||||
|  | ||||
|     In Internet Explorer, select Internet Options, then the Content tab, then | ||||
|     Certificates. Then you can Export, and depending on the format you may | ||||
|     need to convert to PEM. | ||||
|  | ||||
|     In Chrome, select Settings, then Show Advanced Settings. Under HTTPS/SSL | ||||
|     select Manage Certificates. | ||||
|  | ||||
| RESUMING FILE TRANSFERS | ||||
|  | ||||
|  To continue a file transfer where it was previously aborted, curl supports | ||||
|  resume on http(s) downloads as well as ftp uploads and downloads. | ||||
|  resume on HTTP(S) downloads as well as FTP uploads and downloads. | ||||
|  | ||||
|  Continue downloading a document: | ||||
|  | ||||
| @@ -731,7 +741,7 @@ RESUMING FILE TRANSFERS | ||||
|  | ||||
|         curl -C - -o file http://www.server.com/ | ||||
|  | ||||
|  (*1) = This requires that the ftp server supports the non-standard command | ||||
|  (*1) = This requires that the FTP server supports the non-standard command | ||||
|         SIZE. If it doesn't, curl will say so. | ||||
|  | ||||
|  (*2) = This requires that the web server supports at least HTTP/1.1. If it | ||||
| @@ -740,7 +750,7 @@ RESUMING FILE TRANSFERS | ||||
| TIME CONDITIONS | ||||
|  | ||||
|  HTTP allows a client to specify a time condition for the document it | ||||
|  requests. It is If-Modified-Since or If-Unmodified-Since. Curl allow you to | ||||
|  requests. It is If-Modified-Since or If-Unmodified-Since. Curl allows you to | ||||
|  specify them with the -z/--time-cond flag. | ||||
|  | ||||
|  For example, you can easily make a download that only gets performed if the | ||||
| @@ -788,7 +798,7 @@ LDAP | ||||
|   and offer ldap:// support. | ||||
|  | ||||
|   LDAP is a complex thing and writing an LDAP query is not an easy task. I do | ||||
|   advice you to dig up the syntax description for that elsewhere. Two places | ||||
|   advise you to dig up the syntax description for that elsewhere. Two places | ||||
|   that might suit you are: | ||||
|  | ||||
|   Netscape's "Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10: | ||||
| @@ -797,7 +807,7 @@ LDAP | ||||
|  | ||||
|   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 how I can get all people from my local LDAP | ||||
|   server that has a certain sub-domain in their email address: | ||||
|  | ||||
|         curl -B "ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se" | ||||
| @@ -831,15 +841,15 @@ ENVIRONMENT VARIABLES | ||||
| NETRC | ||||
|  | ||||
|   Unix introduced the .netrc concept a long time ago. It is a way for a user | ||||
|   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 | ||||
|   realize this is a big security risk if someone else gets hold of your | ||||
|   passwords, so therefore most unix programs won't read this file unless it is | ||||
|   only readable by yourself (curl doesn't care though). | ||||
|  | ||||
|   Curl supports .netrc files if told so (using the -n/--netrc and | ||||
|   --netrc-optional options). This is not restricted to only ftp, | ||||
|   but curl can use it for all protocols where authentication is used. | ||||
|   Curl supports .netrc files if told to (using the -n/--netrc and | ||||
|   --netrc-optional options). This is not restricted to just FTP, | ||||
|   so curl can use it for all protocols where authentication is used. | ||||
|  | ||||
|   A very simple .netrc file could look something like: | ||||
|  | ||||
| @@ -860,7 +870,7 @@ KERBEROS FTP TRANSFER | ||||
|  | ||||
|   Curl supports kerberos4 and kerberos5/GSSAPI for FTP transfers. You need | ||||
|   the kerberos package installed and used at curl build time for it to be | ||||
|   used. | ||||
|   available. | ||||
|  | ||||
|   First, get the krb-ticket the normal way, like with the kinit/kauth tool. | ||||
|   Then use curl in way similar to: | ||||
| @@ -895,7 +905,7 @@ TELNET | ||||
|  | ||||
|    - NEW_ENV=<var,val> Sets an environment variable. | ||||
|  | ||||
|   NOTE: the telnet protocol does not specify any way to login with a specified | ||||
|   NOTE: The telnet protocol does not specify any way to login with a specified | ||||
|   user and password so curl can't do that automatically. To do that, you need | ||||
|   to track when the login prompt is received and send the username and | ||||
|   password accordingly. | ||||
| @@ -914,7 +924,7 @@ PERSISTENT CONNECTIONS | ||||
|   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 | ||||
|   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, practically | ||||
|   transfers faster. If you use an HTTP proxy for file transfers, practically | ||||
|   all transfers will be persistent. | ||||
|  | ||||
| MULTIPLE TRANSFERS WITH A SINGLE COMMAND LINE | ||||
| @@ -955,6 +965,28 @@ IPv6 | ||||
|   IPv6 addresses provided other than in URLs (e.g. to the --proxy, --interface | ||||
|   or --ftp-port options) should not be URL encoded. | ||||
|  | ||||
| METALINK | ||||
|  | ||||
|   Curl supports Metalink (both version 3 and 4 (RFC 5854) are supported), a way | ||||
|   to list multiple URIs and hashes for a file. Curl will make use of the mirrors | ||||
|   listed within for failover if there are errors (such as the file or server not | ||||
|   being available). It will also verify the hash of the file after the download | ||||
|   completes. The Metalink file itself is downloaded and processed in memory and | ||||
|   not stored in the local file system. | ||||
|  | ||||
|   Example to use a remote Metalink file: | ||||
|  | ||||
|     curl --metalink http://www.example.com/example.metalink | ||||
|  | ||||
|   To use a Metalink file in the local file system, use FILE protocol (file://): | ||||
|  | ||||
|     curl --metalink file://example.metalink | ||||
|  | ||||
|   Please note that if FILE protocol is disabled, there is no way to use a local | ||||
|   Metalink file at the time of this writing. Also note that if --metalink and | ||||
|   --include are used together, --include will be ignored. This is because including | ||||
|   headers in the response will break Metalink parser and if the headers are included | ||||
|   in the file described in Metalink file, hash check will fail. | ||||
|  | ||||
| MAILING LISTS | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -22,9 +22,9 @@ | ||||
|  | ||||
| AUTOMAKE_OPTIONS = foreign no-dependencies | ||||
|  | ||||
| man_MANS = curl.1 curl-config.1 | ||||
| GENHTMLPAGES = curl.html curl-config.html | ||||
| PDFPAGES = curl.pdf curl-config.pdf | ||||
| man_MANS = curl.1 curl-config.1 mk-ca-bundle.1 | ||||
| GENHTMLPAGES = curl.html curl-config.html mk-ca-bundle.html | ||||
| PDFPAGES = curl.pdf curl-config.pdf mk-ca-bundle.pdf | ||||
|  | ||||
| HTMLPAGES = $(GENHTMLPAGES) index.html | ||||
|  | ||||
| @@ -36,7 +36,7 @@ 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 \ | ||||
|  MAIL-ETIQUETTE | ||||
|  MAIL-ETIQUETTE HTTP-COOKIES | ||||
|  | ||||
| MAN2HTML= roffit < $< >$@ | ||||
|  | ||||
|   | ||||
							
								
								
									
										82
									
								
								docs/THANKS
									
									
									
									
									
								
							
							
						
						
									
										82
									
								
								docs/THANKS
									
									
									
									
									
								
							| @@ -55,6 +55,7 @@ Andreas Rieke | ||||
| Andreas Schuldei | ||||
| Andreas Wurf | ||||
| Andrei Benea | ||||
| Andrei Cipu | ||||
| Andres Garcia | ||||
| Andrew Benham | ||||
| Andrew Biggs | ||||
| @@ -64,17 +65,20 @@ Andrew Fuller | ||||
| Andrew Moise | ||||
| Andrew Wansink | ||||
| Andrew de los Reyes | ||||
| Andr<EFBFBD>s Garc<EFBFBD>a | ||||
| Andrés García | ||||
| Andy Cedilnik | ||||
| Andy Serpa | ||||
| Andy Tsouladze | ||||
| Angus Mackay | ||||
| Anthony Bryan | ||||
| Anthony G. Basile | ||||
| Antoine Calando | ||||
| Anton Bychkov | ||||
| Anton Kalmykov | ||||
| Anton Yabchinskiy | ||||
| Arkadiusz Miskiewicz | ||||
| Armel Asselin | ||||
| Arnaud Compan | ||||
| Arnaud Ebalard | ||||
| Arthur Murray | ||||
| Arve Knudsen | ||||
| @@ -93,6 +97,7 @@ Ben Van Hof | ||||
| Ben Winslow | ||||
| Benbuck Nason | ||||
| Benjamin Gerard | ||||
| Benjamin Johnson | ||||
| Bernard Leak | ||||
| Bernhard Reutner-Fischer | ||||
| Bertrand Demiddelaer | ||||
| @@ -101,7 +106,8 @@ Bill Hoffman | ||||
| Bjoern Sikora | ||||
| Bjorn Augustsson | ||||
| Bjorn Reese | ||||
| Bj<EFBFBD>rn Stenberg | ||||
| Björn Stenberg | ||||
| Blaise Potard | ||||
| Bob Richmond | ||||
| Bob Schader | ||||
| Bogdan Nicula | ||||
| @@ -128,6 +134,7 @@ Carsten Lange | ||||
| Casey O'Donnell | ||||
| Cedric Deltheil | ||||
| Chad Monroe | ||||
| Chandrakant Bagul | ||||
| Charles Kerr | ||||
| Chih-Chung Chang | ||||
| Chris "Bob Bob" | ||||
| @@ -141,6 +148,7 @@ Chris Mumford | ||||
| Chris Smowton | ||||
| Christian Grothoff | ||||
| Christian Hagele | ||||
| Christian Hägele | ||||
| Christian Krause | ||||
| Christian Kurz | ||||
| Christian Robottom Reis | ||||
| @@ -169,6 +177,7 @@ Cris Bailiff | ||||
| Cristian Rodriguez | ||||
| Curt Bogmine | ||||
| Cyrill Osterwalder | ||||
| Dag Ekengren | ||||
| Dagobert Michelsen | ||||
| Damien Adant | ||||
| Dan Becker | ||||
| @@ -182,11 +191,11 @@ Dan Zitter | ||||
| Daniel Black | ||||
| Daniel Cater | ||||
| Daniel Egger | ||||
| Daniel Fandrich | ||||
| Daniel Johnson | ||||
| Daniel Mentz | ||||
| Daniel Steinberg | ||||
| Daniel Stenberg | ||||
| Daniel Theron | ||||
| Daniel at touchtunes | ||||
| Darryl House | ||||
| Darshan Mody | ||||
| @@ -198,6 +207,7 @@ Dave Reisner | ||||
| Dave Vasilevsky | ||||
| David Bau | ||||
| David Binderman | ||||
| David Blaikie | ||||
| David Byron | ||||
| David Cohen | ||||
| David Eriksson | ||||
| @@ -254,6 +264,8 @@ Early Ehlinger | ||||
| Ebenezer Ikonne | ||||
| Edin Kadribasic | ||||
| Eduard Bloch | ||||
| Edward Sheldrake | ||||
| Eelco Dolstra | ||||
| Eetu Ojanen | ||||
| Ellis Pritchard | ||||
| Emanuele Bovisio | ||||
| @@ -292,6 +304,7 @@ Frank McGeough | ||||
| Frank Meier | ||||
| Frank Ticheler | ||||
| Frank Van Uffelen | ||||
| František Kučera | ||||
| Fred Machado | ||||
| Fred New | ||||
| Fred Noz | ||||
| @@ -309,7 +322,8 @@ Georg Lippitsch | ||||
| Georg Wicherski | ||||
| Gerd v. Egidy | ||||
| Gerhard Herre | ||||
| Gerrit Bruchh<EFBFBD>user | ||||
| Gerrit Bruchhäuser | ||||
| Ghennadi Procopciuc | ||||
| Giancarlo Formicuccia | ||||
| Giaslas Georgios | ||||
| Gil Weber | ||||
| @@ -333,7 +347,7 @@ Guenter Knauf | ||||
| Guillaume Arluison | ||||
| Gustaf Hui | ||||
| Gwenole Beauchesne | ||||
| G<EFBFBD>tz Babin-Ebell | ||||
| Götz Babin-Ebell | ||||
| Hamish Mackenzie | ||||
| Hang Kin Lau | ||||
| Hanno Kranzhoff | ||||
| @@ -349,6 +363,7 @@ Henrik Storner | ||||
| Henry Ludemann | ||||
| Herve Amblard | ||||
| Hidemoto Nakada | ||||
| Ho-chi Chen | ||||
| Hoi-Ho Chan | ||||
| Hongli Lai | ||||
| Howard Chu | ||||
| @@ -385,7 +400,10 @@ James MacMillan | ||||
| Jamie Lokier | ||||
| Jamie Newton | ||||
| Jamie Wilkinson | ||||
| Jan Ehrhardt | ||||
| Jan Koen Annot | ||||
| Jan Kunder | ||||
| Jan Schaumann | ||||
| Jan Van Boghout | ||||
| Jared Lundell | ||||
| Jari Sundell | ||||
| @@ -415,6 +433,7 @@ Jerry Wu | ||||
| Jes Badwal | ||||
| Jesper Jensen | ||||
| Jesse Noller | ||||
| Jie He | ||||
| Jim Drash | ||||
| Jim Freeman | ||||
| Jim Hollinger | ||||
| @@ -422,6 +441,7 @@ Jim Meyering | ||||
| Jocelyn Jaubert | ||||
| Joe Halpin | ||||
| Joe Malicki | ||||
| Joe Mason | ||||
| Joel Chen | ||||
| Jofell Gallardo | ||||
| Johan Anderson | ||||
| @@ -433,9 +453,11 @@ John Crow | ||||
| John Dennis | ||||
| John E. Malmberg | ||||
| John Janssen | ||||
| John Joseph Bachir | ||||
| John Kelly | ||||
| John Lask | ||||
| John Lightsey | ||||
| John Marino | ||||
| John McGowan | ||||
| John P. McCaskey | ||||
| John Wilkinson | ||||
| @@ -450,25 +472,28 @@ Jonas Forsman | ||||
| Jonas Schnelli | ||||
| Jonatan Lander | ||||
| Jonathan Hseu | ||||
| Jonathan Nieder | ||||
| Jongki Suwandi | ||||
| Jose Kahan | ||||
| Josef Wolf | ||||
| Josh Kapell | ||||
| Joshua Kwan | ||||
| Josue Andrade Gomes | ||||
| Juan Barreto | ||||
| Juan F. Codagnone | ||||
| Juan Ignacio Herv<EFBFBD>s | ||||
| Juan Ignacio Hervás | ||||
| Judson Bishop | ||||
| Juergen Wilke | ||||
| Jukka Pihl | ||||
| Julian Noble | ||||
| Julian Taylor | ||||
| Julien Chaffraix | ||||
| Julien Royer | ||||
| Jun-ichiro itojun Hagino | ||||
| Jurij Smakov | ||||
| Justin Fletcher | ||||
| J<EFBFBD>rg Mueller-Tolk | ||||
| J<EFBFBD>rn Hartroth | ||||
| Jörg Mueller-Tolk | ||||
| Jörn Hartroth | ||||
| Kai Sommerfeld | ||||
| Kai-Uwe Rommel | ||||
| Kalle Vahlman | ||||
| @@ -502,7 +527,7 @@ Kris Kennaway | ||||
| Krishnendu Majumdar | ||||
| Krister Johansen | ||||
| Kristian Gunstone | ||||
| Kristian K<EFBFBD>hntopp | ||||
| Kristian Köhntopp | ||||
| Kyle Sallee | ||||
| Lachlan O'Dea | ||||
| Larry Campbell | ||||
| @@ -519,6 +544,7 @@ Len Krause | ||||
| Lenaic Lefever | ||||
| Lenny Rachitsky | ||||
| Liam Healy | ||||
| Lijo Antony | ||||
| Linas Vepstas | ||||
| Ling Thio | ||||
| Linus Nielsen Feltzing | ||||
| @@ -540,7 +566,9 @@ Mandy Wu | ||||
| Manfred Schwarb | ||||
| Manuel Massing | ||||
| Marc Boucher | ||||
| Marc Hoersken | ||||
| Marc Kleine-Budde | ||||
| Marcel Raad | ||||
| Marcel Roelofs | ||||
| Marcelo Juchem | ||||
| Marcin Adamski | ||||
| @@ -557,6 +585,8 @@ Mark Eichin | ||||
| Mark Incley | ||||
| Mark Karpeles | ||||
| Mark Lentczner | ||||
| Mark Salisbury | ||||
| Mark Tully | ||||
| Markus Duft | ||||
| Markus Koetter | ||||
| Markus Moeller | ||||
| @@ -589,6 +619,8 @@ Mauro Iorio | ||||
| Max Katsev | ||||
| Maxim Ivanov | ||||
| Maxim Perenesenko | ||||
| Maxim Prohorov | ||||
| Maxime Larocque | ||||
| Mehmet Bozkurt | ||||
| Mekonikum | ||||
| Mettgut Jamalla | ||||
| @@ -596,6 +628,7 @@ Michael Benedict | ||||
| Michael Calmer | ||||
| Michael Cronenworth | ||||
| Michael Curtis | ||||
| Michael Day | ||||
| Michael Goffioul | ||||
| Michael Jahn | ||||
| Michael Jerris | ||||
| @@ -628,6 +661,7 @@ Nathan O'Sullivan | ||||
| Nathanael Nerode | ||||
| Naveen Chandran | ||||
| Naveen Noel | ||||
| Neil Bowers | ||||
| Neil Dunbar | ||||
| Neil Spring | ||||
| Nic Roets | ||||
| @@ -638,7 +672,7 @@ Nick Zitzmann | ||||
| Nico Baggus | ||||
| Nicolas Berloquin | ||||
| Nicolas Croiset | ||||
| Nicolas Fran<EFBFBD>ois | ||||
| Nicolas François | ||||
| Niels van Tongeren | ||||
| Nikita Schmidt | ||||
| Nikitinskit Dmitriy | ||||
| @@ -652,8 +686,10 @@ Nodak Sodak | ||||
| Norbert Frese | ||||
| Norbert Novotny | ||||
| Ofer | ||||
| Olaf Flebbe | ||||
| Olaf Stueben | ||||
| Olaf St<EFBFBD>ben | ||||
| Olaf Stüben | ||||
| Olivier Berger | ||||
| Oren Tirosh | ||||
| Ori Avtalion | ||||
| P R Schaffner | ||||
| @@ -701,6 +737,7 @@ Phil Blundell | ||||
| Phil Karn | ||||
| Phil Lisiecki | ||||
| Phil Pellouchoud | ||||
| Philip Craig | ||||
| Philip Gladstone | ||||
| Philip Langdale | ||||
| Philippe Hameau | ||||
| @@ -708,7 +745,9 @@ Philippe Raoult | ||||
| Philippe Vaucher | ||||
| Pierre | ||||
| Pierre Brico | ||||
| Pierre Chapuis | ||||
| Pierre Joye | ||||
| Pierre Ynard | ||||
| Pooyan McSporran | ||||
| Pramod Sharma | ||||
| Puneet Pawaia | ||||
| @@ -754,6 +793,7 @@ Rob Jones | ||||
| Rob Stanzel | ||||
| Rob Ward | ||||
| Robert A. Monat | ||||
| Robert B. Harris | ||||
| Robert D. Young | ||||
| Robert Foreman | ||||
| Robert Iakobashvili | ||||
| @@ -765,11 +805,13 @@ Robin Johnson | ||||
| Robin Kay | ||||
| Robson Braga Araujo | ||||
| Rodney Simmons | ||||
| Rodrigo Silva | ||||
| Roland Blom | ||||
| Roland Krikava | ||||
| Roland Zimmermann | ||||
| Rolland Dudemaine | ||||
| Roman Koifman | ||||
| Roman Mamedov | ||||
| Ron Zapp | ||||
| Rosimildo da Silva | ||||
| Roy Shan | ||||
| @@ -780,23 +822,27 @@ Ryan Chan | ||||
| Ryan Nelson | ||||
| Ryan Schmidt | ||||
| S. Moonesamy | ||||
| Salvador D<EFBFBD>vila | ||||
| Salvador Dávila | ||||
| Salvatore Sorrentino | ||||
| Sam Listopad | ||||
| Sampo Kellomaki | ||||
| Samuel D<EFBFBD>az Garc<EFBFBD>a | ||||
| Samuel Díaz García | ||||
| Samuel Listopad | ||||
| Samuel Thibault | ||||
| Sander Gates | ||||
| Sandor Feldi | ||||
| Santhana Todatry | ||||
| Saqib Ali | ||||
| Sara Golemon | ||||
| Saul good | ||||
| Scott Bailey | ||||
| Scott Barrett | ||||
| Scott Cantor | ||||
| Scott Davis | ||||
| Scott McCreary | ||||
| Sebastien Willemijns | ||||
| Senthil Raja Velu | ||||
| Sergei Nikulov | ||||
| Sergio Ballestrero | ||||
| Seshubabu Pasam | ||||
| Sh Diao | ||||
| @@ -842,11 +888,12 @@ Stoned Elipot | ||||
| Sven Anders | ||||
| Sven Neuhaus | ||||
| Sven Wegener | ||||
| S<EFBFBD>bastien Willemijns | ||||
| Sébastien Willemijns | ||||
| T. Bharath | ||||
| T. Yamada | ||||
| Taneli Vahakangas | ||||
| Tanguy Fautre | ||||
| Tatsuhiro Tsujikawa | ||||
| Temprimus | ||||
| Thomas J. Moore | ||||
| Thomas Klausner | ||||
| @@ -860,13 +907,15 @@ Tim Bartley | ||||
| Tim Chen | ||||
| Tim Costello | ||||
| Tim Harder | ||||
| Tim Heckman | ||||
| Tim Newsome | ||||
| Tim Sneddon | ||||
| Tinus van den Berg | ||||
| Tobias Rundstr<EFBFBD>m | ||||
| Tobias Rundström | ||||
| Toby Peterson | ||||
| Todd A Ouska | ||||
| Todd Kulesza | ||||
| Todd Ouska | ||||
| Todd Vierling | ||||
| Tom Benoist | ||||
| Tom Donovan | ||||
| @@ -877,6 +926,7 @@ Tom Mueller | ||||
| Tom Regner | ||||
| Tom Wright | ||||
| Tom Zerucha | ||||
| Tomas Mlcoch | ||||
| Tomas Pospisek | ||||
| Tomas Szepe | ||||
| Tomasz Lacki | ||||
| @@ -893,7 +943,7 @@ Traian Nicolescu | ||||
| Troels Walsted Hansen | ||||
| Troy Engel | ||||
| Tupone Alfredo | ||||
| Ulf H<EFBFBD>rnhammar | ||||
| Ulf Härnhammar | ||||
| Ulrich Zadow | ||||
| Venkat Akella | ||||
| Victor Snezhko | ||||
|   | ||||
							
								
								
									
										245
									
								
								docs/TODO
									
									
									
									
									
								
							
							
						
						
									
										245
									
								
								docs/TODO
									
									
									
									
									
								
							| @@ -55,52 +55,69 @@ | ||||
|  7.6 Provide callback for cert verification | ||||
|  7.7 Support other SSL libraries | ||||
|  7.9 improve configure --with-ssl | ||||
|  7.10 Support DANE | ||||
|  | ||||
|  8. GnuTLS | ||||
|  8.1 SSL engine stuff | ||||
|  8.3 check connection | ||||
|  8.4 non-gcrypt | ||||
|  | ||||
|  9. Other protocols | ||||
|  9. SMTP | ||||
|  9.1 Specify the preferred authentication mechanism | ||||
|  9.2 Initial response | ||||
|  9.3 Pipelining | ||||
|   | ||||
|  10. New protocols | ||||
|  10.1 RSYNC | ||||
|  10. POP3 | ||||
|  10.1 auth= in URLs | ||||
|   | ||||
|  11. Client | ||||
|  11.1 sync | ||||
|  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 | ||||
|  11.9 IPv6 addresses with globbing | ||||
|  11. IMAP | ||||
|  11.1 SASL based authentication mechanisms | ||||
|   | ||||
|  12. Build | ||||
|  12.1 roffit | ||||
|  12. LDAP | ||||
|  12.1 SASL based authentication mechanisms | ||||
|   | ||||
|  13. Test suite | ||||
|  13.1 SSL tunnel | ||||
|  13.2 nicer lacking perl message | ||||
|  13.3 more protocols supported | ||||
|  13.4 more platforms supported | ||||
|  13. Other protocols | ||||
|  | ||||
|  14. Next SONAME bump | ||||
|  14.1 http-style HEAD output for ftp | ||||
|  14.2 combine error codes | ||||
|  14.3 extend CURLOPT_SOCKOPTFUNCTION prototype | ||||
|  14. New protocols | ||||
|  14.1 RSYNC | ||||
|  | ||||
|  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 | ||||
|  15.8 remove 'curl_httppost' from public | ||||
|  15.9 have form functions use CURL handle argument | ||||
|  15. SASL | ||||
|  15.1 Other authentication mechanisms | ||||
|   | ||||
|  16. Client | ||||
|  16.1 sync | ||||
|  16.2 glob posts | ||||
|  16.3 prevent file overwriting | ||||
|  16.4 simultaneous parallel transfers | ||||
|  16.5 provide formpost headers | ||||
|  16.6 url-specific options | ||||
|  16.7 warning when setting an option | ||||
|  16.8 IPv6 addresses with globbing | ||||
|  | ||||
|  17. Build | ||||
|  17.1 roffit | ||||
|  | ||||
|  18. Test suite | ||||
|  18.1 SSL tunnel | ||||
|  18.2 nicer lacking perl message | ||||
|  18.3 more protocols supported | ||||
|  18.4 more platforms supported | ||||
|  | ||||
|  19. Next SONAME bump | ||||
|  19.1 http-style HEAD output for ftp | ||||
|  19.2 combine error codes | ||||
|  19.3 extend CURLOPT_SOCKOPTFUNCTION prototype | ||||
|  | ||||
|  20. Next major release | ||||
|  20.1 cleanup return codes | ||||
|  20.2 remove obsolete defines | ||||
|  20.3 size_t | ||||
|  20.4 remove several functions | ||||
|  20.5 remove CURLOPT_FAILONERROR | ||||
|  20.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE | ||||
|  20.7 remove progress meter from libcurl | ||||
|  20.8 remove 'curl_httppost' from public | ||||
|  20.9 have form functions use CURL handle argument | ||||
|  20.10 Add CURLOPT_MAIL_CLIENT option | ||||
|  | ||||
| ============================================================================== | ||||
|  | ||||
| @@ -158,7 +175,7 @@ | ||||
|  To make libcurl do blazing fast IPv6 in a dual-stack configuration, this needs | ||||
|  to be addressed: | ||||
|  | ||||
|     http://tools.ietf.org/html/draft-ietf-v6ops-happy-eyeballs-07 | ||||
|     http://tools.ietf.org/html/rfc6555 | ||||
|  | ||||
|  | ||||
| 2. libcurl - multi interface | ||||
| @@ -338,6 +355,13 @@ to provide the data to send. | ||||
|  make the configure --with-ssl option first check for OpenSSL, then GnuTLS, | ||||
|  then NSS... | ||||
|  | ||||
| 7.10 Support DANE | ||||
|  | ||||
|  DNS-Based Authentication of Named Entities (DANE) is a way to provide SSL | ||||
|  keys and certs over DNS using DNSSEC as an alternative to the CA model. | ||||
|  http://www.rfc-editor.org/rfc/rfc6698.txt | ||||
|  | ||||
|  | ||||
| 8. GnuTLS | ||||
|  | ||||
| 8.1 SSL engine stuff | ||||
| @@ -349,29 +373,71 @@ to provide the data to send. | ||||
|  Add a way to check if the connection seems to be alive, to correspond to the | ||||
|  SSL_peak() way we use with OpenSSL. | ||||
|  | ||||
| 8.4 non-gcrypt | ||||
|  | ||||
|  libcurl assumes that there are gcrypt functions available when | ||||
|  GnuTLS is. | ||||
| 9. SMTP | ||||
|  | ||||
|  GnuTLS can be built to use libnettle instead as crypto library, | ||||
|  which breaks the previously mentioned assumption | ||||
| 9.1 Specify the preferred authentication mechanism | ||||
|  | ||||
|  The correct fix would be to detect which crypto layer that is in use and | ||||
|  adapt our code to use that instead of blindly assuming gcrypt. | ||||
|  Add the ability to specify the preferred authentication mechanism or a list | ||||
|  of mechanisms that should be used. Not only that, but the order that is | ||||
|  returned by the server during the EHLO response should be honored by curl. | ||||
|  | ||||
| 9. Other protocols | ||||
| 9.2 Initial response | ||||
|  | ||||
| 10. New protocols | ||||
|  Add the ability for the user to specify whether the initial response is | ||||
|  included in the AUTH command. Some email servers, such as Microsoft | ||||
|  Exchange, can work with either whilst others need to have the initial | ||||
|  response sent separately: | ||||
|  | ||||
| 10.1 RSYNC | ||||
|  http://curl.haxx.se/mail/lib-2012-03/0114.html | ||||
|  | ||||
|  There's no RFC for protocol nor URI/URL format.  An implementation should | ||||
|  most probably use an existing rsync library, such as librsync. | ||||
| 9.3 Pipelining | ||||
|  | ||||
| 11. Client | ||||
|  Add support for pipelining emails. | ||||
|  | ||||
| 11.1 sync | ||||
| 10. POP3 | ||||
|  | ||||
| 10.1 auth= in URLs | ||||
|  | ||||
|  Being able to specify the preferred authentication mechanism in the URL as | ||||
|  per RFC2384. | ||||
|  | ||||
| 11. IMAP | ||||
|  | ||||
| 11.1 SASL based authentication mechanisms | ||||
|  | ||||
|  Curl currently sends usernames and passwords as clear text whilst SASL based | ||||
|  authentication mechanisms can be more secure. As such, support should be | ||||
|  added to support these authentication mechanisms. | ||||
|  | ||||
| 12. LDAP | ||||
|  | ||||
| 12.1 SASL based authentication mechansims | ||||
|  | ||||
|  Currently the LDAP module only supports ldap_simple_bind_s() in order to bind | ||||
|  to an LDAP server. However, this function sends username and password details | ||||
|  using the simple authentication mechanism (as clear text). However, it should | ||||
|  be possible to use ldap_bind_s() instead specifing the security context | ||||
|  information ourselves. | ||||
|  | ||||
| 13. Other protocols | ||||
|  | ||||
| 14. New protocols | ||||
|  | ||||
| 14.1 RSYNC | ||||
|  | ||||
|  There's no RFC for the protocol or an URI/URL format.  An implementation | ||||
|  should most probably use an existing rsync library, such as librsync. | ||||
|  | ||||
| 15. SASL | ||||
|  | ||||
| 15.1 Other authentication mechanisms | ||||
|  | ||||
|  Add support for gssapi to SMTP and POP3. | ||||
|  | ||||
| 16. Client | ||||
|  | ||||
| 16.1 sync | ||||
|  | ||||
|  "curl --sync http://example.com/feed[1-100].rss" or | ||||
|  "curl --sync http://example.net/{index,calendar,history}.html" | ||||
| @@ -380,12 +446,12 @@ to provide the data to send. | ||||
|  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 | ||||
| 16.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 | ||||
| 16.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 | ||||
| @@ -393,14 +459,14 @@ to provide the data to send. | ||||
|  existing). So that index.html becomes first index.html.1 and then | ||||
|  index.html.2 etc. | ||||
|  | ||||
| 11.4 simultaneous parallel transfers | ||||
| 16.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 | ||||
| 16.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 | ||||
| @@ -414,7 +480,7 @@ to provide the data to send. | ||||
|  which should overwrite the program reasonable defaults (plain/text, | ||||
|  8bit...) | ||||
|  | ||||
| 11.6 url-specific options | ||||
| 16.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, | ||||
| @@ -428,62 +494,57 @@ to provide the data to send. | ||||
|  | ||||
|  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 | ||||
| 16.7 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. | ||||
|  | ||||
| 11.9 IPv6 addresses with globbing | ||||
| 16.8 IPv6 addresses with globbing | ||||
|  | ||||
|   Currently the command line client needs to get url globbing disabled (with | ||||
|   -g) for it to support IPv6 numerical addresses. This is a rather silly flaw | ||||
|   that should be corrected. It probably involves a smarter detection of the | ||||
|   '[' and ']' letters. | ||||
|  | ||||
| 12. Build | ||||
| 17. Build | ||||
|  | ||||
| 12.1 roffit | ||||
| 17.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 | ||||
| 18. Test suite | ||||
|  | ||||
| 13.1 SSL tunnel | ||||
| 18.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 | ||||
| 18.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 | ||||
| 18.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 | ||||
| 18.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 | ||||
| 19. Next SONAME bump | ||||
|  | ||||
| 14.1 http-style HEAD output for ftp | ||||
| 19.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 | ||||
| 19.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 | ||||
| @@ -493,37 +554,44 @@ to provide the data to send. | ||||
|  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 | ||||
| 19.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 | ||||
| 20. Next major release | ||||
|  | ||||
| 15.1 cleanup return codes | ||||
| 20.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 | ||||
| 20.2 remove obsolete defines | ||||
|  | ||||
|  remove obsolete defines from curl/curl.h | ||||
|  | ||||
| 15.3 size_t | ||||
| 20.3 size_t | ||||
|  | ||||
|  make several functions use size_t instead of int in their APIs | ||||
|  | ||||
| 15.4 remove several functions | ||||
| 20.4 remove several functions | ||||
|  | ||||
|  remove the following functions from the public API: | ||||
|  | ||||
| @@ -544,18 +612,18 @@ to provide the data to send. | ||||
|  | ||||
|  curl_multi_socket_all | ||||
|  | ||||
| 15.5 remove CURLOPT_FAILONERROR | ||||
| 20.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 | ||||
| 20.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 | ||||
| 20.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 | ||||
| @@ -565,7 +633,7 @@ to provide the data to send. | ||||
|  variable types passed to it instead of doubles so that big files work | ||||
|  correctly. | ||||
|  | ||||
| 15.8 remove 'curl_httppost' from public | ||||
| 20.8 remove 'curl_httppost' from public | ||||
|  | ||||
|  curl_formadd() was made to fill in a public struct, but the fact that the | ||||
|  struct is public is never really used by application for their own advantage | ||||
| @@ -574,10 +642,21 @@ to provide the data to send. | ||||
|  Changing them to return a private handle will benefit the implementation and | ||||
|  allow us much greater freedoms while still maintining a solid API and ABI. | ||||
|  | ||||
| 15.9 have form functions use CURL handle argument | ||||
| 20.9 have form functions use CURL handle argument | ||||
|  | ||||
|  curl_formadd() and curl_formget() both currently have no CURL handle | ||||
|  argument, but both can use a callback that is set in the easy handle, and | ||||
|  thus curl_formget() with callback cannot function without first having | ||||
|  curl_easy_perform() (or similar) called - which is hard to grasp and a design | ||||
|  mistake. | ||||
|  | ||||
| 20.10 Add CURLOPT_MAIL_CLIENT option | ||||
|  | ||||
|  Rather than use the URL to specify the mail client string to present in the | ||||
|  HELO and EHLO commands, libcurl should support a new CURLOPT specifically for | ||||
|  specifing this data as the URL is non-standard and to be honest a bit of a | ||||
|  hack ;-) | ||||
|  | ||||
|  Please see the following thread for more information: | ||||
|  http://curl.haxx.se/mail/lib-2012-05/0178.html | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -93,7 +93,6 @@ What's the installed libcurl version? | ||||
|  | ||||
| How do I build a single file with a one-line command? | ||||
|  | ||||
|   $ `curl-config --cc --cflags --libs` -o example example.c | ||||
|  | ||||
|   $ `curl-config --cc --cflags` -o example example.c `curl-config --libs` | ||||
| .SH "SEE ALSO" | ||||
| .BR curl (1) | ||||
|   | ||||
							
								
								
									
										378
									
								
								docs/curl.1
									
									
									
									
									
								
							
							
						
						
									
										378
									
								
								docs/curl.1
									
									
									
									
									
								
							| @@ -20,7 +20,7 @@ | ||||
| .\" * | ||||
| .\" ************************************************************************** | ||||
| .\" | ||||
| .TH curl 1 "16 February 2012" "Curl 7.25.0" "Curl Manual" | ||||
| .TH curl 1 "27 July 2012" "Curl 7.27.0" "Curl Manual" | ||||
| .SH NAME | ||||
| curl \- transfer a URL | ||||
| .SH SYNOPSIS | ||||
| @@ -35,8 +35,8 @@ command is designed to work without user interaction. | ||||
|  | ||||
| curl offers a busload of useful tricks like proxy support, user | ||||
| authentication, FTP upload, HTTP post, SSL connections, cookies, file transfer | ||||
| resume and more. As you will see below, the number of features will make your | ||||
| head spin! | ||||
| resume, Metalink, and more. As you will see below, the number of features will | ||||
| make your head spin! | ||||
|  | ||||
| curl is powered by libcurl for all transfer-related features. See | ||||
| .BR libcurl (3) | ||||
| @@ -79,14 +79,14 @@ curl will do its best to use what you pass to it as a URL. It is not trying to | ||||
| validate it as a syntactically correct URL by any means but is instead | ||||
| \fBvery\fP liberal with what it accepts. | ||||
|  | ||||
| Curl will attempt to re-use connections for multiple file transfers, so that | ||||
| curl will attempt to re-use connections for multiple file transfers, so that | ||||
| getting many files from the same server will not do multiple connects / | ||||
| handshakes. This improves speed. Of course this is only done on files | ||||
| specified on a single command line and cannot be used between separate curl | ||||
| invokes. | ||||
| .SH "PROGRESS METER" | ||||
| curl normally displays a progress meter during operations, indicating the amount | ||||
| of transferred data, transfer speeds and estimated time left, etc. | ||||
| curl normally displays a progress meter during operations, indicating the | ||||
| amount of transferred data, transfer speeds and estimated time left, etc. | ||||
|  | ||||
| curl displays this data to the terminal by default, so if you invoke curl to | ||||
| do an operation and it is about to write data to the terminal, it | ||||
| @@ -103,7 +103,7 @@ any response data to the terminal. | ||||
| If you prefer a progress "bar" instead of the regular meter, \fI-#\fP is your | ||||
| friend. | ||||
| .SH OPTIONS | ||||
| In general, all boolean options are enabled with --option and yet again | ||||
| In general, all boolean options are enabled with --\fBoption\fP and yet again | ||||
| disabled with --\fBno-\fPoption. That is, you use the exact same option name | ||||
| but prefix it with "no-". However, in this list we mostly only list and show | ||||
| the --option version of them. (This concept with --no options was added in | ||||
| @@ -125,14 +125,13 @@ Forces curl to use SSL version 2 when negotiating with a remote SSL server. | ||||
| (SSL) | ||||
| Forces curl to use SSL version 3 when negotiating with a remote SSL server. | ||||
| .IP "-4, --ipv4" | ||||
| If libcurl is capable of resolving an address to multiple IP versions (which | ||||
| it is if it is IPv6-capable), this option tells libcurl to resolve names to | ||||
| IPv4 addresses only. | ||||
| If curl is capable of resolving an address to multiple IP versions (which it | ||||
| is if it is IPv6-capable), this option tells curl to resolve names to IPv4 | ||||
| addresses only. | ||||
| .IP "-6, --ipv6" | ||||
| If libcurl is capable of resolving an address to multiple IP versions (which | ||||
| it is if it is IPv6-capable), this option tells libcurl to resolve names to | ||||
| IPv6 addresses only. | ||||
| default statistics. | ||||
| If curl is capable of resolving an address to multiple IP versions (which it | ||||
| is if it is IPv6-capable), this option tells curl to resolve names to IPv6 | ||||
| addresses only. | ||||
| .IP "-a, --append" | ||||
| (FTP/SFTP) When used in an upload, this will tell curl to append to the target | ||||
| file instead of overwriting it. If the file doesn't exist, it will be created. | ||||
| @@ -143,8 +142,7 @@ done CGIs fail if this field isn't set to "Mozilla/4.0". To encode blanks in | ||||
| the string, surround the string with single quote marks. This can also be set | ||||
| with the \fI-H, --header\fP option of course. | ||||
|  | ||||
| If this option is set more than once, the last one will be the one that's | ||||
| used. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--anyauth" | ||||
| (HTTP) Tells curl to figure out authentication method by itself, and use the | ||||
| most secure one the remote site claims to support. This is done by first | ||||
| @@ -176,10 +174,9 @@ input. No cookies will be stored in the file. To store cookies, use the | ||||
| \fI-c, --cookie-jar\fP option or you could even save the HTTP headers to a file | ||||
| using \fI-D, --dump-header\fP! | ||||
|  | ||||
| If this option is set more than once, the last one will be the one that's | ||||
| used. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-B, --use-ascii" | ||||
| Enable ASCII transfer when using FTP or LDAP. For FTP, this can also be | ||||
| (FTP/LDAP) Enable ASCII transfer. For FTP, this can also be | ||||
| enforced by using an URL that ends with ";type=A". This option causes data | ||||
| sent to stdout to be in text mode for win32 systems. | ||||
| .IP "--basic" | ||||
| @@ -188,12 +185,12 @@ this option is usually pointless, unless you use it to override a previously | ||||
| set option that sets a different authentication method (such as \fI--ntlm\fP, | ||||
| \fI--digest\fP, or \fI--negotiate\fP). | ||||
| .IP "-c, --cookie-jar <file name>" | ||||
| Specify to which file you want curl to write all cookies after a completed | ||||
| operation. Curl writes all cookies previously read from a specified file as | ||||
| well as all cookies received from remote server(s). If no cookies are known, | ||||
| no file will be written. The file will be written using the Netscape cookie | ||||
| file format. If you set the file name to a single dash, "-", the cookies will | ||||
| be written to stdout. | ||||
| (HTTP) Specify to which file you want curl to write all cookies after a | ||||
| completed operation. Curl writes all cookies previously read from a specified | ||||
| file as well as all cookies received from remote server(s). If no cookies are | ||||
| known, no file will be written. The file will be written using the Netscape | ||||
| cookie file format. If you set the file name to a single dash, "-", the | ||||
| cookies will be written to stdout. | ||||
|  | ||||
| This command line option will activate the cookie engine that makes curl | ||||
| record and use cookies. Another way to activate it is to use the \fI-b, | ||||
| @@ -221,13 +218,13 @@ If this option is used several times, the last one will be used. | ||||
| must specify valid ciphers. Read up on SSL cipher list details on this URL: | ||||
| \fIhttp://www.openssl.org/docs/apps/ciphers.html\fP | ||||
|  | ||||
| NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of | ||||
| NSS ciphers is in the NSSCipherSuite entry at this URL: | ||||
| \fIhttp://directory.fedora.redhat.com/docs/mod_nss.html#Directives\fP | ||||
| NSS ciphers are done differently than OpenSSL and GnuTLS. The full list of NSS | ||||
| ciphers is in the NSSCipherSuite entry at this URL: | ||||
| \fIhttp://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP | ||||
|  | ||||
| If this option is used several times, the last one will override the others. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--compressed" | ||||
| (HTTP) Request a compressed response using one of the algorithms libcurl | ||||
| (HTTP) Request a compressed response using one of the algorithms curl | ||||
| supports, and save the uncompressed document.  If this option is used and the | ||||
| server sends an unsupported encoding, curl will report an error. | ||||
| .IP "--connect-timeout <seconds>" | ||||
| @@ -237,10 +234,10 @@ of no more use. See also the \fI-m, --max-time\fP option. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--create-dirs" | ||||
| When used in conjunction with the -o option, curl will create the necessary | ||||
| local directory hierarchy as needed. This option creates the dirs mentioned | ||||
| with the -o option, nothing else. If the -o file name uses no dir or if the | ||||
| dirs it mentions already exist, no dir will be created. | ||||
| When used in conjunction with the \fI-o\fP option, curl will create the | ||||
| necessary local directory hierarchy as needed. This option creates the dirs | ||||
| mentioned with the \fI-o\fP option, nothing else. If the \fI-o\fP file name | ||||
| uses no dir or if the dirs it mentions already exist, no dir will be created. | ||||
|  | ||||
| To create remote directories when using FTP or SFTP, try | ||||
| \fI--ftp-create-dirs\fP. | ||||
| @@ -277,7 +274,7 @@ specified. Posting data from a file named 'foobar' would thus be done with | ||||
| .IP "-D, --dump-header <file>" | ||||
| Write the protocol headers to the specified file. | ||||
|  | ||||
| This option is handy to use when you want to store the headers that a HTTP | ||||
| This option is handy to use when you want to store the headers that an HTTP | ||||
| site sends to you. Cookies from the headers could then be read in a second | ||||
| curl invocation by using the \fI-b, --cookie\fP option! The | ||||
| \fI-c, --cookie-jar\fP option is however a better way to store cookies. | ||||
| @@ -285,8 +282,10 @@ curl invocation by using the \fI-b, --cookie\fP option! The | ||||
| When used in FTP, the FTP server response lines are considered being "headers" | ||||
| and thus are saved there. | ||||
|  | ||||
| If this option is used several times, the last one will be used.  IP | ||||
| "--data-ascii <data>" See \fI-d, --data\fP. | ||||
| If this option is used several times, the last one will be used. | ||||
|  | ||||
| .IP "--data-ascii <data>" | ||||
| See \fI-d, --data\fP. | ||||
| .IP "--data-binary <data>" | ||||
| (HTTP) This posts data exactly as specified with no extra processing | ||||
| whatsoever. | ||||
| @@ -337,21 +336,20 @@ service ticket, which is a matter of realm policy. | ||||
| Unconditionally allow the server to delegate. | ||||
| .RE | ||||
| .IP "--digest" | ||||
| (HTTP) Enables HTTP Digest authentication. This is a authentication that | ||||
| prevents the password from being sent over the wire in clear text. Use this in | ||||
| combination with the normal \fI-u, --user\fP option to set user name and | ||||
| password. See also \fI--ntlm\fP, \fI--negotiate\fP and \fI--anyauth\fP for | ||||
| (HTTP) Enables HTTP Digest authentication. This is an authentication scheme | ||||
| that prevents the password from being sent over the wire in clear text. Use | ||||
| this in combination with the normal \fI-u, --user\fP option to set user name | ||||
| and password. See also \fI--ntlm\fP, \fI--negotiate\fP and \fI--anyauth\fP for | ||||
| related options. | ||||
|  | ||||
| If this option is used several times, the following occurrences make no | ||||
| difference. | ||||
| If this option is used several times, only the first one is used. | ||||
| .IP "--disable-eprt" | ||||
| (FTP) Tell curl to disable the use of the EPRT and LPRT commands when doing | ||||
| active FTP transfers. Curl will normally always first attempt to use EPRT, | ||||
| then LPRT before using PORT, but with this option, it will use PORT right | ||||
| away. EPRT and LPRT are extensions to the original FTP protocol, and may not work | ||||
| on all servers, but they enable more functionality in a better way than the | ||||
| traditional PORT command. | ||||
| away. EPRT and LPRT are extensions to the original FTP protocol, and may not | ||||
| work on all servers, but they enable more functionality in a better way than | ||||
| the traditional PORT command. | ||||
|  | ||||
| \fB--eprt\fP can be used to explicitly enable EPRT again and \fB--no-eprt\fP | ||||
| is an alias for \fB--disable-eprt\fP. | ||||
| @@ -399,9 +397,9 @@ operations. Use \fI--engine list\fP to print a list of build-time supported | ||||
| engines. Note that not all (or none) of the engines may be available at | ||||
| run-time. | ||||
| .IP "--environment" | ||||
| (RISC OS ONLY) Sets a range of environment variables, using the names the -w | ||||
| option supports, to allow easier extraction of useful information after having | ||||
| run curl. | ||||
| (RISC OS ONLY) Sets a range of environment variables, using the names the | ||||
| \fI-w\fP option supports, to allow easier extraction of useful information | ||||
| after having run curl. | ||||
| .IP "--egd-file <file>" | ||||
| (SSL) Specify the path name to the Entropy Gathering Daemon socket. The socket | ||||
| is used to seed the random engine for SSL connections. See also the | ||||
| @@ -446,7 +444,7 @@ used several times, the last one will be used. | ||||
| .IP "-f, --fail" | ||||
| (HTTP) Fail silently (no output at all) on server errors. This is mostly done | ||||
| to better enable scripts etc to better deal with failed attempts. In | ||||
| normal cases when a HTTP server fails to deliver a document, it returns an | ||||
| normal cases when an HTTP server fails to deliver a document, it returns an | ||||
| HTML document stating so (which often also describes why and more). This flag | ||||
| will prevent curl from outputting that and return error 22. | ||||
|  | ||||
| @@ -494,7 +492,7 @@ This option can be used multiple times. | ||||
| has been provided, this data is sent off using the ACCT command. (Added in | ||||
| 7.13.0) | ||||
|  | ||||
| If this option is used twice, the second will override the previous use. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--ftp-alternative-to-user <command>" | ||||
| (FTP) If authenticating with the USER and PASS commands fails, send this | ||||
| command.  When connecting to Tumbleweed's Secure Transport server over FTPS | ||||
| @@ -506,7 +504,7 @@ currently exist on the server, the standard behavior of curl is to | ||||
| fail. Using this option, curl will instead attempt to create missing | ||||
| directories. | ||||
| .IP "--ftp-method [method]" | ||||
| (FTP) Control what method curl should use to reach a file on a FTP(S) | ||||
| (FTP) Control what method curl should use to reach a file on an FTP(S) | ||||
| server. The method argument should be one of the following alternatives: | ||||
| .RS | ||||
| .IP multicwd | ||||
| @@ -527,9 +525,9 @@ compliant than 'nocwd' but without the full penalty of 'multicwd'. | ||||
| behavior, but using this option can be used to override a previous | ||||
| \fI-P/-ftp-port\fP option. (Added in 7.11.0) | ||||
|  | ||||
| If this option is used several times, the following occurrences make no | ||||
| difference. Undoing an enforced passive really isn't doable but you must then | ||||
| instead enforce the correct \fI-P, --ftp-port\fP again. | ||||
| If this option is used several times, only the first one is used. Undoing an | ||||
| enforced passive really isn't doable but you must then instead enforce the | ||||
| correct \fI-P, --ftp-port\fP again. | ||||
|  | ||||
| Passive mode means that curl will try the EPSV command first and then PASV, | ||||
| unless \fI--disable-epsv\fP is used. | ||||
| @@ -550,7 +548,7 @@ directory listings as well as up and downloads in PASV mode. | ||||
| Shuts down the SSL/TLS layer after authenticating. The rest of the | ||||
| control channel communication will be unencrypted. This allows | ||||
| NAT routers to follow the FTP transaction. The default mode is | ||||
| passive. See --ftp-ssl-ccc-mode for other modes. | ||||
| passive. See \fI--ftp-ssl-ccc-mode\fP for other modes. | ||||
| (Added in 7.16.1) | ||||
| .IP "--ftp-ssl-ccc-mode [active/passive]" | ||||
| (FTP) Use CCC (Clear Command Channel) | ||||
| @@ -577,16 +575,16 @@ interpreted by curl itself. Note that these letters are not normal legal URL | ||||
| contents but they should be encoded according to the URI standard. | ||||
| .IP "-G, --get" | ||||
| When used, this option will make all data specified with \fI-d, --data\fP or | ||||
| \fI--data-binary\fP to be used in a HTTP GET request instead of the POST | ||||
| \fI--data-binary\fP to be used in an HTTP GET request instead of the POST | ||||
| request that otherwise would be used. The data will be appended to the URL | ||||
| with a '?' separator. | ||||
|  | ||||
| If used in combination with -I, the POST data will instead be appended to the | ||||
| URL with a HEAD request. | ||||
|  | ||||
| If this option is used several times, the following occurrences make no | ||||
| difference. This is because undoing a GET doesn't make sense, but you should | ||||
| then instead enforce the alternative method you prefer. | ||||
| If this option is used several times, only the first one is used. This is | ||||
| because undoing a GET doesn't make sense, but you should then instead enforce | ||||
| the alternative method you prefer. | ||||
| .IP "-H, --header <header>" | ||||
| (HTTP) Extra header to use when getting a web page. You may specify any number | ||||
| of extra headers. Note that if you should add a custom header that has the | ||||
| @@ -595,9 +593,9 @@ header will be used instead of the internal one. This allows you to make even | ||||
| trickier stuff than curl would normally do. You should not replace internally | ||||
| set headers without knowing perfectly well what you're doing. Remove an | ||||
| internal header by giving a replacement without content on the right side of | ||||
| the colon, as in: -H \&"Host:". If you send the custom header with no-value then | ||||
| its header must be terminated with a semicolon, such as \-H "X-Custom-Header;" | ||||
| to send "X-Custom-Header:". | ||||
| the colon, as in: -H \&"Host:". If you send the custom header with no-value | ||||
| then its header must be terminated with a semicolon, such as \-H | ||||
| \&"X-Custom-Header;" to send "X-Custom-Header:". | ||||
|  | ||||
| curl will make sure that each header you add/replace is sent with the proper | ||||
| end-of-line marker, you should thus \fBnot\fP add that as a part of the header | ||||
| @@ -608,10 +606,9 @@ See also the \fI-A, --user-agent\fP and \fI-e, --referer\fP options. | ||||
|  | ||||
| This option can be used multiple times to add/replace/remove multiple headers. | ||||
| .IP "--hostpubmd5 <md5>" | ||||
| Pass a string containing 32 hexadecimal digits. The string should be the 128 | ||||
| bit MD5 checksum of the remote host's public key, curl will refuse the | ||||
| connection with the host unless the md5sums match. This option is only for SCP | ||||
| and SFTP transfers. (Added in 7.17.1) | ||||
| (SCP/SFTP) Pass a string containing 32 hexadecimal digits. The string should | ||||
| be the 128 bit MD5 checksum of the remote host's public key, curl will refuse | ||||
| the connection with the host unless the md5sums match. (Added in 7.17.1) | ||||
| .IP "--ignore-content-length" | ||||
| (HTTP) | ||||
| Ignore the Content-Length header. This is particularly useful for servers | ||||
| @@ -624,7 +621,7 @@ like server-name, date of the document, HTTP-version and more... | ||||
| (HTTP/FTP/FILE) | ||||
| Fetch the HTTP-header only! HTTP-servers feature the command HEAD | ||||
| which this uses to get nothing but the header of a document. When used | ||||
| on a FTP or FILE file, curl displays the file size and last modification | ||||
| on an FTP or FILE file, curl displays the file size and last modification | ||||
| time only. | ||||
| .IP "--interface <name>" | ||||
| Perform an operation using a specified interface. You can enter interface | ||||
| @@ -639,8 +636,9 @@ make it discard all "session cookies". This will basically have the same effect | ||||
| as if a new session is started. Typical browsers always discard session | ||||
| cookies when they're closed down. | ||||
| .IP "-J, --remote-header-name" | ||||
| (HTTP) This option tells the -O, --remote-name option to use the server-specified | ||||
| Content-Disposition filename instead of extracting a filename from the URL. | ||||
| (HTTP) This option tells the \fI-O, --remote-name\fP option to use the | ||||
| server-specified Content-Disposition filename instead of extracting a filename | ||||
| from the URL. | ||||
| .IP "-k, --insecure" | ||||
| (SSL) This option explicitly allows curl to perform "insecure" SSL connections | ||||
| and transfers. All SSL connections are attempted to be made secure by using | ||||
| @@ -711,7 +709,7 @@ currently effective on operating systems offering the TCP_KEEPIDLE and | ||||
| TCP_KEEPINTVL socket options (meaning Linux, recent AIX, HP-UX and more). This | ||||
| option has no effect if \fI--no-keepalive\fP is used. (Added in 7.18.0) | ||||
|  | ||||
| If this option is used multiple times, the last occurrence sets the amount. If | ||||
| If this option is used several times, the last one will be used. If | ||||
| unspecified, the option defaults to 60 seconds. | ||||
| .IP "--key <key>" | ||||
| (SSL/SSH) Private key file name. Allows you to provide your private key in this | ||||
| @@ -817,9 +815,9 @@ Specify the maximum size (in bytes) of a file to download. If the file | ||||
| requested is larger than this value, the transfer will not start and curl will | ||||
| return with exit code 63. | ||||
|  | ||||
| \fBNOTE:\fP The file size is not always known prior to download, and for such files | ||||
| this option has no effect even if the file transfer ends up being larger than | ||||
| this given limit. This concerns both FTP and HTTP transfers. | ||||
| \fBNOTE:\fP The file size is not always known prior to download, and for such | ||||
| files this option has no effect even if the file transfer ends up being larger | ||||
| than this given limit. This concerns both FTP and HTTP transfers. | ||||
| .IP "--mail-rcpt <address>" | ||||
| (SMTP) Specify a single address that the given mail should get sent to. This | ||||
| option can be used multiple times to specify many recipients. | ||||
| @@ -832,6 +830,31 @@ is used, this option can be used to prevent curl from following redirections | ||||
| option to -1 to make it limitless. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--metalink" | ||||
| This option can tell curl to parse and process a given URI as Metalink file | ||||
| (both version 3 and 4 (RFC 5854) are supported) and make use of the mirrors | ||||
| listed within for failover if there are errors (such as the file or server not | ||||
| being available). It will also verify the hash of the file after the download | ||||
| completes. The Metalink file itself is downloaded and processed in memory and | ||||
| not stored in the local file system. | ||||
|  | ||||
| Example to use a remote Metalink file: | ||||
|  | ||||
| \fBcurl\fP --metalink http://www.example.com/example.metalink | ||||
|  | ||||
| To use a Metalink file in the local file system, use FILE protocol | ||||
| (file://): | ||||
|  | ||||
| \fBcurl\fP --metalink file://example.metalink | ||||
|  | ||||
| Please note that if FILE protocol is disabled, there is no way to use | ||||
| a local Metalink file at the time of this writing. Also note that if | ||||
| \fI--metalink\fP and \fI--include\fP are used together, \fI--include\fP will be | ||||
| ignored. This is because including headers in the response will break | ||||
| Metalink parser and if the headers are included in the file described | ||||
| in Metalink file, hash check will fail. | ||||
|  | ||||
| (Added in 7.27.0, if built against the libmetalink library.) | ||||
| .IP "-n, --netrc" | ||||
| Makes curl scan the \fI.netrc\fP (\fI_netrc\fP on Windows) file in the user's | ||||
| home directory for login name and password. This is typically used for FTP on | ||||
| @@ -865,7 +888,7 @@ You can only specify one netrc file per invocation. If several | ||||
| (Added in 7.21.5) | ||||
|  | ||||
| This option overrides any use of \fI--netrc\fP as they are mutually exclusive. | ||||
| It will also abide by --netrc-optional if specified. | ||||
| It will also abide by \fI--netrc-optional\fP if specified. | ||||
|  | ||||
| .IP "--netrc-optional" | ||||
| Very similar to \fI--netrc\fP, but this option makes the .netrc usage | ||||
| @@ -885,12 +908,11 @@ This option requires a library built with GSSAPI support. This is | ||||
| not very common. Use \fI-V, --version\fP to see if your version supports | ||||
| GSS-Negotiate. | ||||
|  | ||||
| When using this option, you must also provide a fake -u, --user option to | ||||
| When using this option, you must also provide a fake \fI-u, --user\fP option to | ||||
| activate the authentication code properly. Sending a '-u :' is enough as the | ||||
| user name and password from the -u option aren't actually used. | ||||
| user name and password from the \fI-u\fP option aren't actually used. | ||||
|  | ||||
| If this option is used several times, the following occurrences make no | ||||
| difference. | ||||
| If this option is used several times, only the first one is used. | ||||
| .IP "--no-keepalive" | ||||
| Disables the use of keepalive messages on the TCP connection, as by default | ||||
| curl enables them. | ||||
| @@ -927,8 +949,7 @@ If you want to enable NTLM for your proxy authentication, then use | ||||
| This option requires a library built with SSL support. Use | ||||
| \fI-V, --version\fP to see if your curl supports NTLM. | ||||
|  | ||||
| If this option is used several times, the following occurrences make no | ||||
| difference. | ||||
| If this option is used several times, only the first one is used. | ||||
| .IP "-o, --output <file>" | ||||
| Write output to <file> instead of stdout. If you are using {} or [] to fetch | ||||
| multiple documents, you can use '#' followed by a number in the <file> | ||||
| @@ -996,16 +1017,16 @@ available. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--post301" | ||||
| Tells curl to respect RFC 2616/10.3.2 and not convert POST requests into GET | ||||
| requests when following a 301 redirection. The non-RFC behaviour is ubiquitous | ||||
| in web browsers, so curl does the conversion by default to maintain | ||||
| (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests | ||||
| into GET requests when following a 301 redirection. The non-RFC behaviour is | ||||
| ubiquitous in web browsers, so curl does the conversion by default to maintain | ||||
| consistency. However, a server may require a POST to remain a POST after such | ||||
| a redirection. This option is meaningful only when using \fI-L, --location\fP | ||||
| (Added in 7.17.1) | ||||
| .IP "--post302" | ||||
| Tells curl to respect RFC 2616/10.3.2 and not convert POST requests into GET | ||||
| requests when following a 302 redirection. The non-RFC behaviour is ubiquitous | ||||
| in web browsers, so curl does the conversion by default to maintain | ||||
| (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests | ||||
| into GET requests when following a 302 redirection. The non-RFC behaviour is | ||||
| ubiquitous in web browsers, so curl does the conversion by default to maintain | ||||
| consistency. However, a server may require a POST to remain a POST after such | ||||
| a redirection. This option is meaningful only when using \fI-L, --location\fP | ||||
| (Added in 7.19.1) | ||||
| @@ -1094,24 +1115,24 @@ default config file search path. | ||||
| commands are sent BEFORE the transfer takes place (just after the initial PWD | ||||
| command in an FTP transfer, to be exact). To make commands take place after a | ||||
| successful transfer, prefix them with a dash '-'.  To make commands be sent | ||||
| after libcurl has changed the working directory, just before the transfer | ||||
| after curl has changed the working directory, just before the transfer | ||||
| command(s), prefix the command with a '+' (this is only supported for | ||||
| FTP). You may specify any number of commands. If the server returns failure | ||||
| for one of the commands, the entire operation will be aborted. You must send | ||||
| syntactically correct FTP commands as RFC 959 defines to FTP servers, or one | ||||
| of the commands listed below to SFTP servers.  This option can be used | ||||
| multiple times. When speaking to a FTP server, prefix the command with an | ||||
| asterisk (*) to make libcurl continue even if the command fails as by default | ||||
| multiple times. When speaking to an FTP server, prefix the command with an | ||||
| asterisk (*) to make curl continue even if the command fails as by default | ||||
| curl will stop at first failure. | ||||
|  | ||||
| SFTP is a binary protocol. Unlike for FTP, libcurl interprets SFTP quote | ||||
| commands itself before sending them to the server.  File names may be quoted | ||||
| SFTP is a binary protocol. Unlike for FTP, curl interprets SFTP quote commands | ||||
| itself before sending them to the server.  File names may be quoted | ||||
| shell-style to embed spaces or special characters.  Following is the list of | ||||
| all supported SFTP quote commands: | ||||
| .RS | ||||
| .IP "chgrp group file" | ||||
| The chgrp command sets the group ID of the file named by the file operand to the | ||||
| group ID specified by the group operand. The group operand is a decimal | ||||
| The chgrp command sets the group ID of the file named by the file operand to | ||||
| the group ID specified by the group operand. The group operand is a decimal | ||||
| integer group ID. | ||||
| .IP "chmod mode file" | ||||
| The chmod command modifies the file mode bits of the specified file. The | ||||
| @@ -1169,9 +1190,10 @@ specifies two separate 100-byte ranges(*)(H) | ||||
| (*) = NOTE that this will cause the server to reply with a multipart | ||||
| response! | ||||
|  | ||||
| Only digit characters (0-9) are valid in the 'start' and 'stop' fields of | ||||
| the \&'start-stop' range syntax. If a non-digit character is given in the range, the server's | ||||
| response will be unspecified, depending on the server's configuration. | ||||
| Only digit characters (0-9) are valid in the 'start' and 'stop' fields of the | ||||
| \&'start-stop' range syntax. If a non-digit character is given in the range, | ||||
| the server's response will be unspecified, depending on the server's | ||||
| configuration. | ||||
|  | ||||
| You should also be aware that many HTTP/1.1 servers do not have this feature | ||||
| enabled, so that when you attempt to get a range, you'll instead get the whole | ||||
| @@ -1183,7 +1205,7 @@ FTP command SIZE. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-R, --remote-time" | ||||
| When used, this will make libcurl attempt to figure out the timestamp of the | ||||
| When used, this will make curl attempt to figure out the timestamp of the | ||||
| remote file, and if that is available make the local file get that same | ||||
| timestamp. | ||||
| .IP "--random-file <file>" | ||||
| @@ -1191,7 +1213,7 @@ timestamp. | ||||
| random data. The data is used to seed the random engine for SSL connections. | ||||
| See also the \fI--egd-file\fP option. | ||||
| .IP "--raw" | ||||
| When used, it disables all internal HTTP decoding of content or transfer | ||||
| (HTTP) When used, it disables all internal HTTP decoding of content or transfer | ||||
| encodings and instead makes them passed on unaltered, raw. (Added in 7.16.2) | ||||
| .IP "--remote-name-all" | ||||
| This option changes the default action for all given URLs to be dealt with as | ||||
| @@ -1223,7 +1245,7 @@ using \fI--retry-delay\fP you disable this exponential backoff algorithm. See | ||||
| also \fI--retry-max-time\fP to limit the total time allowed for | ||||
| retries. (Added in 7.12.3) | ||||
|  | ||||
| If this option is used multiple times, the last occurrence decide the amount. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--retry-delay <seconds>" | ||||
| Make curl sleep this amount of time before each retry when a transfer has | ||||
| failed with a transient error (it changes the default backoff time algorithm | ||||
| @@ -1231,7 +1253,7 @@ between retries). This option is only interesting if \fI--retry\fP is also | ||||
| used. Setting this delay to zero will make curl use the default backoff time. | ||||
| (Added in 7.12.3) | ||||
|  | ||||
| If this option is used multiple times, the last occurrence determines the amount. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--retry-max-time <seconds>" | ||||
| The retry timer is reset before the first transfer attempt. Retries will be | ||||
| done as usual (see \fI--retry\fP) as long as the timer hasn't reached this | ||||
| @@ -1240,13 +1262,12 @@ will be made and while performing, it may take longer than this given time | ||||
| period. To limit a single request\'s maximum time, use \fI-m, --max-time\fP. | ||||
| Set this option to zero to not timeout retries. (Added in 7.12.3) | ||||
|  | ||||
| If this option is used multiple times, the last occurrence determines the | ||||
| amount. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-s, --silent" | ||||
| Silent or quiet mode. Don't show progress meter or error messages.  Makes | ||||
| Curl mute. | ||||
| .IP "-S, --show-error" | ||||
| When used with -s it makes curl show an error message if it fails. | ||||
| When used with \fI-s\fP it makes curl show an error message if it fails. | ||||
| .IP "--ssl" | ||||
| (FTP, POP3, IMAP, SMTP) Try to use SSL/TLS for the connection.  Reverts to a | ||||
| non-secure connection if the server doesn't support SSL/TLS.  See also | ||||
| @@ -1350,7 +1371,7 @@ part in the specified URL, Curl will append the local file name. NOTE that you | ||||
| must use a trailing / on the last directory to really prove to Curl that there | ||||
| is no file name or curl will think that your last directory name is the remote | ||||
| file name to use. That will most likely cause the upload operation to fail. If | ||||
| this is used on a HTTP(S) server, the PUT command will be used. | ||||
| this is used on an HTTP(S) server, the PUT command will be used. | ||||
|  | ||||
| Use the file name "-" (a single dash) to use stdin instead of a given file. | ||||
| Alternately, the file name "." (a single period) may be specified instead | ||||
| @@ -1393,7 +1414,7 @@ Set password for use with the TLS authentication method specified with | ||||
| 7.21.4) | ||||
| .IP "--tr-encoding" | ||||
| (HTTP) Request a compressed Transfer-Encoding response using one of the | ||||
| algorithms libcurl supports, and uncompress the data while receiving it. | ||||
| algorithms curl supports, and uncompress the data while receiving it. | ||||
|  | ||||
| (Added in 7.21.6) | ||||
| .IP "--trace <file>" | ||||
| @@ -1478,12 +1499,21 @@ space with \\t. | ||||
| The %-symbol is a special symbol in the win32-environment, where all | ||||
| occurrences of % must be doubled when using this option. | ||||
|  | ||||
| The variables available at this point are: | ||||
| The variables available are: | ||||
| .RS | ||||
| .TP 15 | ||||
| .B url_effective | ||||
| The URL that was fetched last. This is most meaningful if you've told curl | ||||
| to follow location: headers. | ||||
| .B content_type | ||||
| The Content-Type of the requested document, if there was any. | ||||
| .TP | ||||
| .B filename_effective | ||||
| The ultimate filename that curl writes out to. This is only meaningful if curl | ||||
| is told to write to a file with the \fI--remote-name\fP or \fI--output\fP | ||||
| option. It's most useful in combination with the \fI--remote-header-name\fP | ||||
| option. (Added in 7.25.1) | ||||
| .TP | ||||
| .B ftp_entry_path | ||||
| The initial path curl ended up in when logging on to the remote FTP | ||||
| server. (Added in 7.15.4) | ||||
| .TP | ||||
| .B http_code | ||||
| The numerical response code that was found in the last retrieved HTTP(S) or | ||||
| @@ -1494,21 +1524,51 @@ same info. | ||||
| The numerical code that was found in the last response (from a proxy) to a | ||||
| curl CONNECT request. (Added in 7.12.4) | ||||
| .TP | ||||
| .B time_total | ||||
| The total time, in seconds, that the full operation lasted. The time will be | ||||
| displayed with millisecond resolution. | ||||
| .B num_connects | ||||
| Number of new connects made in the recent transfer. (Added in 7.12.3) | ||||
| .TP | ||||
| .B time_namelookup | ||||
| The time, in seconds, it took from the start until the name resolving was | ||||
| completed. | ||||
| .B num_redirects | ||||
| Number of redirects that were followed in the request. (Added in 7.12.3) | ||||
| .TP | ||||
| .B redirect_url | ||||
| When an HTTP request was made without -L to follow redirects, this variable | ||||
| will show the actual URL a redirect \fIwould\fP take you to. (Added in 7.18.2) | ||||
| .TP | ||||
| .B size_download | ||||
| The total amount of bytes that were downloaded. | ||||
| .TP | ||||
| .B size_header | ||||
| The total amount of bytes of the downloaded headers. | ||||
| .TP | ||||
| .B size_request | ||||
| The total amount of bytes that were sent in the HTTP request. | ||||
| .TP | ||||
| .B size_upload | ||||
| The total amount of bytes that were uploaded. | ||||
| .TP | ||||
| .B speed_download | ||||
| The average download speed that curl measured for the complete download. Bytes | ||||
| per second. | ||||
| .TP | ||||
| .B speed_upload | ||||
| The average upload speed that curl measured for the complete upload. Bytes per | ||||
| second. | ||||
| .TP | ||||
| .B ssl_verify_result | ||||
| The result of the SSL peer certificate verification that was requested. 0 | ||||
| means the verification was successful. (Added in 7.19.0) | ||||
| .TP | ||||
| .B time_appconnect | ||||
| The time, in seconds, it took from the start until the SSL/SSH/etc | ||||
| connect/handshake to the remote host was completed. (Added in 7.19.0) | ||||
| .TP | ||||
| .B time_connect | ||||
| The time, in seconds, it took from the start until the TCP connect to the | ||||
| remote host (or proxy) was completed. | ||||
| .TP | ||||
| .B time_appconnect | ||||
| The time, in seconds, it took from the start until the SSL/SSH/etc | ||||
| connect/handshake to the remote host was completed. (Added in 7.19.0) | ||||
| .B time_namelookup | ||||
| The time, in seconds, it took from the start until the name resolving was | ||||
| completed. | ||||
| .TP | ||||
| .B time_pretransfer | ||||
| The time, in seconds, it took from the start until the file transfer was just | ||||
| @@ -1522,54 +1582,21 @@ started. time_redirect shows the complete execution time for multiple | ||||
| redirections. (Added in 7.12.3) | ||||
| .TP | ||||
| .B time_starttransfer | ||||
| The time, in seconds, it took from the start until the first byte was just about | ||||
| to be transferred. This includes time_pretransfer and also the time the | ||||
| The time, in seconds, it took from the start until the first byte was just | ||||
| about to be transferred. This includes time_pretransfer and also the time the | ||||
| server needed to calculate the result. | ||||
| .TP | ||||
| .B size_download | ||||
| The total amount of bytes that were downloaded. | ||||
| .B time_total | ||||
| The total time, in seconds, that the full operation lasted. The time will be | ||||
| displayed with millisecond resolution. | ||||
| .TP | ||||
| .B size_upload | ||||
| The total amount of bytes that were uploaded. | ||||
| .TP | ||||
| .B size_header | ||||
| The total amount of bytes of the downloaded headers. | ||||
| .TP | ||||
| .B size_request | ||||
| The total amount of bytes that were sent in the HTTP request. | ||||
| .TP | ||||
| .B speed_download | ||||
| The average download speed that curl measured for the complete download. Bytes | ||||
| per second. | ||||
| .TP | ||||
| .B speed_upload | ||||
| The average upload speed that curl measured for the complete upload. Bytes per | ||||
| second. | ||||
| .TP | ||||
| .B content_type | ||||
| The Content-Type of the requested document, if there was any. | ||||
| .TP | ||||
| .B num_connects | ||||
| Number of new connects made in the recent transfer. (Added in 7.12.3) | ||||
| .TP | ||||
| .B num_redirects | ||||
| Number of redirects that were followed in the request. (Added in 7.12.3) | ||||
| .TP | ||||
| .B redirect_url | ||||
| When a HTTP request was made without -L to follow redirects, this variable | ||||
| will show the actual URL a redirect \fIwould\fP take you to. (Added in 7.18.2) | ||||
| .TP | ||||
| .B ftp_entry_path | ||||
| The initial path libcurl ended up in when logging on to the remote FTP | ||||
| server. (Added in 7.15.4) | ||||
| .TP | ||||
| .B ssl_verify_result | ||||
| The result of the SSL peer certificate verification that was requested. 0 | ||||
| means the verification was successful. (Added in 7.19.0) | ||||
| .B url_effective | ||||
| The URL that was fetched last. This is most meaningful if you've told curl | ||||
| to follow location: headers. | ||||
| .RE | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-x, --proxy <[protocol://][user@password]proxyhost[:port]>" | ||||
| .IP "-x, --proxy <[protocol://][user:password@]proxyhost[:port]>" | ||||
| Use the specified HTTP proxy. If the port number is not specified, it is | ||||
| assumed at port 1080. | ||||
|  | ||||
| @@ -1577,11 +1604,15 @@ This option overrides existing environment variables that set the proxy to | ||||
| use. If there's an environment variable setting a proxy, you can set proxy to | ||||
| \&"" to override it. | ||||
|  | ||||
| All operations that are performed over a HTTP proxy will transparently be | ||||
| All operations that are performed over an HTTP proxy will transparently be | ||||
| converted to HTTP. It means that certain protocol specific operations might | ||||
| not be available. This is not the case if you can tunnel through the proxy, as | ||||
| one with the \fI-p, --proxytunnel\fP option. | ||||
|  | ||||
| User and password that might be provided in the proxy string are URL decoded | ||||
| by curl. This allows you to pass in special characters such as @ by using %40 | ||||
| or pass in a colon with %3a. | ||||
|  | ||||
| The proxy host can be specified the exact same way as the proxy environment | ||||
| variables, including the protocol prefix (http://) and the embedded user + | ||||
| password. | ||||
| @@ -1616,7 +1647,7 @@ attributes, a warning is issued. | ||||
| .IP "-y, --speed-time <time>" | ||||
| If a download is slower than speed-limit bytes per second during a speed-time | ||||
| period, the download gets aborted. If speed-time is used, the default | ||||
| speed-limit will be 1 unless set with -Y. | ||||
| speed-limit will be 1 unless set with \fI-Y\fP. | ||||
|  | ||||
| This option controls transfers and thus will not affect slow connects etc. If | ||||
| this is a concern for you, try the \fI--connect-timeout\fP option. | ||||
| @@ -1624,16 +1655,17 @@ this is a concern for you, try the \fI--connect-timeout\fP option. | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-Y, --speed-limit <speed>" | ||||
| If a download is slower than this given speed (in bytes per second) for | ||||
| speed-time seconds it gets aborted. speed-time is set with -y and is 30 if | ||||
| not set. | ||||
| speed-time seconds it gets aborted. speed-time is set with \fI-y\fP and is 30 | ||||
| if not set. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-z, --time-cond <date expression>" | ||||
| (HTTP/FTP/FILE) Request a file that has been modified later than the given time | ||||
| and date, or one that has been modified before that time. The date expression | ||||
| .IP "-z/--time-cond <date expression>|<file>" | ||||
| (HTTP/FTP) Request a file that has been modified later than the given time and | ||||
| date, or one that has been modified before that time. The <date expression> | ||||
| can be all sorts of date strings or if it doesn't match any internal ones, it | ||||
| tries to get the time from a given file name instead! See the | ||||
| \fIcurl_getdate(3)\fP man pages for date expression details. | ||||
| is taken as a filename and tries to get the modification date (mtime) from | ||||
| <file> instead. See the \fIcurl_getdate(3)\fP man pages for date expression | ||||
| details. | ||||
|  | ||||
| Start the date expression with a dash (-) to make it request for a document | ||||
| that is older than the given date/time, default is a document that is newer | ||||
| @@ -1684,6 +1716,10 @@ SSPI is supported. If you use NTLM and set a blank user name, curl will | ||||
| authenticate with your current user and password. | ||||
| .IP "TLS-SRP" | ||||
| SRP (Secure Remote Password) authentication is supported for TLS. | ||||
| .IP "Metalink" | ||||
| This curl supports Metalink (both version 3 and 4 (RFC 5854)), which | ||||
| describes mirrors and hashes.  curl will use mirrors for failover if | ||||
| there are errors (such as the file or server not being available). | ||||
| .RE | ||||
| .SH FILES | ||||
| .I ~/.curlrc | ||||
| @@ -1715,7 +1751,7 @@ Since curl version 7.21.7, the proxy string may be specified with a | ||||
| protocol:// prefix to specify alternative proxy protocols. | ||||
|  | ||||
| If no protocol is specified in the proxy string or if the string doesn't match | ||||
| a supported one, the proxy will be treated as a HTTP proxy. | ||||
| a supported one, the proxy will be treated as an HTTP proxy. | ||||
|  | ||||
| The supported proxy protocol prefixes are as follows: | ||||
| .IP "socks4://" | ||||
|   | ||||
							
								
								
									
										2
									
								
								docs/examples/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								docs/examples/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -11,6 +11,7 @@ ftp-wildcard | ||||
| ftpget | ||||
| ftpgetinfo | ||||
| ftpgetresp | ||||
| ftpsget | ||||
| ftpupload | ||||
| getinfo | ||||
| getinmemory | ||||
| @@ -34,6 +35,7 @@ resolve | ||||
| rtsp | ||||
| sendrecv | ||||
| sepheaders | ||||
| sftpget | ||||
| simple | ||||
| simplepost | ||||
| simplesmtp | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -23,7 +23,7 @@ | ||||
| AUTOMAKE_OPTIONS = foreign nostdinc | ||||
|  | ||||
| EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \ | ||||
| 	Makefile.netware makefile.dj printf_macro.h $(COMPLICATED_EXAMPLES) | ||||
| 	Makefile.netware 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 | ||||
| @@ -34,19 +34,18 @@ EXTRA_DIST = README Makefile.example Makefile.inc Makefile.m32 \ | ||||
| # $(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 \ | ||||
| AM_CPPFLAGS = -I$(top_builddir)/include/curl \ | ||||
|               -I$(top_builddir)/include      \ | ||||
|            -I$(top_srcdir)/include | ||||
|               -I$(top_srcdir)/include \ | ||||
|               -DCURL_NO_OLDIES | ||||
|  | ||||
| LIBDIR = $(top_builddir)/lib | ||||
|  | ||||
| if STATICLIB | ||||
| # we need this define when building with a static lib on Windows | ||||
| STATICCPPFLAGS = -DCURL_STATICLIB | ||||
| # Mostly for Windows build targets, when using static libcurl | ||||
| if USE_CPPFLAG_CURL_STATICLIB | ||||
| AM_CPPFLAGS += -DCURL_STATICLIB | ||||
| endif | ||||
|  | ||||
| CPPFLAGS = -DCURL_NO_OLDIES $(STATICCPPFLAGS) | ||||
|  | ||||
| # Dependencies | ||||
| LDADD = $(LIBDIR)/libcurl.la | ||||
|  | ||||
|   | ||||
| @@ -5,11 +5,11 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \ | ||||
|   persistant post-callback postit2 sepheaders simple simplepost simplessl  \ | ||||
|   sendrecv httpcustomheader certinfo chkspeed ftpgetinfo ftp-wildcard \ | ||||
|   smtp-multi simplesmtp smtp-tls rtsp externalsocket resolve \ | ||||
|   progressfunc pop3s pop3slist imap url2file | ||||
|   progressfunc pop3s pop3slist imap url2file sftpget ftpsget | ||||
|  | ||||
| # 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 \ | ||||
|   smooth-gtk-thread.c version-check.pl | ||||
|   smooth-gtk-thread.c version-check.pl href_extractor.c | ||||
|   | ||||
| @@ -27,28 +27,22 @@ | ||||
| ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-spi-winidn | ||||
| ## | ||||
| ## Hint: you can also set environment vars to control the build, f.e.: | ||||
| ## set ZLIB_PATH=c:/zlib-1.2.5 | ||||
| ## set ZLIB_PATH=c:/zlib-1.2.7 | ||||
| ## set ZLIB=1 | ||||
| # | ||||
| ########################################################################### | ||||
|  | ||||
| # Edit the path below to point to the base of your Zlib sources. | ||||
| ifndef ZLIB_PATH | ||||
| ZLIB_PATH = ../../../zlib-1.2.5 | ||||
| ZLIB_PATH = ../../../zlib-1.2.7 | ||||
| endif | ||||
| # Edit the path below to point to the base of your OpenSSL package. | ||||
| ifndef OPENSSL_PATH | ||||
| OPENSSL_PATH = ../../../openssl-0.9.8r | ||||
| endif | ||||
| ifndef OPENSSL_LIBPATH | ||||
| OPENSSL_LIBPATH = $(OPENSSL_PATH)/out | ||||
| endif | ||||
| ifndef OPENSSL_LIBS | ||||
| OPENSSL_LIBS = -leay32 -lssl32 | ||||
| OPENSSL_PATH = ../../../openssl-0.9.8x | ||||
| endif | ||||
| # Edit the path below to point to the base of your LibSSH2 package. | ||||
| ifndef LIBSSH2_PATH | ||||
| LIBSSH2_PATH = ../../../libssh2-1.3.0 | ||||
| LIBSSH2_PATH = ../../../libssh2-1.4.2 | ||||
| endif | ||||
| # Edit the path below to point to the base of your librtmp package. | ||||
| ifndef LIBRTMP_PATH | ||||
| @@ -81,7 +75,7 @@ ifndef ARCH | ||||
| ARCH = w32 | ||||
| endif | ||||
|  | ||||
| CC = gcc | ||||
| CC	= $(CROSSPREFIX)gcc | ||||
| CFLAGS	= -g -O2 -Wall | ||||
| CFLAGS	+= -fno-strict-aliasing | ||||
| ifeq ($(ARCH),w64) | ||||
| @@ -89,11 +83,36 @@ CFLAGS += -D_AMD64_ | ||||
| endif | ||||
| # comment LDFLAGS below to keep debug info | ||||
| LDFLAGS	= -s | ||||
| RC = windres | ||||
| RC	= $(CROSSPREFIX)windres | ||||
| RCFLAGS	= --include-dir=$(PROOT)/include -O COFF -i | ||||
|  | ||||
| RM = del /q /f 2>NUL | ||||
| CP = copy | ||||
| # Platform-dependent helper tool macros | ||||
| ifeq ($(findstring /sh,$(SHELL)),/sh) | ||||
| DEL	= rm -f $1 | ||||
| RMDIR	= rm -fr $1 | ||||
| MKDIR	= mkdir -p $1 | ||||
| COPY	= -cp -afv $1 $2 | ||||
| #COPYR	= -cp -afr $1/* $2 | ||||
| COPYR	= -rsync -aC $1/* $2 | ||||
| TOUCH	= touch $1 | ||||
| CAT	= cat | ||||
| ECHONL	= echo "" | ||||
| DL	= ' | ||||
| else | ||||
| ifeq "$(OS)" "Windows_NT" | ||||
| DEL	= -del 2>NUL /q /f $(subst /,\,$1) | ||||
| RMDIR	= -rd 2>NUL /q /s $(subst /,\,$1) | ||||
| else | ||||
| DEL	= -del 2>NUL $(subst /,\,$1) | ||||
| RMDIR	= -deltree 2>NUL /y $(subst /,\,$1) | ||||
| endif | ||||
| MKDIR	= -md 2>NUL $(subst /,\,$1) | ||||
| COPY	= -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2) | ||||
| COPYR	= -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2) | ||||
| TOUCH	= copy 2>&1>NUL /b $(subst /,\,$1) +,, | ||||
| CAT	= type | ||||
| ECHONL	= $(ComSpec) /c echo. | ||||
| endif | ||||
|  | ||||
| ######################################################## | ||||
| ## Nothing more to do below this line! | ||||
| @@ -138,6 +157,13 @@ endif | ||||
| ifeq ($(findstring -ipv6,$(CFG)),-ipv6) | ||||
| IPV6 = 1 | ||||
| endif | ||||
| ifeq ($(findstring -metalink,$(CFG)),-metalink) | ||||
| METALINK = 1 | ||||
| endif | ||||
| ifeq ($(findstring -winssl,$(CFG)),-winssl) | ||||
| SCHANNEL = 1 | ||||
| SSPI = 1 | ||||
| endif | ||||
|  | ||||
| INCLUDES = -I. -I$(PROOT) -I$(PROOT)/include -I$(PROOT)/lib | ||||
|  | ||||
| @@ -148,6 +174,7 @@ else | ||||
|   curl_DEPENDENCIES = $(PROOT)/lib/libcurl.a | ||||
|   curl_LDADD = -L$(PROOT)/lib -lcurl | ||||
|   CFLAGS += -DCURL_STATICLIB | ||||
|   LDFLAGS += -static | ||||
| endif | ||||
| ifdef ARES | ||||
|   ifndef DYN | ||||
| @@ -165,7 +192,22 @@ ifdef SSH2 | ||||
|   curl_LDADD += -L"$(LIBSSH2_PATH)/win32" -lssh2 | ||||
| endif | ||||
| ifdef SSL | ||||
|   CFLAGS += -DUSE_SSLEAY -DHAVE_OPENSSL_ENGINE_H | ||||
|   ifndef OPENSSL_LIBPATH | ||||
|     OPENSSL_LIBS = -lssl -lcrypto | ||||
|     ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out" | ||||
|       OPENSSL_LIBPATH = $(OPENSSL_PATH)/out | ||||
|       ifdef DYN | ||||
|         OPENSSL_LIBS = -lssl32 -leay32 | ||||
|       endif | ||||
|     endif | ||||
|     ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib" | ||||
|       OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib | ||||
|     endif | ||||
|   endif | ||||
|   ifndef DYN | ||||
|     OPENSSL_LIBS += -lgdi32 -lcrypt32 | ||||
|   endif | ||||
|   CFLAGS += -DUSE_SSLEAY | ||||
|   curl_LDADD += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS) | ||||
| endif | ||||
| ifdef ZLIB | ||||
| @@ -184,6 +226,9 @@ endif | ||||
| endif | ||||
| ifdef SSPI | ||||
|   CFLAGS += -DUSE_WINDOWS_SSPI | ||||
|   ifdef SCHANNEL | ||||
|     CFLAGS += -DUSE_SCHANNEL | ||||
|   endif | ||||
| endif | ||||
| ifdef SPNEGO | ||||
|   CFLAGS += -DHAVE_SPNEGO | ||||
| @@ -215,6 +260,8 @@ include Makefile.inc | ||||
| check_PROGRAMS := $(patsubst %,%.exe,$(strip $(check_PROGRAMS))) | ||||
| check_PROGRAMS += ftpuploadresume.exe synctime.exe | ||||
|  | ||||
| .PRECIOUS: %.o | ||||
|  | ||||
|  | ||||
| all: $(check_PROGRAMS) | ||||
|  | ||||
| @@ -228,8 +275,8 @@ all: $(check_PROGRAMS) | ||||
| 	$(RC) $(RCFLAGS) $< -o $@ | ||||
|  | ||||
| clean: | ||||
| 	-$(RM) $(check_PROGRAMS:.exe=.o) | ||||
| 	@$(call DEL, $(check_PROGRAMS:.exe=.o)) | ||||
|  | ||||
| distclean vclean: clean | ||||
| 	-$(RM) $(check_PROGRAMS) | ||||
| 	@$(call DEL, $(check_PROGRAMS)) | ||||
|  | ||||
|   | ||||
| @@ -14,17 +14,17 @@ endif | ||||
|  | ||||
| # Edit the path below to point to the base of your Zlib sources. | ||||
| ifndef ZLIB_PATH | ||||
| ZLIB_PATH = ../../../zlib-1.2.5 | ||||
| ZLIB_PATH = ../../../zlib-1.2.7 | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your OpenSSL package. | ||||
| ifndef OPENSSL_PATH | ||||
| OPENSSL_PATH = ../../../openssl-0.9.8r | ||||
| OPENSSL_PATH = ../../../openssl-0.9.8x | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your LibSSH2 package. | ||||
| ifndef LIBSSH2_PATH | ||||
| LIBSSH2_PATH = ../../../libssh2-1.3.0 | ||||
| LIBSSH2_PATH = ../../../libssh2-1.4.2 | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your axTLS package. | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * | ||||
|  * This software is licensed as described in the file COPYING, which | ||||
|  * you should have received as part of this distribution. The terms | ||||
| @@ -42,7 +42,6 @@ | ||||
| #endif | ||||
|  | ||||
| #include <curl/curl.h> | ||||
| #include "printf_macro.h" | ||||
|  | ||||
| #if LIBCURL_VERSION_NUM < 0x070c03 | ||||
| #error "upgrade your libcurl to no less than 7.12.3" | ||||
| @@ -89,12 +88,16 @@ static curlioerr my_ioctl(CURL *handle, curliocmd cmd, void *userp) | ||||
| static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) | ||||
| { | ||||
|   size_t retcode; | ||||
|   curl_off_t nread; | ||||
|  | ||||
|   intptr_t fd = (intptr_t)stream; | ||||
|  | ||||
|   retcode = read(fd, ptr, size * nmemb); | ||||
|  | ||||
|   fprintf(stderr, "*** We read %" _FMT_SIZE_T " bytes from file\n", retcode); | ||||
|   nread = (curl_off_t)retcode; | ||||
|  | ||||
|   fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T | ||||
|           " bytes from file\n", nread); | ||||
|  | ||||
|   return retcode; | ||||
| } | ||||
| @@ -159,6 +162,10 @@ int main(int argc, char **argv) | ||||
|  | ||||
|     /* Now run off and do what you've been told! */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -132,6 +132,10 @@ int main(void) | ||||
|  | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -336,7 +336,7 @@ static void new_conn(char *url, GlobalInfo *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_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); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -57,7 +57,10 @@ static curl_socket_t opensocket(void *clientp, | ||||
|                                 curlsocktype purpose, | ||||
|                                 struct curl_sockaddr *address) | ||||
| { | ||||
|   curl_socket_t sockfd = *(curl_socket_t *)clientp; | ||||
|   curl_socket_t sockfd; | ||||
|   (void)purpose; | ||||
|   (void)address; | ||||
|   sockfd = *(curl_socket_t *)clientp; | ||||
|   /* the actual externally set socket is passed in via the OPENSOCKETDATA | ||||
|      option */ | ||||
|   return sockfd; | ||||
| @@ -66,6 +69,9 @@ static curl_socket_t opensocket(void *clientp, | ||||
| static int sockopt_callback(void *clientp, curl_socket_t curlfd, | ||||
|                             curlsocktype purpose) | ||||
| { | ||||
|   (void)clientp; | ||||
|   (void)curlfd; | ||||
|   (void)purpose; | ||||
|   /* This return code was added in libcurl 7.21.5 */ | ||||
|   return CURL_SOCKOPT_ALREADY_CONNECTED; | ||||
| } | ||||
| @@ -96,7 +102,7 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "http://99.99.99.99:9999"); | ||||
|  | ||||
|     /* Create the socket "manually" */ | ||||
|     if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) { | ||||
|     if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) == CURL_SOCKET_BAD ) { | ||||
|       printf("Error creating listening socket.\n"); | ||||
|       return 3; | ||||
|     } | ||||
|   | ||||
| @@ -64,7 +64,13 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); | ||||
|  | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) { | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     } | ||||
|     else { | ||||
|       /* now extract transfer info */ | ||||
|       curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed_upload); | ||||
|       curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total_time); | ||||
| @@ -72,6 +78,7 @@ int main(void) | ||||
|       fprintf(stderr, "Speed: %.3f bytes/sec during %.3f seconds\n", | ||||
|               speed_upload, total_time); | ||||
|  | ||||
|     } | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   } | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -33,7 +33,7 @@ static long file_is_comming(struct curl_fileinfo *finfo, | ||||
| 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); | ||||
|                        void *cb_data); | ||||
|  | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
| @@ -135,8 +135,9 @@ 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) | ||||
|                        void *cb_data) | ||||
| { | ||||
|   struct callback_data *data = cb_data; | ||||
|   size_t written = 0; | ||||
|   if(data->output) | ||||
|     written = fwrite(buff, size, nmemb, data->output); | ||||
|   | ||||
| @@ -60,6 +60,10 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response); | ||||
|     curl_easy_setopt(curl, CURLOPT_WRITEHEADER, respfile); | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
							
								
								
									
										101
									
								
								docs/examples/ftpsget.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								docs/examples/ftpsget.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| /*************************************************************************** | ||||
|  *                                  _   _ ____  _ | ||||
|  *  Project                     ___| | | |  _ \| | | ||||
|  *                             / __| | | | |_) | | | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2012, 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. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| /* | ||||
|  * This is an example showing how to get a single file from an FTPS server. | ||||
|  * It delays the actual destination file creation until the first write | ||||
|  * callback so that it won't create an empty file in case the remote file | ||||
|  * doesn't exist or something else fails. | ||||
|  */ | ||||
|  | ||||
| struct FtpFile { | ||||
|   const char *filename; | ||||
|   FILE *stream; | ||||
| }; | ||||
|  | ||||
| static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, | ||||
|                         void *stream) | ||||
| { | ||||
|   struct FtpFile *out=(struct FtpFile *)stream; | ||||
|   if(out && !out->stream) { | ||||
|     /* open file for writing */ | ||||
|     out->stream=fopen(out->filename, "wb"); | ||||
|     if(!out->stream) | ||||
|       return -1; /* failure, can't open file to write */ | ||||
|   } | ||||
|   return fwrite(buffer, size, nmemb, out->stream); | ||||
| } | ||||
|  | ||||
|  | ||||
| int main(void) | ||||
| { | ||||
|   CURL *curl; | ||||
|   CURLcode res; | ||||
|   struct FtpFile ftpfile={ | ||||
|     "yourfile.bin", /* name to store the file as if succesful */ | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   curl_global_init(CURL_GLOBAL_DEFAULT); | ||||
|  | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|     /* | ||||
|      * You better replace the URL with one that works! Note that we use an | ||||
|      * FTP:// URL with standard explicit FTPS. You can also do FTPS:// URLs if | ||||
|      * you want to do the rarer kind of transfers: implicit. | ||||
|      */ | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, | ||||
|                      "ftp://user@server/home/user/file.txt"); | ||||
|     /* Define our callback to get called when there's data to be written */ | ||||
|     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite); | ||||
|     /* Set a pointer to our struct to pass to the callback */ | ||||
|     curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile); | ||||
|  | ||||
|     /* We activate SSL and we require it for both control and data */ | ||||
|     curl_easy_setopt(curl, CURLOPT_USE_SSL, CURLUSESSL_ALL); | ||||
|  | ||||
|     /* Switch on full protocol/debug output */ | ||||
|     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); | ||||
|  | ||||
|     res = curl_easy_perform(curl); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|  | ||||
|     if(CURLE_OK != res) { | ||||
|       /* we failed */ | ||||
|       fprintf(stderr, "curl told us %d\n", res); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if(ftpfile.stream) | ||||
|     fclose(ftpfile.stream); /* close the local file */ | ||||
|  | ||||
|   curl_global_cleanup(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -32,7 +32,6 @@ | ||||
| #else | ||||
| #include <unistd.h> | ||||
| #endif | ||||
| #include "printf_macro.h" | ||||
|  | ||||
| /* | ||||
|  * This example shows an FTP upload, with a rename of the file just after | ||||
| @@ -52,12 +51,16 @@ | ||||
|    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) | ||||
| { | ||||
|   curl_off_t nread; | ||||
|   /* 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 %" _FMT_SIZE_T " bytes from file\n", retcode); | ||||
|   nread = (curl_off_t)retcode; | ||||
|  | ||||
|   fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T | ||||
|           " bytes from file\n", nread); | ||||
|   return retcode; | ||||
| } | ||||
|  | ||||
| @@ -119,6 +122,10 @@ int main(void) | ||||
|  | ||||
|     /* Now run off and do what you've been told! */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* clean up the FTP commands list */ | ||||
|     curl_slist_free_all (headerlist); | ||||
|   | ||||
							
								
								
									
										86
									
								
								docs/examples/href_extractor.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								docs/examples/href_extractor.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| /*************************************************************************** | ||||
|  *                                  _   _ ____  _ | ||||
|  *  Project                     ___| | | |  _ \| | | ||||
|  *                             / __| | | | |_) | | | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 2012, 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. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* | ||||
|  * This example uses the "Streaming HTML parser" to extract the href pieces in | ||||
|  * a streaming manner from a downloaded HTML. Kindly donated by Michał | ||||
|  * Kowalczyk. | ||||
|  * | ||||
|  * The parser is found at | ||||
|  * http://code.google.com/p/htmlstreamparser/ | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
| #include <htmlstreamparser.h> | ||||
|  | ||||
|  | ||||
| static size_t write_callback(void *buffer, size_t size, size_t nmemb, | ||||
|                              void *hsp) | ||||
| { | ||||
|   size_t realsize = size * nmemb, p; | ||||
|   for (p = 0; p < realsize; p++) { | ||||
|     html_parser_char_parse(hsp, ((char *)buffer)[p]); | ||||
|     if (html_parser_cmp_tag(hsp, "a", 1)) | ||||
|       if (html_parser_cmp_attr(hsp, "href", 4)) | ||||
|         if (html_parser_is_in(hsp, HTML_VALUE_ENDED)) { | ||||
|           html_parser_val(hsp)[html_parser_val_length(hsp)] = '\0'; | ||||
|           printf("%s\n", html_parser_val(hsp)); | ||||
|         } | ||||
|   } | ||||
|   return realsize; | ||||
| } | ||||
|  | ||||
| int main(int argc, char *argv[]) | ||||
| { | ||||
|   char tag[1], attr[4], val[128]; | ||||
|   CURL *curl; | ||||
|   HTMLSTREAMPARSER *hsp; | ||||
|  | ||||
|   if (argc != 2) { | ||||
|     printf("Usage: %s URL\n", argv[0]); | ||||
|     return EXIT_FAILURE; | ||||
|   } | ||||
|  | ||||
|   curl = curl_easy_init(); | ||||
|  | ||||
|   hsp = html_parser_init(); | ||||
|  | ||||
|   html_parser_set_tag_to_lower(hsp, 1); | ||||
|   html_parser_set_attr_to_lower(hsp, 1); | ||||
|   html_parser_set_tag_buffer(hsp, tag, sizeof(tag)); | ||||
|   html_parser_set_attr_buffer(hsp, attr, sizeof(attr)); | ||||
|   html_parser_set_val_buffer(hsp, val, sizeof(val)-1); | ||||
|  | ||||
|   curl_easy_setopt(curl, CURLOPT_URL, argv[1]); | ||||
|   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); | ||||
|   curl_easy_setopt(curl, CURLOPT_WRITEDATA, hsp); | ||||
|   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); | ||||
|  | ||||
|   curl_easy_perform(curl); | ||||
|  | ||||
|   curl_easy_cleanup(curl); | ||||
|  | ||||
|   html_parser_cleanup(hsp); | ||||
|  | ||||
|   return EXIT_SUCCESS; | ||||
| } | ||||
| @@ -27,6 +27,10 @@ int main(void) | ||||
|   CURL *curl; | ||||
|   CURLcode res; | ||||
|  | ||||
|   /* In windows, this will init the winsock stuff */ | ||||
|   curl_global_init(CURL_GLOBAL_ALL); | ||||
|  | ||||
|   /* get a curl handle */ | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|     /* First set the URL that is about to receive our POST. This URL can | ||||
| @@ -38,9 +42,14 @@ int main(void) | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   } | ||||
|   curl_global_cleanup(); | ||||
|   return 0; | ||||
| } | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -38,13 +38,24 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "localhost"); | ||||
|     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* redo request with our own custom Accept: */ | ||||
|     res = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk); | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|  | ||||
|     /* free the custom headers */ | ||||
|     curl_slist_free_all(chunk); | ||||
|   } | ||||
|   return 0; | ||||
| } | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -25,7 +25,6 @@ | ||||
| #include <unistd.h> | ||||
|  | ||||
| #include <curl/curl.h> | ||||
| #include "printf_macro.h" | ||||
|  | ||||
| /* | ||||
|  * This example shows a HTTP PUT operation. PUTs a file given as a command | ||||
| @@ -40,13 +39,17 @@ | ||||
| static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream) | ||||
| { | ||||
|   size_t retcode; | ||||
|   curl_off_t nread; | ||||
|  | ||||
|   /* 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 */ | ||||
|   retcode = fread(ptr, size, nmemb, stream); | ||||
|  | ||||
|   fprintf(stderr, "*** We read %" _FMT_SIZE_T " bytes from file\n", retcode); | ||||
|   nread = (curl_off_t)retcode; | ||||
|  | ||||
|   fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T | ||||
|           " bytes from file\n", nread); | ||||
|  | ||||
|   return retcode; | ||||
| } | ||||
| @@ -107,6 +110,10 @@ int main(int argc, char **argv) | ||||
|  | ||||
|     /* Now run off and do what you've been told! */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * | ||||
|  * This software is licensed as described in the file COPYING, which | ||||
|  * you should have received as part of this distribution. The terms | ||||
| @@ -27,6 +27,8 @@ int main(void) | ||||
|   CURL *curl; | ||||
|   CURLcode res; | ||||
|  | ||||
|   curl_global_init(CURL_GLOBAL_DEFAULT); | ||||
|  | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/"); | ||||
| @@ -45,7 +47,7 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); | ||||
| #endif | ||||
|  | ||||
| #ifdef SKIP_HOSTNAME_VERFICATION | ||||
| #ifdef SKIP_HOSTNAME_VERIFICATION | ||||
|     /* | ||||
|      * If the site you're connecting to uses a different host name that what | ||||
|      * they have mentioned in their server certificate's commonName (or | ||||
| @@ -55,10 +57,18 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); | ||||
| #endif | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   } | ||||
|  | ||||
|   curl_global_cleanup(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
| int main(void) | ||||
| { | ||||
|   CURL *curl; | ||||
|   CURLcode res; | ||||
|   CURLcode res = CURLE_OK; | ||||
|  | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|   | ||||
| @@ -70,7 +70,7 @@ int main(void) | ||||
|   /* we start some action by calling perform right away */ | ||||
|   curl_multi_perform(multi_handle, &still_running); | ||||
|  | ||||
|   while(still_running) { | ||||
|   do { | ||||
|     struct timeval timeout; | ||||
|     int rc; /* select() return code */ | ||||
|  | ||||
| @@ -118,7 +118,7 @@ int main(void) | ||||
|       curl_multi_perform(multi_handle, &still_running); | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|   } while(still_running); | ||||
|  | ||||
|   /* See how the transfers went */ | ||||
|   while ((msg = curl_multi_info_read(multi_handle, &msgs_left))) { | ||||
|   | ||||
| @@ -144,7 +144,7 @@ int main(void) | ||||
|   /* we start some action by calling perform right away */ | ||||
|   curl_multi_perform(multi_handle, &still_running); | ||||
|  | ||||
|   while(still_running) { | ||||
|   do { | ||||
|     struct timeval timeout; | ||||
|     int rc; /* select() return code */ | ||||
|  | ||||
| @@ -195,7 +195,7 @@ int main(void) | ||||
|       curl_multi_perform(multi_handle, &still_running); | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|   } while(still_running); | ||||
|  | ||||
|   curl_multi_cleanup(multi_handle); | ||||
|  | ||||
|   | ||||
| @@ -59,7 +59,7 @@ int main(void) | ||||
|   /* we start some action by calling perform right away */ | ||||
|   curl_multi_perform(multi_handle, &still_running); | ||||
|  | ||||
|   while(still_running) { | ||||
|   do { | ||||
|     struct timeval timeout; | ||||
|     int rc; /* select() return code */ | ||||
|  | ||||
| @@ -108,7 +108,7 @@ int main(void) | ||||
|       curl_multi_perform(multi_handle, &still_running); | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|   } while(still_running); | ||||
|  | ||||
|   curl_multi_cleanup(multi_handle); | ||||
|  | ||||
|   | ||||
| @@ -80,7 +80,7 @@ int main(void) | ||||
|  | ||||
|     curl_multi_perform(multi_handle, &still_running); | ||||
|  | ||||
|     while(still_running) { | ||||
|     do { | ||||
|       struct timeval timeout; | ||||
|       int rc; /* select() return code */ | ||||
|  | ||||
| @@ -131,7 +131,7 @@ int main(void) | ||||
|         printf("running: %d!\n", still_running); | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     } while(still_running); | ||||
|  | ||||
|     curl_multi_cleanup(multi_handle); | ||||
|  | ||||
|   | ||||
| @@ -55,7 +55,7 @@ int main(void) | ||||
|   /* we start some action by calling perform right away */ | ||||
|   curl_multi_perform(multi_handle, &still_running); | ||||
|  | ||||
|   while(still_running) { | ||||
|   do { | ||||
|     struct timeval timeout; | ||||
|     int rc; /* select() return code */ | ||||
|  | ||||
| @@ -106,7 +106,7 @@ int main(void) | ||||
|       curl_multi_perform(multi_handle, &still_running); | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|   } while(still_running); | ||||
|  | ||||
|   curl_multi_cleanup(multi_handle); | ||||
|  | ||||
|   | ||||
| @@ -37,12 +37,24 @@ int main(void) | ||||
|  | ||||
|     /* get the first document */ | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/"); | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* get another document from the same server using the same | ||||
|        connection */ | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/docs/"); | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -59,7 +59,12 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); | ||||
| #endif | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -59,7 +59,12 @@ int main(void) | ||||
|     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); | ||||
| #endif | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -30,7 +30,7 @@ const char data[]="this is what we post to the silly web server"; | ||||
|  | ||||
| struct WriteThis { | ||||
|   const char *readptr; | ||||
|   int sizeleft; | ||||
|   long sizeleft; | ||||
| }; | ||||
|  | ||||
| static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp) | ||||
| @@ -60,6 +60,16 @@ int main(void) | ||||
|   pooh.readptr = data; | ||||
|   pooh.sizeleft = strlen(data); | ||||
|  | ||||
|   /* In windows, this will init the winsock stuff */ | ||||
|   res = curl_global_init(CURL_GLOBAL_DEFAULT); | ||||
|   /* Check for errors */ | ||||
|   if(res != CURLE_OK) { | ||||
|     fprintf(stderr, "curl_global_init() failed: %s\n", | ||||
|             curl_easy_strerror(res)); | ||||
|     return 1; | ||||
|   } | ||||
|  | ||||
|   /* get a curl handle */ | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|     /* First set the URL that is about to receive our POST. */ | ||||
| @@ -96,7 +106,7 @@ int main(void) | ||||
| #else | ||||
|     /* Set the expected POST size. If you want to POST large amounts of data, | ||||
|        consider CURLOPT_POSTFIELDSIZE_LARGE */ | ||||
|     curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (curl_off_t)pooh.sizeleft); | ||||
|     curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft); | ||||
| #endif | ||||
|  | ||||
| #ifdef DISABLE_EXPECT | ||||
| @@ -120,9 +130,14 @@ int main(void) | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   } | ||||
|   curl_global_cleanup(); | ||||
|   return 0; | ||||
| } | ||||
|   | ||||
| @@ -83,7 +83,13 @@ int main(int argc, char *argv[]) | ||||
|       /* only disable 100-continue header if explicitly requested */ | ||||
|       curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist); | ||||
|     curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost); | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -24,7 +24,6 @@ | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
| #include "printf_macro.h" | ||||
|  | ||||
| /* Auxiliary function that waits on the socket. */ | ||||
| static int wait_on_socket(curl_socket_t sockfd, int for_recv, long timeout_ms) | ||||
| @@ -65,6 +64,7 @@ int main(void) | ||||
|   curl_socket_t sockfd; /* socket */ | ||||
|   long sockextr; | ||||
|   size_t iolen; | ||||
|   curl_off_t nread; | ||||
|  | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
| @@ -123,7 +123,9 @@ int main(void) | ||||
|       if(CURLE_OK != res) | ||||
|         break; | ||||
|  | ||||
|       printf("Received %" _FMT_SIZE_T " bytes.\n", iolen); | ||||
|       nread = (curl_off_t)iolen; | ||||
|  | ||||
|       printf("Received %" CURL_FORMAT_CURL_OFF_T " bytes.\n", nread); | ||||
|     } | ||||
|  | ||||
|     /* always cleanup */ | ||||
|   | ||||
							
								
								
									
										106
									
								
								docs/examples/sftpget.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								docs/examples/sftpget.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,106 @@ | ||||
| /*************************************************************************** | ||||
|  *                                  _   _ ____  _ | ||||
|  *  Project                     ___| | | |  _ \| | | ||||
|  *                             / __| | | | |_) | | | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2012, 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. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #include <stdio.h> | ||||
|  | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| /* define this to switch off the use of ssh-agent in this program */ | ||||
| #undef DISABLE_SSH_AGENT | ||||
|  | ||||
| /* | ||||
|  * This is an example showing how to get a single file from an SFTP server. | ||||
|  * It delays the actual destination file creation until the first write | ||||
|  * callback so that it won't create an empty file in case the remote file | ||||
|  * doesn't exist or something else fails. | ||||
|  */ | ||||
|  | ||||
| struct FtpFile { | ||||
|   const char *filename; | ||||
|   FILE *stream; | ||||
| }; | ||||
|  | ||||
| static size_t my_fwrite(void *buffer, size_t size, size_t nmemb, | ||||
|                         void *stream) | ||||
| { | ||||
|   struct FtpFile *out=(struct FtpFile *)stream; | ||||
|   if(out && !out->stream) { | ||||
|     /* open file for writing */ | ||||
|     out->stream=fopen(out->filename, "wb"); | ||||
|     if(!out->stream) | ||||
|       return -1; /* failure, can't open file to write */ | ||||
|   } | ||||
|   return fwrite(buffer, size, nmemb, out->stream); | ||||
| } | ||||
|  | ||||
|  | ||||
| int main(void) | ||||
| { | ||||
|   CURL *curl; | ||||
|   CURLcode res; | ||||
|   struct FtpFile ftpfile={ | ||||
|     "yourfile.bin", /* name to store the file as if succesful */ | ||||
|     NULL | ||||
|   }; | ||||
|  | ||||
|   curl_global_init(CURL_GLOBAL_DEFAULT); | ||||
|  | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|     /* | ||||
|      * You better replace the URL with one that works! | ||||
|      */ | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, | ||||
|                      "sftp://user@server/home/user/file.txt"); | ||||
|     /* Define our callback to get called when there's data to be written */ | ||||
|     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite); | ||||
|     /* Set a pointer to our struct to pass to the callback */ | ||||
|     curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile); | ||||
|  | ||||
| #ifndef DISABLE_SSH_AGENT | ||||
|     /* We activate ssh agent. For this to work you need | ||||
|        to have ssh-agent running (type set | grep SSH_AGENT to check) or | ||||
|        pageant on Windows (there is an icon in systray if so) */ | ||||
|     curl_easy_setopt(curl, CURLOPT_SSH_AUTH_TYPES, CURLSSH_AUTH_AGENT); | ||||
| #endif | ||||
|  | ||||
|     /* Switch on full protocol/debug output */ | ||||
|     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); | ||||
|  | ||||
|     res = curl_easy_perform(curl); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|  | ||||
|     if(CURLE_OK != res) { | ||||
|       /* we failed */ | ||||
|       fprintf(stderr, "curl told us %d\n", res); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   if(ftpfile.stream) | ||||
|     fclose(ftpfile.stream); /* close the local file */ | ||||
|  | ||||
|   curl_global_cleanup(); | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
| @@ -30,7 +30,13 @@ int main(void) | ||||
|   curl = curl_easy_init(); | ||||
|   if(curl) { | ||||
|     curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -39,7 +39,12 @@ int main(void) | ||||
|        itself */ | ||||
|     curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long)strlen(postthis)); | ||||
|  | ||||
|     /* Perform the request, res will get the return code */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* always cleanup */ | ||||
|     curl_easy_cleanup(curl); | ||||
|   | ||||
| @@ -65,6 +65,10 @@ int main(void) | ||||
|  | ||||
|     /* send the message (including headers) */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* free the list of recipients */ | ||||
|     curl_slist_free_all(recipients); | ||||
|   | ||||
| @@ -118,7 +118,13 @@ int main(void) | ||||
|       /* disconnect if we can't validate server's cert */ | ||||
|       curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,1L); | ||||
|  | ||||
|       /* Perform the request, res will get the return code */ | ||||
|       res = curl_easy_perform(curl); | ||||
|       /* Check for errors */ | ||||
|       if(res != CURLE_OK) | ||||
|         fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|                 curl_easy_strerror(res)); | ||||
|  | ||||
|       break;                   /* we are done... */ | ||||
|     } | ||||
|     /* always cleanup */ | ||||
|   | ||||
| @@ -96,7 +96,6 @@ int main(void) | ||||
|    CURLM *mcurl; | ||||
|    int still_running = 1; | ||||
|    struct timeval mp_start; | ||||
|    char mp_timedout = 0; | ||||
|    struct WriteThis pooh; | ||||
|    struct curl_slist* rcpt_list = NULL; | ||||
|  | ||||
| @@ -132,7 +131,6 @@ int main(void) | ||||
|    curl_easy_setopt(curl, CURLOPT_SSL_SESSIONID_CACHE, 0L); | ||||
|    curl_multi_add_handle(mcurl, curl); | ||||
|  | ||||
|    mp_timedout = 0; | ||||
|    mp_start = tvnow(); | ||||
|  | ||||
|   /* we start some action by calling perform right away */ | ||||
|   | ||||
| @@ -139,6 +139,10 @@ int main(void) | ||||
|  | ||||
|     /* send the message (including headers) */ | ||||
|     res = curl_easy_perform(curl); | ||||
|     /* Check for errors */ | ||||
|     if(res != CURLE_OK) | ||||
|       fprintf(stderr, "curl_easy_perform() failed: %s\n", | ||||
|               curl_easy_strerror(res)); | ||||
|  | ||||
|     /* free the list of recipients and clean up */ | ||||
|     curl_slist_free_all(recipients); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -38,7 +38,7 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3	 \ | ||||
|  curl_easy_unescape.3 curl_multi_setopt.3 curl_multi_socket.3		 \ | ||||
|  curl_multi_timeout.3 curl_formget.3 curl_multi_assign.3		 \ | ||||
|  curl_easy_pause.3 curl_easy_recv.3 curl_easy_send.3			 \ | ||||
|  curl_multi_socket_action.3 | ||||
|  curl_multi_socket_action.3 curl_multi_wait.3 | ||||
|  | ||||
| HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html		\ | ||||
|  curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html	\ | ||||
| @@ -58,7 +58,7 @@ HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html		\ | ||||
|  curl_easy_unescape.html curl_multi_setopt.html curl_multi_socket.html	\ | ||||
|  curl_multi_timeout.html curl_formget.html curl_multi_assign.html	\ | ||||
|  curl_easy_pause.html curl_easy_recv.html curl_easy_send.html		\ | ||||
|  curl_multi_socket_action.html | ||||
|  curl_multi_socket_action.html curl_multi_wait.html | ||||
|  | ||||
| PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf			 \ | ||||
|  curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf		 \ | ||||
| @@ -77,7 +77,7 @@ PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf			 \ | ||||
|  curl_easy_escape.pdf curl_easy_unescape.pdf curl_multi_setopt.pdf	 \ | ||||
|  curl_multi_socket.pdf curl_multi_timeout.pdf curl_formget.pdf		 \ | ||||
|  curl_multi_assign.pdf curl_easy_pause.pdf curl_easy_recv.pdf		 \ | ||||
|  curl_easy_send.pdf curl_multi_socket_action.pdf | ||||
|  curl_easy_send.pdf curl_multi_socket_action.pdf curl_multi_wait.pdf | ||||
|  | ||||
| CLEANFILES = $(HTMLPAGES) $(PDFPAGES) | ||||
|  | ||||
|   | ||||
| @@ -69,7 +69,7 @@ output. This is only relevant for protocols that actually have headers | ||||
| preceding the data (like HTTP). | ||||
| .IP CURLOPT_NOPROGRESS | ||||
| Pass a long. If set to 1, it tells the library to shut off the progress meter | ||||
| completely. It will also present the \fICURLOPT_PROGRESSFUNCTION\fP from | ||||
| completely. It will also prevent the \fICURLOPT_PROGRESSFUNCTION\fP from | ||||
| getting called. | ||||
|  | ||||
| Future versions of libcurl are likely to not have any built-in progress meter | ||||
| @@ -147,10 +147,10 @@ Using the rules above, a file name pattern can be constructed: | ||||
| (This was added in 7.21.0) | ||||
| .SH CALLBACK OPTIONS | ||||
| .IP CURLOPT_WRITEFUNCTION | ||||
| Function pointer that should match the following prototype: \fBsize_t | ||||
| function( char *ptr, size_t size, size_t nmemb, void *userdata);\fP This | ||||
| function gets called by libcurl as soon as there is data received that needs | ||||
| to be saved. The size of the data pointed to by \fIptr\fP is \fIsize\fP | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBsize_t function( char *ptr, size_t size, size_t nmemb, void *userdata);\fP | ||||
| This function gets called by libcurl as soon as there is data received that | ||||
| needs to be saved. The size of the data pointed to by \fIptr\fP is \fIsize\fP | ||||
| multiplied with \fInmemb\fP, it will not be zero terminated. Return the number | ||||
| of bytes actually taken care of. If that amount differs from the amount passed | ||||
| to your function, it'll signal an error to the library. This will abort the | ||||
| @@ -193,11 +193,11 @@ crashes. | ||||
| This option is also known with the older name \fICURLOPT_FILE\fP, the name | ||||
| \fICURLOPT_WRITEDATA\fP was introduced in 7.9.7. | ||||
| .IP CURLOPT_READFUNCTION | ||||
| Function pointer that should match the following prototype: \fBsize_t | ||||
| function( void *ptr, size_t size, size_t nmemb, void *userdata);\fP This | ||||
| function gets called by libcurl as soon as it needs to read data in order to | ||||
| send it to the peer. The data area pointed at by the pointer \fIptr\fP may be | ||||
| filled with at most \fIsize\fP multiplied with \fInmemb\fP number of | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBsize_t function( void *ptr, size_t size, size_t nmemb, void *userdata);\fP | ||||
| This function gets called by libcurl as soon as it needs to read data in order | ||||
| to send it to the peer. The data area pointed at by the pointer \fIptr\fP may | ||||
| be filled with at most \fIsize\fP multiplied with \fInmemb\fP number of | ||||
| bytes. Your function must return the actual number of bytes that you stored in | ||||
| that memory area. Returning 0 will signal end-of-file to the library and cause | ||||
| it to stop the current transfer. | ||||
| @@ -234,13 +234,13 @@ If you're using libcurl as a win32 DLL, you MUST use a | ||||
| This option was also known by the older name \fICURLOPT_INFILE\fP, the name | ||||
| \fICURLOPT_READDATA\fP was introduced in 7.9.7. | ||||
| .IP CURLOPT_IOCTLFUNCTION | ||||
| Function pointer that should match the \fIcurl_ioctl_callback\fP prototype | ||||
| found in \fI<curl/curl.h>\fP. This function gets called by libcurl when | ||||
| something special I/O-related needs to be done that the library can't do by | ||||
| itself. For now, rewinding the read data stream is the only action it can | ||||
| request. The rewinding of the read data stream may be necessary when doing a | ||||
| HTTP PUT or POST with a multi-pass authentication method.  (Option added in | ||||
| 7.12.3). | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBcurlioerr function(CURL *handle, int cmd, void *clientp);\fP. This function | ||||
| gets called by libcurl when something special I/O-related needs to be done | ||||
| that the library can't do by itself. For now, rewinding the read data stream | ||||
| is the only action it can request. The rewinding of the read data stream may | ||||
| be necessary when doing a HTTP PUT or POST with a multi-pass authentication | ||||
| method.  (Option added in 7.12.3). | ||||
|  | ||||
| Use \fICURLOPT_SEEKFUNCTION\fP instead to provide seeking! | ||||
| .IP CURLOPT_IOCTLDATA | ||||
| @@ -248,7 +248,7 @@ Pass a pointer that will be untouched by libcurl and passed as the 3rd | ||||
| argument in the ioctl callback set with \fICURLOPT_IOCTLFUNCTION\fP.  (Option | ||||
| added in 7.12.3) | ||||
| .IP CURLOPT_SEEKFUNCTION | ||||
| Function pointer that should match the following prototype: \fIint | ||||
| Pass a pointer to a function that matches the following prototype: \fBint | ||||
| function(void *instream, curl_off_t offset, int origin);\fP This function gets | ||||
| called by libcurl to seek to a certain position in the input stream and can be | ||||
| used to fast forward a file in a resumed upload (instead of reading all | ||||
| @@ -270,18 +270,22 @@ Data pointer to pass to the file seek function. If you use the | ||||
| \fICURLOPT_SEEKFUNCTION\fP option, this is the pointer you'll get as input. If | ||||
| you don't specify a seek callback, NULL is passed. (Option added in 7.18.0) | ||||
| .IP CURLOPT_SOCKOPTFUNCTION | ||||
| Function pointer that should match the \fIcurl_sockopt_callback\fP prototype | ||||
| found in \fI<curl/curl.h>\fP. This function gets called by libcurl after the | ||||
| socket() call but before the connect() call. The callback's \fIpurpose\fP | ||||
| argument identifies the exact purpose for this particular socket, and | ||||
| currently only one value is supported: \fICURLSOCKTYPE_IPCXN\fP for the | ||||
| primary connection (meaning the control connection in the FTP case). Future | ||||
| versions of libcurl may support more purposes. It passes the newly created | ||||
| socket descriptor so additional setsockopt() calls can be done at the user's | ||||
| discretion.  Return 0 (zero) from the callback on success. Return 1 from the | ||||
| callback function to signal an unrecoverable error to the library and it will | ||||
| close the socket and return \fICURLE_COULDNT_CONNECT\fP.  (Option added in | ||||
| 7.16.0) | ||||
| Pass a pointer to a function that matches the following prototype: \fBint | ||||
| function(void *clientp, curl_socket_t curlfd, curlsocktype purpose);\fP. This | ||||
| function gets called by libcurl after the socket() call but before the | ||||
| connect() call. The callback's \fIpurpose\fP argument identifies the exact | ||||
| purpose for this particular socket: | ||||
|  | ||||
| \fICURLSOCKTYPE_IPCXN\fP for actively created connections or since 7.28.0 | ||||
| \fICURLSOCKTYPE_ACCEPT\fP for FTP when the connection was setup with PORT/EPSV | ||||
| (in earlier versions these sockets weren't passed to this callback). | ||||
|  | ||||
| Future versions of libcurl may support more purposes. It passes the newly | ||||
| created socket descriptor so additional setsockopt() calls can be done at the | ||||
| user's discretion.  Return 0 (zero) from the callback on success. Return 1 | ||||
| from the callback function to signal an unrecoverable error to the library and | ||||
| it will close the socket and return \fICURLE_COULDNT_CONNECT\fP.  (Option | ||||
| added in 7.16.0) | ||||
|  | ||||
| Added in 7.21.5, the callback function may return | ||||
| \fICURL_SOCKOPT_ALREADY_CONNECTED\fP, which tells libcurl that the socket is | ||||
| @@ -291,20 +295,21 @@ Pass a pointer that will be untouched by libcurl and passed as the first | ||||
| argument in the sockopt callback set with \fICURLOPT_SOCKOPTFUNCTION\fP. | ||||
| (Option added in 7.16.0) | ||||
| .IP CURLOPT_OPENSOCKETFUNCTION | ||||
| Function pointer that should match the \fIcurl_opensocket_callback\fP | ||||
| prototype found in \fI<curl/curl.h>\fP. This function gets called by libcurl | ||||
| instead of the \fIsocket(2)\fP call. The callback's \fIpurpose\fP argument | ||||
| identifies the exact purpose for this particular socket: | ||||
| \fICURLSOCKTYPE_IPCXN\fP is for IP based connections. Future versions of | ||||
| libcurl may support more purposes. It passes the resolved peer address as a | ||||
| \fIaddress\fP argument so the callback can modify the address or refuse to | ||||
| connect at all. The callback function should return the socket or | ||||
| \fICURL_SOCKET_BAD\fP in case no connection should be established or any error | ||||
| detected. Any additional \fIsetsockopt(2)\fP calls can be done on the socket | ||||
| at the user's discretion.  \fICURL_SOCKET_BAD\fP return value from the | ||||
| callback function will signal an unrecoverable error to the library and it | ||||
| will return \fICURLE_COULDNT_CONNECT\fP.  This return code can be used for IP | ||||
| address blacklisting.  The default behavior is: | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBcurl_socket_t function(void *clientp, curlsocktype purpose, struct | ||||
| curl_sockaddr *address);\fP. This function gets called by libcurl instead of | ||||
| the \fIsocket(2)\fP call. The callback's \fIpurpose\fP argument identifies the | ||||
| exact purpose for this particular socket: \fICURLSOCKTYPE_IPCXN\fP is for IP | ||||
| based connections. Future versions of libcurl may support more purposes. It | ||||
| passes the resolved peer address as a \fIaddress\fP argument so the callback | ||||
| can modify the address or refuse to connect at all. The callback function | ||||
| should return the socket or \fICURL_SOCKET_BAD\fP in case no connection could | ||||
| be established or another error was detected. Any additional | ||||
| \fIsetsockopt(2)\fP calls can be done on the socket at the user's discretion. | ||||
| \fICURL_SOCKET_BAD\fP return value from the callback function will signal an | ||||
| unrecoverable error to the library and it will return | ||||
| \fICURLE_COULDNT_CONNECT\fP.  This return code can be used for IP address | ||||
| blacklisting.  The default behavior is: | ||||
| .nf | ||||
|    return socket(addr->family, addr->socktype, addr->protocol); | ||||
| .fi | ||||
| @@ -314,25 +319,26 @@ Pass a pointer that will be untouched by libcurl and passed as the first | ||||
| argument in the opensocket callback set with \fICURLOPT_OPENSOCKETFUNCTION\fP. | ||||
| (Option added in 7.17.1.) | ||||
| .IP CURLOPT_CLOSESOCKETFUNCTION | ||||
| Function pointer that should match the \fIcurl_closesocket_callback\fP | ||||
| prototype found in \fI<curl/curl.h>\fP. This function gets called by libcurl | ||||
| instead of the \fIclose(3)\fP or \fIclosesocket(3)\fP call when sockets are | ||||
| closed (not for any other file descriptors). This is pretty much the reverse | ||||
| to the \fICURLOPT_OPENSOCKETFUNCTION\fP option. Return 0 to signal success and | ||||
| 1 if there was an error.  (Option added in 7.21.7) | ||||
| Pass a pointer to a function that matches the following prototype: \fBint | ||||
| function(void *clientp, curl_socket_t item);\fP. This function gets called by | ||||
| libcurl instead of the \fIclose(3)\fP or \fIclosesocket(3)\fP call when | ||||
| sockets are closed (not for any other file descriptors). This is pretty much | ||||
| the reverse to the \fICURLOPT_OPENSOCKETFUNCTION\fP option. Return 0 to signal | ||||
| success and 1 if there was an error.  (Option added in 7.21.7) | ||||
| .IP CURLOPT_CLOSESOCKETDATA | ||||
| Pass a pointer that will be untouched by libcurl and passed as the first | ||||
| argument in the closesocket callback set with | ||||
| \fICURLOPT_CLOSESOCKETFUNCTION\fP.  (Option added in 7.21.7) | ||||
| .IP CURLOPT_PROGRESSFUNCTION | ||||
| Function pointer that should match the \fIcurl_progress_callback\fP prototype | ||||
| found in \fI<curl/curl.h>\fP. This function gets called by libcurl instead of | ||||
| its internal equivalent with a frequent interval during operation (roughly | ||||
| once per second or sooner) no matter if data is being transfered or not. | ||||
| Unknown/unused argument values passed to the callback will be set to zero | ||||
| (like if you only download data, the upload size will remain 0). Returning a | ||||
| non-zero value from this callback will cause libcurl to abort the transfer and | ||||
| return \fICURLE_ABORTED_BY_CALLBACK\fP. | ||||
| Pass a pointer to a function that matches the following prototype: \fBint | ||||
| function(void *clientp, double dltotal, double dlnow, double ultotal, double | ||||
| ulnow); \fP. This function gets called by libcurl instead of its internal | ||||
| equivalent with a frequent interval during operation (roughly once per second | ||||
| or sooner) no matter if data is being transferred or not.  Unknown/unused | ||||
| argument values passed to the callback will be set to zero (like if you only | ||||
| download data, the upload size will remain 0). Returning a non-zero value from | ||||
| this callback will cause libcurl to abort the transfer and return | ||||
| \fICURLE_ABORTED_BY_CALLBACK\fP. | ||||
|  | ||||
| If you transfer data with the multi interface, this function will not be | ||||
| called during periods of idleness unless you call the appropriate libcurl | ||||
| @@ -344,20 +350,20 @@ get called. | ||||
| Pass a pointer that will be untouched by libcurl and passed as the first | ||||
| argument in the progress callback set with \fICURLOPT_PROGRESSFUNCTION\fP. | ||||
| .IP CURLOPT_HEADERFUNCTION | ||||
| Function pointer that should match the following prototype: \fIsize_t | ||||
| function( void *ptr, size_t size, size_t nmemb, void *userdata);\fP. This | ||||
| function gets called by libcurl as soon as it has received header data. The | ||||
| header callback will be called once for each header and only complete header | ||||
| lines are passed on to the callback. Parsing headers is very easy using | ||||
| this. The size of the data pointed to by \fIptr\fP is \fIsize\fP multiplied | ||||
| with \fInmemb\fP. Do not assume that the header line is zero terminated! The | ||||
| pointer named \fIuserdata\fP is the one you set with the | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBsize_t function( void *ptr, size_t size, size_t nmemb, void | ||||
| *userdata);\fP. This function gets called by libcurl as soon as it has | ||||
| received header data. The header callback will be called once for each header | ||||
| and only complete header lines are passed on to the callback. Parsing headers | ||||
| is very easy using this. The size of the data pointed to by \fIptr\fP is | ||||
| \fIsize\fP multiplied with \fInmemb\fP. Do not assume that the header line is | ||||
| zero terminated! The pointer named \fIuserdata\fP is the one you set with the | ||||
| \fICURLOPT_WRITEHEADER\fP option. The callback function must return the number | ||||
| of bytes actually taken care of. If that amount differs from the amount passed | ||||
| to your function, it'll signal an error to the library. This will abort the | ||||
| transfer and return \fICURL_WRITE_ERROR\fP. | ||||
|  | ||||
| A complete header that is passed to this function can be up to | ||||
| A complete HTTP header that is passed to this function can be up to | ||||
| \fICURL_MAX_HTTP_HEADER\fP (100K) bytes. | ||||
|  | ||||
| If this option is not set, or if it is set to NULL, but | ||||
| @@ -380,6 +386,9 @@ to detect it being a trailer and not an ordinary header: 1) it comes after the | ||||
| response-body. 2) it comes after the final header line (CR LF) 3) a Trailer: | ||||
| header among the regular response-headers mention what header(s) to expect in | ||||
| the trailer. | ||||
|  | ||||
| For non-HTTP protocols like FTP, POP3, IMAP and SMTP this function will get | ||||
| called with the server responses to the commands that libcurl sends. | ||||
| .IP CURLOPT_WRITEHEADER | ||||
| (This option is also known as \fBCURLOPT_HEADERDATA\fP) Pass a pointer to be | ||||
| used to write the header part of the received data to. If you don't use | ||||
| @@ -388,7 +397,7 @@ the writing, this must be a valid FILE * as the internal default will then be | ||||
| a plain fwrite(). See also the \fICURLOPT_HEADERFUNCTION\fP option above on | ||||
| how to set a custom get-all-headers callback. | ||||
| .IP CURLOPT_DEBUGFUNCTION | ||||
| Function pointer that should match the following prototype: \fIint | ||||
| Pass a pointer to a function that matches the following prototype: \fBint | ||||
| curl_debug_callback (CURL *, curl_infotype, char *, size_t, void *);\fP | ||||
| \fICURLOPT_DEBUGFUNCTION\fP replaces the standard debug function used when | ||||
| \fICURLOPT_VERBOSE \fP is in effect. This callback receives debug information, | ||||
| @@ -417,11 +426,11 @@ used by libcurl, it is only passed to the callback. | ||||
| This option does only function for libcurl powered by OpenSSL. If libcurl was | ||||
| built against another SSL library, this functionality is absent. | ||||
|  | ||||
| Function pointer that should match the following prototype: \fBCURLcode | ||||
| sslctxfun(CURL *curl, void *sslctx, void *parm);\fP This function gets called | ||||
| by libcurl just before the initialization of a SSL connection after having | ||||
| processed all other SSL related options to give a last chance to an | ||||
| application to modify the behaviour of openssl's ssl initialization. The | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBCURLcode sslctxfun(CURL *curl, void *sslctx, void *parm);\fP This function | ||||
| gets called by libcurl just before the initialization of a SSL connection | ||||
| after having processed all other SSL related options to give a last chance to | ||||
| an application to modify the behaviour of openssl's ssl initialization. The | ||||
| \fIsslctx\fP parameter is actually a pointer to an openssl \fISSL_CTX\fP. If | ||||
| an error is returned no attempt to establish a connection is made and the | ||||
| perform operation will return the error code from this callback function.  Set | ||||
| @@ -444,8 +453,8 @@ parameter, otherwise \fBNULL\fP. (Added in 7.11.0) | ||||
| .IP CURLOPT_CONV_TO_NETWORK_FUNCTION | ||||
| .IP CURLOPT_CONV_FROM_NETWORK_FUNCTION | ||||
| .IP CURLOPT_CONV_FROM_UTF8_FUNCTION | ||||
| Function pointers that should match the following prototype: CURLcode | ||||
| function(char *ptr, size_t length); | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBCURLcode function(char *ptr, size_t length);\fP | ||||
|  | ||||
| These three options apply to non-ASCII platforms only.  They are available | ||||
| only if \fBCURL_DOES_CONVERSIONS\fP was defined when libcurl was built. When | ||||
| @@ -487,18 +496,19 @@ follows: | ||||
| You will need to override these definitions if they are different on your | ||||
| system. | ||||
| .IP CURLOPT_INTERLEAVEFUNCTION | ||||
| Function pointer that should match the following prototype: \fIsize_t | ||||
| function( void *ptr, size_t size, size_t nmemb, void *userdata)\fP. This | ||||
| function gets called by libcurl as soon as it has received interleaved RTP | ||||
| data. This function gets called for each $ block and therefore contains | ||||
| exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl writes the | ||||
| interleaved header as well as the included data for each call. The first byte | ||||
| is always an ASCII dollar sign. The dollar sign is followed by a one byte | ||||
| channel identifier and then a 2 byte integer length in network byte order. See | ||||
| \fIRFC 2326 Section 10.12\fP for more information on how RTP interleaving | ||||
| behaves. If unset or set to NULL, curl will use the default write function. | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBsize_t function( void *ptr, size_t size, size_t nmemb, void | ||||
| *userdata)\fP. This function gets called by libcurl as soon as it has received | ||||
| interleaved RTP data. This function gets called for each $ block and therefore | ||||
| contains exactly one upper-layer protocol unit (e.g.  one RTP packet). Curl | ||||
| writes the interleaved header as well as the included data for each call. The | ||||
| first byte is always an ASCII dollar sign. The dollar sign is followed by a | ||||
| one byte channel identifier and then a 2 byte integer length in network byte | ||||
| order. See \fIRFC2326 Section 10.12\fP for more information on how RTP | ||||
| interleaving behaves. If unset or set to NULL, curl will use the default write | ||||
| function. | ||||
|  | ||||
| Interleaved RTP poses some challeneges for the client application. Since the | ||||
| Interleaved RTP poses some challenges for the client application. Since the | ||||
| stream data is sharing the RTSP control connection, it is critical to service | ||||
| the RTP in a timely fashion. If the RTP data is not handled quickly, | ||||
| subsequent response processing may become unreasonably delayed and the | ||||
| @@ -512,10 +522,10 @@ This is the userdata pointer that will be passed to | ||||
| \fICURLOPT_INTERLEAVEFUNCTION\fP when interleaved RTP data is received. (Added | ||||
| in 7.20.0) | ||||
| .IP CURLOPT_CHUNK_BGN_FUNCTION | ||||
| Function pointer that should match the following prototype: \fBlong function | ||||
| (const void *transfer_info, void *ptr, int remains)\fP. This function gets | ||||
| called by libcurl before a part of the stream is going to be transferred (if | ||||
| the transfer supports chunks). | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBlong function (const void *transfer_info, void *ptr, int remains)\fP. This | ||||
| function gets called by libcurl before a part of the stream is going to be | ||||
| transferred (if the transfer supports chunks). | ||||
|  | ||||
| This callback makes sense only when using the \fICURLOPT_WILDCARDMATCH\fP | ||||
| option for now. | ||||
| @@ -532,9 +542,9 @@ Return \fICURL_CHUNK_BGN_FUNC_OK\fP if everything is fine, | ||||
| \fICURL_CHUNK_BGN_FUNC_FAIL\fP to tell libcurl to stop if some error occurred. | ||||
| (This was added in 7.21.0) | ||||
| .IP CURLOPT_CHUNK_END_FUNCTION | ||||
| Function pointer that should match the following prototype: \fBlong | ||||
| function(void *ptr)\fP. This function gets called by libcurl as soon as a part | ||||
| of the stream has been transferred (or skipped). | ||||
| Pass a pointer to a function that matches the following prototype: | ||||
| \fBlong function(void *ptr)\fP. This function gets called by libcurl as soon | ||||
| as a part of the stream has been transferred (or skipped). | ||||
|  | ||||
| Return \fICURL_CHUNK_END_FUNC_OK\fP if everything is fine or | ||||
| \fBCURL_CHUNK_END_FUNC_FAIL\fP to tell the lib to stop if some error occurred. | ||||
| @@ -544,9 +554,9 @@ Pass a pointer that will be untouched by libcurl and passed as the ptr | ||||
| argument to the \fICURL_CHUNK_BGN_FUNTION\fP and \fICURL_CHUNK_END_FUNTION\fP. | ||||
| (This was added in 7.21.0) | ||||
| .IP CURLOPT_FNMATCH_FUNCTION | ||||
| Function pointer that should match \fBint function(void *ptr, const char | ||||
| *pattern, const char *string)\fP prototype (see \fIcurl/curl.h\fP). It is used | ||||
| internally for the wildcard matching feature. | ||||
| Pass a pointer to a function that matches the following prototype: \fBint | ||||
| function(void *ptr, const char *pattern, const char *string)\fP prototype (see | ||||
| \fIcurl/curl.h\fP). It is used internally for the wildcard matching feature. | ||||
|  | ||||
| Return \fICURL_FNMATCHFUNC_MATCH\fP if pattern matches the string, | ||||
| \fICURL_FNMATCHFUNC_NOMATCH\fP if not or \fICURL_FNMATCHFUNC_FAIL\fP if an | ||||
| @@ -560,11 +570,11 @@ Pass a char * to a buffer that the libcurl may store human readable error | ||||
| messages in. This may be more helpful than just the return code from | ||||
| \fIcurl_easy_perform\fP. The buffer must be at least CURL_ERROR_SIZE big. | ||||
| Although this argument is a 'char *', it does not describe an input string. | ||||
| Therefore the (probably undefined) contents of the buffer is NOT copied | ||||
| by the library. You should keep the associated storage available until | ||||
| libcurl no longer needs it. Failing to do so will cause very odd behavior | ||||
| or even crashes. libcurl will need it until you call \fIcurl_easy_cleanup(3)\fP | ||||
| or you set the same option again to use a different pointer. | ||||
| Therefore the (probably undefined) contents of the buffer is NOT copied by the | ||||
| library. You must keep the associated storage available until libcurl no | ||||
| longer needs it. Failing to do so will cause very odd behavior or even | ||||
| crashes. libcurl will need it until you call \fIcurl_easy_cleanup(3)\fP or you | ||||
| set the same option again to use a different pointer. | ||||
|  | ||||
| Use \fICURLOPT_VERBOSE\fP and \fICURLOPT_DEBUGFUNCTION\fP to better | ||||
| debug/trace why errors happen. | ||||
| @@ -589,13 +599,13 @@ detected, like when a "100-continue" is received as a response to a | ||||
| POST/PUT and a 401 or 407 is received immediately afterwards. | ||||
| .SH NETWORK OPTIONS | ||||
| .IP CURLOPT_URL | ||||
| The actual URL to deal with. The parameter should be a char * to a zero | ||||
| terminated string which must be URL-encoded in the following format: | ||||
| Pass in a pointer to the actual URL to deal with. The parameter should be a | ||||
| char * to a zero terminated string which must be URL-encoded in the following | ||||
| format: | ||||
|  | ||||
| scheme://host:port/path | ||||
|  | ||||
| For a greater explanation of the format please see RFC 3986 | ||||
| (http://curl.haxx.se/rfc/rfc3986.txt). | ||||
| For a greater explanation of the format please see RFC3986. | ||||
|  | ||||
| If the given URL lacks the scheme, or protocol, part ("http://" or "ftp://" | ||||
| etc), libcurl will attempt to resolve which protocol to use based on the | ||||
| @@ -623,18 +633,20 @@ authentication. | ||||
|  | ||||
| For example the following types of authentication support this: | ||||
|  | ||||
| http://user:password@www.domain.com | ||||
| ftp://user:password@ftp.domain.com | ||||
| pop3://user:password@mail.domain.com | ||||
| http://user:password@www.example.com | ||||
|  | ||||
| ftp://user:password@ftp.example.com | ||||
|  | ||||
| pop3://user:password@mail.example.com | ||||
|  | ||||
| The port is optional and when not specified libcurl will use the default port | ||||
| based on the determined or specified protocol: 80 for http, 21 for ftp and 25 | ||||
| for smtp, etc. The following examples show how to specify the port: | ||||
| based on the determined or specified protocol: 80 for HTTP, 21 for FTP and 25 | ||||
| for SMTP, etc. The following examples show how to specify the port: | ||||
|  | ||||
| http://www.weirdserver.com:8080/ - This will connect to a web server using | ||||
| port 8080. | ||||
| http://www.example.com:8080/ - This will connect to a web server using port | ||||
| 8080 rather than 80. | ||||
|  | ||||
| smtp://mail.domain.com:587/ - This will connect to a smtp server on the | ||||
| smtp://mail.example.com:587/ - This will connect to a SMTP server on the | ||||
| alternative mail port. | ||||
|  | ||||
| The path part of the URL is protocol specific and whilst some examples are | ||||
| @@ -649,13 +661,12 @@ retrieved for either the directory specified or the root directory. The | ||||
| exact resource returned for each URL is entirely dependent on the server's | ||||
| configuration. | ||||
|  | ||||
| http://www.netscape.com - This gets the main page (index.html in this | ||||
| example) from Netscape's web server. | ||||
| http://www.example.com - This gets the main page from the web server. | ||||
|  | ||||
| http://www.netscape.com/index.html - This returns the main page from Netscape | ||||
| by specifying the page to get. | ||||
| http://www.example.com/index.html - This returns the main page by explicitly | ||||
| requesting it. | ||||
|  | ||||
| http://www.netscape.com/contactus/ - This returns the default document from | ||||
| http://www.example.com/contactus/ - This returns the default document from | ||||
| the contactus directory. | ||||
|  | ||||
| .B FTP | ||||
| @@ -665,15 +676,16 @@ directory. If the file part is omitted then libcurl downloads the directory | ||||
| listing for the directory specified. If the directory is omitted then | ||||
| the directory listing for the root / home directory will be returned. | ||||
|  | ||||
| ftp://cool.haxx.se - This retrieves the directory listing for our FTP server. | ||||
| ftp://ftp.example.com - This retrieves the directory listing for the root | ||||
| directory. | ||||
|  | ||||
| ftp://cool.haxx.se/readme.txt - This downloads the file readme.txt from the | ||||
| ftp://ftp.example.com/readme.txt - This downloads the file readme.txt from the | ||||
| root directory. | ||||
|  | ||||
| ftp://cool.haxx.se/libcurl/readme.txt - This downloads readme.txt from the | ||||
| ftp://ftp.example.com/libcurl/readme.txt - This downloads readme.txt from the | ||||
| libcurl directory. | ||||
|  | ||||
| ftp://user:password@my.example.com/readme.txt - This retrieves the readme.txt | ||||
| ftp://user:password@ftp.example.com/readme.txt - This retrieves the readme.txt | ||||
| file from the user's home directory. When a username and password is | ||||
| specified, everything that is specified in the path part is relative to the | ||||
| user's home directory. To retrieve files from the root directory or a | ||||
| @@ -681,7 +693,7 @@ directory underneath the root directory then the absolute path must be | ||||
| specified by prepending an additional forward slash to the beginning of the | ||||
| path. | ||||
|  | ||||
| ftp://user:password@my.example.com//readme.txt - This retrieves the readme.txt | ||||
| ftp://user:password@ftp.example.com//readme.txt - This retrieves the readme.txt | ||||
| from the root directory when logging in as a specified user. | ||||
|  | ||||
| .B SMTP | ||||
| @@ -694,11 +706,11 @@ and specifying this path allows you to set an alternative name, such as | ||||
| your machine's fully qualified domain name, which you might have obtained | ||||
| from an external function such as gethostname or getaddrinfo. | ||||
|  | ||||
| smtp://mail.domain.com - This connects to the mail server at domain.com and | ||||
| smtp://mail.example.com - This connects to the mail server at example.com and | ||||
| sends your local computer's host name in the HELO / EHLO command. | ||||
|  | ||||
| smtp://mail.domain.com/client.domain.com - This will send client.domain.com in | ||||
| the HELO / EHLO command to the mail server at domain.com. | ||||
| smtp://mail.example.com/client.example.com - This will send client.example.com in | ||||
| the HELO / EHLO command to the mail server at example.com. | ||||
|  | ||||
| .B POP3 | ||||
|  | ||||
| @@ -706,8 +718,8 @@ The path part of a POP3 request specifies the mailbox (message) to retrieve. | ||||
| If the mailbox is not specified then a list of waiting messages is returned | ||||
| instead. | ||||
|  | ||||
| pop3://user:password@mail.domain.com - This lists the available messages | ||||
| pop3://user:password@mail.domain.com/1 - This retrieves the first message | ||||
| pop3://user:password@mail.example.com - This lists the available messages | ||||
| pop3://user:password@mail.example.com/1 - This retrieves the first message | ||||
|  | ||||
| .B SCP | ||||
|  | ||||
| @@ -742,6 +754,26 @@ user's home directory | ||||
| sftp://ssh.example.com/~/Documents/ - This requests a directory listing | ||||
| of the Documents directory under the user's home directory | ||||
|  | ||||
| .B LDAP | ||||
|  | ||||
| The path part of a LDAP request can be used to specify the: Distinguished | ||||
| Name, Attributes, Scope, Filter and Extension for a LDAP search. Each field | ||||
| is separated by a question mark and when that field is not required an empty | ||||
| string with the question mark separator should be included. | ||||
|  | ||||
| ldap://ldap.example.com/o=My%20Organisation - This will perform a LDAP search | ||||
| with the DN as My Organisation. | ||||
|  | ||||
| ldap://ldap.example.com/o=My%20Organisation?postalAddress - This will perform | ||||
| the same search but will only return postalAddress attributes. | ||||
|  | ||||
| ldap://ldap.example.com/?rootDomainNamingContext - This specifies an empty DN | ||||
| and requests information about the rootDomainNamingContext attribute for an | ||||
| Active Directory server. | ||||
|  | ||||
| For more information about the individual components of a LDAP URL please | ||||
| see RFC4516. | ||||
|  | ||||
| .B NOTES | ||||
|  | ||||
| Starting with version 7.20.0, the fragment part of the URI will not be sent as | ||||
| @@ -817,13 +849,14 @@ affect how libcurl speaks to a proxy when CONNECT is used. The HTTP version | ||||
| used for "regular" HTTP requests is instead controlled with | ||||
| \fICURLOPT_HTTP_VERSION\fP. | ||||
| .IP CURLOPT_NOPROXY | ||||
| Pass a pointer to a zero terminated string. This should be a comma separated | ||||
| list of hosts which do not use a proxy, if one is specified.  The only | ||||
| wildcard is a single * character, which matches all hosts, and effectively | ||||
| disables the proxy. Each name in this list is matched as either a domain which | ||||
| contains the hostname, or the hostname itself. For example, local.com would | ||||
| match local.com, local.com:80, and www.local.com, but not www.notlocal.com. | ||||
| (Added in 7.19.4) | ||||
| Pass a pointer to a zero terminated string. The string consists of a comma | ||||
| separated list of host names that do not require a proxy to get reached, even | ||||
| if one is specified.  The only wildcard available is a single * character, | ||||
| which matches all hosts, and effectively disables the proxy. Each name in this | ||||
| list is matched as either a domain which contains the hostname, or the | ||||
| hostname itself. For example, example.com would match example.com, | ||||
| example.com:80, and www.example.com, but not www.notanexample.com.  (Added in | ||||
| 7.19.4) | ||||
| .IP CURLOPT_HTTPPROXYTUNNEL | ||||
| Set the parameter to 1 to make the library tunnel all operations through a | ||||
| given HTTP proxy. There is a big difference between using a proxy and to | ||||
| @@ -835,7 +868,7 @@ default service name for a SOCKS5 server is rcmd/server-fqdn. This option | ||||
| allows you to change it. (Added in 7.19.4) | ||||
| .IP CURLOPT_SOCKS5_GSSAPI_NEC | ||||
| Pass a long set to 1 to enable or 0 to disable. As part of the gssapi | ||||
| negotiation a protection mode is negotiated. The rfc1961 says in section | ||||
| negotiation a protection mode is negotiated. The RFC1961 says in section | ||||
| 4.3/4.4 it should be protected, but the NEC reference implementation does not. | ||||
| If enabled, this option allows the unprotected exchange of the protection mode | ||||
| negotiation. (Added in 7.19.4). | ||||
| @@ -858,7 +891,7 @@ connection. This can be used in combination with \fICURLOPT_INTERFACE\fP and | ||||
| you are recommended to use \fICURLOPT_LOCALPORTRANGE\fP as well when this is | ||||
| set. Valid port numbers are 1 - 65535. (Added in 7.15.2) | ||||
| .IP CURLOPT_LOCALPORTRANGE | ||||
| Pass a long. This is the number of attempts libcurl should make to find a | ||||
| Pass a long. This is the number of attempts libcurl will make to find a | ||||
| working local port number. It starts with the given \fICURLOPT_LOCALPORT\fP | ||||
| and adds one to the number for each retry. Setting this to 1 or below will | ||||
| make libcurl do only one try for the exact port number. Port numbers by nature | ||||
| @@ -897,21 +930,20 @@ only makes sense to use this option if you want it smaller. | ||||
| Pass a long specifying what remote port number to connect to, instead of the | ||||
| one specified in the URL or the default port for the used protocol. | ||||
| .IP CURLOPT_TCP_NODELAY | ||||
| Pass a long specifying whether the TCP_NODELAY option should be set or | ||||
| cleared (1 = set, 0 = clear). The option is cleared by default. This | ||||
| will have no effect after the connection has been established. | ||||
| Pass a long specifying whether the TCP_NODELAY option is to be set or cleared | ||||
| (1 = set, 0 = clear). The option is cleared by default. This will have no | ||||
| effect after the connection has been established. | ||||
|  | ||||
| Setting this option will disable TCP's Nagle algorithm. The purpose of | ||||
| this algorithm is to try to minimize the number of small packets on | ||||
| the network (where "small packets" means TCP segments less than the | ||||
| Maximum Segment Size (MSS) for the network). | ||||
| Setting this option will disable TCP's Nagle algorithm. The purpose of this | ||||
| algorithm is to try to minimize the number of small packets on the network | ||||
| (where "small packets" means TCP segments less than the Maximum Segment Size | ||||
| (MSS) for the network). | ||||
|  | ||||
| Maximizing the amount of data sent per TCP segment is good because it | ||||
| amortizes the overhead of the send. However, in some cases (most | ||||
| notably telnet or rlogin) small segments may need to be sent | ||||
| without delay. This is less efficient than sending larger amounts of | ||||
| data at a time, and can contribute to congestion on the network if | ||||
| overdone. | ||||
| amortizes the overhead of the send. However, in some cases (most notably | ||||
| telnet or rlogin) small segments may need to be sent without delay. This is | ||||
| less efficient than sending larger amounts of data at a time, and can | ||||
| contribute to congestion on the network if overdone. | ||||
| .IP CURLOPT_ADDRESS_SCOPE | ||||
| Pass a long specifying the scope_id value to use when connecting to IPv6 | ||||
| link-local or site-local addresses. (Added in 7.19.0) | ||||
| @@ -1061,8 +1093,8 @@ HTTP NTLM authentication. A proprietary protocol invented and used by | ||||
| Microsoft. It uses a challenge-response and hash concept similar to Digest, to | ||||
| prevent the password from being eavesdropped. | ||||
|  | ||||
| You need to build libcurl with either OpenSSL or NSS support for this option | ||||
| to work, or build libcurl on Windows. | ||||
| You need to build libcurl with either OpenSSL, GnuTLS or NSS support for this | ||||
| option to work, or build libcurl on Windows. | ||||
| .IP CURLAUTH_NTLM_WB | ||||
| NTLM delegating to winbind helper. Authentication is performed by a separate | ||||
| binary application that is executed when needed. The name of the application | ||||
| @@ -1145,8 +1177,8 @@ the server is ignored. See the special file lib/README.encoding for details. | ||||
| .IP CURLOPT_TRANSFER_ENCODING | ||||
| Adds a request for compressed Transfer Encoding in the outgoing HTTP | ||||
| request. If the server supports this and so desires, it can respond with the | ||||
| HTTP resonse sent using a compressed Transfer-Encoding that will be | ||||
| automatically uncompressed by libcurl on receival. | ||||
| HTTP response sent using a compressed Transfer-Encoding that will be | ||||
| automatically uncompressed by libcurl on reception. | ||||
|  | ||||
| Transfer-Encoding differs slightly from the Content-Encoding you ask for with | ||||
| \fBCURLOPT_ACCEPT_ENCODING\fP in that a Transfer-Encoding is strictly meant to | ||||
| @@ -1180,19 +1212,20 @@ Setting the limit to 0 will make libcurl refuse any redirect. Set it to -1 for | ||||
| an infinite number of redirects (which is the default) | ||||
| .IP CURLOPT_POSTREDIR | ||||
| Pass a bitmask to control how libcurl acts on redirects after POSTs that get a | ||||
| 301 or 302 response back.  A parameter with bit 0 set (value | ||||
| \fBCURL_REDIR_POST_301\fP) tells the library to respect RFC 2616/10.3.2 and | ||||
| not convert POST requests into GET requests when following a 301 | ||||
| redirection. Setting bit 1 (value CURL_REDIR_POST_302) makes libcurl maintain | ||||
| the request method after a 302 redirect. CURL_REDIR_POST_ALL is a convenience | ||||
| define that sets both bits. | ||||
| 301, 302 or 303 response back.  A parameter with bit 0 set (value | ||||
| \fBCURL_REDIR_POST_301\fP) tells the library to respect RFC2616/10.3.2 and not | ||||
| convert POST requests into GET requests when following a 301 redirection. | ||||
| Setting bit 1 (value \fBCURL_REDIR_POST_302\fP) makes libcurl maintain the | ||||
| request method after a 302 redirect whilst setting bit 2 (value | ||||
| \fBCURL_REDIR_POST_303\fP) makes libcurl maintain the request method after a | ||||
| 303 redirect. The value \fBCURL_REDIR_POST_ALL\fP is a convenience define that | ||||
| sets all three bits. | ||||
|  | ||||
| The non-RFC behaviour is ubiquitous in web browsers, so the library does the | ||||
| conversion by default to maintain consistency. However, a server may require a | ||||
| POST to remain a POST after such a redirection. This option is meaningful only | ||||
| when setting \fICURLOPT_FOLLOWLOCATION\fP.  (Added in 7.17.1) (This option was | ||||
| known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 way before | ||||
| then) | ||||
| known as CURLOPT_POST301 up to 7.19.0 as it only supported the 301 then) | ||||
| .IP CURLOPT_PUT | ||||
| A parameter set to 1 tells the library to use HTTP PUT to transfer data. The | ||||
| data should be set with \fICURLOPT_READDATA\fP and \fICURLOPT_INFILESIZE\fP. | ||||
| @@ -1483,16 +1516,16 @@ should be used for this parameter. | ||||
| Unlike CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT, the address should not be | ||||
| specified within a pair of angled brackets (<>). However, if an empty string | ||||
| is used then a pair of brackets will be sent by libcurl as required by | ||||
| RFC-2554. | ||||
| RFC2554. | ||||
|  | ||||
| (Added in 7.24.0) | ||||
| (Added in 7.25.0) | ||||
| .SH TFTP OPTIONS | ||||
| .IP CURLOPT_TFTP_BLKSIZE | ||||
| Specify block size to use for TFTP data transmission. Valid range as per RFC | ||||
| 2348 is 8-65464 bytes. The default of 512 bytes will be used if this option is | ||||
| not specified. The specified block size will only be used pending support by | ||||
| the remote server. If the server does not return an option acknowledgement or | ||||
| returns an option acknowledgement with no blksize, the default of 512 bytes | ||||
| Specify block size to use for TFTP data transmission. Valid range as per | ||||
| RFC2348 is 8-65464 bytes. The default of 512 bytes will be used if this option | ||||
| is not specified. The specified block size will only be used pending support | ||||
| by the remote server. If the server does not return an option acknowledgement | ||||
| or returns an option acknowledgement with no blksize, the default of 512 bytes | ||||
| will be used. (added in 7.19.4) | ||||
| .SH FTP OPTIONS | ||||
| .IP CURLOPT_FTPPORT | ||||
| @@ -1607,7 +1640,7 @@ already exists or lack of permissions prevents creation. (Added in 7.16.3) | ||||
|  | ||||
| Starting with 7.19.4, you can also set this value to 2, which will make | ||||
| libcurl retry the CWD command again if the subsequent MKD command fails. This | ||||
| is especially useful if you're doing many simultanoes connections against the | ||||
| is especially useful if you're doing many simultaneous connections against the | ||||
| same server and they all have this option enabled, as then CWD may first fail | ||||
| but then another connection does MKD before this connection and thus MKD fails | ||||
| but trying CWD works! 7.19.4 also introduced the \fICURLFTP_CREATE_DIR\fP and | ||||
| @@ -1694,7 +1727,7 @@ initialized. (Added in 7.20.0) | ||||
| .RS | ||||
| .IP CURL_RTSPREQ_OPTIONS | ||||
| Used to retrieve the available methods of the server. The application is | ||||
| responsbile for parsing and obeying the response. \fB(The session ID is not | ||||
| responsible for parsing and obeying the response. \fB(The session ID is not | ||||
| needed for this method.)\fP  (Added in 7.20.0) | ||||
| .IP CURL_RTSPREQ_DESCRIBE | ||||
| Used to get the low level description of a stream. The application should note | ||||
| @@ -1839,33 +1872,45 @@ source file to the remote target file. | ||||
| Pass a curl_off_t as parameter. It contains the offset in number of bytes that | ||||
| you want the transfer to start from. (Added in 7.11.0) | ||||
| .IP CURLOPT_CUSTOMREQUEST | ||||
| Pass a pointer to a zero terminated string as parameter. It will be used | ||||
| instead of GET or HEAD when doing a HTTP request, or instead of LIST or NLST | ||||
| when doing a FTP directory listing. This is useful for doing DELETE or other | ||||
| more or less obscure HTTP requests. Don't do this at will, make sure your | ||||
| server supports the command first. | ||||
| Pass a pointer to a zero terminated string as parameter. It can be used to | ||||
| specify the request instead of GET or HEAD when performing HTTP based | ||||
| requests, instead of LIST and NLST when performing FTP directory listings and | ||||
| instead of LIST and RETR when issuing POP3 based commands. This is | ||||
| particularly useful, for example, for performing a HTTP DELETE request or a | ||||
| POP3 DELE command. | ||||
|  | ||||
| Please don't perform this at will, on HTTP based requests, by making sure | ||||
| your server supports the command you are sending first. | ||||
|   | ||||
| When you change the request method by setting \fBCURLOPT_CUSTOMREQUEST\fP to | ||||
| something, you don't actually change how libcurl behaves or acts in regards to | ||||
| the particular request method, it will only change the actual string sent in | ||||
| the request. | ||||
| something, you don't actually change how libcurl behaves or acts in regards | ||||
| to the particular request method, it will only change the actual string sent | ||||
| in the request. | ||||
|  | ||||
| For example: if you tell libcurl to do a HEAD request, but then change the | ||||
| request to a "GET" with \fBCURLOPT_CUSTOMREQUEST\fP you'll still see libcurl | ||||
| act as if it sent a HEAD even when it does send a GET. | ||||
| For example: | ||||
|  | ||||
| To switch to a proper HEAD, use \fICURLOPT_NOBODY\fP, to switch to a proper | ||||
| POST, use \fICURLOPT_POST\fP or \fICURLOPT_POSTFIELDS\fP and so on. | ||||
| With the HTTP protocol when you tell libcurl to do a HEAD request, but then | ||||
| specify a GET though a custom request libcurl will still act as if it sent a | ||||
| HEAD. To switch to a proper HEAD use \fICURLOPT_NOBODY\fP, to switch to a | ||||
| proper POST use \fICURLOPT_POST\fP or \fICURLOPT_POSTFIELDS\fP and to switch | ||||
| to a proper GET use CURLOPT_HTTPGET. | ||||
|  | ||||
| With the POP3 protocol when you tell libcurl to use a custom request it will | ||||
| behave like a LIST or RETR command was sent where it expects data to be | ||||
| returned by the server. As such \fICURLOPT_NOBODY\fP should be used when | ||||
| specifying commands such as DELE and NOOP for example. | ||||
|  | ||||
| Restore to the internal default by setting this to NULL. | ||||
|  | ||||
| Many people have wrongly used this option to replace the entire request with | ||||
| their own, including multiple headers and POST contents. While that might work | ||||
| in many cases, it will cause libcurl to send invalid requests and it could | ||||
| possibly confuse the remote server badly. Use \fICURLOPT_POST\fP and | ||||
| their own, including multiple headers and POST contents. While that might | ||||
| work in many cases, it will cause libcurl to send invalid requests and it | ||||
| could possibly confuse the remote server badly. Use \fICURLOPT_POST\fP and | ||||
| \fICURLOPT_POSTFIELDS\fP to set POST data. Use \fICURLOPT_HTTPHEADER\fP to | ||||
| replace or extend the set of headers sent by libcurl. Use | ||||
| \fICURLOPT_HTTP_VERSION\fP to change HTTP version. | ||||
|  | ||||
| (Support for POP3 added in 7.26.0) | ||||
| .IP CURLOPT_FILETIME | ||||
| Pass a long. If it is 1, libcurl will attempt to get the modification date of | ||||
| the remote document in this operation. This requires that the remote server | ||||
| @@ -1874,11 +1919,11 @@ sends the time or replies to a time querying command. The | ||||
| can be used after a transfer to extract the received time (if any). | ||||
| .IP CURLOPT_NOBODY | ||||
| A parameter set to 1 tells the library to not include the body-part in the | ||||
| output. This is only relevant for protocols that have separate header and body | ||||
| parts. On HTTP(S) servers, this will make libcurl do a HEAD request. | ||||
| output. This is only relevant for protocols that have separate header and | ||||
| body parts. On HTTP(S) servers, this will make libcurl do a HEAD request. | ||||
|  | ||||
| To change request to GET, you should use \fICURLOPT_HTTPGET\fP. Change request | ||||
| to POST with \fICURLOPT_POST\fP etc. | ||||
| To change request to GET, you should use \fICURLOPT_HTTPGET\fP. Change | ||||
| request to POST with \fICURLOPT_POST\fP etc. | ||||
| .IP CURLOPT_INFILESIZE | ||||
| When uploading a file to a remote site, this option should be used to tell | ||||
| libcurl what the expected size of the infile is. This value should be passed | ||||
| @@ -1958,6 +2003,8 @@ SIGALRM to enable time-outing system calls. | ||||
|  | ||||
| In unix-like systems, this might cause signals to be used unless | ||||
| \fICURLOPT_NOSIGNAL\fP is set. | ||||
|  | ||||
| Default timeout is 0 (zero) which means it never times out. | ||||
| .IP CURLOPT_TIMEOUT_MS | ||||
| Like \fICURLOPT_TIMEOUT\fP but takes number of milliseconds instead. If | ||||
| libcurl is built to use the standard system name resolver, that portion | ||||
| @@ -2276,8 +2323,9 @@ Curl considers the server the intended one when the Common Name field or a | ||||
| Subject Alternate Name field in the certificate matches the host name in the | ||||
| URL to which you told Curl to connect. | ||||
|  | ||||
| When the value is 1, the certificate must contain a Common Name field, but it | ||||
| doesn't matter what name it says.  (This is not ordinarily a useful setting). | ||||
| When the value is 1, libcurl will return a failure. It was previously (in | ||||
| 7.28.0 and earlier) a debug option of some sorts, but it is no longer | ||||
| supported due to frequently leading to programmer mistakes. | ||||
|  | ||||
| When the value is 0, the connection succeeds regardless of the names in the | ||||
| certificate. | ||||
| @@ -2324,7 +2372,7 @@ this option then all known ciphers are disabled and only those passed in | ||||
| are enabled. | ||||
|  | ||||
| You'll find more details about the NSS cipher lists on this URL: | ||||
| \fIhttp://directory.fedora.redhat.com/docs/mod_nss.html#Directives\fP | ||||
| \fIhttp://git.fedorahosted.org/cgit/mod_nss.git/plain/docs/mod_nss.html#Directives\fP | ||||
|  | ||||
| .IP CURLOPT_SSL_SESSIONID_CACHE | ||||
| Pass a long set to 0 to disable libcurl's use of SSL session-ID caching. Set | ||||
| @@ -2336,7 +2384,7 @@ require you to disable this in order for you to succeed. (Added in 7.16.0) | ||||
| Pass a long with a bitmask to tell libcurl about specific SSL behaviors. | ||||
|  | ||||
| CURLSSLOPT_ALLOW_BEAST is the only supported bit and by setting this the user | ||||
| will tell libcurl to not attempt to use any work-arounds for a security flaw | ||||
| will tell libcurl to not attempt to use any workarounds for a security flaw | ||||
| in the SSL3 and TLS1.0 protocols.  If this option isn't used or this bit is | ||||
| set to 0, the SSL layer libcurl uses may use a work-around for this flaw | ||||
| although it might cause interoperability problems with some (older) SSL | ||||
| @@ -2362,8 +2410,11 @@ GSS_C_DELEG_POLICY_FLAG was available at compile-time. | ||||
| .IP CURLOPT_SSH_AUTH_TYPES | ||||
| Pass a long set to a bitmask consisting of one or more of | ||||
| CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, | ||||
| CURLSSH_AUTH_KEYBOARD. Set CURLSSH_AUTH_ANY to let libcurl pick one. Currently | ||||
| CURLSSH_AUTH_HOST has no effect. (Added in 7.16.1) | ||||
| CURLSSH_AUTH_KEYBOARD and CURLSSH_AUTH_AGENT. Set CURLSSH_AUTH_ANY to let | ||||
| libcurl pick a suitable one. Currently CURLSSH_AUTH_HOST has no effect. (Added | ||||
| in 7.16.1) If CURLSSH_AUTH_AGENT is used, libcurl attempts to connect to | ||||
| ssh-agent or pageant and let the agent attempt the authentication. (Added in | ||||
| 7.28.0) | ||||
| .IP CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 | ||||
| Pass a char * pointing to a string containing 32 hexadecimal digits. The | ||||
| string should be the 128 bit MD5 checksum of the remote host's public key, and | ||||
| @@ -2374,6 +2425,9 @@ Pass a char * pointing to a file name for your public key. If not used, | ||||
| libcurl defaults to \fB$HOME/.ssh/id_dsa.pub\fP if the HOME environment | ||||
| variable is set, and just "id_dsa.pub" in the current directory if HOME is not | ||||
| set.  (Added in 7.16.1) | ||||
| If an empty string is passed, libcurl will pass no public key to libssh2 | ||||
| which then tries to compute it from the private key, this is known to work | ||||
| when libssh2 1.4.0+ is linked against OpenSSL. (Added in 7.26.0) | ||||
| .IP CURLOPT_SSH_PRIVATE_KEYFILE | ||||
| Pass a char * pointing to a file name for your private key. If not used, | ||||
| libcurl defaults to \fB$HOME/.ssh/id_dsa\fP if the HOME environment variable | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -66,6 +66,10 @@ Initialize the Win32 socket libraries. | ||||
| .TP | ||||
| .B CURL_GLOBAL_NOTHING | ||||
| Initialise nothing extra. This sets no bit. | ||||
| .TP | ||||
| .B CURL_GLOBAL_DEFAULT | ||||
| A sensible default. It will init both SSL and Win32. Right now, this equals | ||||
| the functionality of the \fBCURL_GLOBAL_ALL\fP mask. | ||||
| .SH RETURN VALUE | ||||
| If this function returns non-zero, something went wrong and you cannot use the | ||||
| other curl functions. | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -28,21 +28,24 @@ curl_multi_perform - reads/writes available data from each easy handle | ||||
| CURLMcode curl_multi_perform(CURLM *multi_handle, int *running_handles); | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| When the app thinks there's data available for the multi_handle, it should | ||||
| call this function to read/write whatever there is to read or write right | ||||
| now. curl_multi_perform() returns as soon as the reads/writes are done. This | ||||
| This function handles transfers on all the added handles that need attention | ||||
| in an non-blocking fashion. | ||||
|  | ||||
| When an application has found out there's data available for the multi_handle | ||||
| or a timeout has elapsed, the application should call this function to | ||||
| read/write whatever there is to read or write right now etc. | ||||
| curl_multi_perform() returns as soon as the reads/writes are done. This | ||||
| function does not require that there actually is any data available for | ||||
| reading or that data can be written, it can be called just in case. It will | ||||
| write the number of handles that still transfer data in the second argument's | ||||
| integer-pointer. | ||||
|  | ||||
| When you call curl_multi_perform() and the amount of \fIrunning_handles\fP is | ||||
| changed from the previous call (or is less than the amount of easy handles | ||||
| you've added to the multi handle), you know that there is one or more | ||||
| transfers less "running". You can then call \fIcurl_multi_info_read(3)\fP to | ||||
| get information about each individual completed transfer, and that returned | ||||
| info includes CURLcode and more. If an added handle fails very quickly, it may | ||||
| never be counted as a running_handle. | ||||
| If the amount of \fIrunning_handles\fP is changed from the previous call (or | ||||
| is less than the amount of easy handles you've added to the multi handle), you | ||||
| know that there is one or more transfers less "running". You can then call | ||||
| \fIcurl_multi_info_read(3)\fP to get information about each individual | ||||
| completed transfer, and that returned info includes CURLcode and more. If an | ||||
| added handle fails very quickly, it may never be counted as a running_handle. | ||||
|  | ||||
| When \fIrunning_handles\fP is set to zero (0) on the return of this function, | ||||
| there is no longer any transfers in progress. | ||||
| @@ -61,12 +64,14 @@ need to wait for \&"action" and then call this function again. | ||||
|  | ||||
| This function only returns errors etc regarding the whole multi stack. | ||||
| Problems still might have occurred on individual transfers even when this | ||||
| function returns \fICURLM_OK\fP. | ||||
| function returns \fICURLM_OK\fP. Use \fIcurl_multi_info_read(3)\fP to figure | ||||
| out how individual transfers did. | ||||
| .SH "TYPICAL USAGE" | ||||
| Most applications will use \fIcurl_multi_fdset(3)\fP to get the multi_handle's | ||||
| file descriptors, then it'll wait for action on them using \fBselect(3)\fP and | ||||
| as soon as one or more of them are ready, \fIcurl_multi_perform(3)\fP gets | ||||
| called. | ||||
| file descriptors, and \fIcurl_multi_timeout(3)\fP to get a suitable timeout | ||||
| period, then it'll wait for action on the file descriptors using | ||||
| \fBselect(3)\fP. As soon as one or more file descriptor is ready, | ||||
| \fIcurl_multi_perform(3)\fP gets called. | ||||
| .SH "SEE ALSO" | ||||
| .BR curl_multi_cleanup "(3), " curl_multi_init "(3), " | ||||
| .BR curl_multi_fdset "(3), " curl_multi_info_read "(3), " | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -132,8 +132,8 @@ timeout value to use when waiting for socket activities. | ||||
| them for activity. This can be done through your application code, or by way | ||||
| of an external library such as libevent or glib. | ||||
|  | ||||
| 6. Call curl_multi_socket_action() to kickstart everything. To get one or more | ||||
| callbacks called. | ||||
| 6. Call curl_multi_socket_action(...CURL_SOCKET_TIMEOUT...) to kickstart | ||||
| everything. To get one or more callbacks called. | ||||
|  | ||||
| 7. Wait for activity on any of libcurl's sockets, use the timeout value your | ||||
| callback has been told | ||||
|   | ||||
							
								
								
									
										75
									
								
								docs/libcurl/curl_multi_wait.3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								docs/libcurl/curl_multi_wait.3
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| .\" ************************************************************************** | ||||
| .\" *                                  _   _ ____  _ | ||||
| .\" *  Project                     ___| | | |  _ \| | | ||||
| .\" *                             / __| | | | |_) | | | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2012, 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_multi_wait 3 "12 Jul 2012" "libcurl 7.28.0" "libcurl Manual" | ||||
| .SH NAME | ||||
| curl_multi_wait - polls on all easy handles in a multi handle | ||||
| .SH SYNOPSIS | ||||
| .nf | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| CURLMcode curl_multi_wait(CURLM *multi_handle, | ||||
|                           struct curl_waitfd extra_fds[], | ||||
|                           unsigned int extra_nfds, | ||||
|                           int timeout_ms, | ||||
|                           int *numfds); | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| This function polls on all file descriptors used by the curl easy handles | ||||
| contained in the given multi handle set.  It will block until activity is | ||||
| detected on at least one of the handles or \fItimeout_ms\fP has passed. | ||||
|  | ||||
| The calling application may pass additional curl_waitfd structures which are | ||||
| similar to \fIpoll(2)\fP's pollfd structure to be waited on in the same call. | ||||
|  | ||||
| On completion, if \fInumfds\fP is supplied, it will be populated with the | ||||
| number of file descriptors on which interesting events occured. | ||||
|  | ||||
| If no extra file descriptors are provided and libcurl has no file descriptor | ||||
| to offer to wait for, this function will return immediately. | ||||
|  | ||||
| This function is encouraged to be used instead of select(3) when using the | ||||
| multi interface to allow applications to easier circumvent the common problem | ||||
| with 1024 maximum file descriptors. | ||||
| .SH curl_waitfd | ||||
| .nf | ||||
| struct curl_waitfd { | ||||
|   curl_socket_t fd; | ||||
|   short events; | ||||
|   short revents; | ||||
| }; | ||||
| .fi | ||||
| .IP CURL_WAIT_POLLIN | ||||
| Bit flag to curl_waitfd.events indicating the socket should poll on read | ||||
| events such as new data received. | ||||
| .IP CURL_WAIT_POLLPRI | ||||
| Bit flag to curl_waitfd.events indicating the socket should poll on high | ||||
| priority read events such as out of band data. | ||||
| .IP CURL_WAIT_POLLOUT | ||||
| Bit flag to curl_waitfd.events indicating the socket should poll on write | ||||
| events such as the socket being clear to write without blocking. | ||||
| .SH RETURN VALUE | ||||
| CURLMcode type, general libcurl multi interface error code. See | ||||
| \fIlibcurl-errors(3)\fP | ||||
| .SH AVAILABILITY | ||||
| This function was added in libcurl 7.28.0. | ||||
| .SH "SEE ALSO" | ||||
| .BR curl_multi_fdset "(3), " curl_multi_perform "(3)" | ||||
| @@ -65,7 +65,7 @@ object. Note that when you use the multi interface, all easy handles added to | ||||
| the same multi handle will share DNS cache by default without this having to | ||||
| be used! | ||||
| .IP CURL_LOCK_DATA_SSL_SESSION | ||||
| SSL session IDs will be shared accross the easy handles using this shared | ||||
| SSL session IDs will be shared across the easy handles using this shared | ||||
| object. This will reduce the time spent in the SSL handshake when reconnecting | ||||
| to the same server. Note SSL session IDs are reused within the same easy handle | ||||
| by default. | ||||
|   | ||||
| @@ -248,7 +248,10 @@ This is the generic return code used by functions in the libcurl multi | ||||
| interface. Also consider \fIcurl_multi_strerror(3)\fP. | ||||
| .IP "CURLM_CALL_MULTI_PERFORM (-1)" | ||||
| This is not really an error. It means you should call | ||||
| \fIcurl_multi_perform(3)\fP again without doing select() or similar in between. | ||||
| \fIcurl_multi_perform(3)\fP again without doing select() or similar in | ||||
| between. Before version 7.20.0 this could be returned by | ||||
| \fIcurl_multi_perform(3)\fP, but in later versions this return code is never | ||||
| used. | ||||
| .IP "CURLM_OK (0)" | ||||
| Things are fine. | ||||
| .IP "CURLM_BAD_HANDLE (1)" | ||||
| @@ -282,5 +285,5 @@ An invalid share object was passed to the function. | ||||
| Not enough memory was available. | ||||
| (Added in 7.12.0) | ||||
| .IP "CURLSHE_NOT_BUILT_IN (5)" | ||||
| The requsted sharing could not be done because the library you use don't have | ||||
| The requested sharing could not be done because the library you use don't have | ||||
| that particular feature enabled. (Added in 7.23.0) | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -41,8 +41,7 @@ You create a shared object with \fIcurl_share_init(3)\fP. It returns a handle | ||||
| for a newly created one. | ||||
|  | ||||
| You tell the shared object what data you want it to share by using | ||||
| \fIcurl_share_setopt(3)\fP. Currently you can only share DNS and/or COOKIE | ||||
| data. | ||||
| \fIcurl_share_setopt(3)\fP. | ||||
|  | ||||
| Since you can use this share from multiple threads, and libcurl has no | ||||
| internal thread synchronization, you must provide mutex callbacks if you're | ||||
|   | ||||
| @@ -567,7 +567,9 @@ CURLSHOPT_SHARE                 7.10.3 | ||||
| CURLSHOPT_UNLOCKFUNC            7.10.3 | ||||
| CURLSHOPT_UNSHARE               7.10.3 | ||||
| CURLSHOPT_USERDATA              7.10.3 | ||||
| CURLSOCKTYPE_ACCEPT             7.28.0 | ||||
| CURLSOCKTYPE_IPCXN              7.16.0 | ||||
| CURLSSH_AUTH_AGENT              7.28.0 | ||||
| CURLSSH_AUTH_ANY                7.16.1 | ||||
| CURLSSH_AUTH_DEFAULT            7.16.1 | ||||
| CURLSSH_AUTH_HOST               7.16.1 | ||||
| @@ -649,6 +651,7 @@ CURL_READFUNC_PAUSE             7.18.0 | ||||
| CURL_REDIR_GET_ALL              7.19.1 | ||||
| CURL_REDIR_POST_301             7.19.1 | ||||
| CURL_REDIR_POST_302             7.19.1 | ||||
| CURL_REDIR_POST_303             7.25.1 | ||||
| CURL_REDIR_POST_ALL             7.19.1 | ||||
| CURL_RTSPREQ_ANNOUNCE           7.20.0 | ||||
| CURL_RTSPREQ_DESCRIBE           7.20.0 | ||||
| @@ -696,4 +699,7 @@ CURL_VERSION_SPNEGO             7.10.8 | ||||
| CURL_VERSION_SSL                7.10 | ||||
| CURL_VERSION_SSPI               7.13.2 | ||||
| CURL_VERSION_TLSAUTH_SRP        7.21.4 | ||||
| CURL_WAIT_POLLIN                7.28.0 | ||||
| CURL_WAIT_POLLOUT               7.28.0 | ||||
| CURL_WAIT_POLLPRI               7.28.0 | ||||
| CURL_WRITEFUNC_PAUSE            7.18.0 | ||||
|   | ||||
							
								
								
									
										51
									
								
								docs/mk-ca-bundle.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								docs/mk-ca-bundle.1
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| .Dd April 27, 2012 | ||||
| .Dt MK-CA-BUNDLE 1 | ||||
| .Os | ||||
| .Sh NAME | ||||
| .Nm mk-ca-bundle | ||||
| .Nd create a new ca-bundle.crt from mozilla's certdata.txt | ||||
| .Sh SYNOPSIS | ||||
| .Nm | ||||
| .Op Fl bilnqtuv | ||||
| .Or outputfile | ||||
| .Sh DESCRIPTION | ||||
| The | ||||
| .Nm | ||||
| tool downloads the certdata.txt file from Mozilla's source tree, then | ||||
| parses certdata.txt and extracts CA Root Certificates into PEM format. | ||||
| These are then processed with the OpenSSL commandline tool to produce the | ||||
| final ca-bundle.crt file. | ||||
| .Sh OPTIONS | ||||
| The following options are supported by | ||||
| .Nm : | ||||
| .Bl -tag -width _h | ||||
| .It Fl b | ||||
| backup an existing version of ca-bundle.crt | ||||
| .It Fl i | ||||
| print version info about used modules | ||||
| .It Fl l | ||||
| print license info about certdata.txt | ||||
| .It Fl n | ||||
| no download of certdata.txt (to use existing) | ||||
| .It Fl q | ||||
| be really quiet (no progress output at all) | ||||
| .It Fl t | ||||
| include plain text listing of certificates | ||||
| .It Fl u | ||||
| unlink (remove) certdata.txt after processing | ||||
| .It Fl v | ||||
| be verbose and print out processed CAs | ||||
| .El | ||||
| .Sh EXIT STATUS | ||||
| .Ex -std | ||||
| .Sh SEE ALSO | ||||
| .Xr curl 1 | ||||
| .Sh HISTORY | ||||
| .Nm | ||||
| was based on the parse-certs script written by | ||||
| .An Roland Krikava | ||||
| and hacked by | ||||
| .An Guenter Knauf . | ||||
| This manual page was written by | ||||
| .An Jan Schaumann | ||||
| .Aq jschauma@netmeister.org . | ||||
							
								
								
									
										1
									
								
								include/curl/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								include/curl/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,4 @@ | ||||
| curlbuild.h | ||||
| stamp-h2 | ||||
| stamp-h3 | ||||
| curlver.h.dist | ||||
|   | ||||
| @@ -310,6 +310,7 @@ typedef size_t (*curl_read_callback)(char *buffer, | ||||
|  | ||||
| typedef enum  { | ||||
|   CURLSOCKTYPE_IPCXN,  /* socket created for a specific IP connection */ | ||||
|   CURLSOCKTYPE_ACCEPT, /* socket created by accept() call */ | ||||
|   CURLSOCKTYPE_LAST    /* never use */ | ||||
| } curlsocktype; | ||||
|  | ||||
| @@ -598,17 +599,31 @@ typedef enum { | ||||
|                                    in 7.18.0 */ | ||||
| } curl_proxytype;  /* this enum was added in 7.10 */ | ||||
|  | ||||
| #define CURLAUTH_NONE         0       /* nothing */ | ||||
| #define CURLAUTH_BASIC        (1<<0)  /* Basic (default) */ | ||||
| #define CURLAUTH_DIGEST       (1<<1)  /* Digest */ | ||||
| #define CURLAUTH_GSSNEGOTIATE (1<<2)  /* GSS-Negotiate */ | ||||
| #define CURLAUTH_NTLM         (1<<3)  /* NTLM */ | ||||
| #define CURLAUTH_DIGEST_IE    (1<<4)  /* Digest with IE flavour */ | ||||
| #define CURLAUTH_NTLM_WB      (1<<5)  /* NTLM delegating to winbind helper */ | ||||
| #define CURLAUTH_ONLY         (1<<31) /* used together with a single other | ||||
|                                          type to force no auth or just that | ||||
|                                          single type */ | ||||
| #define CURLAUTH_ANY (~CURLAUTH_DIGEST_IE)  /* all fine types set */ | ||||
| /* | ||||
|  * Bitmasks for CURLOPT_HTTPAUTH and CURLOPT_PROXYAUTH options: | ||||
|  * | ||||
|  * CURLAUTH_NONE         - No HTTP authentication | ||||
|  * CURLAUTH_BASIC        - HTTP Basic authentication (default) | ||||
|  * CURLAUTH_DIGEST       - HTTP Digest authentication | ||||
|  * CURLAUTH_GSSNEGOTIATE - HTTP GSS-Negotiate authentication | ||||
|  * CURLAUTH_NTLM         - HTTP NTLM authentication | ||||
|  * CURLAUTH_DIGEST_IE    - HTTP Digest authentication with IE flavour | ||||
|  * CURLAUTH_NTLM_WB      - HTTP NTLM authentication delegated to winbind helper | ||||
|  * CURLAUTH_ONLY         - Use together with a single other type to force no | ||||
|  *                         authentication or just that single type | ||||
|  * CURLAUTH_ANY          - All fine types set | ||||
|  * CURLAUTH_ANYSAFE      - All fine types except Basic | ||||
|  */ | ||||
|  | ||||
| #define CURLAUTH_NONE         ((unsigned long)0) | ||||
| #define CURLAUTH_BASIC        (((unsigned long)1)<<0) | ||||
| #define CURLAUTH_DIGEST       (((unsigned long)1)<<1) | ||||
| #define CURLAUTH_GSSNEGOTIATE (((unsigned long)1)<<2) | ||||
| #define CURLAUTH_NTLM         (((unsigned long)1)<<3) | ||||
| #define CURLAUTH_DIGEST_IE    (((unsigned long)1)<<4) | ||||
| #define CURLAUTH_NTLM_WB      (((unsigned long)1)<<5) | ||||
| #define CURLAUTH_ONLY         (((unsigned long)1)<<31) | ||||
| #define CURLAUTH_ANY          (~CURLAUTH_DIGEST_IE) | ||||
| #define CURLAUTH_ANYSAFE      (~(CURLAUTH_BASIC|CURLAUTH_DIGEST_IE)) | ||||
|  | ||||
| #define CURLSSH_AUTH_ANY       ~0     /* all types supported by the server */ | ||||
| @@ -617,6 +632,7 @@ typedef enum { | ||||
| #define CURLSSH_AUTH_PASSWORD  (1<<1) /* password */ | ||||
| #define CURLSSH_AUTH_HOST      (1<<2) /* host key files */ | ||||
| #define CURLSSH_AUTH_KEYBOARD  (1<<3) /* keyboard interactive */ | ||||
| #define CURLSSH_AUTH_AGENT     (1<<4) /* agent (ssh-agent, pageant...) */ | ||||
| #define CURLSSH_AUTH_DEFAULT CURLSSH_AUTH_ANY | ||||
|  | ||||
| #define CURLGSSAPI_DELEGATION_NONE        0      /* no delegation (default) */ | ||||
| @@ -1031,9 +1047,8 @@ typedef enum { | ||||
|   /* Set to the Entropy Gathering Daemon socket pathname */ | ||||
|   CINIT(EGDSOCKET, OBJECTPOINT, 77), | ||||
|  | ||||
|   /* Time-out connect operations after this amount of seconds, if connects | ||||
|      are OK within this time, then fine... This only aborts the connect | ||||
|      phase. [Only works on unix-style/SIGALRM operating systems] */ | ||||
|   /* Time-out connect operations after this amount of seconds, if connects are | ||||
|      OK within this time, then fine... This only aborts the connect phase. */ | ||||
|   CINIT(CONNECTTIMEOUT, LONG, 78), | ||||
|  | ||||
|   /* Function that will be called to store headers (instead of fwrite). The | ||||
| @@ -1207,9 +1222,9 @@ typedef enum { | ||||
|   CINIT(NETRC_FILE, OBJECTPOINT, 118), | ||||
|  | ||||
|   /* Enable SSL/TLS for FTP, pick one of: | ||||
|      CURLFTPSSL_TRY     - try using SSL, proceed anyway otherwise | ||||
|      CURLFTPSSL_CONTROL - SSL for the control connection or fail | ||||
|      CURLFTPSSL_ALL     - SSL for all communication or fail | ||||
|      CURLUSESSL_TRY     - try using SSL, proceed anyway otherwise | ||||
|      CURLUSESSL_CONTROL - SSL for the control connection or fail | ||||
|      CURLUSESSL_ALL     - SSL for all communication or fail | ||||
|   */ | ||||
|   CINIT(USE_SSL, LONG, 119), | ||||
|  | ||||
| @@ -1624,13 +1639,16 @@ enum CURL_TLSAUTH { | ||||
| }; | ||||
|  | ||||
| /* symbols to use with CURLOPT_POSTREDIR. | ||||
|    CURL_REDIR_POST_301 and CURL_REDIR_POST_302 can be bitwise ORed so that | ||||
|    CURL_REDIR_POST_301 | CURL_REDIR_POST_302 == CURL_REDIR_POST_ALL */ | ||||
|    CURL_REDIR_POST_301, CURL_REDIR_POST_302 and CURL_REDIR_POST_303 | ||||
|    can be bitwise ORed so that CURL_REDIR_POST_301 | CURL_REDIR_POST_302 | ||||
|    | CURL_REDIR_POST_303 == CURL_REDIR_POST_ALL */ | ||||
|  | ||||
| #define CURL_REDIR_GET_ALL  0 | ||||
| #define CURL_REDIR_POST_301 1 | ||||
| #define CURL_REDIR_POST_302 2 | ||||
| #define CURL_REDIR_POST_ALL (CURL_REDIR_POST_301|CURL_REDIR_POST_302) | ||||
| #define CURL_REDIR_POST_303 4 | ||||
| #define CURL_REDIR_POST_ALL \ | ||||
|     (CURL_REDIR_POST_301|CURL_REDIR_POST_302|CURL_REDIR_POST_303) | ||||
|  | ||||
| typedef enum { | ||||
|   CURL_TIMECOND_NONE, | ||||
|   | ||||
| @@ -30,13 +30,13 @@ | ||||
|  | ||||
| /* This is the version number of the libcurl package from which this header | ||||
|    file origins: */ | ||||
| #define LIBCURL_VERSION "7.25.0-DEV" | ||||
| #define LIBCURL_VERSION "7.28.1-DEV" | ||||
|  | ||||
| /* The numeric version number is also available "in parts" by using these | ||||
|    defines: */ | ||||
| #define LIBCURL_VERSION_MAJOR 7 | ||||
| #define LIBCURL_VERSION_MINOR 25 | ||||
| #define LIBCURL_VERSION_PATCH 0 | ||||
| #define LIBCURL_VERSION_MINOR 28 | ||||
| #define LIBCURL_VERSION_PATCH 1 | ||||
|  | ||||
| /* This is the numeric version of the libcurl version number, meant for easier | ||||
|    parsing and comparions by programs. The LIBCURL_VERSION_NUM define will | ||||
| @@ -53,7 +53,7 @@ | ||||
|    and it is always a greater number in a more recent release. It makes | ||||
|    comparisons with greater than and less than work. | ||||
| */ | ||||
| #define LIBCURL_VERSION_NUM 0x071900 | ||||
| #define LIBCURL_VERSION_NUM 0x071c01 | ||||
|  | ||||
| /* | ||||
|  * This is the date and time when the full source package was created. The | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -89,6 +89,19 @@ struct CURLMsg { | ||||
| }; | ||||
| typedef struct CURLMsg CURLMsg; | ||||
|  | ||||
| /* Based on poll(2) structure and values. | ||||
|  * We don't use pollfd and POLL* constants explicitly | ||||
|  * to cover platforms without poll(). */ | ||||
| #define CURL_WAIT_POLLIN    0x0001 | ||||
| #define CURL_WAIT_POLLPRI   0x0002 | ||||
| #define CURL_WAIT_POLLOUT   0x0004 | ||||
|  | ||||
| struct curl_waitfd { | ||||
|   curl_socket_t fd; | ||||
|   short events; | ||||
|   short revents; /* not supported yet */ | ||||
| }; | ||||
|  | ||||
| /* | ||||
|  * Name:    curl_multi_init() | ||||
|  * | ||||
| @@ -133,6 +146,20 @@ CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle, | ||||
|                                        fd_set *exc_fd_set, | ||||
|                                        int *max_fd); | ||||
|  | ||||
| /* | ||||
|  * Name:     curl_multi_wait() | ||||
|  * | ||||
|  * Desc:     Poll on all fds within a CURLM set as well as any | ||||
|  *           additional fds passed to the function. | ||||
|  * | ||||
|  * Returns:  CURLMcode type, general multi error code. | ||||
|  */ | ||||
| CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle, | ||||
|                                       struct curl_waitfd extra_fds[], | ||||
|                                       unsigned int extra_nfds, | ||||
|                                       int timeout_ms, | ||||
|                                       int *ret); | ||||
|  | ||||
|  /* | ||||
|   * Name:    curl_multi_perform() | ||||
|   * | ||||
|   | ||||
| @@ -7,7 +7,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -141,8 +141,9 @@ __extension__ ({                                                              \ | ||||
|  | ||||
| /* To define a new warning, use _CURL_WARNING(identifier, "message") */ | ||||
| #define _CURL_WARNING(id, message)                                            \ | ||||
|   static void __attribute__((warning(message))) __attribute__((unused))       \ | ||||
|   __attribute__((noinline)) id(void) { __asm__(""); } | ||||
|   static void __attribute__((__warning__(message)))                           \ | ||||
|   __attribute__((__unused__)) __attribute__((__noinline__))                   \ | ||||
|   id(void) { __asm__(""); } | ||||
|  | ||||
| _CURL_WARNING(_curl_easy_setopt_err_long, | ||||
|   "curl_easy_setopt expects a long argument for this option") | ||||
|   | ||||
							
								
								
									
										4
									
								
								lib/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								lib/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -11,3 +11,7 @@ libcurl.vcproj | ||||
| vc6libcurl.dsp | ||||
| Makefile.vc10.dist | ||||
| libcurl.vers | ||||
| *.a | ||||
| *.res | ||||
| *.imp | ||||
| *.nlm | ||||
|   | ||||
| @@ -83,13 +83,13 @@ CFLAGS += -dWANT_IDN_PROTOTYPES | ||||
| !ifdef %zlib_root | ||||
| ZLIB_ROOT = $(%zlib_root) | ||||
| !else | ||||
| ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.5 | ||||
| ZLIB_ROOT = ..$(DS)..$(DS)zlib-1.2.7 | ||||
| !endif | ||||
|  | ||||
| !ifdef %libssh2_root | ||||
| LIBSSH2_ROOT = $(%libssh2_root) | ||||
| !else | ||||
| LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.3.0 | ||||
| LIBSSH2_ROOT = ..$(DS)..$(DS)libssh2-1.4.2 | ||||
| !endif | ||||
|  | ||||
| !ifdef %librtmp_root | ||||
| @@ -101,7 +101,7 @@ LIBRTMP_ROOT = ..$(DS)..$(DS)rtmpdump-2.3 | ||||
| !ifdef %openssl_root | ||||
| OPENSSL_ROOT = $(%openssl_root) | ||||
| !else | ||||
| OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8r | ||||
| OPENSSL_ROOT = ..$(DS)..$(DS)openssl-0.9.8x | ||||
| !endif | ||||
|  | ||||
| !ifdef %ares_root | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2012, 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 | ||||
| @@ -33,8 +33,8 @@ CMAKE_DIST = CMakeLists.txt curl_config.h.cmake | ||||
| EXTRA_DIST = Makefile.b32 Makefile.m32 Makefile.vc6 $(DSP)              \ | ||||
|  vc6libcurl.dsw config-win32.h config-win32ce.h config-riscos.h         \ | ||||
|  config-mac.h curl_config.h.in makefile.dj config-dos.h libcurl.plist   \ | ||||
|  libcurl.rc config-amigaos.h amigaos.c amigaos.h makefile.amiga		   \ | ||||
|  Makefile.netware nwlib.c nwos.c libcurl.imp msvcproj.head msvcproj.foot   \ | ||||
|  libcurl.rc config-amigaos.h makefile.amiga                             \ | ||||
|  Makefile.netware nwlib.c nwos.c msvcproj.head msvcproj.foot		\ | ||||
|  config-win32ce.h config-os400.h setup-os400.h config-symbian.h		\ | ||||
|  Makefile.Watcom config-tpf.h $(DOCS) $(VCPROJ) mk-ca-bundle.pl		\ | ||||
|  mk-ca-bundle.vbs firefox-db2pem.sh $(CMAKE_DIST) config-vxworks.h	\ | ||||
| @@ -48,6 +48,8 @@ LIBCURL_LIBS = @LIBCURL_LIBS@ | ||||
| # This might hold -Werror | ||||
| CFLAGS += @CURL_CFLAG_EXTRAS@ | ||||
|  | ||||
| CFLAG_CURL_SYMBOL_HIDING = @CFLAG_CURL_SYMBOL_HIDING@ | ||||
|  | ||||
| # 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 | ||||
| @@ -62,7 +64,7 @@ CFLAGS += @CURL_CFLAG_EXTRAS@ | ||||
| # $(top_srcdir)/ares is for in-tree c-ares's external include files | ||||
|  | ||||
| if USE_EMBEDDED_ARES | ||||
| INCLUDES = -I$(top_builddir)/include/curl \ | ||||
| AM_CPPFLAGS = -I$(top_builddir)/include/curl \ | ||||
|               -I$(top_builddir)/include      \ | ||||
|               -I$(top_srcdir)/include        \ | ||||
|               -I$(top_builddir)/lib          \ | ||||
| @@ -70,13 +72,23 @@ INCLUDES = -I$(top_builddir)/include/curl \ | ||||
|               -I$(top_builddir)/ares         \ | ||||
|               -I$(top_srcdir)/ares | ||||
| else | ||||
| INCLUDES = -I$(top_builddir)/include/curl \ | ||||
| AM_CPPFLAGS = -I$(top_builddir)/include/curl \ | ||||
|               -I$(top_builddir)/include      \ | ||||
|               -I$(top_srcdir)/include        \ | ||||
|               -I$(top_builddir)/lib          \ | ||||
|               -I$(top_srcdir)/lib | ||||
| endif | ||||
|  | ||||
| # Mostly for Windows build targets, when building libcurl library | ||||
| if USE_CPPFLAG_BUILDING_LIBCURL | ||||
| AM_CPPFLAGS += -DBUILDING_LIBCURL | ||||
| endif | ||||
|  | ||||
| # Mostly for Windows build targets, when building static libcurl | ||||
| if USE_CPPFLAG_CURL_STATICLIB | ||||
| AM_CPPFLAGS += -DCURL_STATICLIB | ||||
| endif | ||||
|  | ||||
| if SONAME_BUMP | ||||
| # | ||||
| # Bumping of SONAME conditionally may seem like a weird thing to do, and yeah | ||||
| @@ -87,9 +99,9 @@ if SONAME_BUMP | ||||
| # | ||||
| # This conditional soname bump SHOULD be removed at next "proper" bump. | ||||
| # | ||||
| VERSIONINFO=-version-info 7:0:2 | ||||
| VERSIONINFO=-version-info 8:0:3 | ||||
| else | ||||
| VERSIONINFO=-version-info 6:0:2 | ||||
| VERSIONINFO=-version-info 7:0:3 | ||||
| endif | ||||
|  | ||||
| # This flag accepts an argument of the form current[:revision[:age]]. So, | ||||
| @@ -122,6 +134,14 @@ endif | ||||
|  | ||||
| libcurl_la_LDFLAGS = $(UNDEF) $(VERSIONINFO) $(MIMPURE) $(VERSIONED_SYMBOLS) $(LIBCURL_LIBS) | ||||
|  | ||||
| if DOING_CURL_SYMBOL_HIDING | ||||
| libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) -DCURL_HIDDEN_SYMBOLS | ||||
| libcurl_la_CFLAGS = $(AM_CFLAGS) $(CFLAG_CURL_SYMBOL_HIDING) | ||||
| else | ||||
| libcurl_la_CPPFLAGS = $(AM_CPPFLAGS) | ||||
| libcurl_la_CFLAGS = $(AM_CFLAGS) | ||||
| endif | ||||
|  | ||||
| # unit testing static library built only along with unit tests | ||||
| if BUILD_UNITTESTS | ||||
| noinst_LTLIBRARIES = libcurlu.la | ||||
| @@ -131,6 +151,7 @@ endif | ||||
|  | ||||
| libcurlu_la_CPPFLAGS = $(AM_CPPFLAGS) -DUNITTESTS | ||||
| libcurlu_la_LDFLAGS = -static $(LIBCURL_LIBS) | ||||
| libcurlu_la_CFLAGS = $(AM_CFLAGS) | ||||
|  | ||||
| # Makefile.inc provides the CSOURCES and HHEADERS defines | ||||
| include Makefile.inc | ||||
|   | ||||
| @@ -22,12 +22,12 @@ BCCDIR = $(MAKEDIR)\.. | ||||
|  | ||||
| # Edit the path below to point to the base of your Zlib sources. | ||||
| !ifndef ZLIB_PATH | ||||
| ZLIB_PATH = ..\..\zlib-1.2.5 | ||||
| ZLIB_PATH = ..\..\zlib-1.2.7 | ||||
| !endif | ||||
|  | ||||
| # Edit the path below to point to the base of your OpenSSL package. | ||||
| !ifndef OPENSSL_PATH | ||||
| OPENSSL_PATH = ..\..\openssl-0.9.8q | ||||
| OPENSSL_PATH = ..\..\openssl-0.9.8x | ||||
| !endif | ||||
|  | ||||
| # Set libcurl static lib, dll and import lib | ||||
|   | ||||
| @@ -14,7 +14,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c	\ | ||||
|   curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c		\ | ||||
|   memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c	\ | ||||
|   content_encoding.c share.c http_digest.c md4.c md5.c curl_rand.c	\ | ||||
|   http_negotiate.c inet_pton.c strtoofft.c strerror.c			\ | ||||
|   http_negotiate.c inet_pton.c strtoofft.c strerror.c amigaos.c		\ | ||||
|   hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c	\ | ||||
|   select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c	\ | ||||
|   qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c		\ | ||||
| @@ -23,7 +23,8 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c	\ | ||||
|   curl_rtmp.c openldap.c curl_gethostname.c gopher.c axtls.c		\ | ||||
|   idn_win32.c http_negotiate_sspi.c cyassl.c http_proxy.c non-ascii.c	\ | ||||
|   asyn-ares.c asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c	\ | ||||
|   curl_ntlm_core.c curl_ntlm_msgs.c | ||||
|   curl_ntlm_core.c curl_ntlm_msgs.c curl_sasl.c curl_schannel.c	\ | ||||
|   curl_multibyte.c curl_darwinssl.c hostcheck.c | ||||
|  | ||||
| HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h	\ | ||||
|   progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h	\ | ||||
| @@ -31,7 +32,7 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h	\ | ||||
|   getinfo.h strequal.h krb4.h memdebug.h http_chunks.h curl_rand.h	\ | ||||
|   curl_fnmatch.h wildcard.h fileinfo.h ftplistparser.h strtok.h		\ | ||||
|   connect.h llist.h hash.h content_encoding.h share.h curl_md4.h	\ | ||||
|   curl_md5.h http_digest.h http_negotiate.h inet_pton.h			\ | ||||
|   curl_md5.h http_digest.h http_negotiate.h inet_pton.h amigaos.h	\ | ||||
|   strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h setup.h	\ | ||||
|   transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h	\ | ||||
|   tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h	\ | ||||
| @@ -39,4 +40,6 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h	\ | ||||
|   curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h	\ | ||||
|   warnless.h curl_hmac.h polarssl.h curl_rtmp.h curl_gethostname.h	\ | ||||
|   gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h asyn.h curl_ntlm.h	\ | ||||
|   curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h curl_ntlm_msgs.h | ||||
|   curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h curl_ntlm_msgs.h	\ | ||||
|   curl_sasl.h curl_schannel.h curl_multibyte.h curl_darwinssl.h	\ | ||||
|   hostcheck.h | ||||
|   | ||||
							
								
								
									
										114
									
								
								lib/Makefile.m32
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								lib/Makefile.m32
									
									
									
									
									
								
							| @@ -7,31 +7,22 @@ | ||||
| ## Example: mingw32-make -f Makefile.m32 CFG=-zlib-ssl-sspi-winidn | ||||
| ## | ||||
| ## Hint: you can also set environment vars to control the build, f.e.: | ||||
| ## set ZLIB_PATH=c:/zlib-1.2.5 | ||||
| ## set ZLIB_PATH=c:/zlib-1.2.7 | ||||
| ## set ZLIB=1 | ||||
| # | ||||
| ########################################################################### | ||||
|  | ||||
| # Edit the path below to point to the base of your Zlib sources. | ||||
| ifndef ZLIB_PATH | ||||
| ZLIB_PATH = ../../zlib-1.2.5 | ||||
| ZLIB_PATH = ../../zlib-1.2.7 | ||||
| endif | ||||
| # Edit the path below to point to the base of your OpenSSL package. | ||||
| ifndef OPENSSL_PATH | ||||
| OPENSSL_PATH = ../../openssl-0.9.8r | ||||
| endif | ||||
| ifndef OPENSSL_INCLUDE | ||||
| OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc | ||||
| endif | ||||
| ifndef OPENSSL_LIBPATH | ||||
| OPENSSL_LIBPATH = $(OPENSSL_PATH)/out | ||||
| endif | ||||
| ifndef OPENSSL_LIBS | ||||
| OPENSSL_LIBS = -leay32 -lssl32 | ||||
| OPENSSL_PATH = ../../openssl-0.9.8x | ||||
| endif | ||||
| # Edit the path below to point to the base of your LibSSH2 package. | ||||
| ifndef LIBSSH2_PATH | ||||
| LIBSSH2_PATH = ../../libssh2-1.3.0 | ||||
| LIBSSH2_PATH = ../../libssh2-1.4.2 | ||||
| endif | ||||
| # Edit the path below to point to the base of your librtmp package. | ||||
| ifndef LIBRTMP_PATH | ||||
| @@ -64,7 +55,7 @@ ifndef ARCH | ||||
| ARCH = w32 | ||||
| endif | ||||
|  | ||||
| CC = gcc | ||||
| CC	= $(CROSSPREFIX)gcc | ||||
| CFLAGS	= -g -O2 -Wall | ||||
| CFLAGS	+= -fno-strict-aliasing | ||||
| ifeq ($(ARCH),w64) | ||||
| @@ -72,14 +63,39 @@ CFLAGS += -D_AMD64_ | ||||
| endif | ||||
| # comment LDFLAGS below to keep debug info | ||||
| LDFLAGS	= -s | ||||
| AR = ar | ||||
| RANLIB = ranlib | ||||
| RC = windres | ||||
| AR	= $(CROSSPREFIX)ar | ||||
| RANLIB	= $(CROSSPREFIX)ranlib | ||||
| RC	= $(CROSSPREFIX)windres | ||||
| RCFLAGS	= --include-dir=$(PROOT)/include -DDEBUGBUILD=0 -O COFF -i | ||||
| STRIP = strip -g | ||||
| STRIP	= $(CROSSPREFIX)strip -g | ||||
|  | ||||
| RM = del /q /f 2>NUL | ||||
| CP = copy | ||||
| # Platform-dependent helper tool macros | ||||
| ifeq ($(findstring /sh,$(SHELL)),/sh) | ||||
| DEL	= rm -f $1 | ||||
| RMDIR	= rm -fr $1 | ||||
| MKDIR	= mkdir -p $1 | ||||
| COPY	= -cp -afv $1 $2 | ||||
| #COPYR	= -cp -afr $1/* $2 | ||||
| COPYR	= -rsync -aC $1/* $2 | ||||
| TOUCH	= touch $1 | ||||
| CAT	= cat | ||||
| ECHONL	= echo "" | ||||
| DL	= ' | ||||
| else | ||||
| ifeq "$(OS)" "Windows_NT" | ||||
| DEL	= -del 2>NUL /q /f $(subst /,\,$1) | ||||
| RMDIR	= -rd 2>NUL /q /s $(subst /,\,$1) | ||||
| else | ||||
| DEL	= -del 2>NUL $(subst /,\,$1) | ||||
| RMDIR	= -deltree 2>NUL /y $(subst /,\,$1) | ||||
| endif | ||||
| MKDIR	= -md 2>NUL $(subst /,\,$1) | ||||
| COPY	= -copy 2>NUL /y $(subst /,\,$1) $(subst /,\,$2) | ||||
| COPYR	= -xcopy 2>NUL /q /y /e $(subst /,\,$1) $(subst /,\,$2) | ||||
| TOUCH	= copy 2>&1>NUL /b $(subst /,\,$1) +,, | ||||
| CAT	= type | ||||
| ECHONL	= $(ComSpec) /c echo. | ||||
| endif | ||||
|  | ||||
| ######################################################## | ||||
| ## Nothing more to do below this line! | ||||
| @@ -103,6 +119,9 @@ endif | ||||
| ifeq ($(findstring -ssl,$(CFG)),-ssl) | ||||
| SSL = 1 | ||||
| endif | ||||
| ifeq ($(findstring -srp,$(CFG)),-srp) | ||||
| SRP = 1 | ||||
| endif | ||||
| ifeq ($(findstring -zlib,$(CFG)),-zlib) | ||||
| ZLIB = 1 | ||||
| endif | ||||
| @@ -124,6 +143,10 @@ endif | ||||
| ifeq ($(findstring -ipv6,$(CFG)),-ipv6) | ||||
| IPV6 = 1 | ||||
| endif | ||||
| ifeq ($(findstring -winssl,$(CFG)),-winssl) | ||||
| WINSSL = 1 | ||||
| SSPI = 1 | ||||
| endif | ||||
|  | ||||
| INCLUDES = -I. -I../include | ||||
| CFLAGS += -DBUILDING_LIBCURL | ||||
| @@ -145,11 +168,37 @@ ifdef SSH2 | ||||
|   DLL_LIBS += -L"$(LIBSSH2_PATH)/win32" -lssh2 | ||||
| endif | ||||
| ifdef SSL | ||||
|   ifndef OPENSSL_INCLUDE | ||||
|     ifeq "$(wildcard $(OPENSSL_PATH)/outinc)" "$(OPENSSL_PATH)/outinc" | ||||
|       OPENSSL_INCLUDE = $(OPENSSL_PATH)/outinc | ||||
|     endif | ||||
|     ifeq "$(wildcard $(OPENSSL_PATH)/include)" "$(OPENSSL_PATH)/include" | ||||
|       OPENSSL_INCLUDE = $(OPENSSL_PATH)/include | ||||
|     endif | ||||
|   endif | ||||
|   ifneq "$(wildcard $(OPENSSL_INCLUDE)/openssl/opensslv.h)" "$(OPENSSL_INCLUDE)/openssl/opensslv.h" | ||||
|   $(error Invalid path to OpenSSL package: $(OPENSSL_PATH)) | ||||
|   endif | ||||
|   ifndef OPENSSL_LIBPATH | ||||
|     ifeq "$(wildcard $(OPENSSL_PATH)/out)" "$(OPENSSL_PATH)/out" | ||||
|       OPENSSL_LIBPATH = $(OPENSSL_PATH)/out | ||||
|       OPENSSL_LIBS = -leay32 -lssl32 | ||||
|     endif | ||||
|     ifeq "$(wildcard $(OPENSSL_PATH)/lib)" "$(OPENSSL_PATH)/lib" | ||||
|       OPENSSL_LIBPATH = $(OPENSSL_PATH)/lib | ||||
|       OPENSSL_LIBS = -lcrypto -lssl | ||||
|     endif | ||||
|   endif | ||||
|   INCLUDES += -I"$(OPENSSL_INCLUDE)" | ||||
|   CFLAGS += -DUSE_SSLEAY -DUSE_OPENSSL -DHAVE_OPENSSL_ENGINE_H -DHAVE_OPENSSL_PKCS12_H \ | ||||
|             -DHAVE_ENGINE_LOAD_BUILTIN_ENGINES -DOPENSSL_NO_KRB5 \ | ||||
|             -DCURL_WANTS_CA_BUNDLE_ENV | ||||
|   DLL_LIBS += -L"$(OPENSSL_LIBPATH)" $(OPENSSL_LIBS) | ||||
|   ifdef SRP | ||||
|     ifeq "$(wildcard $(OPENSSL_INCLUDE)/openssl/srp.h)" "$(OPENSSL_INCLUDE)/openssl/srp.h" | ||||
|       CFLAGS += -DHAVE_SSLEAY_SRP -DUSE_TLS_SRP | ||||
|     endif | ||||
|   endif | ||||
| endif | ||||
| ifdef ZLIB | ||||
|   INCLUDES += -I"$(ZLIB_PATH)" | ||||
| @@ -169,6 +218,9 @@ endif | ||||
| endif | ||||
| ifdef SSPI | ||||
|   CFLAGS += -DUSE_WINDOWS_SSPI | ||||
|   ifdef WINSSL | ||||
|     CFLAGS += -DUSE_SCHANNEL | ||||
|   endif | ||||
| endif | ||||
| ifdef SPNEGO | ||||
|   CFLAGS += -DHAVE_SPNEGO | ||||
| @@ -212,7 +264,7 @@ RESOURCE = libcurl.res | ||||
| all: $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) | ||||
|  | ||||
| $(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES) | ||||
| 	-$(RM) $@ | ||||
| 	@$(call DEL, $@) | ||||
| 	$(AR) cru $@ $(libcurl_a_OBJECTS) | ||||
| 	$(RANLIB) $@ | ||||
| 	$(STRIP) $@ | ||||
| @@ -220,9 +272,10 @@ $(libcurl_a_LIBRARY): $(libcurl_a_OBJECTS) $(libcurl_a_DEPENDENCIES) | ||||
| # remove the last line above to keep debug info | ||||
|  | ||||
| $(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENCIES) | ||||
| 	-$(RM) $@ | ||||
| 	$(CC) $(LDFLAGS) -shared -Wl,--out-implib,$(libcurl_dll_a_LIBRARY) \ | ||||
| 	  -o $@ $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS) | ||||
| 	@$(call DEL, $@) | ||||
| 	$(CC) $(LDFLAGS) -shared -o $@ \ | ||||
| 	  -Wl,--output-def,$(@:.dll=.def),--out-implib,$(libcurl_dll_a_LIBRARY) \ | ||||
| 	  $(libcurl_a_OBJECTS) $(RESOURCE) $(DLL_LIBS) | ||||
|  | ||||
| %.o: %.c $(PROOT)/include/curl/curlbuild.h | ||||
| 	$(CC) $(INCLUDES) $(CFLAGS) -c $< | ||||
| @@ -232,17 +285,18 @@ $(libcurl_dll_LIBRARY): $(libcurl_a_OBJECTS) $(RESOURCE) $(libcurl_dll_DEPENDENC | ||||
|  | ||||
| clean: | ||||
| ifeq "$(wildcard $(PROOT)/include/curl/curlbuild.h.dist)" "$(PROOT)/include/curl/curlbuild.h.dist" | ||||
| 	-$(RM) $(subst /,\,$(PROOT)/include/curl/curlbuild.h) | ||||
| 	@$(call DEL, $(PROOT)/include/curl/curlbuild.h) | ||||
| endif | ||||
| 	-$(RM) $(libcurl_a_OBJECTS) $(RESOURCE) | ||||
| 	@$(call DEL, $(libcurl_a_OBJECTS) $(RESOURCE)) | ||||
|  | ||||
| distclean vclean: clean | ||||
| 	-$(RM) $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_a_LIBRARY) | ||||
| 	@$(call DEL, $(libcurl_a_LIBRARY) $(libcurl_dll_LIBRARY) $(libcurl_dll_LIBRARY:.dll=.def) $(libcurl_dll_a_LIBRARY)) | ||||
|  | ||||
| $(PROOT)/include/curl/curlbuild.h: | ||||
| 	@echo Creating $@ | ||||
| 	@$(call COPY, $@.dist, $@) | ||||
|  | ||||
| $(LIBCARES_PATH)/libcares.a: | ||||
| 	$(MAKE) -C $(LIBCARES_PATH) -f Makefile.m32 | ||||
|  | ||||
| $(PROOT)/include/curl/curlbuild.h: | ||||
| 	@echo Creating $@ | ||||
| 	@$(CP) $(subst /,\,$@).dist $(subst /,\,$@) | ||||
|  | ||||
|   | ||||
| @@ -14,17 +14,17 @@ endif | ||||
|  | ||||
| # Edit the path below to point to the base of your Zlib sources. | ||||
| ifndef ZLIB_PATH | ||||
| ZLIB_PATH = ../../zlib-1.2.5 | ||||
| ZLIB_PATH = ../../zlib-1.2.7 | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your OpenSSL package. | ||||
| ifndef OPENSSL_PATH | ||||
| OPENSSL_PATH = ../../openssl-0.9.8r | ||||
| OPENSSL_PATH = ../../openssl-0.9.8x | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your LibSSH2 package. | ||||
| ifndef LIBSSH2_PATH | ||||
| LIBSSH2_PATH = ../../libssh2-1.3.0 | ||||
| LIBSSH2_PATH = ../../libssh2-1.4.2 | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your axTLS package. | ||||
| @@ -64,7 +64,8 @@ DESCR	= cURL libcurl $(LIBCURL_VERSION_STR) ($(LIBARCH)) - http://curl.haxx.se | ||||
| MTSAFE	= YES | ||||
| STACK	= 64000 | ||||
| SCREEN	= none | ||||
| EXPORTS	= @libcurl.imp | ||||
| EXPORTF	= $(TARGET).imp | ||||
| EXPORTS	= @$(EXPORTF) | ||||
|  | ||||
| # Uncomment the next line to enable linking with POSIX semantics. | ||||
| # POSIXFL = 1 | ||||
| @@ -330,7 +331,7 @@ $(OBJDIR)/%.o: %.c | ||||
| #	@echo Compiling $< | ||||
| 	$(CC) $(CFLAGS) -c $< -o $@ | ||||
|  | ||||
| $(OBJDIR)/version.inc: ../include/curl/curlver.h $(OBJDIR) | ||||
| $(OBJDIR)/version.inc: $(CURL_INC)/curl/curlver.h $(OBJDIR) | ||||
| 	@echo Creating $@ | ||||
| 	@$(AWK) -f ../packages/NetWare/get_ver.awk $< > $@ | ||||
|  | ||||
| @@ -350,7 +351,7 @@ clean: | ||||
| 	-$(RM) -r $(OBJDIR) | ||||
|  | ||||
| distclean vclean: clean | ||||
| 	-$(RM) $(TARGET).$(LIBEXT) $(TARGET).nlm | ||||
| 	-$(RM) $(TARGET).$(LIBEXT) $(TARGET).nlm $(TARGET).imp | ||||
| 	-$(RM) certdata.txt ca-bundle.crt | ||||
|  | ||||
| $(OBJDIR) $(INSTDIR): | ||||
| @@ -364,7 +365,7 @@ ifdef RANLIB | ||||
| 	@$(RANLIB) $@ | ||||
| endif | ||||
|  | ||||
| $(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(OBJL) $(XDCDATA) | ||||
| $(TARGET).nlm: $(OBJDIR)/$(TARGET).def $(OBJL) $(EXPORTF) $(XDCDATA) | ||||
| 	@echo Linking $@ | ||||
| 	@-$(RM) $@ | ||||
| 	@$(LD) $(LDFLAGS) $< | ||||
| @@ -660,6 +661,10 @@ else | ||||
| 	@echo $(DL)#define CURL_CA_BUNDLE getenv("CURL_CA_BUNDLE")$(DL) >> $@ | ||||
| endif | ||||
|  | ||||
| $(EXPORTF): $(CURL_INC)/curl/curl.h $(CURL_INC)/curl/easy.h $(CURL_INC)/curl/multi.h $(CURL_INC)/curl/mprintf.h | ||||
| 	@echo Creating $@ | ||||
| 	@$(AWK) -f ../packages/NetWare/get_exp.awk $^ > $@ | ||||
|  | ||||
| FORCE: ; | ||||
|  | ||||
| info: $(OBJDIR)/version.inc | ||||
| @@ -696,13 +701,6 @@ else | ||||
| 	@echo ipv6 support:    no | ||||
| endif | ||||
|  | ||||
| $(LIBCARES_PATH)/libcares.$(LIBEXT): | ||||
| 	$(MAKE) -C $(LIBCARES_PATH) -f Makefile.netware lib | ||||
|  | ||||
| ca-bundle.crt: mk-ca-bundle.pl | ||||
| 	@echo Creating $@ | ||||
| 	@-$(PERL) $< -b -n $@ | ||||
|  | ||||
| $(CURL_INC)/curl/curlbuild.h: Makefile.netware FORCE | ||||
| 	@echo Creating $@ | ||||
| 	@echo $(DL)/* $@ intended for NetWare target.$(DL) > $@ | ||||
| @@ -741,3 +739,10 @@ endif | ||||
| 	@echo $(DL)typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;$(DL) >> $@ | ||||
| 	@echo $(DL)#endif /* __CURL_CURLBUILD_H */$(DL) >> $@ | ||||
|  | ||||
| $(LIBCARES_PATH)/libcares.$(LIBEXT): | ||||
| 	$(MAKE) -C $(LIBCARES_PATH) -f Makefile.netware lib | ||||
|  | ||||
| ca-bundle.crt: mk-ca-bundle.pl | ||||
| 	@echo Creating $@ | ||||
| 	@-$(PERL) $< -b -n $@ | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1999 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1999 - 2012, 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 | ||||
| @@ -22,7 +22,7 @@ | ||||
|  | ||||
| # All files in the Makefile.vc* series are generated automatically from the | ||||
| # one made for MSVC version 6. Alas, if you want to do changes to any of the | ||||
| # fiels and send back to the project, edit the version six, make your diff and | ||||
| # files and send back to the project, edit the version six, make your diff and | ||||
| # mail curl-library. | ||||
|  | ||||
| ########################################################################### | ||||
| @@ -65,15 +65,15 @@ | ||||
| !INCLUDE ..\Makefile.msvc.names | ||||
|  | ||||
| !IFNDEF OPENSSL_PATH | ||||
| OPENSSL_PATH   = ../../openssl-0.9.8r | ||||
| OPENSSL_PATH   = ../../openssl-0.9.8x | ||||
| !ENDIF | ||||
|  | ||||
| !IFNDEF LIBSSH2_PATH | ||||
| LIBSSH2_PATH   = ../../libssh2-1.2.8 | ||||
| LIBSSH2_PATH   = ../../libssh2-1.4.2 | ||||
| !ENDIF | ||||
|  | ||||
| !IFNDEF ZLIB_PATH | ||||
| ZLIB_PATH  = ../../zlib-1.2.5 | ||||
| ZLIB_PATH  = ../../zlib-1.2.7 | ||||
| !ENDIF | ||||
|  | ||||
| !IFNDEF MACHINE | ||||
| @@ -105,7 +105,7 @@ WINDOWS_SDK_PATH = "$(PROGRAMFILES)\Microsoft SDK" | ||||
|  | ||||
| CCNODBG    = cl.exe /O2 /DNDEBUG | ||||
| CCDEBUG    = cl.exe /Od /Gm /Zi /D_DEBUG /GZ | ||||
| CFLAGSSSL  = /DUSE_SSLEAY /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl" | ||||
| CFLAGSSSL  = /DUSE_SSLEAY /DUSE_OPENSSL /I "$(OPENSSL_PATH)/inc32" /I "$(OPENSSL_PATH)/inc32/openssl" | ||||
| CFLAGSSSH2 = /DUSE_LIBSSH2 /DCURL_DISABLE_LDAP /DHAVE_LIBSSH2 /DHAVE_LIBSSH2_H /DLIBSSH2_WIN32 /DLIBSSH2_LIBRARY /I "$(LIBSSH2_PATH)/include" | ||||
| CFLAGSZLIB = /DHAVE_ZLIB_H /DHAVE_ZLIB /DHAVE_LIBZ /I "$(ZLIB_PATH)" | ||||
| CFLAGS     = /I. /I../include /nologo /W3 /GX /DWIN32 /YX /FD /c /DBUILDING_LIBCURL /D_BIND_TO_CURRENT_VCLIBS_VERSION=1 | ||||
| @@ -116,7 +116,7 @@ LFLAGS     = /nologo /machine:$(MACHINE) | ||||
| SSLLIBS    = libeay32.lib ssleay32.lib | ||||
| ZLIBLIBSDLL= zdll.lib | ||||
| ZLIBLIBS   = zlib.lib | ||||
| WINLIBS    = ws2_32.lib wldap32.lib | ||||
| WINLIBS    = ws2_32.lib wldap32.lib advapi32.lib | ||||
| CFLAGS     = $(CFLAGS) | ||||
|  | ||||
| CFGSET     = FALSE | ||||
| @@ -189,6 +189,20 @@ CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # release-ssl-ssh2-zlib | ||||
|  | ||||
| !IF "$(CFG)" == "release-ssl-ssh2-zlib" | ||||
| TARGET   = $(LIBCURL_STA_LIB_REL) | ||||
| DIROBJ   = $(CFG) | ||||
| LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32" | ||||
| LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)" | ||||
| LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)" | ||||
| LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) | ||||
| CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # release-ssl-dll | ||||
|  | ||||
| @@ -226,36 +240,6 @@ CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # release-ssl-ssh2-zlib | ||||
|  | ||||
| !IF "$(CFG)" == "release-ssl-ssh2-zlib" | ||||
| TARGET   = $(LIB_NAME).lib | ||||
| DIROBJ   = $(CFG) | ||||
| LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32" | ||||
| LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)" | ||||
| LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)" | ||||
| LNK      = $(LNKLIB) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) | ||||
| CC       = $(CCNODBG) $(RTLIB) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| RESOURCE = $(LIBSSH2_PATH)/Release/src/libssh2.lib $(ZLIB_PATH)/zlib.lib | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # debug-ssl-ssh2-zlib | ||||
|  | ||||
| !IF "$(CFG)" == "debug-ssl-ssh2-zlib" | ||||
| TARGET   = $(LIB_NAME_DEBUG).lib | ||||
| DIROBJ   = $(CFG) | ||||
| LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)" | ||||
| LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)" | ||||
| LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32" | ||||
| LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) | ||||
| CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| RESOURCE = $(LIBSSH2_PATH)/Release/src/libssh2.lib $(ZLIB_PATH)/zlib.lib | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # release-dll | ||||
|  | ||||
| @@ -356,6 +340,20 @@ CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # debug-ssl-ssh2-zlib | ||||
|  | ||||
| !IF "$(CFG)" == "debug-ssl-ssh2-zlib" | ||||
| TARGET   = $(LIBCURL_STA_LIB_DBG) | ||||
| DIROBJ   = $(CFG) | ||||
| LFLAGSZLIB = "/LIBPATH:$(ZLIB_PATH)" | ||||
| LFLAGSSSH2 = "/LIBPATH:$(LIBSSH2_PATH)" | ||||
| LFLAGSSSL = "/LIBPATH:$(OPENSSL_PATH)\out32" | ||||
| LNK      = $(LNKLIB) $(ZLIBLIBS) $(LFLAGSSSL) $(LFLAGSSSH2) $(LFLAGSZLIB) /out:$(DIROBJ)\$(TARGET) | ||||
| CC       = $(CCDEBUG) $(RTLIBD) $(CFLAGSSSL) $(CFLAGSSSH2) $(CFLAGSZLIB) $(CFLAGSLIB) | ||||
| CFGSET   = TRUE | ||||
| !ENDIF | ||||
|  | ||||
| ###################### | ||||
| # debug-ssl-dll | ||||
|  | ||||
| @@ -463,11 +461,11 @@ RESOURCE = $(DIROBJ)\libcurl.res | ||||
| !MESSAGE   release-dll-ssl-dll          - release dynamic library with dynamic ssl | ||||
| !MESSAGE   release-dll-zlib-dll         - release dynamic library with dynamic zlib | ||||
| !MESSAGE   release-dll-ssl-dll-zlib-dll - release dynamic library with dynamic ssl and dynamic zlib | ||||
| !MESSAGE   debug-ssl-ssh2-zlib          - debug static library with ssl, ssh2 and zlib | ||||
| !MESSAGE   debug                        - debug static library | ||||
| !MESSAGE   debug-ssl                    - debug static library with ssl | ||||
| !MESSAGE   debug-zlib                   - debug static library with zlib | ||||
| !MESSAGE   debug-ssl-zlib               - debug static library with ssl and zlib | ||||
| !MESSAGE   debug-ssl-ssh2-zlib          - debug static library with ssl, ssh2 and zlib | ||||
| !MESSAGE   debug-ssl-dll                - debug static library with dynamic ssl | ||||
| !MESSAGE   debug-zlib-dll               - debug static library with dynamic zlib | ||||
| !MESSAGE   debug-ssl-dll-zlib-dll       - debug static library with dynamic ssl and dynamic zlib | ||||
| @@ -503,25 +501,29 @@ X_OBJS= \ | ||||
| 	$(DIROBJ)\content_encoding.obj \ | ||||
| 	$(DIROBJ)\cookie.obj \ | ||||
| 	$(DIROBJ)\curl_addrinfo.obj \ | ||||
| 	$(DIROBJ)\curl_darwinssl.obj \ | ||||
| 	$(DIROBJ)\curl_fnmatch.obj \ | ||||
| 	$(DIROBJ)\curl_gethostname.obj \ | ||||
| 	$(DIROBJ)\curl_memrchr.obj \ | ||||
| 	$(DIROBJ)\curl_multibyte.obj \ | ||||
| 	$(DIROBJ)\curl_ntlm.obj \ | ||||
| 	$(DIROBJ)\curl_ntlm_core.obj \ | ||||
| 	$(DIROBJ)\curl_ntlm_msgs.obj \ | ||||
| 	$(DIROBJ)\curl_ntlm_wb.obj \ | ||||
| 	$(DIROBJ)\curl_rand.obj \ | ||||
| 	$(DIROBJ)\curl_rtmp.obj \ | ||||
| 	$(DIROBJ)\curl_sasl.obj \ | ||||
| 	$(DIROBJ)\curl_schannel.obj \ | ||||
| 	$(DIROBJ)\curl_sspi.obj \ | ||||
| 	$(DIROBJ)\curl_threads.obj \ | ||||
| 	$(DIROBJ)\dict.obj \ | ||||
| 	$(DIROBJ)\easy.obj \ | ||||
| 	$(DIROBJ)\escape.obj \ | ||||
| 	$(DIROBJ)\fileinfo.obj \ | ||||
| 	$(DIROBJ)\file.obj \ | ||||
| 	$(DIROBJ)\fileinfo.obj \ | ||||
| 	$(DIROBJ)\formdata.obj \ | ||||
| 	$(DIROBJ)\ftplistparser.obj \ | ||||
| 	$(DIROBJ)\ftp.obj \ | ||||
| 	$(DIROBJ)\ftplistparser.obj \ | ||||
| 	$(DIROBJ)\getenv.obj \ | ||||
| 	$(DIROBJ)\getinfo.obj \ | ||||
| 	$(DIROBJ)\gopher.obj \ | ||||
| @@ -529,15 +531,15 @@ X_OBJS= \ | ||||
| 	$(DIROBJ)\hash.obj \ | ||||
| 	$(DIROBJ)\hmac.obj \ | ||||
| 	$(DIROBJ)\hostasyn.obj \ | ||||
| 	$(DIROBJ)\hostip.obj \ | ||||
| 	$(DIROBJ)\hostip4.obj \ | ||||
| 	$(DIROBJ)\hostip6.obj \ | ||||
| 	$(DIROBJ)\hostip.obj \ | ||||
| 	$(DIROBJ)\hostsyn.obj \ | ||||
| 	$(DIROBJ)\http.obj \ | ||||
| 	$(DIROBJ)\http_chunks.obj \ | ||||
| 	$(DIROBJ)\http_digest.obj \ | ||||
| 	$(DIROBJ)\http_negotiate.obj \ | ||||
| 	$(DIROBJ)\http_negotiate_sspi.obj \ | ||||
| 	$(DIROBJ)\http.obj \ | ||||
| 	$(DIROBJ)\http_proxy.obj \ | ||||
| 	$(DIROBJ)\if2ip.obj \ | ||||
| 	$(DIROBJ)\imap.obj \ | ||||
| @@ -565,8 +567,8 @@ X_OBJS= \ | ||||
| 	$(DIROBJ)\share.obj \ | ||||
| 	$(DIROBJ)\slist.obj \ | ||||
| 	$(DIROBJ)\smtp.obj \ | ||||
| 	$(DIROBJ)\socks_gssapi.obj \ | ||||
| 	$(DIROBJ)\socks.obj \ | ||||
| 	$(DIROBJ)\socks_gssapi.obj \ | ||||
| 	$(DIROBJ)\socks_sspi.obj \ | ||||
| 	$(DIROBJ)\speedcheck.obj \ | ||||
| 	$(DIROBJ)\splay.obj \ | ||||
|   | ||||
| @@ -33,10 +33,10 @@ BUILD_TYPE := debug | ||||
| USER_CFLAGS:= | ||||
|  | ||||
| # directories where to seek for includes and libraries | ||||
| OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8a-vxWorks6.3/include | ||||
| OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8a-vxWorks6.3 | ||||
| ZLIB_INC    := D:/libraries/zlib/zlib-1.2.3-VxWorks6.3/zlib-1.2.3 | ||||
| ZLIB_LIB    := D:/libraries/zlib/zlib-1.2.3-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib | ||||
| OPENSSL_INC := D:/libraries/openssl/openssl-0.9.8x-vxWorks6.3/include | ||||
| OPENSSL_LIB := D:/libraries/openssl/openssl-0.9.8x-vxWorks6.3 | ||||
| ZLIB_INC    := D:/libraries/zlib/zlib-1.2.7-VxWorks6.3/zlib-1.2.7 | ||||
| ZLIB_LIB    := D:/libraries/zlib/zlib-1.2.7-VxWorks6.3/binaries/vxworks_3.1_gnu/Debug/lib | ||||
| ARES_INC    := | ||||
| ARES_LIB    := | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -20,10 +20,13 @@ | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| #ifdef __AMIGA__ /* Any AmigaOS flavour */ | ||||
| #include "setup.h" | ||||
|  | ||||
| #if defined(__AMIGA__) && !defined(__ixemul__) | ||||
|  | ||||
| #include <amitcp/socketbasetags.h> | ||||
|  | ||||
| #include "amigaos.h" | ||||
| #include <amitcp/socketbasetags.h> | ||||
|  | ||||
| struct Library *SocketBase = NULL; | ||||
| extern int errno, h_errno; | ||||
| @@ -35,7 +38,7 @@ void __request(const char *msg); | ||||
| # define __request( msg )       Printf( msg "\n\a") | ||||
| #endif | ||||
|  | ||||
| void amiga_cleanup() | ||||
| void Curl_amiga_cleanup() | ||||
| { | ||||
|   if(SocketBase) { | ||||
|     CloseLibrary(SocketBase); | ||||
| @@ -43,7 +46,7 @@ void amiga_cleanup() | ||||
|   } | ||||
| } | ||||
|  | ||||
| BOOL amiga_init() | ||||
| bool Curl_amiga_init() | ||||
| { | ||||
|   if(!SocketBase) | ||||
|     SocketBase = OpenLibrary("bsdsocket.library", 4); | ||||
| @@ -61,20 +64,14 @@ BOOL amiga_init() | ||||
|   } | ||||
|  | ||||
| #ifndef __libnix__ | ||||
|   atexit(amiga_cleanup); | ||||
|   atexit(Curl_amiga_cleanup); | ||||
| #endif | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| #ifdef __libnix__ | ||||
| ADD2EXIT(amiga_cleanup,-50); | ||||
| ADD2EXIT(Curl_amiga_cleanup,-50); | ||||
| #endif | ||||
|  | ||||
| #else /* __AMIGA__ */ | ||||
|  | ||||
| #ifdef __POCC__ | ||||
| #  pragma warn(disable:2024)  /* Disable warning #2024: Empty input file */ | ||||
| #endif | ||||
|  | ||||
| #endif /* __AMIGA__ */ | ||||
| #endif /* __AMIGA__ && ! __ixemul__ */ | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #ifndef LIBCURL_AMIGAOS_H | ||||
| #define LIBCURL_AMIGAOS_H | ||||
| #ifndef HEADER_CURL_AMIGAOS_H | ||||
| #define HEADER_CURL_AMIGAOS_H | ||||
| /*************************************************************************** | ||||
|  *                                  _   _ ____  _ | ||||
|  *  Project                     ___| | | |  _ \| | | ||||
| @@ -7,7 +7,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * | ||||
|  * This software is licensed as described in the file COPYING, which | ||||
|  * you should have received as part of this distribution. The terms | ||||
| @@ -21,37 +21,19 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| #include "setup.h" | ||||
|  | ||||
| #ifdef __AMIGA__ /* Any AmigaOS flavour */ | ||||
| #if defined(__AMIGA__) && !defined(__ixemul__) | ||||
|  | ||||
| #ifndef __ixemul__ | ||||
| bool Curl_amiga_init(); | ||||
| void Curl_amiga_cleanup(); | ||||
|  | ||||
| #include <exec/types.h> | ||||
| #include <exec/execbase.h> | ||||
| #else | ||||
|  | ||||
| #include <proto/exec.h> | ||||
| #include <proto/dos.h> | ||||
| #define Curl_amiga_init() 1 | ||||
| #define Curl_amiga_cleanup() Curl_nop_stmt | ||||
|  | ||||
| #include <sys/socket.h> | ||||
|  | ||||
| #include "config-amigaos.h" | ||||
|  | ||||
| #ifndef select | ||||
| # define select(args...) WaitSelect( args, NULL) | ||||
| #endif | ||||
| #ifndef ioctl | ||||
| # define ioctl(a,b,c,d)  IoctlSocket( (LONG)a, (ULONG)b, (char*)c) | ||||
| #endif | ||||
| #define _AMIGASF        1 | ||||
|  | ||||
| extern void amiga_cleanup(); | ||||
| extern BOOL amiga_init(); | ||||
|  | ||||
| #else /* __ixemul__ */ | ||||
|  | ||||
| #warning compiling with ixemul... | ||||
|  | ||||
| #endif /* __ixemul__ */ | ||||
| #endif /* __AMIGA__ */ | ||||
| #endif /* LIBCURL_AMIGAOS_H */ | ||||
| #endif /* HEADER_CURL_AMIGAOS_H */ | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -83,6 +83,8 @@ | ||||
| #    define CARES_STATICLIB | ||||
| #  endif | ||||
| #  include <ares.h> | ||||
| #  include <ares_version.h> /* really old c-ares didn't include this by | ||||
|                                itself */ | ||||
|  | ||||
| #if ARES_VERSION >= 0x010500 | ||||
| /* c-ares 1.5.0 or later, the callback proto is modified */ | ||||
|   | ||||
							
								
								
									
										66
									
								
								lib/axtls.c
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								lib/axtls.c
									
									
									
									
									
								
							| @@ -47,6 +47,8 @@ | ||||
| #include "curl_memory.h" | ||||
| /* The last #include file should be: */ | ||||
| #include "memdebug.h" | ||||
| #include "hostcheck.h" | ||||
|  | ||||
|  | ||||
| /* SSL_read is opied from axTLS compat layer */ | ||||
| static int SSL_read(SSL *ssl, void *buf, int num) | ||||
| @@ -150,7 +152,11 @@ Curl_axtls_connect(struct connectdata *conn, | ||||
|   int i, ssl_fcn_return; | ||||
|   const uint8_t *ssl_sessionid; | ||||
|   size_t ssl_idsize; | ||||
|   const char *x509; | ||||
|   const char *peer_CN; | ||||
|   uint32_t dns_altname_index; | ||||
|   const char *dns_altname; | ||||
|   int8_t found_subject_alt_names = 0; | ||||
|   int8_t found_subject_alt_name_matching_conn = 0; | ||||
|  | ||||
|   /* Assuming users will not compile in custom key/cert to axTLS */ | ||||
|   uint32_t client_option = SSL_NO_DEFAULT_KEY|SSL_SERVER_VERIFY_LATER; | ||||
| @@ -296,19 +302,65 @@ Curl_axtls_connect(struct connectdata *conn, | ||||
|   /* Here, gtls.c does issuer verification. axTLS has no straightforward | ||||
|    * equivalent, so omitting for now.*/ | ||||
|  | ||||
|   /* See if common name was set in server certificate */ | ||||
|   x509 = ssl_get_cert_dn(ssl, SSL_X509_CERT_COMMON_NAME); | ||||
|   if(x509 == NULL) | ||||
|     infof(data, "error fetching CN from cert\n"); | ||||
|  | ||||
|   /* Here, gtls.c does the following | ||||
|    * 1) x509 hostname checking per RFC2818.  axTLS doesn't support this, but | ||||
|    *    it seems useful.  Omitting for now. | ||||
|    *    it seems useful. This is now implemented, by Oscar Koeroo | ||||
|    * 2) checks cert validity based on time.  axTLS does this in ssl_verify_cert | ||||
|    * 3) displays a bunch of cert information.  axTLS doesn't support most of | ||||
|    *    this, but a couple fields are available. | ||||
|    */ | ||||
|  | ||||
|  | ||||
|   /* There is no (DNS) Altnames count in the version 1.4.8 API. There is a | ||||
|      risk of an inifite loop */ | ||||
|   for(dns_altname_index = 0; ; dns_altname_index++) { | ||||
|     dns_altname = ssl_get_cert_subject_alt_dnsname(ssl, dns_altname_index); | ||||
|     if(dns_altname == NULL) { | ||||
|       break; | ||||
|     } | ||||
|     found_subject_alt_names = 1; | ||||
|  | ||||
|     infof(data, "\tComparing subject alt name DNS with hostname: %s <-> %s\n", | ||||
|           dns_altname, conn->host.name); | ||||
|     if(Curl_cert_hostcheck(dns_altname, conn->host.name)) { | ||||
|       found_subject_alt_name_matching_conn = 1; | ||||
|       break; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* RFC2818 checks */ | ||||
|   if(found_subject_alt_names && !found_subject_alt_name_matching_conn) { | ||||
|     /* Break connection ! */ | ||||
|     Curl_axtls_close(conn, sockindex); | ||||
|     failf(data, "\tsubjectAltName(s) do not match %s\n", conn->host.dispname); | ||||
|     return CURLE_PEER_FAILED_VERIFICATION; | ||||
|   } | ||||
|   else if(found_subject_alt_names == 0) { | ||||
|     /* Per RFC2818, when no Subject Alt Names were available, examine the peer | ||||
|        CN as a legacy fallback */ | ||||
|     peer_CN = ssl_get_cert_dn(ssl, SSL_X509_CERT_COMMON_NAME); | ||||
|     if(peer_CN == NULL) { | ||||
|       /* Similar behaviour to the OpenSSL interface */ | ||||
|       Curl_axtls_close(conn, sockindex); | ||||
|       failf(data, "unable to obtain common name from peer certificate"); | ||||
|       return CURLE_PEER_FAILED_VERIFICATION; | ||||
|     } | ||||
|     else { | ||||
|       if(!Curl_cert_hostcheck((const char *)peer_CN, conn->host.name)) { | ||||
|         if(data->set.ssl.verifyhost) { | ||||
|           /* Break connection ! */ | ||||
|           Curl_axtls_close(conn, sockindex); | ||||
|           failf(data, "\tcommon name \"%s\" does not match \"%s\"\n", | ||||
|                 peer_CN, conn->host.dispname); | ||||
|           return CURLE_PEER_FAILED_VERIFICATION; | ||||
|         } | ||||
|         else | ||||
|           infof(data, "\tcommon name \"%s\" does not match \"%s\"\n", | ||||
|                 peer_CN, conn->host.dispname); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /* General housekeeping */ | ||||
|   conn->ssl[sockindex].state = ssl_connection_complete; | ||||
|   conn->ssl[sockindex].ssl = ssl; | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| #ifndef LIBCURL_CONFIG_AMIGAOS_H | ||||
| #define LIBCURL_CONFIG_AMIGAOS_H | ||||
| #ifndef HEADER_CURL_CONFIG_AMIGAOS_H | ||||
| #define HEADER_CURL_CONFIG_AMIGAOS_H | ||||
| /*************************************************************************** | ||||
|  *                                  _   _ ____  _ | ||||
|  *  Project                     ___| | | |  _ \| | | ||||
| @@ -7,7 +7,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2012, 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 | ||||
| @@ -22,6 +22,10 @@ | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* ================================================================ */ | ||||
| /*               Hand crafted config file for AmigaOS               */ | ||||
| /* ================================================================ */ | ||||
|  | ||||
| #ifdef __AMIGA__ /* Any AmigaOS flavour */ | ||||
|  | ||||
| #define HAVE_ARPA_INET_H 1 | ||||
| @@ -72,8 +76,6 @@ | ||||
| #define HAVE_SYS_STAT_H 1 | ||||
| #define HAVE_SYS_TIME_H 1 | ||||
| #define HAVE_SYS_TYPES_H 1 | ||||
| #define HAVE_TERMIOS_H 1 | ||||
| #define HAVE_TERMIO_H 1 | ||||
| #define HAVE_TIME_H 1 | ||||
| #define HAVE_UNAME 1 | ||||
| #define HAVE_UNISTD_H 1 | ||||
| @@ -89,11 +91,11 @@ | ||||
| #define SIZEOF_SHORT 2 | ||||
| #define SIZEOF_SIZE_T 4 | ||||
|  | ||||
| #define USE_MANUAL 1 | ||||
| #define USE_OPENSSL 1 | ||||
| #define USE_SSLEAY 1 | ||||
| #define CURL_DISABLE_LDAP 1 | ||||
|  | ||||
|  | ||||
| #define OS "AmigaOS" | ||||
|  | ||||
| #define PACKAGE "curl" | ||||
| @@ -114,10 +116,22 @@ | ||||
|  | ||||
| #define in_addr_t int | ||||
|  | ||||
| #ifndef F_OK | ||||
| #  define F_OK 0 | ||||
| #endif | ||||
|  | ||||
| #ifndef O_RDONLY | ||||
| #  define O_RDONLY 0x0000 | ||||
| #endif | ||||
|  | ||||
| #ifndef LONG_MAX | ||||
| #  define LONG_MAX 0x7fffffffL | ||||
| #endif | ||||
|  | ||||
| #ifndef LONG_MIN | ||||
| #  define LONG_MIN (-0x7fffffffL-1) | ||||
| #endif | ||||
|  | ||||
| #define HAVE_GETNAMEINFO 1 | ||||
| #define GETNAMEINFO_QUAL_ARG1 const | ||||
| #define GETNAMEINFO_TYPE_ARG1 struct sockaddr * | ||||
| @@ -150,4 +164,4 @@ | ||||
| #define SEND_TYPE_RETV int | ||||
|  | ||||
| #endif /* __AMIGA__ */ | ||||
| #endif /* LIBCURL_CONFIG_AMIGAOS_H */ | ||||
| #endif /* HEADER_CURL_CONFIG_AMIGAOS_H */ | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user