Compare commits
	
		
			454 Commits
		
	
	
		
			http2-push
			...
			curl-7_46_
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | e2ae32ff5f | ||
|   | 6623a485d3 | ||
|   | 940c2f51aa | ||
|   | a47137c4a5 | ||
|   | 5648f0a32c | ||
|   | 2fddc4e3e1 | ||
|   | e55f15454e | ||
|   | fe7c39d353 | ||
|   | 8f281fb76d | ||
|   | 8cbd80686e | ||
|   | a14fa8f8ff | ||
|   | 81ae6d01fa | ||
|   | 19a8afb3c0 | ||
|   | 78c25c854a | ||
|   | db05d7a731 | ||
|   | cd2b73b3ed | ||
|   | 5b96b5e79e | ||
|   | 99d17a5e2b | ||
|   | facf2925c7 | ||
|   | be0d4141af | ||
|   | 40c349ada9 | ||
|   | bb9ec5ebb2 | ||
|   | c341311a0e | ||
|   | fc5d783589 | ||
|   | 98acebb526 | ||
|   | 06b288a72d | ||
|   | d55f9071fb | ||
|   | b7f3f1b68f | ||
|   | c2f1730e17 | ||
|   | 8d17117683 | ||
|   | c90e348579 | ||
|   | f024ece8c7 | ||
|   | ad6f6e17d3 | ||
|   | 0ddc59be0a | ||
|   | bbb34b6f15 | ||
|   | 41efdadf09 | ||
|   | 6af80afe49 | ||
|   | 80562083da | ||
|   | ff8d352ae9 | ||
|   | 250d786bd2 | ||
|   | 0cf80c05ea | ||
|   | b27893d15c | ||
|   | 05cd55f229 | ||
|   | b4c39010b5 | ||
|   | a72207ecf0 | ||
|   | 6c5f4303fe | ||
|   | 39904d6f7d | ||
|   | 88f585c3a1 | ||
|   | 051485d9e0 | ||
|   | 3c4065f402 | ||
|   | d0ddfe2216 | ||
|   | ca770d87e2 | ||
|   | ee04bee82b | ||
|   | 6cfd646f58 | ||
|   | 808a17ee67 | ||
|   | ba4d8f7eba | ||
|   | febda2f305 | ||
|   | ceb396c54a | ||
|   | 796c6ef02b | ||
|   | 60cf8157c7 | ||
|   | ad2d517545 | ||
|   | 1ee0aded89 | ||
|   | f322ca7765 | ||
|   | fd0c678e21 | ||
|   | aba281e762 | ||
|   | 64e959ffe3 | ||
|   | 86e2197337 | ||
|   | 6c20a87105 | ||
|   | b430d94fb2 | ||
|   | 0755308a6a | ||
|   | 53b13d0c71 | ||
|   | 431ba85829 | ||
|   | eb3703f052 | ||
|   | d7e352402c | ||
|   | 278ea24a7a | ||
|   | 1f82df9146 | ||
|   | 077fd8f1fa | ||
|   | b6baa108fa | ||
|   | 88702ebb31 | ||
|   | d6d58dd558 | ||
|   | a7c4bcd971 | ||
|   | 3c24400636 | ||
|   | dcf5b614ca | ||
|   | 6479f5a076 | ||
|   | d64add3c71 | ||
|   | a215381c94 | ||
|   | 3e0d64d075 | ||
|   | 01b7d8274c | ||
|   | 7023d8aa37 | ||
|   | eaa98cef8d | ||
|   | 4e3d396900 | ||
|   | f54a4aa9a3 | ||
|   | 6225c48a03 | ||
|   | 9b7f8ab21b | ||
|   | 2200bf6205 | ||
|   | 729b92afbe | ||
|   | 23b8fc15c8 | ||
|   | e3c85405d0 | ||
|   | 2581585961 | ||
|   | 007f3e0971 | ||
|   | 23c4090fd3 | ||
|   | 50bff12ac8 | ||
|   | 1a614c6c37 | ||
|   | 505d966850 | ||
|   | 748ffc77c6 | ||
|   | 60c86297bf | ||
|   | cd3aba1a5c | ||
|   | f6fbbd6dc3 | ||
|   | 210fc95c0f | ||
|   | 3bd7f28000 | ||
|   | 3f7b1bb89f | ||
|   | 1ea3a7d5e4 | ||
|   | cba5bc5854 | ||
|   | ca5f9341ef | ||
|   | 49a991346e | ||
|   | fbf09b7775 | ||
|   | f6ce8c9abb | ||
|   | 4c62066cec | ||
|   | 9b87078d55 | ||
|   | 370ee919b3 | ||
|   | e2f430c74a | ||
|   | ea2c959db4 | ||
|   | ca20ca54b2 | ||
|   | d9a1776b32 | ||
|   | 72d99f2e7b | ||
|   | 2f4f4108d6 | ||
|   | 03b6e07816 | ||
|   | 6288cb9304 | ||
|   | eefd5a95af | ||
|   | b1fc8c0e97 | ||
|   | 529f9310b1 | ||
|   | b1199def8c | ||
|   | b7d894d808 | ||
|   | d31ed6ac71 | ||
|   | 419d410ca0 | ||
|   | 3042cb5043 | ||
|   | 23cc0c00d4 | ||
|   | ace68fdc0c | ||
|   | 9744ef2289 | ||
|   | c238d4da1b | ||
|   | 5fecdc26f7 | ||
|   | 257a1c0d14 | ||
|   | fe7590f729 | ||
|   | 72646c2e48 | ||
|   | 4201e4a9ac | ||
|   | 4c773bcb47 | ||
|   | cb922d47d6 | ||
|   | 06b5fd8fde | ||
|   | 5cf0166636 | ||
|   | 19cb0c4a88 | ||
|   | e77b5b7453 | ||
|   | 684816cd9b | ||
|   | 2b98cb57c4 | ||
|   | 3fde8a4971 | ||
|   | 443e81ea47 | ||
|   | c6aedf680f | ||
|   | 854976ad7b | ||
|   | 14d5a86b3e | ||
|   | db532eff1e | ||
|   | 3ad83bc3a6 | ||
|   | 13ddb9e54a | ||
|   | 7715a70ba2 | ||
|   | 6f8ecea059 | ||
|   | 048f84637f | ||
|   | d30ad55c59 | ||
|   | 08e5fb4465 | ||
|   | 2e373f4a6f | ||
|   | bce689605d | ||
|   | 8256b44e5a | ||
|   | da2d3b5805 | ||
|   | 3771da335b | ||
|   | 8bb43ecd05 | ||
|   | 645fc44764 | ||
|   | 2c000d91f3 | ||
|   | aed57fdc95 | ||
|   | 69ea579700 | ||
|   | b1d55997e5 | ||
|   | 2eb4f5efe9 | ||
|   | 5bf36ea30d | ||
|   | c6ff538ebd | ||
|   | 8fd190c04f | ||
|   | ec9cbb1757 | ||
|   | 69b89050d4 | ||
|   | 963b7bd4f7 | ||
|   | af90becf4b | ||
|   | 46ad4f7f93 | ||
|   | 790d6de485 | ||
|   | 4f037367ed | ||
|   | 32fc638ddf | ||
|   | 119037325d | ||
|   | 710bb89cf3 | ||
|   | 095fe60e27 | ||
|   | 4d60e125de | ||
|   | 7c478cad57 | ||
|   | 0110cced2a | ||
|   | 5f87906e0e | ||
|   | 684bf30802 | ||
|   | 6b56901b56 | ||
|   | 7362008c1c | ||
|   | 1467dec147 | ||
|   | 0583ed3e48 | ||
|   | 67ae07c2e0 | ||
|   | 3f8d4e264d | ||
|   | bb72b9453d | ||
|   | 5fde69cdc3 | ||
|   | 443014e905 | ||
|   | 37af1766e9 | ||
|   | 67dbf8aa9c | ||
|   | 4d95491636 | ||
|   | 47b7d658b4 | ||
|   | f65e07ca59 | ||
|   | 30c131f51f | ||
|   | c979a3d0c4 | ||
|   | c184a5c6bc | ||
|   | c00cec9864 | ||
|   | 958d2ffb19 | ||
|   | a9fd53887b | ||
|   | 65ca3b083c | ||
|   | 82e3e8e31f | ||
|   | 887a4a19aa | ||
|   | b550a1c067 | ||
|   | 202162daeb | ||
|   | a7cb6a28e2 | ||
|   | 3d4ffa71f7 | ||
|   | cdba82e1c2 | ||
|   | 68c620fdc7 | ||
|   | fad9604613 | ||
|   | 0e17369f5b | ||
|   | 481e0de00a | ||
|   | df6a4d3519 | ||
|   | e30763c72e | ||
|   | 6a0bd6ce8b | ||
|   | 4e6f7aee64 | ||
|   | 1b8a5afe78 | ||
|   | 87e533ace0 | ||
|   | 27620171ff | ||
|   | 664398e43b | ||
|   | 3a4f42dd0c | ||
|   | 5ea0004438 | ||
|   | f1ccf68e8c | ||
|   | d36d83ba4b | ||
|   | 5dc556031b | ||
|   | 0e91737615 | ||
|   | 7380433d6a | ||
|   | a60bde79f9 | ||
|   | 82db076d9f | ||
|   | 25a2e8ebaf | ||
|   | 1869164293 | ||
|   | 4ceddcf8ca | ||
|   | e1a4bab86a | ||
|   | 8a0ff1e529 | ||
|   | 668231c309 | ||
|   | cb6a07fed0 | ||
|   | b604b7f040 | ||
|   | 9bb198026e | ||
|   | 749c0ca05b | ||
|   | c764cb4add | ||
|   | 6099f5fcac | ||
|   | 4963948089 | ||
|   | b850437991 | ||
|   | eb8283bb1a | ||
|   | 415f0370ea | ||
|   | 347a6ee597 | ||
|   | 2a59fb25cc | ||
|   | fb0825cb0a | ||
|   | dfeb85a187 | ||
|   | 96a3488eae | ||
|   | 45e918564a | ||
|   | 1abb218fe0 | ||
|   | ac7be02e69 | ||
|   | 37f173cfd0 | ||
|   | 2132708ac2 | ||
|   | 4a889441d3 | ||
|   | ce034356d2 | ||
|   | f21408132a | ||
|   | aec249f89f | ||
|   | e7d171da6b | ||
|   | 874413b3e1 | ||
|   | 62f306ff34 | ||
|   | 36f6f6f4f2 | ||
|   | a78534794e | ||
|   | 110d99c661 | ||
|   | 6d91b70d8b | ||
|   | 2acaf3c804 | ||
|   | 9756d1da76 | ||
|   | 22cb631198 | ||
|   | 613e5022fe | ||
|   | 2c12ac8de2 | ||
|   | 30aa38c818 | ||
|   | 8363656cb4 | ||
|   | 38ef1b3e7f | ||
|   | 1d89fd983a | ||
|   | b3c7f5159a | ||
|   | 1cea72bfde | ||
|   | 14ff86256b | ||
|   | e4fb5f2f61 | ||
|   | e67e71d62b | ||
|   | 618dfd65e4 | ||
|   | 1f1f131e09 | ||
|   | 9518139c73 | ||
|   | 5a136398ed | ||
|   | 7166d91a03 | ||
|   | 31673ff517 | ||
|   | bedf0a588e | ||
|   | 6ba9a1b952 | ||
|   | bc66c21c23 | ||
|   | a9c97fba81 | ||
|   | 1a85c8ef15 | ||
|   | 9e1b1ca606 | ||
|   | 15da07d2f2 | ||
|   | 5be0c88297 | ||
|   | 052a9dfdad | ||
|   | 7332ac565c | ||
|   | 105828a309 | ||
|   | 2bcd3ef7b2 | ||
|   | 1a7f66a3de | ||
|   | c75a1e7750 | ||
|   | daf7f98c11 | ||
|   | bb0acba67d | ||
|   | 5778e6f526 | ||
|   | c8a656d3c7 | ||
|   | 9ee40ce2ab | ||
|   | 0b8e9c8522 | ||
|   | 9a5574ca7b | ||
|   | ade6682f8d | ||
|   | 002d58f1e8 | ||
|   | cde447217f | ||
|   | 9d29afdfe3 | ||
|   | 0cc0b7e268 | ||
|   | aa9ead36a4 | ||
|   | ecece2cfb5 | ||
|   | 4d13b78aec | ||
|   | 39dcf352d2 | ||
|   | 55a255ee9c | ||
|   | 4c47cbf533 | ||
|   | c22fae7ccc | ||
|   | d712da787e | ||
|   | 2b743dcf8e | ||
|   | 333c36b276 | ||
|   | 1ab763acce | ||
|   | a8e9e0c205 | ||
|   | 4a21346ef3 | ||
|   | 4aee1f9cf5 | ||
|   | b9b7ccd04a | ||
|   | 84d122a8d6 | ||
|   | 5b9151231d | ||
|   | cf8975387f | ||
|   | 0342ada31f | ||
|   | 3f5f042e5d | ||
|   | bb6b521f69 | ||
|   | 8279dd7d39 | ||
|   | fe6049f04b | ||
|   | 7f11259eb7 | ||
|   | 473807b95f | ||
|   | f08e30d7bc | ||
|   | 6428b8de42 | ||
|   | 97c9d31884 | ||
|   | 9947f259bf | ||
|   | 33de75ed63 | ||
|   | df5965ebf4 | ||
|   | 6e566451ce | ||
|   | 07f7cdc309 | ||
|   | 3725748599 | ||
|   | 1e67bc5eaf | ||
|   | 12f915ca2a | ||
|   | 4b96240d3f | ||
|   | 1b3d3f9237 | ||
|   | c4eb10e2f0 | ||
|   | 3b4ee0d432 | ||
|   | c092b0f0f3 | ||
|   | f75b6065db | ||
|   | 11ab3f8918 | ||
|   | a1b2a6bd93 | ||
|   | c8331f515e | ||
|   | 23b84e448f | ||
|   | 0da1f5dc5c | ||
|   | 909f0a82b0 | ||
|   | 8b1d00ac1a | ||
|   | f7dcc7c118 | ||
|   | ecf7618e12 | ||
|   | 5b9a006b8f | ||
|   | fc69e2f7ec | ||
|   | bdd8cf4777 | ||
|   | dda81c1d5f | ||
|   | 2d7e165761 | ||
|   | 8356022d17 | ||
|   | 467309406e | ||
|   | b656715da3 | ||
|   | 9b95306d4c | ||
|   | 98e8b050ef | ||
|   | d9efd36907 | ||
|   | 1627930177 | ||
|   | 299b74fcfc | ||
|   | 279965c923 | ||
|   | 7db03e5c21 | ||
|   | a728225a92 | ||
|   | 29e5cf2a2d | ||
|   | 0f645adc95 | ||
|   | 373b77bca2 | ||
|   | 6d62d2c55d | ||
|   | 14b9e780d4 | ||
|   | 8204844f47 | ||
|   | b46a7744bc | ||
|   | a284b0ebc4 | ||
|   | c5d060cab4 | ||
|   | 98835eed29 | ||
|   | cee21eb6a7 | ||
|   | da650c1e54 | ||
|   | 40c921f8b8 | ||
|   | 7a8e861a56 | ||
|   | ad32457623 | ||
|   | 32d4260c2d | ||
|   | 1df8d28381 | ||
|   | fa0eeedf35 | ||
|   | 68d17643f5 | ||
|   | aab76af1fa | ||
|   | 172b2beba6 | ||
|   | 606b29fe0d | ||
|   | 60b19630b0 | ||
|   | de74e856e6 | ||
|   | cd20e81e89 | ||
|   | 79416fb2d6 | ||
|   | 8f0178a56b | ||
|   | 845b011614 | ||
|   | ce1bf87a04 | ||
|   | 5602ad721b | ||
|   | 55b78c5ae9 | ||
|   | c00b18d540 | ||
|   | 4ed8537be6 | ||
|   | 66a5f76583 | ||
|   | 616cecfdb6 | ||
|   | b59f296bf6 | ||
|   | e6749055d6 | ||
|   | 8208dd3b22 | ||
|   | 0c46abd79a | ||
|   | 1f70cdef98 | ||
|   | e3e06e1aee | ||
|   | 37402b5eb8 | ||
|   | 69c77f69a5 | ||
|   | dc2cbfda89 | ||
|   | 1b5eba8324 | ||
|   | ddb106d7f6 | ||
|   | 77044b53f7 | ||
|   | c712aa0ebe | ||
|   | a384f28ca6 | ||
|   | bf445b6e12 | ||
|   | a3a55d80ec | ||
|   | e9f0dd43bc | ||
|   | f65ab8864e | ||
|   | feea9263e9 | ||
|   | ea7134ac87 | ||
|   | 70191958b5 | ||
|   | 5156982377 | ||
|   | 903b6e0556 | 
							
								
								
									
										63
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										63
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,51 +1,52 @@ | ||||
| .deps | ||||
| .libs | ||||
| *.lib | ||||
| *.pdb | ||||
| *.asc | ||||
| *.dll | ||||
| *.exe | ||||
| *.obj | ||||
| *.asc | ||||
| .*.swp | ||||
| Debug | ||||
| Release | ||||
| *.exp | ||||
| *.la | ||||
| *.lib | ||||
| *.lo | ||||
| *.o | ||||
| *.obj | ||||
| *.pdb | ||||
| *~ | ||||
| .*.swp | ||||
| .cproject | ||||
| .deps | ||||
| .dirstamp | ||||
| .libs | ||||
| .project | ||||
| .settings | ||||
| /build/ | ||||
| /builds/ | ||||
| CHANGES.dist | ||||
| Debug | ||||
| INSTALL | ||||
| Makefile | ||||
| Makefile.in | ||||
| Release | ||||
| TAGS | ||||
| aclocal.m4 | ||||
| aclocal.m4.bak | ||||
| autom4te.cache | ||||
| compile | ||||
| config.cache | ||||
| config.guess | ||||
| config.log | ||||
| config.status | ||||
| config.sub | ||||
| configure | ||||
| depcomp | ||||
| libtool | ||||
| ltmain.sh | ||||
| compile | ||||
| curl-config | ||||
| libcurl.pc | ||||
| missing | ||||
| curl-*.tar.gz | ||||
| curl-*.tar.bz2 | ||||
| curl-*.tar.gz | ||||
| curl-*.tar.lzma | ||||
| curl-*.zip | ||||
| INSTALL | ||||
| curl-config | ||||
| depcomp | ||||
| install-sh | ||||
| *.o | ||||
| *.lo | ||||
| *.la | ||||
| libcurl.pc | ||||
| libtool | ||||
| ltmain.sh | ||||
| missing | ||||
| mkinstalldirs | ||||
| tags | ||||
| TAGS | ||||
| *~ | ||||
| aclocal.m4.bak | ||||
| CHANGES.dist | ||||
| .project | ||||
| .cproject | ||||
| .settings | ||||
| .dirstamp | ||||
| test-driver | ||||
| /build/ | ||||
| /builds/ | ||||
| scripts/_curl | ||||
|   | ||||
							
								
								
									
										10
									
								
								.travis.yml
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								.travis.yml
									
									
									
									
									
								
							| @@ -1,5 +1,15 @@ | ||||
| os: | ||||
|   - linux | ||||
|   - osx | ||||
|  | ||||
| sudo: false | ||||
|  | ||||
| language: c | ||||
|  | ||||
| install: | ||||
|   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update > /dev/null; fi | ||||
|   - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install openssl libidn rtmpdump libssh2 c-ares libmetalink libressl nghttp2; fi | ||||
|  | ||||
| before_script: | ||||
|   - ./buildconf | ||||
|  | ||||
|   | ||||
							
								
								
									
										14
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -1,15 +1,7 @@ | ||||
|                                   _   _ ____  _ | ||||
|                               ___| | | |  _ \| | | ||||
|                              / __| | | | |_) | | | ||||
|                             | (__| |_| |  _ <| |___ | ||||
|                              \___|\___/|_| \_\_____| | ||||
| See http://curl.haxx.se/changes.html for the edited and human readable online | ||||
| version of what has changed over the years in different curl releases. | ||||
|  | ||||
|                                   Changelog | ||||
|  | ||||
| This file no longer holds the changelog. Now you can generate it yourself | ||||
| like this: | ||||
| Generate a CHANGES file like the one present in evey release like this: | ||||
|  | ||||
| $ git log --pretty=fuller --no-color --date=short --decorate=full | \ | ||||
|   ./log2changes.pl | ||||
|  | ||||
| The older, manually edited, changelog is found in git named CHANGES.0 | ||||
|   | ||||
| @@ -139,7 +139,7 @@ int main(void) | ||||
|   rc = gethostbyname_r(address, &h, &hdata); | ||||
| #elif defined(HAVE_GETHOSTBYNAME_R_5) || \ | ||||
|       defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) | ||||
|   rc = gethostbyname_r(address, &h, buffer, 8192, 0, &h_errnop); | ||||
|   rc = gethostbyname_r(address, &h, buffer, 8192, &h_errnop); | ||||
|   (void)hp; /* not used for test */ | ||||
| #elif defined(HAVE_GETHOSTBYNAME_R_6) || \ | ||||
|       defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) | ||||
|   | ||||
| @@ -10,8 +10,8 @@ endmacro(add_header_include) | ||||
|  | ||||
| set(signature_call_conv) | ||||
| if(HAVE_WINDOWS_H) | ||||
|   add_header_include(HAVE_WINDOWS_H "windows.h") | ||||
|   add_header_include(HAVE_WINSOCK2_H "winsock2.h") | ||||
|   add_header_include(HAVE_WINDOWS_H "windows.h") | ||||
|   add_header_include(HAVE_WINSOCK_H "winsock.h") | ||||
|   set(_source_epilogue | ||||
|       "${_source_epilogue}\n#ifndef WIN32_LEAN_AND_MEAN\n#define WIN32_LEAN_AND_MEAN\n#endif") | ||||
|   | ||||
| @@ -122,10 +122,10 @@ endif() | ||||
| option(CURL_HIDDEN_SYMBOLS "Set to ON to hide libcurl internal symbols (=hide all symbols that aren't officially external)." ON) | ||||
| mark_as_advanced(CURL_HIDDEN_SYMBOLS) | ||||
|  | ||||
| # IF(WIN32) | ||||
| # OPTION(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON) | ||||
| # MARK_AS_ADVANCED(CURL_WINDOWS_SSPI) | ||||
| # ENDIF() | ||||
| IF(WIN32) | ||||
|   OPTION(CURL_WINDOWS_SSPI "Use windows libraries to allow NTLM authentication without openssl" ON) | ||||
|   MARK_AS_ADVANCED(CURL_WINDOWS_SSPI) | ||||
| ENDIF() | ||||
|  | ||||
| option(HTTP_ONLY "disables all protocols except HTTP (This overrides all CURL_DISABLE_* options)" OFF) | ||||
| mark_as_advanced(HTTP_ONLY) | ||||
| @@ -186,7 +186,7 @@ option(DISABLED_THREADSAFE "Set to explicitly specify we don't want to use threa | ||||
| mark_as_advanced(DISABLED_THREADSAFE) | ||||
| option(ENABLE_IPV6 "Define if you want to enable IPv6 support" ON) | ||||
| mark_as_advanced(ENABLE_IPV6) | ||||
| if(ENABLE_IPV6) | ||||
| if(ENABLE_IPV6 AND NOT WIN32) | ||||
|   include(CheckStructHasMember) | ||||
|   check_struct_has_member("struct sockaddr_in6" sin6_addr "netinet/in.h" | ||||
|                           HAVE_SOCKADDR_IN6_SIN6_ADDR) | ||||
| @@ -355,9 +355,10 @@ if(NOT CURL_DISABLE_LDAP) | ||||
|     check_include_file_concat("winber.h"  HAVE_WINBER_H) | ||||
|   endif() | ||||
|    | ||||
|   set(CMAKE_REQUIRED_INCLUDES_BAK ${CMAKE_REQUIRED_INCLUDES}) | ||||
|   set(CMAKE_LDAP_INCLUDE_DIR "" CACHE STRING "Path to LDAP include directory") | ||||
|   if(CMAKE_LDAP_INCLUDE_DIR) | ||||
|     set(CMAKE_REQUIRED_INCLUDES ${CMAKE_LDAP_INCLUDE_DIR}) | ||||
|     list(APPEND CMAKE_REQUIRED_INCLUDES ${CMAKE_LDAP_INCLUDE_DIR}) | ||||
|   endif() | ||||
|   check_include_file_concat("ldap.h"           HAVE_LDAP_H) | ||||
|   check_include_file_concat("lber.h"           HAVE_LBER_H) | ||||
| @@ -365,9 +366,11 @@ if(NOT CURL_DISABLE_LDAP) | ||||
|   if(NOT HAVE_LDAP_H) | ||||
|     message(STATUS "LDAP_H not found CURL_DISABLE_LDAP set ON") | ||||
|     set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) | ||||
|     set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_BAK}) #LDAP includes won't be used | ||||
|   elseif(NOT HAVE_LIBLDAP) | ||||
|     message(STATUS "LDAP library '${CMAKE_LDAP_LIB}' not found CURL_DISABLE_LDAP set ON") | ||||
|     set(CURL_DISABLE_LDAP ON CACHE BOOL "" FORCE) | ||||
|     set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_BAK}) #LDAP includes won't be used | ||||
|   else() | ||||
|     if(CMAKE_USE_OPENLDAP) | ||||
|       set(USE_OPENLDAP ON) | ||||
| @@ -448,6 +451,7 @@ if(CURL_ZLIB) | ||||
|     set(HAVE_LIBZ ON) | ||||
|     list(APPEND CURL_LIBS ${ZLIB_LIBRARIES}) | ||||
|     include_directories(${ZLIB_INCLUDE_DIRS}) | ||||
|     list(APPEND CMAKE_REQUIRED_INCLUDES ${ZLIB_INCLUDE_DIRS}) | ||||
|   endif() | ||||
| endif() | ||||
|  | ||||
| @@ -463,7 +467,7 @@ if(CMAKE_USE_LIBSSH2) | ||||
|   if(LIBSSH2_FOUND) | ||||
|     list(APPEND CURL_LIBS ${LIBSSH2_LIBRARY}) | ||||
|     set(CMAKE_REQUIRED_LIBRARIES ${LIBSSH2_LIBRARY}) | ||||
|     set(CMAKE_REQUIRED_INCLUDES "${LIBSSH2_INCLUDE_DIR}") | ||||
|     list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBSSH2_INCLUDE_DIR}") | ||||
|     include_directories("${LIBSSH2_INCLUDE_DIR}") | ||||
|     set(HAVE_LIBSSH2 ON) | ||||
|     set(USE_LIBSSH2 ON) | ||||
| @@ -491,12 +495,12 @@ mark_as_advanced(CMAKE_USE_GSSAPI) | ||||
| if(CMAKE_USE_GSSAPI) | ||||
|   find_package(GSS) | ||||
|  | ||||
|   set(HAVE_GSS_API ${GSS_FOUND}) | ||||
|   set(HAVE_GSSAPI ${GSS_FOUND}) | ||||
|   if(GSS_FOUND) | ||||
|  | ||||
|     message(STATUS "Found ${GSS_FLAVOUR} GSSAPI version: \"${GSS_VERSION}\"") | ||||
|  | ||||
|     set(CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIR}) | ||||
|     list(APPEND CMAKE_REQUIRED_INCLUDES ${GSS_INCLUDE_DIRECTORIES}) | ||||
|     check_include_file_concat("gssapi/gssapi.h"  HAVE_GSSAPI_GSSAPI_H) | ||||
|     check_include_file_concat("gssapi/gssapi_generic.h" HAVE_GSSAPI_GSSAPI_GENERIC_H) | ||||
|     check_include_file_concat("gssapi/gssapi_krb5.h" HAVE_GSSAPI_GSSAPI_KRB5_H) | ||||
| @@ -532,7 +536,7 @@ if(CMAKE_USE_GSSAPI) | ||||
|  | ||||
|     endif() | ||||
|  | ||||
|     include_directories(${GSS_INCLUDE_DIR}) | ||||
|     include_directories(${GSS_INCLUDE_DIRECTORIES}) | ||||
|     link_directories(${GSS_LINK_DIRECTORIES}) | ||||
|     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${GSS_COMPILER_FLAGS}") | ||||
|     set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${GSS_LINKER_FLAGS}") | ||||
| @@ -552,12 +556,25 @@ else() | ||||
|   unset(USE_UNIX_SOCKETS CACHE) | ||||
| endif() | ||||
|  | ||||
|  | ||||
| # Check for header files | ||||
| if(NOT UNIX) | ||||
|   check_include_file_concat("windows.h"      HAVE_WINDOWS_H) | ||||
|   check_include_file_concat("winsock.h"      HAVE_WINSOCK_H) | ||||
|   check_include_file_concat("ws2tcpip.h"     HAVE_WS2TCPIP_H) | ||||
|   check_include_file_concat("winsock2.h"     HAVE_WINSOCK2_H) | ||||
|   if(CURL_WINDOWS_SSPI) | ||||
|     set(CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS} -DSECURITY_WIN32") | ||||
|     check_include_file_concat("sspi.h"       HAVE_SSPI_H) | ||||
|     if(HAVE_SSPI_H) | ||||
|       check_include_file_concat("schannel.h" HAVE_SCHANNEL_H) | ||||
|       set(USE_WINDOWS_SSPI ON) | ||||
|       if(HAVE_SCHANNEL_H) | ||||
|         set(USE_SCHANNEL ON) | ||||
|         set(SSL_ENABLED ON) | ||||
|       endif() | ||||
|     endif() | ||||
|   endif() | ||||
| endif(NOT UNIX) | ||||
|  | ||||
| check_include_file_concat("stdio.h"          HAVE_STDIO_H) | ||||
| @@ -1046,12 +1063,12 @@ _add_if("AsynchDNS"     USE_ARES OR USE_THREADS_POSIX) | ||||
| _add_if("IDN"           HAVE_LIBIDN) | ||||
| # TODO SSP1 (WinSSL) check is missing | ||||
| _add_if("SSPI"          USE_WINDOWS_SSPI) | ||||
| _add_if("GSS-API"       HAVE_GSS_API) | ||||
| _add_if("GSS-API"       HAVE_GSSAPI) | ||||
| # TODO SSP1 missing for SPNEGO | ||||
| _add_if("SPNEGO"        NOT CURL_DISABLE_CRYPTO_AUTH AND | ||||
|                         (HAVE_GSS_API OR USE_WINDOWS_SSPI)) | ||||
|                         (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) | ||||
| _add_if("Kerberos"      NOT CURL_DISABLE_CRYPTO_AUTH AND | ||||
|                         (HAVE_GSS_API OR USE_WINDOWS_SSPI)) | ||||
|                         (HAVE_GSSAPI OR USE_WINDOWS_SSPI)) | ||||
| # NTLM support requires crypto function adaptions from various SSL libs | ||||
| # TODO alternative SSL libs tests for SSP1, GNUTLS, NSS, DARWINSSL | ||||
| if(NOT CURL_DISABLE_CRYPTO_AUTH AND (USE_OPENSSL OR | ||||
| @@ -1136,7 +1153,7 @@ set(VERSIONNUM              "${CURL_VERSION_NUM}") | ||||
| # Finally generate a "curl-config" matching this config | ||||
| configure_file("${CURL_SOURCE_DIR}/curl-config.in" | ||||
|                "${CURL_BINARY_DIR}/curl-config" @ONLY) | ||||
| install(FILES "${CMAKE_BINARY_DIR}/curl-config" | ||||
| install(FILES "${CURL_BINARY_DIR}/curl-config" | ||||
|         DESTINATION bin | ||||
|         PERMISSIONS | ||||
|           OWNER_READ OWNER_WRITE OWNER_EXECUTE | ||||
| @@ -1146,7 +1163,7 @@ install(FILES "${CMAKE_BINARY_DIR}/curl-config" | ||||
| # Finally generate a pkg-config file matching this config | ||||
| configure_file("${CURL_SOURCE_DIR}/libcurl.pc.in" | ||||
|                "${CURL_BINARY_DIR}/libcurl.pc" @ONLY) | ||||
| install(FILES "${CMAKE_BINARY_DIR}/libcurl.pc" | ||||
| install(FILES "${CURL_BINARY_DIR}/libcurl.pc" | ||||
|         DESTINATION lib/pkgconfig) | ||||
|  | ||||
| # This needs to be run very last so other parts of the scripts can take advantage of this. | ||||
|   | ||||
| @@ -65,7 +65,7 @@ else | ||||
|  ARCHES64='-arch x86_64' | ||||
|  #We "know" that 10.4 and earlier do not support 64bit | ||||
|  OLD_SDK64=`ls  $SDK_PATH|egrep -v "10.[0-4]"|head -1` | ||||
|  NEW_SDK64=`ls -r $SDK_PATH|egrep -v "10.[0-4]"|head -1` | ||||
|  NEW_SDK64=`ls -r $SDK_PATH|egrep -v "10.[0-4][^0-9]" | head -1` | ||||
|  if test $USE_OLD -gt 0 | ||||
|   then | ||||
|    SDK64=$OLD_SDK64 | ||||
|   | ||||
							
								
								
									
										90
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -32,86 +32,97 @@ CMAKE_DIST = CMakeLists.txt CMake/CMakeConfigurableFile.in	\ | ||||
| VC6_LIBTMPL = projects/Windows/VC6/lib/libcurl.tmpl | ||||
| VC6_LIBDSP = projects/Windows/VC6/lib/libcurl.dsp.dist | ||||
| VC6_LIBDSP_DEPS = $(VC6_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC6_SRCTMPL = projects/Windows/VC6/src/curlsrc.tmpl | ||||
| VC6_SRCDSP = projects/Windows/VC6/src/curlsrc.dsp.dist | ||||
| VC6_SRCTMPL = projects/Windows/VC6/src/curl.tmpl | ||||
| VC6_SRCDSP = projects/Windows/VC6/src/curl.dsp.dist | ||||
| VC6_SRCDSP_DEPS = $(VC6_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC7_LIBTMPL = projects/Windows/VC7/lib/libcurl.tmpl | ||||
| VC7_LIBVCPROJ = projects/Windows/VC7/lib/libcurl.vcproj.dist | ||||
| VC7_LIBVCPROJ_DEPS = $(VC7_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC7_SRCTMPL = projects/Windows/VC7/src/curlsrc.tmpl | ||||
| VC7_SRCVCPROJ = projects/Windows/VC7/src/curlsrc.vcproj.dist | ||||
| VC7_SRCTMPL = projects/Windows/VC7/src/curl.tmpl | ||||
| VC7_SRCVCPROJ = projects/Windows/VC7/src/curl.vcproj.dist | ||||
| VC7_SRCVCPROJ_DEPS = $(VC7_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC71_LIBTMPL = projects/Windows/VC7.1/lib/libcurl.tmpl | ||||
| VC71_LIBVCPROJ = projects/Windows/VC7.1/lib/libcurl.vcproj.dist | ||||
| VC71_LIBVCPROJ_DEPS = $(VC71_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC71_SRCTMPL = projects/Windows/VC7.1/src/curlsrc.tmpl | ||||
| VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curlsrc.vcproj.dist | ||||
| VC71_SRCTMPL = projects/Windows/VC7.1/src/curl.tmpl | ||||
| VC71_SRCVCPROJ = projects/Windows/VC7.1/src/curl.vcproj.dist | ||||
| VC71_SRCVCPROJ_DEPS = $(VC71_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC8_LIBTMPL = projects/Windows/VC8/lib/libcurl.tmpl | ||||
| VC8_LIBVCPROJ = projects/Windows/VC8/lib/libcurl.vcproj.dist | ||||
| VC8_LIBVCPROJ_DEPS = $(VC8_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC8_SRCTMPL = projects/Windows/VC8/src/curlsrc.tmpl | ||||
| VC8_SRCVCPROJ = projects/Windows/VC8/src/curlsrc.vcproj.dist | ||||
| VC8_SRCTMPL = projects/Windows/VC8/src/curl.tmpl | ||||
| VC8_SRCVCPROJ = projects/Windows/VC8/src/curl.vcproj.dist | ||||
| VC8_SRCVCPROJ_DEPS = $(VC8_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC9_LIBTMPL = projects/Windows/VC9/lib/libcurl.tmpl | ||||
| VC9_LIBVCPROJ = projects/Windows/VC9/lib/libcurl.vcproj.dist | ||||
| VC9_LIBVCPROJ_DEPS = $(VC9_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC9_SRCTMPL = projects/Windows/VC9/src/curlsrc.tmpl | ||||
| VC9_SRCVCPROJ = projects/Windows/VC9/src/curlsrc.vcproj.dist | ||||
| VC9_SRCTMPL = projects/Windows/VC9/src/curl.tmpl | ||||
| VC9_SRCVCPROJ = projects/Windows/VC9/src/curl.vcproj.dist | ||||
| VC9_SRCVCPROJ_DEPS = $(VC9_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC10_LIBTMPL = projects/Windows/VC10/lib/libcurl.tmpl | ||||
| VC10_LIBVCXPROJ = projects/Windows/VC10/lib/libcurl.vcxproj.dist | ||||
| VC10_LIBVCXPROJ_DEPS = $(VC10_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC10_SRCTMPL = projects/Windows/VC10/src/curlsrc.tmpl | ||||
| VC10_SRCVCXPROJ = projects/Windows/VC10/src/curlsrc.vcxproj.dist | ||||
| VC10_SRCTMPL = projects/Windows/VC10/src/curl.tmpl | ||||
| VC10_SRCVCXPROJ = projects/Windows/VC10/src/curl.vcxproj.dist | ||||
| VC10_SRCVCXPROJ_DEPS = $(VC10_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC11_LIBTMPL = projects/Windows/VC11/lib/libcurl.tmpl | ||||
| VC11_LIBVCXPROJ = projects/Windows/VC11/lib/libcurl.vcxproj.dist | ||||
| VC11_LIBVCXPROJ_DEPS = $(VC11_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC11_SRCTMPL = projects/Windows/VC11/src/curlsrc.tmpl | ||||
| VC11_SRCVCXPROJ = projects/Windows/VC11/src/curlsrc.vcxproj.dist | ||||
| VC11_SRCTMPL = projects/Windows/VC11/src/curl.tmpl | ||||
| VC11_SRCVCXPROJ = projects/Windows/VC11/src/curl.vcxproj.dist | ||||
| VC11_SRCVCXPROJ_DEPS = $(VC11_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC12_LIBTMPL = projects/Windows/VC12/lib/libcurl.tmpl | ||||
| VC12_LIBVCXPROJ = projects/Windows/VC12/lib/libcurl.vcxproj.dist | ||||
| VC12_LIBVCXPROJ_DEPS = $(VC12_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC12_SRCTMPL = projects/Windows/VC12/src/curlsrc.tmpl | ||||
| VC12_SRCVCXPROJ = projects/Windows/VC12/src/curlsrc.vcxproj.dist | ||||
| VC12_SRCTMPL = projects/Windows/VC12/src/curl.tmpl | ||||
| VC12_SRCVCXPROJ = projects/Windows/VC12/src/curl.vcxproj.dist | ||||
| VC12_SRCVCXPROJ_DEPS = $(VC12_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC14_LIBTMPL = projects/Windows/VC14/lib/libcurl.tmpl | ||||
| VC14_LIBVCXPROJ = projects/Windows/VC14/lib/libcurl.vcxproj.dist | ||||
| VC14_LIBVCXPROJ_DEPS = $(VC14_LIBTMPL) Makefile.am lib/Makefile.inc | ||||
| VC14_SRCTMPL = projects/Windows/VC14/src/curl.tmpl | ||||
| VC14_SRCVCXPROJ = projects/Windows/VC14/src/curl.vcxproj.dist | ||||
| VC14_SRCVCXPROJ_DEPS = $(VC14_SRCTMPL) Makefile.am src/Makefile.inc | ||||
|  | ||||
| VC_DIST = projects/README	\ | ||||
|  projects/build-openssl.bat	\ | ||||
|  projects/build-wolfssl.bat	\ | ||||
|  projects/checksrc.bat	\ | ||||
|  projects/Windows/VC6/curl-all.dsw	\ | ||||
|  projects/Windows/VC6/lib/libcurl.dsw \ | ||||
|  projects/Windows/VC6/src/curlsrc.dsw \ | ||||
|  projects/Windows/VC6/src/curl.dsw \ | ||||
|  projects/Windows/VC7/curl-all.sln	\ | ||||
|  projects/Windows/VC7/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC7/src/curlsrc.sln 	\ | ||||
|  projects/Windows/VC7/src/curl.sln 	\ | ||||
|  projects/Windows/VC7.1/curl-all.sln	\ | ||||
|  projects/Windows/VC7.1/lib/libcurl.sln \ | ||||
|  projects/Windows/VC7.1/src/curlsrc.sln \ | ||||
|  projects/Windows/VC7.1/src/curl.sln \ | ||||
|  projects/Windows/VC8/curl-all.sln	\ | ||||
|  projects/Windows/VC8/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC8/src/curlsrc.sln 	\ | ||||
|  projects/Windows/VC8/src/curl.sln 	\ | ||||
|  projects/Windows/VC9/curl-all.sln	\ | ||||
|  projects/Windows/VC9/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC9/src/curlsrc.sln 	\ | ||||
|  projects/Windows/VC9/src/curl.sln 	\ | ||||
|  projects/Windows/VC10/curl-all.sln	\ | ||||
|  projects/Windows/VC10/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC10/src/curlsrc.sln  \ | ||||
|  projects/Windows/VC10/src/curl.sln  \ | ||||
|  projects/Windows/VC11/curl-all.sln	\ | ||||
|  projects/Windows/VC11/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC11/src/curlsrc.sln 	\ | ||||
|  projects/Windows/VC11/src/curl.sln 	\ | ||||
|  projects/Windows/VC12/curl-all.sln	\ | ||||
|  projects/Windows/VC12/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC12/src/curlsrc.sln | ||||
|  projects/Windows/VC12/src/curl.sln	\ | ||||
|  projects/Windows/VC14/curl-all.sln	\ | ||||
|  projects/Windows/VC14/lib/libcurl.sln 	\ | ||||
|  projects/Windows/VC14/src/curl.sln | ||||
|  | ||||
| WINBUILD_DIST = winbuild/BUILD.WINDOWS.txt winbuild/gen_resp_file.bat	\ | ||||
|  winbuild/MakefileBuild.vc winbuild/Makefile.vc				\ | ||||
| @@ -124,11 +135,12 @@ EXTRA_DIST = CHANGES COPYING maketgz Makefile.dist curl-config.in	\ | ||||
| CLEANFILES = $(VC6_LIBDSP) $(VC6_SRCDSP) $(VC7_LIBVCPROJ) $(VC7_SRCVCPROJ)	\ | ||||
|  $(VC71_LIBVCPROJ) $(VC71_SRCVCPROJ) $(VC8_LIBVCPROJ) $(VC8_SRCVCPROJ)	\ | ||||
|  $(VC9_LIBVCPROJ) $(VC9_SRCVCPROJ) $(VC10_LIBVCXPROJ) $(VC10_SRCVCXPROJ)	\ | ||||
|  $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ) | ||||
|  $(VC11_LIBVCXPROJ) $(VC11_SRCVCXPROJ) $(VC12_LIBVCXPROJ) $(VC12_SRCVCXPROJ)	\ | ||||
|  $(VC14_LIBVCXPROJ) $(VC14_SRCVCXPROJ) | ||||
|  | ||||
| bin_SCRIPTS = curl-config | ||||
|  | ||||
| SUBDIRS = lib src include | ||||
| SUBDIRS = lib src include scripts | ||||
| DIST_SUBDIRS = $(SUBDIRS) tests packages docs | ||||
|  | ||||
| pkgconfigdir = $(libdir)/pkgconfig | ||||
| @@ -148,10 +160,10 @@ dist-hook: | ||||
| 	done) | ||||
|  | ||||
| html: | ||||
| 	cd docs; make html | ||||
| 	cd docs && make html | ||||
|  | ||||
| pdf: | ||||
| 	cd docs; make pdf | ||||
| 	cd docs && make pdf | ||||
|  | ||||
| check: test examples check-docs | ||||
|  | ||||
| @@ -269,7 +281,7 @@ vc-ide: $(VC6_LIBDSP_DEPS) $(VC6_SRCDSP_DEPS) $(VC7_LIBVCPROJ_DEPS)	\ | ||||
|  $(VC8_LIBVCPROJ_DEPS) $(VC8_SRCVCPROJ_DEPS) $(VC9_LIBVCPROJ_DEPS)	\ | ||||
|  $(VC9_SRCVCPROJ_DEPS) $(VC10_LIBVCXPROJ_DEPS) $(VC10_SRCVCXPROJ_DEPS)	\ | ||||
|  $(VC11_LIBVCXPROJ_DEPS) $(VC11_SRCVCXPROJ_DEPS) $(VC12_LIBVCXPROJ_DEPS)	\ | ||||
|  $(VC12_SRCVCXPROJ_DEPS) | ||||
|  $(VC12_SRCVCXPROJ_DEPS) $(VC14_LIBVCXPROJ_DEPS) $(VC14_SRCVCXPROJ_DEPS) | ||||
| 	@(win32_lib_srcs='$(LIB_CFILES)'; \ | ||||
| 	win32_lib_hdrs='$(LIB_HFILES) config-win32.h'; \ | ||||
| 	win32_lib_rc='$(LIB_RCFILES)'; \ | ||||
| @@ -530,4 +542,22 @@ function gen_element(type, dir, file)\ | ||||
| 		-v src_rc="$$win32_src_rc" \ | ||||
| 		-v src_x_srcs="$$sorted_src_x_srcs" \ | ||||
| 		-v src_x_hdrs="$$sorted_src_x_hdrs" \ | ||||
| 		"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; };) | ||||
| 		"$$awk_code" $(srcdir)/$(VC12_SRCTMPL) > $(VC12_SRCVCXPROJ) || { exit 1; }; \ | ||||
| 	\ | ||||
| 	echo "generating '$(VC14_LIBVCXPROJ)'"; \ | ||||
| 	awk -v proj_type=vcxproj \ | ||||
| 		-v lib_srcs="$$sorted_lib_srcs" \ | ||||
| 		-v lib_hdrs="$$sorted_lib_hdrs" \ | ||||
| 		-v lib_rc="$$win32_lib_rc" \ | ||||
| 		-v lib_vtls_srcs="$$sorted_lib_vtls_srcs" \ | ||||
| 		-v lib_vtls_hdrs="$$sorted_lib_vtls_hdrs" \ | ||||
| 		"$$awk_code" $(srcdir)/$(VC14_LIBTMPL) > $(VC14_LIBVCXPROJ) || { exit 1; }; \ | ||||
| 	\ | ||||
| 	echo "generating '$(VC14_SRCVCXPROJ)'"; \ | ||||
| 	awk -v proj_type=vcxproj \ | ||||
| 		-v src_srcs="$$sorted_src_srcs" \ | ||||
| 		-v src_hdrs="$$sorted_src_hdrs" \ | ||||
| 		-v src_rc="$$win32_src_rc" \ | ||||
| 		-v src_x_srcs="$$sorted_src_x_srcs" \ | ||||
| 		-v src_x_hdrs="$$sorted_src_x_hdrs" \ | ||||
| 		"$$awk_code" $(srcdir)/$(VC14_SRCTMPL) > $(VC14_SRCVCXPROJ) || { exit 1; };) | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2015, 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 | ||||
| @@ -566,6 +566,17 @@ src/Makefile.vc12: src/Makefile.vc6 | ||||
| 	@echo "generate $@" | ||||
| 	@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc12/g" -e "s/VC6/VC12/g" src/Makefile.vc6 > src/Makefile.vc12 | ||||
|  | ||||
| # VC14 makefiles are for use with VS2015 | ||||
| vc14: lib/Makefile.vc14 src/Makefile.vc14 | ||||
|  | ||||
| lib/Makefile.vc14: lib/Makefile.vc6 | ||||
| 	@echo "generate $@" | ||||
| 	@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc14/g" -e "s/VC6/VC14/g" lib/Makefile.vc6 > lib/Makefile.vc14 | ||||
|  | ||||
| src/Makefile.vc14: src/Makefile.vc6 | ||||
| 	@echo "generate $@" | ||||
| 	@sed -e "s#/GX /DWIN32 /YX#/EHsc /DWIN32#" -e "s#/GZ#/RTC1#" -e "s/ws2_32.lib/ws2_32.lib/g" -e "s/vc6/vc14/g" -e "s/VC6/VC14/g" src/Makefile.vc6 > src/Makefile.vc14 | ||||
|  | ||||
| ca-bundle: lib/mk-ca-bundle.pl | ||||
| 	@echo "generate a fresh ca-bundle.crt" | ||||
| 	@perl $< -b -l -u lib/ca-bundle.crt | ||||
|   | ||||
							
								
								
									
										130
									
								
								RELEASE-NOTES
									
									
									
									
									
								
							
							
						
						
									
										130
									
								
								RELEASE-NOTES
									
									
									
									
									
								
							| @@ -1,19 +1,92 @@ | ||||
| Curl and libcurl 7.44.0 | ||||
| Curl and libcurl 7.46.0 | ||||
|  | ||||
|  Public curl releases:         148 | ||||
|  Command line options:         176 | ||||
|  curl_easy_setopt() options:   219 | ||||
|  Public functions in libcurl:  58 | ||||
|  Contributors:                 1291 | ||||
|  Public curl releases:         150 | ||||
|  Command line options:         177 | ||||
|  curl_easy_setopt() options:   221 | ||||
|  Public functions in libcurl:  61 | ||||
|  Contributors:                 1340 | ||||
|  | ||||
| This release includes the following changes: | ||||
|  | ||||
|  o | ||||
|  | ||||
|  o configure: build silently by default | ||||
|  o cookies: Add support for Publix Suffix List with libpsl | ||||
|  o vtls: added support for mbedTLS [7] | ||||
|  o Added CURLOPT_STREAM_DEPENDS [8] | ||||
|  o Added CURLOPT_STREAM_DEPENDS_E [9] | ||||
|  o Added CURLOPT_STREAM_WEIGHT [10] | ||||
|  o Added CURLFORM_CONTENTLEN [14] | ||||
|  o oauth2: Added support for OAUTHBEARER SASL mechanism to IMAP, POP3 and SNMP | ||||
|  | ||||
| This release includes the following bugfixes: | ||||
|  | ||||
|  o | ||||
|  o des: Fix header conditional for Curl_des_set_odd_parity | ||||
|  o ntlm: get rid of unconditional use of long long [1] | ||||
|  o CURLOPT_CERTINFO.3: fix reference to CURLINFO_CERTINFO | ||||
|  o docs: CURLINFO_LASTSOCKET => CURLINFO_ACTIVESOCKET [2] | ||||
|  o http2: Fix http2_recv to return -1 if recv returned -1 | ||||
|  o curl_global_init_mem: set function pointers before doing init | ||||
|  o ntlm: error out without 64bit support as the code needs it [1] | ||||
|  o openssl: Fix set up of pkcs12 certificate verification chain | ||||
|  o acinclude: remove PKGCONFIG override [3] | ||||
|  o test1531: case the size to fix the test on non-largefile builds | ||||
|  o fread_func: move callback pointer from set to state struct [4] | ||||
|  o test1601: fix compilation with --enable-debug and --disable-crypto-auth | ||||
|  o http2: Don't pass unitialized name+len pairs to nghttp2_submit_request [5] | ||||
|  o curlbuild.h: Fix non-configure compiling to mips and sh4 targets | ||||
|  o tool: Generate easysrc with last cache linked-list [6] | ||||
|  o cmake: Fix for add_subdirectory(curl) use-case | ||||
|  o vtls: fix compiler warning for TLS backends without sha256 | ||||
|  o build: fix for MSDOS/djgpp | ||||
|  o checksrc: add crude // detection | ||||
|  o http2: on_frame_recv: trust the conn/data input | ||||
|  o ftp: allow CURLOPT_IGNORE_CONTENT_LENGTH to ignore size [11] | ||||
|  o polarssl/mbedtls: fix name space pollution | ||||
|  o build: Fix mingw ssl gdi32 order [12] | ||||
|  o build: Fix support for PKG_CONFIG | ||||
|  o MacOSX-Framework: sdk regex fix for sdk 10.10 and later | ||||
|  o socks: Fix incorrect port numbers in failed connect messages | ||||
|  o curl.1: -E: s/private certificate/client certificate | ||||
|  o curl.h: s/HTTPPOST_/CURL_HTTPOST_ [13] | ||||
|  o curl_formadd: support >2GB files on windows [14] | ||||
|  o http redirects: %-encode bytes outside of ascii range [15] | ||||
|  o rawstr: Speed up Curl_raw_toupper by 40% | ||||
|  o curl_ntlm_core: fix 2 curl_off_t constant overflows. | ||||
|  o getinfo: CURLINFO_ACTIVESOCKET: fix bad socket value | ||||
|  o tftp tests: verify sent options too | ||||
|  o imap: Don't call imap_atom() when no mailbox specified in LIST command | ||||
|  o imap: Fixed double quote in LIST command when mailbox contains spaces | ||||
|  o imap: Don't check for continuation when executing a CUSTOMREQUEST [16] | ||||
|  o acinclude: Remove check for 16-bit curl_off_t | ||||
|  o BoringSSL: Work with stricter BIO_get_mem_data() [17] | ||||
|  o cmake: Add missing feature macros in config header [18] | ||||
|  o sasl_sspi: fixed unicode build for digest authentication [19] | ||||
|  o sasl_sspi: fix identity memory leak in digest authentication | ||||
|  o unit1602: Fixed failure in torture test | ||||
|  o unit1603: Added unit tests for hash functions | ||||
|  o vtls/openssl: remove unused traces of yassl ifdefs | ||||
|  o openssl: remove #ifdefs for < 0.9.7 support | ||||
|  o typecheck-gcc.h: add some missing options | ||||
|  o curl: mark two more options strings for --libcurl output | ||||
|  o openssl: Free modules on cleanup [20] | ||||
|  o CURLMOPT_PUSHFUNCTION.3: *_byname() returns only the first header | ||||
|  o getconnectinfo: Don't call recv(2) if socket == -1 | ||||
|  o http2: http_done: don't free already-freed push headers | ||||
|  o zsh completion: Preserve single quotes in output [21] | ||||
|  o os400: Provide options for libssh2 use in compile scripts. | ||||
|  o build: Fix theoretical infinite loops [22] | ||||
|  o pop3: Differentiate between success and continuation responses | ||||
|  o examples: Fixed compilation warnings | ||||
|  o schannel: Use GetVersionEx() when VerifyVersionInfo() isn't available | ||||
|  o CURLOPT_HEADERFUNCTION.3: fix typo | ||||
|  o curl: expanded the -XHEAD warning text | ||||
|  o done: make sure the final progress update is made [23] | ||||
|  o build: Install zsh completion [24] | ||||
|  o RTSP: do not add if-modified-since without timecondition [25] | ||||
|  o curl: Fixed display of URL index in password prompt for --next | ||||
|  o nonblock: fix setting non-blocking mode for Amiga [26] | ||||
|  o http2 push: add missing inits of new stream [27] | ||||
|  o http2: convert some verbose output into debug-only output | ||||
|  o Curl_read_plain: clean up ifdefs that break statements [28] | ||||
|  | ||||
| This release includes the following known bugs: | ||||
|  | ||||
| @@ -22,10 +95,45 @@ 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: | ||||
|  | ||||
|  | ||||
|   Anders Bakken, Dan Fandrich, Daniel Hwang, Daniel Shahaf, Daniel Stenberg, | ||||
|   Davey Shafik, Dmitry S. Baikov, Douglas Creager, Erik Johansson, | ||||
|   Flavio Medeiros, Gisle Vanem, Javier G. Sogo, John Levon, Jonas Minnberg, | ||||
|   Justin Ehlert, Kamil Dudka, Kang Lin, Kurt Fankhauser, Lauri Kasanen, | ||||
|   Lukas Ruzicka, Marcel Raad, Michał Piechowski, Mohammad AlSaleh, Norbert Kett, | ||||
|   Patrick Monnerat, Rainer Jung, Ray Satiro, Richard Hosking, | ||||
|   Sebastian Pohlschmidt, Stefan Bühler, Steve Holme, Svyatoslav Mishyn, | ||||
|   Tatsuhiro Tsujikawa, Tim Rühsen, Xiangbin Li, | ||||
|   (35 contributors) | ||||
|  | ||||
|         Thanks! (and sorry if I forgot to mention someone) | ||||
|  | ||||
| References to bug reports and discussions on issues: | ||||
|  | ||||
|  [1] = | ||||
|  [1] = http://curl.haxx.se/bug/?i=478 | ||||
|  [2] = http://curl.haxx.se/bug/?i=479 | ||||
|  [3] = http://curl.haxx.se/mail/lib-2015-10/0035.html | ||||
|  [4] = http://curl.haxx.se/bug/?i=346 | ||||
|  [5] = http://curl.haxx.se/bug/?i=493 | ||||
|  [6] = http://curl.haxx.se/bug/?i=452 | ||||
|  [7] = http://curl.haxx.se/bug/?i=496 | ||||
|  [8] = http://curl.haxx.se/libcurl/c/CURLOPT_STREAM_DEPENDS.html | ||||
|  [9] = http://curl.haxx.se/libcurl/c/CURLOPT_STREAM_DEPENDS_E.html | ||||
|  [10] = http://curl.haxx.se/libcurl/c/CURLOPT_STREAM_WEIGHT.html | ||||
|  [11] = http://curl.haxx.se/bug/?i=480 | ||||
|  [12] = https://github.com/bagder/curl/pull/501 | ||||
|  [13] = http://curl.haxx.se/bug/?i=506 | ||||
|  [14] = http://curl.haxx.se/bug/?i=425 | ||||
|  [15] = http://curl.haxx.se/bug/?i=473 | ||||
|  [16] = http://curl.haxx.se/bug/?i=486 | ||||
|  [17] = http://curl.haxx.se/bug/?i=524 | ||||
|  [18] = http://curl.haxx.se/bug/?i=523 | ||||
|  [19] = http://curl.haxx.se/bug/?i=525 | ||||
|  [20] = http://curl.haxx.se/bug/?i=526 | ||||
|  [21] = http://curl.haxx.se/bug/?i=532 | ||||
|  [22] = http://curl.haxx.se/bug/?i=535 | ||||
|  [23] = http://curl.haxx.se/bug/?i=538 | ||||
|  [24] = http://curl.haxx.se/bug/?i=534 | ||||
|  [25] = http://stackoverflow.com/questions/33903982/curl-timecond-none-doesnt-work-how-to-remove-if-modified-since-header | ||||
|  [26] = http://curl.haxx.se/mail/lib-2015-11/0088.html | ||||
|  [27] = http://curl.haxx.se/bug/?i=530 | ||||
|  [28] = http://curl.haxx.se/bug/?i=546 | ||||
|   | ||||
							
								
								
									
										32
									
								
								acinclude.m4
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								acinclude.m4
									
									
									
									
									
								
							| @@ -5,7 +5,7 @@ | ||||
| #                            | (__| |_| |  _ <| |___ | ||||
| #                             \___|\___/|_| \_\_____| | ||||
| # | ||||
| # Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| # Copyright (C) 1998 - 2015, 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 | ||||
| @@ -1851,6 +1851,8 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [ | ||||
|   AC_REQUIRE([AC_HEADER_TIME])dnl | ||||
|   AC_CHECK_HEADERS(sys/types.h sys/time.h time.h) | ||||
|   AC_MSG_CHECKING([for monotonic clock_gettime]) | ||||
|   # | ||||
|   if test "x$dontwant_rt" == "xno" ; then | ||||
|     AC_COMPILE_IFELSE([ | ||||
|       AC_LANG_PROGRAM([[ | ||||
| #ifdef HAVE_SYS_TYPES_H | ||||
| @@ -1877,6 +1879,7 @@ AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [ | ||||
|       AC_MSG_RESULT([no]) | ||||
|       ac_cv_func_clock_gettime="no" | ||||
|     ]) | ||||
|   fi | ||||
|   dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed | ||||
|   dnl until library linking and run-time checks for clock_gettime succeed. | ||||
| ]) | ||||
| @@ -2834,7 +2837,6 @@ AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [ | ||||
|   # | ||||
|   x_LP64_long="" | ||||
|   x_LP32_long="" | ||||
|   x_LP16_long="" | ||||
|   # | ||||
|   if test "$ac_cv_sizeof_long" -eq "8" && | ||||
|      test "$ac_cv_sizeof_voidp" -ge "8"; then | ||||
| @@ -2842,9 +2844,6 @@ AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [ | ||||
|   elif test "$ac_cv_sizeof_long" -eq "4" && | ||||
|        test "$ac_cv_sizeof_voidp" -ge "4"; then | ||||
|     x_LP32_long="long" | ||||
|   elif test "$ac_cv_sizeof_long" -eq "2" && | ||||
|        test "$ac_cv_sizeof_voidp" -ge "2"; then | ||||
|     x_LP16_long="long" | ||||
|   fi | ||||
|   # | ||||
|   dnl DO_CURL_OFF_T_CHECK results are stored in next 3 vars | ||||
| @@ -2878,17 +2877,6 @@ AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [ | ||||
|     done | ||||
|     AC_MSG_RESULT([$curl_typeof_curl_off_t]) | ||||
|   fi | ||||
|   if test "$curl_typeof_curl_off_t" = "unknown"; then | ||||
|     AC_MSG_CHECKING([for 16-bit curl_off_t data type]) | ||||
|     for t2 in          \ | ||||
|       "$x_LP16_long"   \ | ||||
|       'int16_t'        \ | ||||
|       '__int16'        \ | ||||
|       'int'            ; do | ||||
|       DO_CURL_OFF_T_CHECK([$t2], [2]) | ||||
|     done | ||||
|     AC_MSG_RESULT([$curl_typeof_curl_off_t]) | ||||
|   fi | ||||
|   if test "$curl_typeof_curl_off_t" = "unknown"; then | ||||
|     AC_MSG_ERROR([cannot find data type for curl_off_t.]) | ||||
|   fi | ||||
| @@ -3049,12 +3037,14 @@ dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir. | ||||
| dnl | ||||
|  | ||||
| AC_DEFUN([CURL_CHECK_PKGCONFIG], [ | ||||
|     if test -n "$PKG_CONFIG"; then | ||||
|       PKGCONFIG="$PKG_CONFIG" | ||||
|     else | ||||
|       AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no], | ||||
|         [$PATH:/usr/bin:/usr/local/bin]) | ||||
|     fi | ||||
|  | ||||
|     PKGCONFIG="no" | ||||
|  | ||||
|     AC_PATH_TOOL( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin) | ||||
|  | ||||
|     if test x$PKGCONFIG != xno; then | ||||
|     if test "x$PKGCONFIG" != "xno"; then | ||||
|       AC_MSG_CHECKING([for $1 options with pkg-config]) | ||||
|       dnl ask pkg-config about $1 | ||||
|       itexists=`CURL_EXPORT_PCDIR([$2]) dnl | ||||
|   | ||||
							
								
								
									
										19
									
								
								appveyor.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								appveyor.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| version: 7.45.0.{build} | ||||
|  | ||||
| environment: | ||||
|     matrix: | ||||
|       - PRJ_GEN: "Visual Studio 11 2012 Win64" | ||||
|         BDIR: msvc2012 | ||||
|         PRJ_CFG: Release | ||||
|       - PRJ_GEN: "Visual Studio 12 2013 Win64" | ||||
|         BDIR: msvc2013 | ||||
|         PRJ_CFG: Release | ||||
|       - PRJ_GEN: "Visual Studio 14 2015 Win64" | ||||
|         BDIR: msvc2015 | ||||
|         PRJ_CFG: Release | ||||
|  | ||||
| build_script: | ||||
|     - mkdir build.%BDIR% | ||||
|     - cd build.%BDIR% | ||||
|     - cmake .. -G"%PRJ_GEN%" | ||||
|     - cmake --build . --config %PRJ_CFG% --clean-first | ||||
							
								
								
									
										368
									
								
								buildconf.bat
									
									
									
									
									
								
							
							
						
						
									
										368
									
								
								buildconf.bat
									
									
									
									
									
								
							| @@ -1,38 +1,352 @@ | ||||
| @echo off | ||||
| REM | ||||
| REM | ||||
| REM This batch file must be used to set up a git tree to build on | ||||
| REM systems where there is no autotools support (i.e. Microsoft). | ||||
| REM | ||||
| REM This file is not included nor needed for curl's release | ||||
| REM archives, neither for curl's daily snapshot archives. | ||||
| rem *************************************************************************** | ||||
| rem *                                  _   _ ____  _ | ||||
| rem *  Project                     ___| | | |  _ \| | | ||||
| rem *                             / __| | | | |_) | | | ||||
| rem *                            | (__| |_| |  _ <| |___ | ||||
| rem *                             \___|\___/|_| \_\_____| | ||||
| rem * | ||||
| rem * Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| rem * | ||||
| rem * This software is licensed as described in the file COPYING, which | ||||
| rem * you should have received as part of this distribution. The terms | ||||
| rem * are also available at http://curl.haxx.se/docs/copyright.html. | ||||
| rem * | ||||
| rem * You may opt to use, copy, modify, merge, publish, distribute and/or sell | ||||
| rem * copies of the Software, and permit persons to whom the Software is | ||||
| rem * furnished to do so, under the terms of the COPYING file. | ||||
| rem * | ||||
| rem * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||||
| rem * KIND, either express or implied. | ||||
| rem * | ||||
| rem *************************************************************************** | ||||
|  | ||||
| if exist GIT-INFO goto start_doing | ||||
| ECHO ERROR: This file shall only be used with a curl git tree checkout. | ||||
| goto end_all | ||||
| :start_doing | ||||
| rem NOTES | ||||
| rem | ||||
| rem This batch file must be used to set up a git tree to build on systems where | ||||
| rem there is no autotools support (i.e. DOS and Windows). | ||||
| rem | ||||
| rem This file is not included or required for curl's release archives or daily  | ||||
| rem snapshot archives. | ||||
|  | ||||
| REM create tool_hugehelp.c | ||||
| if not exist src\tool_hugehelp.c.cvs goto end_hugehelp_c | ||||
| copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c | ||||
| :end_hugehelp_c | ||||
| :begin | ||||
|   rem Set our variables | ||||
|   if "%OS%" == "Windows_NT" setlocal | ||||
|   set MODE=GENERATE | ||||
|  | ||||
| REM create Makefile | ||||
| if not exist Makefile.dist goto end_makefile | ||||
| copy /Y Makefile.dist Makefile | ||||
| :end_makefile | ||||
|   rem Switch to this batch file's directory | ||||
|   cd /d "%~0\.." 1>NUL 2>&1 | ||||
|  | ||||
| REM create curlbuild.h | ||||
| if not exist include\curl\curlbuild.h.dist goto end_curlbuild_h | ||||
| copy /Y include\curl\curlbuild.h.dist include\curl\curlbuild.h | ||||
| :end_curlbuild_h | ||||
|   rem Check we are running from a curl git repository | ||||
|   if not exist GIT-INFO goto norepo | ||||
|  | ||||
| REM setup c-ares git tree | ||||
| if not exist ares\buildconf.bat goto end_c_ares | ||||
|   rem Detect programs. HAVE_<PROGNAME> | ||||
|   rem When not found the variable is set undefined. The undefined pattern | ||||
|   rem allows for statements like "if not defined HAVE_PERL (command)" | ||||
|   groff --version <NUL 1>NUL 2>&1 | ||||
|   if errorlevel 1 (set HAVE_GROFF=) else (set HAVE_GROFF=Y) | ||||
|   nroff --version <NUL 1>NUL 2>&1 | ||||
|   if errorlevel 1 (set HAVE_NROFF=) else (set HAVE_NROFF=Y) | ||||
|   perl --version <NUL 1>NUL 2>&1 | ||||
|   if errorlevel 1 (set HAVE_PERL=) else (set HAVE_PERL=Y) | ||||
|   gzip --version <NUL 1>NUL 2>&1 | ||||
|   if errorlevel 1 (set HAVE_GZIP=) else (set HAVE_GZIP=Y) | ||||
|  | ||||
| :parseArgs | ||||
|   if "%~1" == "" goto start | ||||
|  | ||||
|   if /i "%~1" == "-clean" ( | ||||
|     set MODE=CLEAN | ||||
|   ) else if /i "%~1" == "-?" ( | ||||
|     goto syntax | ||||
|   ) else if /i "%~1" == "-h" ( | ||||
|     goto syntax | ||||
|   ) else if /i "%~1" == "-help" ( | ||||
|     goto syntax | ||||
|   ) else ( | ||||
|     goto unknown | ||||
|   ) | ||||
|  | ||||
|   shift & goto parseArgs | ||||
|  | ||||
| :start | ||||
|   if "%MODE%" == "GENERATE" ( | ||||
|     echo. | ||||
|     echo Generating prerequisite files | ||||
|  | ||||
|     call :generate | ||||
|     if errorlevel 4 goto nogencurlbuild | ||||
|     if errorlevel 3 goto nogenhugehelp | ||||
|     if errorlevel 2 goto nogenmakefile | ||||
|     if errorlevel 1 goto warning | ||||
|  | ||||
|   ) else ( | ||||
|     echo. | ||||
|     echo Removing prerequisite files | ||||
|  | ||||
|     call :clean | ||||
|     if errorlevel 3 goto nocleancurlbuild | ||||
|     if errorlevel 2 goto nocleanhugehelp | ||||
|     if errorlevel 1 goto nocleanmakefile | ||||
|   ) | ||||
|  | ||||
|   goto success | ||||
|  | ||||
| rem Main generate function. | ||||
| rem | ||||
| rem Returns: | ||||
| rem | ||||
| rem 0 - success | ||||
| rem 1 - success with simplified tool_hugehelp.c  | ||||
| rem 2 - failed to generate Makefile | ||||
| rem 3 - failed to generate tool_hugehelp.c | ||||
| rem 4 - failed to generate curlbuild.h | ||||
| rem | ||||
| :generate | ||||
|   if "%OS%" == "Windows_NT" setlocal | ||||
|   set BASIC_HUGEHELP=0 | ||||
|  | ||||
|   rem Create Makefile | ||||
|   echo * %CD%\Makefile | ||||
|   if exist Makefile.dist ( | ||||
|     copy /Y Makefile.dist Makefile 1>NUL 2>&1 | ||||
|     if errorlevel 1 ( | ||||
|       if "%OS%" == "Windows_NT" endlocal | ||||
|       exit /B 2 | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   rem Create tool_hugehelp.c | ||||
|   echo * %CD%\src\tool_hugehelp.c | ||||
|   call :genHugeHelp | ||||
|   if errorlevel 2 ( | ||||
|     if "%OS%" == "Windows_NT" endlocal | ||||
|     exit /B 3 | ||||
|   ) | ||||
|   if errorlevel 1 ( | ||||
|     set BASIC_HUGEHELP=1 | ||||
|   ) | ||||
|   cmd /c exit 0 | ||||
|  | ||||
|   rem Create curlbuild.h | ||||
|   echo * %CD%\include\curl\curlbuild.h | ||||
|   if exist include\curl\curlbuild.h.dist ( | ||||
|     copy /Y include\curl\curlbuild.h.dist include\curl\curlbuild.h 1>NUL 2>&1 | ||||
|     if errorlevel 1 ( | ||||
|       if "%OS%" == "Windows_NT" endlocal | ||||
|       exit /B 4 | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   rem Setup c-ares git tree | ||||
|   if exist ares\buildconf.bat ( | ||||
|     echo. | ||||
|     echo Configuring c-ares build environment | ||||
|     cd ares | ||||
|     call buildconf.bat | ||||
|     cd .. | ||||
| :end_c_ares | ||||
|   ) | ||||
|  | ||||
| :end_all | ||||
|   if "%BASIC_HUGEHELP%" == "1" ( | ||||
|     if "%OS%" == "Windows_NT" endlocal | ||||
|     exit /B 1 | ||||
|   ) | ||||
|  | ||||
|   if "%OS%" == "Windows_NT" endlocal | ||||
|   exit /B 0 | ||||
|  | ||||
| rem Main clean function. | ||||
| rem | ||||
| rem Returns: | ||||
| rem | ||||
| rem 0 - success | ||||
| rem 1 - failed to clean Makefile | ||||
| rem 2 - failed to clean tool_hugehelp.c | ||||
| rem 3 - failed to clean curlbuild.h | ||||
| rem | ||||
| :clean | ||||
|   rem Remove Makefile | ||||
|   echo * %CD%\Makefile | ||||
|   if exist Makefile ( | ||||
|     del Makefile 2>NUL | ||||
|     if exist Makefile ( | ||||
|       exit /B 1 | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   rem Remove tool_hugehelp.c | ||||
|   echo * %CD%\src\tool_hugehelp.c | ||||
|   if exist src\tool_hugehelp.c ( | ||||
|     del src\tool_hugehelp.c 2>NUL | ||||
|     if exist src\tool_hugehelp.c ( | ||||
|       exit /B 2 | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   rem Remove curlbuild.h | ||||
|   echo * %CD%\include\curl\curlbuild.h | ||||
|   if exist include\curl\curlbuild.h ( | ||||
|     del include\curl\curlbuild.h 2>NUL | ||||
|     if exist include\curl\curlbuild.h ( | ||||
|       exit /B 3 | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   exit /B | ||||
|  | ||||
| rem Function to generate src\tool_hugehelp.c | ||||
| rem | ||||
| rem Returns: | ||||
| rem | ||||
| rem 0 - full tool_hugehelp.c generated | ||||
| rem 1 - simplified tool_hugehelp.c | ||||
| rem 2 - failure | ||||
| rem | ||||
| :genHugeHelp | ||||
|   if "%OS%" == "Windows_NT" setlocal | ||||
|   set LC_ALL=C | ||||
|   set ROFFCMD= | ||||
|   set BASIC=1 | ||||
|  | ||||
|   if defined HAVE_PERL ( | ||||
|     if defined HAVE_GROFF ( | ||||
|       set ROFFCMD=groff -mtty-char -Tascii -P-c -man | ||||
|     ) else if defined HAVE_NROFF ( | ||||
|       set ROFFCMD=nroff -c -Tascii -man | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   if defined ROFFCMD ( | ||||
|     echo #include "tool_setup.h"> src\tool_hugehelp.c | ||||
|     echo #include "tool_hugehelp.h">> src\tool_hugehelp.c  | ||||
|  | ||||
|     if defined HAVE_GZIP ( | ||||
|       echo #ifndef HAVE_LIBZ>> src\tool_hugehelp.c | ||||
|     ) | ||||
|  | ||||
|     %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl docs\MANUAL >> src\tool_hugehelp.c | ||||
|     if defined HAVE_GZIP ( | ||||
|       echo #else>> src\tool_hugehelp.c | ||||
|       %ROFFCMD% docs\curl.1 2>NUL | perl src\mkhelp.pl -c docs\MANUAL >> src\tool_hugehelp.c | ||||
|       echo #endif /^* HAVE_LIBZ ^*/>> src\tool_hugehelp.c | ||||
|     ) | ||||
|  | ||||
|     set BASIC=0 | ||||
|   ) else ( | ||||
|     if exist src\tool_hugehelp.c.cvs ( | ||||
|       copy /Y src\tool_hugehelp.c.cvs src\tool_hugehelp.c 1>NUL 2>&1 | ||||
|     ) else ( | ||||
|       echo #include "tool_setup.h"> src\tool_hugehelp.c | ||||
|       echo #include "tool_hugehelp.hd">> src\tool_hugehelp.c | ||||
|       echo.>> src\tool_hugehelp.c | ||||
|       echo void hugehelp(void^)>> src\tool_hugehelp.c | ||||
|       echo {>> src\tool_hugehelp.c | ||||
|       echo #ifdef USE_MANUAL>> src\tool_hugehelp.c | ||||
|       echo   fputs("Built-in manual not included\n", stdout^);>> src\tool_hugehelp.c | ||||
|       echo #endif>> src\tool_hugehelp.c | ||||
|       echo }>> src\tool_hugehelp.c | ||||
|     ) | ||||
|   ) | ||||
|  | ||||
|   findstr "/C:void hugehelp(void)" src\tool_hugehelp.c 1>NUL 2>&1 | ||||
|   if errorlevel 1 ( | ||||
|     if "%OS%" == "Windows_NT" endlocal | ||||
|     exit /B 2 | ||||
|   ) | ||||
|  | ||||
|   if "%BASIC%" == "1" ( | ||||
|     if "%OS%" == "Windows_NT" endlocal | ||||
|     exit /B 1 | ||||
|   ) | ||||
|  | ||||
|   if "%OS%" == "Windows_NT" endlocal | ||||
|   exit /B 0 | ||||
|  | ||||
| rem Function to clean-up local variables under DOS, Windows 3.x and | ||||
| rem Windows 9x as setlocal isn't available until Windows NT | ||||
| rem | ||||
| :dosCleanup | ||||
|   set MODE= | ||||
|   set HAVE_GROFF= | ||||
|   set HAVE_NROFF= | ||||
|   set HAVE_PERL= | ||||
|   set HAVE_GZIP= | ||||
|   set BASIC_HUGEHELP= | ||||
|   set LC_ALL | ||||
|   set ROFFCMD= | ||||
|   set BASIC= | ||||
|  | ||||
|   exit /B | ||||
|  | ||||
| :syntax | ||||
|   rem Display the help | ||||
|   echo. | ||||
|   echo Usage: buildconf [-clean] | ||||
|   echo. | ||||
|   echo -clean    - Removes the files | ||||
|   goto error | ||||
|  | ||||
| :unknown | ||||
|   echo. | ||||
|   echo Error: Unknown argument '%1' | ||||
|   goto error | ||||
|  | ||||
| :norepo | ||||
|   echo. | ||||
|   echo Error: This batch file should only be used with a curl git repository | ||||
|   goto error | ||||
|  | ||||
| :nogenmakefile | ||||
|   echo. | ||||
|   echo Error: Unable to generate Makefile | ||||
|   goto error | ||||
|  | ||||
| :nogenhugehelp | ||||
|   echo. | ||||
|   echo Error: Unable to generate src\tool_hugehelp.c | ||||
|   goto error | ||||
|  | ||||
| :nogencurlbuild | ||||
|   echo. | ||||
|   echo Error: Unable to generate include\curl\curlbuild.h | ||||
|   goto error | ||||
|  | ||||
| :nocleanmakefile | ||||
|   echo. | ||||
|   echo Error: Unable to clean Makefile | ||||
|   goto error | ||||
|  | ||||
| :nocleanhugehelp | ||||
|   echo. | ||||
|   echo Error: Unable to clean src\tool_hugehelp.c | ||||
|   goto error | ||||
|  | ||||
| :nocleancurlbuild | ||||
|   echo. | ||||
|   echo Error: Unable to clean include\curl\curlbuild.h | ||||
|   goto error | ||||
|  | ||||
| :warning | ||||
|   echo. | ||||
|   echo Warning: The curl manual could not be integrated in the source. This means when | ||||
|   echo you build curl the manual will not be available (curl --man^). Integration of | ||||
|   echo the manual is not required and a summary of the options will still be available | ||||
|   echo (curl --help^). To integrate the manual your PATH is required to have | ||||
|   echo groff/nroff, perl and optionally gzip for compression. | ||||
|   goto success | ||||
|  | ||||
| :error | ||||
|   if "%OS%" == "Windows_NT" ( | ||||
|     endlocal | ||||
|   ) else ( | ||||
|     call :dosCleanup | ||||
|   ) | ||||
|   exit /B 1 | ||||
|  | ||||
| :success | ||||
|   if "%OS%" == "Windows_NT" ( | ||||
|     endlocal | ||||
|   ) else ( | ||||
|     call :dosCleanup | ||||
|   ) | ||||
|   exit /B 0 | ||||
|   | ||||
							
								
								
									
										250
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										250
									
								
								configure.ac
									
									
									
									
									
								
							| @@ -39,6 +39,7 @@ AC_CONFIG_SRCDIR([lib/urldata.h]) | ||||
| AC_CONFIG_HEADERS(lib/curl_config.h include/curl/curlbuild.h) | ||||
| AC_CONFIG_MACRO_DIR([m4]) | ||||
| AM_MAINTAINER_MODE | ||||
| m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) | ||||
|  | ||||
| CURL_CHECK_OPTION_DEBUG | ||||
| CURL_CHECK_OPTION_OPTIMIZE | ||||
| @@ -47,6 +48,7 @@ CURL_CHECK_OPTION_WERROR | ||||
| CURL_CHECK_OPTION_CURLDEBUG | ||||
| CURL_CHECK_OPTION_SYMBOL_HIDING | ||||
| CURL_CHECK_OPTION_ARES | ||||
| CURL_CHECK_OPTION_RT | ||||
|  | ||||
| XC_CHECK_PATH_SEPARATOR | ||||
|  | ||||
| @@ -147,7 +149,7 @@ AC_SUBST(PKGADD_VENDOR) | ||||
|  | ||||
| dnl | ||||
| dnl initialize all the info variables | ||||
|     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )" | ||||
|     curl_ssl_msg="no      (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )" | ||||
|     curl_ssh_msg="no      (--with-libssh2)" | ||||
|    curl_zlib_msg="no      (--with-zlib)" | ||||
|     curl_gss_msg="no      (--with-gssapi)" | ||||
| @@ -165,6 +167,7 @@ curl_verbose_msg="enabled (--disable-verbose)" | ||||
|    curl_rtsp_msg="no      (--enable-rtsp)" | ||||
|    curl_rtmp_msg="no      (--with-librtmp)" | ||||
|   curl_mtlnk_msg="no      (--with-libmetalink)" | ||||
|     curl_psl_msg="no      (--with-libpsl)" | ||||
|  | ||||
|     init_ssl_msg=${curl_ssl_msg} | ||||
|  | ||||
| @@ -1396,6 +1399,24 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then | ||||
|   CLEANCPPFLAGS="$CPPFLAGS" | ||||
|   CLEANLIBS="$LIBS" | ||||
|  | ||||
|   dnl This is for Msys/Mingw | ||||
|   case $host in | ||||
|     *-*-msys* | *-*-mingw*) | ||||
|       AC_MSG_CHECKING([for gdi32]) | ||||
|       my_ac_save_LIBS=$LIBS | ||||
|       LIBS="-lgdi32 $LIBS" | ||||
|       AC_TRY_LINK([#include <windef.h> | ||||
|                    #include <wingdi.h>], | ||||
|                    [GdiFlush();], | ||||
|                    [ dnl worked! | ||||
|                    AC_MSG_RESULT([yes])], | ||||
|                    [ dnl failed, restore LIBS | ||||
|                    LIBS=$my_ac_save_LIBS | ||||
|                    AC_MSG_RESULT(no)] | ||||
|                   ) | ||||
|       ;; | ||||
|   esac | ||||
|  | ||||
|   case "$OPT_SSL" in | ||||
|   yes) | ||||
|     dnl --with-ssl (without path) used | ||||
| @@ -1474,31 +1495,13 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then | ||||
|   CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS" | ||||
|   LDFLAGS="$LDFLAGS $SSL_LDFLAGS" | ||||
|  | ||||
|   dnl This is for Msys/Mingw | ||||
|   case $host in | ||||
|     *-*-msys* | *-*-mingw*) | ||||
|       AC_MSG_CHECKING([for gdi32]) | ||||
|       my_ac_save_LIBS=$LIBS | ||||
|       LIBS="-lgdi32 $LIBS" | ||||
|       AC_TRY_LINK([#include <windef.h> | ||||
|                    #include <wingdi.h>], | ||||
|                    [GdiFlush();], | ||||
|                    [ dnl worked! | ||||
|                    AC_MSG_RESULT([yes])], | ||||
|                    [ dnl failed, restore LIBS | ||||
|                    LIBS=$my_ac_save_LIBS | ||||
|                    AC_MSG_RESULT(no)] | ||||
|                   ) | ||||
|       ;; | ||||
|   esac | ||||
|  | ||||
|   AC_CHECK_LIB(crypto, CRYPTO_lock,[ | ||||
|   AC_CHECK_LIB(crypto, HMAC_Update,[ | ||||
|      HAVECRYPTO="yes" | ||||
|      LIBS="-lcrypto $LIBS" | ||||
|      ],[ | ||||
|      LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL" | ||||
|      CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include" | ||||
|      AC_CHECK_LIB(crypto, CRYPTO_add_lock,[ | ||||
|      AC_CHECK_LIB(crypto, HMAC_Init_ex,[ | ||||
|        HAVECRYPTO="yes" | ||||
|        LIBS="-lcrypto $LIBS"], [ | ||||
|        LDFLAGS="$CLEANLDFLAGS" | ||||
| @@ -1508,6 +1511,46 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then | ||||
|     ]) | ||||
|  | ||||
|  | ||||
|   if test X"$HAVECRYPTO" = X"yes"; then | ||||
|      AC_MSG_CHECKING([OpenSSL linking without -ldl]) | ||||
|      saved_libs=$LIBS | ||||
|      AC_TRY_LINK( | ||||
|         [ | ||||
|           #include <openssl/evp.h> | ||||
|         ], | ||||
|         [ | ||||
|           SSLeay_add_all_algorithms(); | ||||
|         ], | ||||
|         [ | ||||
|           AC_MSG_RESULT(yes) | ||||
|           LIBS="$saved_libs" | ||||
|         ], | ||||
|         [ | ||||
|           AC_MSG_RESULT(no) | ||||
|           AC_MSG_CHECKING([OpenSSL linking with -ldl]) | ||||
|           LIBS="-ldl $LIBS" | ||||
|           AC_TRY_LINK( | ||||
|           [ | ||||
|             #include <openssl/evp.h> | ||||
|           ], | ||||
|           [ | ||||
|             SSLeay_add_all_algorithms(); | ||||
|           ], | ||||
|           [ | ||||
|             AC_MSG_RESULT(yes) | ||||
|             LIBS="$saved_libs -ldl" | ||||
|           ], | ||||
|           [ | ||||
|             AC_MSG_RESULT(no) | ||||
|             LIBS="$saved_libs" | ||||
|           ] | ||||
|           ) | ||||
|  | ||||
|         ] | ||||
|      ) | ||||
|  | ||||
|   fi | ||||
|  | ||||
|   if test X"$HAVECRYPTO" = X"yes"; then | ||||
|     dnl This is only reasonable to do if crypto actually is there: check for | ||||
|     dnl SSL libs NOTE: it is important to do this AFTER the crypto lib | ||||
| @@ -1579,7 +1622,8 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then | ||||
|     dnl Older versions of Cyassl (some time before 2.9.4) don't have | ||||
|     dnl SSL_get_shutdown (but this check won't actually detect it there | ||||
|     dnl as it's a macro that needs the header files be included) | ||||
|     dnl BoringSSL doesn't have DES_set_odd_parity | ||||
|     dnl BoringSSL didn't have DES_set_odd_parity for a while but now it is | ||||
|     dnl back again. | ||||
|  | ||||
|     AC_CHECK_FUNCS( RAND_status \ | ||||
|                     RAND_screen \ | ||||
| @@ -1591,14 +1635,22 @@ if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then | ||||
|                     DES_set_odd_parity ) | ||||
|  | ||||
|     AC_MSG_CHECKING([for BoringSSL]) | ||||
|     if test "x$ac_cv_func_DES_set_odd_parity" != "xyes"; then | ||||
|       curl_ssl_msg="enabled (BoringSSL)" | ||||
|     AC_COMPILE_IFELSE([ | ||||
|         AC_LANG_PROGRAM([[ | ||||
|                 #include <openssl/base.h> | ||||
|                 ]],[[ | ||||
|                 #ifndef OPENSSL_IS_BORINGSSL | ||||
|                 #error not boringssl | ||||
|                 #endif | ||||
|        ]]) | ||||
|     ],[ | ||||
|         AC_MSG_RESULT([yes]) | ||||
|         AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1, | ||||
|                            [Define to 1 if using BoringSSL.]) | ||||
|       AC_MSG_RESULT([yes]) | ||||
|     else | ||||
|     ],[ | ||||
|         AC_MSG_RESULT([no]) | ||||
|     fi | ||||
|     ]) | ||||
|  | ||||
|     AC_MSG_CHECKING([for libressl]) | ||||
|     AC_COMPILE_IFELSE([ | ||||
|       AC_LANG_PROGRAM([[ | ||||
| @@ -1786,6 +1838,7 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|             AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH]) | ||||
|           fi | ||||
|         fi | ||||
|         AC_CHECK_FUNCS(gnutls_certificate_set_x509_key_file2) | ||||
|       fi | ||||
|  | ||||
|     fi | ||||
| @@ -1923,6 +1976,93 @@ if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|  | ||||
| fi | ||||
|  | ||||
| dnl ---------------------------------------------------- | ||||
| dnl check for mbedTLS | ||||
| dnl ---------------------------------------------------- | ||||
|  | ||||
| OPT_MBEDTLS=no | ||||
|  | ||||
| _cppflags=$CPPFLAGS | ||||
| _ldflags=$LDFLAGS | ||||
| AC_ARG_WITH(mbedtls,dnl | ||||
| AC_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]) | ||||
| AC_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]), | ||||
|   OPT_MBEDTLS=$withval) | ||||
|  | ||||
| if test "$curl_ssl_msg" = "$init_ssl_msg"; then | ||||
|  | ||||
|   if test X"$OPT_MBEDTLS" != Xno; then | ||||
|  | ||||
|     if test "$OPT_MBEDTLS" = "yes"; then | ||||
|       OPT_MBEDTLS="" | ||||
|     fi | ||||
|  | ||||
|     if test -z "$OPT_MBEDTLS" ; then | ||||
|       dnl check for lib first without setting any new path | ||||
|  | ||||
|       AC_CHECK_LIB(mbedtls, mbedtls_havege_init, | ||||
|       dnl libmbedtls found, set the variable | ||||
|        [ | ||||
|          AC_DEFINE(USE_MBEDTLS, 1, [if mbedTLS is enabled]) | ||||
|          AC_SUBST(USE_MBEDTLS, [1]) | ||||
|          MBEDTLS_ENABLED=1 | ||||
|          USE_MBEDTLS="yes" | ||||
|          curl_ssl_msg="enabled (mbedTLS)" | ||||
|         ], [], -lmbedx509 -lmbedcrypto) | ||||
|     fi | ||||
|  | ||||
|     addld="" | ||||
|     addlib="" | ||||
|     addcflags="" | ||||
|     mbedtlslib="" | ||||
|  | ||||
|     if test "x$USE_MBEDTLS" != "xyes"; then | ||||
|       dnl add the path and test again | ||||
|       addld=-L$OPT_MBEDTLS/lib$libsuff | ||||
|       addcflags=-I$OPT_MBEDTLS/include | ||||
|       mbedtlslib=$OPT_MBEDTLS/lib$libsuff | ||||
|  | ||||
|       LDFLAGS="$LDFLAGS $addld" | ||||
|       if test "$addcflags" != "-I/usr/include"; then | ||||
|          CPPFLAGS="$CPPFLAGS $addcflags" | ||||
|       fi | ||||
|  | ||||
|       AC_CHECK_LIB(mbedtls, mbedtls_ssl_init, | ||||
|        [ | ||||
|        AC_DEFINE(USE_MBEDTLS, 1, [if mbedTLS is enabled]) | ||||
|        AC_SUBST(USE_MBEDTLS, [1]) | ||||
|        MBEDTLS_ENABLED=1 | ||||
|        USE_MBEDTLS="yes" | ||||
|        curl_ssl_msg="enabled (mbedTLS)" | ||||
|        ], | ||||
|        [ | ||||
|          CPPFLAGS=$_cppflags | ||||
|          LDFLAGS=$_ldflags | ||||
|        ], -lmbedx509 -lmbedcrypto) | ||||
|     fi | ||||
|  | ||||
|     if test "x$USE_MBEDTLS" = "xyes"; then | ||||
|       AC_MSG_NOTICE([detected mbedTLS]) | ||||
|  | ||||
|       LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" | ||||
|  | ||||
|       if test -n "$mbedtlslib"; then | ||||
|         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 | ||||
|         dnl due to this | ||||
|         if test "x$cross_compiling" != "xyes"; then | ||||
|           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mbedtlslib" | ||||
|           export LD_LIBRARY_PATH | ||||
|           AC_MSG_NOTICE([Added $mbedtlslib to LD_LIBRARY_PATH]) | ||||
|         fi | ||||
|       fi | ||||
|     fi | ||||
|  | ||||
|   fi dnl mbedTLS not disabled | ||||
|  | ||||
| fi | ||||
|  | ||||
| dnl ---------------------------------------------------- | ||||
| dnl check for CyaSSL | ||||
| dnl ---------------------------------------------------- | ||||
| @@ -2247,7 +2387,7 @@ 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$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then | ||||
| if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_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, --with-axtls, --with-winssl, or --with-darwinssl to address this.]) | ||||
| else | ||||
| @@ -2262,6 +2402,27 @@ dnl ********************************************************************** | ||||
|  | ||||
| CURL_CHECK_CA_BUNDLE | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for libpsl | ||||
| dnl ********************************************************************** | ||||
|  | ||||
| AC_ARG_WITH(libpsl, | ||||
|            AS_HELP_STRING([--without-libpsl], | ||||
|            [disable support for libpsl cookie checking]), | ||||
|            with_libpsl=$withval, | ||||
|            with_libpsl=yes) | ||||
| if test $with_libpsl != "no"; then | ||||
|   AC_SEARCH_LIBS(psl_builtin, psl, | ||||
|     [curl_psl_msg="yes"; | ||||
|      AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled]) | ||||
|      ], | ||||
|     [curl_psl_msg="no      (libpsl not found)"; | ||||
|      AC_MSG_WARN([libpsl was not found]) | ||||
|      ] | ||||
|   ) | ||||
| fi | ||||
| AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "yes"]) | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for libmetalink | ||||
| dnl ********************************************************************** | ||||
| @@ -2869,6 +3030,31 @@ if test X"$want_h2" != Xno; then | ||||
|  | ||||
| fi | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Check for zsh completion path | ||||
| dnl ********************************************************************** | ||||
|  | ||||
| OPT_ZSH_FPATH=default | ||||
| AC_ARG_WITH(zsh-functions-dir, | ||||
| AC_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH]) | ||||
| AC_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]), | ||||
|   [OPT_ZSH_FPATH=$withval]) | ||||
| case "$OPT_ZSH_FPATH" in | ||||
|   no) | ||||
|     dnl --without-zsh-functions-dir option used | ||||
|     ;; | ||||
|   default|yes) | ||||
|     dnl --with-zsh-functions-dir option used without path | ||||
|     ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions" | ||||
|     AC_SUBST(ZSH_FUNCTIONS_DIR) | ||||
|     ;; | ||||
|   *) | ||||
|     dnl --with-zsh-functions-dir option used with path | ||||
|     ZSH_FUNCTIONS_DIR="$withval" | ||||
|     AC_SUBST(ZSH_FUNCTIONS_DIR) | ||||
|     ;; | ||||
| esac | ||||
|  | ||||
| dnl ********************************************************************** | ||||
| dnl Back to "normal" configuring | ||||
| dnl ********************************************************************** | ||||
| @@ -3217,7 +3403,7 @@ if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then | ||||
| [Options --enable-threaded-resolver and --enable-ares are mutually exclusive]) | ||||
| fi | ||||
|  | ||||
| if test "$want_thres" = "yes"; then | ||||
| if test "$want_thres" = "yes" && test "$dontwant_rt" = "no"; then | ||||
|   AC_CHECK_HEADER(pthread.h, | ||||
|     [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>]) | ||||
|       save_CFLAGS="$CFLAGS" | ||||
| @@ -3485,6 +3671,10 @@ if test "x$HAVE_GSSAPI" = "x1"; then | ||||
|   SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" | ||||
| fi | ||||
|  | ||||
| if test "x$curl_psl_msg" = "xyes"; then | ||||
|   SUPPORT_FEATURES="$SUPPORT_FEATURES PSL" | ||||
| fi | ||||
|  | ||||
| if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ | ||||
|     \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then | ||||
|   SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" | ||||
| @@ -3632,6 +3822,7 @@ AC_CONFIG_FILES([Makefile \ | ||||
|            include/curl/Makefile \ | ||||
|            src/Makefile \ | ||||
|            lib/Makefile \ | ||||
|            scripts/Makefile \ | ||||
|            lib/libcurl.vers \ | ||||
|            tests/Makefile \ | ||||
|            tests/certs/Makefile \ | ||||
| @@ -3690,6 +3881,7 @@ AC_MSG_NOTICE([Configured to build curl/libcurl: | ||||
|   RTSP support:     ${curl_rtsp_msg} | ||||
|   RTMP support:     ${curl_rtmp_msg} | ||||
|   metalink support: ${curl_mtlnk_msg} | ||||
|   PSL support:      ${curl_psl_msg} | ||||
|   HTTP2 support:    ${curl_h2_msg} | ||||
|   Protocols:        ${SUPPORT_PROTOCOLS} | ||||
| ]) | ||||
|   | ||||
							
								
								
									
										32
									
								
								docs/CODE_OF_CONDUCT.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								docs/CODE_OF_CONDUCT.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| Contributor Code of Conduct | ||||
| =========================== | ||||
|  | ||||
| As contributors and maintainers of this project, we pledge to respect all | ||||
| people who contribute through reporting issues, posting feature requests, | ||||
| updating documentation, submitting pull requests or patches, and other | ||||
| activities. | ||||
|  | ||||
| We are committed to making participation in this project a harassment-free | ||||
| experience for everyone, regardless of level of experience, gender, gender | ||||
| identity and expression, sexual orientation, disability, personal appearance, | ||||
| body size, race, ethnicity, age, or religion. | ||||
|  | ||||
| Examples of unacceptable behavior by participants include the use of sexual | ||||
| language or imagery, derogatory comments or personal attacks, trolling, public | ||||
| or private harassment, insults, or other unprofessional conduct. | ||||
|  | ||||
| Project maintainers have the right and responsibility to remove, edit, or | ||||
| reject comments, commits, code, wiki edits, issues, and other contributions | ||||
| that are not aligned to this Code of Conduct. Project maintainers who do not | ||||
| follow the Code of Conduct may be removed from the project team. | ||||
|  | ||||
| This code of conduct applies both within project spaces and in public spaces | ||||
| when an individual is representing the project or its community. | ||||
|  | ||||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||||
| reported by opening an issue or contacting one or more of the project | ||||
| maintainers. | ||||
|  | ||||
| This Code of Conduct is adapted from the [Contributor | ||||
| Covenant](http://contributor-covenant.org), version 1.1.0, available at | ||||
| [http://contributor-covenant.org/version/1/1/0/](http://contributor-covenant.org/version/1/1/0/) | ||||
| @@ -1,176 +0,0 @@ | ||||
|   Date: February 11, 2007 | ||||
|   Author: Daniel Stenberg <daniel@haxx.se> | ||||
|   URL: http://curl.haxx.se/legal/distro-dilemma.html | ||||
|  | ||||
| Condition | ||||
|  | ||||
|  This document is written to describe the situation as it is right now. | ||||
|  libcurl 7.16.1 is currently the latest version available. Things may of | ||||
|  course change in the future. | ||||
|  | ||||
|  This document reflects my view and understanding of these things. Please tell | ||||
|  me where and how you think I'm wrong, and I'll try to correct my mistakes. | ||||
|  | ||||
| Background | ||||
|  | ||||
|  The Free Software Foundation has deemed the Original BSD license[1] to be | ||||
|  "incompatible"[2] with GPL[3]. I'd rather say it is the other way around, but | ||||
|  the point is the same: if you distribute a binary version of a GPL program, | ||||
|  it MUST NOT be linked with any Original BSD-licensed parts or libraries. | ||||
|  Doing so will violate the GPL license. For a long time, very many GPL | ||||
|  licensed programs have avoided this license mess by adding an exception[8] to | ||||
|  their license. And many others have just closed their eyes for this problem. | ||||
|  | ||||
|  libcurl is MIT-style[4] licensed - how on earth did this dilemma fall onto | ||||
|  our plates? | ||||
|  | ||||
|  libcurl is only a little library. libcurl can be built to use OpenSSL for its | ||||
|  SSL/TLS capabilities. OpenSSL is basically Original BSD licensed[5]. | ||||
|  | ||||
|  If libcurl built to use OpenSSL is used by a GPL-licensed application and you | ||||
|  decide to distribute a binary version of it (Linux distros - for example - | ||||
|  tend to), you have a clash. GPL vs Original BSD. | ||||
|  | ||||
|  This dilemma is not libcurl-specific nor is it specific to any particular | ||||
|  Linux distro. (This article mentions and refers to Debian several times, but | ||||
|  only because Debian seems to be the only Linux distro to have faced this | ||||
|  issue yet since no other distro is shipping libcurl built with two SSL | ||||
|  libraries.) | ||||
|  | ||||
| Part of the Operating System | ||||
|  | ||||
|  This would not be a problem if the used lib would be considered part of the | ||||
|  underlying operating system, as then the GPL license has an exception | ||||
|  clause[6] that allows applications to use such libs without having to be | ||||
|  allowed to distribute it or its sources. Possibly some distros will claim | ||||
|  that OpenSSL is part of their operating system. | ||||
|  | ||||
|  Debian does however not take this stance and has officially(?) claimed that | ||||
|  OpenSSL is not a required part of the Debian operating system | ||||
|  | ||||
|  Some people claim that this paragraph cannot be exploited this way by a Linux | ||||
|  distro, but I am not a lawyer and that is a discussion left outside of this | ||||
|  document. | ||||
|  | ||||
| GnuTLS | ||||
|  | ||||
|  Since May 2005 libcurl can get built to use GnuTLS instead of OpenSSL. GnuTLS | ||||
|  is an LGPL[7] licensed library that offers a matching set of features as | ||||
|  OpenSSL does. Now, you can build and distribute an TLS/SSL capable libcurl | ||||
|  without including any Original BSD licensed code. | ||||
|  | ||||
|  I believe Debian is the first (only?) distro that provides libcurl/GnuTLS | ||||
|  packages. | ||||
|  | ||||
| yassl | ||||
|  | ||||
|  libcurl can get also get built to use yassl for the TLS/SSL layer. yassl is a | ||||
|  GPL[3] licensed library. | ||||
|  | ||||
|  | ||||
| GnuTLS vs OpenSSL vs yassl | ||||
|  | ||||
|  While these three libraries offer similar features, they are not equal. | ||||
|  libcurl does not (yet) offer a standardized stable ABI if you decide to | ||||
|  switch from using libcurl-openssl to libcurl-gnutls or vice-versa. The GnuTLS | ||||
|  and yassl support is very recent in libcurl and it has not been tested nor | ||||
|  used very extensively, while the OpenSSL equivalent code has been used and | ||||
|  thus matured since 1999. | ||||
|  | ||||
|  GnuTLS | ||||
|    - LGPL licensed | ||||
|    - supports SRP | ||||
|    - lacks SSLv2 support | ||||
|    - lacks MD2 support (used by at least some CA certs) | ||||
|    - lacks the crypto functions libcurl uses for NTLM | ||||
|  | ||||
|  OpenSSL | ||||
|    - Original BSD licensed | ||||
|    - lacks SRP | ||||
|    - supports SSLv2 | ||||
|    - older and more widely used | ||||
|    - provides crypto functions libcurl uses for NTLM | ||||
|    - libcurl can do non-blocking connects with it in 7.15.4 and later | ||||
|  | ||||
|  yassl | ||||
|    - GPL licensed | ||||
|    - much untested and unproven in the real work by (lib)curl users so we don't | ||||
|      know a lot about restrictions or benefits from using this | ||||
|  | ||||
| The Better License, Original BSD, GPL or LGPL? | ||||
|  | ||||
|  It isn't obvious or without debate to any objective interested party that | ||||
|  either of these licenses are the "better" or even the "preferred" one in a | ||||
|  generic situation. | ||||
|  | ||||
|  Instead, I think we should accept the fact that the SSL/TLS libraries and | ||||
|  their different licenses will fit different applications and their authors | ||||
|  differently depending on the applications' licenses and their general usage | ||||
|  pattern (considering how GPL and LGPL libraries for example can be burdensome | ||||
|  for embedded systems usage). | ||||
|  | ||||
|  In Debian land, there seems to be a common opinion that LGPL is "maximally | ||||
|  compatible" with apps while Original BSD is not. Like this: | ||||
|  | ||||
|         https://lists.debian.org/debian-devel/2005/09/msg01417.html | ||||
|  | ||||
| More SSL Libraries | ||||
|  | ||||
|  In libcurl, there's no stopping us here. There are more Open Source/Free | ||||
|  SSL/TLS libraries out there and we would very much like to support them as | ||||
|  well, to offer application authors an even wider scope of choice. | ||||
|  | ||||
| Application Angle of this Problem | ||||
|  | ||||
|  libcurl is built to use one SSL/TLS library. It uses a single fixed name (by | ||||
|  default) on the built/created lib file, and applications are built/linked to | ||||
|  use that single lib. Replacing one libcurl instance with another one that | ||||
|  uses the other SSL/TLS library might break one or more applications (due to | ||||
|  ABI differences and/or different feature set). You want your application to | ||||
|  use the libcurl it was built for. | ||||
|  | ||||
| Project cURL Angle of this Problem | ||||
|  | ||||
|  We distribute libcurl and everyone may build libcurl with either library at | ||||
|  their choice. This problem is not directly a problem of ours. It merely | ||||
|  affects users - GPL application authors only - of our lib as it comes | ||||
|  included and delivered on some distros. | ||||
|  | ||||
|  libcurl has different ABI when built with different SSL/TLS libraries due to | ||||
|  these reasons: | ||||
|  | ||||
|  1. No one has worked on fixing this. The mutex/lock callbacks should be set | ||||
|     with a generic libcurl function that should use the proper underlying | ||||
|     functions. | ||||
|  | ||||
|  2. The CURLOPT_SSL_CTX_FUNCTION option is not possible to "emulate" on GnuTLS | ||||
|     but simply requires OpenSSL. | ||||
|  | ||||
|  3. There might be some other subtle differences just because nobody has yet | ||||
|     tried to make a fixed ABI like this. | ||||
|  | ||||
| Distro Angle of this Problem | ||||
|  | ||||
|  To my knowledge there is only one distro that ships libcurl built with either | ||||
|  OpenSSL or GnuTLS. | ||||
|  | ||||
|  Debian Linux is now (since mid September 2005) providing two different | ||||
|  libcurl packages, one for libcurl built with OpenSSL and one built with | ||||
|  GnuTLS. They use different .so names and can this both be installed in a | ||||
|  single system simultaneously. This has been said to be a transitional system | ||||
|  not desired to keep in the long run. | ||||
|  | ||||
| Footnotes | ||||
|  | ||||
|  [1] = http://www.xfree86.org/3.3.6/COPYRIGHT2.html#6 | ||||
|  [2] = https://www.gnu.org/philosophy/bsd.html | ||||
|  [3] = https://www.gnu.org/licenses/gpl.html | ||||
|  [4] = http://curl.haxx.se/docs/copyright.html | ||||
|  [5] = https://www.openssl.org/source/license.html | ||||
|  [6] = https://www.gnu.org/licenses/gpl.html end of section 3 | ||||
|  [7] = https://www.gnu.org/licenses/lgpl.html | ||||
|  [8] = https://en.wikipedia.org/wiki/OpenSSL_exception | ||||
|  | ||||
| Feedback/Updates provided by | ||||
|  | ||||
|  Eric Cooper | ||||
							
								
								
									
										12
									
								
								docs/FAQ
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								docs/FAQ
									
									
									
									
									
								
							| @@ -1536,9 +1536,7 @@ FAQ | ||||
|  | ||||
|   7.2 Who wrote PHP/CURL? | ||||
|  | ||||
|   PHP/CURL is a module that comes with the regular PHP package. It depends and | ||||
|   uses libcurl, so you need to have libcurl installed properly first before | ||||
|   PHP/CURL can be used. PHP/CURL was initially written by Sterling Hughes. | ||||
|   PHP/CURL was initially written by Sterling Hughes. | ||||
|  | ||||
|   7.3 Can I perform multiple requests using the same handle? | ||||
|  | ||||
| @@ -1547,4 +1545,10 @@ FAQ | ||||
|   unknown to me). | ||||
|  | ||||
|   After a transfer, you just set new options in the handle and make another | ||||
|   transfer. This will make libcurl to re-use the same connection if it can. | ||||
|   transfer. This will make libcurl re-use the same connection if it can. | ||||
|  | ||||
|   7.4 Does PHP/CURL have dependencies? | ||||
|  | ||||
|   PHP/CURL is a module that comes with the regular PHP package. It depends on | ||||
|   and uses libcurl, so you need to have libcurl installed properly before | ||||
|   PHP/CURL can be used. | ||||
|   | ||||
							
								
								
									
										27
									
								
								docs/INSTALL
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								docs/INSTALL
									
									
									
									
									
								
							| @@ -473,12 +473,12 @@ Win32 | ||||
|  | ||||
|    Legacy Windows and SSL | ||||
|    ---------------------- | ||||
|    WinSSL (Windows SSPI, more specifically Schannel), is the native SSL library | ||||
|    that comes with the Windows OS. WinSSL in Windows <= XP is not able to | ||||
|    connect to servers that no longer support the legacy handshakes and | ||||
|    algorithms used by those versions. If you will be using curl in one of those | ||||
|    earlier versions of Windows you should choose another SSL backend like | ||||
|    OpenSSL. | ||||
|  | ||||
|    WinSSL (specifically SChannel from Windows SSPI), is the native SSL library | ||||
|    in Windows. However, WinSSL in Windows <= XP is unable to connect to servers | ||||
|    that no longer support the legacy handshakes and algorithms used by those | ||||
|    versions. If you will be using curl in one of those earlier versions of | ||||
|    Windows you should choose another SSL backend such as OpenSSL. | ||||
|  | ||||
| Apple iOS and Mac OS X | ||||
| ====================== | ||||
| @@ -950,9 +950,10 @@ REDUCING SIZE | ||||
|    important factor.  First, be sure to set the CFLAGS variable when | ||||
|    configuring with any relevant compiler optimization flags to reduce the | ||||
|    size of the binary.  For gcc, this would mean at minimum the -Os option, | ||||
|    and potentially the -march=X and -mdynamic-no-pic options as well, e.g. | ||||
|    and potentially the -march=X, -mdynamic-no-pic and -flto options as well, | ||||
|    e.g. | ||||
|  | ||||
|       ./configure CFLAGS='-Os' ... | ||||
|       ./configure CFLAGS='-Os' LDFLAGS='-Wl,-Bsymbolic'... | ||||
|  | ||||
|    Note that newer compilers often produce smaller code than older versions | ||||
|    due to improved optimization. | ||||
| @@ -970,7 +971,9 @@ REDUCING SIZE | ||||
|      --disable-ipv6 (disables support for IPv6) | ||||
|      --disable-manual (disables support for the built-in documentation) | ||||
|      --disable-proxy (disables support for HTTP and SOCKS proxies) | ||||
|      --disable-unix-sockets (disables support for UNIX sockets) | ||||
|      --disable-verbose (eliminates debugging strings and error code strings) | ||||
|      --disable-versioned-symbols (disables support for versioned symbols) | ||||
|      --enable-hidden-symbols (eliminates unneeded symbols in the shared library) | ||||
|      --without-libidn (disables support for the libidn DNS library) | ||||
|      --without-librtmp (disables support for RTMP) | ||||
| @@ -983,7 +986,7 @@ REDUCING SIZE | ||||
|    configure command-line, e.g. | ||||
|  | ||||
|      CFLAGS="-Os -ffunction-sections -fdata-sections \ | ||||
|              -fno-unwind-tables -fno-asynchronous-unwind-tables" \ | ||||
|              -fno-unwind-tables -fno-asynchronous-unwind-tables -flto" \ | ||||
|      LDFLAGS="-Wl,-s -Wl,-Bsymbolic -Wl,--gc-sections" | ||||
|  | ||||
|    Be sure also to strip debugging symbols from your binaries after | ||||
| @@ -993,9 +996,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 114 KiB in size, and | ||||
|    an FTP-only library that is 115 KiB in size (as of libcurl version 7.35.0, | ||||
|    using gcc 4.8.2). | ||||
|    libcurl library for i386 Linux platforms that is only 109 KiB in size, and | ||||
|    an FTP-only library that is 109 KiB in size (as of libcurl version 7.45.0, | ||||
|    using gcc 4.9.2). | ||||
|  | ||||
|    You may find that statically linking libcurl to your application will | ||||
|    result in a lower total size than dynamically linking. | ||||
|   | ||||
| @@ -3,6 +3,9 @@ join in and help us correct one or more of these! Also be sure to check the | ||||
| changelog of the current development status, as one or more of these problems | ||||
| may have been fixed since this was written! | ||||
|  | ||||
| 91. "curl_easy_perform hangs with imap and PolarSSL" | ||||
|   https://github.com/bagder/curl/issues/334 | ||||
|  | ||||
| 90. IMAP "SEARCH ALL" truncates output on large boxes. "A quick search of the | ||||
|   code reveals that pingpong.c contains some truncation code, at line 408, | ||||
|   when it deems the server response to be too large truncating it to 40 | ||||
| @@ -32,6 +35,7 @@ may have been fixed since this was written! | ||||
|   CURLINFO_STARTTRANSFER_TIME is wrong. While using POST | ||||
|   CURLINFO_STARTTRANSFER_TIME minus CURLINFO_PRETRANSFER_TIME is near to zero | ||||
|   every time. | ||||
|   https://github.com/bagder/curl/issues/218 | ||||
|   http://curl.haxx.se/bug/view.cgi?id=1213 | ||||
|  | ||||
| 84. CURLINFO_SSL_VERIFYRESULT is only implemented for the OpenSSL and NSS | ||||
| @@ -58,16 +62,6 @@ may have been fixed since this was written! | ||||
|   that can receive data. This is subject for change in the future. | ||||
|   http://curl.haxx.se/bug/view.cgi?id=1116 | ||||
|  | ||||
| 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=1063 | ||||
|  | ||||
| 76. The SOCKET type in Win64 is 64 bits large (and thus so is curl_socket_t on | ||||
|   that platform), and long is only 32 bits. It makes it impossible for | ||||
|   curl_easy_getinfo() to return a socket properly with the CURLINFO_LASTSOCKET | ||||
|   option as for all other operating systems. | ||||
|  | ||||
| 75. NTLM authentication involving unicode user name or password only works | ||||
|   properly if built with UNICODE defined together with the WinSSL/schannel | ||||
|   backend. The original problem was mentioned in: | ||||
| @@ -245,13 +239,3 @@ may have been fixed since this was written! | ||||
|   it seems HTTP servers send the *uncompressed* length in that header and | ||||
|   libcurl thinks of it as the *compressed* length. Some explanations are here: | ||||
|   http://curl.haxx.se/mail/lib-2003-06/0146.html | ||||
|  | ||||
| 2. If a HTTP server responds to a HEAD request and includes a body (thus | ||||
|   violating the RFC2616), curl won't wait to read the response but just stop | ||||
|   reading and return back. If a second request (let's assume a GET) is then | ||||
|   immediately made to the same server again, the connection will be re-used | ||||
|   fine of course, and the second request will be sent off but when the | ||||
|   response is to get read, the previous response-body is what curl will read | ||||
|   and havoc is what happens. | ||||
|   More details on this is found in this libcurl mailing list thread: | ||||
|   http://curl.haxx.se/mail/lib-2002-08/0000.html | ||||
|   | ||||
| @@ -36,19 +36,19 @@ CLEANFILES = $(GENHTMLPAGES) $(PDFPAGES) | ||||
| EXTRA_DIST = MANUAL BUGS CONTRIBUTE FAQ FEATURES INTERNALS SSLCERTS	\ | ||||
|  README.win32 RESOURCES TODO TheArtOfHttpScripting THANKS VERSIONS	\ | ||||
|  KNOWN_BUGS BINDINGS $(man_MANS) $(HTMLPAGES) HISTORY INSTALL		\ | ||||
|  $(PDFPAGES) LICENSE-MIXING README.netware DISTRO-DILEMMA INSTALL.devcpp \ | ||||
|  MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE  \ | ||||
|  SSL-PROBLEMS HTTP2.md ROADMAP.md | ||||
|  $(PDFPAGES) LICENSE-MIXING README.netware INSTALL.devcpp		\ | ||||
|  MAIL-ETIQUETTE HTTP-COOKIES SECURITY RELEASE-PROCEDURE SSL-PROBLEMS	\ | ||||
|  HTTP2.md ROADMAP.md CODE_OF_CONDUCT.md | ||||
|  | ||||
| MAN2HTML= roffit < $< >$@ | ||||
|  | ||||
| SUFFIXES = .1 .html .pdf | ||||
|  | ||||
| html: $(HTMLPAGES) | ||||
| 	cd libcurl; make html | ||||
| 	cd libcurl && make html | ||||
|  | ||||
| pdf: $(PDFPAGES) | ||||
| 	cd libcurl; make pdf | ||||
| 	cd libcurl && make pdf | ||||
|  | ||||
| .1.html: | ||||
| 	$(MAN2HTML) | ||||
|   | ||||
| @@ -24,6 +24,8 @@ in the source code repo | ||||
|  | ||||
| - upload the 8 resulting files to the primary download directory | ||||
|  | ||||
| - upload the 4 tarballs to github for the HTTPS download | ||||
|  | ||||
| in the curl-www repo | ||||
| -------------------- | ||||
|  | ||||
| @@ -78,9 +80,7 @@ Coming dates | ||||
| Based on the description above, here are some planned release dates (at the | ||||
| time of this writing): | ||||
|  | ||||
| - June 17, 2015 (version 7.43.0) | ||||
| - August 12, 2015 | ||||
| - October 7, 2015 | ||||
| - October 7, 2015 (version 7.45.0) | ||||
| - December 2, 2015 | ||||
| - January 27, 2016 | ||||
| - March 23, 2016 | ||||
|   | ||||
| @@ -18,20 +18,6 @@ HTTP/2 | ||||
|    To decide: if we need to bundle parts of the nghttp2 stuff that probably | ||||
|    won't be shipped by many distros. | ||||
|  | ||||
| - stream properties API | ||||
|  | ||||
|    Provide options for setting priorities and dependencies among the streams | ||||
|    (easy handles). They are mostly information set for the stream and sent to | ||||
|    the server so we don't have to add much logic for this. | ||||
|  | ||||
| - server push | ||||
|  | ||||
|    Not exactly clear exactly how to support this API-wise, but by adding | ||||
|    handles without asking for a resource it could be a way to be prepared to | ||||
|    receive pushes in case such are sent. We probably need it to still specify | ||||
|    a URL with host name, port etc but we probably need a special option to | ||||
|    tell libcurl it is for server push purposes. | ||||
|  | ||||
| - provide option for HTTP/2 "prior knowledge" over clear text | ||||
|  | ||||
|    As it would avoid the roundtrip-heavy Upgrade: procedures when you _know_ | ||||
| @@ -117,7 +103,7 @@ Improve | ||||
|  | ||||
| 2. curl -h output (considered overwhelming to users) | ||||
|  | ||||
| 3. we have > 160 command line options, is there a way to redo things to | ||||
| 3. we have > 170 command line options, is there a way to redo things to | ||||
|    simplify or improve the situation as we are likely to keep adding | ||||
|    features/options in the future too | ||||
|  | ||||
|   | ||||
| @@ -26,7 +26,7 @@ CA bundle missing intermediate certificates | ||||
|   problems if your CA cert does not have the certificates for the | ||||
|   intermediates in the whole trust chain. | ||||
|  | ||||
| SSL version | ||||
| Protocol version | ||||
|  | ||||
|   Some broken servers fail to support the protocol negotiation properly that | ||||
|   SSL servers are supposed to handle. This may cause the connection to fail | ||||
| @@ -36,7 +36,9 @@ SSL version | ||||
|   An additional complication can be that modern SSL libraries sometimes are | ||||
|   built with support for older SSL and TLS versions disabled! | ||||
|  | ||||
| SSL ciphers | ||||
|   All versions of SSL are considered insecure and should be avoided. Use TLS. | ||||
|  | ||||
| Ciphers | ||||
|  | ||||
|   Clients give servers a list of ciphers to select from. If the list doesn't | ||||
|   include any ciphers the server wants/can use, the connection handshake | ||||
| @@ -51,6 +53,10 @@ SSL ciphers | ||||
|   Note that these weak ciphers are identified as flawed. For example, this | ||||
|   includes symmetric ciphers with less than 128 bit keys and RC4. | ||||
|  | ||||
|   WinSSL in Windows XP is not able to connect to servers that no longer | ||||
|   support the legacy handshakes and algorithms used by those versions, so we | ||||
|   advice against building curl to use WinSSL on really old Windows versions. | ||||
|  | ||||
|   References: | ||||
|  | ||||
|   https://tools.ietf.org/html/draft-popov-tls-prohibiting-rc4-01 | ||||
| @@ -65,3 +71,17 @@ Allow BEAST | ||||
|   introduced. Exactly as it sounds, it re-introduces the BEAST vulnerability | ||||
|   but on the other hand it allows curl to connect to that kind of strange | ||||
|   servers. | ||||
|  | ||||
| Disabling certificate revocation checks | ||||
|  | ||||
|   Some SSL backends may do certificate revocation checks (CRL, OCSP, etc) | ||||
|   depending on the OS or build configuration. The --ssl-no-revoke option was | ||||
|   introduced in 7.44.0 to disable revocation checking but currently is only | ||||
|   supported for WinSSL (the native Windows SSL library), with an exception in | ||||
|   the case of Windows' Untrusted Publishers blacklist which it seems can't be | ||||
|   bypassed. This option may have broader support to accommodate other SSL | ||||
|   backends in the future. | ||||
|  | ||||
|   References: | ||||
|  | ||||
|   http://curl.haxx.se/docs/ssl-compared.html | ||||
|   | ||||
							
								
								
									
										53
									
								
								docs/THANKS
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								docs/THANKS
									
									
									
									
									
								
							| @@ -131,12 +131,14 @@ Benbuck Nason | ||||
| Benjamin Gerard | ||||
| Benjamin Gilbert | ||||
| Benjamin Johnson | ||||
| Benjamin Kircher | ||||
| Benoit Neil | ||||
| Benoit Sigoure | ||||
| Bernard Leak | ||||
| Bernhard Reutner-Fischer | ||||
| Bert Huijben | ||||
| Bertrand Demiddelaer | ||||
| Bertrand Simonnet | ||||
| Bill Doyle | ||||
| Bill Egert | ||||
| Bill Hoffman | ||||
| @@ -234,6 +236,7 @@ Cris Bailiff | ||||
| Cristian Rodríguez | ||||
| Curt Bogmine | ||||
| Cyrill Osterwalder | ||||
| Cédric Connes | ||||
| Cédric Deltheil | ||||
| D. Flinkmann | ||||
| Da-Yoon Chung | ||||
| @@ -252,9 +255,14 @@ Dan Zitter | ||||
| Daniel Black | ||||
| Daniel Cater | ||||
| Daniel Egger | ||||
| Daniel Hwang | ||||
| Daniel Johnson | ||||
| Daniel Kahn Gillmor | ||||
| Daniel Lee Hwang | ||||
| Daniel Melani | ||||
| Daniel Mentz | ||||
| Daniel Seither | ||||
| Daniel Shahaf | ||||
| Daniel Steinberg | ||||
| Daniel Stenberg | ||||
| Daniel Theron | ||||
| @@ -268,6 +276,7 @@ Dave May | ||||
| Dave Reisner | ||||
| Dave Thompson | ||||
| Dave Vasilevsky | ||||
| Davey Shafik | ||||
| David Bau | ||||
| David Binderman | ||||
| David Blaikie | ||||
| @@ -297,6 +306,7 @@ David Woodhouse | ||||
| David Wright | ||||
| David Yan | ||||
| Dengminwen | ||||
| Denis Feklushkin | ||||
| Dennis Clarke | ||||
| Derek Higgins | ||||
| Detlef Schmier | ||||
| @@ -320,12 +330,14 @@ Dmitry Falko | ||||
| Dmitry Kurochkin | ||||
| Dmitry Popov | ||||
| Dmitry Rechkin | ||||
| Dmitry S. Baikov | ||||
| Dolbneff A.V | ||||
| Domenico Andreoli | ||||
| Dominick Meglio | ||||
| Dominique Leuenberger | ||||
| Doug Kaufman | ||||
| Doug Porter | ||||
| Douglas Creager | ||||
| Douglas E. Wegscheid | ||||
| Douglas Kilpatrick | ||||
| Douglas R. Horner | ||||
| @@ -364,12 +376,14 @@ Eric Lubin | ||||
| Eric Melville | ||||
| Eric Mertens | ||||
| Eric Rautman | ||||
| Eric Ridge | ||||
| Eric S. Raymond | ||||
| Eric Thelin | ||||
| Eric Vergnaud | ||||
| Eric Wong | ||||
| Eric Young | ||||
| Erick Nuwendam | ||||
| Erik Janssen | ||||
| Erik Johansson | ||||
| Ernest Beinrohr | ||||
| Erwan Legrand | ||||
| @@ -384,9 +398,11 @@ Fabian Hiernaux | ||||
| Fabian Keil | ||||
| Fabrizio Ammollo | ||||
| Fedor Karpelevitch | ||||
| Feist Josselin | ||||
| Felix Yan | ||||
| Felix von Leitner | ||||
| Feng Tu | ||||
| Flavio Medeiros | ||||
| Florian Schoppmann | ||||
| Florian Weimer | ||||
| Forrest Cahoon | ||||
| @@ -453,6 +469,7 @@ Guido Berhoerster | ||||
| Guillaume Arluison | ||||
| Gunter Knauf | ||||
| Gustaf Hui | ||||
| Gustavo Grieco | ||||
| Gwenole Beauchesne | ||||
| Gökhan Şengün | ||||
| Götz Babin-Ebell | ||||
| @@ -497,6 +514,7 @@ Iida Yosiaki | ||||
| Ilguiz Latypov | ||||
| Ilja van Sprundel | ||||
| Immanuel Gregoire | ||||
| Inca R | ||||
| Ingmar Runge | ||||
| Ingo Ralf Blum | ||||
| Ingo Wilken | ||||
| @@ -507,6 +525,7 @@ Jack Zhang | ||||
| Jacky Lam | ||||
| Jacob Meuser | ||||
| Jacob Moshenko | ||||
| Jactry Zeng | ||||
| Jad Chamcham | ||||
| Jakub Zakrzewski | ||||
| James Bursa | ||||
| @@ -535,6 +554,7 @@ Jason Liu | ||||
| Jason McDonald | ||||
| Jason S. Priebe | ||||
| Javier Barroso | ||||
| Javier G. Sogo | ||||
| Jay Austin | ||||
| Jayesh A Shah | ||||
| Jaz Fresh | ||||
| @@ -601,6 +621,7 @@ John Janssen | ||||
| John Joseph Bachir | ||||
| John Kelly | ||||
| John Lask | ||||
| John Levon | ||||
| John Lightsey | ||||
| John Marino | ||||
| John Marshall | ||||
| @@ -619,6 +640,7 @@ Jon Torrey | ||||
| Jon Travis | ||||
| Jon Turner | ||||
| Jonas Forsman | ||||
| Jonas Minnberg | ||||
| Jonas Schnelli | ||||
| Jonatan Lander | ||||
| Jonatan Vela | ||||
| @@ -647,6 +669,7 @@ Julien Nabet | ||||
| Julien Royer | ||||
| Jun-ichiro itojun Hagino | ||||
| Jurij Smakov | ||||
| Justin Ehlert | ||||
| Justin Fletcher | ||||
| Justin Karneges | ||||
| Justin Maggard | ||||
| @@ -658,6 +681,7 @@ Kai Sommerfeld | ||||
| Kai-Uwe Rommel | ||||
| Kalle Vahlman | ||||
| Kamil Dudka | ||||
| Kang Lin | ||||
| Kang-Jin Lee | ||||
| Karl Moerder | ||||
| Karol Pietrzak | ||||
| @@ -689,6 +713,7 @@ Krishnendu Majumdar | ||||
| Krister Johansen | ||||
| Kristian Gunstone | ||||
| Kristian Köhntopp | ||||
| Kurt Fankhauser | ||||
| Kyle J. McKay | ||||
| Kyle L. Huff | ||||
| Kyle Sallee | ||||
| @@ -705,6 +730,7 @@ Lars Nilsson | ||||
| Lars Torben Wilson | ||||
| Lau Hang Kin | ||||
| Laurent Rabret | ||||
| Lauri Kasanen | ||||
| Legoff Vincent | ||||
| Lehel Bernadt | ||||
| Leif W | ||||
| @@ -720,6 +746,7 @@ Linas Vepstas | ||||
| Lindley French | ||||
| Ling Thio | ||||
| Linus Nielsen Feltzing | ||||
| Lior Kaplan | ||||
| Lisa Xu | ||||
| Liviu Chircu | ||||
| Liza Alenchery | ||||
| @@ -732,6 +759,7 @@ Lucas Adamski | ||||
| Lucas Pardue | ||||
| Ludek Finstrle | ||||
| Ludovico Cavedon | ||||
| Lukas Ruzicka | ||||
| Lukasz Czekierda | ||||
| Luke Amery | ||||
| Luke Call | ||||
| @@ -742,6 +770,7 @@ Maciej Karpiuk | ||||
| Maciej Puzio | ||||
| Maciej W. Rozycki | ||||
| Maks Naumov | ||||
| Maksim Stsepanenka | ||||
| Mamoru Tasaka | ||||
| Mandy Wu | ||||
| Manfred Schwarb | ||||
| @@ -825,6 +854,7 @@ Michael Day | ||||
| Michael Goffioul | ||||
| Michael Jahn | ||||
| Michael Jerris | ||||
| Michael Kalinin | ||||
| Michael Kaufmann | ||||
| Michael Mealling | ||||
| Michael Mueller | ||||
| @@ -835,8 +865,10 @@ Michael Stillwell | ||||
| Michael Wallner | ||||
| Michal Bonino | ||||
| Michal Marek | ||||
| Michał Fita | ||||
| Michał Górny | ||||
| Michał Kowalczyk | ||||
| Michał Piechowski | ||||
| Michel Promonet | ||||
| Michele Bini | ||||
| Miguel Angel | ||||
| @@ -868,6 +900,7 @@ Nagai H | ||||
| Nathan Coulter | ||||
| Nathan O'Sullivan | ||||
| Nathanael Nerode | ||||
| Nathaniel Waisbrot | ||||
| Naveen Chandran | ||||
| Naveen Noel | ||||
| Neil Bowers | ||||
| @@ -894,6 +927,7 @@ Nis Jorgensen | ||||
| Nobuhiro Ban | ||||
| Nodak Sodak | ||||
| Norbert Frese | ||||
| Norbert Kett | ||||
| Norbert Novotny | ||||
| Ofer | ||||
| Ola Mork | ||||
| @@ -903,6 +937,7 @@ Oliver Gondža | ||||
| Oliver Kuckertz | ||||
| Oliver Schindler | ||||
| Olivier Berger | ||||
| Orange Tsai | ||||
| Oren Souroujon | ||||
| Oren Tirosh | ||||
| Orgad Shaneh | ||||
| @@ -998,6 +1033,7 @@ Rainer Canavan | ||||
| Rainer Jung | ||||
| Rainer Koenig | ||||
| Rajesh Naganathan | ||||
| Rajkumar Mandal | ||||
| Ralf S. Engelschall | ||||
| Ralph Beckmann | ||||
| Ralph Mitchell | ||||
| @@ -1007,6 +1043,7 @@ Ravi Pratap | ||||
| Ray Dassen | ||||
| Ray Pekowski | ||||
| Ray Satiro | ||||
| Razvan Cojocaru | ||||
| Reinout van Schouwen | ||||
| Remi Gacogne | ||||
| Renato Botelho | ||||
| @@ -1027,10 +1064,12 @@ Richard Bramante | ||||
| Richard Clayton | ||||
| Richard Cooper | ||||
| Richard Gorton | ||||
| Richard Hosking | ||||
| Richard Michael | ||||
| Richard Moore | ||||
| Richard Prescott | ||||
| Richard Silverman | ||||
| Richard van den Berg | ||||
| Rick Jones | ||||
| Rick Richardson | ||||
| Rob Crittenden | ||||
| @@ -1054,6 +1093,7 @@ Robson Braga Araujo | ||||
| Rodney Simmons | ||||
| Rodric Glaser | ||||
| Rodrigo Silva | ||||
| Roger Leigh | ||||
| Roland Blom | ||||
| Roland Krikava | ||||
| Roland Zimmermann | ||||
| @@ -1078,6 +1118,7 @@ Salvador Dávila | ||||
| Salvatore Sorrentino | ||||
| Sam Deane | ||||
| Sam Hurst | ||||
| Sam Roth | ||||
| Sam Schanken | ||||
| Sampo Kellomaki | ||||
| Samuel Díaz García | ||||
| @@ -1097,6 +1138,7 @@ Scott Cantor | ||||
| Scott Davis | ||||
| Scott McCreary | ||||
| Sean Boudreau | ||||
| Sebastian Pohlschmidt | ||||
| Sebastian Rasmussen | ||||
| Senthil Raja Velu | ||||
| Sergei Nikulov | ||||
| @@ -1157,15 +1199,18 @@ Sune Ahlgren | ||||
| Sven Anders | ||||
| Sven Neuhaus | ||||
| Sven Wegener | ||||
| Svyatoslav Mishyn | ||||
| Symeon Paraschoudis | ||||
| Sébastien Willemijns | ||||
| T. Bharath | ||||
| T. Yamada | ||||
| TJ Saunders | ||||
| Tae Hyoung Ahn | ||||
| Taneli Vahakangas | ||||
| Tanguy Fautre | ||||
| Tatsuhiro Tsujikawa | ||||
| Temprimus | ||||
| Terri Oda | ||||
| Thomas Braun | ||||
| Thomas J. Moore | ||||
| Thomas Klausner | ||||
| @@ -1174,6 +1219,7 @@ Thomas Lopatic | ||||
| Thomas Ruecker | ||||
| Thomas Schwinge | ||||
| Thomas Tonino | ||||
| Thorsten Schöning | ||||
| Tiit Pikma | ||||
| Till Maas | ||||
| Tim Ansell | ||||
| @@ -1184,8 +1230,9 @@ Tim Costello | ||||
| Tim Harder | ||||
| Tim Heckman | ||||
| Tim Newsome | ||||
| Tim Ruehsen | ||||
| Tim Rühsen | ||||
| Tim Sneddon | ||||
| Tim Stack | ||||
| Tim Starling | ||||
| Timo Sirainen | ||||
| Tinus van den Berg | ||||
| @@ -1195,7 +1242,6 @@ Tobias Stoeckmann | ||||
| Toby Peterson | ||||
| Todd A Ouska | ||||
| Todd Kulesza | ||||
| Todd Ouska | ||||
| Todd Vierling | ||||
| Tom Benoist | ||||
| Tom Donovan | ||||
| @@ -1255,6 +1301,7 @@ Vojtech Janota | ||||
| Vojtech Minarik | ||||
| Vojtěch Král | ||||
| Vsevolod Novikov | ||||
| W. Mark Kubacki | ||||
| Waldek Kozba | ||||
| Walter J. Mack | ||||
| Ward Willats | ||||
| @@ -1272,6 +1319,7 @@ Wojciech Zwiefka | ||||
| Wouter Van Rooy | ||||
| Wu Yongzheng | ||||
| Xavier Bouchoux | ||||
| Xiangbin Li | ||||
| Yaakov Selkowitz | ||||
| Yamada Yasuharu | ||||
| Yang Tse | ||||
| @@ -1294,4 +1342,5 @@ Zvi Har'El | ||||
| nk | ||||
| swalkaus at yahoo.com | ||||
| tommink[at]post.pl | ||||
| Štefan Kremeň | ||||
| Никита Дорохин | ||||
|   | ||||
| @@ -50,3 +50,5 @@ s/Jiří Hruška/Jiri Hruska/ | ||||
| s/Viktor Szakats/Viktor Szakáts/ | ||||
| s/Jonathan Cardoso/Jonathan Cardoso Machado/ | ||||
| s/Linus Nielsen/Linus Nielsen Feltzing/ | ||||
| s/Todd Ouska$/Todd A Ouska/ | ||||
| s/Tim Ruehsen/Tim Rühsen/ | ||||
|   | ||||
							
								
								
									
										121
									
								
								docs/TODO
									
									
									
									
									
								
							
							
						
						
									
										121
									
								
								docs/TODO
									
									
									
									
									
								
							| @@ -26,11 +26,17 @@ | ||||
|  1.8 Allow SSL (HTTPS) to proxy | ||||
|  1.9 Cache negative name resolves | ||||
|  1.10 Support IDNA2008 | ||||
|  1.11 minimize dependencies with dynamicly loaded modules | ||||
|  1.12 have form functions use CURL handle argument | ||||
|  1.13 Add CURLOPT_MAIL_CLIENT option | ||||
|  1.14 Typesafe curl_easy_setopt() | ||||
|  1.15 TCP Fast Open | ||||
|  | ||||
|  2. libcurl - multi interface | ||||
|  2.1 More non-blocking | ||||
|  2.2 Fix HTTP Pipelining for PUT | ||||
|  2.3 Better support for same name resolves | ||||
|  2.2 Better support for same name resolves | ||||
|  2.3 Non-blocking curl_multi_remove_handle() | ||||
|  2.4 Split connect and authentication process | ||||
|  | ||||
|  3. Documentation | ||||
|  3.1 Update date and version in man pages | ||||
| @@ -51,6 +57,7 @@ | ||||
|  5.4 SPDY | ||||
|  5.5 auth= in URLs | ||||
|  5.6 Refuse "downgrade" redirects | ||||
|  5.7 More compressions | ||||
|  | ||||
|  6. TELNET | ||||
|  6.1 ditch stdin | ||||
| @@ -113,6 +120,7 @@ | ||||
|  17.7 warning when sending binary output to terminal | ||||
|  17.8 offer color-coded HTTP header output | ||||
|  17.9 Choose the name of file in braces for complex URLs | ||||
|  17.10 improve how curl works in a windows console window | ||||
|  | ||||
|  18. Build | ||||
|  18.1 roffit | ||||
| @@ -138,8 +146,6 @@ | ||||
|  21.6 remove CURLOPT_DNS_USE_GLOBAL_CACHE | ||||
|  21.7 remove progress meter from libcurl | ||||
|  21.8 remove 'curl_httppost' from public | ||||
|  21.9 have form functions use CURL handle argument | ||||
|  21.10 Add CURLOPT_MAIL_CLIENT option | ||||
|  | ||||
| ============================================================================== | ||||
|  | ||||
| @@ -225,6 +231,58 @@ | ||||
|  by libidn. libidn implements IDNA2003 which has been superseded by IDNA2008. | ||||
|  libidn2 is an existing library offering support for IDNA2008. | ||||
|  | ||||
| 1.11 minimize dependencies with dynamicly loaded modules | ||||
|  | ||||
|  We can create a system with loadable modules/plug-ins, where these modules | ||||
|  would be the ones that link to 3rd party libs. That would allow us to avoid | ||||
|  having to load ALL dependencies since only the necessary ones for this | ||||
|  app/invoke/used protocols would be necessary to load.  See | ||||
|  https://github.com/bagder/curl/issues/349 | ||||
|  | ||||
| 1.12 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. | ||||
|  | ||||
|  The curl_formadd() design can probably also be reconsidered to make it easier | ||||
|  to use and less error-prone. Probably easiest by splitting it into several | ||||
|  function calls. | ||||
|  | ||||
| 1.13 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 | ||||
|  specifying 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 | ||||
|  | ||||
| 1.14 Typesafe curl_easy_setopt() | ||||
|  | ||||
|  One of the most common problems in libcurl using applications is the lack of | ||||
|  type checks for curl_easy_setopt() which happens because it accepts varargs | ||||
|  and thus can take any type. | ||||
|  | ||||
|  One possible solution to this is to introduce a few different versions of the | ||||
|  setopt version for the different kinds of data you can set. | ||||
|  | ||||
|   curl_easy_set_num() - sets a long value | ||||
|  | ||||
|   curl_easy_set_large() - sets a curl_off_t value | ||||
|  | ||||
|   curl_easy_set_ptr() - sets a pointer | ||||
|  | ||||
|   curl_easy_set_cb() - sets a callback PLUS its callback data | ||||
|  | ||||
| 1.15 TCP Fast Open | ||||
|  | ||||
|  RFC 7413 defines how to include data already in the TCP SYN handshake to | ||||
|  reduce latency. | ||||
|  | ||||
|  | ||||
| 2. libcurl - multi interface | ||||
|  | ||||
| @@ -242,13 +300,7 @@ | ||||
|  - The "DONE" operation (post transfer protocol-specific actions) for the | ||||
|    protocols SFTP, SMTP, FTP. Fixing Curl_done() for this is a worthy task. | ||||
|  | ||||
| 2.2 Fix HTTP Pipelining for PUT | ||||
|  | ||||
|  HTTP Pipelining can be a way to greatly enhance performance for multiple | ||||
|  serial requests and currently libcurl only supports that for HEAD and GET | ||||
|  requests but it should also be possible for PUT. | ||||
|  | ||||
| 2.3 Better support for same name resolves | ||||
| 2.2 Better support for same name resolves | ||||
|  | ||||
|  If a name resolve has been initiated for name NN and a second easy handle | ||||
|  wants to resolve that name as well, make it wait for the first resolve to end | ||||
| @@ -256,6 +308,20 @@ | ||||
|  especially needed when adding many simultaneous handles using the same host | ||||
|  name when the DNS resolver can get flooded. | ||||
|  | ||||
| 2.3 Non-blocking curl_multi_remove_handle() | ||||
|  | ||||
|  The multi interface has a few API calls that assume a blocking behavior, like | ||||
|  add_handle() and remove_handle() which limits what we can do internally. The | ||||
|  multi API need to be moved even more into a single function that "drives" | ||||
|  everything in a non-blocking manner and signals when something is done. A | ||||
|  remove or add would then only ask for the action to get started and then | ||||
|  multi_perform() etc still be called until the add/remove is completed. | ||||
|  | ||||
| 2.4 Split connect and authentication process | ||||
|  | ||||
|  The multi interface treats the authentication process as part of the connect | ||||
|  phase. As such any failures during authentication won't trigger the relevant | ||||
|  QUIT or LOGOFF for protocols such as IMAP, POP3 and SMTP. | ||||
|  | ||||
| 3. Documentation | ||||
|  | ||||
| @@ -363,6 +429,14 @@ This is not detailed in any FTP specification. | ||||
|  Consider a way to tell curl to refuse to "downgrade" protocol with a redirect | ||||
|  and/or possibly a bit that refuses redirect to change protocol completely. | ||||
|  | ||||
| 5.7 More compressions | ||||
|  | ||||
|  Compression algorithms that perform better than gzip are being considered for | ||||
|  use and inclusion in existing browsers. For example 'brotli'. If servers | ||||
|  follow along it is a good reason for us to also allow users to take advantage | ||||
|  of this. The algorithm: https://github.com/google/brotli The Firefox bug: | ||||
|  https://bugzilla.mozilla.org/show_bug.cgi?id=366559 | ||||
|  | ||||
|  | ||||
| 6. TELNET | ||||
|  | ||||
| @@ -642,6 +716,12 @@ Currently the SMB authentication uses NTLMv1. | ||||
|  | ||||
|  See https://github.com/bagder/curl/issues/221 | ||||
|  | ||||
| 17.10 improve how curl works in a windows console window | ||||
|  | ||||
|  If you pull the scrollbar when transferring with curl in a Windows console | ||||
|  window, the transfer is interrupted and can get disconnected. This can | ||||
|  probably be improved. See https://github.com/bagder/curl/issues/322 | ||||
|  | ||||
|  | ||||
| 18. Build | ||||
|  | ||||
| @@ -791,22 +871,3 @@ Currently the SMB authentication uses NTLMv1. | ||||
|  | ||||
|  Changing them to return a private handle will benefit the implementation and | ||||
|  allow us much greater freedoms while still maintaining a solid API and ABI. | ||||
|  | ||||
| 21.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. | ||||
|  | ||||
| 21.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 | ||||
|  specifying 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 | ||||
|   | ||||
|   | ||||
							
								
								
									
										110
									
								
								docs/curl.1
									
									
									
									
									
								
							
							
						
						
									
										110
									
								
								docs/curl.1
									
									
									
									
									
								
							| @@ -171,10 +171,11 @@ a level of control). | ||||
| .IP "-2, --sslv2" | ||||
| (SSL) Forces curl to use SSL version 2 when negotiating with a remote SSL | ||||
| server. Sometimes curl is built without SSLv2 support. SSLv2 is widely | ||||
| considered insecure. | ||||
| considered insecure (see RFC 6176). | ||||
| .IP "-3, --sslv3" | ||||
| (SSL) Forces curl to use SSL version 3 when negotiating with a remote SSL | ||||
| server. Sometimes curl is built without SSLv3 support. | ||||
| server. Sometimes curl is built without SSLv3 support. SSLv3 is widely | ||||
| considered insecure (see RFC 7568). | ||||
| .IP "-4, --ipv4" | ||||
| This option tells curl to resolve names to IPv4 addresses only, and not for | ||||
| example try IPv6. | ||||
| @@ -212,7 +213,7 @@ be in the format "NAME1=VALUE1; NAME2=VALUE2". | ||||
|  | ||||
| If no '=' symbol is used in the line, it is treated as a filename to use to | ||||
| read previously stored cookie lines from, which should be used in this session | ||||
| if they match. Using this method also activates the "cookie parser" which will | ||||
| if they match. Using this method also activates the cookie engine which will | ||||
| make curl record incoming cookies too, which may be handy if you're using this | ||||
| in combination with the \fI-L, --location\fP option. The file format of the | ||||
| file to read cookies from should be plain HTTP headers or the Netscape/Mozilla | ||||
| @@ -222,6 +223,15 @@ The file specified with \fI-b, --cookie\fP is only used as input. No cookies | ||||
| will be written to the file. To store cookies, use the \fI-c, --cookie-jar\fP | ||||
| option. | ||||
|  | ||||
| Exercise caution if you are using this option and multiple transfers may occur. | ||||
| If you use the NAME1=VALUE1; format, or in a file use the Set-Cookie format and | ||||
| don't specify a domain, then the cookie is sent for any domain (even after | ||||
| redirects are followed) and cannot be modified by a server-set cookie. If the | ||||
| cookie engine is enabled and a server sets a cookie of the same name then both | ||||
| will be sent on a future transfer to that server, likely not what you intended. | ||||
| To address these issues set a domain in Set-Cookie (doing that will include | ||||
| sub-domains) or use the Netscape format. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "-B, --use-ascii" | ||||
| (FTP/LDAP) Enable ASCII transfer. For FTP, this can also be enforced by using | ||||
| @@ -253,6 +263,9 @@ won't fail or even report an error clearly. Using -v will get a warning | ||||
| displayed, but that is the only visible feedback you get about this possibly | ||||
| lethal situation. | ||||
|  | ||||
| Since 7.43.0 cookies that were imported in the Set-Cookie format without a | ||||
| domain name are not exported by this option. | ||||
|  | ||||
| If this option is used several times, the last specified file name will be | ||||
| used. | ||||
| .IP "-C, --continue-at <offset>" | ||||
| @@ -475,10 +488,10 @@ If this option is used several times, the last one will be used. | ||||
| (SSL) Tells curl to use the specified client certificate file when getting a | ||||
| file with HTTPS, FTPS or another SSL-based protocol. The certificate must be | ||||
| in PKCS#12 format if using Secure Transport, or PEM format if using any other | ||||
| engine.  If the optional password isn't specified, it will be queried | ||||
| for on the terminal. Note that this option assumes a \&"certificate" file that | ||||
| is the private key and the private certificate concatenated! See \fI--cert\fP | ||||
| and \fI--key\fP to specify them independently. | ||||
| engine.  If the optional password isn't specified, it will be queried for on | ||||
| the terminal. Note that this option assumes a \&"certificate" file that is the | ||||
| private key and the client certificate concatenated! See \fI--cert\fP and | ||||
| \fI--key\fP to specify them independently. | ||||
|  | ||||
| If curl is built against the NSS SSL library then this option can tell | ||||
| curl the nickname of the certificate to use within the NSS database defined | ||||
| @@ -544,9 +557,11 @@ OpenSSL-powered curl to make SSL-connections much more efficiently than using | ||||
|  | ||||
| If this option is set, the default capath value will be ignored, and if it is | ||||
| used several times, the last one will be used. | ||||
| .IP "--pinnedpubkey <pinned public key>" | ||||
| (SSL) Tells curl to use the specified public key file to verify the peer. The | ||||
| file must contain a single public key in PEM or DER format. | ||||
| .IP "--pinnedpubkey <pinned public key (hashes)>" | ||||
| (SSL) Tells curl to use the specified public key file (or hashes) to verify the | ||||
| peer. This can be a path to a file which contains a single public key in PEM or | ||||
| DER format, or any number of base64 encoded sha256 hashes preceded by | ||||
| \'sha256//\' and separated by \';\' | ||||
|  | ||||
| When negotiating a TLS or SSL connection, the server sends a certificate | ||||
| indicating its identity. A public key is extracted from this certificate and | ||||
| @@ -554,7 +569,8 @@ if it does not exactly match the public key provided to this option, curl will | ||||
| abort the connection before sending or receiving any data. | ||||
|  | ||||
| Added in 7.39.0 for OpenSSL, GnuTLS and GSKit. Added in 7.43.0 for NSS and | ||||
| wolfSSL/CyaSSL. Other SSL backends not supported. | ||||
| wolfSSL/CyaSSL. sha256 support added in 7.44.0 for OpenSSL, | ||||
| GnuTLS, NSS and wolfSSL/CyaSSL. Other SSL backends not supported. | ||||
|  | ||||
| If this option is used several times, the last one will be used. | ||||
| .IP "--cert-status" | ||||
| @@ -604,7 +620,9 @@ input: | ||||
| \fBcurl\fP -F password=@/etc/passwd www.mypasswords.com | ||||
|  | ||||
| To read content from stdin instead of a file, use - as the filename. This goes | ||||
| for both @ and < constructs. | ||||
| for both @ and < constructs. Unfortunately it does not support reading the | ||||
| file from a named pipe or similar, as it needs the full size before the | ||||
| transfer starts. | ||||
|  | ||||
| You can also tell curl what Content-Type to use by using 'type=', in a manner | ||||
| similar to: | ||||
| @@ -771,10 +789,12 @@ This option can be used multiple times to add/replace/remove multiple headers. | ||||
| 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 | ||||
| running Apache 1.x, which will report incorrect Content-Length for files | ||||
| larger than 2 gigabytes. | ||||
| For HTTP, Ignore the Content-Length header. This is particularly useful for | ||||
| servers running Apache 1.x, which will report incorrect Content-Length for | ||||
| files larger than 2 gigabytes. | ||||
|  | ||||
| For FTP (since 7.46.0), skip the RETR command to figure out the size before | ||||
| downloading a file. | ||||
| .IP "-i, --include" | ||||
| (HTTP) Include the HTTP-header in the output. The HTTP-header includes things | ||||
| like server-name, date of the document, HTTP-version and more... | ||||
| @@ -1245,21 +1265,21 @@ this option set you tell it not to do that. | ||||
|  | ||||
| (Added in 7.42.0) | ||||
| .IP "--post301" | ||||
| (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests | ||||
| (HTTP) Tells curl to respect RFC 7230/6.4.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" | ||||
| (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests | ||||
| (HTTP) Tells curl to respect RFC 7230/6.4.3 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) | ||||
| .IP "--post303" | ||||
| (HTTP) Tells curl to respect RFC 2616/10.3.2 and not convert POST requests | ||||
| (HTTP) Tells curl to respect RFC 7230/6.4.4 and not convert POST requests | ||||
| into GET requests when following a 303 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 | ||||
| @@ -1306,9 +1326,40 @@ This option can be used multiple times, in which case the effect is the same | ||||
| as concatenating the protocols into one instance of the option. | ||||
|  | ||||
| (Added in 7.20.2) | ||||
| .IP "--proto-default <protocol>" | ||||
| Tells curl to use \fIprotocol\fP for any URL missing a scheme name. | ||||
|  | ||||
| Example: | ||||
|  | ||||
| .RS | ||||
| .IP "--proto-default https ftp.mozilla.org" | ||||
| https://ftp.mozilla.org | ||||
| .RE | ||||
|  | ||||
| An unknown or unsupported protocol causes error | ||||
| \fICURLE_UNSUPPORTED_PROTOCOL\fP. | ||||
|  | ||||
| This option does not change the default proxy protocol (http). | ||||
|  | ||||
| Without this option curl would make a guess based on the host, see \fI--url\fP | ||||
| for details. | ||||
|  | ||||
| (Added in 7.45.0) | ||||
| .IP "--proto-redir <protocols>" | ||||
| Tells curl to use the listed protocols after a redirect. See --proto for | ||||
| how protocols are represented. | ||||
| Tells curl to use the listed protocols on redirect. See --proto for how | ||||
| protocols are represented. | ||||
|  | ||||
| Example: | ||||
|  | ||||
| .RS | ||||
| .IP "--proto-redir -all,http,https" | ||||
| Allow only HTTP and HTTPS on redirect. | ||||
| .RE | ||||
|  | ||||
| By default curl will allow all protocols on redirect except several disabled | ||||
| for security reasons: Since 7.19.4 FILE and SCP are disabled, and since 7.40.0 | ||||
| SMB and SMBS are also disabled. Specifying \fIall\fP or \fI+all\fP enables all | ||||
| protocols on redirect, including those disabled for security. | ||||
|  | ||||
| (Added in 7.20.2) | ||||
| .IP "--proxy-anyauth" | ||||
| @@ -1423,13 +1474,10 @@ specifies the last 500 bytes | ||||
| specifies the bytes from offset 9500 and forward | ||||
| .TP | ||||
| .B 0-0,-1 | ||||
| specifies the first and last byte only(*)(H) | ||||
| .TP | ||||
| .B 500-700,600-799 | ||||
| specifies 300 bytes from offset 500(H) | ||||
| specifies the first and last byte only(*)(HTTP) | ||||
| .TP | ||||
| .B 100-199,500-599 | ||||
| specifies two separate 100-byte ranges(*)(H) | ||||
| specifies two separate 100-byte ranges(*) (HTTP) | ||||
| .RE | ||||
| .IP | ||||
| (*) = NOTE that this will cause the server to reply with a multipart | ||||
| @@ -1542,6 +1590,10 @@ and TLS1.0 protocols known as BEAST.  If this option isn't used, the SSL layer | ||||
| may use workarounds known to cause interoperability problems with some older | ||||
| SSL implementations. WARNING: this option loosens the SSL security, and by | ||||
| using this flag you ask for exactly that.  (Added in 7.25.0) | ||||
| .IP "--ssl-no-revoke" | ||||
| (WinSSL) This option tells curl to disable certificate revocation checks. | ||||
| WARNING: this option loosens the SSL security, and by using this flag you ask | ||||
| for exactly that.  (Added in 7.44.0) | ||||
| .IP "--socks4 <host[:port]>" | ||||
| Use the specified SOCKS4 proxy. If the port number is not specified, it is | ||||
| assumed at port 1080. (Added in 7.15.2) | ||||
| @@ -1751,6 +1803,12 @@ If this option is used several times, the last one will be used. | ||||
| Specify a URL to fetch. This option is mostly handy when you want to specify | ||||
| URL(s) in a config file. | ||||
|  | ||||
| If the given URL is missing a scheme name (such as "http://" or "ftp://" etc) | ||||
| then curl will make a guess based on the host. If the outermost sub-domain name | ||||
| matches DICT, FTP, IMAP, LDAP, POP3 or SMTP then that protocol will be used, | ||||
| otherwise HTTP will be used. Since 7.45.0 guessing can be disabled by setting a | ||||
| default protocol, see \fI--proto-default\fP for details. | ||||
|  | ||||
| This option may be used any number of times. To control where this URL is | ||||
| written, use the \fI-o, --output\fP or the \fI-O, --remote-name\fP options. | ||||
| .IP "-v, --verbose" | ||||
|   | ||||
							
								
								
									
										4
									
								
								docs/examples/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								docs/examples/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -73,3 +73,7 @@ smtp-vrfy | ||||
| url2file | ||||
| usercertinmem | ||||
| xmlstream | ||||
| http2-download | ||||
| http2-serverpush | ||||
| http2-upload | ||||
| imap-lsub | ||||
|   | ||||
| @@ -32,7 +32,7 @@ check_PROGRAMS = 10-at-a-time anyauthput cookie_interface debug fileupload \ | ||||
|   imap-list imap-lsub imap-fetch imap-store imap-append imap-examine       \ | ||||
|   imap-search imap-create imap-delete imap-copy imap-noop imap-ssl         \ | ||||
|   imap-tls imap-multi url2file sftpget ftpsget postinmemory http2-download \ | ||||
|   http2-upload | ||||
|   http2-upload http2-serverpush | ||||
|  | ||||
| # These examples require external dependencies that may not be commonly | ||||
| # available on POSIX systems, so don't bother attempting to compile them here. | ||||
|   | ||||
| @@ -50,7 +50,7 @@ LIBRTMP_PATH = ../../../librtmp-2.4 | ||||
| endif | ||||
| # Edit the path below to point to the base of your libidn package. | ||||
| ifndef LIBIDN_PATH | ||||
| LIBIDN_PATH = ../../../libidn-1.30 | ||||
| LIBIDN_PATH = ../../../libidn-1.32 | ||||
| endif | ||||
| # Edit the path below to point to the base of your MS IDN package. | ||||
| # Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.1 | ||||
|   | ||||
| @@ -34,7 +34,7 @@ endif | ||||
|  | ||||
| # Edit the path below to point to the base of your libidn package. | ||||
| ifndef LIBIDN_PATH | ||||
| LIBIDN_PATH = ../../../libidn-1.30 | ||||
| LIBIDN_PATH = ../../../libidn-1.32 | ||||
| endif | ||||
|  | ||||
| # Edit the path below to point to the base of your librtmp package. | ||||
|   | ||||
| @@ -32,51 +32,7 @@ actually torture our web site with your tests!  Thanks. | ||||
|  | ||||
| EXAMPLES | ||||
|  | ||||
| anyauthput.c   - HTTP PUT using "any" authentication method | ||||
| cacertinmem.c  - Use a built-in PEM certificate to retrieve a https page | ||||
| cookie_interface.c - shows usage of simple cookie interface | ||||
| curlgtk.c      - download using a GTK progress bar | ||||
| curlx.c        - getting file info from the remote cert data | ||||
| debug.c        - showing how to use the debug callback | ||||
| fileupload.c   - uploading to a file:// URL | ||||
| fopen.c        - fopen() layer that supports opening URLs and files | ||||
| ftpget.c       - simple getting a file from FTP | ||||
| ftpgetresp.c   - get the response strings from the FTP server | ||||
| ftpupload.c    - upload a file to an FTP server | ||||
| ftpuploadresume.c - resume an upload to an FTP server | ||||
| getinfo.c      - get the Content-Type from the recent transfer | ||||
| getinmemory.c  - download a file to memory only | ||||
| ghiper.c       - curl_multi_socket() using code with glib-2 | ||||
| hiperfifo.c    - downloads all URLs written to the fifo, using | ||||
|                  curl_multi_socket() and libevent | ||||
| htmltidy.c     - download a document and use libtidy to parse the HTML | ||||
| htmltitle.cc   - download a HTML file and extract the <title> tag from a HTML | ||||
|                  page using libxml | ||||
| http-post.c    - HTTP POST | ||||
| httpput.c      - HTTP PUT a local file | ||||
| https.c        - simple HTTPS transfer | ||||
| imap.c         - simple IMAP transfer | ||||
| multi-app.c    - a multi-interface app | ||||
| multi-debugcallback.c - a multi-interface app using the debug callback | ||||
| multi-double.c - a multi-interface app doing two simultaneous transfers | ||||
| multi-post.c   - a multi-interface app doing a multipart formpost | ||||
| multi-single.c - a multi-interface app getting a single file | ||||
| multi-uv.c     - a multi-interface app using libuv | ||||
| multithread.c  - an example using multi-treading transferring multiple files | ||||
| opensslthreadlock.c - show how to do locking when using OpenSSL multi-threaded | ||||
| persistant.c   - request two URLs with a persistent connection | ||||
| pop3s.c        - POP3S transfer | ||||
| pop3slist.c    - POP3S LIST | ||||
| post-callback.c - send a HTTP POST using a callback | ||||
| postit2.c      - send a HTTP multipart formpost | ||||
| sampleconv.c   - showing how a program on a non-ASCII platform would invoke | ||||
|                  callbacks to do its own codeset conversions instead of using | ||||
|                  the built-in iconv functions in libcurl | ||||
| sepheaders.c   - download headers to a separate file | ||||
| simple.c       - the most simple download a URL source | ||||
| simplepost.c   - HTTP POST | ||||
| simplessl.c    - HTTPS example with certificates many options set | ||||
| synctime.c     - Sync local time by extracting date from remote HTTP servers | ||||
| url2file.c     - download a document and store it in a file | ||||
| xmlstream.c    - Stream-parse a document using the streaming Expat parser | ||||
| 10-at-a-time.c - Download many files simultaneously, 10 at a time. | ||||
| Each example source code file is designed to be and work stand-alone and | ||||
| rather self-explanatory. The examples may at times lack the level of error | ||||
| checks you need in a real world, but that is then only for the sake of | ||||
| readability: to make the code smaller and easier to follow. | ||||
|   | ||||
| @@ -330,7 +330,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 - 2015, 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 | ||||
| @@ -19,8 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| // Get a web page, parse it with libxml. | ||||
| // | ||||
| /* <DESC> | ||||
|  * Get a web page, extract the title with libxml. | ||||
|  * </DESC> | ||||
|  */ | ||||
| // Written by Lars Nilsson | ||||
| // | ||||
| // GNU C++ compile command line suggestion (edit paths accordingly): | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * simple HTTP POST using the easy interface | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -19,8 +19,13 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * Multiplexed HTTP/2 downloads over a single connection | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| /* somewhat unix-specific */ | ||||
| #include <sys/time.h> | ||||
|   | ||||
							
								
								
									
										318
									
								
								docs/examples/http2-serverpush.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										318
									
								
								docs/examples/http2-serverpush.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,318 @@ | ||||
| /*************************************************************************** | ||||
|  *                                  _   _ ____  _ | ||||
|  *  Project                     ___| | | |  _ \| | | ||||
|  *                             / __| | | | |_) | | | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2015, 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. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * HTTP/2 server push | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
|  | ||||
| /* somewhat unix-specific */ | ||||
| #include <sys/time.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| /* curl stuff */ | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| #ifndef CURLPIPE_MULTIPLEX | ||||
| #error "too old libcurl, can't do HTTP/2 server push!" | ||||
| #endif | ||||
|  | ||||
| static | ||||
| void dump(const char *text, unsigned char *ptr, size_t size, | ||||
|           char nohex) | ||||
| { | ||||
|   size_t i; | ||||
|   size_t c; | ||||
|  | ||||
|   unsigned int width=0x10; | ||||
|  | ||||
|   if(nohex) | ||||
|     /* without the hex output, we can fit more on screen */ | ||||
|     width = 0x40; | ||||
|  | ||||
|   fprintf(stderr, "%s, %ld bytes (0x%lx)\n", | ||||
|           text, (long)size, (long)size); | ||||
|  | ||||
|   for(i=0; i<size; i+= width) { | ||||
|  | ||||
|     fprintf(stderr, "%4.4lx: ", (long)i); | ||||
|  | ||||
|     if(!nohex) { | ||||
|       /* hex not disabled, show it */ | ||||
|       for(c = 0; c < width; c++) | ||||
|         if(i+c < size) | ||||
|           fprintf(stderr, "%02x ", ptr[i+c]); | ||||
|         else | ||||
|           fputs("   ", stderr); | ||||
|     } | ||||
|  | ||||
|     for(c = 0; (c < width) && (i+c < size); c++) { | ||||
|       /* check for 0D0A; if found, skip past and start a new line of output */ | ||||
|       if (nohex && (i+c+1 < size) && ptr[i+c]==0x0D && ptr[i+c+1]==0x0A) { | ||||
|         i+=(c+2-width); | ||||
|         break; | ||||
|       } | ||||
|       fprintf(stderr, "%c", | ||||
|               (ptr[i+c]>=0x20) && (ptr[i+c]<0x80)?ptr[i+c]:'.'); | ||||
|       /* check again for 0D0A, to avoid an extra \n if it's at width */ | ||||
|       if (nohex && (i+c+2 < size) && ptr[i+c+1]==0x0D && ptr[i+c+2]==0x0A) { | ||||
|         i+=(c+3-width); | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|     fputc('\n', stderr); /* newline */ | ||||
|   } | ||||
| } | ||||
|  | ||||
| static | ||||
| int my_trace(CURL *handle, curl_infotype type, | ||||
|              char *data, size_t size, | ||||
|              void *userp) | ||||
| { | ||||
|   const char *text; | ||||
|   (void)handle; /* prevent compiler warning */ | ||||
|   (void)userp; | ||||
|   switch (type) { | ||||
|   case CURLINFO_TEXT: | ||||
|     fprintf(stderr, "== Info: %s", data); | ||||
|   default: /* in case a new one is introduced to shock us */ | ||||
|     return 0; | ||||
|  | ||||
|   case CURLINFO_HEADER_OUT: | ||||
|     text = "=> Send header"; | ||||
|     break; | ||||
|   case CURLINFO_DATA_OUT: | ||||
|     text = "=> Send data"; | ||||
|     break; | ||||
|   case CURLINFO_SSL_DATA_OUT: | ||||
|     text = "=> Send SSL data"; | ||||
|     break; | ||||
|   case CURLINFO_HEADER_IN: | ||||
|     text = "<= Recv header"; | ||||
|     break; | ||||
|   case CURLINFO_DATA_IN: | ||||
|     text = "<= Recv data"; | ||||
|     break; | ||||
|   case CURLINFO_SSL_DATA_IN: | ||||
|     text = "<= Recv SSL data"; | ||||
|     break; | ||||
|   } | ||||
|  | ||||
|   dump(text, (unsigned char *)data, size, 1); | ||||
|   return 0; | ||||
| } | ||||
|  | ||||
| static void setup(CURL *hnd) | ||||
| { | ||||
|   FILE *out = fopen("dl", "wb"); | ||||
|  | ||||
|   /* write to this file */ | ||||
|   curl_easy_setopt(hnd, CURLOPT_WRITEDATA, out); | ||||
|  | ||||
|   /* set the same URL */ | ||||
|   curl_easy_setopt(hnd, CURLOPT_URL, "https://localhost:8443/index.html"); | ||||
|  | ||||
|   /* send it verbose for max debuggaility */ | ||||
|   curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L); | ||||
|   curl_easy_setopt(hnd, CURLOPT_DEBUGFUNCTION, my_trace); | ||||
|  | ||||
|   /* HTTP/2 please */ | ||||
|   curl_easy_setopt(hnd, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); | ||||
|  | ||||
|   /* we use a self-signed test server, skip verification during debugging */ | ||||
|   curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYPEER, 0L); | ||||
|   curl_easy_setopt(hnd, CURLOPT_SSL_VERIFYHOST, 0L); | ||||
|  | ||||
| #if (CURLPIPE_MULTIPLEX > 0) | ||||
|   /* wait for pipe connection to confirm */ | ||||
|   curl_easy_setopt(hnd, CURLOPT_PIPEWAIT, 1L); | ||||
| #endif | ||||
|  | ||||
| } | ||||
|  | ||||
| /* called when there's an incoming push */ | ||||
| static int server_push_callback(CURL *parent, | ||||
|                                 CURL *easy, | ||||
|                                 size_t num_headers, | ||||
|                                 struct curl_pushheaders *headers, | ||||
|                                 void *userp) | ||||
| { | ||||
|   char *headp; | ||||
|   size_t i; | ||||
|   int *transfers = (int *)userp; | ||||
|   char filename[128]; | ||||
|   FILE *out; | ||||
|   static unsigned int count = 0; | ||||
|  | ||||
|   (void)parent; /* we have no use for this */ | ||||
|  | ||||
|   sprintf(filename, "push%u", count++); | ||||
|  | ||||
|   /* here's a new stream, save it in a new file for each new push */ | ||||
|   out = fopen(filename, "wb"); | ||||
|  | ||||
|   /* write to this file */ | ||||
|   curl_easy_setopt(easy, CURLOPT_WRITEDATA, out); | ||||
|  | ||||
|   fprintf(stderr, "**** push callback approves stream %u, got %d headers!\n", | ||||
|           count, (int)num_headers); | ||||
|  | ||||
|   for(i=0; i<num_headers; i++) { | ||||
|     headp = curl_pushheader_bynum(headers, i); | ||||
|     fprintf(stderr, "**** header %u: %s\n", (int)i, headp); | ||||
|   } | ||||
|  | ||||
|   headp = curl_pushheader_byname(headers, ":path"); | ||||
|   if(headp) { | ||||
|     fprintf(stderr, "**** The PATH is %s\n", headp /* skip :path + colon */ ); | ||||
|   } | ||||
|  | ||||
|   (*transfers)++; /* one more */ | ||||
|   return CURL_PUSH_OK; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Download a file over HTTP/2, take care of server push. | ||||
|  */ | ||||
| int main(void) | ||||
| { | ||||
|   CURL *easy; | ||||
|   CURLM *multi_handle; | ||||
|   int still_running; /* keep number of running handles */ | ||||
|   int transfers=1; /* we start with one */ | ||||
|   struct CURLMsg *m; | ||||
|  | ||||
|   /* init a multi stack */ | ||||
|   multi_handle = curl_multi_init(); | ||||
|  | ||||
|   easy = curl_easy_init(); | ||||
|  | ||||
|   /* set options */ | ||||
|   setup(easy); | ||||
|  | ||||
|   /* add the easy transfer */ | ||||
|   curl_multi_add_handle(multi_handle, easy); | ||||
|  | ||||
|   curl_multi_setopt(multi_handle, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX); | ||||
|   curl_multi_setopt(multi_handle, CURLMOPT_PUSHFUNCTION, server_push_callback); | ||||
|   curl_multi_setopt(multi_handle, CURLMOPT_PUSHDATA, &transfers); | ||||
|  | ||||
|   /* we start some action by calling perform right away */ | ||||
|   curl_multi_perform(multi_handle, &still_running); | ||||
|  | ||||
|   do { | ||||
|     struct timeval timeout; | ||||
|     int rc; /* select() return code */ | ||||
|     CURLMcode mc; /* curl_multi_fdset() return code */ | ||||
|  | ||||
|     fd_set fdread; | ||||
|     fd_set fdwrite; | ||||
|     fd_set fdexcep; | ||||
|     int maxfd = -1; | ||||
|  | ||||
|     long curl_timeo = -1; | ||||
|  | ||||
|     FD_ZERO(&fdread); | ||||
|     FD_ZERO(&fdwrite); | ||||
|     FD_ZERO(&fdexcep); | ||||
|  | ||||
|     /* set a suitable timeout to play around with */ | ||||
|     timeout.tv_sec = 1; | ||||
|     timeout.tv_usec = 0; | ||||
|  | ||||
|     curl_multi_timeout(multi_handle, &curl_timeo); | ||||
|     if(curl_timeo >= 0) { | ||||
|       timeout.tv_sec = curl_timeo / 1000; | ||||
|       if(timeout.tv_sec > 1) | ||||
|         timeout.tv_sec = 1; | ||||
|       else | ||||
|         timeout.tv_usec = (curl_timeo % 1000) * 1000; | ||||
|     } | ||||
|  | ||||
|     /* get file descriptors from the transfers */ | ||||
|     mc = curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd); | ||||
|  | ||||
|     if(mc != CURLM_OK) { | ||||
|       fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     /* On success the value of maxfd is guaranteed to be >= -1. We call | ||||
|        select(maxfd + 1, ...); specially in case of (maxfd == -1) there are | ||||
|        no fds ready yet so we call select(0, ...) --or Sleep() on Windows-- | ||||
|        to sleep 100ms, which is the minimum suggested value in the | ||||
|        curl_multi_fdset() doc. */ | ||||
|  | ||||
|     if(maxfd == -1) { | ||||
| #ifdef _WIN32 | ||||
|       Sleep(100); | ||||
|       rc = 0; | ||||
| #else | ||||
|       /* Portable sleep for platforms other than Windows. */ | ||||
|       struct timeval wait = { 0, 100 * 1000 }; /* 100ms */ | ||||
|       rc = select(0, NULL, NULL, NULL, &wait); | ||||
| #endif | ||||
|     } | ||||
|     else { | ||||
|       /* Note that on some platforms 'timeout' may be modified by select(). | ||||
|          If you need access to the original value save a copy beforehand. */ | ||||
|       rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout); | ||||
|     } | ||||
|  | ||||
|     switch(rc) { | ||||
|     case -1: | ||||
|       /* select error */ | ||||
|       break; | ||||
|     case 0: | ||||
|     default: | ||||
|       /* timeout or readable/writable sockets */ | ||||
|       curl_multi_perform(multi_handle, &still_running); | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|     /* | ||||
|      * A little caution when doing server push is that libcurl itself has | ||||
|      * created and added one or more easy handles but we need to clean them up | ||||
|      * when we are done. | ||||
|      */ | ||||
|  | ||||
|     do { | ||||
|       int msgq = 0;; | ||||
|       m = curl_multi_info_read(multi_handle, &msgq); | ||||
|       if(m && (m->msg == CURLMSG_DONE)) { | ||||
|         CURL *e = m->easy_handle; | ||||
|         transfers--; | ||||
|         curl_multi_remove_handle(multi_handle, e); | ||||
|         curl_easy_cleanup(e); | ||||
|       } | ||||
|     } while(m); | ||||
|  | ||||
|   } while(transfers); /* as long as we have transfers going */ | ||||
|  | ||||
|   curl_multi_cleanup(multi_handle); | ||||
|  | ||||
|  | ||||
|   return 0; | ||||
| } | ||||
| @@ -19,8 +19,13 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * Multiplexed HTTP/2 uploads over a single connection | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <fcntl.h> | ||||
| #include <sys/stat.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * HTTP request with custom modified, removed and added headers | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * HTTP PUT with easy interface and read callback | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <fcntl.h> | ||||
| #include <sys/stat.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * Simple HTTPS GET | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to send e-mails | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to copy an e-mail from one folder to another | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to create a new folder | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to delete a folder | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to obtain information about a folder | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to retreieve e-mails | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example to list the folders within a mailbox | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example to list the subscribed folders | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,7 +19,14 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example using the multi interface | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| /* This is a simple example showing how to fetch mail using libcurl's IMAP | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to perform a noop | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to search for new e-mails | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example using SSL | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example showing how to modify the properties of an e-mail | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * IMAP example using TLS | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -19,10 +19,6 @@ | ||||
| # KIND, either express or implied. | ||||
| # | ||||
| ########################################################################### | ||||
| # | ||||
| #  Adapted for djgpp / Watt-32 / DOS by | ||||
| #  Gisle Vanem <gvanem@broadpark.no> | ||||
| # | ||||
|  | ||||
| TOPDIR = ../.. | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,7 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* This is an example showing the multi interface and the debug callback. */ | ||||
| /* <DESC> | ||||
|  * multi interface and debug callback | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * multi interface code doing two parallel HTTP transfers | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,8 +19,11 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* This is an example application source code using the multi interface | ||||
|  * to do a multipart formpost without "blocking". */ | ||||
| /* <DESC> | ||||
|  * using the multi interface to do a multipart formpost without blocking | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <sys/time.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,7 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* This is a very simple example using the multi interface. */ | ||||
| /* <DESC> | ||||
|  * using the multi interface to do a single download | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| @@ -76,7 +79,7 @@ int main(void) | ||||
|  | ||||
|     if(mc != CURLM_OK) | ||||
|     { | ||||
|       fprintf(stderr, "curl_multi_fdset() failed, code %d.\n", mc); | ||||
|       fprintf(stderr, "curl_multi_wait() failed, code %d.\n", mc); | ||||
|       break; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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,6 +20,10 @@ | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * multi_socket API using libuv | ||||
|  * </DESC> | ||||
|  */ | ||||
| /* Example application code using the multi socket interface to download | ||||
|    multiple files at once, but instead of using curl_multi_perform and | ||||
|    curl_multi_wait, which uses select(), we use libuv. | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,8 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* A multi-threaded example that uses pthreads extensively to fetch | ||||
|  * X remote files at once */ | ||||
| /* <DESC> | ||||
|  * A multi-threaded example that uses pthreads to fetch several files at once | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <pthread.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,16 +19,17 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* Example source code to show one way to set the necessary OpenSSL locking | ||||
|  * callbacks if you want to do multi-threaded transfers with HTTPS/FTPS with | ||||
|  * libcurl built to use OpenSSL. | ||||
|  * | ||||
| /* <DESC> | ||||
|  * one way to set the necessary OpenSSL locking callbacks if you want to do | ||||
|  * multi-threaded transfers with HTTPS/FTPS with libcurl built to use OpenSSL. | ||||
|  * </DESC> | ||||
|  */ | ||||
| /* | ||||
|  * This is not a complete stand-alone example. | ||||
|  * | ||||
|  * Author: Jeremy Brown | ||||
|  */ | ||||
|  | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <pthread.h> | ||||
| #include <openssl/err.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* <DESC> | ||||
|  * re-using handles to do HTTP persistent connections | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <unistd.h> | ||||
| #include <curl/curl.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example showing how to delete e-mails | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example to list the contents of a mailbox | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,7 +19,14 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example using the multi interface | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| /* This is a simple example showing how to retrieve mail using libcurl's POP3 | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example showing how to perform a noop | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example showing how to retrieve e-mails | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example using SSL | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example showing how to obtain message statistics | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example using TLS | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example showing how to retreive only the headers of an e-mail | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * POP3 example to list the contents of a mailbox by unique ID | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,8 +19,10 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
| /* An example source code that issues a HTTP POST and we provide the actual | ||||
| /* <DESC> | ||||
|  * An example source code that issues a HTTP POST and we provide the actual | ||||
|  * data through a read callback. | ||||
|  * </DESC> | ||||
|  */ | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,11 +19,17 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * SMTP example showing how to expand an e-mail mailing list | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| /* This is a simple example showing how to expand an email mailing list. | ||||
| /* This is a simple example showing how to expand an e-mail mailing list. | ||||
|  * | ||||
|  * Notes: | ||||
|  * | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * SMTP example showing how to send e-mails | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * SMTP example using the multi interface | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * SMTP example using SSL | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,6 +19,12 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * SMTP example using TLS | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
|  *                            | (__| |_| |  _ <| |___ | ||||
|  *                             \___|\___/|_| \_\_____| | ||||
|  * | ||||
|  * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
|  * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -19,11 +19,17 @@ | ||||
|  * KIND, either express or implied. | ||||
|  * | ||||
|  ***************************************************************************/ | ||||
|  | ||||
| /* <DESC> | ||||
|  * SMTP example showing how to verify an e-mail address | ||||
|  * </DESC> | ||||
|  */ | ||||
|  | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <curl/curl.h> | ||||
|  | ||||
| /* This is a simple example showing how to verify an email address from an | ||||
| /* This is a simple example showing how to verify an e-mail address from an | ||||
|  * SMTP server. | ||||
|  * | ||||
|  * Notes: | ||||
|   | ||||
| @@ -1,19 +1,11 @@ | ||||
|                                   _   _ ____  _ | ||||
|                               ___| | | |  _ \| | | ||||
|                              / __| | | | |_) | | | ||||
|                             | (__| |_| |  _ <| |___ | ||||
|                              \___|\___/|_| \_\_____| | ||||
|  | ||||
|                           libcurl's binary interface | ||||
|  | ||||
| ABI - Application Binary Interface | ||||
| ---------------------------------- | ||||
| ================================== | ||||
|  | ||||
|  "ABI" describes the low-level interface between an application program and a | ||||
|  library. Calling conventions, function arguments, return values, struct | ||||
|  sizes/defines and more. | ||||
|  | ||||
|   [Wikipedia has a longer description](http://en.wikipedia.org/wiki/Application_binary_interface) | ||||
|  [Wikipedia has a longer description](https://en.wikipedia.org/wiki/Application_binary_interface) | ||||
|  | ||||
| Upgrades | ||||
| -------- | ||||
| @@ -21,9 +13,9 @@ Upgrades | ||||
|  In the vast majority of all cases, a typical libcurl upgrade does not break | ||||
|  the ABI at all. Your application can remain using libcurl just as before, | ||||
|  only with less bugs and possibly with added new features. You need to read | ||||
|   the release notes, and if they mention an ABI break/soname bump, you may | ||||
|   have to verify that your application still builds fine and uses libcurl as | ||||
|   it now is defined to work. | ||||
|  the release notes, and if they mention an ABI break/soname bump, you may have | ||||
|  to verify that your application still builds fine and uses libcurl as it now | ||||
|  is defined to work. | ||||
|  | ||||
| Version Numbers | ||||
| --------------- | ||||
| @@ -54,9 +46,9 @@ Downgrades | ||||
|  Going to an older libcurl version from one you're currently using can be a | ||||
|  tricky thing. Mostly we add features and options to newer libcurls as that | ||||
|  won't break ABI or hamper existing applications. This has the implication | ||||
|   that going backwards may get you in a situation where you pick a libcurl | ||||
|   that doesn't support the options your application needs. Or possibly you | ||||
|   even downgrade so far so you cross an ABI break border and thus a different | ||||
|  that going backwards may get you in a situation where you pick a libcurl that | ||||
|  doesn't support the options your application needs. Or possibly you even | ||||
|  downgrade so far so you cross an ABI break border and thus a different | ||||
|  soname, and then your application may need to adapt to the modified ABI. | ||||
|  | ||||
| History | ||||
|   | ||||
| @@ -29,18 +29,19 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3	 \ | ||||
|  curl_formadd.3 curl_formfree.3 curl_getdate.3 curl_getenv.3		 \ | ||||
|  curl_slist_append.3 curl_slist_free_all.3 curl_version.3		 \ | ||||
|  curl_version_info.3 curl_escape.3 curl_unescape.3 curl_free.3		 \ | ||||
|  curl_strequal.3 curl_mprintf.3 curl_global_init.3 curl_global_cleanup.3 \ | ||||
|  curl_multi_add_handle.3 curl_multi_cleanup.3 curl_multi_fdset.3	 \ | ||||
|  curl_multi_info_read.3 curl_multi_init.3 curl_multi_perform.3		 \ | ||||
|  curl_multi_remove_handle.3 curl_share_cleanup.3 curl_share_init.3	 \ | ||||
|  curl_share_setopt.3 libcurl.3 libcurl-easy.3 libcurl-multi.3		 \ | ||||
|  libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3			 \ | ||||
|  curl_strequal.3 curl_mprintf.3 curl_global_init.3			 \ | ||||
|  curl_global_cleanup.3 curl_multi_add_handle.3 curl_multi_cleanup.3	 \ | ||||
|  curl_multi_fdset.3 curl_multi_info_read.3 curl_multi_init.3		 \ | ||||
|  curl_multi_perform.3 curl_multi_remove_handle.3 curl_share_cleanup.3	 \ | ||||
|  curl_share_init.3 curl_share_setopt.3 libcurl.3 libcurl-easy.3 	 \ | ||||
|  libcurl-multi.3 libcurl-share.3 libcurl-errors.3 curl_easy_strerror.3	 \ | ||||
|  curl_multi_strerror.3 curl_share_strerror.3 curl_global_init_mem.3	 \ | ||||
|  libcurl-tutorial.3 curl_easy_reset.3 curl_easy_escape.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_wait.3 libcurl-symbols.3 | ||||
|  curl_multi_socket_action.3 curl_multi_wait.3 libcurl-symbols.3 	 \ | ||||
|  libcurl-thread.3 | ||||
|  | ||||
| HTMLPAGES = curl_easy_cleanup.html curl_easy_getinfo.html		\ | ||||
|  curl_easy_init.html curl_easy_perform.html curl_easy_setopt.html	\ | ||||
| @@ -60,7 +61,8 @@ 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_wait.html libcurl-symbols.html | ||||
|  curl_multi_socket_action.html curl_multi_wait.html			\ | ||||
|  libcurl-symbols.html libcurl-thread.html | ||||
|  | ||||
| PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf			 \ | ||||
|  curl_easy_init.pdf curl_easy_perform.pdf curl_easy_setopt.pdf		 \ | ||||
| @@ -71,16 +73,16 @@ PDFPAGES = curl_easy_cleanup.pdf curl_easy_getinfo.pdf			 \ | ||||
|  curl_mprintf.pdf curl_global_init.pdf curl_global_cleanup.pdf		 \ | ||||
|  curl_multi_add_handle.pdf curl_multi_cleanup.pdf curl_multi_fdset.pdf	 \ | ||||
|  curl_multi_info_read.pdf curl_multi_init.pdf curl_multi_perform.pdf	 \ | ||||
|  curl_multi_remove_handle.pdf curl_share_cleanup.pdf curl_share_init.pdf \ | ||||
|  curl_share_setopt.pdf libcurl.pdf libcurl-multi.pdf libcurl-easy.pdf	 \ | ||||
|  libcurl-share.pdf libcurl-errors.pdf curl_easy_strerror.pdf		 \ | ||||
|  curl_multi_strerror.pdf curl_share_strerror.pdf			 \ | ||||
|  curl_global_init_mem.pdf libcurl-tutorial.pdf curl_easy_reset.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_multi_wait.pdf     \ | ||||
|  libcurl-symbols.pdf | ||||
|  curl_multi_remove_handle.pdf curl_share_cleanup.pdf			 \ | ||||
|  curl_share_init.pdf curl_share_setopt.pdf libcurl.pdf			 \ | ||||
|  libcurl-multi.pdf libcurl-easy.pdf libcurl-share.pdf			 \ | ||||
|  libcurl-errors.pdf curl_easy_strerror.pdf curl_multi_strerror.pdf	 \ | ||||
|  curl_share_strerror.pdf curl_global_init_mem.pdf libcurl-tutorial.pdf	 \ | ||||
|  curl_easy_reset.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_multi_wait.pdf libcurl-symbols.pdf libcurl-thread.pdf | ||||
|  | ||||
| m4macrodir = $(datadir)/aclocal | ||||
| dist_m4macro_DATA = libcurl.m4 | ||||
| @@ -97,13 +99,13 @@ libcurl-symbols.3: $(srcdir)/symbols-in-versions $(srcdir)/mksymbolsmanpage.pl | ||||
| 	perl $(srcdir)/mksymbolsmanpage.pl < $(srcdir)/symbols-in-versions > $@ | ||||
|  | ||||
| html: $(HTMLPAGES) | ||||
| 	cd opts; make html | ||||
| 	cd opts && make html | ||||
|  | ||||
| .3.html: | ||||
| 	$(MAN2HTML) | ||||
|  | ||||
| pdf: $(PDFPAGES) | ||||
| 	cd opts; make pdf | ||||
| 	cd opts && make pdf | ||||
|  | ||||
| .3.pdf: | ||||
| 	@(foo=`echo $@ | sed -e 's/\.[0-9]$$//g'`; \ | ||||
|   | ||||
| @@ -26,7 +26,8 @@ curl_easy_escape - URL encodes the given string | ||||
| .SH SYNOPSIS | ||||
| .B #include <curl/curl.h> | ||||
| .sp | ||||
| .BI "char *curl_easy_escape( CURL *" curl ", char *" string ", int "length " );" | ||||
| .BI "char *curl_easy_escape( CURL *" curl ", const char *" string | ||||
| .BI ", int "length " );" | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| This function converts the given input \fIstring\fP to a URL encoded string | ||||
| @@ -48,10 +49,10 @@ CURL *curl = curl_easy_init(); | ||||
| if(curl) { | ||||
|   char *output = curl_easy_escape(curl, "data to convert", 15); | ||||
|   if(output) { | ||||
|     printf("Encoded: %s\n", output); | ||||
|     printf("Encoded: %s\\n", output); | ||||
|     curl_free(output); | ||||
|   } | ||||
| }} | ||||
| } | ||||
| .fi | ||||
| .SH "SEE ALSO" | ||||
| .BR curl_easy_unescape "(3), " curl_free "(3), " RFC 3986 | ||||
|   | ||||
| @@ -34,256 +34,190 @@ third argument \fBMUST\fP be a pointer to a long, a pointer to a char *, a | ||||
| pointer to a struct curl_slist * or a pointer to a double (as this | ||||
| documentation describes further down).  The data pointed-to will be filled in | ||||
| accordingly and can be relied upon only if the function returns CURLE_OK.  Use | ||||
| this function AFTER a performed transfer if you want to get transfer- oriented | ||||
| this function AFTER a performed transfer if you want to get transfer related | ||||
| data. | ||||
|  | ||||
| You should not free the memory returned by this function unless it is | ||||
| explicitly mentioned below. | ||||
| .SH AVAILABLE INFORMATION | ||||
| The following information can be extracted: | ||||
|  | ||||
| .IP CURLINFO_EFFECTIVE_URL | ||||
| Pass a pointer to a char pointer to receive the last used effective URL. | ||||
| Last used URL. | ||||
| See \fICURLINFO_EFFECTIVE_URL(3)\fP | ||||
|  | ||||
| .IP CURLINFO_RESPONSE_CODE | ||||
| Pass a pointer to a long to receive the last received HTTP, FTP or SMTP | ||||
| response code. This option was previously known as CURLINFO_HTTP_CODE in | ||||
| libcurl 7.10.7 and earlier. The value will be zero if no server response code | ||||
| has been received. Note that a proxy's CONNECT response should be read with | ||||
| \fICURLINFO_HTTP_CONNECTCODE\fP and not this. | ||||
| Last received response code. | ||||
| See \fICURLINFO_RESPONSE_CODE(3)\fP | ||||
|  | ||||
| Support for SMTP responses added in 7.25.0. | ||||
| .IP CURLINFO_HTTP_CONNECTCODE | ||||
| Pass a pointer to a long to receive the last received proxy response code to a | ||||
| CONNECT request. | ||||
| Last proxy CONNECT response code. | ||||
| See \fICURLINFO_HTTP_CONNECTCODE(3)\fP | ||||
|  | ||||
| .IP CURLINFO_FILETIME | ||||
| Pass a pointer to a long to receive the remote time of the retrieved document | ||||
| (in number of seconds since 1 jan 1970 in the GMT/UTC time zone). If you get | ||||
| -1, it can be because of many reasons (unknown, the server hides it or the | ||||
| server doesn't support the command that tells document time etc) and the time | ||||
| of the document is unknown. Note that you must tell the server to collect this | ||||
| information before the transfer is made, by using the | ||||
| \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or you will | ||||
| unconditionally get a -1 back. (Added in 7.5) | ||||
| Remote time of the retrieved document. | ||||
| See \fICURLINFO_FILETIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_TOTAL_TIME | ||||
| Pass a pointer to a double to receive the total time in seconds for the | ||||
| previous transfer, including name resolving, TCP connect etc. | ||||
| Total time of previous transfer. | ||||
| See \fICURLINFO_TOTAL_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_NAMELOOKUP_TIME | ||||
| Pass a pointer to a double to receive the time, in seconds, it took from the | ||||
| start until the name resolving was completed. | ||||
| Time from start until name resolving completed. | ||||
| See \fICURLINFO_NAMELOOKUP_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_CONNECT_TIME | ||||
| Pass a pointer to a double to receive the time, in seconds, it took from the | ||||
| start until the connect to the remote host (or proxy) was completed. | ||||
| Time from start until remote host or proxy completed. | ||||
| See \fICURLINFO_CONNECT_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_APPCONNECT_TIME | ||||
| Pass a pointer to a double to receive the time, in seconds, it took from the | ||||
| start until the SSL/SSH connect/handshake to the remote host was completed. | ||||
| This time is most often very near to the PRETRANSFER time, except for cases | ||||
| such as HTTP pipelining where the pretransfer time can be delayed due to waits | ||||
| in line for the pipeline and more. (Added in 7.19.0) | ||||
| Time from start until SSL/SSH handshake completed. | ||||
| See \fICURLINFO_APPCONNECT_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_PRETRANSFER_TIME | ||||
| Pass a pointer to a double to receive the time, in seconds, it took from the | ||||
| start until the file transfer is just about to begin. This includes all | ||||
| pre-transfer commands and negotiations that are specific to the particular | ||||
| protocol(s) involved. It does \fInot\fP involve the sending of the protocol- | ||||
| specific request that triggers a transfer. | ||||
| Time from start until just before the transfer begins. | ||||
| See \fICURLINFO_PRETRANSFER_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_STARTTRANSFER_TIME | ||||
| Pass a pointer to a double to receive the time, in seconds, it took from the | ||||
| start until the first byte is received by libcurl. This includes | ||||
| CURLINFO_PRETRANSFER_TIME and also the time the server needs to calculate the | ||||
| result. | ||||
| Time from start until just when the first byte is received. | ||||
| See \fICURLINFO_STARTTRANSFER_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_REDIRECT_TIME | ||||
| Pass a pointer to a double to receive the total time, in seconds, it took for | ||||
| all redirection steps include name lookup, connect, pretransfer and transfer | ||||
| before final transaction was started. CURLINFO_REDIRECT_TIME contains the | ||||
| complete execution time for multiple redirections.  (Added in 7.9.7) | ||||
| Time taken for all redirect steps before the final transfer. | ||||
| See \fICURLINFO_REDIRECT_TIME(3)\fP | ||||
|  | ||||
| .IP CURLINFO_REDIRECT_COUNT | ||||
| Pass a pointer to a long to receive the total number of redirections that were | ||||
| actually followed.  (Added in 7.9.7) | ||||
| Total number of redirects that were followed. | ||||
| See \fICURLINFO_REDIRECT_COUNT(3)\fP | ||||
|  | ||||
| .IP CURLINFO_REDIRECT_URL | ||||
| Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP | ||||
| take you to if you would enable \fICURLOPT_FOLLOWLOCATION(3)\fP. This can come | ||||
| very handy if you think using the built-in libcurl redirect logic isn't good | ||||
| enough for you but you would still prefer to avoid implementing all the magic | ||||
| of figuring out the new URL. (Added in 7.18.2) | ||||
| URL a redirect would take you to, had you enabled redirects. | ||||
| See \fICURLINFO_REDIRECT_URL(3)\fP | ||||
|  | ||||
| .IP CURLINFO_SIZE_UPLOAD | ||||
| Pass a pointer to a double to receive the total amount of bytes that were | ||||
| uploaded. | ||||
| Number of bytes uploaded. | ||||
| See \fICURLINFO_SIZE_UPLOAD(3)\fP | ||||
|  | ||||
| .IP CURLINFO_SIZE_DOWNLOAD | ||||
| Pass a pointer to a double to receive the total amount of bytes that were | ||||
| downloaded. The amount is only for the latest transfer and will be reset again | ||||
| for each new transfer. This counts actual payload data, what's also commonly | ||||
| called body. All meta and header data are excluded and will not be counted in | ||||
| this number. | ||||
| Number of bytes downloaded. | ||||
| See \fICURLINFO_SIZE_DOWNLOAD(3)\fP | ||||
|  | ||||
| .IP CURLINFO_SPEED_DOWNLOAD | ||||
| Pass a pointer to a double to receive the average download speed that curl | ||||
| measured for the complete download. Measured in bytes/second. | ||||
| Average download speed. | ||||
| See \fICURLINFO_SPEED_DOWNLOAD(3)\fP | ||||
|  | ||||
| .IP CURLINFO_SPEED_UPLOAD | ||||
| Pass a pointer to a double to receive the average upload speed that curl | ||||
| measured for the complete upload. Measured in bytes/second. | ||||
| Average upload speed. | ||||
| See \fICURLINFO_SPEED_UPLOAD(3)\fP | ||||
|  | ||||
| .IP CURLINFO_HEADER_SIZE | ||||
| Pass a pointer to a long to receive the total size of all the headers | ||||
| received. Measured in number of bytes. | ||||
| Number of bytes of all headers received. | ||||
| See \fICURLINFO_HEADER_SIZE(3)\fP | ||||
|  | ||||
| .IP CURLINFO_REQUEST_SIZE | ||||
| Pass a pointer to a long to receive the total size of the issued | ||||
| requests. This is so far only for HTTP requests. Note that this may be more | ||||
| than one request if FOLLOWLOCATION is true. | ||||
| Number of bytes sent in the issued HTTP requests. | ||||
| See \fICURLINFO_REQUEST_SIZE(3)\fP | ||||
|  | ||||
| .IP CURLINFO_SSL_VERIFYRESULT | ||||
| Pass a pointer to a long to receive the result of the certification | ||||
| verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP | ||||
| option to \fIcurl_easy_setopt(3)\fP). | ||||
| Certificate verification result. | ||||
| See \fICURLINFO_SSL_VERIFYRESULT(3)\fP | ||||
|  | ||||
| .IP CURLINFO_SSL_ENGINES | ||||
| Pass the address of a 'struct curl_slist *' to receive a linked-list of | ||||
| OpenSSL crypto-engines supported. Note that engines are normally implemented | ||||
| in separate dynamic libraries. Hence not all the returned engines may be | ||||
| available at run-time. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP | ||||
| on the list pointer once you're done with it, as libcurl will not free the | ||||
| data for you. (Added in 7.12.3) | ||||
| A list of OpenSSL crypto engines. | ||||
| See \fICURLINFO_SSL_ENGINES(3)\fP | ||||
|  | ||||
| .IP CURLINFO_CONTENT_LENGTH_DOWNLOAD | ||||
| Pass a pointer to a double to receive the content-length of the download. This | ||||
| is the value read from the Content-Length: field. Since 7.19.4, this returns -1 | ||||
| if the size isn't known. | ||||
| Content length from the Content-Length header. | ||||
| See \fICURLINFO_CONTENT_LENGTH_DOWNLOAD(3)\fP | ||||
|  | ||||
| .IP CURLINFO_CONTENT_LENGTH_UPLOAD | ||||
| Pass a pointer to a double to receive the specified size of the upload.  Since | ||||
| 7.19.4, this returns -1 if the size isn't known. | ||||
| Upload size. | ||||
| See \fICURLINFO_CONTENT_LENGTH_UPLOAD(3)\fP | ||||
|  | ||||
| .IP CURLINFO_CONTENT_TYPE | ||||
| Pass a pointer to a char pointer to receive the content-type of the downloaded | ||||
| object. This is the value read from the Content-Type: field. If you get NULL, | ||||
| it means that the server didn't send a valid Content-Type header or that the | ||||
| protocol used doesn't support this. | ||||
| Content type from the Content-Type header. | ||||
| See \fICURLINFO_CONTENT_TYPE(3)\fP | ||||
|  | ||||
| .IP CURLINFO_PRIVATE | ||||
| Pass a pointer to a char pointer to receive the pointer to the private data | ||||
| associated with the curl handle (set with the \fICURLOPT_PRIVATE(3)\fP option | ||||
| to \fIcurl_easy_setopt(3)\fP). Please note that for internal reasons, the | ||||
| value is returned as a char pointer, although effectively being a 'void *'. | ||||
| (Added in 7.10.3) | ||||
| User's private data pointer. | ||||
| See \fICURLINFO_PRIVATE(3)\fP | ||||
|  | ||||
| .IP CURLINFO_HTTPAUTH_AVAIL | ||||
| Pass a pointer to a long to receive a bitmask indicating the authentication | ||||
| method(s) available. The meaning of the bits is explained in the | ||||
| \fICURLOPT_HTTPAUTH(3)\fP option for \fIcurl_easy_setopt(3)\fP.  (Added in | ||||
| 7.10.8) | ||||
| Available HTTP authentication methods. | ||||
| See \fICURLINFO_HTTPAUTH_AVAIL(3)\fP | ||||
|  | ||||
| .IP CURLINFO_PROXYAUTH_AVAIL | ||||
| Pass a pointer to a long to receive a bitmask indicating the authentication | ||||
| method(s) available for your proxy authentication.  (Added in 7.10.8) | ||||
| Available HTTP proxy authentication methods. | ||||
| See \fICURLINFO_PROXYAUTH_AVAIL(3)\fP | ||||
|  | ||||
| .IP CURLINFO_OS_ERRNO | ||||
| Pass a pointer to a long to receive the errno variable from a connect failure. | ||||
| Note that the value is only set on failure, it is not reset upon a | ||||
| successful operation.  (Added in 7.12.2) | ||||
| The errno from the last failure to connect. | ||||
| See \fICURLINFO_OS_ERRNO(3)\fP | ||||
|  | ||||
| .IP CURLINFO_NUM_CONNECTS | ||||
| Pass a pointer to a long to receive how many new connections libcurl had to | ||||
| create to achieve the previous transfer (only the successful connects are | ||||
| counted).  Combined with \fICURLINFO_REDIRECT_COUNT\fP you are able to know | ||||
| how many times libcurl successfully reused existing connection(s) or not.  See | ||||
| the Connection Options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries | ||||
| to make persistent connections to save time.  (Added in 7.12.3) | ||||
| Number of new successful connections used for previous transfer. | ||||
| See \fICURLINFO_NUM_CONNECTS(3)\fP | ||||
|  | ||||
| .IP CURLINFO_PRIMARY_IP | ||||
| Pass a pointer to a char pointer to receive the pointer to a zero-terminated | ||||
| string holding the IP address of the most recent connection done with this | ||||
| \fBcurl\fP handle. This string may be IPv6 if that's enabled. Note that you | ||||
| get a pointer to a memory area that will be re-used at next request so you | ||||
| need to copy the string if you want to keep the information. (Added in 7.19.0) | ||||
| IP address of the last connection. | ||||
| See \fICURLINFO_PRIMARY_IP(3)\fP | ||||
|  | ||||
| .IP CURLINFO_PRIMARY_PORT | ||||
| Pass a pointer to a long to receive the destination port of the most recent | ||||
| connection done with this \fBcurl\fP handle. (Added in 7.21.0) | ||||
| Port of the last connection. | ||||
| See \fICURLINFO_PRIMARY_PORT(3)\fP | ||||
|  | ||||
| .IP CURLINFO_LOCAL_IP | ||||
| Pass a pointer to a char pointer to receive the pointer to a zero-terminated | ||||
| string holding the local (source) IP address of the most recent connection done | ||||
| with this \fBcurl\fP handle. This string may be IPv6 if that's enabled. The | ||||
| same restrictions apply as to \fICURLINFO_PRIMARY_IP\fP. (Added in 7.21.0) | ||||
| Local-end IP address of last connection. | ||||
| See \fICURLINFO_LOCAL_IP(3)\fP | ||||
|  | ||||
| .IP CURLINFO_LOCAL_PORT | ||||
| Pass a pointer to a long to receive the local (source) port of the most recent | ||||
| connection done with this \fBcurl\fP handle. (Added in 7.21.0) | ||||
| Local-end port of last connection. | ||||
| See \fICURLINFO_LOCAL_PORT(3)\fP | ||||
|  | ||||
| .IP CURLINFO_COOKIELIST | ||||
| Pass a pointer to a 'struct curl_slist *' to receive a linked-list of all | ||||
| cookies cURL knows (expired ones, too). Don't forget to | ||||
| \fIcurl_slist_free_all(3)\fP the list after it has been used.  If there are no | ||||
| cookies (cookies for the handle have not been enabled or simply none have been | ||||
| received) 'struct curl_slist *' will be set to point to NULL. (Added in | ||||
| 7.14.1) | ||||
| List of all known cookies. | ||||
| See \fICURLINFO_COOKIELIST(3)\fP | ||||
|  | ||||
| .IP CURLINFO_LASTSOCKET | ||||
| Pass a pointer to a long to receive the last socket used by this curl | ||||
| session. If the socket is no longer valid, -1 is returned. When you finish | ||||
| working with the socket, you must call curl_easy_cleanup() as usual and let | ||||
| libcurl close the socket and cleanup other resources associated with the | ||||
| handle. This is typically used in combination with | ||||
| \fICURLOPT_CONNECT_ONLY(3)\fP.  (Added in 7.15.2) | ||||
| Last socket used. | ||||
| See \fICURLINFO_LASTSOCKET(3)\fP | ||||
|  | ||||
| .IP CURLINFO_ACTIVESOCKET | ||||
| The session's active socket. | ||||
| See \fICURLINFO_ACTIVESOCKET(3)\fP | ||||
|  | ||||
| NOTE: this API is not really working on win64, since the SOCKET type on win64 | ||||
| is 64 bit large while its 'long' is only 32 bits. | ||||
| .IP CURLINFO_FTP_ENTRY_PATH | ||||
| Pass a pointer to a char pointer to receive a pointer to a string holding the | ||||
| path of the entry path. That is the initial path libcurl ended up in when | ||||
| logging on to the remote FTP server. This stores a NULL as pointer if | ||||
| something is wrong. (Added in 7.15.4) | ||||
| The entry path after logging in to an FTP server. | ||||
| See \fICURLINFO_FTP_ENTRY_PATH(3)\fP | ||||
|  | ||||
| Also works for SFTP since 7.21.4 | ||||
| .IP CURLINFO_CERTINFO | ||||
| Pass a pointer to a 'struct curl_certinfo *' and you'll get it set to point to | ||||
| struct that holds a number of linked lists with info about the certificate | ||||
| chain, assuming you had \fICURLOPT_CERTINFO(3)\fP enabled when the previous | ||||
| request was done. The struct reports how many certs it found and then you can | ||||
| extract info for each of those certs by following the linked lists. The info | ||||
| chain is provided in a series of data in the format "name:content" where the | ||||
| content is for the specific named data. See also the certinfo.c example. NOTE: | ||||
| this option is only available in libcurl built with OpenSSL, NSS or GSKit | ||||
| support. (Added in 7.19.1) | ||||
| Certificate chain. | ||||
| See \fICURLINFO_CERTINFO(3)\fP | ||||
|  | ||||
| .IP CURLINFO_TLS_SESSION | ||||
| Pass a pointer to a 'struct curl_tlssessioninfo *'.  The pointer will be | ||||
| initialized to refer to a 'struct curl_tlssessioninfo *' that will contain an | ||||
| enum indicating the SSL library used for the handshake and the respective | ||||
| internal TLS session structure of this underlying SSL library. | ||||
|  | ||||
| This may then be used to extract certificate information in a format | ||||
| convenient for further processing, such as manual validation. NOTE: this | ||||
| option may not be available for all SSL backends; unsupported SSL backends | ||||
| will return 'CURLSSLBACKEND_NONE' to indicate that they are not supported; | ||||
| this does not mean that no SSL backend was used. (Added in 7.34.0) | ||||
|  | ||||
| .nf | ||||
| struct curl_tlssessioninfo { | ||||
|   curl_sslbackend backend; | ||||
|   void *internals; | ||||
| }; | ||||
| .fi | ||||
|  | ||||
| The \fIinternals\fP struct member will point to a TLS library specific pointer | ||||
| with the following underlying types: | ||||
| .RS | ||||
| .IP OpenSSL | ||||
| SSL_CTX * | ||||
| .IP GnuTLS | ||||
| gnutls_session_t | ||||
| .IP NSS | ||||
| PRFileDesc * | ||||
| .IP gskit | ||||
| gsk_handle | ||||
| .RE | ||||
| TLS session info that can be used for further processing. | ||||
| See \fICURLINFO_TLS_SESSION(3)\fP | ||||
|  | ||||
| .IP CURLINFO_CONDITION_UNMET | ||||
| Pass a pointer to a long to receive the number 1 if the condition provided in | ||||
| the previous request didn't match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas, | ||||
| if this returns a 1 you know that the reason you didn't get data in return is | ||||
| because it didn't fulfill the condition. The long ths argument points to will | ||||
| get a zero stored if the condition instead was met. (Added in 7.19.4) | ||||
| Whether or not a time conditional was met. | ||||
| See \fICURLINFO_CONDITION_UNMET(3)\fP | ||||
|  | ||||
| .IP CURLINFO_RTSP_SESSION_ID | ||||
| Pass a pointer to a char pointer to receive a pointer to a string holding the | ||||
| most recent RTSP Session ID. | ||||
| RTSP session ID. | ||||
| See \fICURLINFO_RTSP_SESSION_ID(3)\fP | ||||
|  | ||||
| Applications wishing to resume an RTSP session on another connection should | ||||
| retrieve this info before closing the active connection. | ||||
| .IP CURLINFO_RTSP_CLIENT_CSEQ | ||||
| Pass a pointer to a long to receive the next CSeq that will be used by the | ||||
| application. | ||||
| RTSP CSeq that will next be used. | ||||
| See \fICURLINFO_RTSP_CLIENT_CSEQ(3)\fP | ||||
|  | ||||
| .IP CURLINFO_RTSP_SERVER_CSEQ | ||||
| Pass a pointer to a long to receive the next server CSeq that will be expected | ||||
| by the application. | ||||
| RTSP CSeq that will next be expected. | ||||
| See \fICURLINFO_RTSP_SERVER_CSEQ(3)\fP | ||||
|  | ||||
| \fI(NOTE: listening for server initiated requests is currently | ||||
| unimplemented).\fP | ||||
|  | ||||
| Applications wishing to resume an RTSP session on another connection should | ||||
| retrieve this info before closing the active connection. | ||||
| .IP CURLINFO_RTSP_CSEQ_RECV | ||||
| Pass a pointer to a long to receive the most recently received CSeq from the | ||||
| server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you | ||||
| may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this value. | ||||
| RTSP CSeq last received. | ||||
| See \fICURLINFO_RTSP_CSEQ_RECV(3)\fP | ||||
|  | ||||
| .SH TIMES | ||||
| .nf | ||||
| An overview of the six time values available from curl_easy_getinfo() | ||||
|   | ||||
| @@ -62,7 +62,7 @@ function is called again without this bit set. Thus, the read callback | ||||
| .IP CURLPAUSE_ALL | ||||
| Convenience define that pauses both directions. | ||||
| .IP CURLPAUSE_CONT | ||||
| Convenience define that unpauses both directions | ||||
| Convenience define that unpauses both directions. | ||||
| .SH RETURN VALUE | ||||
| CURLE_OK (zero) means that the option was set properly, and a non-zero return | ||||
| code means something wrong occurred after the new state was set.  See the | ||||
|   | ||||
| @@ -42,14 +42,14 @@ buffer. The variable \fBn\fP points to will receive the number of received | ||||
| bytes. | ||||
|  | ||||
| To establish the connection, set \fBCURLOPT_CONNECT_ONLY(3)\fP option before | ||||
| calling \fIcurl_easy_perform(3)\fP or \cIcurl_multi_perform(3)\fP. Note that | ||||
| calling \fIcurl_easy_perform(3)\fP or \fIcurl_multi_perform(3)\fP. Note that | ||||
| \fIcurl_easy_recv(3)\fP does not work on connections that were created without | ||||
| this option. | ||||
|  | ||||
| You must ensure that the socket has data to read before calling | ||||
| \fIcurl_easy_recv(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP - | ||||
| the socket is used in non-blocking mode internally. Use | ||||
| \fIcurl_easy_getinfo(3)\fP with \fBCURLINFO_LASTSOCKET\fP to obtain the | ||||
| \fIcurl_easy_getinfo(3)\fP with \fBCURLINFO_ACTIVESOCKET(3)\fP to obtain the | ||||
| socket; use your operating system facilities like \fIselect(2)\fP to check if | ||||
| it has any data you can read. | ||||
| .SH AVAILABILITY | ||||
|   | ||||
| @@ -47,7 +47,7 @@ this option. | ||||
| You must ensure that the socket is writable before calling | ||||
| \fIcurl_easy_send(3)\fP, otherwise the call will return \fBCURLE_AGAIN\fP - | ||||
| the socket is used in non-blocking mode internally. Use | ||||
| \fIcurl_easy_getinfo(3)\fP with \fBCURLINFO_LASTSOCKET\fP to obtain the | ||||
| \fIcurl_easy_getinfo(3)\fP with \fBCURLINFO_ACTIVESOCKET(3)\fP to obtain the | ||||
| socket; use your operating system facilities like \fIselect(2)\fP to check if | ||||
| it can be written to. | ||||
| .SH AVAILABILITY | ||||
|   | ||||
| @@ -153,6 +153,8 @@ Disable squashing /../ and /./ sequences in the path. See \fICURLOPT_PATH_AS_IS( | ||||
| Allowed protocols. See \fICURLOPT_PROTOCOLS(3)\fP | ||||
| .IP CURLOPT_REDIR_PROTOCOLS | ||||
| Protocols to allow redirects to. See \fICURLOPT_REDIR_PROTOCOLS(3)\fP | ||||
| .IP CURLOPT_DEFAULT_PROTOCOL | ||||
| Default protocol. See \fICURLOPT_DEFAULT_PROTOCOL(3)\fP | ||||
| .IP CURLOPT_PROXY | ||||
| Proxy to use. See \fICURLOPT_PROXY(3)\fP | ||||
| .IP CURLOPT_PROXYPORT | ||||
| @@ -295,6 +297,13 @@ Disable Transfer decoding. See \fICURLOPT_HTTP_TRANSFER_DECODING(3)\fP | ||||
| 100-continue timeout. See \fICURLOPT_EXPECT_100_TIMEOUT_MS(3)\fP | ||||
| .IP CURLOPT_PIPEWAIT | ||||
| Wait on connection to pipeline on it. See \fICURLOPT_PIPEWAIT(3)\fP | ||||
| .IP CURLOPT_STREAM_DEPENDS | ||||
| This HTTP/2 stream depends on another. See \fICURLOPT_STREAM_DEPENDS(3)\fP | ||||
| .IP CURLOPT_STREAM_DEPENDS_E | ||||
| This HTTP/2 stream depends on another exclusively. See | ||||
| \fICURLOPT_STREAM_DEPENDS_E(3)\fP | ||||
| .IP CURLOPT_STREAM_WEIGHT | ||||
| Set this HTTP/2 stream's weight. See \fICURLOPT_STREAM_WEIGHT(3)\fP | ||||
| .SH SMTP OPTIONS | ||||
| .IP CURLOPT_MAIL_FROM | ||||
| Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP | ||||
| @@ -527,8 +536,8 @@ if(curl) { | ||||
|   curl_easy_setopt(curl, CURLOPT_URL, "http://example.com"); | ||||
|   res = curl_easy_perform(curl); | ||||
|   curl_easy_cleanup(curl); | ||||
| }} | ||||
| } | ||||
| .fi | ||||
| .SH "SEE ALSO" | ||||
| .BR curl_easy_init "(3), " curl_easy_cleanup "(3), " curl_easy_reset "(3), " | ||||
| .BR curl_multi_setopt "(3), " | ||||
| .BR curl_easy_getinfo "(3), " curl_multi_setopt "(3), " | ||||
|   | ||||
| @@ -26,8 +26,8 @@ curl_easy_unescape - URL decodes the given string | ||||
| .SH SYNOPSIS | ||||
| .B #include <curl/curl.h> | ||||
| .sp | ||||
| .BI "char *curl_easy_unescape( CURL *" curl ", char *" url ", int "inlength | ||||
| .BI ", int *" outlength " );" | ||||
| .BI "char *curl_easy_unescape( CURL *" curl ", const char *" url | ||||
| .BI ", int "inlength ", int *" outlength " );" | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| This function converts the given URL encoded input string to a "plain string" | ||||
|   | ||||
| @@ -25,7 +25,7 @@ curl_escape - URL encodes the given string | ||||
| .SH SYNOPSIS | ||||
| .B #include <curl/curl.h> | ||||
| .sp | ||||
| .BI "char *curl_escape( char *" url ", int "length " );" | ||||
| .BI "char *curl_escape( const char *" url ", int "length " );" | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| Obsolete function. Use \fIcurl_easy_escape(3)\fP instead! | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2015, 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,7 +83,18 @@ to send away. libcurl will use the pointer and refer to the data in your | ||||
| application, so you must make sure it remains until curl no longer needs it. | ||||
| If the data isn't NUL-terminated, or if you'd like it to contain zero bytes, | ||||
| you must set its length  with \fBCURLFORM_CONTENTSLENGTH\fP. | ||||
| .IP CURLFORM_CONTENTLEN | ||||
| followed by a curl_off_t value giving the length of the contents. Note that | ||||
| for \fICURLFORM_STREAM\fP contents, this option is mandatory. | ||||
|  | ||||
| If you pass a 0 (zero) for this option, libcurl will instead do a strlen() on | ||||
| the contents to figure out the size. If you really want to send a zero byte | ||||
| content then you must make sure strlen() on the data pointer returns zero. | ||||
|  | ||||
| (Option added in 7.46.0) | ||||
| .IP CURLFORM_CONTENTSLENGTH | ||||
| (This option is deprecated. Use \fICURLFORM_CONTENTLEN\fP instead!) | ||||
|  | ||||
| followed by a long giving the length of the contents. Note that for | ||||
| \fICURLFORM_STREAM\fP contents, this option is mandatory. | ||||
|  | ||||
| @@ -103,6 +114,9 @@ given file match one of the internally known file extensions.  For | ||||
| providing multiple \fBCURLFORM_FILE\fP arguments each followed by the filename | ||||
| (and each \fICURLFORM_FILE\fP is allowed to have a | ||||
| \fICURLFORM_CONTENTTYPE\fP). | ||||
|  | ||||
| The given upload file has to exist in its full in the file system already when | ||||
| the upload starts, as libcurl needs to read the correct file size beforehand. | ||||
| .IP CURLFORM_CONTENTTYPE | ||||
| is used in combination with \fICURLFORM_FILE\fP. Followed by a pointer to a | ||||
| string which provides the content-type for this part, possibly instead of an | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -26,7 +26,7 @@ curl_formget - serialize a previously built multipart/formdata HTTP POST chain | ||||
| .nf | ||||
| .B #include <curl/curl.h> | ||||
|  | ||||
| void curl_formget(struct curl_httppost * form, void *userp, | ||||
| int curl_formget(struct curl_httppost * form, void *userp, | ||||
|                   curl_formget_callback append ); | ||||
| .SH DESCRIPTION | ||||
| curl_formget() is used to serialize data previously built/appended with | ||||
|   | ||||
| @@ -36,11 +36,13 @@ This function works exactly as \fIcurl_global_init(3)\fP with one addition: it | ||||
| allows the application to set callbacks to replace the otherwise used internal | ||||
| memory functions. | ||||
|  | ||||
| This man page only adds documentation for the callbacks, see the | ||||
| \fIcurl_global_init(3)\fP man page for all the rest. When you use this | ||||
| function, all callback arguments must be set to valid function pointers. | ||||
| If you are using libcurl from multiple threads or libcurl was built with the | ||||
| threaded resolver option then the callback functions must be thread safe. The | ||||
| threaded resolver is a common build option to enable (and in some cases the | ||||
| default) so we strongly urge you to make your callback functions thread safe. | ||||
|  | ||||
| The prototypes for the given callbacks should match these: | ||||
| All callback arguments must be set to valid function pointers. The | ||||
| prototypes for the given callbacks must match these: | ||||
| .IP "void *malloc_callback(size_t size);" | ||||
| To replace malloc() | ||||
| .IP "void free_callback(void *ptr);" | ||||
| @@ -51,6 +53,9 @@ To replace realloc() | ||||
| To replace strdup() | ||||
| .IP "void *calloc_callback(size_t nmemb, size_t size);" | ||||
| To replace calloc() | ||||
| .RE | ||||
| This function is otherwise the same as \fIcurl_global_init(3)\fP, please refer | ||||
| to that man page for documentation. | ||||
| .SH "CAUTION" | ||||
| Manipulating these gives considerable powers to the application to severely | ||||
| screw things up for libcurl. Take care! | ||||
|   | ||||
| @@ -28,7 +28,7 @@ curl_multi_remove_handle - remove an easy handle from a multi session | ||||
| CURLMcode curl_multi_remove_handle(CURLM *multi_handle, CURL *easy_handle); | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| Removes a given \fIeasy_handle\fI from the \fImulti_handle\fI. This will make | ||||
| Removes a given \fIeasy_handle\fP from the \fImulti_handle\fP. This will make | ||||
| the specified easy handle be removed from this multi handle's control. | ||||
|  | ||||
| When the easy handle has been removed from a multi stack, it is again | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -37,32 +37,36 @@ expects. Read this manual carefully as bad input values may cause libcurl to | ||||
| behave badly!  You can only set one option in each function call. | ||||
|  | ||||
| .SH OPTIONS | ||||
| .IP CURLMOPT_SOCKETFUNCTION | ||||
| See \fICURLMOPT_SOCKETFUNCTION(3)\fP | ||||
| .IP CURLMOPT_SOCKETDATA | ||||
| See \fICURLMOPT_SOCKETDATA(3)\fP | ||||
| .IP CURLMOPT_PIPELINING | ||||
| See \fICURLMOPT_PIPELINING(3)\fP | ||||
| .IP CURLMOPT_TIMERFUNCTION | ||||
| See \fICURLMOPT_TIMERFUNCTION(3)\fP | ||||
| .IP CURLMOPT_TIMERDATA | ||||
| See \fICURLMOPT_TIMERDATA(3)\fP | ||||
| .IP CURLMOPT_MAXCONNECTS | ||||
| See \fICURLMOPT_MAXCONNECTS(3)\fP | ||||
| .IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE | ||||
| See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP | ||||
| .IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE | ||||
| See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP | ||||
| .IP CURLMOPT_MAX_HOST_CONNECTIONS | ||||
| See \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP | ||||
| .IP CURLMOPT_MAX_PIPELINE_LENGTH | ||||
| See \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP | ||||
| .IP CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE | ||||
| See \fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP | ||||
| .IP CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE | ||||
| See \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP | ||||
| .IP CURLMOPT_MAX_TOTAL_CONNECTIONS | ||||
| See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP | ||||
| .IP CURLMOPT_MAXCONNECTS | ||||
| See \fICURLMOPT_MAXCONNECTS(3)\fP | ||||
| .IP CURLMOPT_PIPELINING | ||||
| See \fICURLMOPT_PIPELINING(3)\fP | ||||
| .IP CURLMOPT_PIPELINING_SITE_BL | ||||
| See \fICURLMOPT_PIPELINING_SITE_BL(3)\fP | ||||
| .IP CURLMOPT_PIPELINING_SERVER_BL | ||||
| See \fICURLMOPT_PIPELINING_SERVER_BL(3)\fP | ||||
| .IP CURLMOPT_MAX_TOTAL_CONNECTIONS | ||||
| See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP | ||||
| .IP CURLMOPT_PUSHFUNCTION | ||||
| See \fICURLMOPT_PUSHFUNCTION(3)\fP | ||||
| .IP CURLMOPT_PUSHDATA | ||||
| See \fICURLMOPT_PUSHDATA(3)\fP | ||||
| .IP CURLMOPT_SOCKETFUNCTION | ||||
| See \fICURLMOPT_SOCKETFUNCTION(3)\fP | ||||
| .IP CURLMOPT_SOCKETDATA | ||||
| See \fICURLMOPT_SOCKETDATA(3)\fP | ||||
| .IP CURLMOPT_TIMERFUNCTION | ||||
| See \fICURLMOPT_TIMERFUNCTION(3)\fP | ||||
| .IP CURLMOPT_TIMERDATA | ||||
| See \fICURLMOPT_TIMERDATA(3)\fP | ||||
| .SH RETURNS | ||||
| The standard CURLMcode for multi interface error codes. Note that it returns a | ||||
| CURLM_UNKNOWN_OPTION if you try setting an option that this version of libcurl | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| .\" *                            | (__| |_| |  _ <| |___ | ||||
| .\" *                             \___|\___/|_| \_\_____| | ||||
| .\" * | ||||
| .\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. | ||||
| .\" * Copyright (C) 1998 - 2015, 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 | ||||
| @@ -46,6 +46,10 @@ pointer is returned. | ||||
|  struct curl_slist *slist=NULL; | ||||
|  | ||||
|  slist = curl_slist_append(slist, "pragma:"); | ||||
|  | ||||
|  if (slist == NULL) | ||||
|    return -1; | ||||
|  | ||||
|  curl_easy_setopt(handle, CURLOPT_HTTPHEADER, slist); | ||||
|  | ||||
|  curl_easy_perform(handle); | ||||
|   | ||||
| @@ -25,7 +25,7 @@ curl_unescape - URL decodes the given string | ||||
| .SH SYNOPSIS | ||||
| .B #include <curl/curl.h> | ||||
| .sp | ||||
| .BI "char *curl_unescape( char *" url ", int "length " );" | ||||
| .BI "char *curl_unescape( const char *" url ", int "length " );" | ||||
| .ad | ||||
| .SH DESCRIPTION | ||||
| Obsolete function. Use \fIcurl_easy_unescape(3)\fP instead! | ||||
|   | ||||
| @@ -17,6 +17,7 @@ | ||||
| <br><a href="libcurl-share.html">libcurl-share</a> | ||||
| <br><a href="libcurl-errors.html">libcurl-errors</a> | ||||
| <br><a href="libcurl-tutorial.html">libcurl-tutorial</a> | ||||
| <br><a href="libcurl-thread.html">libcurl-thread</a> | ||||
|  | ||||
| <H2>Library Functions (A-Z)</H2> | ||||
| <a href="curl_easy_cleanup.html">curl_easy_cleanup</A> | ||||
|   | ||||
| @@ -247,6 +247,10 @@ Chunk callback reported error. | ||||
| .IP "CURLE_NO_CONNECTION_AVAILABLE (89)" | ||||
| (For internal use only, will never be returned by libcurl) No connection | ||||
| available, the session will be queued. (added in 7.30.0) | ||||
| .IP "CURLE_SSL_PINNEDPUBKEYNOTMATCH (90)" | ||||
| Failed to match the pinned key specified with \fICURLOPT_PINNEDPUBLICKEY(3)\fP. | ||||
| .IP "CURLE_SSL_INVALIDCERTSTATUS (91)" | ||||
| Status returned failure when asked with \fICURLOPT_SSL_VERIFYSTATUS(3)\fP. | ||||
| .IP "CURLE_OBSOLETE*" | ||||
| These error codes will never be returned. They were used in an old libcurl | ||||
| version and are currently unused. | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user